\meaning\hline

\meaning\hline

를 보면서 \hline몇 가지 복잡한 부분을 발견했습니다.

\meaning\hline

macro:->\noalign {\ifnum 0=`}\fi \hrule \@height \arrayrulewidth \futurelet
        \reserved@a \@xhline

\meaning\@xhline

macro:->\ifx \reserved@a \hline \vskip \doublerulesep 
        \vskip -\arrayrulewidth \fi \ifnum 0=`{\fi }

\@xhline코드가 조건문을 닫는 것 같습니다 \ifnum. 누군가 무슨 일이 일어나고 있는지 설명을 제공할 수 있습니까?{\ifnum 0=`}

답변1

소스 파일의 정의는 다음과 같습니다.

% latex.ltx, line 5351:
\def\hline{%
  \noalign{\ifnum0=`}\fi\hrule \@height \arrayrulewidth \futurelet
   \reserved@a\@xhline}
\def\@xhline{\ifx\reserved@a\hline
               \vskip\doublerulesep
               \vskip-\arrayrulewidth
             \fi
      \ifnum0=`{\fi}}

의 책임은 \hline수평적 규칙을 추가하고 또 다른 규칙을 기대하는 것입니다 \hline. 이를 위해 TeX는 의 도움을 받아 일시적으로 정렬 외부에 배치됩니다 \noalign. 코드

\noalign{\ifnum0=`}\fi

에 대한 토큰 목록을 열지 \noalign만 닫는 중괄호는 false를 반환하는 숫자 테스트의 일부이기 때문에 표시되지 않습니다. TeX는 진행되는 동안 토큰을 확장하고 필요한 할당을 수행합니다. 특히, \hrule실행된 후 \futurelet다른 명령이 뒤따르는지 확인하기 위해 호출됩니다 \hline(작은 수직 공간을 추가하기 위해). 마지막으로

\ifnum0=`{\fi}

토큰 목록을 닫고 \noalignTeX를 다시 정렬 작업으로 가져옵니다.

왜 안 \bgroup되고 \egroup? 여기서는 작동하지만 \hline조기에 확장되어 중괄호 카운터가 쌍으로 나타나는 것으로 생각하도록 속이는 경우를 대비하여 명시적인 중괄호를 갖는 것이 좋습니다.

관련 정보