Printindex 仅当放在最后时才有效

Printindex 仅当放在最后时才有效

这个最小示例在我的计算机上表现非常奇怪:

\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索引后的极少数页面上的少数条目,但如果是这种情况,这可能会奏效。

相关内容