![如何在不标记每个条目的情况下建立索引](https://linux22.com/image/294258/%E5%A6%82%E4%BD%95%E5%9C%A8%E4%B8%8D%E6%A0%87%E8%AE%B0%E6%AF%8F%E4%B8%AA%E6%9D%A1%E7%9B%AE%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E5%BB%BA%E7%AB%8B%E7%B4%A2%E5%BC%95.png)
有没有一种方法可以索引长文档而不必查找文本中的每个条目?我正在使用的方法需要在要索引的文本中的每个条目后\makeindex
插入。\index{xyz}
答案1
这是同时插入文本和索引条目的快捷方法。
如果索引项更复杂,可以使用命令的可选参数来提供特殊的索引项。
我调用了命令\ShowTextIndex
,但我知道这太长了。如果有人知道更好的术语,请发表评论 ;-)
我也可以简化命令的非可选参数版本,但是我心里有一些想法,这会使整个编辑变得毫无用处,所以我基本上保留了可选参数版本的重复。
\documentclass[paper=a4,12pt]{book}
\usepackage{xcolor}%
\usepackage{imakeidx}%
\makeatletter
\newcommand{\ShowTextIndex@opt}[2][]{%
#2\index{\unexpanded{#1}}%
}%
\newcommand{\ShowTextIndex@noopt}[1]{%
#1\index{\unexpanded{#1}}%
}
\newcommand{\ShowTextIndex}{%
\@ifnextchar[{\ShowTextIndex@opt}{\ShowTextIndex@noopt}
}%
\makeatother
\makeindex
\begin{document}
This is a text about \ShowTextIndex{\textcolor{blue}{Einstein}} and his \ShowTextIndex[Theory!of relativy]{theory}
\printindex
\end{document}
如果需要的话,我可以稍后提供屏幕截图,但它显示的是预期的输出。
在我看来,更复杂的技术将使用键值接口,但我现在没有足够的时间。