Beim Setzen physikalischer oder quantenmechanischer Formeln tauchen dieselben Formen immer wieder auf: die Ableitung d/dx, die partielle Ableitung ∂/∂x, die senkrechten Striche von Betrag oder Norm, Bras und Kets sowie gestapelte Tensorindizes. All das jedes Mal mit \frac oder \left| auszuschreiben ist mühsam. Diese Seite stellt drei Pakete vor, die solche Notation in merkbare Befehle fassen: physics mit einem ganzen Satz von Ableitungen und selbstskalierenden Begrenzern, braket für die Dirac-Bra-Ket-Notation und tensor zum sauberen Ausrichten oberer und unterer Indizes. Sie sind praktisch, aber besonders physics hat Fallstricke, etwa das stille Umdefinieren mancher Standardbefehle; daher betrachten wir Nutzen und Vorsichtspunkte.
Was das Paket physics ist
physics von Sergio C. de la Barrera ist ein Paket, um physikalische Mathematik schnell und lesbar zu setzen. Aktiviert wird es mit der Präambelzeile \usepackage{physics}. Intern benötigt es xparse und amsmath; physics lädt amsmath selbst, daher musst du es nicht zusätzlich nennen. Das Ziel ist klar: Befehlsnamen sollen ihren Zweck zeigen und lange Standardformen wie \frac{\mathrm{d}}{\mathrm{d}x} durch kurze Befehle ersetzen.
\usepackage{physics}Die bereitgestellten Befehle gliedern sich in Gruppen: selbstskalierende Begrenzer (\qty, \abs, \norm, \eval), Vektoranalysis (\grad, \div, \curl, \laplacian), Ableitungen und Differentiale (\dv, \pdv, \dd), Dirac-Notation (\bra, \ket, \braket) sowie Matrixmakros. Im Folgenden gehen wir die im Alltag wichtigsten durch. Das Paket hat außerdem einige Entwurfseigenheiten, die wir am Ende sammeln.
Ableitungen und Differentiale in physics
Das Aushängeschild von physics sind Ableitungen. \dv steht für die gewöhnliche Ableitung, und die Form hängt von der Zahl der Argumente ab. Mit einem Argument, etwa \dv{x}, setzt es den Operator d/dx; mit zwei Argumenten, etwa \dv{f}{x}, setzt es df/dx. Höhere Ordnungen kommen in ein optionales Argument: \dv[2]{f}{x} ist d²f/dx², \dv[n]{f}{x} ist dⁿf/dxⁿ. Das d wird in Zähler und Nenner standardmäßig aufrecht gesetzt; \usepackage[italicdiff]{physics} schaltet auf ein kursives d um.
Die partielle Ableitung ist \pdv und folgt demselben Muster wie \dv. \pdv{f}{x} setzt ∂f/∂x, \pdv[2]{f}{x} setzt ∂²f/∂x². Eine gemischte partielle Ableitung erhält drei Argumente: \pdv{f}{x}{y} ergibt ∂²f/∂x∂y. Das Differentialelement selbst ist \dd: \dd{x} setzt dx mit zum Umfeld passendem Abstand, und \dd[3]{x} setzt d³x; im Integral verwendet man es etwa als \int f(x) \dd{x}.
\[
\dv{f}{x}, \qquad \dv[2]{f}{x}, \qquad
\pdv{f}{x}{y}, \qquad \int_0^1 f(x) \dd{x}
\]Von links nach rechts setzt dieses Beispiel df/dx, die zweite Ableitung d²f/dx², die gemischte partielle Ableitung ∂²f/∂x∂y und ein Integral von 0 bis 1 mit dem Differentialelement dx nach dem Integranden. Für einen inline gesetzten Schrägbruch gibt die Sternform \dv*{f}{x} df/dx in der nebeneinanderstehenden \flatfrac-Form aus.
Selbstskalierende Begrenzer und Bra-Ket in physics
physics bietet außerdem Begrenzer, die automatisch auf die Höhe ihres Inhalts wachsen. \abs{a} setzt den Betrag |a| und \norm{a} die Norm ‖a‖, jeweils passend zum Inhalt, intern ähnlich wie \left…\right. Um die Größe manuell festzulegen, kann man \big, \Big und Verwandte einsetzen, etwa \abs\Big{a}; um die Größe unverändert zu lassen, nutzt man die Sternform \abs*{a}. Der Auswertungsstrich ist \eval; \eval{x}_0^\infty ergibt einen Strich mit unterer und oberer Grenze. Der allgemeine Begrenzer ist \qty(...): \qty(...), \qty[...] und \qty{...} liefern runde, eckige und geschweifte Klammern.
\[
\abs{\frac{a}{b}}, \qquad \norm{\vb{v}}, \qquad
\eval{x^2}_0^\infty, \qquad \qty( \frac{1}{2} )
\]Hier wachsen die Betragsstriche auf die Höhe des Bruchs a/b, die Doppelstriche der Norm umfassen den Vektor v, der Auswertungsstrich steht rechts mit 0 und ∞, und die abschließenden runden Klammern wachsen auf die Höhe des Bruchs 1/2.
In der Dirac-Notation ist das Grundpaar \bra{\phi} und \ket{\psi}. Nach dem Entwurf von physics „kontrahiert“ \bra{\phi}\ket{\psi} ohne Zwischenraum Bra und Ket zu einem inneren Produkt ⟨φ|ψ⟩. Außerdem gibt es \braket{a}{b} für das innere Produkt direkt (→ ⟨a|b⟩), die einargumentige Form \braket{a} (→ ⟨a|a⟩, eine Norm) und \ketbra{a}{b} für das äußere Produkt (→ |a⟩⟨b|, ein Alias von \dyad). Jede Form passt ihre Größe an den Inhalt an; ein Stern schaltet die automatische Skalierung ab.
Auch die Operatoren der Vektoranalysis sind vorhanden. \grad ist der Gradient ∇, \div die Divergenz ∇·, \curl die Rotation ∇× und \laplacian der Laplace-Operator ∇². Sie nehmen eine Funktion als Argument; \grad{\Psi} setzt also ∇Ψ. Die Umdefinition von \div erfordert allerdings Vorsicht, wie der nächste Abschnitt zeigt.
Vorsicht bei physics und Alternativen
physics ist bequem, verlangt aber Vorsicht, weil es Standardbefehle stillschweigend umdefiniert. Das klassische Beispiel ist \div. In Standard-LaTeX ist \div das Divisionszeichen ÷, doch physics ersetzt es durch die Divergenz ∇· und verschiebt das ursprüngliche ÷ nach \divisionsymbol. Ebenso werden trigonometrische Funktionen umdefiniert, sodass \sin und die übrigen automatisch Klammern hinzufügen; mit \usepackage[notrig]{physics} lässt sich das abschalten, und die Originaldefinitionen bleiben unter längeren Namen wie \sine erhalten. Auch \Re und \Im werden ersetzt. Wer das nicht weiß, wundert sich, wenn das gewohnte Symbol nicht erscheint.
Ein weiterer bekannter Fallstrick ist, dass Ableitungen eine folgende geklammerte Gruppe als Argument schlucken. In physics ist eine Klammer direkt nach der Ableitung, etwa \dv{x}(\Psi), als „Langform“ definiert, in der d/dx auf den Klammerinhalt wirkt. Daher zieht \dv{f}{x}(g) das (g) als Argument von \dv ein, statt es als separaten Faktor zu behandeln, und liefert nicht die beabsichtigte Ausgabe. Dieses Verhalten ist auf tex.stackexchange ein wiederkehrendes Thema; es gibt sogar das verbessernde Paket physics-patch. Zur Vermeidung setzt man vor den folgenden Faktor einen Abstand, fügt {} ein oder schreibt die Klammern auf andere Weise.
Auch Paketkonflikte kommen vor. Besonders siunitx, der Standard für Einheitensatz, hat in neueren Versionen einen Mengenbefehl \qty eingeführt, der namentlich mit \qty aus physics kollidiert; das Verhalten hängt von der Ladefolge ab. Aus solchen Gründen hat sich in den letzten Jahren verbreitet, statt physics komplett zu übernehmen, zweckgebundene Pakete zu wählen. Für Ableitungen beherrscht derivative hohe Ordnungen und mehrere Variablen gut; für sauber gesetzte Differentialoperatoren gibt es fixdif; und Zhang Tingxuans physics2 (erstmals 2022 veröffentlicht) zerlegt denselben Bereich in Funktionsmodule wie ab für automatische Klammern, ab.braket, diagmat, xmat und andere, die man einzeln mit \usephysicsmodule{...} lädt.
Auch für selbstskalierende Begrenzer gibt es den Stil, eigene benannte Begrenzer zu definieren, statt physics zu verwenden. Mit \DeclarePairedDelimiter aus mathtools liefert eine einzige Deklaration wie \DeclarePairedDelimiter{\abs}{\lvert}{\rvert} ein eigenes \abs, mit der Wahl zwischen \abs{x} in Standardgröße und \abs*{x} automatisch gestreckt mit \left…\right. Weil dabei kein Standardbefehl überschrieben wird und das Verhalten vorhersehbar bleibt, ist dies in robustheitsorientierten Dokumenten oft vorzuziehen; Details stehen auf der mathtools-Seite.
Das Paket braket
Wenn du nur etwas Dirac-Notation brauchst, ist Donald Arseneaus braket eine handliche Wahl. Es ist kein großes Werkzeugpaket wie physics, sondern ein kleines Paket nur für Bra-Ket- und Mengennotation, geladen mit \usepackage{braket}. Es bietet zwei Befehlsfamilien: die fest großen Kleinbuchstabenformen \bra{ }, \ket{ }, \braket{ }, \set{ }, deren Größe unabhängig vom Inhalt konstant bleibt, und die automatisch streckenden Großbuchstabenformen \Bra{ }, \Ket{ }, \Braket{ }, \Set{ }, die ihren Inhalt intern mit \left…\right umschließen.
Der Vorteil der Großbuchstabenformen ist, dass ein senkrechter Strich |, der direkt im Argument steht, zusammen mit den äußeren Begrenzern wächst. In \Braket wachsen alle inneren | auf die Höhe der Argumente, in \Set wächst der erste |. Für einen Doppelstrich verwendet man \| oder dessen lokalen Alias ||.
\Braket{ \phi | \frac{\partial^2}{\partial t^2} | \psi }
\Set{ x \in \mathbf{R}^2 | 0 < {|x|} < 5 }Im ersten Beispiel wird das Matrixelement ⟨φ| ∂²/∂t² |ψ⟩ um einen partiellen Operator zweiter Ordnung gesetzt; die äußeren Winkelklammern und beide inneren Striche wachsen auf die Höhe des Operators. Das zweite setzt die Menge { x ∈ R² | 0 < |x| < 5 }, wobei die äußeren geschweiften Klammern und der trennende Strich wachsen; das innere |x| ist als {|x|} gruppiert, damit es fest groß bleibt. Anders als physics definiert braket kein äußeres Produkt \ketbra; der Autor empfiehlt stattdessen \ket{ }\bra{ }.
Das Paket tensor
Bei Tensoren mit gemischten oberen und unteren Indizes tragen die horizontale Position und der Abstand der Indizes Bedeutung. In Γ^μ_{νρ} oder R^μ_{ν}{}^ρ_σ müssen obere und untere Indizes beispielsweise von links nach rechts in der richtigen Reihenfolge stehen. Schreibt man ^ und _ schlicht hintereinander, werden sie an derselben Position gestapelt, sodass nicht erkennbar ist, welcher Index zuerst kommt. Das löst Philip G. Ratcliffes tensor-Paket, eine vollständige Überarbeitung von Mike Piffs Original in Version 2.2. Es benötigt keine externen Pakete und wird mit \usepackage{tensor} geladen.
Es gibt zwei zentrale Befehle. Das leichte \indices steht direkt hinter dem Tensorkörper und nimmt nur die Indexfolge. M\indices{^a_b^{cd}_e} setzt zum Beispiel M, gefolgt von oberem a, unterem b, oberem cd und unterem e, alle in ihren korrekten horizontalen Positionen. In der Indexfolge verwendest du ^ für hochgestellt und _ für tiefgestellt direkt; mehrteilige Indizes werden wie ^{cd} in Klammern gruppiert. \sp und \sb erfüllen dieselbe Aufgabe.
Der andere Befehl, \tensor, ist rückwärtskompatibel zu Mike Piffs Original und nimmt Tensorkörper und Indexfolge als getrennte Argumente. \tensor{M}{^a_b^{cd}_e} erzeugt genau dieselbe Ausgabe wie das obige \indices-Beispiel. Der Vorteil von \tensor ist, dass es Indizes vor den Tensor setzen kann: Übergibt man im optionalen ersten Argument eine Präindexfolge, lassen sich Indizes vor und nach dem Körper M ausrichten, etwa mit \tensor[^a_b^c_d]{M}{^e_f^g_h}.
\[
M\indices{^a_b^{cd}_e}, \qquad
\tensor{M}{^a_b^{cd}_e}, \qquad
\tensor[^a_b^c_d]{M}{^e_f^g_h}
\]In allen drei Fällen überlappen obere und untere Indizes nicht, sondern treten von links nach rechts in der korrekten Reihenfolge hervor; nur das letzte Beispiel trägt zusätzlich Indizes vor M. Sowohl \indices als auch \tensor besitzen Sternformen: \indices* und \tensor* ziehen den Abstand zwischen Indizes zu einem eher standardmäßigen Aussehen zusammen. Setzt man außerdem ein * an den Anfang der Indexfolge, werden die folgenden oberen und unteren Paare linksbündig ausgerichtet, was Positionsdrift begrenzen kann.
Zusätzlich ist \nuclide für Text- und Mathematikmodus definiert. \nuclide[14][6]{C} setzt ¹⁴₆C, also Massenzahl 14 und Ordnungszahl 6 links oben und links unten am Elementsymbol C; beide Zahlen sind optional. Mehrteilige Indizes müssen in Klammern gruppiert werden, und Konstrukte wie \mathrm müssen ebenfalls vollständig eingeschlossen sein, etwa in \indices{_{\mathrm{H}}^x}.