一本书的引文、人名和专有名词索引是非常重要的,能够给读者提供很多帮助。在Latex里面,引文比较简单,用bib文件和\cite命令就可以自动完成。索引稍微麻烦一点。
首先,需要一个索引列表,类似下面的定义的每一个人名或者专有名词。
\newglossaryentry{name:Newton}{type=name, name=Newton, text=Newton, description={Isaac Newton(牛顿)}, sort=Newton}
\newglossaryentry{term:经典力学}{type=term, name=经典力学, text=经典力学, description=Classical Mechanics, sort=JingDianLiXue}
\newglossaryentry{term:Newton力学}{type=term, name=Newton力学,text=Newton力学, description=以Newton第二定律为核心的力学, sort=Newton力学, parent=term:经典力学}
其次,需要在正文中功过\gls{name:Newton}使用这些索引项。
接着,只要在Latex的声明部分做过如下的说明,在系统运行下面的命令之后,就会自动产生高质量的索引。
\usepackage[nomain,acronym,xindy,toc, style=alttreehypergroup,nolong,nosuper]{glossaries}
% The alttree type of glossary styles need to know the
% widest entry name for each level
\glssetwidest{term:Lagrangian方程} % level 0 widest name,找出来你的列表中最长(0级索引项)的名字,这样系统好对齐
\glssetwidest[1]{term:Lagrangian方程} % level 1 widest name,找出来你的列表中最长(1级索引项)的名字
\glssetwidest[2]{term:Lagrangian方程} % level 2 widest name,找出来你的列表中最长(2级索引项)的名字\usepackage[xindy]{imakeidx}
\usepackage{listings}
\newglossary[tm]{term}{term}{te}{名词索引}
\newglossary[nm]{name}{name}{na}{人名与常用翻译}
\makeglossaries
编译阶段,在xelatex 文件名以及bibtex 文件名之间,加入运行一个makeglossaries 文件名,就会自动的到索引。为了索引格式正确,需要多次运行xelatex 文件名 这个命令。