使用 siunitx + 词汇表 + polyglossia + xindy + LuaLaTeX 时翻译不起作用

使用 siunitx + 词汇表 + polyglossia + xindy + LuaLaTeX 时翻译不起作用

我正在尝试通过使用 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}

请注意,这实际上并不是因为siunitxtranslator在可用时会加载而导致的错误:您会在加载任何包时看到相同的情况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}

尽管这个特定的例子似乎没有它也能工作。

相关内容