除了一般的文档布局外,索引的布局和格式还取决于两件事:
将原始索引数据转换为文件(包含环境)时
.ist
使用的(索引样式)文件的参数。这些参数控制每个索引组的字母标题的存在。makeindex
.ind
theindex
环境的定义
theindex
是文档类的一部分,可能会被以下包改变:imakeidx
和idxlayout
. 此定义控制例如索引列的数量。
有可能(尽管从印刷的角度来看这通常不太合理)theindex
在文档中间改变环境的定义(例如,“将一般索引排版为两列,然后将名称索引切换为三列”,idxlayout
手册,第 4 页)。但是,是否可以.ist
在文档中间更改(索引样式)文件参数(例如,在某些索引中(但不是在所有索引中)添加组字母标题)?
编辑:澄清一下:我的目的不是.ist
在单一theindex
环境中切换参数,而是对同一文档中的多个索引使用不同的参数(或实现不同的格式)。
编辑 2:我认为 Martin Schröder 的回答暗示我们可以makeindex
“手动”运行几次,.ist
每次选择不同的文件。另一方面,Leo Liu 在评论中指出“可以在格式中添加 TeX 布尔开关.ist
并进行修改\index
以使其正常工作”即通过 LaTeX 宏控制格式。我对文件中布尔开关的具体示例感兴趣.ist
。
答案1
您混淆了两个不同的问题。.ist
除了启用分组之外,文件不会影响索引的最终外观。它与列数无关,这是 LaTeX 的职责,通过定义来确定theindex
(imakeidx
例如,修改为具有不同于两列的列数)。
假设您想要一个使用样式排版为两列的主索引main.ist
和一个使用样式排版为三列的名称索引names.ist
。那么以下声明即可:
\usepackage{imakeidx}
\makeindex[title=Main Index,columns=2,options=-s main]
\makeindex[name=names,title=Index of Names,colums=3,options=-s names]
主索引的条目将由 定义\index{tetrapiloctomy}
,而名称索引的条目将由 定义\index[names]{Doe, John}
。
一般来说,options
键告诉makeindex
或xindy
使用什么命令行选项(输入和输出文件名由包决定)。
如果您有许多索引,最好使用选项splitindex
(imakeidx
)\usepackage[splitindex]{imakeidx}
,但这需要使用-shell-escape
选项或单独运行来运行LaTeX makeindex
。
答案2
TeX 宏不能控制文件指定的输入格式,这是不正确的。TeX.ist
宏可以控制某些输出格式。但是,这在一个索引中毫无意义。
对于多个索引,这里有一个使用不同.ist
格式的示例:
\documentclass{book}
\usepackage{imakeidx}
\makeindex[
name=persons,
title={Names},
columns=2,
program=makeindex, % or xindy, texindy
options={-s mkind.ist},
noautomatic=false
]
\makeindex[
name=colors,
title={Colors},
columns=1,
program=makeindex, % or xindy, texindy
options={-s icase.ist},
noautomatic=false
]
\begin{document}
Alice\index[persons]{Alice}
Red\index[colors]{Red}
\newpage
Bob\index[persons]{Bob}
Yellow\index[colors]{Yellow}
\newpage
John\index[persons]{John}
Gray\index[colors]{Gray}
\printindex[persons]
\printindex[colors]
\end{document}
答案3
您可以创建多个索引(例如使用index
包)并为每个索引使用不同的makeindex
参数(和不同的ist
文件)。
也可以看看我怎样才能拥有两个或更多不同的索引?