是否有可能在文档中间更改 .ist(索引样式)文件参数?

是否有可能在文档中间更改 .ist(索引样式)文件参数?

除了一般的文档布局外,索引的布局和格式还取决于两件事:

  • 将原始索引数据转换为文件(包含环境)时.ist使用的(索引样式)文件的参数。这些参数控制每个索引组的字母标题的存在。makeindex.indtheindex

  • 环境的定义theindex是文档类的一部分,可能会被以下包改变:imakeidxidxlayout. 此定义控制例如索引列的数量。

有可能(尽管从印刷的角度来看这通常不太合理)theindex在文档中间改变环境的定义(例如,“将一般索引排版为两列,然后将名称索引切换为三列”idxlayout手册,第 4 页)。但是,是否可以.ist在文档中间更改(索引样式)文件参数(例如,在某些索引中(但不是在所有索引中)添加组字母标题)?

编辑:澄清一下:我的目的不是.ist在单一theindex环境中切换参数,而是对同一文档中的多个索引使用不同的参数(或实现不同的格式)。

编辑 2:我认为 Martin Schröder 的回答暗示我们可以makeindex“手动”运行几次,.ist每次选择不同的文件。另一方面,Leo Liu 在评论中指出“可以在格式中添加 TeX 布尔开关.ist并进行修改\index以使其正常工作”即通过 LaTeX 宏控制格式。我对文件中布尔开关的具体示例感兴趣.ist

答案1

您混淆了两个不同的问题。.ist除了启用分组之外,文件不会影响索引的最终外观。它与列数无关,这是 LaTeX 的职责,通过定义来确定theindeximakeidx例如,修改为具有不同于两列的列数)。

假设您想要一个使用样式排版为两列的主索引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键告诉makeindexxindy使用什么命令行选项(输入和输出文件名由包决定)。

如果您有许多索引,最好使用选项splitindeximakeidx\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文件)。

也可以看看我怎样才能拥有两个或更多不同的索引?

相关内容