Aclaración sobre argumentos en movimiento

Aclaración sobre argumentos en movimiento

Estaba leyendo latex2esobre el uso de \protect. En la sección 13.8 menciona "expresiones tabulary arrayentornos" como ejemplos de argumentos conmovedores. Esto me sorprendió un poco. ¿Alguien podría aclarar lo que se quiere decir aquí? ¿O por qué es así?

Intenté experimentar, como

\documentclass{article}
\usepackage{etoolbox}

\makeatletter

\newcommand\ae@suchthat{\mid}
\newcommand\set[1]{%%
  \begingroup
    \let\suchthat\ae@suchthat
      \{\,#1\,\}%%
  \endgroup
}

\makeatother

\begin{document}

\begin{tabular}{lc}
This & $\set{x\in X \suchthat x>42}$
\end{tabular}

\end{document}

Pero aquí no parece haber ningún problema. ¿Qué estoy entendiendo mal acerca de frágil versus robusto?

Respuesta1

El manual debe mencionar " @-expresiones en tabulary array", para ser coherente con el manual oficial de Leslie Lamport. He aquí un ejemplo:

\documentclass{article}
\usepackage{graphicx}
\begin{document}

\begin{tabular}{l@{ \resizebox{2mm}{!}{$x$} }l}
A & B \\
C & D
\end{tabular}
\end{document}

terminará con un mensaje de error típico debido a comandos frágiles en argumentos en movimiento:

! Use of \@array doesn't match its definition.
\@ifnextchar ... \reserved@d =#1\def \reserved@a {
                                                  #2}\def \reserved@b {#3}\f...
l.5 ...in{tabular}{l@{ \resizebox{2mm}{!}{$x$} }l}

Si lo usamos \protect\resizeboxno obtenemos ningún error.

Citando de “LaTeX, un sistema de preparación de documentos”, página 168:

C.1.3 Comandos frágiles

Los comandos se clasifican comorobustoyfrágil. [...] Los siguientes son todos los comandos y entornos con argumentos en movimiento:

  • [...]

  • Un @en arrayo tabularentorno. (Aunque @no es un comando, los comandos frágiles en una @expresión - deben \protectejecutarse como si estuvieran en un argumento en movimiento).

información relacionada