我使用该类exam
用 Latex 制作考试。考试可以是小型考试(期中考试等)的 A3 格式,也可以是 A4 格式。我可以使用包来决定这一点geometry
。我使用一些包和自己的命令,其中一部分命令必须放在geometry
包之前,另一部分必须放在包之后。
我使用包中的“toggle”命令etoolbox
来决定是否采用 A4 格式。当然,此命令必须放在包之前geometry
。
我给出了一个 MWE,你可以尝试这两个命令的效果\toggletrue{A4Exam}
,\togglefalse{A4Exam}
\documentclass[12pt]{exam}
%%\usepackage{PreCommands} %%% Packages and Commands before geometry
\usepackage{etoolbox}
\newtoggle{A4Exam}
\toggletrue{A4Exam}
\togglefalse{A4Exam}
\setlength{\columnseprule}{3pt}
%%% The geometry
\iftoggle{A4Exam}
{\usepackage[total={180mm,255mm},includefoot,includehead,centering,twoside,top=10pt]{geometry}}
{\usepackage[a3paper,landscape,twocolumn,margin=2cm]{geometry}}
%%\usepackage{PostCommands} %%% Packages and Commands after geometry
\begin{document}
First page
\newpage
second page
\end{document}
我的问题是:我怎样才能把所有这些都放在一个包中,并在那里决定我是处于一种情况还是另一种情况?那么,命令\toggletrue{A4Exam}
或如何\togglefalse{A4Exam}
在几何命令之前生效,即使它是在包之后写的(使用一些命令,如\AtBeginDocument
,我尝试过但没有任何结果)?
更准确地说,我想要获得像这样的文件:
\documentclass[12pt]{exam}
\usepackage{MyExamCommands}
\toggletrue{A4Exam}
%\togglefalse{A4Exam} %% These commands must be effective in the beginning of the package MyExamCommands
\begin{document}
First page
\newpage
second page
\end{document}
其中“MyExamCommands”包包含以下命令:
%%\usepackage{PreCommands} %%% Packages and Commands before geometry
\usepackage{etoolbox}
\newtoggle{A4Exam}
\setlength{\columnseprule}{3pt}
%%% The geometry
\iftoggle{A4Exam}
{\usepackage[total={180mm,255mm},includefoot,includehead,centering,twoside,top=10pt]{geometry}}
{\usepackage[a3paper,landscape,twocolumn,margin=2cm]{geometry}}
%%\usepackage{PostCommands} %%% Packages and Commands after geometry
并且命令\toggletrue{A4Exam}...
对几何命令有影响!
答案1
我不确定我是否理解了你的问题。但是你想再次将此定义用于其他文档吗?我制作了类似的东西,保存在 MyExamCommands.sty 文档中,然后加载:
\input{../../0latextemplates/MyExamCommands.sty}
(如果你将文件放在同一目录中,则你将获得:
\input{MyExamCommands.sty}