抑制“参见”交叉引用前的索引逗号

抑制“参见”交叉引用前的索引逗号

“短语”和“下列来源产生的印刷索引中是否应该抑制“单词”?

\documentclass{book}
\usepackage{makeidx}
\makeindex

\begin{document}

Some words.
\index{words}
\index{phrases|see{words}}

\printindex

\end{document}

我知道(http://latex-community.org/forum/viewtopic.php?f=51&t=21464)其中一种方法是:

\documentclass{book}
\usepackage{makeidx}
\makeindex

\newcommand{\seeonly}[2]{(\emph{see} #1)}
\newcommand\gobble[2]{}

\begin{document}

Some words.
\index{words}
\index{phrases \seeonly{words}|gobble}

\printindex

\end{document}

不过,我想要一种方法不是要求在每个这样的“查看”索引条目中添加任何显式代码(例如|gobble)以隐藏逗号。相反,我寻求某种方法来修改\seeonly其自身的定义。

目的是简化在源文档中输入此类交叉引用。

(该问题涉及:更改索引“另请参阅”和“参见”格式

答案1

在这里调整答案:

我们可以将索引分隔符定义为一个宏,用于测试它后面是否跟着\see\seealso命令。这样就无需使用不同的索引命令,如下方的答案所示:更改索引“另请参阅”和“参见”格式

\documentclass{book}
\begin{filecontents}{\jobname.mst}
delim_0 "\\idxdelim"
delim_1 "\\idxdelim"
delim_2 "\\idxdelim"
\end{filecontents}
\usepackage{makeidx}
\makeindex
\makeatletter
\def\idxdelim{\@ifnextchar{\see}{\space}{\@ifnextchar{\seealso}{\space}{, \space}}}

\makeatother
\begin{document}

Some words. A test.
\index{words}
\index{phrases|see{words}}
\index{sentences|seealso{words}}

\printindex

\end{document}

索引输出

相关内容