
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, \tabular
dass \endtabular
es &
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 \nc
ständig Befehle wie für „neue Spalte“ verwenden)?
- 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.
- 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.
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 tabular
Umgebungen. 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 array
in -Umgebungen, der veralteten eqnarray
Umgebung, einigen der Anzeigemathematikumgebungen des amsmath
Pakets, der IEEEeqnarray
Umgebung des IEEEtrantools
Pakets 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 \&
.