假设我想对一个名为“xchp.idx”的索引文件进行排序,该文件包含以下信息:
\indexentry{{Chp 1 } cherry}{1}
\indexentry{{Chp 1 } apple}{1}
\indexentry{{Chp 1 } banana}{1}
\indexentry{{Chp 2 } banana}{1}
\indexentry{{Chp 2 } cherry}{1}
\indexentry{{Chp 2 } apple}{1}
\indexentry{{Chp 10 } banana}{1}
\indexentry{{Chp 10 } cherry}{1}
\indexentry{{Chp 10 } apple}{1}
\indexentry{{Chp 12 } apple}{1}
\indexentry{{Chp 12 } cherry}{1}
\indexentry{{Chp 12 } banana}{1}
如果我尝试使用这样的排序操作
makeindex xchp.idx
然后我得到
\item {Chp 1 } apple, 1
\item {Chp 1 } banana, 1
\item {Chp 1 } cherry, 1
\item {Chp 10 } apple, 1
\item {Chp 10 } banana, 1
\item {Chp 10 } cherry, 1
\item {Chp 12 } apple, 1
\item {Chp 12 } banana, 1
\item {Chp 12 } cherry, 1
\item {Chp 2 } apple, 1
\item {Chp 2 } banana, 1
\item {Chp 2 } cherry, 1
这是按字典顺序对所有内容进行排序,而我希望每个字符串中的第二个标记按数字顺序排序,如下所示:
\item {Chp 1 } apple, 1
\item {Chp 1 } banana, 1
\item {Chp 1 } cherry, 1
\item {Chp 2 } apple, 1
\item {Chp 2 } banana, 1
\item {Chp 2 } cherry, 1
\item {Chp 10 } apple, 1
\item {Chp 10 } banana, 1
\item {Chp 10 } cherry, 1
\item {Chp 12 } apple, 1
\item {Chp 12 } banana, 1
\item {Chp 12 } cherry, 1
为此,我可能会尝试在名为“xchp.ist”的样式文件中使用“page_precedence”选项,其中包含以下内容:
page_precedence "anaan"
其中 a=字母小写,n=数字。
在这里我可能会想抱怨一下,虽然提到了这个选项 这里和 那里在 stackchange,似乎没有关于其使用的明确文档……甚至在“The LaTeX Companion”第二版的表 11.1 中也没有。但是我会阻止自己抱怨,并深表歉意,因为我免费获得了 makeindex……所以我有什么资格抱怨呢?
现在如果我尝试
makeindex -s xchp.ist xchp.idx
我明白了
\item {Chp 1 } apple, 1
\item {Chp 1 } banana, 1
\item {Chp 1 } cherry, 1
\item {Chp 10 } apple, 1
\item {Chp 10 } banana, 1
\item {Chp 10 } cherry, 1
\item {Chp 12 } apple, 1
\item {Chp 12 } banana, 1
\item {Chp 12 } cherry, 1
\item {Chp 2 } apple, 1
\item {Chp 2 } banana, 1
\item {Chp 2 } cherry, 1
这仍然不是我想要的。有人能帮我吗?我怀疑 xindy 可能有解决方案。但那可能是另一篇文章了。目前,有没有办法用 makeindex 执行所需的操作?
答案1
您可以使用 正确排序xindy
。
使用 编译它pdflatex -shell-escape
。如果它不运行xindy
,您可能必须手动执行(texindy
),然后pdflatex
再次运行。
\documentclass{article}
\usepackage[nonewpage,xindy]{imakeidx}
\makeindex
\indexsetup{firstpagestyle=empty}
\begin{document}
Filler text.
\index{{Chp 1 } cherry}
\index{{Chp 1 } apple}
\index{{Chp 1 } banana}
\index{{Chp 2 } banana}
\index{{Chp 2 } cherry}
\index{{Chp 2 } apple}
\index{{Chp 10 } banana}
\index{{Chp 10 } cherry}
\index{{Chp 10 } apple}
\index{{Chp 12 } apple}
\index{{Chp 12 } cherry}
\index{{Chp 12 } banana}
\printindex
\end{document}