我有两个问题:
- 是否可以更改 printindex 命令的标题?默认情况下是“索引”。
- 如何将索引格式化为多列、按字母顺序排序的列表?
答案1
答案取决于你使用的文档类别。然而,
基本 latex 类(book 等)和 ams-latex 类(amsbook 等)都为该命令提供了
\indexname
默认值“Index”。因此\renewcommand{\indexname}{New name}
将改变标题。(该
babel
软件包已经针对多种语言实现了这一功能。)和
book.cls
都amsbook.cls
提供双列索引样式。如果您正在创建自己的类,则可以考虑从其中一个类中“借用”代码。文档代码在基本 latex 和ams-latex 类的.dtx
文件中给出。文档代码的“人类可读”版本在与文件同名的文件中给出。所有这些都在 ctan 上,它们可能也在您的 tex 安装中;尝试在命令行中输入或。classes
amsclass
.pdf
.dtx
texdoc classes
texdoc amsclass
要对内容进行排序,您需要使用makeindex
;这在多个地方都有详细记录,包括 Lamport 的 Latex 手册和“companionn”,以及texdoc makeindex
。请务必注意对数学条目、带重音字母的条目以及可能导致条目与预期字母顺序不一致的其他特殊情况使用“排序字段”。
附录:如果要生成多个索引,则该imakeidx
包是一个不错的选择。没有必要通过基本\index
命令以外的任何命令来标识主索引的条目;对于奇数索引,该索引的名称作为选项输入:\index[<name>]{<entry>}
。的另一个优点imakeidx
是,在大多数情况下,不需要第二次编译。有一些注意事项;有关详细信息,请参阅包文档。
答案2
重新定义
\indexname
。例如:\renewcommand\indexname{The Index}
您可以
.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
:接受一个整数,表示索引中的列数;如果设置了original
或twocolumn
选项,则会被默默忽略;该数字甚至可以是 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
会使我的目录消失。