Die erste Entscheidung beim Setzen chemischer Formeln in LaTeX betrifft nicht die Schreibweise, sondern das Paket. \ce{H2O} aus mhchem und \ch{H2O} aus chemmacros liefern dasselbe H₂O – doch beide auf naheliegende Weise zusammen zu laden scheitert an ! LaTeX Error: Option clash for package mhchem., in jeder Reihenfolge. Diese Seite geht durch, wie \ce{} Reaktionen, Ladungen, Zustände und Isotope behandelt, wie IUPAC-Nomenklatur gesetzt wird und was sich änderte, als chemmacros mit Version 6 seinen Modulmechanismus aufgab – alles auf TeX Live 2024 kompiliert. Die Notation zum Zeichnen der Strukturen selbst (Bindungszeichen, Winkel, Ringe) gehört der Seite über Chemie- und Physikabbildungen; hier geht es darum, Chemie in ein Dokument einzupassen.
mhchem benutzen: mit \ce{} ist natürliches Tippen bereits richtig
\usepackage{mhchem} laden und alles Chemische in \ce{...} setzen. Das Entwurfsprinzip ist durchgängig: so tippen, wie man es auf Papier schreiben würde, und der Satz stimmt. Eine Ziffer direkt hinter einem Elementsymbol fällt in den Tiefstellungsbereich (\ce{H2O} ergibt H₂O), Zahl und Vorzeichen nach ^ werden zur Ladungshochstellung (\ce{SO4^2-} ergibt SO₄²⁻), -> wird zum Reaktionspfeil und <=> zum Gleichgewichtspfeil. Die eingeklammerten Zustandssymbole (aq), (s), (l) und (g) gehen unverändert durch, ein abschließendes v wird zum Abwärtspfeil eines Niederschlags und ^ zum Aufwärtspfeil eines entweichenden Gases. Die Fassung in TeX Live 2024 ist v4.10 vom 29. Januar 2024 von Martin Hensel.
\usepackage{mhchem}
% ...
\ce{2 H2 + O2 -> 2 H2O} % a balanced reaction
\ce{SO4^2-} % ion with charge
\ce{CO2 + C <=> 2 CO} % equilibrium
\ce{NaCl(aq) + AgNO3(aq) -> AgCl(s) v + NaNO3(aq)} % states, precipitate
\ce{CaCO3 ->[$\Delta$] CaO + CO2 ^} % labelled arrow, gas evolved
\ce{^{227}_{90}Th+} % isotope with mass and atomic number
\ce{CuSO4.5H2O} % the dot becomes a centred dot
\ce{H+ + OH- <=>> H2O} % unequal equilibriumJede Zeile oben wurde auf TeX Live 2024 kompiliert und mit pdftotext überprüft. Pfeile nehmen Beschriftungen in eckigen Klammern; ->[oben][unten] setzt getrennte Bedingungen auf beide Seiten. Isotope schreibt man als \ce{^{227}_{90}Th+}, mit Massen- und Ordnungszahl vor dem Symbol gestapelt, und der Mittelpunkt eines Hydrats stammt unmittelbar vom Punkt in \ce{CuSO4.5H2O}. Neben <=> gibt es <=>> und <<=> für einseitig liegende Gleichgewichte. \ce{} verhält sich im Fließtext und innerhalb von $...$ gleich und lässt sich daher ohne Umstände mitten in einen Absatz setzen.
| Was man tippt | Was herauskommt | Der Gedanke dahinter |
|---|---|---|
H2O | H₂O | Eine Ziffer direkt nach einem Elementsymbol wird tiefgestellt |
SO4^2- | SO₄²⁻ | Zahl und Vorzeichen nach ^ werden zur Ladungshochstellung |
2 H2 + O2 -> 2 H2O | Eine Reaktion mit Koeffizienten und Pfeil | Koeffizienten stehen davor, durch Leerzeichen getrennt; -> ist der Pfeil |
CO2 + C <=> 2 CO | Ein Gleichgewichtspfeil | <=> ist ausgeglichen; <=>> und <<=> neigen sich zu einer Seite |
AgCl(s) v | AgCl(s)↓ | Zustandssymbole gehen unverändert durch; ein abschließendes v ist der Niederschlagspfeil |
CaCO3 ->[$\Delta$] CaO | Ein Δ steht über dem Pfeil | ->[oben][unten] schreibt Bedingungen über und unter den Pfeil |
CuSO4.5H2O | CuSO₄·5H₂O | Der Punkt eines Hydrats wird zum zentrierten Punkt |
Eine kleine Randnotiz: Öffnet man mhchem.sty, stehen die Kontaktdaten des Betreuers in den einleitenden Kommentaren mit ROT13 verschlüsselt, samt Begründung – zur Spamabwehr – und dem Hinweis, im Internet zu suchen, falls einem ROT13 unbekannt ist. Es ist die menschlichste Ecke eines Pakets, das seit über zwanzig Jahren gepflegt wird. Die Umsetzung darunter ist durchweg modern: Sie zieht expl3, l3keys2e, calc, amsmath, chemgreek und graphics von selbst herein. amsmath wird von mhchem geladen und muss nicht selbst angegeben werden.
Wenn Option clash for package mhchem erscheint
Stehen mhchem und chemmacros beide in \usepackage-Zeilen, bricht der Lauf mit ! LaTeX Error: Option clash for package mhchem. ab. Beide Reihenfolgen wurden auf TeX Live 2024 versucht und scheiterten gleichermaßen. Ursache ist, dass chemmacros intern eine Formel-Engine wählt und dabei mhchem mit eigenen Optionen selbst lädt. Die Lösung lautet \usepackage[formula=mhchem]{chemmacros} – das allein beseitigt den Konflikt und lässt \ch{...} von chemmacros im Unterbau auf mhchem laufen. Im Test kompilierten \ch{2 H2 + O2 -> 2 H2O} und \iupac{ethanol} fehlerfrei im selben Dokument.
% WRONG -- fails with "! LaTeX Error: Option clash for package mhchem."
% \usepackage{chemmacros}
% \usepackage{mhchem}
% RIGHT -- let chemmacros load mhchem itself
\usepackage[formula=mhchem]{chemmacros}
% ...
\ch{2 H2 + O2 -> 2 H2O}
\iupac{ethanol}Zwei Meldungen, die chemmacros beim blanken Laden ausgibt, sollte man wiedererkennen. Die erste lautet Package chemmacros Warning: You haven't loaded any package for upright Greek und bedeutet, dass über chemgreek kein Mechanismus für aufrechte griechische Buchstaben gewählt wurde – relevant, sobald das α einer α-Aminosäure zu setzen ist. Die zweite ist die Info-Zeile, die mit Package chemmacros Info: You haven't chosen a formula method so I'm assuming beginnt und genau dem obigen Schlüssel formula= entspricht. Keine der beiden ist ein Fehler, doch wenn Formeln nicht wie erwartet aussehen, sind diese zwei Zeilen die erste Anlaufstelle.
chemmacros v6: die Module gibt es nicht mehr
Jede Beschreibung von chemmacros als Bündel, dessen Module man einzeln lädt, ist überholt. Die Fassung in TeX Live 2024 ist v6.2a vom 11. März 2022 von Clemens Niederberger, und das Paket sagt es selbst: Der Modulmechanismus hat sich mit v6 geändert, alle Module sind in das Hauptpaket eingegangen und bereits vorgeladen, sofern chemmacros nicht mit der Option minimal geladen wurde, und die neue Vorgabe entspricht dem früheren modules=all. \usechemmodule erzeugt heute nur noch diese Warnung und bewirkt nichts. Mit anderen Worten: Die eine Zeile \usepackage{chemmacros} liefert bereits Nomenklatur, Oxidationszahlen, Newman-Projektionen und den Rest. Die voreingestellte Formel-Engine ist chemformula, ein eigenständiges Paket, dessen \ch{...} dem von mhchem ähnelt; chemformula lässt sich auch allein als \usepackage{chemformula} laden.
Für alle, die ein altes Manuskript neu übersetzen, ist gesorgt. Am Kopf von chemmacros.sty stehen \DeclareRelease {v4} {2015-02-08} und \DeclareRelease {v5} {2020-03-07}, und TeX Live liefert tatsächlich chemmacros-2015-02-08.sty und chemmacros-2020-03-07.sty mit. Über LaTeXs Rollback-Mechanismus lässt sich eine ältere Ausgabe per Datum benennen; bricht also eine in der v5-Zeit geschriebene Arbeit unter v6, sollte man erst die alte Fassung festnageln und vergleichen, bevor man umschreibt.
IUPAC-Namen setzen: \iupac und kursive Stereodeskriptoren
Der Name einer organischen Verbindung ähnelt einer Formel darin, dass sein Aussehen durch Konvention festgelegt ist. \iupac{...} kümmert sich um diese Konventionen: Darin ist \- ein Bindestrich, an dem umbrochen werden darf, und \higher{...} setzt einen Stereodeskriptor erhöht und kursiv. \iupac{(1\higher{R},3\higher{S})\-camphor} ergibt (1R,3S)-Campher mit kursivem R und S. Da die Locanten-Bindestriche zugleich Umbruchstellen sind, laufen lange Namen in einem zweispaltigen Aufsatz weit seltener aus der Spalte.
\usepackage[formula=mhchem]{chemmacros}
\usepackage{ghsystem} % needed separately for \ghspic and the H/P statements
% ...
\iupac{2,4,6\-trinitrotoluene} % \- is a breakable hyphen
\iupac{(1\higher{R},3\higher{S})\-camphor} % italic stereodescriptors
\ox{2,Ca} \ox{-2,O} % oxidation numbers, roman
\cip{R,S} % Cahn-Ingold-Prelog descriptors
\latin{in situ} % Latin phrases, per house style
\pH{} \pKa{} \pOH{} % upright p, italic quantity
\newman{0,60,120,180,240,300} % a Newman projectionAlle obigen Befehle liefen auf TeX Live 2024. \ox{2,Ca} setzt eine Oxidationszahl in römischen Ziffern an die Schulter von Ca, \ox{-2,O} bewältigt negative Stufen. \cip{R,S} setzt Cahn-Ingold-Prelog-Deskriptoren, \latin{in situ} setzt lateinische Wendungen nach Hausstil, und \pH, \pKa und \pOH liefern das übliche aufrechte p mit kursivem Größenzeichen. \newman{...} nimmt eine Winkelliste und zeichnet eine Newman-Projektion. Eines braucht Aufmerksamkeit: die GHS-Gefahrenpiktogramme. \ghspic{skull} scheitert unter chemmacros allein an ! Undefined control sequence. – \usepackage{ghsystem} gehört zusätzlich dazu.
Strukturen und Reaktionsschemata: \chemname und die Falle der Pfeilbeschriftung
Die Strukturen selbst zeichnet chemfig – seine Notation aus den Bindungen -, = und ~, den Winkeln 0 bis 7 und Ringen wie *6(...) behandelt die Seite zu Chemie- und Physikabbildungen. Hier geht es um die Schicht, die sie in ein Dokument bringt. \schemestart ... \schemestop baut ein Reaktionsschema: Moleküle nebeneinander stellen und mit \arrow trennen. Jedes Molekül kann über \chemname{\chemfig{...}}{Benzol} einen Namen tragen, sauber unter die Struktur gesetzt. Gesamtmaßstab und Strichstärke legt man gemeinsam fest, etwa mit \setchemfig{atom sep=2em, bond style={line width=1pt}}. Die Fassung in TeX Live 2024 ist v1.66 vom 28. Dezember 2023 von Christian Tellechea.
\usepackage{mhchem}
\usepackage{chemfig}
\setchemfig{atom sep=2em, bond style={line width=1pt}}
% ...
\schemestart
\chemname{\chemfig{*6(-=-=-=)}}{benzene}
% arrow labels are ordinary TEXT: bare "FeBr_3" gives "! Missing $ inserted."
\arrow{->[\ce{Br2}][\ce{FeBr3}]}
\chemname{\chemfig{*6(-=-(-Br)=-=)}}{bromobenzene}
\schemestopBei den Pfeilbeschriftungen lauert eine nachmessbare Falle. Was in den Klammern von \arrow{->[...]} steht, ist gewöhnlicher Text, keine Mathematik. \arrow{->[FeBr_3]} setzt daher ein _ in den Fließtext, und der Lauf kaskadiert von ! Missing $ inserted. über ! Extra }, or forgotten $. und ! Undefined control sequence. bis zur Klage, \node sei undefiniert – die Abbildung ist hin. Eine Beschriftung mit Tiefstellungen gehört in \ce{FeBr3} oder \chemfig{FeBr_3}. \ce{} und chemfig in einem Dokument zu verwenden ist die empfohlene Kombination – etwas anderes als der chemmacros-Konflikt oben – und beide zusammen zu laden lief hier sauber durch. Darüber hinaus fügt \charge freie Elektronenpaare und Ladungen hinzu, \chemabove und \chembelow beschriften ober- und unterhalb eines Atoms, und \polymerdelim zeichnet die Klammern einer Wiederholeinheit.
Welche Pakete also tatsächlich laden
Wer nur Formeln und Gleichungen braucht, lädt allein mhchem. Das ist für die überwiegende Mehrheit der Arbeiten die richtige Antwort, und \ce{} ist der einzige zu lernende Befehl. Kommen Strukturen hinzu, nimmt man mhchem plus chemfig – die beiden vertragen sich, und die übliche Aufteilung lautet \ce{} für die Gleichungen im Fließtext, \chemfig{} für die abgesetzten Skelettformeln. Reicht der Bedarf bis zu Nomenklatur, Oxidationszahlen, GHS und Thermodynamik, greift man zu chemmacros, übergibt ihm aber [formula=mhchem], statt mhchem in einer eigenen Zeile zu laden. Wer in dieser Reihenfolge und nur nach Bedarf ergänzt, begegnet weder Option clash noch Undefined control sequence.