这个最小示例在我的计算机上表现非常奇怪:
\documentclass[a4paper]{book}
\usepackage{imakeidx}
\makeindex
\makeindex[name=foo]
\begin{document}
\printindex %if I delete this line, both indices at the end show up as expected
%if it is here, there is no index at the beginning of the file
%and only the foo index shows up after the "content"
\index[foo]{Some word} asdadas
\index{Another} asdadas
\printindex
\printindex[foo]
\end{document}
问题是,我希望索引位于书的开头。似乎发生的情况是,第一个打印索引不知何故导致.idx 和生成的.ind 文件为空。
这是配置错误还是我提供的代码有问题?
答案1
在相应命令之后,您不能让任何东西产生索引条目\printindex
,因为该.idx
文件需要关闭才能由 MakeIndex 进行处理。
您可以使用该noautomatic
选项,但需要手动运行 MakeIndex。如果您不需要对各种索引进行特殊格式化,则使用splitindex
将简化工作。
\documentclass[a4paper]{book}
\usepackage[splitindex,noautomatic]{imakeidx}
\makeindex
\makeindex[name=foo]
\begin{document}
\printindex
\index[foo]{Some word} asdadas
\index{Another} asdadas
\printindex
\printindex[foo]
\end{document}
在此文件上运行 LaTeX 后,例如taxel.tex
,调用
splitindex taxel
并重新运行 LaTeX。
否则,您将需要单独运行 MakeIndex。
您会在日志文件和控制台中找到一些建议:
Package imakeidx Warning: Remember to run (pdf)latex again after calling
(imakeidx) `splitindex' and processing the indices.
就splitindex
案件而言,
Package imakeidx Warning: Remember to run (pdf)latex again after calling
(imakeidx) `makeindex taxel.idx'.
Package imakeidx Warning: Remember to run (pdf)latex again after calling
(imakeidx) `makeindex foo.idx'.
对于另一种情况。
答案2
如果您需要按照命令索引少量单词,则可以使用以下技巧\printindex
。
(我知道问题是关于完整文档位于索引页之后的情况,在这种情况下,之前给出的答案是更好的方法,但我觉得介绍这个技巧也很有用。)
我有一个(较大的)文档,索引页后面有一页。在最后一页上,我有两张(pst-geo)地图,显示了主文档中最重要的城镇。我希望这些城镇在地名索引中被引用(连同主文档中的引用)。
在调用之前的某个方便的地方\printindex[places]
,我包含了以下内容:
\newcommand{\mapspage}[1]{119} % Check and adjust page-number
\index[places]{Amsterdam|mapspage}
\index[places]{Jakarta|mapspage}
在 LaTeX 最终印刷之前,需要手动检查和调整页码(我的情况是 119)。
当然,这只适用于\index
索引后的极少数页面上的少数条目,但如果是这种情况,这可能会奏效。