beamer 如何将关键词(例如“定理”)翻译成非英语语言?

beamer 如何将关键词(例如“定理”)翻译成非英语语言?

以下帖子由三部分组成。第一部分进行了一项实验,证实了translator只有满足某些先决条件时,翻译才能进行。第二部分beamer创建了一个演示文稿,可自动生成翻译。第三部分证明了第二部分中证实的翻译先决条件(即第一部分中确定的先决条件)并未得到满足。然后提出了如何调和这一悖论的问题。附录揭示了谜团的关键,但没有解释“如何”和“为什么”。


第一部分:一个实验

以下实验表明,为了在没有明确命令translator选项translate的情况下将键翻译成非英语语言,必须满足以下两个条件之一:

  1. translator包必须加载非英语语言作为选项。
  2. 必须使用非英语语言调用该translator命令。\languagealias

实验分为三个阶段。第一阶段演示当上述两个条件都不满足时会发生什么。第二阶段展示当两个条件中的第一个满足时会发生什么。第三阶段展示当第二个条件满足时会发生什么。

在实验的第一阶段,以下 LaTeX 代码使用 进行编译。lualatex代码首先创建一本名为 的德语词典Test-German.dict。该词典包含一个键-翻译对:键phrase应翻译为A German phrase。然后创建一篇文章,通过 将其主要语言设置babel为德语。translator包在没有任何选项的情况下加载。然后translator通知包在文档开头加载词典Test-German.dict。然后文档开始,并包含一个命令,指示translator包翻译键phrase

\begin{filecontents*}[overwrite]{Test-German.dict}
\providetranslation{phrase}{A phrase in German}
\end{filecontents*}

\documentclass{article}
\usepackage[german]{babel}
\usepackage{translator}

\usedictionary{Test}
\uselanguage{German}
\begin{document}

\translate{phrase}

\end{document}

上述代码编译生成的 PDF 文件显示单个单词“phrase”。结论:该\translate命令没有使用词典来翻译关键内容。

在实验的第二阶段,通过将german选项传递给包translator:来修改上述代码\usepackage[german]{translator},然后重新编译代码。生成的 PDF 文件现在显示:“德语短语”。结论:该\translate命令使用字典来翻译关键内容。

在实验的第三阶段,我们将上述原始代码修改为将该命令\languagealias{german}{German}作为前导码的最后一条命令插入,然后重新编译代码。得到的PDF文件与第二阶段相同,因此可以得出与第二种情况相同的结论。

实验现已完成。重申这个三阶段实验的结论:为了使translator软件包的translate命令在没有明确命令选项的情况下将密钥翻译成非英语语言,必须满足以下两个条件之一:

  1. translator包必须加载非英语语言的选项。
  2. 必须使用非英语语言调用该translator命令。\languagealias

第二部分:Beamer 演示

现在考虑以下 LaTeX 代码。该代码创建了一个德语beamer演示文稿。德语通过两种方式设置为演示文稿的语言:将其作为类选项传递,然后将其作为选项传递给包babel。然后开始演示文稿的主体。演示文稿由一个包含theorem环境的单个框架组成。

\documentclass[german]{beamer}
\usepackage[german]{babel}
\begin{document}
\begin{frame}
\begin{theorem}
A theorem.
\end{theorem}
\end{frame}
\end{document}

用此代码编译生成的 PDF 文件lualatex由一张幻灯片组成,其中显示两行文本:第一行是“Satz”(德语中“定理”的意思),其下方是“定理”。显然,环境的标题theorem已自动翻译为德语。

根据这篇文章开头描述的实验结果,我得出结论,该beamer包要么translator使用german选项加载包,要么执行命令\languagealias{german}{German},要么to=German作为选项传递给\translate命令。


第三部分:在 Beamer 源代码中搜索先决条件

然而,通过搜索beamer代码证实这些替代方案均不成立:translator包裹已装入这个文件没有任何选项,字符串“languagealias”beamer在源代码中不存在以及命令\translate 从未传递任何选项


那么,“Theorem”一词是如何翻译成德语单词“Satz”的呢?


附录

写完这篇文章后,我又进行了一个小实验,这揭示了这个问题。当实验第一阶段的代码通过german作为类选项传递给article文档类进行修改时,就会进行翻译。所以这是解开谜团的关键。但我想了解背后的机制。我认为这在手册中没有记录translator

答案1

我猜想发生的事情是,后台类选项会自动附加到序言中加载的所有包的选项列表中。因此,具体来说,如果german作为类选项传递给articlebeamer文档类,则\usepackage{translator}命令会自动替换为\usepackage[german]{translator},因此满足了原始帖子中描述的两个先决条件中的第一个,谜团就解开了。

相关内容