我想改变makeindex的标准数字排序。
标准排序输出:
1.1、1
1.2、1
10.4、1
12.2、1 2.2、1
3.3、1 4.4、1
请求的 排序输出:
1.1、1
1.2、1 2.2、1
3.3、1
4.4、1
10.4、1
12.2、1
这是一个标准排序的小例子,它产生上面提到的标准排序输出。
\documentclass{scrartcl}
\usepackage{makeidx}
\makeindex
\begin{document}
Refering to OM A 1.1\index{OM A!1.1}.\\
Refering to OM A 1.2\index{OM A!1.2}.\\
Refering to OM A 2.2\index{OM A!2.2}.\\
Refering to OM A 10.4\index{OM A!10.4}.\\
Refering to OM A 3.3\index{OM A!3.3}.\\
Refering to OM A 4.4\index{OM A!4.4}.\\
Refering to OM A 12.2\index{OM A!12.2}.\\
\printindex
\end{document}
非常感谢您的帮助。
答案1
使用makeindex
,您可以在宏中添加排序键\index
。只需添加尽可能多的前导零即可填充到最大数字的宽度:
\documentclass{scrartcl}
\usepackage{makeidx}
\makeindex
\begin{document}
Refering to OM A 1.1\index{OM [email protected]}.\\
Refering to OM A 1.2\index{OM [email protected]}.\\
Refering to OM A 2.2\index{OM [email protected]}.\\
Refering to OM A 10.4\index{OM [email protected]}.\\
Refering to OM A 3.3\index{OM [email protected]}.\\
Refering to OM A 4.4\index{OM [email protected]}.\\
Refering to OM A 12.2\index{OM [email protected]}.\\
\printindex
\end{document}
答案2
虽然问题是关于的makeindex
,但我会展示一个xindy
使用和imakeidx
对索引进行自动数字排序的解决方案。
通过 实现单列索引columns=-1
,可以通过转储关闭字母组标题,以便在启动\lettergroup
后不执行任何操作。\theindex
\documentclass{scrartcl}
\usepackage{etoolbox}%
\usepackage[xindy]{imakeidx}
\apptocmd{\theindex}{\newcommand{\lettergroup}[1]{}}{}{}%
\makeindex[options={-M numeric-sort.xdy},columns=1]
\begin{document}
Refering to OM A 1.1\index{OM A!1.1}.\\
Refering to OM A 1.2\index{OM A!1.2}.\\
Refering to OM A 2.2\index{OM A!2.2}.\\R
Refering to OM A 10.4\index{OM A!10.4}.\\
Refering to OM A 3.3\index{OM A!3.3}.\\
Refering to OM A 4.4\index{OM A!4.4}.\\
Refering to OM A 12.2\index{OM A!12.2}.\\
\printindex
\end{document}