인디자인에서 정규표현식으로 텍스트를 찾아 색인을 생성하는 스크립트입니다. 판례색인 등을 만들 때 사용할 수 있습니다.
① 첨부된 jsx파일을 사용자 스크립트 폴더에 넣습니다.
※ 사용자 스크립트 폴더는 패널의 메뉴 버튼 ▤을 누르거나 사용자를 우클릭한 후 탐색기에 나타내기(파인더에 나타내기)를 선택하면 열 수 있습니다. 인디자인 2022 기준으로 경로는 "C:\Users\(사용자 이름)\AppData\Roaming\Adobe\InDesign\Version 17.0-J\ko_KR\Scripts\Scripts Panel"(Windows), "/Users/(사용자 이름)/Library/Preferences/Adobe InDesign/Version 17.0-J/ko_KR/Scripts/Scripts Panel"(Mac) 등입니다.
② GrepToIndex를 더블클릭하여 스크립트를 실행하면 다음과 같은 대화상자가 열립니다.
- ① 색인할 텍스트 GREP에는 찾을 텍스트의 GREP을 입력합니다.
- ② 각주 포함을 선택하면 각주를 포함하여 텍스트를 찾습니다.
- ③ 기존의 사항색인을 삭제하고 새로 판례색인을 넣는 경우와 같이 기존 색인을 삭제하여야 할 때 기존 색인 삭제를 선택합니다.
③ 색인할 텍스트의 GREP을 입력하고 확인을 누르면 GREP에 맞는 텍스트가 색인으로 추가됩니다.
색인이 정상적으로 생성되면 색인한 횟수를 출력합니다. GREP에 맞는 텍스트가 없으면 색인이 생성되지 않았다는 메시지를 출력합니다.
※ 스크립트 내용
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
// GrepToIndex.jsx
// An InDesign JavaScript
main();
function main() {
var myAnswer = myDialogBox();
if (!myAnswer || !myAnswer[0]) {
return;
}
var myIndexCount = IndexGrep(myAnswer);
if (myIndexCount) {
alert("총 " + myIndexCount + "건의 색인이 생성되었습니다.");
}
else {
alert("색인이 생성되지 않았습니다.");
}
};
function myDialogBox() {
var doc = app.activeDocument;
var myEntryWidth = 300;
var myDialog = app.dialogs.add({ name: "Grep to Index" });
with (myDialog.dialogColumns.add()) {
with (dialogRows.add()) {
with (dialogColumns.add()) {
staticTexts.add({ staticLabel: "색인할 텍스트 GREP:" });
}
with (dialogColumns.add()) {
var myGrepToFindField = textEditboxes.add({ minWidth: myEntryWidth });
var myIncludesFootnoteCheckbox = checkboxControls.add({ staticLabel: "각주 포함", checkedState: true });
var myResetsIndexCheckbox = checkboxControls.add({ staticLabel: "기존 색인 삭제", checkedState: false });
}
}
}
var myResult = myDialog.show();
if (myResult) {
var myAnswer = [myGrepToFindField.editContents,
myIncludesFootnoteCheckbox.checkedState,
myResetsIndexCheckbox.checkedState];
myDialog.destroy();
return myAnswer;
}
else {
myDialog.destroy();
return null;
}
};
function IndexGrep(myAnswer) {
var doc = app.activeDocument;
var myIndexCount = 0;
var myGrepToFind = myAnswer[0];
var myIncludesFootnote = myAnswer[1];
var myResetsIndex = myAnswer[2];
app.findGrepPreferences = null;
app.findChangeGrepOptions.properties = {
// includeLockedLayersForFind: false,
// includeLockedStoriesForFind: false,
// includeHiddenLayers: true,
// includeMasterPages: false,
includeFootnotes: myIncludesFootnote
};
if (doc.indexes.length == 0) {
doc.indexes.add();
}
if (myResetsIndex) {
doc.indexes[0].topics.everyItem().remove();
}
app.findGrepPreferences.findWhat = myGrepToFind;
var found = doc.findGrep();
for (var i=0; i < found.length; i++) {
var myTopic = doc.indexes[0].topics.add(found[i].contents);
myTopic.pageReferences.add(found[i], PageReferenceType.CURRENT_PAGE);
myIndexCount++;
}
return myIndexCount;
}
|
최초 게시: 2022. 6. 16.
'오피스 > 기타' 카테고리의 다른 글
PDF 파일을 지정된 파일 크기로 분할하는 프로그램 (1) | 2023.05.08 |
---|