預設不適用於新指令

預設不適用於新指令
\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*將預設幾何圖形設為\parindent12pt。和

\initialize[tmargin=2in]

您可以覆蓋tmargin預設值,保留其他值。同樣對於

\initialize*[tmargin=2in]

\parindent除了設定為 12pt之外,效果相同。

相關內容