\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*
デフォルトのジオメトリとを\parindent
12ptに設定します。
\initialize[tmargin=2in]
デフォルトの を上書きしtmargin
、他の値はそのままにします。同様に
\initialize*[tmargin=2in]
\parindent
12pt に設定する以外は同じ結果になります。