默认不适用于新命令

默认不适用于新命令
\newcommand{\initialize}[2][tmargin=1in, bmargin=1in, right=0.75in, left=0.75in]{
    \geometry{#1} 
    \ifthenelse{\equal{#2}{}}{\setboolean{indent}{false}}{\setboolean{indent}{true}}
    \ifthenelse{\boolean{indent}}{}{\setlength\parindent{0pt}}
    % \setlength\parindent{12pt}
  }%

这是我的包中的一个命令,我将其用作前言。

我在这里关心的是几何命令的默认设置,当我使用该命令时不会使用默认设置:

\initialize[]{}

对于如何使我的默认设置正常工作,任何帮助都将非常有用。

答案1

如果没有工作(或损坏)的代码,很难猜测你在做什么,但是:

  • \initialize[]{}传递两个参数 --- 而不是一个。两个参数都是空的。由于两个参数都已指定,因此不使用默认值。
  • 用于\initialize{}调用默认值。

答案2

我认为你没有使用正确的方法。

强制参数似乎\initialize只是为了区分它是否为空并且未被使用。

假设初始化应该做

\geometry{tmargin=1in, bmargin=1in, right=0.75in, left=0.75in}
\setlength{\parindent}{0pt}

你应该更好地服务

\NewDocumentCommand{\initialize}{sO{}}{%
  \IfBooleanTF{#1}{\setlength{\parindent}{12pt}}{\setlength{\parindent]{0pt}}%
  \geometry{tmargin=1in, bmargin=1in, right=0.75in, left=0.75in,#2}%
}

因此,类似这样的调用\initialize将设置预期的默认值为零\parindent,而\initialize*将设置默认几何和\parindent为 12pt。使用

\initialize[tmargin=2in]

您将覆盖tmargin默认值,保留其他值。同样,对于

\initialize*[tmargin=2in]

\parindent除了设置为 12pt之外,其效果相同。

相关内容