我希望有一个命令,它强调一个术语(如数学文本中的定义)并为索引生成一个项目(我使用 makeindex)。理想情况下,宏不应该太具侵入性,这样索引就可以在需要时关闭。
你能给我提供这个任务的解决方案吗?
答案1
这里有一个例子:使用宏\myemph{}
会导致单词添加到索引中,而常规\emph{}
宏仍然可用并且不会将该术语添加到索引中。
\documentclass{memoir}
\makeindex
\newcommand{\myemph}[1]{\index{#1}\emph{#1}}%
\begin{document}
This is in index: \myemph{foo}
This is not in index: \emph{bar}
\backmatter
\printindex
\end{document}
答案2
或者你也可以这样:
\let\oldemph\emph
\renewcommand{\emph}[1]{\index{#1}\oldemph{#1}}
现在您就可以\emph
随意使用了。
如果您想要带星号的版本,这可能会有所帮助(您需要该suffix
软件包):
\documentclass{article}
\usepackage{suffix}
\makeindex
\let\oldemph\emph % save old \emph
\renewcommand\emph[1]{\oldemph{#1}} % "new" \emph without star
\WithSuffix\newcommand\emph*[1]{\oldemph{#1}\index{#1}} % new \emph with a star
\begin{document}
\emph{test} \\ % doesn't get indexed
\emph*{test2} % gets indexed
\end{document}