색인과 참고문헌은 한 번의 컴파일로 끝나지 않습니다. 먼저 LaTeX가 원재료를 기록합니다(\index 항목은 .idx로, \cite 키는 .aux로). 그다음 별도 프로그램이 이를 정렬하고 형식을 맞춥니다. 마지막으로 LaTeX를 다시 실행해 결과를 본문에 넣습니다. 이 페이지는 이런 뒤쪽 도우미, 즉 색인을 만드는 makeindex / mendex / upmendex와 문헌을 만드는 bibtex / pbibtex / upbibtex / biber를 다룹니다.
색인과 문헌은 별도 프로그램이 처리한다
본문에 \index{...}나 \cite{...}를 써도 LaTeX 자체가 그것을 정렬하지는 않습니다. 첫 번째 컴파일에서 원시 데이터(.idx, .aux)를 내보내고, 그 위에 색인 또는 문헌 프로그램을 실행해 형식이 잡힌 파일(.ind, .bbl)을 만든 뒤, 다시 컴파일해 본문으로 가져오는 다단계 처리입니다. 순서와 횟수를 손으로 관리하는 것은 번거로우므로 실무에서는 보통 latexmk 같은 빌드 도구에 맡깁니다.
makeindex / mendex / upmendex — 색인 만들기
makeindex 가 기본입니다. \index가 쓴 .idx를 읽고 정렬해 .ind를 생성합니다. 출력 형식은 -s style.ist 로 지정할 수 있습니다. 다만 내부 처리는 1바이트 단위라서 일본어의 올바른 읽기 순서에는 대응하지 않습니다.
mendex 는 일본어 대응 버전으로, 한자를 읽기(yomi) 순서로 정렬합니다. reading@term 구문으로 읽기를 주면 그 가나를 기준으로 일본어 순서에 맞게 정렬합니다. upmendex 는 그 Unicode/다국어 후속 버전입니다. 내부 처리가 Unicode이며 ICU(Unicode Collation Algorithm) 를 사용해 일본어, 라틴 문자, 그리스 문자, 키릴 문자 등을 정렬합니다. makeindex/mendex 스타일과 상위 호환되며, 현대 upLaTeX나 LuaLaTeX-ja에서 색인을 만들 때 표준 선택입니다.
makeindex document.idx # → document.ind
upmendex -s mystyle.ist document.idx # 多言語・スタイル指定 / multilingual, with a style최소 색인은 프리앰블에서 makeidx를 불러오고 \makeindex를 선언하며, 본문에 \index{...}를 놓고 색인을 표시할 위치에서 \printindex를 호출합니다. 핵심은 \index가 종이에 보이는 글자를 출력하는 명령이 아니라 색인 처리기에 넘길 재료를 쓰는 명령이라는 점입니다. 정렬과 표시를 다르게 하고 싶을 때는 sort-key@printed-term을 사용합니다. 예를 들면 latex@LaTeX입니다.
\documentclass{jsarticle}
\usepackage{makeidx}
\makeindex
\begin{document}
LaTeX\index{らてふ@LaTeX} で索引を作ります。
\printindex
\end{document}bibtex / pbibtex / upbibtex / biber — 참고문헌 만들기
bibtex(Oren Patashnik, 1985년)는 고전적인 문헌 도구입니다. .aux의 \cite 키를 .bib 데이터베이스와 맞추고, .bst 스타일에 따라 .bbl을 생성합니다. 일본어 필드와 일본어 정렬에는 pbibtex(pTeX 계열) 또는 Unicode 대응 upbibtex(upTeX 계열)를 사용합니다.
biber 는 현대적인 biblatex용 백엔드입니다. Perl로 작성되었고 완전한 Unicode 지원, Unicode Collation Algorithm 기반 정렬, 강력한 상호 참조, 데이터 모델 검증 등 전통적인 BibTeX보다 넓은 기능을 제공합니다. 문서가 biblatex를 사용한다면 먼저 biber를 전제로 생각합니다. bibtex와 biber에 공통인 -min-crossrefs=N(기본값 2) 은 crossref의 임계값입니다. 어떤 항목이 N개 이상의 다른 항목에서 참조되면 독립된 참고문헌 항목이 되고, 그렇지 않으면 그 필드가 인용하는 항목 안으로 합쳐집니다.
bibtex document # 拡張子なし。document.aux を読む / no extension; reads document.aux
biber document # biblatex を使う場合 / when the document uses biblatex구분 기준은 이렇습니다. 전통적인 \bibliography + .bst라면 bibtex(일본어는 up/pbibtex)를 사용합니다. 다국어와 고기능 경로가 필요해 biblatex를 쓴다면 biber를 사용합니다. 연구실이나 투고처 템플릿이 .bst를 지정한다면 억지로 옮기지 말고 그 템플릿의 방식을 따릅니다. 새 프로젝트에서 인용 방식을 직접 고를 수 있다면 biblatex + biber가 Unicode와 세밀한 제어에 더 강한 선택입니다.
BibTeX 계열에서는 .bst가 출력 양식을 정하므로, 투고 규정에서 jplain이나 plainnat 등을 지정했다면 그것을 따릅니다. biblatex에서는 LaTeX 쪽 옵션으로 양식을 선택하고, 뒤쪽 데이터 처리는 biber에 맡깁니다. 어느 쪽이든 본문의 인용 키와 .bib의 키가 일치하지 않으면 .bbl은 만들어져도 인용은 해결되지 않습니다. 먼저 한 항목만 들어 있는 최소 예제를 만들어 통과시킨 뒤 전체 참고문헌을 옮기면 실패 지점을 좁힐 수 있습니다.
워크플로가 실패하면 먼저 “LaTeX가 원재료를 썼는가”를 확인합니다. 색인은 .idx, biblatex 문헌은 .aux와 .bcf를 봅니다. 그다음 makeindex, upmendex, bibtex, biber의 로그를 읽습니다. 마지막으로 LaTeX를 다시 실행해 생성된 .ind나 .bbl이 실제로 본문에 들어왔는지 확인합니다. 이 순서로 디버깅하면 실패 범위를 빠르게 좁힐 수 있습니다.
실행 순서
일반적인 순서는 “컴파일 → 문헌/색인 → 컴파일 → 컴파일”입니다. 예를 들어 upLaTeX라면 다음과 같습니다. 그래도 손으로 입력하기보다는 필요한 순서와 횟수를 자동으로 판단하는 latexmk 등에 맡기는 것이 확실합니다.
uplatex document # .aux / .idx を生成
upbibtex document # 文献を整形 (.bbl)
upmendex document # 索引を整形 (.ind)
uplatex document # 取り込み(番号確定のためもう一度流すことも)
uplatex document