Chemische Gleichungen, Molekülgerüste, Feynman-Diagramme der Teilchenphysik - naturwissenschaftliche Abbildungen haben jeweils ihre eigene "Zeichengrammatik". Man könnte sie mit allgemeinem TikZ von Grund auf konstruieren, aber fachspezifische Pakete erlauben genau die Notation, die Chemiker oder Physiker auf Papier verwenden würden, und erzeugen daraus mit kurzem Code korrekte Abbildungen. Diese Seite ordnet die Chemie-Werkzeuge mhchem, chemfig und XyMTeX, die Physik-Werkzeuge tikz-feynman und feynmf sowie modiagram für Molekülorbitaldiagramme danach ein, wofür sie tatsächlich gedacht sind.
Zuerst der Überblick. Selbst innerhalb von "Chemie- und Physikabbildungen" hängt das passende Werkzeug stark davon ab, was Sie erstellen wollen. Die folgende Tabelle ordnet jedes Paket seinem Bereich zu, bevor wir sie einzeln betrachten.
| Paket | Bereich | Was es erzeugt |
|---|---|---|
mhchem | Chemie | Formeln und Gleichungen (H₂O, 2H₂+O₂→2H₂O als Textsatz) |
chemfig | Chemie | Struktur- und Skelettformeln sowie Reaktionsschemata |
XyMTeX | Chemie | Strukturformeln (älter, befehlsbasiert) |
tikz-feynman | Physik | Feynman-Diagramme (TikZ-basiert, automatisches Layout) |
feynmf / feynmp | Physik | Feynman-Diagramme (METAFONT/MetaPost, zwei Durchläufe) |
modiagram | Chem./Phys. | Molekülorbital- bzw. Energieniveaudiagramme |
Formeln und Gleichungen - mhchem
mhchem setzt chemische Formeln und Gleichungen als Text. Es ist nicht für Strukturzeichnungen gedacht, sondern für die chemische Notation, die Sie inline in Prosa oder Mathematik schreiben - etwa H2O oder 2 H2 + O2 -> 2 H2O. Laden Sie es in der Präambel mit \usepackage[version=4]{mhchem} und schreiben Sie den Ausdruck dann in den zentralen Befehl \ce{...} (chemical equation).
Die Stärke von \ce{} liegt darin, dass natürliches Tippen korrekte Chemie ergibt. Eine Ziffer direkt nach einem Elementsymbol wird automatisch zum Index (\ce{H2O} → H₂O), und eine Zahl oder ein Zeichen mit ^ wird zum Ladungsexponenten (\ce{SO4^2-} → SO₄²⁻). Pfeile schreibt man wörtlich - -> (vorwärts), <=> (Gleichgewicht), <- (rückwärts) - und + wird mit dem richtigen Abstand als Addition von Reaktanden gesetzt. Zustände werden in Klammern angehängt, wie in \ce{H2O(l)}; ein Niederschlag ist v, ein entweichendes Gas ^, jeweils durch Leerzeichen abgesetzt (\ce{BaSO4 v}).
\usepackage[version=4]{mhchem}
% ...
\ce{2 H2 + O2 -> 2 H2O}
\ce{CO2 + C ->[\Delta] 2 CO}
\ce{H2O <=> H+ + OH-}
\ce{Ba^2+ + SO4^2- -> BaSO4 v}Diese Beispiele setzen der Reihe nach: die Bildung von Wasser (die Koeffizienten 2 und die Indizes richten sich automatisch aus), Erhitzen (->[\Delta] setzt die Bedingung Δ über den Pfeil), die Autoionisation von Wasser (ein zweiseitiger Gleichgewichtspfeil) und die Fällung von Bariumsulfat (das abschließende v wird zu einem Abwärtspfeil ↓). Ein Pfeil kann zwei Beschriftungen tragen, ->[oben][unten], um Bedingungen oben und unten anzugeben. \ce{} funktioniert sowohl im Fließtext als auch innerhalb von $...$-Mathematik.
mhchem kann Strukturen nicht zeichnen - Bindungslinien und Ringe liegen außerhalb seines Bereichs. Kurze Bindungssymbole wie Einfach- oder Doppelbindungen lassen sich mit \bond zeigen, etwa \ce{C\bond{-}C}, aber für echte Skelettformeln ist als Nächstes chemfig zuständig. (Ein neueres Paket mit ähnlichen Zielen, chemformula, bietet dieselbe Idee über den Befehl \ch{...}.)
Strukturen und Reaktionsschemata - chemfig
chemfig ist das Standardpaket zum Zeichnen von Struktur- bzw. Skelettformeln von Molekülen. Auf TikZ aufbauend beschreibt es ein Molekül fast in einem Zug mit einer Minisprache für Bindungen und Verzweigungen. Geladen wird es einfach mit \usepackage{chemfig}. Der zentrale Befehl ist \chemfig{...}; in den geschweiften Klammern ordnen Sie Atome und Bindungen an.
Der Kern der Grammatik sind Bindungssymbole und Winkel. Bindungen werden mit - (einfach), = (doppelt) und ~ (dreifach) zwischen Atome gesetzt. Die Richtung jeder Bindung steht direkt danach in eckigen Klammern. Eine Ziffer 0-7 wie [2] ist eine vordefinierte Richtung in 45°-Schritten: [0] ist Osten (rechts, 0°), gegen den Uhrzeigersinn ist [2] gerade nach oben (90°), [4] Westen (180°), [6] gerade nach unten (270°). Ein beliebiger Winkel wird mit Doppelpunkt als absoluter Gradwert geschrieben, z. B. [:30]. Eine Verzweigung ist eine geklammerte Gruppe (...), die von der Hauptkette abzweigt.
\usepackage{chemfig}
% ...
% メタン CH4:中心 C に H を 4 方向へ
\chemfig{H-C(-[2]H)(-[6]H)-H}
% ベンゼン環(交互の二重結合)
\chemfig{*6(=-=-=-)}Beim Methan oben setzt H-C zuerst ein Wasserstoffatom westlich des Kohlenstoffs; die beiden Zweige (-[2]H) und (-[6]H) fügen Wasserstoff gerade nach oben und gerade nach unten hinzu; das letzte -H verlängert nach Osten (Standardrichtung) und ergibt das kreuzförmige CH₄. Beim Benzol darunter bedeutet *6(...) einen Sechsring, und =-=-=- im Inneren alterniert Einfach- und Doppelbindungen, wodurch der vertraute sechseckige aromatische Ring entsteht. * erzeugt einen normalen Ring; ** ergibt die aromatische Darstellung mit eingeschriebenem Kreis.
chemfig kann auch Reaktionsschemata zeichnen - Abbildungen, die mehrere Moleküle mit Pfeilen verbinden. Umschließen Sie sie mit \schemestart ... \schemestop, setzen Sie darin Moleküle (\chemfig{...}) und fügen Sie Pfeile mit \arrow ein. Einen Pfeil können Sie wie in \arrow{->[Bedingung]} mit Reagenzien oder Bedingungen beschriften; \arrow{<=>} ergibt einen Gleichgewichtspfeil. Das nächste Beispiel ist ein einfaches Schema A → B.
\schemestart
\chemfig{H-C(-[2]H)(-[6]H)-H}
\arrow{->[\small oxidation]}
\chemfig{O=C(-[2]H)-[6]H}
\schemestopDas erzeugt ein Reaktionsschema von links nach rechts: von der Strukturformel von Methan über einen beschrifteten Pfeil für Oxidation zur Strukturformel von Formaldehyd. chemfig läuft unter pdfLaTeX, LuaLaTeX und XeLaTeX; da es auf TikZ basiert, ist normalerweise keine zusätzliche Treibereinstellung nötig (bei DVI-basiertem pLaTeX dvipdfmx angeben).
Ein weiteres Strukturwerkzeug - XyMTeX
Ein älteres Paket für Strukturformeln ist XyMTeX (von Shinsaku Fujita). Während chemfig in Begriffen von "Bindungen in einem Zug zeichnen" denkt, ruft XyMTeX ganze Ringe und Gerüste als Befehle auf. Bei einem Benzolderivat übergeben Sie zum Beispiel Positionen und Arten der Substituenten als Argumente an einen Spezialbefehl. Seine Stärke liegt darin, komplexe kondensierte Polycyclen und Substitutionsmuster zuverlässig mit festen, strukturierten Befehlen zu setzen.
Geladen wird es mit \usepackage{xymtex}; es bietet unter anderem Befehle für vertikale und horizontale Formen von Benzolringen. Für ganz neue Arbeiten wählen viele chemfig, dessen Notation intuitiver ist und das aktiv gepflegt wird - aber XyMTeX bleibt nützlich für ältere Manuskripte, die darauf aufbauen, oder wenn sein Befehlssystem bereits vertraut ist. Es unterstützt neben dem Standard-LaTeX-Ausgabemodus auch PostScript- und PDF-Modi.
Feynman-Diagramme - tikz-feynman und feynmf
Nun zur Physik. Für Feynman-Diagramme - Darstellungen von Teilchenwechselwirkungen - gibt es zwei Hauptfamilien von Werkzeugen. Die moderne ist tikz-feynman, auf TikZ aufgebaut: Sie deklarieren Vertices und Propagatoren, und es ordnet sie automatisch an. Empfohlen ist das Laden mit Kompatibilitätsschlüssel, \usepackage[compat=1.0.0]{tikz-feynman}.
Für eine schnelle Abbildung verwenden Sie den Einmalbefehl \feynmandiagram. Den Linienstil setzen Sie mit [fermion] (Fermion - gerade Linie mit Pfeil), [photon] (Photon - Wellenlinie), [gluon] (Gluon - Spirale) usw.; Vertices entstehen implizit, indem Sie sie benennen. Für genaue Platzierung öffnen Sie die feynman-Umgebung innerhalb eines tikzpicture, platzieren Vertices mit \vertex und verbinden sie mit \diagram*.
\usepackage[compat=1.0.0]{tikz-feynman}
% ...
% 一発命令:e+ e- → μ+ μ-(光子交換)
\feynmandiagram [horizontal=a to b] {
i1 -- [fermion] a -- [fermion] i2,
a -- [photon] b,
f1 -- [fermion] b -- [fermion] f2,
};Das ist eine typische s-Kanal-Streuung aus dem Lehrbuch: Ein Elektron-Positron-Paar links trifft sich am Vertex a, eine Wellenlinie (ein Photon) verbindet a und b, und rechts spaltet es sich in ein anderes Paar auf. horizontal=a to b ist ein Layouthinweis: "a und b horizontal platzieren". Wichtig: Das automatische Layout benötigt LuaTeX - tikz-feynman verwendet intern einen Lua-Algorithmus. Unter pdfLaTeX läuft es zwar, aber das Layout fällt auf eine rudimentäre Form zurück und es erscheint eine Warnung. Gehen Sie praktisch von LuaLaTeX als Voraussetzung aus.
Die andere Familie ist das klassische feynmf / feynmp. Jedes Diagramm wird separat in METAFONT (feynmf) oder MetaPost (feynmp) gesetzt und das Ergebnis anschließend eingebunden - ein Workflow mit zwei Durchläufen. Diagramme werden in einer fmffile-Umgebung nach Dateinamen gruppiert; innerhalb eines fmfgraph (oder fmfgraph*) geben Sie äußere Linien mit \fmfleft und \fmfright und Linien mit \fmf{...} an. Der erste LaTeX-Lauf schreibt die Diagrammdefinitionsdateien, mf/mpost wandelt sie in eine Schrift bzw. Abbildung um, und der zweite Lauf bindet sie ein.
\usepackage{feynmp-auto}
% ...
\begin{fmffile}{myfd}
\begin{fmfgraph*}(120,80)
\fmfleft{i1,i2}
\fmfright{o1,o2}
\fmf{fermion}{i1,v1,o1}
\fmf{photon}{v1,v2}
\fmf{fermion}{i2,v2,o2}
\end{fmfgraph*}
\end{fmffile}Dies zeichnet dieselbe Streuung mit feynmp. Mit feynmp-auto lässt sich der MetaPost-Schritt automatisieren, wodurch der manuelle Zweipassablauf leichter wird. feynmf/feynmp sind ausgereift, erzeugen schöne Ausgaben und werden in älteren Arbeiten und TeX-Umgebungen weiterhin breit genutzt - bringen aber den zusätzlichen Schritt des Aufrufs von MetaFont/MetaPost mit. Als Faustregel: Für neue Arbeiten das bequeme tikz-feynman; für Bestandsmaterial oder minimale Abhängigkeiten die feynmf-Familie.
MO- und Energieniveaudiagramme - modiagram
An der Grenze zwischen Chemie und Physik stehen Molekülorbitaldiagramme (MO-Diagramme) - Darstellungen, die zeigen, wie Atomorbitale (AOs) zu bindenden und antibindenden Molekülorbitalen (MOs) kombiniert werden, vertikal nach Energie gestapelt. Das dafür gebaute Paket ist modiagram, ebenfalls auf TikZ basierend. Laden Sie es mit \usepackage{modiagram}; innerhalb der MOdiagram-Umgebung beschreiben Sie die linken und rechten Atomorbitale mit \atom und die verbindenden Molekülorbitale mit \molecule.
\usepackage{modiagram}
% ...
\begin{MOdiagram}
\atom{left}{ 1s = {0; up} }
\atom{right}{ 1s = {0; up} }
\molecule{ 1sMO = {1; pair, } }
\end{MOdiagram}Dies ist das einfachste MO-Diagramm, für das Wasserstoffmolekül H₂. \atom{left} und \atom{right} setzen jeweils ein Elektron mit Spin nach oben in ein 1s-Orbital ({0; up}, wobei 0 das Energieniveau ist), und \molecule fasst beide zu einem bindenden Orbital mit einem Elektronenpaar (pair) zusammen. Wenn Sie nur die Besetzung (up, down, pair) und die Höhen der Niveaus als Argumente angeben, entsteht ein Niveaudiagramm aus horizontalen Linien und Spinpfeilen. Solche Energieniveaudiagramme lassen sich auch mit reinem TikZ zeichnen, aber da modiagram auf MO-Konventionen spezialisiert ist, setzt es diese Standardfiguren knapper und korrekter.
Auswahl und Hinweise zur Kompilierung
Zum Schluss die praktische Leitlinie. Sie können direkt nach dem gewünschten Ergebnis wählen. Für chemische Formeln und Gleichungen im Fließtext: mhchem; für Strukturen und Reaktionsschemata: chemfig (oder XyMTeX, wenn ein befehlsbasierter Ansatz für komplexe kondensierte Ringe passt); für Feynman-Diagramme: tikz-feynman (oder feynmf/feynmp für ältere Umgebungen und Bestandsmanuskripte); für MO-Diagramme: modiagram. mhchem und chemfig ergänzen sich, und häufig nutzt man beide in einem Dokument - mhchem für Inline-Gleichungen und chemfig für abgesetzte Skelettformeln.
Beachten Sie auch die Anforderungen an Engine und Durchläufe. Das automatische Layout von tikz-feynman setzt LuaLaTeX voraus; bei anderen Engines verschlechtert sich das Layout. feynmf/feynmp benötigen einen Zweipasslauf mit separatem Aufruf von MetaFont/MetaPost (was feynmp-auto automatisieren kann). chemfig und modiagram sind TikZ-basiert und laufen unter pdfLaTeX, LuaLaTeX oder XeLaTeX - aber TikZ-Abbildungen sind rechenintensiv, und viele davon machen die Kompilierung langsam. Das Zwischenspeichern von Abbildungen mit tikzexternalize oder das separate Kompilieren mit der Klasse standalone hält die Bearbeitung angenehm.