¿Por qué esta macro coloca un elemento de una tabla en la fila incorrecta?

¿Por qué esta macro coloca un elemento de una tabla en la fila incorrecta?

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 4coloca 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 4se leerá para la siguiente fila tabular.

El cambio de columna en el uso "incorrecto" es claramente visible. 3está 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}

ingrese la descripción de la imagen aquí

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}

ingrese la descripción de la imagen aquí

información relacionada