LaTeX自动生成索引与符号列表

毕业论文或者书籍中常常需要用到自动生成索引与符号列表, 下面我们通过定义命令可以非常方便的实现上述功能.

自动生成索引

定义新命令:

上述命令我们重定义了强调命令\emph, 它带有两个参数[2], 且默认的一个参数为空[], 新定义的强调命令\iemph 在强调的同时将其加入索引. 此外, 若提供第一个参数, 则将索引加到改参数下. 作为例子

第一个命令表示在正文中强调 vector bundle这个词, 同时将其加入到索引; 第二个命令表示在正文中强调 vector bundle这个词, 同时将vector bundle加入到bunlde索引下;

自动生成符号列表

定义新命令

然后, 我们就可以用\mysymbol 来定义符号了. 可以认为它是\newcommand 的变形.

  • 在正文中定义Ad 这个伴随算子的地方, 我们可以用\smbAd 来产生Ad, 同时该命令会将其在符号列表中列出;
  • 在其他不需要加入符号列表的地方, 可以使用\Ad表示伴随算子.

这里, 对命令稍作解释, 我们用了glossaries 宏包的命令, \newglossaryentry{<label>}{name=<name>, text={<text>}, description={<description>}}来定义符号, 同时使用\gls{label}来在正文中引用符号; 其中name表示添加到符号列表时的名字, text表示出现在正文中时的命令, description当然是指对该符号的解释了, 会列在符号列表中, 最后我们还用了sort, 表示符号按照label排序 (值得注意的是, 为了使得符号能够正常排序, 我们需要将符号命名为符号本身字母+区分后缀 的样式, 请参考后面的完整例子). 最后, 我们重新定义了两个命令一个是一该符号label加前缀smb为名称的命令\smb<label> , 一个是label为名称的命令, 他们的区别就是前者会将正文中的符号加入到符号列表, 而后者不会.

一个完整的例子

请用XeTeXfy编译两次以上.

发表评论