我正在尝试通过使用 LuaLaTex、polyglossia、词汇表 + xindy 转向现代 LaTeX 设置。
当我创建带有词汇表的德语文档时,词汇表的标题正确地更改为“Glossar”,即词汇表的德语翻译。
如果我添加\usepackage{siunitx}
加载 siunitx,翻译将会中断 - 词汇表的标题将变回“词汇表”。示例(使用 lualatex + makeglossaries + lualatex 编译):
\documentclass{article}
\usepackage{fontspec}
\usepackage{polyglossia}
\setdefaultlanguage{german}
\usepackage{siunitx}
\usepackage[xindy]{glossaries}
\makeglossaries
\newglossaryentry{a}{name = ä, description = A Umlaut}
\begin{document}
\printglossaries
Testing the entry: \gls{a}.
\end{document}
删除要加载的行将siunitx
解决此问题,就像使用translator
明确加载(在加载之前siunitx
)一样\usepackage[german]{translator}
。
我相信发生这种情况是因为siunitx.sty
加载时translator
没有任何语言选项\RequirePackage { translator }
。
我不是专家,所以我不确定这种行为是否是可以预料到的。但从用户的角度来看,siunitx 似乎破坏了翻译。这是一个错误吗?如果是,在哪个包中,我应该向谁报告?
还有一件事:xindy 会报告Cannot locate xindy module for language german in codepage utf8
,并切换到语言general
,除非我添加\GlsSetXdyCodePage{duden-utf8}
。这是一个错误吗?
答案1
如果加载,该glossaries
包将用于translator
翻译字符串。该translator
包要求将语言名称作为全局(类)选项给出(这是通常的babel
“最佳实践”)。不幸的是,polyglossia
不使用此方法作为标准,但它会很好地工作。尝试
\documentclass[german]{article}
\usepackage{polyglossia}
\setdefaultlanguage{german}
\usepackage{translator}
\usepackage[xindy]{glossaries}
\makeglossaries
\usedictionary{german}
\newglossaryentry{a}{name = ä, description = A Umlaut}
\begin{document}
\printglossaries
Testing the entry: \gls{a}.
\end{document}
请注意,这实际上并不是因为siunitx
它translator
在可用时会加载而导致的错误:您会在加载任何包时看到相同的情况translator
,或者确实像在我的演示中一样直接加载它。
答案2
您可以明确加载glossaries-polyglossia
包来修复该问题:
\documentclass{article}
\usepackage{fontspec}
\usepackage{polyglossia}
\setdefaultlanguage{german}
\usepackage{siunitx}
\usepackage[xindy]{glossaries}
\usepackage{glossaries-polyglossia}
\makeglossaries
\newglossaryentry{a}{name = ä, description = A Umlaut}
\begin{document}
\printglossaries
Testing the entry: \gls{a}.
\end{document}
在某些情况下,您可能还需要使用translate=false
包选项:
\documentclass{article}
\usepackage{fontspec}
\usepackage{polyglossia}
\setdefaultlanguage{german}
\usepackage{siunitx}
\usepackage[xindy,translate=false]{glossaries}
\usepackage{glossaries-polyglossia}
\makeglossaries
\newglossaryentry{a}{name = ä, description = A Umlaut}
\begin{document}
\printglossaries
Testing the entry: \gls{a}.
\end{document}
尽管这个特定的例子似乎没有它也能工作。