imakeidx
latexmk
특히 책 크기의 편집에 있어서는 모든 TeX 시간 중에서 제가 가장 좋아하는 유틸리티 중 두 가지입니다(@egreg 및 @John Collins에게 정말 감사드립니다!) . 여러 인덱스를 쉽게 생성할 수 있다는 점 외에도 의 가장 유용한 속성 중 하나는 문서 내 컴파일 인덱스 하위 컴파일입니다( 동일한 방식으로 작동하도록 확장할 수 있기를 바랍니다! ) imakeidx
.glossaries
biblatex
주어진 MWE:
\documentclass{article}
\usepackage{imakeidx}
\makeindex
\begin{document}
This.\index{this}
\printindex
\end{document}
makeindex
latex
간단한 컴파일 중에 중간에 한 번 호출됩니다 . 그러나 를 사용할 때 는 latexmk -recorder (etc.)
중간 에 생성되는 latexmk
새 .ind
파일을 무시하고 파일 전체를 다시 호출합니다.imakeidx
makeindex
.idx
물론 이러한 비효율성은 이 장난감 MWE에서는 거의 눈에 띄지 않습니다. 그러나 여러 개의 큰 인덱스, biblatex
/ biber
, 여러 개의 목차가 포함된 많은 파일로 구성된 책 크기의 문서가 glossaries
완료되기 전에 여러 단계를 거쳐야 하는 경우 생성하는(제거하는 대신) 추가 작업은 latexmk
내 우아함(때로는 인내심)을 크게 테스트합니다.
그렇다면 을 사용하여 문서에서 의 latexmk
호출에 대한 지나친 열망을 어떻게 개선할 수 있습니까 ? 내 . 특히 여러 패스(이 MWE에는 표시되지 않음)에 걸쳐 호출 수를 최소로 유지하는 데 관심이 있습니다 . 즉, 인덱스 파일당 최대 2개의 호출을 유지하는 것입니다.makeindex
imakeidx
.latexmkrc
makeindex
[[ 마법 의 브랜드 인 문서 내 편집을 위한 확장 glossaries
및/또는 기능에 대한 보너스 포인트 . ; ) ]]biblatex
imakeidx
\write18
답변1
latexmk
추가 실행을 방지하기 위해 현재 버전을 구성하는 방법이 없습니다 . 는 makeindex
에 의해 두 번째로 실행될 뿐만 아니라 latexmk
에서도 실행되므로 latex
실행 시간이 두 배로 늘어납니다. 이는 큰 문서에서는 나쁜 페널티입니다.
이를 수정하려면 latexmk
자체적으로 변경이 필요합니다. 파일을 읽기 전에 실행하는 동안 파일이 만들어졌는지 확인하고 추가 실행이 필요하지 않음을 표시할 .log
수 있는 충분한 정보가 파일 에 있습니다 . 의 향후 버전에 대한 개선 사항 목록에 이것을 추가했습니다 .latexmk
.ind
latex
latexmk
답변2
John의 답변에서 아무것도 빼앗지 않고 $makeindex = "touch -m %D";
로컬에 추가하면 .latexmkrc
거의 오버헤드가 거의 없는 자동화된 워크플로가 생성됩니다. 이 경우 내 시스템에서는 이 예제가 latex
한 번만 실행됩니다. 즉, 이것은 가능한 한 (거의) 효율적입니다. 물론 단서는 활성화된 상태 imakeidx
로 \write18
항상 사용된다는 것입니다. 제 경우에는 문제가 되지 않습니다.
touch.exe
(*) Windows 사용자는 모든 최신 배포판에서 사본을 선택할 수 있습니다 gnu
.