Beruflich Dokumente
Kultur Dokumente
Clemens Niederberger
Meinem subjektiven Empfinden nach, scheint die Anzahl der LATEX-Nutzer unter
Chemikern (sehr) langsam zu steigen. Das mag der Tatsache geschuldet sein,
dass es inzwischen mit Paketen wie chemfig [14], mhchem [3], chemmacros [5],
chemnum [6], modiagram [8], endiagram [7] und bohr [4] eine Reihe Pakete gibt, die
auch Chemikern eine Vielzahl von Mglichkeiten mit LATEX erffnet und an deren
Existenz ich einen bescheidenen Anteil habe.
Dieser Artikel soll daher einen berblick ber die wichtigsten Pakete1 im Zusammenhang mit Chemie bieten und jeweils ihre Funktionalitt kurz beschreiben.
Neben den hier schon erwhnten Paketen gibt es noch eine ganze Reihe weiterer,
die ich soweit es passt an den entsprechenden Stellen im Artikel erwhnen
werde.
http://texwelt.de/blog/tag/chemie/
Jeder, der sich ein bisschen mit Chemie beschftigt, lernt irgendwann die kompliziert klingenden Namen kennen, die zum Beispiel folgendermaen lauten:
(4-(4,4-Bis(dimethylaminophenyl)benzhydryliden)cyclohexa-2,5-dien-1-yliden)dimethylammoniumchlorid
Die Namen einfach nur einzugeben kann schnell zu bervollen Boxen fhren:
1
2
3
\documentclass{article}
\usepackage{showframe}
\begin{document}
4
5
6
(4-(4,4-Bis(dimethylaminophenyl)benzhydryliden)cyclohexa%
-2,5-dien-1-yliden)dimethylammoniumchlorid
7
8
\end{document}
1
2
3
4
5
6
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage{chemmacros}
\chemsetup[iupac]{ hyphen-post-space = 0pt }
\usepackage{showframe}
\begin{document}
7
8
9
(4"=(4,4"=Bis"-(di"-methyl"-amino"-phenyl)"-benz"-hydr"-y"-l"-iden)%
"-cyclo"-hexa"=2,5"=dien"=1"=y"-li"-den)"-di"-methyl"-ammonium"-chlorid
10
11
12
\iupac{(4\-(4,4\-Bis\|(di\|methyl\|amino\|phenyl)\|benz\|hydr\|y\|li\|den)%
\|cyclo\|hexa\-2,5\-dien\-1\-y\|li\|den)\|di\|methyl\|ammonium\|chlorid}
13
14
\end{document}
So oder so sind solche Namen nicht bequem einzugeben, aber das liegt in der
Natur der Sache: sie sind lang und kompliziert. Darum neigen Chemiker ja dazu,
Verbindungen Nummern zu geben und mit ihnen auf die entsprechende Substanz
zu verweisen. Wie man das am besten macht, wird in einem spteren Abschnitt
ab Seite 9 besprochen.
Der \iupac-Befehl hat noch ein paar weiterer Vorteile: chemmacros definiert eine
ganze weiterer Makros, die im Argument von \iupac gltig sind. Das folgende
Beispiel zeigt eine kleine Auswahl:
1
2
3
\iupac{Bis(\hapto{5}cyclo\|penta\|dienyl)\|eisen} \par
\iupac{\cip{2S,3S}\-Weins\"aure} \par
\iupac{\a\-(Tri\|chloro\|methyl)\-\w\-chloro\|poly(1,4\-phenylene\|methylen)}
Bis(5cyclopentadienyl)eisen
(2S,3S)-Weinsure
-(Trichloromethyl)--chloropoly(1,4-phenylenemethylen)
Zu erkennen sind hier zum Beispiel \hapto und \cip. Andere verfgbare Makros
wren \ortho, \cis und \trans und viele mehr. Auerdem ist es leicht, sich
eigene weiterer Makros zu definieren.
Phasendeskriptoren
Die Aggregatszustnde von Stoffen werden blicherweise auf zwei Weisen angegeben: als Tiefstellung oder in Klammern nach der betreffenden Substanz. iupac
empfiehlt letzteres [2]:
The [. . .] symbols are used to represent the states of aggregation of chemical
species. The letters are appended to the formula in parentheses and should
be printed in Roman (upright) type without a full stop (period).
4
chemmacros ermglicht beide Schreibweisen:
1
2
3
Ladungen
Ladungen sind eigentlich einfach umzusetzen, sollte man meinen: es sind ja nur
hochgestellte Plus- und Minus-Symbole. Obwohl das grundstzlich stimmt, ist es
nur die halbe Wahrheit: es gibt eben auch partielle Ladungen, die Unterscheidung
zwischen tatschlichen und formalen Ladungen, Oxidationszahlen (also hypothetische Ladungen). . . chemmacros stellt fr alle diese Ladungen Mglichkeiten
bereit, sie umzusetzen:
1
2
\ox{1,Na}\ox{-1,Cl} \par
Ph\pch \quad Ph\fpch \quad \ch{ Ph+ } \par
I
NaCl
Ph+
+
Ph
Ph+
1
2
+ H+
H3O+
+ H+
H3 O+
Ich will hier keine Wertung vornehmen, welches Paket zu bevorzugen sei das
mag jeder Anwender fr sich selbst entscheiden. Ich werde chemformula nher
besprechen, und zwar weil ich es ein bisschen besser kenne ich bin der Autor.
chemformula versucht soweit wie mglich, den iupac-Vorgaben zu folgen. Daher
\chemsetup[chemformula]{compound-sep=0pt}
\begin{reaction*}
(1/5) K "\ox*{7,Mn}" O4 + (8/5) HCl ==
(1/5) "\ox*{2,Mn}" Cl2 + (1/2) Cl2 + (1/5) KCl + (4/5) H2O
\end{reaction*}
Eine Ausgabe, wie man sie etwa im Schulunterricht eher verwenden wrde,
verlangt nur kleinere Modifikationen:
1 VII
8
KMnO4 + HCl
5
5
1
2
3
4
1 II
1
1
4
MnCl2 + Cl2 + KCl + H2O
5
2
5
5
\begin{reaction*}
1/5 K "\ox{7,Mn}" O4 + 8/5 HCl ->
1/5 "\ox{2,Mn}" Cl2 + 1/2 Cl2 + 1/5 KCl + 4/5 H2O
end{reaction*}
Prferenzen angepasst werden kann. Das geht von den Abstnden zwischen
den Formeln und den stchiometrischen Faktoren oder um das + herum ber
die Tatsache, dass die Pfeile selbst designt werden knnen, bis zur vertikalen
Ausrichtung der Hoch- und Tiefstellungen.
1
2
Der Hauptbefehl ist \chemfig. Er erkennt als Bindungen die Typen - (einfach),
= (doppel), =_ (doppel, rechts), = (doppel, links), (dreifach), < und > (Keil,
gefllt), <: und >: (Keil, gestrichelt) und <| und >| (Keil, hohl).
\chemfig{-[:60]=_[:0]-[:-60]}
Jede Bindung hat ein optionales Argument, mit dem die Richtung angegeben
werden kann. Diese kann auf drei Weisen angegeben werden:
len.
dung.
1
2
\chemfig{-[:30](-[2])-[:-30]-[:30]}
\chemfig{-[::30](-[::60])-[::-60]-[::60]}
Die bisherigen Beispiele haben schon eine weitere Syntax offenbart: Abzweigungen werden in runden Klammern angegeben. Atome werden ebenso einfach an
der verwendeten Stelle eingegeben. Eine Carbonsure ist also schnell geschrieben:
1
\chemfig{-[:30]-[:-30]-[:30](=[:90])-[:-30]OH}
http://www.cambridgesoft.com/Ensemble_for_Chemistry/ChemDraw/
O
OH
Auch Ringe lassen sich natrlich mit einfacher Syntax eingeben. chemfig ermglicht nicht nur die Eingabe von Skelettformeln, sondern es stellt die Mittel bereit,
ganze Reaktionsschemata einzugeben:
1
2
3
4
5
6
7
8
9
10
11
12
13
\schemestart
\chemfig{*6(=-(-)=O)}
\arrow{->[\+\ch{H+}]}
\chemleft[
\subscheme[90]{%
\chemfig{*6((-[2,0.33,,,draw=none]\fscrp)-=(-)-OH)}
\arrow{<->}
\chemfig{*6(=-(-)(-[6,0.4,,,draw=none]\fscrp)-OH)}
}
\chemright]
\arrow(@c3--)\chemfig{*6((-[2]R)-=(-)-OH)}
\arrow(@c4--)\chemfig{*6(=-(-)(-[6]R)-OH)}
\schemestop
+ H
OH
OH
OH
OH
\setatomsep{1.78500 em}
\setdoublesep{0.35700 em}
\setbondoffset{0.18265 em}
\setbondstyle{line width = 0.06642 em}
\setcrambond
{\the\dimexpr 0.06642 em * 2 + 0.22832 em \relax}
{0.06642 em}
{0.25737 em}
\setarrowdefault{,,line width = 0.06642 em}
bernommen habe ich sie mehr oder weniger von Joseph Wright: http://www.texdev.net/tag/
chemfig/.
10
\renewcommand*\printatom[1]{\ensuremath{\mathsf{#1}}}
chemfig ist sehr umfangreich, daher soll das bis hierher als Einstieg ausreichen.
Es hat eine ausfhrliche Anleitung auf Englisch und eine ebenso ausfhrliche auf
Franzsisch.
birgt das aber vielleicht auch die Gefahr, die Stze nicht genug zur Kenntnis zu
nehmen.
Die R- und S-Stze, die in absehbarer Zeit obsolet werden, knnen mit dem Paket
rsphrase aus dem mhchem-Bndel [3] in einer Reihe von Sprachen abgerufen
werden. Die Verwendung ist recht einfach:
1
2
3
4
\ghs{h}{200}
Es verlangt nicht nach babel und verwendet als Voreinstellung Englisch, reagiert
aber auf babel und verwendet die richtige Sprache, sofern die entsprechenden
bersetzungen vorhanden sind. Die Sprache kann auch unabhngig von babel
per Option gewhlt werden.
Der Befehl \ghs{hTypi}{hNummer i} hat wie am Beispiel ersichtlich Optionen
und eine Sternvariante. Die im Beispiel gezeigte Option hide sorgt dafr, dass
die Ausgabe des eigentlichen Satzes unterdrckt wird. Bei der Sternvariante wird
hingegen die Nummer unterdrckt und nur der Satz ausgegeben. Am Ende des
Beispiels wird die Standardausgabe gezeigt.
10
ansonsten aber durch Nummern auf sie zu verweisen. Verschiedene Pakete haben versucht, eine entsprechende Funktionalitt fr LATEX dafr bereitzustellen.
Zu erwhnen wren etwa chemcono [13], bpchem [9], chemcompounds [12] und
chemnum [6]. Dieser Abschnitt wird das zuletzt genannte etwas nher beleuchten.
Die Grundfunktionalitt ist schnell erklrt: der Hauptbefehl \cmpd{hIDi} erzeugt
zum einen eine Nummer und ein internes Label fr hIDi, wenn es vorher noch
nicht verwendet wurde, und kann zum anderen spter dazu verwendet werden,
diese Nummer wieder zu setzen:
1
2
3
4
5
6
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{chemnum}
\usepackage{chemformula}
\begin{document}
7
8
9
10
11
\end{document}
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 tatschlich voraus
hat, ist die native Untersttzung von Sublabeln:
1
2
3
4
5
6
7
8
\chemname{\chemfig{*6(=-=-(-R)=-)}}{\cmpd{benzene.{H,Me,OH,NH2}}}
\begin{tabular}{lll}
& \ch{-R}
& Name \\\hline
\cmpd[sub-only]{benzene.H}
& \ch{-H}
& Benzol \\
\cmpd[sub-only]{benzene.Me} & \ch{-CH3} & Toluol \\
\cmpd[sub-only]{benzene.OH} & \ch{-OH} & Phenol \\
\cmpd[sub-only]{benzene.NH2} & \ch{-NH2} & Phenylamin (Anilin)
\end{tabular}
2ad
a
b
c
d
R
H
CH3
OH
NH2
Name
Benzol
Toluol
Phenol
Phenylamin (Anilin)
Die TEXnische Komdie ?/?? Entwurf 30. Juni 2014 12:06
11
NBS
O
OH
Br
TMP1
TMP2
\begin{figure}
\centering
\replacecmpd{Alc}
% ersetzt TMP1
\replacecmpd{EtherBr} % ersetzt TMP2
\includegraphics{scheme-tmp.ps}
\caption{Beispiel"=PostScript"=Datei mit ersetzten Textstrings.}
\label{fig:scheme-tmp-voll}
\end{figure}
Damit diese Ersetzung funktioniert, wenn man pdfLATEX oder LuaLATEX verwendet, kann man in der Regel das Paket auto-pst-pdf [11] verwenden und mit
shell-escape bersetzen. Das funktioniert allerdings nicht mit XELATEX. Das
Ergebnis des Beispiels ist in Abbildung 2 zu sehen.
12
NBS
O
OH
Br
3
\begin{MOdiagram}[labels,names,style=square]
\atom[\ch{N}]{left}{
2p = {0;up,up,up}
}
\atom[\ch{O}]{right}{
2p = {2;pair,up,up}
}
\molecule[\ch{NO}]{
2pMO = {1.8,.4;pair,pair,pair,up} ,
color = {2piy* = red}
}
\end{MOdiagram}
http://tex.stackexchange.com/a/37803/5049/
13
2 x
2 y 2 z
2p x 2p y 2p z
2p x 2p y 2p z
2 y 2 z
2 x
NO
Abbildung 3: Beispiel fr ein Diagramm, das mit dem Paket modiagram erstellt
wurde.
Das endiagram-Paket
Auch dieses Paket entstand aus Eigenbedarf. Es soll ermglichen, mit wenig
Aufwand den qualitativen Energieverlauf einer Reaktion anzuzeigen. Ein erstes
Beispiel soll das demonstrieren.
1
2
3
\begin{endiagram}
\ENcurve{1,4,0}
\end{endiagram}
14
% \DeclareSIUnit{\calory}{cal}
\sisetup{per-mode = fraction}
\ENsetup{
y-label = above ,
energy-step = 100 ,
energy-unit = \kilo\calory\per\mole ,
energy-unit-separator = { in } ,
calculate = false ,
AddAxisLabel/font = \footnotesize
}
\begin{endiagram}[scale=1.5]
\ENcurve{2.232,4.174,.308}
\AddAxisLabel*{0;1;2;3;4}
\ShowEa[label,connect={draw=none}]
\ShowGain[label]
\end{endiagram}
E in
kcal
mol
400
300
Ea
200
H < 0
100
0
Das bohr-Paket
Dieses Paket entstand bei der Beantwortung einer Frage auf TeX.sx7 . Ziel ist es,
einfache Atommodelle nach dem bohrschen Atommodell darzustellen:
1
\bohr{3}{Li}
http://tex.stackexchange.com/a/73498/5049
15
Li
Was als einfache TikZ-Bilder begann, hat die Funktionalitt des Pakets schnell
erweitert. Zum Beispiel kann man das Paket die Atomnamen selbst einfllen
lassen:
1
2
3
\setbohr{insert-missing}
\bohr{6}{}
\bohr{}{Ne}
Ne
Damit das mglich ist, muss das Paket Atomsymbole den Elektronenzahlen
zuordnen knnen. Tatschlich kann es das und noch ein bisschen mehr:
1
2
3
4
5
6
7
8
9
\elementsymbol{80}
\elementsymbol{rhenium}\par
\atomicnumber{Hg}
\atomicnumber{Rhenium}\par
\elementname{80}
\elementname{Rh}\par
\elconf{Cu}\par
\elconf{Kupfer}\par
\elconf{29}
Hg Rh
80 75
Quecksilber Rhenium
1 s 2 2 s 2 2 p 6 3 s 2 3 p 6 3 d 10 4 s 1
1 s 2 2 s 2 2 p 6 3 s 2 3 p 6 3 d 10 4 s 1
1 s 2 2 s 2 2 p 6 3 s 2 3 p 6 3 d 10 4 s 1
Zum Schluss
Ich hoffe, dass dieser Artikel einen kleinen Einblick gewhren konnte, wie vielseitig inzwischen das Angebot von Paketen fr den Bereich Chemie ist. Natrlich
konnte hier bei allen gezeigten Paketen jeweils nur an der Oberflche gekratzt
werden, ganz abgesehen davon, dass es noch unzhlige weitere Pakete gibt. Unter
Die TEXnische Komdie ?/?? Entwurf 30. Juni 2014 12:06
16
Literatur
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
[12]
[13]
[14]
Javier Bezos und Johannes L. Braams. babel. Version 3.9k. 2014. url: http:
//mirror.ctan.org/macros/latex/required/babel/.
E. Richard Cohan u. a. Quantities, Symbols and Units in Physical Chemistry,
IUPAC Green Book. 3rd Edition. 2nd Printing. IUPAC & RSC Publishing,
Cambridge, 2008.
Martin Hensel. mhchem. Version 3.17. 2014. url: http://mirror.ctan.
org/macros/latex/contrib/mhchem/.
Clemens Niederberger. bohr. Version 0.4. 2013. url: http://mirror.ctan.
org/macros/latex/contrib/bohr/.
Clemens Niederberger. chemmacros. Version 4.5a. 2014. url: http : / /
mirror.ctan.org/macros/latex/contrib/chemmacros/.
Clemens Niederberger. chemnum. Version 1.0b. 2014. url: http://mirror.
ctan.org/macros/latex/contrib/chemnum/.
Clemens Niederberger. endiagram. Version 0.1c. 2013. url: http://mirror.
ctan.org/macros/latex/contrib/endiagram/.
Clemens Niederberger. modiagram. Version 0.2e. 2014. url: http://mirror.
ctan.org/macros/latex/contrib/modiagram/.
Bjrn Pedersen. bpchem. Version 1.06. 2004. url: http://mirror.ctan.org/
macros/latex/contrib/bpchem/.
rake. Can you make chemical structure diagrams in LATEX? url: https://tex.
stackexchange.com/questions/52722/ (besucht am 18. 02. 2014).
Will Robertson und Johannes Groe. auto-pst-pdf. Version 0.6. 2009. url:
http://mirror.ctan.org/macros/latex/contrib/auto-pst-pdf/.
Stefan Schenk. chemcompounds. Version 1.1.3. 2006. url: http://mirror.
ctan.org/macros/latex/contrib/chemcompounds/.
Stefan Schulz. chemcono. Version 1.3. 1999. url: http://mirror.ctan.org/
macros/latex/contrib/chemcono/.
Christian Tellechea. ChemFig. Version 1.0g. 2013. url: http : / / mirror .
ctan.org/macros/generic/chemfig/.