Interesting... InDesign is not a word processor - it requires input from the designer. It can be scripted to create basic level indents and things Gets you started with a basic level of bullets - sure can be done for numbering too.
(function () {
if (!app.documents.length) { alert("Open a document first"); return; }
var doc = app.activeDocument;
function getOrCreateStyle(name, basedOnStyle) {
var s;
try { s = doc.paragraphStyles.itemByName(name); s.name; }
catch (e) { s = doc.paragraphStyles.add({ name: name }); }
if (basedOnStyle && basedOnStyle.isValid) {
try { s.basedOn = basedOnStyle; } catch (e) {}
}
return s;
}
var bulletChars = ["\u2022", "\u25E6", "\u2013", "\u25AA"]; // •, ◦, – , ▪
var baseIndent = 12; // first level
var indentStep = 12; // extra indent per level
var hanging = -6; // hanging indent
var baseName = "Bullet Level ";
for (var i = 0; i < bulletChars.length; i++) {
var level = i + 1;
var parent = (i > 0) ? doc.paragraphStyles.itemByName(baseName + (level - 1)) : null;
var style = getOrCreateStyle(baseName + level, parent);
var leftIndent = baseIndent + (i * indentStep);
var firstLineIndent = hanging;
// Apply bullet properties
style.bulletsAndNumberingListType = ListType.BULLET_LIST;
try {
style.bulletChar = bulletChars[i];
} catch (e) {}
try {
style.bulletFont = "Arial";
} catch (e) {}
style.leftIndent = leftIndent;
style.firstLineIndent = firstLineIndent;
style.tabList = [{ alignment: TabStopAlignment.LEFT_ALIGN, position: leftIndent - firstLineIndent }];
}
alert("All bullet levels created with proper indents.");
})();
I'm trying to add a UI to it - but I'm not very good at this so I'm struggling ----> maybe a cool scripter could have fun with it and come up with even better. But it's a start for creating something from nothing - and then you can adjust as needed.
(function () {
if (!app.documents.length) { alert("Open a document first"); return; }
var doc = app.activeDocument;
// -------------------------
// Create the window
// -------------------------
var w = new Window("dialog", "Bullet & Numbered Style Builder");
w.orientation = "column";
w.alignChildren = ["fill","top"];
// Number of levels
var levelsGroup = w.add("group");
levelsGroup.add("statictext", undefined, "Number of Levels:");
var levelsInput = levelsGroup.add("edittext", undefined, "4");
levelsInput.characters = 3;
// Base indent
var baseIndentGroup = w.add("group");
baseIndentGroup.add("statictext", undefined, "Base Indent (pt):");
var baseIndentInput = baseIndentGroup.add("edittext", undefined, "12");
baseIndentInput.characters = 3;
// Incremental indent
var incIndentGroup = w.add("group");
incIndentGroup.add("statictext", undefined, "Increment per level (pt):");
var incIndentInput = incIndentGroup.add("edittext", undefined, "12");
incIndentInput.characters = 3;
// Hanging indent
var hangGroup = w.add("group");
hangGroup.add("statictext", undefined, "Hanging Indent (pt):");
var hangInput = hangGroup.add("edittext", undefined, "-6");
hangInput.characters = 3;
// Bullet character
var bulletGroup = w.add("group");
bulletGroup.add("statictext", undefined, "Bullet Character:");
var bulletInput = bulletGroup.add("edittext", undefined, "\u2022"); // • by default
bulletInput.characters = 3;
// Number type selection
var numGroup = w.add("group");
numGroup.add("statictext", undefined, "Numbering Type:");
var numType = numGroup.add("dropdownlist", undefined, ["None","1,2,3","i,ii,iii","a,b,c"]);
numType.selection = 0;
// Buttons
var buttonGroup = w.add("group");
buttonGroup.alignment = "right";
var okBtn = buttonGroup.add("button", undefined, "Create");
var cancelBtn = buttonGroup.add("button", undefined, "Cancel");
okBtn.onClick = function() {
var levels = parseInt(levelsInput.text, 10);
var baseIndent = parseFloat(baseIndentInput.text);
var incIndent = parseFloat(incIndentInput.text);
var hanging = parseFloat(hangInput.text);
var bulletChar = bulletInput.text || "\u2022";
var numbering = numType.selection.index;
// -------------------------
// Create styles
// -------------------------
function getOrCreateStyle(name, basedOnStyle) {
var s;
try { s = doc.paragraphStyles.itemByName(name); s.name; }
catch (e) { s = doc.paragraphStyles.add({ name: name }); }
if (basedOnStyle && basedOnStyle.isValid) {
try { s.basedOn = basedOnStyle; } catch (e) {}
}
return s;
}
for (var i = 0; i < levels; i++) {
var level = i + 1;
var parent = (i > 0) ? doc.paragraphStyles.itemByName("Level " + i) : null;
var style = getOrCreateStyle("Level " + level, parent);
style.leftIndent = baseIndent + (i * incIndent);
style.firstLineIndent = hanging;
if (numbering === 0) {
// bullets
style.bulletsAndNumberingListType = ListType.BULLET_LIST;
try { style.bulletChar = bulletChar; } catch(e){}
try { style.bulletFont = "Arial"; } catch(e){}
} else {
// numbered list
style.bulletsAndNumberingListType = ListType.NUMBERED_LIST;
switch(numbering) {
case 1: style.numberingFormat = NumberingStyle.ARABIC; break;
case 2: style.numberingFormat = NumberingStyle.LOWER_ROMAN; break;
case 3: style.numberingFormat = NumberingStyle.LOWER_LETTERS; break;
}
style.numberingExpression = "^#.^t";
}
}
alert("Styles created!");
w.close();
}
cancelBtn.onClick = function() { w.close(); }
w.show();
})();
... View more