如何对齐索引列

如何对齐索引列

我按照@Schweinebacke 发布的示例进行操作自定义索引 - 为索引条目添加章节标题和诗句编号 效果很好。不过我想改变索引的外观。为了展示更改,我在本邮件中附加了一张图片。

我想对齐索引的列,第一列左对齐,右列右对齐,中间列左对齐。

我将衷心感谢您的帮助 在此处输入图片描述

答案1

我只是为您提供解决方案的概要,然后您应该根据自己的喜好进行定制。

基本方法是为 makeindex 提供一个样式文件,这样您就可以有效地获得.ind包含longtable环境的文件。索引行的各部分必须用逗号而不是逗号分隔,并且&行应以 结尾\\

“verse” 和 “chapter” 之间的内容&由索引命令本身生成,例如来自另一个问题:

\newcommand*{\vindex}[2]{%
  \setcounter{verse}{#2}%
  \sindex[vrs]{#1& \currentchapter}%     % <---
}

我们还需要加载稍后要用到的包:

\usepackage{longtable,array}

其余部分由 makeindex 的特殊样式完成(应保存在文件中,例如verse.ist

preamble "\\section*{\\indexname}
\\newcommand\\ignoreNL[1]{}          % throw away \\ after new group
\\setlength\\LTleft{0pt}
\\setlength\\LTright{0pt}
\\begin{longtable}{l!{\\extracolsep{\\fill}}lr}"
postamble "\\end{longtable}"

item_0 "\\\\\n"     % \\ between entries
delim_0 "&"         % &  between text and "page" number

group_skip "\n \\\\[5pt] \\ignoreNL"   % extra space 5pt between groups

笔记:

我将其用作\section*标题,但对于书籍类,您可能会想要添加\chapter*或不想添加“运行标题”和目录条目。

索引样式文件的一个问题是,没有句柄可以在页码后仅在条目之间添加内容(item_0)。但是,如果发生组更改,我们可能希望添加额外的空间,如果我们这样做,那么我们得到的\\[5pt] \\不是我们想要的。因此,我们另外添加了\ignoreNL只会吞噬以下内容的\\

应用索引样式文件

我发现使用 TeXworks 使 splitindex 工作异常困难,事实上我不知道是否要使用样式文件。所以最后我使用了命令行。如下所示:

splitindex.exe -m "makeindex -s verse.ist" tmp

其中“tmp.tex”是我的测试文件。再运行一次 LaTeX,我们得到:

在此处输入图片描述

相关内容