例子:
\documentclass{article}
\usepackage[nonewpage]{imakeidx}
\makeindex
\begin{document}
stuff\index{test}
\printindex
\end{document}
当我运行lualatex
此文件时,我看到标准输出中的输出:
[1{/usr/local/texlive/2013/texmf-var/fonts/map/pdftex/updmap/pdftex.map}
\indexentry{test}{1}
] (./mwe.aux) )
似乎\indexentry
被写入了标准输出而不是文件.idx
——.idx
文件最终为空,因此我根本没有得到索引。
如果我删除nonewpage
imakeidx 选项,.idx
文件就会按预期生成。或者,添加\clearpage
before\printindex
也可以使事情按预期进行。
这是怎么回事?我只是想删除索引前的分页符!
值得一提的是,我在使用 MacTeX 2013,昨天刚刚运行了 TeX Live 更新程序。
答案1
我担心这是一个错误,即使(暗示)有效,也imakeidx
要求idx
过早关闭文件。noautomatic
nonewpage
目前,您可以给出正确的定义\imki@putindex
:
\documentclass{article}
\usepackage[nonewpage]{imakeidx}
\makeatletter
\def\imki@putindex#1{%
\ifimki@nonewpage\else
\imki@clearpage
%%% The following two lines are incorrectly switched in the package
\immediate\closeout\csname #1@idxfile\endcsname
\fi
\let\imki@indexname\indexname % keep \indexname
\@nameuse{imki@set@#1}\imki@decide
\if@tempswa % we can call the external program
\imki@exec{\imki@program\imki@options#1.idx}%
\else
\imki@finalmessage{#1}%
\fi
\ifKV@imki@intoc
\def\imki@maybeaddtotoc{\@nameuse{phantomsection}%
\addcontentsline{toc}{\imki@toclevel}{\imki@title}}%
\else
\def\imki@maybeaddtotoc{}%
\fi
\ifx\imki@title\imki@check@indexname\else
\def\indexname{\imki@title}%
\fi
\@input@{#1.ind}
\let\indexname\imki@indexname % restore \indexname
}
\makeatother
\makeindex
\begin{document}
stuff\index{test}
\printindex
\end{document}
该软件包的修复版本正在发送至 CTAN。