我按照@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,我们得到: