在多语言包中实现语言选项的正确方法是什么?

在多语言包中实现语言选项的正确方法是什么?

我正在编写一个多语言 LaTeX2e 包,用于 pdflatex,其中包含多个宏和环境定义。文档(论文)的主要语言是英语、芬兰语或瑞典语。文档的一页包含一种次要语言的文本,同样是英语、芬兰语或瑞典语。我的问题在某种程度上类似于这里

我已经将主要语言的选择作为我的包的一个选项来实现,然后使用 将其传递给babel\PassOptionsToPackage。然后我将使用 作为默认值处理包选项。但是,指定除全局english语言之外的其他语言(如 say)似乎不会将所选语言传递给while 。这从表格和图中的标题(使用英语而不是芬兰语)以及参考文献列表的标题(在第一种情况下也是英语)中可以看出。english\documentclass[finnish]{article}babel\usepackage[finnish]{mypackage}

经过一番挖掘,我找到了解决问题的方法(一种更优雅的方法,使用标志,然后babel使用适当的选项加载)这里

我的问题是,当在 中指定时,为什么不将\PassOptionsToPackage选项传递给?当同时指定给和时,不会将选项传递给。为什么? 的最小工作包代码是:babel\documentclassfinnish\documentclass\usepackage{mypackage}mypackage.sty

\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mypackage}[2013/09/26 Version 0.01]

\DeclareOption{english}{%
  \PassOptionsToPackage{english}{babel}
%  \AtEndOfClass{\main@language{english}}
}
\DeclareOption{finnish}{%
  \PassOptionsToPackage{finnish}{babel}%
%  \AtEndOfClass{\main@language{finnish}}
}
\DeclareOption{swedish}{%
  \PassOptionsToPackage{swedish}{babel}%
  %\AtEndOfClass{\main@language{swedish}
}
\ExecuteOptions{english}% Default package options
\ProcessOptions \relax

\RequirePackage{babel}%
\RequirePackage[latin1]{inputenc}%
\RequirePackage[T1]{fontenc}%

\endinput

以下是一个不太简单的 LaTeX 文件,其中显示了错误语言的标题和参考列​​表:

% This works when \AtEndOfClass{\main@language{...} is uncommented
% but not with \PassOptionsToPackage{finnish}{babel}.
\documentclass[finnish]{article}
\usepackage{mypackage}

% This works with \PassOptionsToPackage{finnish}{babel} uncommented.
% This causes an error with \AtEndOfClass{\main@language{
%\documentclass{article}
%\usepackage[finnish]{mypackage}

\begin{document}

\section{Johdanto}

Tämän tekstin lähteenä oleva tiedosto on opinnäytteen pohja...

\begin{table}[htb]
\caption{\label{taulukko1} Taulukon kirjaintyypin...}
\vspace{1em}
\centering
\begin{tabular}{|c|l|r|}
\hline \textbf{A} & 1 & $e^{j \omega t}$ \\ \hline
\end{tabular}
\end{table}

\subsection*{Lähdeluettelo} 

Viite \cite{bcs} on esimerkki artikkelin esittämisestä lähdeluettelossa.

\begin{thebibliography}{99}

\bibitem{bcs} Bardeen,\ J., Cooper,\ L.\ N. ja Schrieffer,\ J.\ R.
  Theory of Superconductivity. \textit{Physical Review,} 1957, vol.      108, nro~5, s.\ 1175--1204.

\end{thebibliography}

\end{document}

答案1

我的问题是,为什么在指定时不将\PassOptionsToPackage选项传递给 babel \documentclass

当时的想法是没有必要,因为它是一个全局选项,所以包含的包已经可以看到它了。当然,babel 有点特殊,因为它的顺序或选项很重要,最后一个是默认的,这在一般代码中并没有真正处理。

相关内容