将“另请参阅”放在索引中的页码后面

将“另请参阅”放在索引中的页码后面

我正在使用 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}

姆韦

相关内容