ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • xindex
    TeX과 친구들 2021. 7. 19. 15:00

    색인을 포함해야 할 만큼 대규모 문서를 작성할 일이 거의 없지만, 그렇게 드물게 요구되는 것들도 능히 처리하는 문서화 방법론을 구비해야 한다. (그렇게 믿고 있다) 색인(.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.pyhzguide.cls를 고쳤다.

    'TeX과 친구들' 카테고리의 다른 글

    장을 강조하는 차례 스타일  (0) 2021.10.01
    프린팅박스  (0) 2021.09.03
    직함과 직인 이미지를 겹치기  (0) 2021.04.28
    HzGuide 클래스  (0) 2021.04.19
    판정 함수  (0) 2021.03.31

    댓글

Designed by Tistory.