\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之外,其效果相同。