Warum ist & außerhalb von Tabellenumgebungen etwas Besonderes?

Warum ist & außerhalb von Tabellenumgebungen etwas Besonderes?

Betrachten Sie das folgende M(Nicht-)Wir:

\documentclass{standalone}
\begin{document}
Foo & Bar
\end{document}

Der Build schlägt fehl mit

! Misplaced alignment tab character &.

&während beim Entfernen des Zeichens aus dem Code ein vollkommen einwandfreies PDF generiert wird .

Sogar normales TeX verhält sich so und

Foo & Bar
\bye

führt zum gleichen Fehler.

Ich habe es nur &in Tabellen- und Array-Umgebungen gesehen, nie außerhalb davon. Warum ist das so?

Könnte man „eg“ nicht so definieren, \tabulardass \endtabulares &nur innerhalb der Umgebung etwas Besonderes ist und außerhalb dieser Umgebungen nur ein normales Zeichen?

Warum muss &das Dokument außerhalb von Tabellen- und Arrayumgebungen beschädigt werden?

Um die Frage anders zu formulieren: Was zum Teufel ist ein Ausrichtungstabierzeichen und wo platzieren wir es normalerweise?

Antwort1

Nehmen wir an, dass das Format oder der Benutzer den Catcode von & (oder einem anderen Symbol) nicht global auf 4 setzt.

Was wären die Konsequenzen, vorausgesetzt, dass Sie ein solches Zeichen weiterhin lokal haben möchten (und nicht \ncständig Befehle wie für „neue Spalte“ verwenden)?

  1. JedenEine tabellarische Umgebung müsste sicherstellen, dass ein Zeichen als Ausrichtungstabulator festgelegt wird – und sie müssten sich darauf einigen, welches verwendet werden soll. Dies würde eine Menge Patching erfordern. Dies ist natürlich kein Argument dafür, warum dies nicht beim Schreiben des Formats getan wurde.
  2. Dieses Zeichen kann nicht verwendet werden, wenn das Tabellarische im Argument eines Befehls verwendet wird. Beispielsweise würden Sie auf Probleme stoßen, wenn Sie Tabellarisches in Fuß- und Kopfzeilen, in Briefadressen, in Autorenlisten oder in Beamer-Frames verwenden. Natürlich könnte man als Ersatz einen Befehl definieren, aber die Benutzer müssten verstehen, wann dieser Befehl benötigt wird.
  3. Es wäre ziemlich schwierig, die Ausrichtungsregisterkarte lokal zu deaktivieren. Derzeit können Sie beispielsweise problemlos eine Tabelle mit vielen & wie folgt eingeben:

    \documentclass{article}
    
    \begin{document}
    \begingroup
    \catcode`\&=12
    \catcode`!=4
    \begin{tabular}{ll}
    a & b ! c & d
    \end{tabular}
    \endgroup    
    \end{document}
    

    Wenn tabular jedoch den Catcode von & zurücksetzt, funktioniert es nicht mehr. Sie benötigen also einige Hooks, um solche Manipulationen zu ermöglichen – und zwar erneut in jeder tabularähnlichen Umgebung.

Insgesamt würde vieles für Paketautoren und Benutzer viel schwieriger werden. Das Tippen ist leichter zu lernen \&.

Antwort2

Du fragst:

Warum ist & außerhalb von Tabellenumgebungen etwas Besonderes?

Ich finde, die Frage ist nicht gut gestellt. Ich würde sagen, das &ist etwas Besonderesüberall, nicht nur äußere tabularUmgebungen. Der Charakter &hatKategoriecode 4-- „Ausrichtungstabulator“ – in allen TeX- und LaTeX-Formaten, die ich je gesehen habe. Diese Catcode-Einstellung ermöglicht die Verwendung als Ausrichtungstabulatorzeichen nicht nur in tabular-ähnlichen Umgebungen (z. B. tabular*, tabularx, longtable, usw.), sondern auch arrayin -Umgebungen, der veralteten eqnarrayUmgebung, einigen der Anzeigemathematikumgebungen des amsmathPakets, der IEEEeqnarrayUmgebung des IEEEtrantoolsPakets und wahrscheinlich noch einigen weiteren Umgebungen.

Der Vorteil der &standardmäßigen Zuweisung von Catcode 4 besteht darin, dass alle Paketautoren (und, ehrlich gesagt,sollen) schreiben Sie ihren Code unter der Annahme, dass &Catcode 4 hat. Ohne diese Vorgabe würden einige Paketautoren &als Ausrichtungstabulatorzeichen wählen, während andere @oder wer weiß was sonst wählen würden. Ein solches Ergebnis wäre für die meisten Benutzer deutlich schlechter, da sie sich merken müssten, welches Zeichen oder welche Zeichen in welchen Umgebungen als Ausrichtungstabulatorfunktion dienen.

Umgekehrt muss man es als eingeben, wenn es nichts &Besonderes sein soll – und den Catcode nicht ändern möchte \&.

verwandte Informationen