Makeindex – 设置 \printindex 的样式?

Makeindex – 设置 \printindex 的样式?

我有两个问题:

  1. 是否可以更改 printindex 命令的标题?默认情况下是“索引”。
  2. 如何将索引格式化为多列、按字母顺序排序的列表?

打印索引标题 按字母顺序排列的 printindex

答案1

答案取决于你使用的文档类别。然而,

  1. 基本 latex 类(book 等)和 ams-latex 类(amsbook 等)都为该命令提供了\indexname默认值“Index”。因此

    \renewcommand{\indexname}{New name}
    

    将改变标题。(该babel软件包已经针对多种语言实现了这一功能。)

  2. book.clsamsbook.cls提供双列索引样式。如果您正在创建自己的类,则可以考虑从其中一个类中“借用”代码。文档代码在基本 latex 和ams-latex 类的.dtx文件中给出。文档代码的“人类可读”版本在与文件同名的文件中给出。所有这些都在 ctan 上,它们可能也在您的 tex 安装中;尝试在命令行中输入或。classesamsclass.pdf.dtxtexdoc classestexdoc amsclass

要对内容进行排序,您需要使用makeindex;这在多个地方都有详细记录,包括 Lamport 的 Latex 手册和“companionn”,以及texdoc makeindex。请务必注意对数学条目、带重音字母的条目以及可能导致条目与预期字母顺序不一致的其他特殊情况使用“排序字段”。

附录:如果要生成多个索引,则该imakeidx包是一个不错的选择。没有必要通过基本\index命令以外的任何命令来标识主索引的条目;对于奇数索引,该索引的名称作为选项输入:\index[<name>]{<entry>}。的另一个优点imakeidx是,在大多数情况下,不需要第二次编译。有一些注意事项;有关详细信息,请参阅包文档。

答案2

  1. 重新定义\indexname。例如:

    \renewcommand\indexname{The Index}
    
  2. imakeidxidxlayout包来更改索引的样式。列和标题以及其他设置。

  3. 您可以.ist使用以下方式指定文件makeindex程序来改变的输出makeindex。请参阅的文档makeindex


示例.ist文件:

% sample.ist
% Usage
%     makeindex -s sample.ist foo.aux
preamble "
\\begin{theindex}
  \\providecommand*\\indexgroup[1]{\\indexspace
    \\item \\textbf{#1}\\nopagebreak}
"

postamble "\n\n\\end{theindex}\n"

group_skip "  %\n  \\indexspace\n  %\n"

headings_flag 1
heading_prefix "  %\n  \\indexgroup{"
heading_suffix "}\n  %\n"

numhead_positive "Numbers";
numhead_negative "Numbers";
symhead_positive "Symbols";
symhead_negative "Symbols";

答案3

我只是稍微扩展了 Leo Liu 的第 2 项。imakeidx可以轻松帮助您通过以下方式设置自定义索引标题和列号(来自文档):

  • title:是排版在特定索引开头的标题;如果未指定,则\indexname使用该值。

  • columns:接受一个整数,表示索引中的列数;如果设置了originaltwocolumn选项,则会被默默忽略;该数字甚至可以是 1。

对文档序言进行快速补充:

\usepackage{imakeidx}
\makeindex[title=My custom index title,columns=2]

就可以了。如果你有自定义mystyle.ist样式,也可以使用以下options选项:

  • options: 是要传递给排序和格式化程序的选项列表;此列表是程序选项的均衡文本,以排序和格式化程序所需的语法分隔。例如,为了使用不同的makeindex排序和格式化样式mystyle.ist并避免在屏幕输出中出现任何消​​息,请写入options=-s mystyle

关于自定义makeidx样式,很遗憾我没有这方面的经验。我强烈推荐《The LaTeX Companion》一书中的第 11 章,名为索引生成:)

答案4

我正在使用 amsmidx。我不得不使用

\backmatter
\addcontentsline{toc}{chapter}{Author Index}
\renewcommand{\indexname}{Author Index}
\printindex{author}
\addcontentsline{toc}{chapter}{Subject Index}
\renewcommand{\indexname}{Subject Index}
\printindex{subject}

不要将索引名称添加到\printindex,否则您将得到两个索引,每个名称都使用\renewcommand{\indexname}{My Index Name}。感谢下面的两位评论者,但\clearpage在第二个评论者之前添加一个\addcontentsline会使我的目录消失。

相关内容