![重新排序索引](https://linux22.com/image/246970/%E9%87%8D%E6%96%B0%E6%8E%92%E5%BA%8F%E7%B4%A2%E5%BC%95.png)
当我索引分子式时,我使用语法\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}
(我希望这能解释得更清楚一点)