피터 카렐(Peter Kahrel)은 네덜란드 출신 스크립터로 인디자인 스크립트 분야에서 꽤 유명한 사람이다. 본래 언어학자로 대학에 있다가 출판업계로 전업을 하면서 인디자인을 집중적으로 탐구하게 되었다고 한다. 언어학에 조예가 깊은 까닭인지, 인디자인을 둘러싼 갖가지 '언어'들(자바스크립트와 GREP 등)의 전문가다. CS 초기 버전부터 자바스크립트(정확히는 익스텐드스크립트)와 GREP에 대한 교과서적인 단행본을 출간해왔고, 그 때문에 오래전부터 업계의 구루(guru)로 알려졌다. 자바스크립트를 다룬 책은 JavaScript for InDesign이라는 이름으로 출간됐는데, 2019년에 2판이 나왔다(현재 크리에이티브프로와 아마존에서 판매하고 있다). (앞서 번역을 게시한 GREP in InDesign과 같은 방식으로)게시글을 통해 번역할 텍스트도 그와 같다. 역시 'PK' 두문자어를 앞에 단 게시글을 통해 공유할 예정이다.
스크립터를 꿈꾸는 사람이 인디자인 자바스크립트를 접하면서 마주하게 되는 건 두 가지다. 인디자인 객체 모델(InDesign’s object model)과 자바스크립트(JavaScript)가 그것이다. 둘 다 물론 복잡하지만, 장애물 몇 가지만 넘으면 누구든 스크립트 작성을 빠르게 시작할 수 있다.
여기서는 인디자인 안의 수많은 따분한 작업이 한 두줄로 된 대단히 간단한 스크립트로 자동화될 수 있음을 보여주고자 한다. 이러한 간단한 스크립트는 더 복잡한 스크립트로 가는 길을 열어준다. 여러분에게 가장 필요한 건 결단이다.
예를 하나 들어 보겠다. 이런 작업을 해야한다고 상상해보자. 수십 페이지짜리 문서 각 페이지에는 하나 이상의 텍스트 프레임과 하나 이상의 그래픽 요소가 있다. 이 페이지의 모든 요소는 같은 레이어에 있는데, 그래픽 요소만 별도의 레이어에 있으면 문서를 다루기 더 쉬울 거라고 판단해서 작업을 해야하는 상황이다. 새 레이어를 만들고, 그래픽 요소를 전부 그 레이어로 옮기는 작업 과정을 거칠 것이다. 그 작업을 손으로 일일이 하는 걸 떠올릴테지만, 다음의 스크립트 두 줄은 그걸 눈 깜짝할 사이에 해버린다.
myLayer = app.activeDocument.layers.add ({name: 'pictures'});
app.activeDocument.rectangles.everyItem().itemLayer = myLayer;
첫 번째 줄은 'pictures'라는 이름의 새 레이어를 만들고, 두 번째 줄은 모든 그래픽을 해당 레이어로 이동시키는 명령을 내린다. '그러면 레이어가 추가된 걸 어떻게 알 수 있지?' '그래픽이 '직사각형' 개체에 있다는 건 어떻게 알 수 있지?' 같은 질문이 들 것이다. 이 글의 목적은 그러한 물음에 대한 답을 어떻게 찾을지 보여주는 데 있다. 또한 놀랍도록 간단한 스크립트가 수많은 지루하고 노동집약적인 작업들을 해결하는지 보여주고자 한다.
가이드의 대상 독자는 인디자인을 잘 알고 있지만, 스크립팅이나 프로그래밍에 대해 많이 알지 못하는 사람들이다. 어쨌든 인디자인에 대한 지식이 필요하다. 인디자인을 모른다면 스크립트를 작성하는 데 큰 의미가 없을 테니 말이다. 프로그래밍 언어에 대한 지식은 필요하지 않다(물론 도움은 된다). 누구든 일정 수준의 스크립트 작성법을 배울 수 있다고 생각한다. 스크립팅 기술을 습득하기 위해 꼭 수학자일 필요는 없는 것이다. 사실 다수의 훌륭한 스크립트 작성자들은 어도비의 스크립트 포럼에서 볼 수 있듯, 그래픽 디자이너, 조판가 등의 상이한 배경을 두고 있다. 인디자인을 위한 자바스크립트를 만드는 일은 컴퓨터 공학과 큰 관련이 없다. 차라리 그건 인디자인에서 무언가를 작동시키는 일로써 대체로 간단한 작업이다.
이 가이드는 세 부분으로 구성된다. 첫 번째로 어도비의 스크립트 에디터와 객체 모델을 다루고, 스크립트 에디터로 객체 모델을 탐색하는 방법을 알아본다. 두 번째로 자바스크립트의 기초를 대략적으로 설명한다. 여기서 자바스크립트를 전문으로 다루지는 않지만, 해당 언어의 주요 요소를 알아보는 한편 인디자인을 위한 자바스크립트를 시작하는 데 도움이 되는 요소를 몇가지 제공하고자 한다. 그리고 세 번째로 여러 스크립트를 작성해본다. 우리가 다루는 스크립트는 본질적으로 텍스트를 처리한다. 처음의 스크립트 몇 가지는 기본적인 텍스트 스크립팅 기술이다. 다음으로 [찾기/바꾸기]의 다양한 특성을 다루는 스크립트들을 다룬다. 일례로 인디자인 [찾기/바꾸기] 대화상자를 자동화하는 스크립팅의 방법들을 먼저 보여주고, [찾기]를 통해 유연한 커닝 에디터를 스크립팅하는 방법을 알아보는 식이다. 그 다음에는 표에 대해 자세히 살펴볼 것이다. 인디자인 표 기능은 대단히 강력하지만 일부 기능이 누락되어 있다. 그렇게 누락된 부분을 스크립팅하는 방법을 살펴볼 것이다. 마지막 섹션으로는 텍스트 프레임의 특성 몇 가지를 다룬다.
이 책에서 나오는 스크립트는 모두 실험/검증을 마쳤고, 인디자인 최신 버전에서도 그대로 작동된다(또한 CS3로 거슬러 올라가는 버전에서도 작동된다). 그렇지만 스크립트가 아무리 간단하고 무해해보여도 실행하기 전에는 항상 문서 사본을 만들거나 모의 문서에서 실행할 것을 권한다. 작업 중인 문서를 저장하지 않고 스크립트를 실행하는 일은 없어야 한다. 물론 인디자인의 실행취소는 작동이 잘 되는 편이지만, 그것에 굳이 목을 맬 필요는 없는 것이다.