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