我正在基于该类编写一个文档类book
。在这个类中我有一些代码如下:
\RequirePackage[total={10cm,18cm},paperwidth=16cm, paperheight=23cm]{geometry}
\RequirePackage[cross,center,noinfo,a4]{crop}
我想为我的类定义一个选项,nocrop
这样当我使用它时,上面的代码就会变成下面的代码:
\RequirePackage[total={10cm,18cm}]{geometry}
%\RequirePackage[cross,center,noinfo,a4]{crop}
换句话说,我希望该crop
包不被运行并且paperwidth=16cm, paperheight=23cm
被删除。
这可能吗?如果可以,怎么做?
这是我的 MWE:
\RequirePackage{filecontents}
% my class file
\begin{filecontents}{myclass.cls}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{myclass}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{book}}
\ProcessOptions
\LoadClass{book}
\RequirePackage[total={10cm,18cm},paperwidth=16cm, paperheight=23cm]{geometry}
\RequirePackage[cross,center,noinfo,a4]{crop}
\endinput
\end{filecontents}
\documentclass{myclass}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\end{document}
(如果有帮助的话,我在 Windows 机器上使用 XeLaTeX。)
答案1
可以定义一个开关(\ifmyclass@crop
),通过选项进行设置,稍后要求包含正确的包/选项集:
\RequirePackage{filecontents}
% my class file
\begin{filecontents}{myclass.cls}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{myclass}
\newif\ifmyclass@crop
\myclass@croptrue % default
\DeclareOption{nocrop}{\myclass@cropfalse}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{book}}
\ProcessOptions
\LoadClass{book}
\ifmyclass@crop
\RequirePackage[total={10cm,18cm},paperwidth=16cm,paperheight=23cm]{geometry}
\RequirePackage[cross,center,noinfo,a4]{crop}
\else
\RequirePackage[total={10cm,18cm}]{geometry}
\fi
\endinput
\end{filecontents}
\documentclass{myclass}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\end{document}