使用 makeindex.exe 和样式文件中的 page_precedence 选项进行排序

使用 makeindex.exe 和样式文件中的 page_precedence 选项进行排序

假设我想对一个名为“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}

在此处输入图片描述

相关内容