如何从 makeindex 转移到 xindy?

如何从 makeindex 转移到 xindy?

有没有一种简单、轻量的方法,可以使用 xindy 而不是 makeindex 来管理多个词汇表和索引?一切作品目前使用 makeindex,但它并不像它应该的那样好。我对现在的情况很满意,但我想尽快开始使用首选工具。显然 xindy 是最佳选择。

我知道一个可能的解决方法是使用 makeindex4,它是 xindy 的包装器,试图像 makeindex 一样运行,但我想避免使用另一个程序,而且 makeindex4 不附带 TexLIVE 2012。

如果有人能告诉我一个类似于词汇表样式“altlist”的 xindy 样式文件,我大概可以从那里进行修改。

有什么想法吗?

提前致谢!

(其他信息:我使用适用于 Mac 的 TexShop 2.47。)(此外,我很喜欢这个网站,发现很多论坛都非常有用。不幸的是,由于我缺乏声誉,我无法投票。我希望投票给答案有助于建立声誉!)

答案1

我不清楚您遇到了什么问题,因此我将为您提供有关如何使用现代LaTeX引擎(lualatexxelatex)的完整示例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自动创建。

结果:

在此处输入图片描述 在此处输入图片描述 在此处输入图片描述

相关内容