我正在使用 makeidx 创建索引。当我在条目中有一个“另请参阅”交叉引用时,我希望它出现后页码列表。但它却显示前清單。
当前的输出如下所示:
量词 也可以看看数字,基数,2
我想要的输出如下所示:
量词 2,也可以看看数字,基数
有没有一种直接的方法可以改变这种行为,比如在我的索引样式文件中?
答案1
顺序由页码控制。“查看”功能实现为封装命令:
\index{quantifiers|textbf}% bold page number
\index{quantifiers|see{numbers, cardinal}}%
Makeindex 附加页码,因此调用了以下宏\printindex
:
\textbf{1} and \see{numbers, cardinal}{1}
的实现\see
忽略了页码,但 Makeindex 会对页码进行排序。使用它们,页码和查看语句都会进行排序。
以下示例定义了\indexsee{<index entry>}{<see entry>}
写入具有相当大页码的索引条目,以便将其排序在末尾。此外,每次都会增加页码,以避免 Makeindex 警告(如果它看到同一条目的不同封装命令)。
宏\index
以逐字模式读取其参数。因此\indexsee
应执行相同操作以避免相同索引键产生不同的结果(更多更少空格、扩展等)。
\documentclass{article}
\usepackage{makeidx}
\makeindex
\makeatletter
\newcommand*{\indexsee}{%
\@bsphack
\begingroup
\@sanitize
\@wrindexsee
}
\newcommand*{\@wrindexsee}[2]{%
\stepcounter{indexsee@page}%
\protected@write\@indexfile{}{%
\string\indexentry{#1|see{#2}}{\the\value{indexsee@page}}%
}%
\endgroup
\@esphack
}
\newcounter{indexsee@page}
\setcounter{indexsee@page}{10000}
\makeatother
\begin{document}
Hello
\index{numbers, cardinal}
\index{numbers, funny}
\indexsee{quantifiers}{numbers, funny}
\newpage
World
\index{quantifiers}
\newpage
\null
\indexsee{quantifiers}{numbers, cardinal}
\printindex
\end{document}
文件test.idx
,由 LaTeX 运行编写:
\indexentry{numbers, cardinal}{1}
\indexentry{numbers, funny}{1}
\indexentry{quantifiers|see{numbers, funny}}{10001}
\indexentry{quantifiers}{2}
\indexentry{quantifiers|see{numbers, cardinal}}{10002}
文件test.ind
,由Makeindex生成:
\begin{theindex}
\item numbers, cardinal, 1
\item numbers, funny, 1
\indexspace
\item quantifiers, 2, \see{numbers, funny}{10001},
\see{numbers, cardinal}{10002}
\end{theindex}
答案2
我们可以使用辛迪对于此任务,位置类别的顺序对我们有利,可以立即使用。我们运行一些 LaTeX 引擎,例如:
lualatex mal-xindy-see.tex
xindy -M texindy -L general -C utf8 mal-xindy-see.idx
lualatex mal-xindy-see.tex
% run: *latex mal-xindy-see.tex
% xindy -M texindy -L general -C utf8 mal-xindy-see.idx
% and *latex again
\documentclass[a4paper]{article}
\pagestyle{empty}
\usepackage{makeidx}
\makeindex
\begin{document}
Text before.
\index{numbers, cardinal}
\index{numbers, funny}
\newpage
\index{quantifiers}
\index{quantifiers|see{numbers, funny}}
\index{quantifiers|see{numbers, cardinal}}
Text after.
\begingroup
\def\thispagestyle#1{}
\printindex
\endgroup
\end{document}