如何在不标记每个条目的情况下建立索引

如何在不标记每个条目的情况下建立索引

有没有一种方法可以索引长文档而不必查找文本中的每个条目?我正在使用的方法需要在要索引的文本中的每个条目后\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}

如果需要的话,我可以稍后提供屏幕截图,但它显示的是预期的输出。

在我看来,更复杂的技术将使用键值接口,但我现在没有足够的时间。

相关内容