Considere o seguinte MWE:
\documentclass[a4paper,10pt]{article}
\newcommand{\macro}[2][]{%
& something & #2 & #1 \\
}
\begin{document}
\begin{tabular}{lccc}
\macro{3}{4}
\end{tabular}
\end{document}
A saída que ele produz é algo como:
something 3
4
Por que colocar está 4
no início de uma nova linha em vez de no final da linha anterior? Como posso consertar isso?
Já vi que colocar \\
dentro do tabular ao invés da macro faz as coisas funcionarem:
\documentclass[a4paper,10pt]{article}
\newcommand{\macro}[2][]{%
& something & #2 & #1
}
\begin{document}
\begin{tabular}{lccc}
\macro{3}{4}\\
\end{tabular}
\end{document}
No entanto, não é isso que eu quero. Estou definindo um novo ambiente que usa nos bastidores, tabular
mas não quero que sua interface dependa de colocação //
e &
explicitamente, quero-os escondidos dentro de macros.
Responder1
A macro \macro
(sic!) é definida para ter um argumento opcional. Caso falte, a chamada \macro{3}{4}
é a mesma \macro[]{3}
e a figura 4
será lida para a próxima linha tabular.
A mudança de coluna no uso “errado” é claramente visível. 3
está na 4ª coluna, em vez da 3ª coluna 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}
Responder2
Se você quiser a macro sem o 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}