我有一份包含数百个条目的文档\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
。