“短语”和“看下列来源产生的印刷索引中是否应该抑制“单词”?
\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}