仅执行特定选项

仅执行特定选项

我对高级 LaTeX 编码还很陌生,因此可能没有一个非常具体的问题。无论如何,我希望你能帮助我:我想同时维护不同的序言。它们可以看作是不同风格的模板。所以我想创建一个带有选项的包(?),执行给定的模板。我的想法是使用例如来调用这个包\RequirePackage{templates}[Wissenschaft]。我尝试了以下代码来执行包模板

\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{templates}[28.05.2021 templates.sty]
\RequirePackage{ifthen}

\newboolean{Wissenschaftbool}
\DeclareOption{Wissenschaft}{ \setboolean{Wissenschaftbool}{true}}

\newboolean{template1bool}
\DeclareOption{template1}{ \setboolean{template1bool}{true}}

\ExecuteOptions{Wissenschaft}
\ExecuteOptions{template1}

\ProcessOptions\relax

\ifthenelse{\boolean{Wissenschaftbool}}{%
    \RequirePackage{core/Wissenschaft}
}{}
\ifthenelse{\boolean{template1bool}}{%
    \RequirePackage{core/template1}
}{}
\endinput

我的问题是,两个选项总是执行。如果我注释一个选项,代码只会执行一个选项,这正是我想要的。有人能帮我修复代码,以便只执行给定的选项吗?

答案1

你好像想要\ProcessOptions

\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{templates}[2021/05/28 templates]

\newif\iftemplates@Wissenschaft
\newif\iftemplates@templateone

\DeclareOption{Wissenschaft}{\templates@Wissenschafttrue}
\DeclareOption{template1}{\templates@templateonetrue}

\ProcessOptions\relax

\iftemplates@Wissenschaft
  \RequirePackage{templates-Wissenschaft}
\fi
\iftemplates@templateone
  \RequirePackage{templates-template1}
\fi

\endinput

用户将调用

\usepackage[Wissenschaft]{templates}

加载Wissenschaft选项。

如果包的结构中有core子目录,则不需要在\RequirePackage调用时指定它,因为 TeX 系统通常会进行递归搜索。但没有必要使用这样的结构。最好使用特定的名称,如上面的代码所示。

顺便说一下,发布日期应以表格形式指定

YYYY/MM/DD

或者

YYYY-MM-DD

否则 LaTeX 将无法提取它。

相关内容