有哪些不同的索引包?它们的优点和缺点是什么?什么时候应该选择其中一个?
对此有一些讨论索引生成的最新/最佳实践是什么?,但我希望了解每个包的更多详细信息。
答案1
各种索引包提供的功能可分为三类:
支持多索引;
提供简化索引生成的宏;
允许定制索引布局。
这Topic Index
TeX 目录列出了大约十几个与索引相关的包;这个概述是关于我使用过的包(或者至少读过手册)。
makeidx
, A“创建索引的标准包”,提供了一些与索引相关的宏,例如,\printindex
它们(无论出于何种原因)不是 LaTeX2e 内核(如\makeindex
和\index
)或标准文档类(如theindex
环境)的一部分。
multind
“重新定义[the]\makeindex
和命令\index
来\printindex
处理多个索引”。该软件包早于 LaTeX2e;它不适用于 AMS 类,并且索引标题不会与其他章节/部分标题相对应地格式化。
index
“支持单个文档中的多个索引并提供更强大的\index
命令”。该包还提供\index*
对单词进行排版并为其创建索引条目的功能。index
可能会为非标准类别生成格式错误的索引标题。
splitidx
/拆分索引允许“超过 16 个索引:splitidx
仅输出单个文件\jobname.idx
,程序 [splitindex] 将该文件拆分为多个原始索引文件,并为每个文件调用您最喜欢的索引处理器”。该splitidx
包提供了\extendtheindex
向环境添加各种钩子的宏theindex
;后者的实际定制留给用户。
imakeidx
“使用户能够同时生成和排版文档的一个或多个索引”通过使用现代 TeX 发行版的 shell-escape 功能。imakeidx
能够调用 splitindex 程序(见上文),并且它具有一个键值接口,可以自定义索引布局的各个方面(包括使用特定.ist
样式文件调用 MakeIndex 程序的可能性)。最初,imakeidx
与类(使用特殊方法生成索引)不兼容memoir
,但该软件包的 v1.1 版取消了该限制。
hvindex
“简化了单词的索引[...] 索引文本中的单词,您只需输入一次;该软件包确保它既排版又索引”。该软件包提供了一组控制索引条目格式的宏;软件包手册没有说明这些宏是否可以用于创建多个索引。
idxlayout
“提供键值接口来配置索引布局参数,并响应与索引相关的选项和KOMA-Script
命令memoir
”.idxlayout
只处理theindex
环境,而不处理样式文件;它可以在、和.ist
之上使用。(披露:我是该软件包的作者。)index
splitidx
imakeidx
repeatindex
“如果子项列表中出现分页符或分栏符,则重复索引项”. 软件包 README(自 2001 年起)指出repeatindex
“尚未进行太多测试”并列出了一些已知问题。
indextools
是 Maïeul Rouquette 的一个现代分支,引入了与双向语言排版imakeidx
的兼容性。bidi