部分文档的索引

部分文档的索引

我有一份包含数百个条目的文档\index。我正在尝试为文档的某些部分生成索引。

我能想到的最好的办法是\index暂时禁用该命令。我这样做了:

\let\origindex\index
\newcommand\indexoff{\renewcommand\index[2][]{}}
\newcommand\indexon{\let\index\origindex}

我像这样使用它来生成第 2 章的索引:

\indexoff
\include{chapter1}
\indexon
\include{chapter2}
\indexoff
\include{chapter3}

有没有更好或更干净的方法?(我对这种宏的经验相当有限。我甚至不确定它\let到底起什么作用。)

答案1

您不必到处进行这些更改,事实上有一个非常简单的开箱即用的解决方案。

正如您所使用,\include您可以使用\includeonly它来仅处理一些包含的文件(我想这无论如何都符合您的要求 :-)。在这种情况下,将.idx仅包含您包含的文件的索引条目,例如,在您的示例使用中

\includeonly{chapter2}

并且您只获取文件中的条目chapter2.tex。或者,如果您想要第 2 章和第 3 章,请使用

\includeonly{chapter2,chapter3}

\include机制将保存交叉引用和目录的信息,但不会保存直接进入文件之外的文件的数据.aux。因此,只要您正确使用包含机制,即所有章节都已编译或在早期章节发生更改时重新编译,这将为您提供所需的确切信息,并且页面引用也将正确。

还有一些包提供交互使用\includeonly,例如包askinclude

相关内容