新命令条件

新命令条件

我正在寻找创建一个调整页面布局的命令,这是一个示例:

\newcommand{\margin}{
\pdfpageheight 297mm
\pdfpagewidth 210mm
\pagebreak
\newgeometry{lmargin=31.5mm, rmargin=31.5mm, includemp, marginparsep=5mm, marginparwidth=52mm}
\setlength{\headwidth}{147mm}}

它基本上只是调整边距,使右侧有 52 毫米的边距,然后我还有其他布局,我都用不同的命令调用它们,例如\margin,,,这就给我带来了我的问题。\nomargin\marginlandscape

理想情况下,我只想使用一个命令,例如

\mypagestyle{margin}
\mypagestyle{nomarginlandscape}

但我不知道如何创建这样的命令,我尝试过自己做,也找遍了所有地方,但找不到答案。那么,我该如何编写一个newcommand可以给我所需结果的代码呢?

答案1

您可以使用与之前相同的机制\pagestyle(使用其原始的更简单的定义,这里不进行错误检查)

\def\mypagestyle#1{\csname myps#1\endcsname}

然后只需定义\mypsmargin \mypsnomarginlandscape做任何你想做的事情,然后你就可以使用语法

\mypagestyle{nomarginlandscape}

调用内部命令\mypsnomarginlandscape

答案2

这可能有点过头了,但我通常使用包裹xstring对于这类事情:

进一步增强:

代码:

\documentclass{article}
\usepackage{geometry}
\usepackage{xstring}

\newcommand{\mypagestyle}[1]{%
    \IfStrEq{#1}{margin}{%
       Setting "#1": % Adjust settings here
       \newgeometry{lmargin=31.5mm, rmargin=31.5mm, includemp, marginparsep=5mm, marginparwidth=52mm}
    }{%
       Setting "#1": % Adjust settings here
       \newgeometry{lmargin=31.5mm, rmargin=31.5mm, includemp, marginparsep=5mm, marginparwidth=52mm}    }%
}%

\begin{document}
\mypagestyle{margin}

\mypagestyle{nomarginlandscape}
\end{document}

相关内容