Análisis de comandos con múltiples argumentos opcionales

Análisis de comandos con múltiples argumentos opcionales

Algunos comandos de LaTeX aceptan múltiples argumentos opcionales. Aquí hay unos ejemplos:

  • \makebox[<width>][<pos>]{<text>}
  • \framebox[<width>][<pos>]{<text>}
  • \parbox[<pos>][<height>][<contentpos>]{<width>}{<text>}
  • \raisebox{<lift>}[<height>][<depth>]{<text>}
  • \begin{minipage}[<pos>][<height>][<contentpos>]{<width>} <content> \end{minipage}(en realidad un entorno)

(Pero mi pregunta tiene un carácter totalmente general).

Parecería intuitivo que si sólo se proporciona un subconjunto adecuado de argumentos opcionales, se completen comenzando por la izquierda. (<- ¡Tenga en cuenta que esta suposición resulta ser incorrecta!)

¿Pero está el comportamiento documentado en alguna parte? ¿Alguien conoce algún contraejemplo?No hay ninguna razón a priori por la cual todos los comandos seríantenercomportarse así.

Respuesta1

No existe una convención general para interpretar los argumentos opcionales que faltan. Lo que usted toma como ejemplo lo demuestra: no existe un “llenado por la izquierda”, lo cual no tendría mucho sentido.

En algunos casos, el comando se comporta de manera diferente a los que usted cita. Por ejemplo, los comandos de citas biblatextienen la forma

\command[prenote][postnote]{keys}

y la falta de un segundo argumento opcional hace que el primero se interprete como postnote. Esta es una elección hecha por el programador.

Este no es un “contraejemplo”, porque no se puede establecer una regla general.


Los cuatro comandos y el entorno que menciona se describen en el manual de LaTeX, pero la sintaxis extendida, es decir, el segundo y tercer argumento opcional de \parboxy minipage, se describe solo en LaTeX Companion.

  • \makebox[wdth][pos]{text}está en la página 217 del manual de LaTeX. El segundo argumento opcional tiene sentido sólo si se especifica el primero; por defecto es cy también puede ser l, ro s. Significan “centro”, “izquierda”, “derecha” y “extensión”; los tres primeros son casi obvios porque significan cómo se coloca el material con respecto al ancho indicado; el último significa que los espacios en el material se estirarán para llenar el ancho indicado.

  • \frameboxtiene exactamente la misma sintaxis que\makebox

  • \raisebox{raise_len}[width][depth]{text}está en la página 219 del manual de LaTeX. El segundo argumento opcional para indicar la profundidad del cuadro resultante sólo se puede utilizar si se especifica el primero.

  • \parbox[pos][height][inner-pos]{width}{text}se puede encontrar en la página 866 de LaTeX Companion (segunda edición). El manual de LaTeX menciona sólo el primer argumento opcional. Porque minipagelos argumentos tienen exactamente el mismo significado.

¿Qué hacen los argumentos opcionales de \parboxy minipage?

El tercer argumento opcional sólo puede darse si está precedido por los otros dos; el segundo sólo si está precedido por el primero.

El primer argumento opcional puede ser c(predeterminado) to b, indicando cómo se alineará verticalmente el cuadro resultante con respecto al material circundante. Para tel alineamiento será con respecto a la línea base del primer ítem del cuadro, para bel último ítem se utilizará; csignifica que el cuadro está centrado verticalmente, la mitad por encima de la línea de base y la mitad por debajo (casi).

El segundo argumento opcional indica una dimensión vertical para el cuadro. He aquí un ejemplo; \rodsimplemente dibuja una regla de medición con un marcador para la línea de base pegado a su izquierda; \fboxse utiliza para mostrar la extensión del cuadro.

\documentclass{article}
\newcommand{\rod}[2]{%
  \leavevmode\smash\llap{\vrule height .2pt depth .2pt width 4pt \vrule height #1 depth #2}%
}

\setlength{\fboxsep}{0pt}

\begin{document}

\rod{2cm}{0pt}
\fbox{\parbox[b][2cm]{.3\textwidth}{
  Some text\\
  some other text\\
  again
}}

\end{document}

ingrese la descripción de la imagen aquí

Podríamos usar cpara el tercer argumento opcional

\parbox[b][2cm][c]{.3\textwidth}{...}

y obtendríamos

ingrese la descripción de la imagen aquí

Tenga en cuenta que la extensión del cuadro es la misma, solo que el texto del interior se mueve para estar en el centro del espacio disponible. Si no se expresa el tercer argumento, por defecto será el mismo que el primero.

El último argumento opcional también puede ser s, pero se debe proporcionar algún espacio flexible. Por ejemplo

\parbox[b][2cm][s]{.3\textwidth}{
  Some text\\[\fill]
  some other text\\[\fill]
  again
}

produciría

ingrese la descripción de la imagen aquí

Tenga en cuenta que en ninguno de los casos anteriores se tiene en cuenta la profundidad del último elemento de la caja en lo que respecta a la dimensión vertical. En el segundo ejemplo, el cuadro esexactamente2 cm en dirección vertical porque el último elemento es el pegamento de relleno, que no tiene profundidad.

A continuación se muestra un ejemplo combinado de alineación exterior "superior". Se aplican consideraciones similares a las anteriores.

\documentclass{article}
\newcommand{\rod}[2]{%
  \leavevmode\smash\llap{\vrule height .2pt depth .2pt width 4pt \vrule height #1 depth #2}%
}

\setlength{\fboxsep}{0pt}

\begin{document}

\rod{\ht\strutbox}{\dimexpr2cm-\ht\strutbox}
\fbox{\parbox[t][2cm]{.3\textwidth}{
  \strut Some text\\
  some other text\\
  again
}}

\rod{0pt}{2cm}
\fbox{\parbox[t][2cm][b]{.3\textwidth}{
  \strut Some text\\
  some other text\\
  again
}}

\rod{\ht\strutbox}{\dimexpr2cm-\ht\strutbox}
\fbox{\parbox[t][2cm][s]{.3\textwidth}{
  \strut Some text\\
  some other text\\[\fill]
  again
}}

\end{document}

ingrese la descripción de la imagen aquí

información relacionada