\meaning\hline

\meaning\hline

Beim Betrachten \hlinebin ich auf ein paar komplexe Teile gestoßen:

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

Es scheint, dass der \@xhlineCode die Bedingung schließt \ifnum. Könnte jemand eine Erklärung dafür geben, was mit{\ifnum 0=`}

Antwort1

Hier ist die Definition in der Quelldatei

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

Die Aufgabe von \hlinebesteht darin, eine horizontale Linie hinzuzufügen und nach einer weiteren Ausschau zu halten \hline. Dazu wird TeX mithilfe von vorübergehend außerhalb der Ausrichtung platziert \noalign. Der Code

\noalign{\ifnum0=`}\fi

öffnet die Tokenliste für \noalign, und die schließende Klammer wird nicht gesehen, da sie Teil eines numerischen Tests ist, der false zurückgibt. TeX erweitert Tokens während des Vorgangs und führt die erforderlichen Zuweisungen durch. Insbesondere \hrulewird ausgeführt und dann \futureletaufgerufen, um zu sehen, ob ein weiterer \hlineBefehl folgt (zum Hinzufügen eines kleinen vertikalen Leerzeichens). Schließlich

\ifnum0=`{\fi}

gefunden, wodurch die Token-Liste geschlossen wird \noalignund TeX wieder mit der Ausrichtung beginnt.

Warum nicht \bgroupund \egroup? Sie würden hier funktionieren, aber es ist vorzuziehen, diese expliziten Klammern zu haben, falls \hlinevorzeitig erweitert wird, sodass der Klammernzähler denkt, sie stünden als Paar auf.

verwandte Informationen