如何将 xindy 与 XeTeX/LuaTeX 一起使用?

如何将 xindy 与 XeTeX/LuaTeX 一起使用?

根据Xindy 回顾:UTF-8 时代的多语言索引创建(TUGboat), “如果一个人有一个由 [XeTeX] 生成的原始索引文件,那么他就可以使用 xindy;它会‘正常工作’。”

不幸的是我无法让它“正常工作”。如何将 Xindy 与 XeLaTeX 或 LuaLaTeX 一起使用?


LaTeX 文件示例:

\documentclass{article}
\makeindex

\begin{document}
start
\index{a}\index{b}\index{ä}\index{ü}
end
\end{document}

然后 LaTeX Companion (2ed) 告诉我运行

texindy -L german-duden test.idx

但是,当我这样做时,所有变音符号都排在 O 下。

答案1

根据 Ulrike 的回答,这里有一种方法可以调用xindy它来对.idxXe/LuaLaTeX 创建的文件进行排序。诀窍是xindy直接使用(而不是texindy)并传递-C utf8标志。

最小示例

\documentclass{article}
\usepackage{luatextra}
\usepackage{makeidx}
\makeindex
\begin{document}
üäö

start 
\index{a}\index{b}\index{ä}\index{ü}
end

\printindex
\end{document}

汇编

lualatex filename.tex
xindy -M texindy -C utf8 -L german-duden filename.idx 
lualatex filename.tex

您可以按(pdf)latex以下方式使用 UTF-8 编码和 xindy:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{makeidx}
\makeindex

\begin{document}
start
\index{a}\index{b}\index{ä}\index{ü}
end
\printindex
\end{document}

然后只需运行即可texindy -L ⟨language⟩ ⟨filename⟩.idx

在 LuaTeX 中您还可以使用该luainputenc包来使用旧式编码。

\documentclass{article}
\usepackage{fontspec}
\usepackage[utf8]{luainputenc}
\usepackage{makeidx}
\makeindex

\begin{document}
start 
\index{a}\index{b}\index{ä}\index{ü}
end
\printindex
\end{document}

再次运行texindy -L ⟨language⟩ ⟨filename⟩.idx

以下是两个例子的结果:

结果

答案2

这里有一个带有自己的样式文件的示例xindy。使用以下命令运行

lualatex <file>
xindy -C utf8 -I latex -M myModuleE <file>.idx
lualatex <file>

然后我得到附加的输出

\documentclass[]{article}
\usepackage{fontspec}
\usepackage[ngerman]{babel}
\usepackage{filecontents,multicol}
\begin{filecontents*}{myModuleE.xdy}
(define-attributes ("default"))
(define-location-class "page-numbers" ("arabic-numbers"))
(markup-index :open  "~n\begin{theindex}~n"
              :close "~n\end{theindex}~n"
              :tree)
(markup-locclass-list :open "\quad{}")
(markup-locref-list   :sep ", ")
(markup-indexentry :open "~n  \item "           :depth 0)
( define-letter-group "A--D" :prefixes ("A" "B" "C" "D") )
( define-letter-group "E--G" :after "A--D" :prefixes ("E" "F" "G") )
( define-letter-group "H--K" :after "E--G" :prefixes ("H" "I" "J" "K") )
( define-letter-group "L--N" :after "H--K" :prefixes ("L" "M" "N" ) )
( define-letter-group "O--R" :after "L--N" :prefixes ("O" "P" "Q" "R") )
( define-letter-group "S--V" :after "O--R" :prefixes ("S" "T" "U" "V") )
( define-letter-group "W--Z" :after "S--V" :prefixes ("W" "X" "Y" "Z") )
(sort-rule "a" "A")
(sort-rule "b" "B")
(sort-rule "c" "C")
(sort-rule "d" "D")
(sort-rule "e" "E")
(sort-rule "f" "F")
(sort-rule "g" "G")
(sort-rule "h" "H")
(sort-rule "i" "I")
(sort-rule "j" "J")
(sort-rule "k" "K")
(sort-rule "l" "L")
(sort-rule "m" "M")
(sort-rule "n" "N")
(sort-rule "o" "O")
(sort-rule "p" "P")
(sort-rule "q" "Q")
(sort-rule "r" "R")
(sort-rule "s" "S")
(sort-rule "t" "T")
(sort-rule "u" "U")
(sort-rule "v" "V")
(sort-rule "w" "W")
(sort-rule "x" "X")
(sort-rule "y" "Y")
(sort-rule "z" "Z")
(markup-letter-group-list :sep "~n\indexspace")
(sort-rule "Ä" "A")
(sort-rule "ä" "A")
(sort-rule "Ö" "O")
(sort-rule "ö" "O")
(sort-rule "Ü" "U")
(sort-rule "ü" "U")
(merge-rule "\\[a-zA-Z@]+ *" "" :eregexp)
(merge-rule "\\[^a-zA-Z@]" "" :eregexp)
(merge-rule "^[{}$]" "" :eregexp)
\end{filecontents*}
\makeatletter
\renewenvironment{theindex}
  {\raggedright\small\let\item\@idxitem \parskip .0pt\@plus .3\p@\relax
   \begin{multicols}{2}}{\end{multicols}}
\makeatother
\usepackage{makeidx}\makeindex
% xindy -C utf8 -I latex -M myModuleE datei.idx
\begin{document}
\printindex     \newpage  foo \index{ä}\index{ü}
\index{Aal}   \index{Berg}\index{Cäsar}
\index{Donau} \index{Emil}\index{Flora}
\index{Garten}\index{Ober}\index{Zucker}
\index{Österreich}\index{klein}\index{groß}
\end{document}

在此处输入图片描述

答案3

我没有可以工作的 xindy。但是根据这条消息http://sourceforge.net/mailarchive/message.php?msg_id=26841124我认为您至少需要选项 -C utf8,也许还需要一种新的 xindy 风格。

相关内容