Значение по умолчанию не работает для новой команды

Значение по умолчанию не работает для новой команды
\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.

Связанный контент