\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 \initialize
parece 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 \initialize
definirá o padrão pretendido, com zero \parindent
, enquanto \initialize*
definiria a geometria padrão e \parindent
como 12pt. Com
\initialize[tmargin=2in]
você substituiria o tmargin
padrão, mantendo os outros valores. Da mesma forma para
\initialize*[tmargin=2in]
isso faria o mesmo, exceto definir \parindent
para 12pt.