生成索引的正确方法是什么?

生成索引的正确方法是什么?

为了创建索引我目前包括

\usepackage{makeidx}
\usepackage{index}
\makeindex

[...] \index{...} [...]

\printindex

放入文档中(并makeindex在编译之间运行)。不久前有人告诉我这是创建索引的方法。

因此,我想知道是否有一些更现代、更灵活的方法来实现这一点(类似于 BibLaTeX 是 BibTeX 的现代替代品)。特别是,是否有方法可以为调用添加一些样式选项\printindex。目前,我必须创建一个索引样式文件或补丁theindex才能\MakeUppercase\markboth索引中删除。

如果很重要的话,我通常会使用 KOMA-Script 类。

答案1

如果您使用 调用 LaTeX,该imakeidx包将在 LaTeX 编译中调用makeindex(或,或其他索引编译器) 。它还允许您将选项传递给。xindy-shell-escape\makeindex

至于样式,您可以使用.ist文件并将它们作为参数(-s标志)传递给makeindex(或者作为选项传递给(\makeindex如果使用imakeidx))。

文件中可以放入的字段.ist如下:在手册页中。但它并不是万能的。就我而言,我必须在两次 LaTeX 调用之间使用 sed(我知道,我感到很惭愧)才能得到我想要的结果。

这是.ist我正在使用的示例文件:

% Dotfill style
delim_0 "\\dotfill "
delim_1 "\\dotfill "
delim_2 "\\dotfill "
% M-dash style
%delim_0 "\\ocadr"
%delim_1 "\\ocadr "
%delim_2 "\\ocadr "

% Force subitems to be raggedleft when they overflow the line
% and make sure to keep items raggedright    
item_0 "\n  \\item\\raggedright"
item_1 "\n    \\subitem\\raggedleft"

% When using Old/New Testament parts in index
% Make them scshape
preamble "\\begin{multicols}{2}
\\makeatletter
\\let\\item\\@idxitem\\scshape
\\makeatother"
postamble "\\end{multicols}"

正如您所见,您已经可以用它做很多事情。

正如 Thorsten 所提到的,您还可以使用idxlayout包,它控制一些其他参数(例如段落长度、列长度等)。imakeidx和都idxlayout与 Koma-Script 类兼容(我正在使用imakeidxscrbook并且彼此兼容。

答案2

我认为你正在寻找类似的东西idxlayout包。它不能像比布拉特克斯,但这或许是一个很好的起点。

相关内容