我正在编写一个多语言 LaTeX2e 包,用于 pdflatex,其中包含多个宏和环境定义。文档(论文)的主要语言是英语、芬兰语或瑞典语。文档的一页包含一种次要语言的文本,同样是英语、芬兰语或瑞典语。我的问题在某种程度上类似于这里。
我已经将主要语言的选择作为我的包的一个选项来实现,然后使用 将其传递给babel
包\PassOptionsToPackage
。然后我将使用 作为默认值处理包选项。但是,指定除全局english
语言之外的其他语言(如 say)似乎不会将所选语言传递给while 。这从表格和图中的标题(使用英语而不是芬兰语)以及参考文献列表的标题(在第一种情况下也是英语)中可以看出。english
\documentclass[finnish]{article}
babel
\usepackage[finnish]{mypackage}
经过一番挖掘,我找到了解决问题的方法(一种更优雅的方法,使用标志,然后babel
使用适当的选项加载)这里。
我的问题是,当在 中指定时,为什么不将\PassOptionsToPackage
选项传递给?当同时指定给和时,不会将选项传递给。为什么? 的最小工作包代码是:babel
\documentclass
finnish
\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 有点特殊,因为它的顺序或选项很重要,最后一个是默认的,这在一般代码中并没有真正处理。