通过类选项在 Babel 中调用语言

通过类选项在 Babel 中调用语言

我正在编写一个应该是双语的论文课程,并且语言应该由用户输入 - 一种是主要语言,另一种是次要语言。

由于文档结构的原因,文档的某些部分以主要语言编写,而其他部分则以次要语言编写。例如,每种语言都有一份摘要。

我的困难在于将语言作为选项传递。我试过了,\PassOptionsToPackage但似乎不起作用,所以我用 if 语句绕过了这个问题,如下所示:

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{bilang-thesis}
\newif\if@portuguese
\newif\if@english
\DeclareOption{portuguese}{\@portuguesetrue\@englishfalse}
\DeclareOption{english}{\@portuguesefalse\@englishtrue}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{book}}
\ProcessOptions\relax
\LoadClass[12pt]{book}
\if@portuguese
    \RequirePackage[english,main=portuguese]{babel}
\else
    \RequirePackage[portuguese,main=english]{babel}
\fi

论文的结构由类定义。这意味着文本块会针对预期的部分自动生成,标签(如部分名称)会通过命令根据指定的语言进行添加\addto\captions。在下面的代码中,我定义了两个命令,一个用于构造摘要,另一个用于打印摘要。

\newcommand*\shortabstract[2]{%
    \chapter*{\abstractname}%
    \label{cha:\abstractname}%
    \addcontentsline{toc}{chapter}{\nameref{cha:\abstractname}}%
    #1%
    \vspace{\baselineskip}%

    \noindent\textbf{\keywordscaption: } #2%
}
\newcommand*\makeabstract{%
    \clearpage%
    \if@portuguese
        \begin{otherlanguage}{portuguese}
            \shortabstract{\@abstract}{\@keywords}
        \end{otherlanguage}
        \cleardoublepage
        \begin{otherlanguage}{english}
            \shortabstract{\@altabstract}{\@altkeywords}
        \end{otherlanguage}
        \cleardoublepage
    \else
        \begin{otherlanguage}{english}
            \shortabstract{\@abstract}{\@keywords}
        \end{otherlanguage}
        \cleardoublepage
        \begin{otherlanguage}{portuguese}
            \shortabstract{\@altabstract}{\@altkeywords}
        \end{otherlanguage}
        \cleardoublepage
    \fi
}

第一个命令只是为了简化第二个命令,因为我无法将语言作为键或定义来调用,例如\@firstlang,并且必须使用 if 来调用不同的\begin{otherlanguage}环境。当我尝试时,babel 会抛出一个错误,提示语言未定义。

所以我想要了解的是在这些 babel 环境中如何将语言作为命令传递,比如第一个语言、第二个语言。

最终希望将语言作为选项来解决,并定义多语言命令,类似于\addto\captions但用于更大的文本块。

谢谢

编辑: 我使用\def\@firstlang{firstlang}来定义语言命令,但正如 Ulrike Fischer 所建议的那样,可以简单地定义\newcommand\firstlang {english}。在回答了第一个问题后,我将主题改为主要问题。

如何将语言作为选项从课堂上传递,尽管语言是未知的。

平均能量损失

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{bilang-thesis}
\RequirePackage{kvoptions}
 \SetupKeyvalOptions{%
   family=BL,
   prefix=BL@,
   }

\DeclareStringOption[firstlang,secondlang]{languages}
\ProcessKeyvalOptions*
\PassOptionsToPackage{\BL@languages}{babel}
\RequirePackage{babel}

我相信这是有效的,但如何选择语言呢?

相关内容