新しいコマンドではデフォルトが機能しない

新しいコマンドではデフォルトが機能しない
\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}
  }%

これは私のパッケージ内のコマンドで、一種の前文として使います。

ここで私が気にしているのは、geometry コマンドのデフォルトです。コマンドを使用するときにデフォルトは使用されません。

\initialize[]{}

デフォルトを機能させる方法についての助言があれば助かります。

答え1

動作する(または壊れた)コードがなければ、何をしているのかを推測するのは難しいですが、

  • \initialize[]{}1 つではなく 2 つの引数を渡します。両方の引数が空です。両方が指定されているため、デフォルトは使用されません。
  • \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]

\parindent12pt に設定する以外は同じ結果になります。

関連情報