根据选项加载自定义类中的包

根据选项加载自定义类中的包

我想为作业定义一个自定义文档类,可以选择性地传递minionpro使用 Adob​​e Minion Pro 字体的参数;如果未设置,fourier则应使用 Adob​​e Utopia 字体 ()。现在,无论我尝试什么,pdfLaTeX 总是会吐出以下错误:

! LaTeX Error: Missing \begin{document}.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.8 \DeclareOption(mi
                     nionpro){

这里是韋萊斯

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{mwe}[2015/12/07 mwe.cls]

\DeclareOption(minionpro){
    % Adobe Minion Pro font for the document, Euler font for math
    \RequirePackage{MinionPro}
    \RequirePackage{eulervm}
}

\DeclareOption(utopia){
    % Adobe Utopia font for the document
    \RequirePackage{fourier}
}

\ExecuteOptions{utopia}
\ProcessOptions\relax
\endinput

这里麦格

\documentclass{mwe2}
\begin{Document}
content...
\end{Document}

或者,我尝试使用etoolbox包来解决选项内部的包加载问题,但这给了我同样的错误。不过,这里修改后的韋萊斯

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{mwe}[2015/12/07 mwe.cls]
\RequirePackage{etoolbox}

\providebool{minionpro}
\setbool{minionpro}{false}

\DeclareOption(minionpro){
    \setbool{minionpro}{true}
}


\ProcessOptions\relax

\ifthenelse{minionpro}{
    % Adobe Minion Pro font for the document, Euler font for math
    \RequirePackage{MinionPro}
    \RequirePackage{eulervm}
}{
    % Adobe Utopia font for the document
    \RequirePackage{fourier}
}

\endinput

答案1

该命令\ifthenelseifthen包中。如果您想检查布尔值是否bool为真,可以使用该命令\ifthenelse{\boolean{bool}}{}{}。另外我认为您必须在使用该\newboolean命令之前声明布尔值。

此外,正如 Nicola Talbot 在评论中指出的那样,该\DeclareOption命令需要花括号{}而不是()

我认为以下版本mwe.cls应该可以工作:

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{mwe}[2015/12/07 mwe.cls]

\RequirePackage{ifthen}
\newboolean{minionpro}
\newboolean{utopia}


\DeclareOption{minionpro}{%
    % Adobe Minion Pro font for the document, Euler font for math
    \setboolean{minionpro}{true}}

\DeclareOption{utopia}{%
    % Adobe Utopia font for the document
    \setboolean{utopia}{true}}

\ExecuteOptions{utopia}
\ProcessOptions\relax

\ifthenelse{\boolean{minionpro}}{%
    \RequirePackage{MinionPro}
    \RequirePackage{eulervm}}{}
\ifthenelse{\boolean{utopia}}{%
    \RequirePackage{fourier}}{}

\endinput

编辑:以下是使用etoolbox而不是 的替代版本ifthen

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{mwe}[2015/12/07 mwe.cls]

\RequirePackage{etoolbox}
\newbool{minionpro}
\newbool{utopia}

\DeclareOption{minionpro}{%
    % Adobe Minion Pro font for the document, Euler font for math
    \booltrue{minionpro}}

\DeclareOption{utopia}{%
    % Adobe Utopia font for the document
    \booltrue{utopia}}

\ExecuteOptions{utopia}
\ProcessOptions\relax
\ifbool{minionpro}{%
    \RequirePackage{MinionPro}
    \RequirePackage{eulervm}}{}
\ifbool{utopia}{\RequirePackage{fourier}}{}

\endinput

相关内容