因此,我尝试通过规定自定义排序规则来改变 xindy 在索引文件中对变音符号进行排序的方式。
这是我使用的 myfile.xdy:
(require "lang/german/duden-utf8-lang.xdy")
(sort-rule "Ä" "Ae")
(sort-rule "Ö" "Oe")
(sort-rule "Ü" "Ue")
(sort-rule "ä" "ae")
(sort-rule "ö" "oe")
(sort-rule "ü" "ue")
以下是文档的一个最小示例:
\documentclass[]{article}
\usepackage{fontspec}
\usepackage[ngerman]{babel}
\usepackage[xindy, splitindex]{imakeidx}
\def\xindylangopt{-M lang/german/myfile}
\makeindex[name=test, options=\xindylangopt]
\begin{document}
foo \index[test]{Aal} \index[test]{Aeal} \index[test]{Äal} \index[test]{Abal} \index[test]{Afal}
\index[test]{Ual} \index[test]{Ueal} \index[test]{Üal} \index[test]{Ubal} \index[test]{Ufal}
\index[test]{Oal} \index[test]{Oeal} \index[test]{Öal} \index[test]{Obal} \index[test]{Ofal}
\printindex[test]
\end{document}
输出结果如下:
但这仍然是原始排序,其中变音符号被视为其各自的元音,即“Ä”被视为“A”等等。我希望它们被视为其各自的元音,后跟字母“e”,即在此示例中,“Äal”将放在“Aeal”和“Afal”之间。我做错了什么?排序规则不能这样覆盖吗?我是否甚至需要为此自定义文件,或者是否已经有执行这种排序的本机模块?
答案1
din5007-utf8-lang.xdy
感谢@Sergei Golovan,我们找到了解决方案。使用-module 而不是duden-utf8-lang.xdy
-module 作为基础似乎就足够了,因为din5007-utf8-lang.xdy
-module 已经按照我试图实现的方式对变音符号进行排序。因此,如果仍需对排序进行其他更改,则需要调整所需的模块。
我的文件.xdy:
(require "lang/german/din5007-utf8-lang.xdy")
some other custom sort-rules
如果不需要对排序进行任何其他更改,则只需更改文档中的 xindy 语言选项,如下所示:
\def\xindylangopt{-M lang/german/din5007-utf8-lang}