梅威瑟:
\documentclass{article}
\usepackage{geometry}
\newcommand{\GeomOpts}{a4paper,vmargin={3cm,3cm}}
\geometry{\GeomOpts}
\begin{document}
\end{document}
由于 \GeomOpts 中的括号,当将其作为参数插入 \geometry 时,其扩展会失败。我确实读过 [1] 和 [2],但我没有找到一种方法来适应我更简单的 \geometry 情况。
我尝试在 \geometry 及其括号前使用 \expandafter。我还尝试使用 xparse 的命令来定义宏/命令,但没有成功。
答案1
你不需要这种技巧。传递给\geometry
命令的选项是累积的。所以你可以简单地说
\geometry{a4paper,vmargin={3cm,3cm}
(我认为这是你的标准)然后在另一个\geometry
命令中添加你喜欢的任何调整。
所以说,
\geometry{a4paper,vmargin={3cm,3cm}
\geometry{headheight=14.5pt}
就像做
\newcommand{\GeomOpts}{a4paper,vmargin={3cm,3cm}}
\expandafter\geometry\expandafter{\GeomOpts,headheight=14.5pt}
我认为这是你的目的。我不明白
\newcommand{\GeomOpts}{a4paper,vmargin={3cm,3cm}}
\expandafter\geometry\expandafter{\GeomOpts}
比我上面的建议更清楚。