배열 내부의 매크로 확장

배열 내부의 매크로 확장

나는 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}

이 TeX 조각은 다음과 같이 렌더링됩니다.

1: A
2: B

3: C
4: D
5: B

6: E
7: F
8: F

이제 라인 1과 2가 예상대로 작동하고 재정의한 후 \foo새 값이 인쇄됩니다. 그러나 배열로 래핑하면 5번째 줄이 B내가 예상하는 위치에 인쇄됩니다 D. 매크로는 열거 내부에서 예상대로 작동합니다(6-8행).

B5번째 줄이 매크로 대신에 어떻게 인쇄되고 D매크로 정의를 수정하는 방법은 무엇입니까 ? 배열 내부 확장에 뭔가 이상한 일이 벌어지고 있는 것 같아요. 정렬을 위해 배열을 변경하려고 시도했지만 동일한 문제가 나타납니다.

답변1

이건 완전 예상된거네

\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}

array양식 그룹 의 셀 . 무엇을 달성하려는지는 명확하지 않지만 \foo초월 그룹 의 정의를 \gdef원한다면 \def.

특히 의 역할은 무엇입니까 \bar? \baz별칭으로 정의하는 경우를 제외하고는 절대 사용하지 마세요 .

관련 정보