
Basierend auf den Antworten aufdiese Frage(über \bigl
, \bigr
, \big
, usw.) unddiese Frage(über \lvert
, \rvert
, |
, usw.), würde ich denken, dass man immer, wenn man einen vertikalen Strich zur Abgrenzung auf der rechten Seite verwendet \rvert
, \bigr\rvert
, , usw. oder \right\rvert
(oder \mright\rvert
) schreiben sollte. Ich habe jedoch das Gefühl, dass ich diese in einigen Antworten gemischt sehe. Nehmen Sie zum Beispiel den Auszug
\right|_{#2} % this is the delimiter
ausdiese Antwortoder der Auszug
\NewDocumentCommand{\evalat}{sO{\big}mm}{%
\IfBooleanTF{#1}
{\mleft. #3 \mright|_{#4}}
{#3#2|_{#4}}%
}
ausdiese AntwortWarum ist es sinnvoll, hier die unterschiedlichen Kombinationen zu verwenden?
Antwort1
OK, die kurze Antwort finden Sie in den Kommentaren. Hier ist dielaaaangeins.
Bitte beachten Sie: Diese Antwort gilt für das Original-TeX von Knuth, für eTeX und für pdfTeX. Ich weiß nicht, wie die Zeicheneingabe im Mathematikmodus und die mathematischen Schriftarten in anderen Satzmaschinen gehandhabt werden.z.B, in XeTeX. Darüber hinaus ist im Prinzip dieEingabencPaket könnte in die unten beschriebenen Prozesse eingreifen, worauf am Ende kurz eingegangen wird.
Bereits vorhandene Antworten, die nützliche Informationen zu diesem Thema geben, sind unter anderem:
Zeichen-Token, ihre mathematischen Codes und Atomarten
Wie Sie wissen, werden die Eingabetoken im „Mathematikmodus“ verarbeitet, wenn TeX eine zu setzende Formel aus der Eingabedatei liest. Die meisten dieser Eingabetoken sind einfache Zeichen wie „x“, „y“, „+“, „=“ usw., die syntaktische Einheiten der Formel darstellen: Beispielsweise sind „x“ und „y“ Variablen, „+“ ist eine binäre Operation, „=“ ist eine Relation usw. Natürlich gibt es auch viele mathematische Symbole, die nicht durch die in normalem Text verwendeten einfachen Zeichen dargestellt werden können und deshalb als Steuersequenzen eingegeben werden: beispielsweise , \sum
, \int
, \cup
, \cap
usw., aber auch \langle
oder \rangle
. Offensichtlich |
fällt in den ersten Fall, während \vert
, \lvert
, und \rvert
in den zweiten.
Unabhängig von der Methode, mit der es eingegeben wird, muss TeX nun für jedes Zeichen, dassetzenIn einer Formel muss es wissen:
woher das Zeichen genommen werden soll, das heißt aus welcher Schriftart und von welcher Position innerhalb dieser Schriftart;
welche Art von syntaktischer Einheit das Zeichen darstellt, das heißt, ob es eine Variable, eine binäre Operation, eine Relation usw. ist.
TeX benötigt die unter 2. genannten Informationen, da der Abstand zwischen benachbarten Zeichen in einer Formel davon abhängt: In der Formel beispielsweise
ax+by=0
darf zwischen den Variablen „a“ und „x“ oder zwischen „b“ und „y“ kein Leerzeichen eingefügt werden. Im Gegenteil, die Symbole „+“ und „=“ müssen durch einen gewissen Abstand von den umgebenden Elementen getrennt sein (tatsächlich erfordert „=“ einen größeren Abstand als „+“).
Nun stellt sich das Problem, wie all diese Informationen für jedes der möglichen Eingabetoken auf flexible und rekonfigurierbare Weise angegeben werden können, sodass beispielsweise die Konvention, dass „+“ ein binärer Operator und „=“ ein Relationssymbol ist, nicht im Code von TeX selbst fest verankert ist. Sie können bereits erraten, dass dies für Steuersequenzen wie
\cup
, \vert
, oder überhaupt kein Problem darstellt \lvert
: Schließlich können Steuersequenzen für beliebige „Programme“ stehen, sodass Sie problemlos beliebig viele Informationen darin unterbringen können (die Einzelheiten sehen wir uns weiter unten an). Aber wie werden diese Informationen für einfache Zeichen wie „x“ oder „+“ (oder „|“) angegeben?
Antwort: Indem jedem Zeichen ein sogenannter „Mathematikcode“ zugeordnet wird. TeX verwaltet intern eine Tabelle mit 256 Einträgen, von denen jeder eine 16-Bit-Ganzzahl enthalten kann (obwohl mit einer Ausnahme tatsächlich nur 15-Bit-Werte verwendet werden): Für jedes Eingabezeichen gibt die im zugehörigen Eintrag enthaltene Ganzzahl die erforderlichen Informationen an. (Dies wird als
\mathcode
Tabelle bezeichnet und ist anderen TeX-Tabellen sehr ähnlich, wie den Tabellen von \catcode
s, von \sfcode
s, von \uccode
s usw., die Sie vielleicht bereits kennen.) Genauer gesagt, wenn wir eine solche Ganzzahl als Zeichenfolge aus vier hexadezimalen Ziffern darstellen
kfpp
mitknur zwischen 0 und 7 variierend, dann:
kgibt demkind des gesetzten Symbols: zum Beispiel 0 = normales Symbol, 1 = großer Operator (wie
\sum
), 2 = binärer Operator und so weiter (sieheDas TeXbook, S. 154, für die vollständige Liste);Fgibt denFont, durch einen indirekten Mechanismus, der hier nicht besprochen wird (und bei dem LaTeX2es NFSS eine Rolle spielt);
ppzeigt diePPosition innerhalb dieser Schriftart.
Die Einzelheiten zur \mathcode
Einrichtung und Verwaltung dieser Tabelle „ “ finden Sie
vielkomplizierter in LaTeX2e als im einfachen TeX-Format, das imDas TeXbook, und es ist nicht möglich, sie hier auch nur zu erwähnen (siehe die NFSS-Dokumentation). Um unsere Frage zu beantworten, genügt es jedoch zu wissen, dass TeX „irgendwo“ nachsehen kann, wenn es wissen muss, waskind des Symbols, das gesetzt werden soll. Fassen wir noch einmal zusammen:
TeX betrachtet die
\mathcode
Tabelle nur, wenn es ein Zeichen-Token im Mathematikmodus verarbeitet (eigentlich sollte diese Aussage verfeinert werden, aber übergehen wir die TeXnicalities);ist dies der Fall, wird der entsprechende Eintrag in der Tabelle gesucht, dessen Inhalt unter anderem angibt, welche Art von syntaktischer Einheit das betreffende Zeichen darstellt;
Ein Atom dieser Art wird schließlich an die aktuelle Mathematikliste angehängt, möglicherweise nachdem ein hochgestellter oder tiefgestellter Index daran angehängt wurde.
Mathematische Zeichen und Atomarten
Im Textmodus können Sie ein zu setzendes Zeichen nicht nur angeben, indem Sie dieses Zeichen wörtlich in die Eingabe aufnehmen, sondern auch mithilfe des
\char
Primitivs, das dem Befehl von LaTeX entspricht \symbol
. Beispielsweise könnten Sie statt bubble
in Ihrer Quelldatei schreiben \char98 u\char98 \char98 le
und genau dasselbe Ergebnis erhalten. Das \char
Primitiv ist natürlich tatsächlich nützlich, wenn Sie ein „seltsames“ Zeichen wie „¿“ setzen müssen.
In ähnlicher Weise können Sie im Mathematikmodus das \mathchar
Primitiv verwenden, um jedes gewünschte mathematische Zeichen (oder mathematische Symbol) anzugeben. Es gibt jedoch einen wichtigen Unterschied zwischen \char
und \mathchar
: Während Sie nach \char
nur eine 8-Bit-Zahl angeben, die nur den internen Code angibt, der das gewünschte Zeichen darstellt, wird nach eine 15-Bit-Ganzzahl erwartet, die genau die gleichen Informationen enthält, die wir in einem Tabelleneintrag \mathchar
finden würden : ein\mathcode
kind, eine SchriftartFFamilie und eine
PPosition, die im exakt gleichen Format angegeben wird. So zum Beispiel
\matchar"1350
ist ein (primitiver) Befehl, der nur im mathematischen Modus gültig ist und TeX anweist, ein Op[erator]-Atom zu konstruieren (k= 1) mit dem Zeichen aus der Schriftart Nummer 3 (F= 3), was auch immer das bedeutet, an Position 80 (pp = 50 hexadezimal). In der üblichen Einstellung stellt sich dies als das Symbol ∑ heraus.
Natürlich \mathchar
werden Befehle nie direkt verwendet, sondern über Steuersequenzen, die als gleichwertige Befehle definiert wurden. Beispielsweise \sum
wurde in der üblichen Einstellung gleichwertig gemacht mit
\mathchar"1350
, und dies erklärt, warum das Eintippen \sum
in Ihre Eingabedatei dazu führt, dass ein Op-Atom mit dem richtigen Symbol an die aktuelle mathematische Liste angehängt wird (mit möglichen hoch-/tiefgestellten Zeichen). Der zu beachtende Punkt ist hier, dass diesmal diekind/Fweiter/PPositionsinformationen werden nicht in einer Tabelle nachgeschlagen, wie im Fall von „nackten“ Zeichen-Token, sondern sind mit dem Befehl selbst verbunden, sei es ein \mathchar
primitiver oder ein höherstufiger Befehl wie \sum
.
Wenn wir nun immer davon ausgehen, dass die üblichen Konventionen in Kraft sind, stellt sich heraus, dasswenn sie allein verwendet werden und nicht nach \left
oder \big
oder
\biggr
oder …:
\vert
ist schließlich gleichwertig mit\mathchar"026A
, also erzeugt es ein Ord[inary]-Atom (k= 0) enthält ein Zeichen, das an einer bestimmten Position in einer bestimmten Schriftart gefunden wird;\lvert
ist schließlich gleichwertig mit\mathchar"426A
, also erzeugt es ein Open[ing]-Atom (k= 4) enthält genau dasselbe Zeichen wie oben;\lvert
ist schließlich gleichwertig mit\mathchar"526A
, also erzeugt es ein Clos[ing]-Atom (k= 5), das wiederum das gleiche Zeichen enthält.
Darüber hinaus kann man erkennen, dass auch das \mathcode
mit dem Zeichen „|“ verknüpft ist "026A
, so dass sich ein einfaches |
in der Eingabe, zumindest wenn es alleine steht und nicht nach \right
oder \Bigm
oder \Biggl
oder…, genauso verhält wie \vert
.
Dies ist jedoch nur eine vereinfachte Version der gesamten Geschichte: Wir werden das Bild in den nächsten beiden Abschnitten vervollständigen.
Trennzeichen
Einige mathematische Symbole, wie Klammern und Wurzelzeichen, wachsen voraussichtlich mit der Größe der Teilformel, die sie umfassen, und erfordern daher eine spezielle Behandlung. Für diese bietet TeX die Konzepte „Trennzeichen“ und „Wurzel“, von denen hier nur das erste von Belang ist.
Auf der primitiven Ebene (sozusagen der Ebene der „Maschinensprache“ von TeX) behandelt TeX ein Symbol nur in wenigen, genau definierten Fällen als Trennzeichen: nach einem
\left
oder \right
-Befehl und in Verbindung mit bestimmten primitiven Befehlen, die mit Brüchen arbeiten. Beispielsweise (
wird für sich allein als „normales“ (dh, kein Trennzeichen) gemäß den oben beschriebenen Regeln, \left(
bewirkt aber, dass TeX die Klammer als „Trennzeichen“ behandelt, also als Zeichen, das wachsen kann. Um ein solches wachsendes Zeichen setzen zu können, benötigt TeX mehr Informationen als im Fall eines „normalen“ Zeichens, da es wissen muss, wo das
andersGrößen des Trennzeichens können gefunden werden. Anstatt also den mathematischen Code ( \mathcode
) für dieses Zeichen zu betrachten, durchsucht TeX eine andere seiner internen Tabellen, die wiederum einen Eintrag für jeden der 256 möglichen Zeichencodes enthält: Jeder Eintrag enthält den sogenannten „Trennzeichencode“ ( \delcode
) des zugehörigen Zeichens, der entweder eine negative Zahl sein kann, für Zeichen wie „x“ oder „+“, die niemals als Trennzeichen fungieren sollten, oder eine nicht negative 24-Bit-Zahl, d. h. eine Folge von sechs hexadezimalen Ziffern
Abonnieren
die zwei Varianten der betreffenden Glyphe angeben, wobei eine zweifache Version einer Konvention verwendet wird, die der in der \mathcode
Tabelle verwendeten ähnelt. Genauer gesagt, die ersten drei Ziffern (fpp) geben die Schriftart anFFamilie und diePPosition, an der die kleinste Größe des Glyphs zu finden ist, und die letzten drei (gqq) geben Sie in ähnlicher Weise an, wo die größeren Größen zu finden sind (eigentlichqqgeben die Position der ersten größeren Variante innerhalb der Schriftart an; es können noch größere Varianten vorhanden sein, die ausgehend von der ersten mithilfe von Informationen gefunden werden können, die in der Schriftartmetrikdatei selbst enthalten sind). Es ist besonders wichtig zu beachten, dass in diesem Fall die Informationen über die syntaktische Natur des vorliegenden Symbolsnichtin seiner enthalten \delcode
, weil es istnichterforderlich: TeX kennt diese Information bereits aus dem Befehl, der die Suche nach einem Trennzeichen ( \left
, \right
, oder anderen, die wir nicht berücksichtigen) veranlasst hat.
Lassen Sie uns dieses Konzept anhand eines Beispiels weiter veranschaulichen: Wenn TeX in der Eingabe auf das Zeichentoken stößt|
von selbst, behandelt es es als „normales“ Symbol: es sucht nach seinem \mathcode
, findet heraus, dass es beispielsweise ist, "026A
und aus der ersten Ziffer des \mathcode
lernt es, dass das vorliegende Zeichen an die aktuelle mathematische Liste als (Inhalt eines) Ord[inary]-Atoms angehängt werden soll; die anderen drei Ziffern des \mathcode
sagen TeX, wo das entsprechende Glyph zu finden ist. Andererseits, wenn TeX auf die Eingabe trifft, sagen wir , \left|
esweiß schon, aus dem \left
Befehl selbst, dass ein öffnender Begrenzer erforderlich ist, und es hat nur das Problem, das Glyph zu finden; hierfür, und nur hierfür, betrachtet es die
\delcode
des folgenden |
, aus dem es die notwendigen Informationen abruft.
Dies funktioniert gut, wenn das Trennzeichen durch ein Zeichentoken angegeben werden kann, wie dies bei runden Klammern ( (
, )
), eckigen Klammern ( [
, ]
) oder senkrechten Strichen ( |
) der Fall ist. Aber was ist mit Trennzeichen wie geschweiften Klammern oder doppelten senkrechten Strichen? Diese werden, wie Sie wissen, durch Steuersequenzen ( \lbrace
, \rbrace
, \Vert
oder deren Synonym \|
) angegeben. Nun, all diese Steuersequenzen sind eigentlich Makros, die zu entsprechenden Aufrufen eines anderen primitiven Befehls namens erweitert werden \delimiter
, der lose analog zu ist \mathchar
.
Der \delimiter
Befehl
Auf den primitiven TeX-Befehl \delimiter
muss eine 27-Bit-Ganzzahl ohne Vorzeichen folgen, die als Zeichenfolge aus sieben hexadezimalen Ziffern dargestellt werden kann.
Abonnieren
mitkvariiert nur zwischen 0 und 7. Dieser Befehl kann an allen Stellen verwendet werden, an denen TeX nach einem Trennzeichen sucht (also nach \left
,
\right
, und mit einigen anderen primitiven Befehlen, die mit Brüchen arbeiten), und in diesem Fall sagen die sechs Ziffern ganz rechts TeX, wo das Glyph für das Trennzeichen zu finden ist, und zwar genau so, wie es ein \delcode
tun würde. Nun,
\left \vert
funktioniert genau so: \vert
ist ein Makro, das zu erweitert wird
\delimiter "026A30C
, daher wird die obige Zeile zu erweitert
\left \delimiter "026A30C
und TeX weiß, dass es (aufgrund des Befehls) ein öffnendes Trennzeichen konstruieren muss,
\left
dessen kleine Variante in fontFamily 2 (TeX weiß, welche Schriftart das ist) beiPPosition 106, und deren erste größere Variante sich in Font 3, Position 12 befindet. Die Frage ist: Was zum Teufel ist die Zifferkbereitgestellt für?
\vert
Nun, wir alle wissen, dass wir nicht nur nach \left
oder \right
(oder \bigl
usw.) sondern auch allein verwenden dürfen , und in diesem Fall ist es völlig gleichwertig mit einem alleinstehenden |
. Dies liegt daran, dass der \delimiter
Befehl auch an Stellen erscheinen darf, an denen TeXnichtnach einem Trennzeichen suchen; in diesem Fall werden die letzten drei hexadezimalen Ziffern der resultierenden Zahl gelöscht und der Befehl verhält sich, als wäre er ein
\mathchar
. Mit anderen Worten, wenn ernichtfolgen \left
usw.
\delimiter "
Abonnieren
wirkt genau wie
\mathchar "
kfpp
Diesmal,es ist von der k-Zifferdass TeX lernt, welche Art von Atom es konstruieren muss, und das ist der Grund, warum es bereitgestellt wird. Sie können also definieren, \vert
dass auf erweitert wird \delimiter "026A30C
, und diese Definition wird in jeder Situation funktionieren.
Endlich die Antwort!
Nun sind wir endlich in der Lage, die gestellte Frage zu beantworten. Betrachten Sie die folgenden Eingabebeispiele:
|
von selbst: TeX betrachtet die\mathcode
mit verknüpften|
, woraus es lerntbeidewo man die entsprechende Glyphe findet Undwelche Art von Atom konstruiert werden soll.\left|
oder\right|
: TeXweiß schondass es ein linkes (bzw. rechtes) Trennzeichen konstruieren muss, und schaut sich das\delcode
von|
nur an, um zu erfahren, wo die erforderlichen Glyphen zu finden sind.\vert
allein: Dies ist ein Makro, das sich zu erweitert\delimiter "026A30C
; in diesem Kontext verhält sich dies so, als wäre es gewesen\mathchar "026A
, und die erste Ziffer der Zahl"026A
teilt TeX mit, welche Art von Atom zu konstruieren ist (die folgenden drei, wo sich das Glyph befindet, wobei in diesem Fall immer die kleine Variante verwendet wird). Ein Ord[inary]-Atom (k = 0) konstruiert.\left\vert
oder\right\vert
: das erste davon wird zu\left \delimiter "026A30C
. TeX weiß bereits, dass ein linkes Trennzeichen verlangt wird, und daherignoriertdie erste Ziffer der Zahl"026A30C
und verwendet die verbleibenden Ziffern, um zu erfahren, wo die benötigten Glyphen zu finden sind. Die Wirkung von\right\vert
ist analog.\lvert
allein: Dies ist ein Makro, das zu erweitert wird\delimiter "426A30C
. In diesem Kontext verhält sich dies so, als wäre es gewesen\mathchar "426A
, und die erste Ziffer der Zahl"426A
teilt TeX mit, welche Art von Atom konstruiert werden soll, was in diesem Fall ein Open[ing]-Atom ist (k = 4); die folgenden drei Ziffern teilen TeX mit, wo das entsprechende Glyph zu finden ist, wobei in diesem Fall immer die kleine Variante verwendet wird.\left\lvert
oder\right\lvert
: das erste davon wird zu erweitert\left \delimiter "426A30C
. TeX weiß bereits, dass ein linkes Trennzeichen verlangt wird, also ignoriert es die erste Ziffer der Zahl"426A30C
und verwendet die verbleibenden sechs nur, um die erforderlichen Glyphen zu finden. Gleiches gilt für\right\lvert
.\rvert
für sich allein: Übung. (Hinweis:\rvert
wird erweitert zu\delimiter "526A30C
;k = 5 bedeutet Clos[ing]-Atom).\left\rvert
oder\right\rvert
: Übung.
Aus dem Obigen sehen wir, dass (unter der Annahme der üblichen \mathcode
s und Definitionen) \left|
, \left\vert
, \left\lvert
, und sogar \left\rvert
alle genau dasselbe sind. Und das Gleiche gilt für \right
.
Was ist mit \bigl
Verwandten?
Die Steuersequenzen \big
, \bigl
, \bigm
, \bigr
, \Big
, usw. sind Makros mit einem Argument, von denen jedes ein Atom einer vorgegebenen Art herstellt, das ein „Pseudo-Trennzeichen“ enthält (dh, kein Trennzeichen im TeXnischen Sinn) einer vorgegebenen Größe; sie tun dies mittels einer \left
… \right
-Konstruktion, die nur eine leere Box der entsprechenden Größe umfasst, die explizit von einem \mathord
,
\mathrel
, \mathopen
, oder \mathclose
-Befehl umschlossen wird ( \mathord
wird eigentlich nicht verwendet, da es „standardmäßig impliziert“ ist). Genauer gesagt, wie Sie sicherlich bereits wissen:
die
\big
,\Big
, …-Reihe erzeugt Ord[inär]atome;die
\bigl
,\Bigl
, …-Reihe erzeugt Open[ing]-Atome;die
\bigm
,\Bigm
, …-Reihe erzeugt Rel[ations]-Atome;die
\bigr
,\Bigr
, …-Reihe erzeugt Clos[ing]-Atome.
Daher wird das Argument hier nur verwendet, um das gewünschte Glyph zu lokalisieren.
Ein Wort zu inputenc
Der Einfachheit halber haben wir in der obigen Beschreibung nicht erwähnt, dass die \mathcode
Tabellensuche nur für Zeichentoken erfolgt, deren Kategoriecode entweder 11 (Buchstabe) oder 12 (andere) ist. Denken Sie daran, dass die
EingabencPaket macht Zeichen an den Positionen 128 … 255 aktiv, und dass Kodierungsdefinitionsdateien einigen dieser aktiven Zeichen eine bestimmte Bedeutung zuweisen können, wenn sie im Mathematikmodus verwendet werden. Natürlich erfolgt die Ersetzung eines solchen aktiven Zeichens durch seine BedeutungVor
die oben beschriebenen Prozesse stattfinden. Um nur ein Beispiel zu nennen, latin1.def
enthält die Datei unter anderem die Erklärung
\DeclareInputMath{177}{\pm}
so dass das Zeichen Nummer 177 im Mathematikmodus immer der Steuersequenz entspricht \pm
. Diese Ersetzung ist natürlich völlig unabhängig von der \mathcode
Maschinerie.
Antwort2
Gustavos Antwort enthält viele interessante Details und es lohnt sich, sie aufmerksam zu lesen. Aber der Großteil der Sache ist ziemlich einfach.
Nach \left
und sind \middle
nur \right
einige Token zulässig:
- ein Zeichen (oder ein Makro, das letztendlich zu einem solchen erweitert wird) mit nichtnegativem
\delcode
; - Ein Makro, dessen endgültige Erweiterung mit beginnt,
\delimiter
gefolgt von einer 27-Bit-Zahl.
\left
Beachten Sie, dass TeX die Erweiterung durchführt , nachdem \middle
oder gescannt wurde \right
, um das erforderliche Zeichen mit nicht negativem \delcode
oder zu finden \delimiter
(was wiederum die Erweiterung auslöst, um nach einer Zahl zu suchen).
Beschränkt man sich auf Standard-TeX/LaTeX (im Gegensatz zu XeTeX/LuaTeX mit ), sind unicode-math
die einzigen Zeichen, die nicht negativ sind,\delcode
( "028300
) "029301
. 0
/ "02F30E
< "26830A
> "26930B
[ "05B302
\ "26E30F
] "05D303
| "26A30C
Ein typisches Makro der zweiten Art wird in einfachem TeX definiert durch
\def\rangle{\delimiter"526930B }
In LaTeX wird dies geschrieben
\DeclareMathDelimiter{\rangle}{\mathclose}{symbols}{"69}{largesymbols}{"0B}
Das ist bloß ein Standardcode, der im Wesentlichen dasselbe ausdrückt (in klarerer Form).
DortIstein wichtiger Unterschied: Anstatt die Zahlen der mathematischen Gruppen (oder Familien) wie in einfachem TeX fest zu verdrahten, verwendet LaTeX symbolische Namen.
A \delcode
ist eine 24-Bit-Zahl; der Unterschied zu einem Code besteht darin , \delimiter
dass die drei ganz linken Bits in einem \delimiter
Code den Typ des Symbols angeben, falls es nicht im Kontext von oder (im Folgenden LMR) verwendet wird \left
. So erstellt zum Beispiel ein\middle
\right
\rangle
SchließenAtom hinsichtlich der Abstände (erste Hexadezimalziffer 5 im Klartext, \mathclose
in LaTeX).
Im Gegenteil, bei der Verwendung in LMR werden diese drei Bits ignoriert, da TeX den Typ bereits kennt (Offen,OrdoderSchließen, bzw.) zuzuweisen. Was die äußersten rechten 24 Bits bedeuten, ist nicht wirklich relevant.
Wie kommen \bigl
, \big
und \bigr
zusammen mit ihren Geschwistern ins Spiel? Sie sind eigentlich \left
verkleidet, aber in einem Typzuweisungsbefehl begraben, bzw. \mathopen
, \mathord
und \mathclose
. Es gibt auch \bigm
, dass baut eineRelAtom auf die gleiche Weise:
\math<X>{\left<token><box>\right.\kern-\nulldelimiterspace}
erfolgt, wobei <token>
das Folgende \big
und Freunde ist, <box>
ein entsprechend großes Kästchen ist (zur Unterscheidung zwischen \big
, \Big
, \bigg
und \Bigg
) und , , oder <X>
ist , je nachdem, welches von , , und (oder Freunden) aufgerufen wird. Insbesondere und Freunde bilden einen LMR-Kontext.open
ord
close
rel
\bigl
\big
\bigr
\bigm
\big
Es gibt überhaupt keinen Unterschied zwischen
\big| \big\lvert \big\rvert
oder zwischen
\bigl| \bigl\lvert \bigl\rvert
Ebenso sind , \left|
und \left\lvert
genau \left\rvert
gleich, da |
, \lvert
und \rvert
alle auf dasselbe Zeichen zeigen (technisch gesehen sind die niederwertigsten 24 Bits im \delcode
oder \delimiter
-Code gleich).
Sie haben vielleicht bemerkt, dass >
und \rangle
sich die 24 niederwertigsten Bits in \delcode
und im \delimiter
Code teilen; dasselbe gilt für <
und \langle
. Dies erlaubt es uns zu sagen
\left<
\bigl<
\Bigl<
(oder sogar \big<
, aber das wäre falsch) anstelle von \langle
; dasselbe gilt für \rangle
.
Die Unterscheidung zwischen |
(oder das Synonym \vert
) \lvert
und \rvert
ist nur dann von Bedeutung, wenn sie nicht in einem LMR-Kontext auftreten.
Das einfachste Beispiel hierfür ist
\log|-2|
\log\lvert-2\rvert
Das Letztere ist richtig. Das Erstere würde dazu führen,
Protokoll
<thinmuskip>
|<medmuskip>
-<medmuskip>
2|
während letzteres die richtige
log|-2|
Fazit: Verwenden Sie es, \bigl\lvert
wenn Sie sich wohler fühlen, es aber \bigl|
kürzer ist und aufs Gleiche hinausläuft.