Padrão não funciona para novo comando

Padrão não funciona para novo comando
\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}
  }%

Este é um comando em meu pacote que eu uso como uma espécie de preâmbulo.

O que me interessa aqui é o meu padrão para o comando de geometria, o padrão não é usado quando eu uso o comando:

\initialize[]{}

Qualquer ajuda sobre como fazer meu padrão funcionar seria ótima.

Responder1

É difícil adivinhar o que você está fazendo sem um código funcionando (ou quebrado), mas:

  • \initialize[]{}passa dois argumentos --- não um. Ambos os argumentos estão vazios. Como ambos são especificados, o padrão não é usado.
  • Use \initialize{}para invocar o valor padrão.

Responder2

Não acho que você esteja usando o método certo.

O argumento obrigatório \initializeparece apenas distinguir se está vazio ou não e não é usado.

Supondo que a inicialização deva fazer

\geometry{tmargin=1in, bmargin=1in, right=0.75in, left=0.75in}
\setlength{\parindent}{0pt}

você deveria ser melhor servido com

\NewDocumentCommand{\initialize}{sO{}}{%
  \IfBooleanTF{#1}{\setlength{\parindent}{12pt}}{\setlength{\parindent]{0pt}}%
  \geometry{tmargin=1in, bmargin=1in, right=0.75in, left=0.75in,#2}%
}

Assim, uma chamada como \initializedefinirá o padrão pretendido, com zero \parindent, enquanto \initialize*definiria a geometria padrão e \parindentcomo 12pt. Com

\initialize[tmargin=2in]

você substituiria o tmarginpadrão, mantendo os outros valores. Da mesma forma para

\initialize*[tmargin=2in]

isso faria o mesmo, exceto definir \parindentpara 12pt.

informação relacionada