El valor predeterminado no funciona para el nuevo comando

El valor predeterminado no funciona para el nuevo 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 es un comando en mi paquete que uso como una especie de preámbulo.

Lo que me importa aquí es mi valor predeterminado para el comando de geometría, el valor predeterminado no se utiliza cuando uso el comando:

\initialize[]{}

Cualquier ayuda sobre cómo hacer que funcione mi valor predeterminado sería excelente.

Respuesta1

Es difícil adivinar qué estás haciendo sin un código que funcione (o esté roto), pero:

  • \initialize[]{}pasa dos argumentos --- no uno. Ambos argumentos están vacíos. Como se especifican ambos, no se utiliza el valor predeterminado.
  • Úselo \initialize{}para invocar el valor predeterminado.

Respuesta2

No creo que estés usando el método correcto.

El argumento obligatorio \initializeparece simplemente distinguir si está vacío o no y no se usa.

Suponiendo que la inicialización debería funcionar

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

deberías estar mejor atendido con

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

Por lo tanto, una llamada como \initializeestablecerá el valor predeterminado deseado, con cero \parindent, mientras que \initialize*establecería la geometría predeterminada y \parindenten 12 puntos. Con

\initialize[tmargin=2in]

anularía el tmarginvalor predeterminado y conservaría los demás valores. De manera similar para

\initialize*[tmargin=2in]

eso haría lo mismo excepto configurarlo \parindenten 12 puntos.

información relacionada