Данный Script как и большинство других возник во время завершения одной книги. Где в последний момент остро встал вопрос необходимости алфавитного указателя.
Данный скрипт был набросан в течении 30 минут. Он незаконченный в нем еще многое можно довести до совершенства))). Самый большой его недостаток он не удаляет дубликаты слов если они повторяются в тексте. Но на тот момент он отлично справился с возложенной на него задачей.
На входе имелась уже готовая книга в которой некоторые слова были выделены Character Style. На основании этих слов необходимо было создать алфавитный указатель. Но так как стандартные средства не для нас тогда приступим.
var myDocument = app.activeDocument;
//list name character style
listStrings = myDocument.characterStyles.everyItem().name;
var myArray = [];
//create dealog window
myDlg = new Window('dialog', "Сontent Of CharacterStyle beta 0.2",
undefined, {
closeButton: false
});
//add drop-down
myDlg.DDgroup = myDlg.add('group');
myDlg.DDgroup.orientation = 'row';
myDlg.DDgroup.add('statictext', undefined, "Сharacter Style");
myDlg.DDgroup.DD = myDlg.DDgroup.add('dropdownlist', [0, 0, 240, 20],
undefined, {
items: listStrings
})
myDlg.DDgroup.DD.selection = 0;
myDlg.closeBtn = myDlg.add("button", undefined, "OK");
// add button functions
myDlg.closeBtn.onClick = function () {
this.parent.close();
myDlgSelection = myDlg.DDgroup.DD.selection
return myDlgSelection
}
myDlg.show();
//Clear Grep
ClearSearchGrep()
//Preferences Grep
app.findGrepPreferences.appliedCharacterStyle =
myDlgSelection.toString();
app.findGrepPreferences.findWhat = ".+";
var myGrep = myDocument.findGrep();
myCount = myGrep.length;
for (i = 0; i < myCount; i++) {
myWord = myGrep[i].contents;
//Page number
myPageNumber = myGrep[i].parentTextFrames[0].parentPage.name;
//Add to array word + Page number
myArray.push(myWord + "\t" + myPageNumber + "\r");
}
//Sort array
myArray.sort(function (a, b) {
return a.toLowerCase() > b.toLowerCase()
});
//create a new document and add to it our array
var myDocument = app.documents.add();
var myPage = myDocument.pages.item(0);
var myTextFrame = myPage.textFrames.add();
myTextFrame.geometricBounds = ["36pt", "36pt", "809pt", "563pt"];
myTextFrame.contents = "Contents" + "\r" + myArray;
ClearSearchGrep()
app.findGrepPreferences.findWhat = "\\r[=,=]";
app.changeGrepPreferences.changeTo = "\\r";
myDocument.changeGrep();
ClearSearchGrep()
app.findGrepPreferences.findWhat = "(?<=^(\\l))(.+\\r)(?!^\\1)(\\l)";
app.changeGrepPreferences.changeTo = "$2\\r$3\\r\\r$3";
myDocument.changeGrep();
alert("This is a test version. Check the same words!")
//Clear preferences Grep
function ClearSearchGrep() {
app.findGrepPreferences = NothingEnum.nothing;
app.changeGrepPreferences = NothingEnum.nothing;
}
Данный скрипт был набросан в течении 30 минут. Он незаконченный в нем еще многое можно довести до совершенства))). Самый большой его недостаток он не удаляет дубликаты слов если они повторяются в тексте. Но на тот момент он отлично справился с возложенной на него задачей.
А для стиля абзаца такое же как будет?
ОтветитьУдалитьТочно так только заменить CharacterStyle на стиль параграфа. Вот только зачем?
ОтветитьУдалитьVideo Gaming Videos | YouTube
ОтветитьУдалитьyoutube.com. YouTube. YouTube. VideosLiquor. Casino. Video Gaming. Video Gaming. Video Gaming. Video Gaming. Video Gaming. Videosliquor. Casino. Video Gaming. Video youtube mp4 Gaming.