Considere el siguiente MWE:
\documentclass[a4paper,10pt]{article}
\newcommand{\macro}[2][]{%
& something & #2 & #1 \\
}
\begin{document}
\begin{tabular}{lccc}
\macro{3}{4}
\end{tabular}
\end{document}
El resultado que produce es algo así como:
something 3
4
¿Por qué se 4
coloca al principio de una nueva fila en lugar del final de la fila anterior? ¿Cómo puedo arreglarlo?
Ya he visto que poner el \\
interior de la tabla en lugar de la macro hace que las cosas funcionen:
\documentclass[a4paper,10pt]{article}
\newcommand{\macro}[2][]{%
& something & #2 & #1
}
\begin{document}
\begin{tabular}{lccc}
\macro{3}{4}\\
\end{tabular}
\end{document}
Sin embargo, esto no es lo que quiero. Estoy definiendo un nuevo entorno que se utiliza bajo el capó tabular
, pero no quiero que su interfaz dependa de la colocación //
y &
, explícitamente, los quiero ocultos dentro de las macros.
Respuesta1
La macro \macro
(¡sic!) está definida para tener un argumento opcional. Si falta, la llamada \macro{3}{4}
es la misma \macro[]{3}
y la cifra 4
se leerá para la siguiente fila tabular.
El cambio de columna en el uso "incorrecto" es claramente visible. 3
está en la cuarta columna, en lugar de la tercera columna solicitada.
\documentclass[a4paper,10pt]{article}
\newcommand{\macro}[2][]{%
& something & #2 & #1 \\
}
\begin{document}
Does not work
\begin{tabular}{lccc}
\macro{3}{4}
\end{tabular}
Works
\begin{tabular}{lccc}
\macro[3]{4}
\end{tabular}
\end{document}
Respuesta2
Si quieres la macro sin el argumento opcional:
\documentclass[a4paper,10pt]{article}
\newcommand{\macro}[2]{% notice the lack of the second brackets here
& something & #2 & #1 \\
}
\begin{document}
\begin{tabular}{lccc}
\macro{3}{4}
\end{tabular}
\end{document}