有没有一种简单、轻量的方法,可以使用 xindy 而不是 makeindex 来管理多个词汇表和索引?一切作品目前使用 makeindex,但它并不像它应该的那样好。我对现在的情况很满意,但我想尽快开始使用首选工具。显然 xindy 是最佳选择。
我知道一个可能的解决方法是使用 makeindex4,它是 xindy 的包装器,试图像 makeindex 一样运行,但我想避免使用另一个程序,而且 makeindex4 不附带 TexLIVE 2012。
如果有人能告诉我一个类似于词汇表样式“altlist”的 xindy 样式文件,我大概可以从那里进行修改。
有什么想法吗?
提前致谢!
(其他信息:我使用适用于 Mac 的 TexShop 2.47。)(此外,我很喜欢这个网站,发现很多论坛都非常有用。不幸的是,由于我缺乏声誉,我无法投票。我希望投票给答案有助于建立声誉!)
答案1
我不清楚您遇到了什么问题,因此我将为您提供有关如何使用现代LaTeX
引擎(lualatex
或xelatex
)的完整示例xindy
。使用时pdflatex
,重音字符可能会出现一些问题,请参阅这个答案了解详细信息。
因此在我们的示例中,我们有一个包含一些捷克语索引和词汇表条目的 utf8 文件:
\documentclass{article}
\usepackage[]{fontspec}
\usepackage[czech]{babel}
\usepackage[xindy={language=czech, codepage=utf8}, style=altlist]{glossaries}
\usepackage[xindy, splitindex]{imakeidx}
\usepackage[itemlayout=singlepar]{idxlayout}
\setmainfont{TeX Gyre Termes}
\makeglossaries
\def\xindylangopt{-M lang/czech/utf8-lang}
\makeindex[options=\xindylangopt]
\makeindex[name=nameindex,title = Index of names, options=\xindylangopt]
\newglossaryentry{first}{name = ddd, description = {První položka}}
\newglossaryentry{second}{name = čokoláda, description = {Druhá položka}}
\newglossaryentry{third}{name = cosi, description = {Třetí položka}}
\begin{document}
Hello worls, \gls{first}, \gls{second} and \gls{third}
\index[nameindex]{Čapek, Karel}
\index[nameindex]{Hašek, Jaroslav}
\index[nameindex]{Cílek, Václav}
\index[nameindex]{Deml, Jakub}
\index[nameindex]{Chalupa, Václav}
\index{Hello|see{Entry}}
\index{Entry!Subentry}
\index{Entry!Another subentry}
\index{What|textbf}
\printglossary
\printindex[nameindex]
\printindex
\end{document}
一些要点:
\usepackage[xindy={language=czech, codepage=utf8}, style=altlist]{glossaries}
glossaries
包中已经内置了 xindy 支持,我们只需要设置 xindy 选项并传递正确的语言和代码页参数。 makeglossaries
脚本将为我们处理正确的 xindy 调用。
\usepackage[xindy, splitindex]{imakeidx}
...
\def\xindylangopt{-M lang/czech/utf8-lang}
\makeindex[options=\xindylangopt]
\makeindex[name=nameindex,title = Index of names, options=\xindylangopt]
对于索引创建,我们使用imakeidx
包。我们在那里创建两个索引,一个是通用索引,另一个是名称索引。选项将在运行xindy
时自动调用 xindyLaTeX
\xindylangopt
宏定义了xindy 语言处理的选项,-M lang/czech/utf8-lang
将使用xindy 模块对捷克语进行utf8
编码。
两次使用\makeindex
将创建两个索引,有许多选项可用于格式化这些索引,请参阅imakeidx
手册。
例如,我还使用了另一种控制索引外观的方法
\usepackage[itemlayout=singlepar]{idxlayout}
这将导致索引以运行方式出现。我不太喜欢它,我只是想向您展示可以做什么 :)。idxlayout
包确实不是必需的,但也许您会发现它很有用。
现在如何编译示例:
lualatex sample.tex
makeglossaries sample
lualatex -shell-escape sample.tex
第一次lualatex
运行将编写词汇表和索引条目,makeglossaries
脚本将编译词汇表,第二次lualatex
运行带有-shell-escape
选项,因此索引会imakeidx
自动创建。
结果: