使用宏传递到 \geometry{} 选项 - keyval 错误

使用宏传递到 \geometry{} 选项 - keyval 错误

梅威瑟:

\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]\includegraphics 的键值错误:未定义选项

[2]删除嵌套 keyval 中使用 keyval-value 的一级括号

答案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}

比我上面的建议更清楚。

相关内容