重新排序索引

重新排序索引

当我索引分子式时,我使用语法\index{C8H12O4}and \index{C10H16O5}。结果输出将在 C8 化合物之前包含 C10。我的理解是:在第二个条目中,C 后面跟着 1,而在第一个例子中,C 后面跟着 8。1 小于 8,因此 C10 在 C8 之前。

问题是如何重新排序,以便数字较小的 C 先出现,然后是另一个。在上述情况下,先是 C8,然后是 C10。

相关的问题是:CAS 编号“100-51-7”将出现在“88-45-6”之前。如何使其反过来工作?

这是我的 MWE

\documentclass[a4paper,10pt]{book}   
\usepackage{imakeidx}  % as i have multiple indexing
\makeindex  % as i have multiple indexing
\begin{document}

The illustrative example to show the problem I'm facing with indexing. C8H12O4\index{C8H12O4} and C10H16O5\index{C10H16O5} are interesting compounds. The resulting output will have C10 above the C8 compound.

Also checked for CAS numbers: 100-51-7\index{100-51-7} and 88-45-6\index{88-45-6} has to be indexed in the reverse order.  First 88-45-6, then 100-51-7.

\printindex
\end{document}

答案1

首先,您需要进行少量规划以制定正确的方案。然后,该\index命令允许使用 形式的参数{sortable@printable},因此您只需向索引排序键添加足够数量的前导零,如下所示:

C8H12O4\index{C08H12O4@C8H12O4} and C10H16O5\index{C10H16O5} 
100-51-7\index{100-51-7} and 88-45-6\index{088-45-68@8-45-6}

以 88-45-46 为例。如果我们可以假设最大数字是 999-999-99,那么我们对其进行两次编码,一次用于打印,一次用于排序。打印键“按原样”:88-45-6,但排序键用适当的前导零填充:088-045-06。现在,要将其索引并排序到正确的位置,我们只需要:

\index{088-045-06@88-45-6}

(我希望这能解释得更清楚一点)

相关内容