\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.