Expansión macro dentro de la matriz

Expansión macro dentro de la matriz

Me quedé atascado con el siguiente fragmento de TeX:

\def\foo{A}
\def\bar{\foo}
\let\baz\bar
1: \baz
\def\foo{B}
\\
2: \baz
\\

\begin{array}[t]{r}
\def\foo{C}
3: \baz
\\
\def\foo{D}
4: \baz
\\
5: \baz
\end{array}

\begin{enumerate}
\def\foo{E}
\item[6:] \baz

\item[7:]
\def\foo{F}
\baz

\item[8:] \baz
\end{enumerate}

Esta pieza de TeX se representa de la siguiente manera:

1: A
2: B

3: C
4: D
5: B

6: E
7: F
8: F

Ahora, las líneas 1 y 2 se comportan como se esperaba, después de redefinirlas \foo, se imprime el nuevo valor. Sin embargo, cuando se envuelve en una matriz, la línea 5 se imprime Bdonde esperaría D. Las macros funcionan como se esperaba cuando se enumeran dentro (líneas 6-8).

¿Cómo es que la línea 5 se imprime como Ben lugar de Dy cómo arreglar la definición de las macros? Supongo que está sucediendo algo extraño con la expansión dentro de la matriz. Intenté cambiar la matriz para alinear pero eso manifiesta el mismo problema.

Respuesta1

Esto es completamente esperado.

\def\foo{A}     % now \foo expands to A
\def\bar{\foo}  % now \bar expands to \foo
\let\baz\bar    % now \baz expands to \foo
1: \baz         % we get \foo, then A
\def\foo{B}     % now \foo expands to B
\\
2: \baz         % we get \foo, then B
\\

\begin{array}[t]{r}
\def\foo{C}     % now \foo expands to C
3: \baz         % we get \foo, then C
\\              % end of cell, \foo reverts to B
\def\foo{D}     % now \foo expands to D
4: \baz         % we get \foo, then D
\\              % end of cell, \foo reverts to B
5: \baz         % we get \foo, then B
\end{array}

\begin{enumerate}
\def\foo{E}     % now \foo expands to E
\item[6:] \baz  % we get \foo, then E

\item[7:]
\def\foo{F}     % now \foo expands to F
\baz            % we get \foo, then F

\item[8:] \baz  % we get \foo, then F
\end{enumerate}

Células en arraygrupos de forma. No está claro qué quiere lograr, pero si desea que la definición de \foogrupos trascienda, necesita \gdefen lugar de hacerlo \def.

En particular, ¿cuál es el papel de \bar? Nunca lo usas, excepto cuando \bazlo defines como un alias.

información relacionada