![imakeidx 中的双重计数](https://linux22.com/image/405646/imakeidx%20%E4%B8%AD%E7%9A%84%E5%8F%8C%E9%87%8D%E8%AE%A1%E6%95%B0.png)
我正在写一篇包含家谱内容的科学论文。因此,我的文件中出现了很多名字。因此,我用 imakeidx 为所有名字创建了一个索引。现在我的问题来了:
有时,两个人的名字相同,并且出现在 pdf 文件的同一页上。因此,具有此名字的条目在索引中仅出现一次。但我希望论文中提到的每个人都出现在索引中。有可能吗?
这是我的最小乳胶代码:
\documentclass[10pt,a4paper]{book}
\usepackage[paper=a4paper,left=25mm,right=25mm,top=25mm,bottom=50mm]{geometry}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[english]{babel}
\usepackage{imakeidx}
\makeindex[name=A,title={index of mentioned persons},columns=2]
\begin{document}
John Doe\index[A]{John Doe}\newline
John Doe\index[A]{John Doe}
\printindex[A]
\end{document}
这个例子的输出如下
John Doe,1
但我想要类似的东西
John Doe,1,1
编辑:请不要质疑我为什么需要它。我知道这看起来很奇怪。我只需要它进行某种统计评估。
答案1
您应该有一个.ind
和一个 `.idx 文件。在按字母顺序排列的 .ind 文件中查找“重复”的名称,并观察重复的页码以及任何额外的页码。
Makeindex 有一个“愚蠢”的 ASCII 排序。如果条目不是确切地相同的,空格和所有内容,它们将被分开排序,因此解决方案通常是摆脱“多余的”空格。
在文件中查找名称.idx
,该文件按页码顺序排列。由于条目用括号括起来,因此很容易发现异常空格。
现在进入文本文件,找到不匹配的条目并修复它。修复索引中“额外”行中出现的任何其他条目,这样您就不需要再次执行此过程。对以下条目执行此操作全部重复的名称,然后重新运行。
顺便说一句,你永远不会得到列出的条目
John Doe,1,1
同一页面上的所有实例都将列在单个页码下。