-
색인을 포함해야 할 만큼 대규모 문서를 작성할 일이 거의 없지만, 그렇게 드물게 요구되는 것들도 능히 처리하는 문서화 방법론을 구비해야 한다. (그렇게 믿고 있다) 색인(.idx)을 정렬하는 데에 komkindex.exe가 충분하지만, 나는 한 문서가 여러 언어들로 번역되는 경우도 다루어야 하고, 같은 목적으로 복수의 수단을 사용하는 것보다 한 가지를 사용하는 것이 편리하기 때문에 texindy를 오래 전에 채택했다.
최근에 텍신디로 한자가 포함된 색인을 정렬하는 데에서 버그로 보이는 증상을 발견했다. .idx 파일이 다음과 같을 때,
\indexentry{번체|hyperpage}{7}
\indexentry{繁體|hyperpage}{7}lang/korean/utf8.xdy에 이렇게 정의되어 있지만,
(merge-rule "繁" "번")
.ind 파일에 "繁體"가 누락된다.
해법은 (merge-rule "繁" "번~b") 또는 (merge-rule "繁" "번~e")로 고치는 것이다. 이 문제를 KTUG에 보고하였는데, 김도현 교수님이 (xindy가 더 이상 유지되지 않는다는 이유로) 대안으로 xindex와 xindex-ko.lua의 사용을 제안하였다.
xindex가 ("씬덱스"라 발음하는 게 맞겠지?) 어느 버전부터 텍라이브에 포함되었는지 모르겠는데, 색인 파일을 정렬하는 루아 프로그램이다.
김도현 교수님이 작성한 xindex-ko.lua도 루아 프로그램인데, .ist 또는 .xdy 같은 역할을 하는 것으로 보인다.
C:\>xindex -c ko -l ko foo.idx
여기에서 "-c" 는 설정 파일, 즉 xindex-ko.lua를 가리킨다. "-l ko"은 한국어 로캘을 의미하는 것으로 보이는데, 이것을 같이 쓰지 않으면 xindex-ko.lua에 포함된 아래 정의가 유효하지 않다.
indexheader.ko = { "기호", "숫자" }
한글 표제어들이 영어 표제어들 앞에 온다. xindex-ko.lua를 사용하지 않으면,
C:\>xindex foo.idx
.xdy를 만드는 것보다는 xindex-XX.lua를 만드는 게 더 생산적일 것 같다. 달리 말해, xindy 문법을 익혀서 할 수 있는 것보다 lua를 배워서 할 수 있는 게 훨씬 더 많을 것 같다. 색인 스타일 때문에 루아를 배우고 싶은 생각은 아직 조금도 없지만, 이를테면, 색인 헤더를 나타내는 매크로로 \textbf가 지정되어 있는데, 그것을 텍신디가 사용하는 \lettergroup으로 바꾸고 싶었다. 그것이 재정의하기 더 쉬우니까. 해법은 간단하다. xindex-cfg.lua에 이렇게 정의되어 있다.
idxnewletter = "\\textbf"
xindex-hz.lua 파일을 만들고 이렇게 선언했다.
require"xindex-ko"
idxnewletter = "\\lettergroup"아래와 같이 추가하여 영어 단어들이 한글 단어들 앞에 오게 할 수 있다.
SORTendhook = nil
xindex를 사용하도록 ltx.py와 hzguide.cls를 고쳤다.
'TeX과 친구들' 카테고리의 다른 글
장을 강조하는 차례 스타일 (0) 2021.10.01 프린팅박스 (3) 2021.09.03 직함과 직인 이미지를 겹치기 (0) 2021.04.28 HzGuide 클래스 (0) 2021.04.19 판정 함수 (0) 2021.03.31