我想为作业定义一个自定义文档类,可以选择性地传递minionpro
使用 Adobe Minion Pro 字体的参数;如果未设置,fourier
则应使用 Adobe 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
该命令\ifthenelse
在ifthen
包中。如果您想检查布尔值是否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