LaTeX und Chemie (5) – Nummerieren von Verbindungen: das chemnum Paket

In Artikeln, die sich mit Chemie beschäftigen oder konkreter mit bestimmten Stoffen oder Stoffklassen, mit Reaktionstypen oder -mechanismen oder Synthesen, ist es üblich, die Substanzen, die behandelt werden zwar einmal zu benennen, ansonsten aber durch Nummern auf sie zu verweisen. Verschiedene Pakete haben versucht, eine entsprechende Funktionalität für LaTeX dafür bereitzustellen. Zu erwähnen wären etwa chemcono, bpchem, chemcompounds und chemnum. Dieser Beitrag wird das zuletzt genannte etwas näher beleuchten.

Dieser Artikel ist Teil einer Reihe, die außerdem noch folgende Themen behandelt:


Zunächst einmal sollte ich klarstellen, dass ich der Autor von chemnum bin, nur damit keine Missverständnisse aufkommen. Außerdem will ich gleich zu Beginn sagen, dass chemnum derzeit noch in der Version 0.* vorliegt. Version 1.0 ist in Arbeit und wird einige unsichtbare wie sichtbare Änderungen mit sich bringen. Seit dem 12. März 2014 liegt chemnum in Version 1 vor, dessen Syntax sich in Details von früheren Versionen unterscheidet.

Die Grundfunktionalität ist schnell erklärt: der Hauptbefehl \cmpd{<label>} erzeugt zum einen eine Nummer und ein internes Label für <label>, wenn es vorher noch nicht verwendet wurde, und kann zum anderen später dazu verwendet werden, diese Nummer wieder zu setzen:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{chemnum}
\usepackage{chemformula}
\begin{document}

Hier geht es um \ch{CH3-CH2-OH} (\cmpd{ethanol}). \cmpd{ethanol} ist
Bestandteil \ldots

\end{document
}

chemnum1

Neben dem Hauptbefehl gibt es noch eine Sternvariante \cmpd*, die ein noch nicht festgelegtes Label festlegt, aber nichts schreibt, und eine Plus-Variante \cmpd+, die ein Label nicht erzeugt, sondern nur darauf verweist (was etwa in Überschriften sinnvoll sein kann).

Soweit ist hier noch nichts besonderes und (fast) alle oben genannten Pakete machen das ähnlich. Etwas, was chemnum den anderen Paketen tatsächlich voraus hat, ist die native Unterstützung von Sublabeln:

\documentclass{article}
\usepackage{chemnum,chemfig,chemformula,booktabs}
\begin{document}

\setatomsep{2em}

\chemname{\chemfig{*6(=-=-(-R)=-)}}{\cmpd{benzene.{H,Me,OH,NH2}}}
\begin{tabular}{lll}
                               & \ch{-R}   & Name \\\midrule
  \cmpd[sub-only]{benzene.H}   & \ch{-H}   & Benzene \\
  \cmpd[sub-only]{benzene.Me}  & \ch{-CH3} & Toluene \\
  \cmpd[sub-only]{benzene.OH}  & \ch{-OH}  & Phenol \\
  \cmpd[sub-only]{benzene.NH2} & \ch{-NH2} & Phenylamine (Aniline)
\end{tabular}

\end{document
}

chemnum1

Sublabel werden einfach durch den Trenner . eingegeben: \cmpd{<main>.<sub>}. Wie fast alles kann das Symbol für den Trenner auch geändert werden. Version 1.0 wird übrigens die Liste der Sublabel komprimieren können, so dass \cmpd{benzene.{H,Me,OH,NH2}} dann 1a–d ergibt. Mit der jetzigen Version muss man dafür stattdessen (nachdem man sichergestellt hat, dass alle Sublabel erzeugt worden sind, etwa durch \cmpd*{benzene.{H,Me,OH,NH2}}) \cmpd{benzene.{H..NH2}} verwenden, was zugegebenermaßen fehleranfällig ist.

Ein weiterer Bonus von chemnum ist die Möglichkeit, mit dem Befehl \cmpdref in EPS und PostScript-Bildern vorgefertigte temporäre Textmarker durch die entsprechenden Label zu ersetzen. Das ist für all diejenigen von Interesse, die ihre Schemata nicht mit chemfig erstellen, sondern etwa ChemDraw verwenden. Das Prinzip ist Recht einfach. Stellen wir uns folgende Datei scheme-tmp.eps(1) vor:

scheme-tmp

Aus folgendem Quelltext

% arara: pdflatex: { shell: on }
\documentclass{article}
\usepackage{chemnum,graphicx,auto-pst-pdf}
\begin{document}

\replacecmpd{Alc
}     % ersetzt TMP1
\replacecmpd{EtherBr} % ersetzt TMP2
% \replacecmpd{third} % wuerde TMP3 ersetzen
\includegraphics{scheme-tmp.ps}

\end{document
}

wird dann nach kompilieren mit pdflatex --shell-escape zu folgendem:
chemnum3

Es soll hier nicht unerwähnt bleiben, dass der Befehl \cmpdref in Version 1.0 wahrscheinlich eine andere Funktion bekommen wird. Statt dessen wird es für diese Funktionalität wahrscheinlich den Befehl \replacecmpd geben.

Damit ist das wesentliche gesagt und die Serie zu LaTeX und Chemie fast abgeschlossen.


(1) Die im Artikel verlinkte Datei ist tatsächlich eine PNG-Datei.


Weiter geht’s mit Spezielle Diagramme: die Pakete modiagram, endiagram und bohr.

Über Clemens

Ich bin ein LaTeX-Enthusiast, der auch mit ein paar Paketen wie chemmacros oder fnpct einen bescheidenen Beitrag zur LaTeX-Vielfalt beitragen hat. Ich habe noch einen eigenen Blog: einzelMEINUNG und einen englischsprachigen Blog, der sich ausschließlich mit LaTeX beschäftigt mychemistry.eu.

25. Januar 2014 von Clemens
Kategorien: LaTeX | Schlagwörter: , , | 6 Kommentare

Kommentare (6)


  1. Warning: preg_replace_callback(): Error while studying pattern in /opt/osqa-1.0rc-2/apps/osqa/blog/wp-includes/formatting.php on line 1610

    Hi,
    Ich schreibe an meiner Diss und bin auf dein Paket hier gestoßen, weil ich mit anderen Paketen und Inkompatibilitäten Probleme habe. Meine Lösung war folgende:
    - ich verwende zwei verschieden Zähler. der erste Zähler (\aref{verba}) wird für literaturbekannte Verbindungen verwendet und zählt arabisch, der Zweite (\vref{verbb}) ist für meine Verbindungen und zählt römisch. kann ich dein Paket ebenso nutzen?
    - der wichtigere Grund war aber, dass auto-pst-pdf probleme macht und psfrag nicht funktioniert. psfrag wird nicht mehr unterstützt und der entwickler rät zum pstool packet, welches auch die Kompilierung drastisch verkürzt. dein paket ist jedoch nicht kompatibel mit pstool, wie ich feststellte. wirst du pstool nutzen?

    • »dass auto-pst-pdf probleme macht « das ist ein etwas vager Grund… ich hab mit dem Paket noch nie Probleme gehabt… Mit den Optionen runs=2 und manchmal auch crop=off (und natürlich kompilieren mit shell-escape) klappt es eigentlich jedesmal. Mit pstool habe ich keinerlei Erfahrung und sehe eigentlich keinen Grund zu wechseln.

      Verschiedene Zähler und Zählerformen werden unterstützt.

  2. Und wie kann man bitte “chemnum” in Ubuntu-Kile einbinden?

    Liebe Gruesse von einem Lothringer in Nordengland.

    • Wenn Du ein ganz normales TeX Live installiert hast, dann ist es schon dabei.

      Wenn Du’s über die Repositories installiert hast, bin ich überfragt. Zum einen hinken die oft in der Aktualität hinterher. Zum anderen kann es sein, dass Du dann vielleicht nicht da komplette TeX Live hast? Vielleicht ist es in texlive-science enthalten?

  3. Hallo,

    ich benutze TexStudio in der Version 2.10 und habe herausgefunden, dass man auto-pst-pdf Paket auch einfach auslassen kann, indem man in den Einstellungen unter Erzeugen auf Übersetzung über DVI, PS nach PDF umstellt. Da das oben genannte Paket bei mir immer Probleme gemacht hat. Ich wollte das nur mal hier lassen, falls jemand das selbe Problem hat.

    PS: Ist mein erster Post. Falls daran was falsch ist bitte sagen!

    • Das stimmt: da man dann nicht direkt nach PDF übersetzt, kann man psfrag (das von chemnum verwendet) wird, direkt einsetzen, und braucht auto-pst-pdf nicht. Man benötigt es allerdings, wenn man mit pdflatex arbeiten will. Ich persönlich hate damit noch nie Probleme, verwende es aber auch nur sehr selten…

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert