制作索引号排序

制作索引号排序

我想改变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}

在此处输入图片描述

相关内容