summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
Diffstat (limited to 'Master')
-rw-r--r--Master/texmf-dist/doc/latex/chemmacros/README10
-rw-r--r--Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_de.pdfbin271993 -> 368424 bytes
-rw-r--r--Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_de.tex779
-rw-r--r--Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_en.pdfbin276867 -> 361555 bytes
-rw-r--r--Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_en.tex779
-rw-r--r--Master/texmf-dist/tex/latex/chemmacros/chemmacros.sty843
6 files changed, 1727 insertions, 684 deletions
diff --git a/Master/texmf-dist/doc/latex/chemmacros/README b/Master/texmf-dist/doc/latex/chemmacros/README
index 99ac626a2df..be2ff6515e2 100644
--- a/Master/texmf-dist/doc/latex/chemmacros/README
+++ b/Master/texmf-dist/doc/latex/chemmacros/README
@@ -1,8 +1,8 @@
--------------------------------------------------------------------------
-the chemmarcos package v1.0
+the chemmacros package v1.1
a collection of macros to make typesetting chemistry documents more
convenient
-2011/05/15
+2011/06/22
--------------------------------------------------------------------------
Clemens Niederberger
Web: http://www.mychemistry.eu/
@@ -26,9 +26,9 @@ This work consists of the files chemmacros.sty, chemmacros_doc_de.tex
and chemmacros_doc_en.tex
--------------------------------------------------------------------------
chemmacros is a collection of macros and commands which are intended to
-make typesetting chemistry documents faster and more convenient.
-This includes some nomenclature commands, oxidation numbers,
-thermodynamical data, newman projections...
+make typesetting chemistry documents with LaTeX2e faster and more
+convenient. Coverage includes some nomenclature commands, oxidation
+numbers, thermodynamic data, newman projections,
--------------------------------------------------------------------------
If you have any ideas, questions, suggestions or bugs to report, please
feel free to contact me.
diff --git a/Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_de.pdf b/Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_de.pdf
index a589e67b0b2..cf2e1154d98 100644
--- a/Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_de.pdf
+++ b/Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_de.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_de.tex b/Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_de.tex
index 09c7900a752..171b8faec45 100644
--- a/Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_de.tex
+++ b/Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_de.tex
@@ -4,7 +4,7 @@
% - a collection of macros to make typesetting chemistry documents more convenient ---- %
% ------------------------------------------------------------------------------------- %
% - Clemens Niederberger -------------------------------------------------------------- %
-% - 2011/05/15 ------------------------------------------------------------------------ %
+% - 2011/06/22 ------------------------------------------------------------------------ %
% ------------------------------------------------------------------------------------- %
% - http://www.mychemistry.eu/ -------------------------------------------------------- %
% - contact@mychemistry.eu ------------------------------------------------------------ %
@@ -34,9 +34,11 @@
\usepackage[utf8]{inputenx}
\usepackage[dvipsnames]{xcolor}
\colorlet{code}{RawSienna}
-\usepackage{listings,url,chemfig,chemstyle,bpchem,siunitx,booktabs}
+\usepackage{listings,url,chemfig,chemstyle,bpchem,booktabs}
+\usepackage[perpage,hang]{footmisc}
+ \renewcommand*\thefootnote{\arabic{footnote})}
\usepackage[version=3,arrows=pgf]{mhchem}
-\usepackage[xspace=true]{chemmacros}
+\usepackage[xspace,circled,german]{chemmacros}
\usetikzlibrary{calc}
\lstset{literate={ä}{{\"a}}1 {ö}{{\"o}}1 {ü}{{\"u}}1 {Ä}{{\"A}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1 {ß}{{\ss}}1}
\lstset{
@@ -50,14 +52,15 @@
xleftmargin=20pt, % Einrückung links
breaklines=true, % Zeilenumbruch
moredelim=[is][\color{red!25!purple}]{!!}{!!},% Hervorhebung
+ moredelim=[is][\color{black}]{++}{++}, % Hervorhebung der Keywords rückgängig
commentstyle={\color[named]{Gray}},
emph={begin,end}, % Umgebungen hervorheben
emphstyle=\color{red},
keywordstyle=\color{code},
keywordstyle=[20]\color{blue},
- morekeywords=[20]{reaction,reactions},
+ morekeywords=[20]{reaction,reactions,reactionsat},
texcsstyle=[30]\color{code},
- moretexcs=[30]{ce,cf,chemabove,chembelow,chemfig,cip,cis,color,delm,delp,Dfi,draw,E,el,ElPot,ensuremath,Enthalpy,Entropy,Gibbs,gram,Helmholtz,HtO,Hpl,Hyd,IUPAC,joule,kelvin,kilo,lewis,Lfi,liter,mch,meta,milli,mole,newman,node,ntr,nu,ortho,ox,OX,para,pch,per,phorb,porb,prt,pxorb,pyorb,pzorb,Rcip,Rconf,redox,renewtagform,setorbheight,Scip,Sconf,scrm,scrp,setatomsep,setnewstate,sisetup,standardstate,State,text,tikz,trans,transitionstatesymbol,usetikzlibrary,xspace,Z},
+ moretexcs=[30]{abinitio,aq,atm,atmosphere,cal,calory,ce,cee,celsius,cf,chemabove,chembelow,chemfig,cip,cis,cmc,CNMR,color,cstsetup,DeclareSIUnit,delm,delp,Dfi,draw,E,el,El,ElPot,ensuremath,enthalpy,Enthalpy,Entropy,gas,Gibbs,gram,Helmholtz,HNMR,HtO,Hpl,Hyd,insitu,IUPAC,joule,kelvin,kilo,latin,lewis,Lfi,liter,liquid,mch,mech,meta,mhName,milli,mmHg,molar,moLar,Molar,mole,MolMass,newman,newreaction,NMR,node,normal,ntr,nu,Nu,ortho,ox,OX,para,pch,per,pH,pKa,pKb,phorb,pOH,porb,prt,pxorb,pyorb,pzorb,R,Rcip,Rconf,redox,renewstate,renewtagform,setorbheight,Scip,Sconf,scrm,scrp,setatomsep,setbondoffset,setmhName,setnewstate,setorbheight,setstatesubscript,setredoxdist,si,SI,sisetup,solid,standardstate,State,text,tikz,torr,trans,transitionstatesymbol,usetikzlibrary,volt,water,xspace,Z}
}
\usepackage{hyperref}
@@ -73,66 +76,86 @@
pdfcreator={LaTeX}
}
-\newcommand\paket[1]{`#1'\footnote{\url{http://www.ctan.org/pkg/#1}}}
+\newcommand*\paket[1]{`#1'\footnote{\url{http://www.ctan.org/pkg/#1}}}
+\reversemarginpar
+\newcommand*\NEU[1][]{\marginpar{\raggedleft\color{red}NEU \ifx\relax#1\relax\else\normalcolor v.#1\fi}}
\makeatletter
\let\CMname\CM@name%
\makeatother
+\newcommand*\zB{\mbox{z.\,B.}\xspace}
+\newcommand*\bzw{\mbox{bzw.}\xspace}
+\newcommand*\usw{\mbox{usw.}\xspace}
+\newcommand*\TikZ{\mbox{Ti\textbf{\textit{k}}Z}\xspace}
\begin{document}
\begin{titlepage}
\centering
\Huge\makeatletter\CM@name\ v\CM@version\makeatother
\vskip.5cm
- \large\makeatletter\CM@date\makeatother
+ \Large\makeatletter\CM@date\makeatother
\vskip.5cm
- \Large Clemens \textsc{Niederberger}
+ \large Clemens \textsc{Niederberger}
\vskip.25cm
\normalsize\url{http://www.mychemistry.eu/}\\
\href{mailto:contact@mychemistry.eu}{contact@mychemistry.eu}
\vskip2cm
\begin{abstract}
- `\CMname' ist eine Sammlung von Hilfs-Makros für Chemiker. Sie sind dazu gedacht, das Schreiben von chemischen Dokumenten bequemer zu machen.
- %This is a collection of helper macros for the chemist which are intended to make writing chemical documents more convenient.
+ `\CMname' ist eine Sammlung von Hilfs-Makros für Chemiker. Sie sind dazu gedacht, das Schreiben von Chemie-Dokumenten mit \LaTeXe\ schneller und bequemer zu machen. Das betrifft unter anderem Nomanklatur, Oxidationszahlen, thermodynamische Daten, Newman-Projektionen, \usw
\end{abstract}
\end{titlepage}
\tableofcontents
\section{Lizenz, Voraussetzungen}
-\makeatletter\CM@name\ v\CM@version\makeatother\ steht unter der \LaTeX\ Project Public License Version 1.3 oder später.\newline(\url{http://www.latex-project.org/lppl.txt})
+`\CMname' v\makeatletter\CM@version\makeatother\ steht unter der \LaTeX\ Project Public License Version 1.3 oder später.\newline(\url{http://www.latex-project.org/lppl.txt})
-\CMname\ ruft intern die Pakete \paket{xkeyval}, \paket{amsmath} und `tikz' (Ti\textbf{\textit{k}}Z = \paket{pgf}) auf. Sind sie nicht vorhanden, wird eine Fehlermeldung ausgegeben.
+`\CMname' ruft intern die Pakete \paket{amsmath}, \paket{ifthen}, \paket{siunitx}, \paket{xparse} und `tikz' (\TikZ = \paket{pgf}) sowie die TikZlibrary \lstinline=calc= auf. Sind sie nicht vorhanden, wird eine Fehlermeldung ausgegeben.
-Manche Befehle haben allerdings unterschiedliche Definitionen, je nachdem ob andere Pakete vom Benutzer \emph{vorher} geladen wurden oder nicht. Manche Befehle werden auch nur definiert, wenn ein bestimmtes Paket geladen ist. Das betrifft die Pakete \paket{mhchem}, \paket{siunitx} und \paket{chemstyle} sowie die Befehle aus Abschnitt \ref{sec:teilchen}, \lstinline=\ox= (Abschnitt \ref{ssec:oxidationszahlen}), die Befehle aus Abschnitt \ref{sec:standardstate} und die Umgebungenen aus Abschnitt \ref{sec:mhchem}.
+`siunitx' benötigt \LaTeX3-Unterstützung, die durch die Bundles \paket{expl3} und \paket{xpackages} bereitgestellt wird. `xparse' ist Teil des `xpackages'-Bundles. In der Folge benötigt auch `\CMname' \LaTeX3-Unterstützung.
+
+Manche Befehle haben unterschiedliche Definitionen, je nachdem ob andere Pakete vom Benutzer \emph{vorher} geladen wurden oder nicht. Manche Befehle werden auch nur definiert, wenn ein bestimmtes Paket geladen ist. Das betrifft die Pakete \paket{bpchem}, \paket{chemstyle} und \paket{mhchem}. An entsprechender Stelle in der Dokumentation wird auf die Unterschiede konkret hingewiesen.
+
+Für die Paketoption \lstinline=bpchem= (Abschnitt \ref{sec:optionen}) wird das Paket `bpchem' benötigt.
Für die Paketoption \lstinline=xspace= (Abschnitt \ref{sec:optionen}) wird das Paket \paket{xspace} benötigt.
-Wenn der Benutzer das Paket `mhchem' \emph{vor} \CMname\ lädt, so werden außerdem die Pakete \paket{mathtools} und \paket{environ} benötigt.
+Wenn der Benutzer das Paket `mhchem' lädt, so werden außerdem die Pakete \paket{mathtools} und \paket{environ} benötigt.
-Für den \lstinline=\redox=-Befehl (Abschnitt \ref{sec:redoxreaktionen}) und den \lstinline=\newman=-Befehl (Abschnitt \ref{sec:newman} muss die Tikzlibrary `calc' eingebunden werden.
+\textbf{Bitte beachten Sie, dass sich mit der Version 1.1 die Paketoptionen verändert haben.}
-Volle Funktionalität steht also mit folgender oder ähnlicher Präambel bereit:
-\begin{lstlisting}
- \usepackage{siunitx,chemstyle}
- \usepackage[version=3,arrows=pgf]{mhchem}
- \usepackage[xspace=true]{chemmacros}
- \usetikzlibrary{calc}
-\end{lstlisting}
+\section{Paket-Optionen}\label{sec:optionen}
+\NEU[1.1]`\CMname' hat vier Paketoptionen:
+\begin{description}
+ \item[\texttt{bpchem}] Durch diese Option wird zum einen das Paket `bpchem' geladen und zum anderen das Aussehen des \lstinline=\NMR=-Befehls dem der `bpchem'-Befehle \lstinline=\HNMR= und \lstinline=\CNMR= angepasst. Ohne Option: \NMR; Mit Option: \HNMR;
+ \item[\texttt{circled}] Manche Chemiker -- darunter ich -- bevorzugen umkreiste Ladungssymbole, um sie von dem Additions- und Subtraktionssymbol klar abzugrenzen. Per Default werden sie bei `\CMname' allerdings \emph{nicht} umkreist angezeigt ($+$ und $-$). Mit der Option \lstinline+circled+ verwenden alle Befehle von `\CMname' die Symbole \emph{mit} Kreis ($\oplus$ und $\ominus$).
+ \item[\texttt{german}] Die Option ändert den Befehl \lstinline=\pKa= von \mbox{\textsl{p}$K_\mathrm{A}$} in \mbox{\textsl{p}$K_\mathrm{S}$} und die Befehle \lstinline=\solid= und \lstinline=\liquid= von \solid[s] und \liquid[l] in \solid\ \bzw \liquid.
+ \item[\texttt{xspace}] Mit der Option bekommen folgende Befehle ein \lstinline=\xspace= angehängt: \lstinline=\Hpl= \lstinline=\HtO= \lstinline=\water= \lstinline=\Hyd= \lstinline=\HtO= \lstinline=\pH= \lstinline=\pOH= \lstinline=\pKa= \lstinline=\pKb= \lstinline=\cis= \lstinline=\trans= \lstinline=\insitu= \lstinline=\abinitio= \lstinline=\mech= \lstinline=\NMR= \Hpl \HtO \water \Hyd \HtO \pH \pOH \pKa \pKb \cis \trans \insitu \abinitio \mech \NMR\\
+ Bitte beachten Sie, dass die beiden Befehle \lstinline=\cis= und \lstinline=\trans= auch durch das `bpchem'-Paket definiert werden. Falls Sie das Paket laden, werden sie durch `\CMname' umdefiniert. Bei `bpchem' haben sie \textit{immer} ein angehängtes \lstinline=\xspace=, mit `\CMname' nur mit Option \lstinline=xspace=. Abgesehen davon sind sie identisch.
+\end{description}
\section{Teilchen, Ionen und ein Symbol}\label{sec:teilchen}
-Eine Reihe einfacher Makros, um häufig gebrauchte Teilchen sowie ein Symbol darzustellen:
+Eine Reihe einfacher Makros, um häufig gebrauchte Teilchen sowie ein Symbol darzustellen. Beachten Sie, dass die Darstellung von den verwendeten Paketoptionen abhängt, siehe Abschnitt \ref{sec:optionen}.
\begin{itemize}
\item\lstinline=\Hpl= \Hpl (Proton)
\item\lstinline=\Hyd= \Hyd (Hydroxid)
- \item\lstinline=\HtO= \HtO (Oxonium)
+ \item\NEU[1.1]\lstinline=\HtO= \HtO (Oxonium) (\textbf{H} \textbf{t}hree \textbf{O})
+ \item\NEU[1.1]\lstinline=\water= \water
\item\lstinline=\el= \el (Elektron)
\item\lstinline=\prt= \prt (Proton)
\item\lstinline=\ntr= \ntr (Neutron)
- \item\lstinline=\transitionstatesymbol= \transitionstatesymbol\ Über\-gangs\-zu\-stands\-symbol (verwendet Ti\textbf{\textit{k}}Z)
+ \item\NEU[1.1]\lstinline=\Nu= \Nu (Nucleophil)
+ \item\NEU[1.1]\lstinline=\El= \El (Elektrophil)
+ \item\lstinline=\transitionstatesymbol= \transitionstatesymbol\ Über\-gangs\-zu\-stands\-symbol (verwendet `\TikZ')
+\end{itemize}
+Diese Befehle sind sowohl im Text- wie im Mathematikmodus einsetzbar. Je nachdem, ob `mhchem' geladen wurde oder nicht, werden Atome in den \lstinline=\cf{}=-Befehl von `mhchem' oder in eine \lstinline=\mbox{}= geschrieben.
+
+\NEU[1.1]Daneben gibt es noch einen weiteren Befehl, mit dem Radikale mit Ladungen und Index geschrieben werden können.
+\begin{itemize}
+ \item\lstinline=\R[<sign>]{<subscript>}= \zB \lstinline=\R[+]{tert} \R[-]{sek} \R{prim}= \R[+]{tert} \R[-]{sek} \R{prim}
\end{itemize}
-Diese Befehle sind sowohl im Text- wie im Mathematikmodus einsetzbar. Je nachdem, ob `mhchem' geladen wurde oder nicht, werden die ersten drei Teilchen mit dem \lstinline=\cf{}=-Befehl von `mhchem' oder mit \lstinline=\ensuremath{\text{}}= geschrieben.
-\section{Stereo-Deskriptoren, Nomenklatur}\label{sec:stereo}
+\section{Stereo-Deskriptoren, Nomenklatur, lateinische Ausdrücke}\label{sec:stereo}
+\subsection{Stereo-Deskriptoren und Nomenklatur}
Die folgenden Makros sollen das Schreiben von IUPAC-Namen etwas erleichtern:
\begin{itemize}
\item Cahn-Ingold-Prelog:
@@ -146,12 +169,12 @@ Die folgenden Makros sollen das Schreiben von IUPAC-Namen etwas erleichtern:
\item\lstinline=\Dfi= \Dfi
\item\lstinline=\Lfi= \Lfi
\end{itemize}
- \item cis/trans u. zusammen/entgegen:
+ \item cis/trans und zusammen/entgegen:
\begin{itemize}
\item\lstinline=\Z= \Z
\item\lstinline=\E= \E
- \item\lstinline=\cis= \cis
- \item\lstinline=\trans= \trans
+ \item\lstinline=\cis= \cis (Dieser Befehl wird auch von `bpchem' definiert. `\CMname'\linebreak schreibt in diesem Fall die Definition leicht um, siehe Abschnitt \ref{sec:optionen}.)
+ \item\lstinline=\trans= \trans (Dieser Befehl wird auch von `bpchem' definiert. `\CMname' schreibt in diesem Fall die Definition leicht um, siehe Abschnitt \ref{sec:optionen}.)
\end{itemize}
\item ortho/meta/para:
\begin{itemize}
@@ -160,34 +183,105 @@ Die folgenden Makros sollen das Schreiben von IUPAC-Namen etwas erleichtern:
\item\lstinline=\para= \para
\end{itemize}
\end{itemize}
-Anzeigen der absoluten Konfiguration (verwendet Ti\textbf{\textit{k}}Z):
+Anzeigen der absoluten Konfiguration (verwendet `\TikZ'):
\begin{itemize}
\item\lstinline=\Rconf[<letter>]= \lstinline=\Rconf=: \Rconf \quad\lstinline=\Rconf[]=: \Rconf[]
\item\lstinline=\Sconf[<letter>]= \lstinline=\Sconf=: \Sconf \quad\lstinline=\Sconf[]=: \Sconf[]
\end{itemize}
+Beispiele:
\begin{lstlisting}
- \Dfi-Weinsäure = \cip{2S,3S}-Weinsäure, \Dfi-($-$)-Threose = \cip{2S,3R}-($-$)-2,3,4-Trihydroxybutanal\\
- \cis-2-Buten = \Z-2-Buten, \cip{2E,4Z}-Hexadien\\
- \meta-Xylol = 1,3-Dimethylbenzol
-
- % mit `bpchem'-Befehl \IUPAC:
- \IUPAC{\Dfi-Wein\|säure} = \IUPAC{\cip{2S,3S}-Wein\|säure}, \IUPAC{\Dfi-($-$)-Threose} = \IUPAC{\cip{2S,3R}-($-$)-2,3,4\-Tri\|hydroxy\|butanal}
+ \Dfi-Weinsäure = \cip{2S,3S}-Weinsäure
+\end{lstlisting}
+\Dfi-Weinsäure = \cip{2S,3S}-Weinsäure
+\begin{lstlisting}
+ \Dfi-($-$)-Threose = \cip{2S,3R}-($-$)-2,3,4-Trihydroxybutanal
+\end{lstlisting}
+\Dfi-($-$)-Threose = \cip{2S,3R}-($-$)-2,3,4-Trihydroxybutanal
+\begin{lstlisting}
+ \cis-2-Buten = \Z-2-Butene, \cip{2E,4Z}-Hexadiene
+\end{lstlisting}
+\cis-2-Buten = \Z-2-Butene, \cip{2E,4Z}-Hexadiene
+\begin{lstlisting}
+ \meta-Xylol = 1,3-Dimethylbenzene
+\end{lstlisting}
+\meta-Xylol = 1,3-Dimethylbenzene
+\begin{lstlisting}
+ % mit `bpchem's Befehl \IUPAC:
+ \IUPAC{\Dfi\-Wein\|säure} = \IUPAC{\cip{2S,3S}\-Wein\|säure}, \IUPAC{\Dfi\-($-$)\-Threose} = \IUPAC{\cip{2S,3R}\-($-$)\-2,3,4\-Tri\|hydroxy\|butanal}
+\end{lstlisting}
+\IUPAC{\Dfi\-Wein\|säure} = \IUPAC{\cip{2S,3S}\-Wein\|säure}, \IUPAC{\Dfi\-($-$)\-Threose} = \IUPAC{\cip{2S,3R}\-($-$)\-2,3,4\-Tri\|hydroxy\|butanal}
+
+Im letzten Beispiel wurde der Befehl \lstinline=\IUPAC= des Pakets `bpchem' eingesetzt.
+
+Das Aussehen hängt natürlich von gewählten Font ab:
+\begin{lstlisting}
+ \cip{2S,3R} \E \Z \Dfi \Lfi \par
+ \fontfamily{ptm}\selectfont
+ \cip{2S,3R} \E \Z \Dfi \Lfi \par
+ \fontfamily{ppl}\selectfont
+ \cip{2S,3R} \E \Z \Dfi \Lfi
+\end{lstlisting}
+\cip{2S,3R} \E \Z \Dfi \Lfi
+
+\fontfamily{ptm}\selectfont
+\cip{2S,3R} \E \Z \Dfi \Lfi
+
+\fontfamily{ppl}\selectfont
+\cip{2S,3R} \E \Z \Dfi \Lfi
+\fontfamily{cmr}\selectfont
+
+\subsection{Lateinische Ausdrücke}
+\NEU[1.1]Zuletzt gibt es noch zwei Befehle für gebräuchliche lateinische Ausdrücke.
+\begin{itemize}
+ \item\lstinline=\insitu= \insitu
+ \item\lstinline=\abinitio= \abinitio
+\end{itemize}
+Falls ebenfalls das Paket `chemstyle' geladen wurde\footnote{`chemstyle' definiert weitere ähnliche Befehle wie \etal, \invacuo.}, wird für die Definition der `chem\-style'-Befehl \lstinline=\latin= verwendet. Das bedeutet, dass das Schriftbild dann durch die `chem\-style'-Einstellung \verb=abbremph= beeinflusst wird:
+\begin{lstlisting}
+ \insitu, \abinitio\\
+ \cstsetup{abbremph=false}
+ \insitu, \abinitio
\end{lstlisting}
-\Dfi-Weinsäure = \cip{2S,3S}-Weinsäure, \Dfi-($-$)-Threose = \cip{2S,3R}-($-$)-2,3,4-Trihydroxybutanal\\
-\cis-2-Buten = \Z-2-Buten, \cip{2E,4Z}-Hexadien\\
-\meta-Xylol = 1,3-Dimethylbenzol
+{\insitu, \abinitio\\
+\cstsetup{abbremph=false}
+\insitu, \abinitio}
-\IUPAC{\Dfi-Wein\|säure} = \IUPAC{\cip{2S,3S}-Wein\|säure}, \IUPAC{\Dfi-($-$)-Threose} = \IUPAC{\cip{2S,3R}-($-$)-2,3,4\-Tri\|hydroxy\|butanal}
+Falls `chemstyle' nicht geladen wurde, werden sie \textit{kursiv} gesetzt.
-Im letzten Beispiel wurde der Befehl \lstinline=\IUPAC= des Pakets \paket{bpchem} eingesetzt.
+\section{Einheiten für `siunitx'}\label{sec:einheiten}
+\NEU[1.1]Manche nicht-SI-Einheiten sind in der Chemie sehr gebräuchlich. `siunitx' bietet den Befehl \lstinline=\DeclareSIUnit{<command>}{<unit>}=, mit dem man beliebige Einheiten definieren kann. `\CMname' stellt einige damit definierte Einheiten zur Verfügung. Wie alle `siunitx'-Einheiten sind sie nur innerhalb von \lstinline=\SI{<num>}{<unit>}= und \lstinline=\si{<unit>}= definiert.
+\begin{itemize}
+ \item\lstinline=\atmosphere= \si{\atmosphere}
+ \item\lstinline=\atm= \si{\atm}
+ \item\lstinline=\calory= \si{\calory}
+ \item\lstinline=\cal= \si{\cal}
+ \item\lstinline=\cmc= \si{\cmc} {}\footnote[1]{Diese Einheiten werden auch durch `chemstyle' definiert. Sie werden durch `\CMname' nur definiert, wenn `chemstyle' nicht geladen wird.}
+ \item\lstinline=\molar= \si{\molar} {}\footnotemark[1]
+ \item\lstinline=\moLar= \si{\moLar}
+ \item\lstinline=\Molar= \si{\Molar} {}\footnotemark[1]
+ \item\lstinline=\MolMass= \si{\MolMass}
+ \item\lstinline=\normal= \si{\normal}
+ \item\lstinline=\torr= \si{\torr}
+\end{itemize}
+Übrigens: \lstinline=\mmHg= \si{\mmHg} ist durch `siunitx' und `chemstyle' bereits definiert.
+
+\section{Säure/Base}\label{sec:saeure_base}
+\NEU[1.1]Einfache Darstellung von \pH, \pKa \ldots
+\begin{itemize}
+ \item\lstinline=\pH= \pH
+ \item\lstinline=\pOH= \pOH
+ \item\lstinline=\pKa[<num>]= \lstinline=\pKa= \pKa, \lstinline=\pKa[1]= \pKa[1]
+ \item\lstinline=\pKb[<num>]= \lstinline=\pKb= \pKb, \lstinline=\pKb[1]= \pKb[1]
+\end{itemize}
+Diese Befehle sind sowohl im Text- wie im Mathematikmodus und im \lstinline=\ce=-Befehl von `mhchem' einsetzbar. Der Befehl \lstinline=\pKa= hängt von der Paketoption \lstinline=german= ab, siehe Abschnitt \ref{sec:optionen}.
\section{Oxidationszahlen und (echte) Ladungen}\label{sec:ladungen}
\subsection{Ionenladungen}\label{ssec:ionen}
Einfaches Darstellen von Ladungen:
\begin{itemize}
- \item\lstinline=\pch[<number>]= positive Ladung (\textbf{p}lus + \textbf{ch}arge), \lstinline=\pch, Na\pch, Ca\pch[2]= \pch, Na\pch, Ca\pch[2]
- \item\lstinline=\mch[<number>]= negative Ladung (\textbf{m}inus + \textbf{ch}arge), \lstinline=\mch, F\mch, S\mch[2]= \mch, F\mch, S\mch[2]
+ \item\lstinline=\pch[<number>]= positive Ladung (\textbf{p}lus + \textbf{ch}arge):\lstinline=\pch= \pch, \lstinline=Na\pch= Na\pch, \lstinline=Ca\pch[2]= Ca\pch[2]
+ \item\lstinline=\mch[<number>]= negative Ladung (\textbf{m}inus + \textbf{ch}arge): \lstinline=\mch= \mch, \lstinline=F\mch= F\mch, \lstinline=S\mch[2]= S\mch[2]
\end{itemize}
\subsection{Oxidationszahlen}\label{ssec:oxidationszahlen}
@@ -218,100 +312,146 @@ Auch die beiden folgenden Makros sind v.a. beim Einsatz mit `chemfig' nützlich.
\end{itemize}
Zum Beispiel:
\begin{lstlisting}
- {\setatomsep{1.8em}\chemfig{CH_3-CH_2-\chemabove{\lewis{026,O}}{\hspace{5mm}\scrm}}}
+ {\setatomsep{1.8em}\chemfig{CH_3-\chemabove{C}{\scrp}(-[6]C|H_3)-\vphantom{H_3}CH_3}}
+\end{lstlisting}
+{\setatomsep{1.8em}\chemfig{CH_3-\chemabove{C}{\scrp}(-[6]C|H_3)-\vphantom{H_3}CH_3}}
+
+\section{Reaktionsmechanismen}\label{sec:mechanismen}
+\NEU[1.1]Der Befehl
+\begin{lstlisting}
+ \mech[<type>]
\end{lstlisting}
-{\setatomsep{1.8em}\chemfig{CH_3-CH_2-\chemabove{\lewis{026,O}}{\hspace{5mm}\scrm}}}
+erlaubt die Angabe der verbreitetsten Reaktionsmechanismen. \lstinline=<type>= kann einer der folgenden Werte annehmen:
+\begin{itemize}
+ \item\lstinline+<type>=+ (leer, kein opt. Argument) nukleophile Substitution \lstinline=\mech= \mech
+ \item\lstinline+<type>=1+ unimolekulare nukleophile Substitution \lstinline=\mech[1]= \mech[1]
+ \item\lstinline+<type>=2+ bimolekulare nukleophile Substitution \lstinline=\mech[2]= \mech[2]
+ \item\lstinline+<type>=se+ elektrophile Substitution \lstinline=\mech[se]= \mech[se]
+ \item\lstinline+<type>=1e+ unimolekulare elektrophile Substitution \lstinline=\mech[1e]= \mech[1e]
+ \item\lstinline+<type>=2e+ bimolekulare elektrophile Substitution \lstinline=\mech[2e]= \mech[2e]
+ \item\lstinline+<type>=ar+ elektrophile Substitution am Aromaten \lstinline=\mech[ar]= \mech[ar]
+ \item\lstinline+<type>=e+ Eliminierung \lstinline=\mech[e]= \mech[e]
+ \item\lstinline+<type>=1+ unimolekulare Eliminierung \lstinline=\mech[e1]= \mech[e1]
+ \item\lstinline+<type>=2+ bimolekulare Eliminierung \lstinline=\mech[e2]= \mech[e2]
+ \item\lstinline+<type>=cb+ unimolekulare Eliminierung "`conjugated base"', also über Carbanion als Zwischenstufe \lstinline=\mech[cb]= \mech[cb]
+\end{itemize}
+Dieser Befehl ist auch in Mathematikumgebungen und im \lstinline=\ce=-Befehl von `mhchem' einsetzbar.
+\begin{lstlisting}
+ $\mech[cb]$ \ce{\mech[2]} \ce{\mech[ar]}
+\end{lstlisting}
+$\mech[cb]$ \ce{\mech[2]} \ce{\mech[ar]}
\section{Redoxreaktionen}\label{sec:redoxreaktionen}
-\CMname\ stellt zwei Befehle zur Verfügung\footnote{Dank an \href{http://www.mathannotated.com/}{Peter Cao}, der das Feature vorschlug.}, mit denen die Elektronenübertragungen bei Redoxreaktionen angezeigt werden können. Beide Befehle verwenden `Ti\textbf{\textit{k}}Z', der zweite benötigt außerdem die Tikzlibrary `calc', \textbf{die daher in der Präambel geladen werden muss}.
+`\CMname' stellt zwei Befehle zur Verfügung\footnote{Dank an \href{http://www.mathannotated.com/}{Peter Cao}, der das Feature vorschlug.}, mit denen die Elek\-tro\-nen\-ü\-ber\-tra\-gungen bei Redoxreaktionen angezeigt werden können. Die Befehle verwenden `\TikZ'.
\begin{lstlisting}
\OX{<name>,<atom>}
\redox(<name1>,<name2>)[<tikz>][<dim>]{<text>}
\end{lstlisting}
-Mit \lstinline=\OX= wird ein \lstinline=<atom>= in eine Node geschrieben, die den Namen \lstinline=<name>= bekommt. Hat man zwei \lstinline=\OX= gesetzt, können Sie mit \lstinline=\redox= mit einen Linie verbunden werden. Dazu werden die Namen der zu verbindenen Nodes in die Runden Klammern geschrieben. Da \lstinline=\redox= ein Tikzpicture mit den Optionen \lstinline=remember picture,overlay= zeichnet, muss das Dokument \emph{mindestens zweimal kompiliert} werden.
+Mit \lstinline=\OX= wird ein \lstinline=<atom>= in eine Node geschrieben, die den Namen \lstinline=<name>= bekommt. Hat man zwei \lstinline=\OX= gesetzt, können Sie durch \lstinline=\redox= mit einen Linie verbunden werden. Dazu werden die Namen der zu verbindenen Nodes in die Runden Klammern geschrieben. Da \lstinline=\redox= ein Tikzpicture mit den Optionen \lstinline=remember picture,overlay= zeichnet, muss das Dokument \emph{mindestens zweimal kompiliert} werden.
\begin{lstlisting}
\OX{a,Na} $\rightarrow$ \OX{b,Na}\pch\redox(a,b){oxidation}
\end{lstlisting}
\OX{a,Na} $\rightarrow$ \OX{b,Na}\pch\redox(a,b){oxidation}
-Die Linie kann via \lstinline=<tikz>= mit Ti\textbf{\textit{k}}Z-Keys angepasst werden:
+Die Linie kann via \lstinline=<tikz>= mit `\TikZ'-Keys angepasst werden:
\begin{lstlisting}
- \begin{center}
- \OX{a,Na} $\rightarrow$ \OX{b,Na}\pch\redox(a,b)[->,red]{ox}\redox(a,b)[<-,blue][-.6em]{red}
- \end{center}
+ \OX{a,Na} $\rightarrow$ \OX{b,Na}\pch\redox(a,b)[->,red]{ox}
\end{lstlisting}
-\begin{center}
- \OX{a,Na} $\rightarrow$ \OX{b,Na}\pch\redox(a,b)[->,red]{ox}\redox(a,b)[<-,blue][-.6em]{red}
-\end{center}
+\OX{a,Na} $\rightarrow$ \OX{b,Na}\pch\redox(a,b)[->,red]{ox}
-Mit \lstinline=<dim>= kann die Länge der vertikalen Linie festgelegt werden. Diese ist per Default \lstinline=.6em= lang. Gibt man hier einen negativen Wert an, wird die Linie \emph{unterhalb} des Textes geschrieben.
+\NEU[1.1]Mit \lstinline=<dim>= kann die Länge der vertikalen Linie festgelegt werden. Diese ist per Default \lstinline=.6em= lang. Diese Default-Länge wird mit \lstinline=<dim>= multipliziert. Gibt man hier einen negativen Wert an, wird die Linie \emph{unterhalb} des Textes geschrieben.
\begin{lstlisting}
\OX{a,Na} $\rightarrow$ \OX{b,Na}\pch
- \redox(a,b)[->]{ox}
- \redox(a,b)[<-][-.6em]{red}
+ \redox(a,b)[->,red]{ox}
+ \redox(a,b)[<-,blue][-1]{red}
\end{lstlisting}
\OX{a,Na} $\rightarrow$ \OX{b,Na}\pch
\redox(a,b)[->,red]{ox}
-\redox(a,b)[<-,blue][-.6em]{red}
-\vskip1cm
+\redox(a,b)[<-,blue][-1]{red}
+\vskip2mm
+
+Die Default-Länge der vertikalen Linien kann mit \lstinline=\setredoxdist{<length>}= angepasst werden:
+\begin{lstlisting}
+ \OX{a,A} $\rightarrow$ \OX{b,B}
+ \redox(a,b){}
+ \bigskip
+ \setredoxdist{1em}
+ \OX{a,A} $\rightarrow$ \OX{b,B}
+ \redox(a,b){}
+\end{lstlisting}
+{\OX{a,A} $\rightarrow$ \OX{b,B}
+\redox(a,b){}
+\bigskip
+\setredoxdist{1em}
+\OX{a,A} $\rightarrow$ \OX{b,B}
+\redox(a,b){}}
+
+Mit einem leeren Argument wird die Voreinstellung wieder hergestellt.
+
Die Befehle funktionieren auch mit dem `mhchem'-Befehl \lstinline=\ce= und in Verbindung mit dem \lstinline=\ox=-Befehl (Abschnitt \ref{ssec:oxidationszahlen}).
\begin{lstlisting}
\ce{ 2 \OX{o1,Na} + \OX{r1,Cl2} -> 2 \OX{o2,Na}\pch + 2 \OX{r2,Cl}\mch }
\redox(o1,o2){\small OX: $- 2\el$}
- \redox(r1,r2)[][-.6em]{\small RED: $+ 2\el$}
+ \redox(r1,r2)[][-1]{\small RED: $+ 2\el$}
+\end{lstlisting}
+\ce{ 2 \OX{o1,Na} + \OX{r1,Cl2} -> 2 \OX{o2,Na}\pch + 2 \OX{r2,Cl}\mch }
+\redox(o1,o2){\small OX: $- 2\el$}
+\redox(r1,r2)[][-1]{\small RED: $+ 2\el$}
+\vskip1cm
- \vskip2cm
+\begin{lstlisting}
\ce{ 2 \OX{o1,\ox{0,Na}} + \OX{r1,\ox{0,Cl2}} -> 2 \OX{o2,\ox{+I,Na}}\pch + 2 \OX{r2,\ox{-I,Cl}}\mch }
\redox(o1,o2){\small OX: $- 2\el$}
- \redox(r1,r2)[][-.6em]{\small RED: $+ 2\el$}
+ \redox(r1,r2)[][-1]{\small RED: $+ 2\el$}
+\end{lstlisting}
+\ce{ 2 \OX{o1,\ox{0,Na}} + \OX{r1,\ox{0,Cl2}} -> 2 \OX{o2,\ox{+I,Na}}\pch + 2 \OX{r2,\ox{-I,Cl}}\mch }
+\redox(o1,o2){\small OX: $- 2\el$}
+\redox(r1,r2)[][-1]{\small RED: $+ 2\el$}
+\vskip1cm
- \vskip3cm
+\begin{lstlisting}
\ce{ 2 \OX{o1,\ox{0,Na}} + \OX{r1,\ox{0,Cl2}} -> 2 \OX{o2,\ox{+I,Na}}\pch + 2 \OX{r2,\ox{-I,Cl}}\mch }
- \redox(o1,o2)[draw=red,->][2em]{\small OX: $- 2\el$}
+ \redox(o1,o2)[draw=red,->][3.33]{\small OX: $- 2\el$}
\redox(r1,r2)[draw=blue,->]{\small RED: $+ 2\el$}
+\end{lstlisting}
+\vskip1cm
+\ce{ 2 \OX{o1,\ox{0,Na}} + \OX{r1,\ox{0,Cl2}} -> 2 \OX{o2,\ox{+I,Na}}\pch + 2 \OX{r2,\ox{-I,Cl}}\mch }
+\redox(o1,o2)[draw=red,->][3.33]{\small OX: $- 2\el$}
+\redox(r1,r2)[draw=blue,->]{\small RED: $+ 2\el$}
- \vskip1cm
+\begin{lstlisting}
\ce{ 2 \OX{o1,\ox{0,Na}} + \OX{r1,\ox{0,Cl2}} -> 2 \OX{o2,\ox{+I,Na}}\pch + 2 \OX{r2,\ox{-I,Cl}}\mch }
\redox(o1,o2)[green,-stealth]{\small OX: $- 2\el$}
- \redox(r1,r2)[purple,-stealth][-.6em]{\small RED: $+ 2\el$}
+ \redox(r1,r2)[purple,-stealth][-1]{\small RED: $+ 2\el$}
\end{lstlisting}
-\ce{ 2 \OX{o1,Na} + \OX{r1,Cl2} -> 2 \OX{o2,Na}\pch + 2 \OX{r2,Cl}\mch }
-\redox(o1,o2){\small OX: $- 2\el$}
-\redox(r1,r2)[][-.6em]{\small RED: $+ 2\el$}
-
-\vskip2cm
-\ce{ 2 \OX{o1,\ox{0,Na}} + \OX{r1,\ox{0,Cl2}} -> 2 \OX{o2,\ox{+I,Na}}\pch + 2 \OX{r2,\ox{-I,Cl}}\mch }
-\redox(o1,o2){\small OX: $- 2\el$}
-\redox(r1,r2)[][-.6em]{\small RED: $+ 2\el$}
-
-\vskip3cm
\ce{ 2 \OX{o1,\ox{0,Na}} + \OX{r1,\ox{0,Cl2}} -> 2 \OX{o2,\ox{+I,Na}}\pch + 2 \OX{r2,\ox{-I,Cl}}\mch }
-\redox(o1,o2)[draw=red,->][2em]{\small OX: $- 2\el$}
-\redox(r1,r2)[draw=blue,->]{\small RED: $+ 2\el$}
-
+\redox(o1,o2)[red,-stealth]{\small OX: $- 2\el$}
+\redox(r1,r2)[blue,-stealth][-1]{\small RED: $+ 2\el$}
\vskip1cm
-\ce{ 2 \OX{o1,\ox{0,Na}} + \OX{r1,\ox{0,Cl2}} -> 2 \OX{o2,\ox{+I,Na}}\pch + 2 \OX{r2,\ox{-I,Cl}}\mch }
-\redox(o1,o2)[green,-stealth]{\small OX: $- 2\el$}
-\redox(r1,r2)[purple,-stealth][-.6em]{\small RED: $+ 2\el$}
\section{(Standard) Zustand, Thermodynamik}\label{sec:standardstate}
-\subsection{Mit `siunitx'}\label{ssec:siunitx}
-Wenn das Paket `siunitx' geladen ist, stehen die folgenden Befehle zur Verfügung:
+\subsection{Thermodynamische Größen}\label{ssec:siunitx}
+Die folgenden Befehle verwenden `siunitx':
\begin{itemize}
- \item\lstinline=\Enthalpy[<kind>,<exponent>,<unit>]{<value>}=
- \item\lstinline=\Entropy[<kind>,<exponent>,<unit>]{<value>}=
- \item\lstinline=\Gibbs[<kind>,<exponent>,<unit>]{<value>}=
+ \item\lstinline=\Enthalpy[<sub>,<sup>,<unit>,<subscript pos>]{<value>}=
+ \item\lstinline=\Entropy[<sub>,<sup>,<unit>,<subscript pos>]{<value>}=
+ \item\lstinline=\Gibbs[<sub>,<sup>,<unit>,<subscript pos>]{<value>}=
\end{itemize}
-Ihr Einsatz ist eigentlich selbsterklärend: mit \lstinline=\Enthalpy{123}= wird \Enthalpy{123} gesetzt. Möchte man genauer spezifizieren, wofür die Enthalpie gelten soll, kann man das über das erste optionale Argument machen:\\
-\lstinline=\Enthalpy[r]{123}= \Enthalpy[r]{123}.
+Ihr Einsatz ist eigentlich selbsterklärend:\\
+mit \lstinline=\Enthalpy{123}= wird \Enthalpy{123} gesetzt.\\
+Möchte man genauer spezifizieren, wofür die Enthalpie gelten soll (Reaktion, Bildung, \ldots), kann man das über das erste optionale Argument (\lstinline=<sub>=) machen:\\
+\lstinline=\Enthalpy[r]{123}= \Enthalpy[r]{123}\\
+\lstinline=\Enthalpy[Subl.,,,right]{123}= \Enthalpy[Subl.,,,right]{123}
+
+\NEU[1.1]Im letzten Beispiel haben Sie auch gleich den Einsatz des vierten optionalen Arguments (\lstinline=<subscript pos>=) gesehen: es bestimmt, ob das Subskript links oder rechts von Symbol eingesetzt wird und kann die Werte \lstinline=left= (oder leer) oder \lstinline=right= annehmen.
-Das Standardzustandssymbol kann durch das zweite optionale Argument ersetzt werden\ldots\\
-\lstinline=\Enthalpy[,0]{123}= \Enthalpy[,0]{123}\\
-\ldots und wird sowieso nur dann als Standardzustand gesetzt, wenn das Paket `chemstyle' geladen wurde, siehe Abschnitt \ref{ssec:state}.
+Das Standardzustandssymbol kann durch das zweite optionale Argument (\lstinline=<sup>=) ersetzt werden\ldots\\
+\lstinline=\Enthalpy[,\transitionstatesymbol]{123}= \Enthalpy[,\transitionstatesymbol]{123}\\
+\ldots und ist sonst abhängig davon, ob das Paket `chemstyle' geladen wurde, siehe Abschnitt \ref{standardstate}.
-Mit dem dritten optionalen Argument schließlich kann die Einheit geändert werden:\\
-\lstinline=\Enthalpy[,kcal/mol]{123}= \Enthalpy[,,kcal/mol]{123}\\
-Die Einheit wird jeweils entsprechend der Regeln von `siunitx' gesetzt und hängt von den dort gewählten Otionen ab.
+Mit dem dritten optionalen Argument (\lstinline=<unit>=) schließlich kann die Einheit geändert werden:\\
+\lstinline=\Enthalpy[,,\kilo\calory\per\mole]{123}= \Enthalpy[,,\kilo\calory\per\mole]{123}\\
+Die Einheit wird jeweils entsprechend der Regeln von `siunitx' gesetzt und hängt von den dort gewählten Optionen ab.
\begin{lstlisting}
\Enthalpy{-1234.56e3}\par
\sisetup{per-mode=symbol,exponent-product=\cdot,output-decimal-marker={,},group-four-digits=true}
@@ -327,13 +467,20 @@ Ganz entsprechendes gilt für
\end{lstlisting}
\Entropy{12.3}, \Gibbs{-12.3}.
-Mit dem Befehl \lstinline=\setnewstate[<standard exponent>,<Delta symbol>]{<name>}{<symbol>}{<unit>}= können Sie auch neue entsprechende Befehle festlegen:
+\subsubsection{Neue Größen definieren}
+Mit dem Befehl
+\begin{lstlisting}
+ \setnewstate[<standard sup>,<Delta symbol>,<subscript pos>]{<name>}{<symbol>}{<unit>}
+\end{lstlisting}
+können Sie auch neue entsprechende Befehle festlegen:
\begin{lstlisting}
\setnewstate{Helmholtz}{A}{\kilo\joule\per\mole}
- \setnewstate{ElPot}{E}{Volt}
- \Helmholtz{123.4} \ElPot{-1.1}
+ \setnewstate[ ,,right]{ElPot}{E}{\volt}
+ \Helmholtz{123.4} \ElPot{-1.1} \ElPot[\ce{Sn}|\ce{Sn \pch[2]}||\ce{Pb \pch[2]}|\ce{Pb},0]{0.01}
\end{lstlisting}
-{\setnewstate{Helmholtz}{A}{\kilo\joule\per\mole}\setnewstate{ElPot}{E}{Volt}\Helmholtz{123.4} \ElPot{-1.1}}
+{\setnewstate{Helmholtz}{A}{\kilo\joule\per\mole}\setnewstate[ ,,right]{ElPot}{E}{\volt}\Helmholtz{123.4} \ElPot{-1.1} \ElPot[\ce{Sn}|\ce{Sn \pch[2]}||\ce{Pb \pch[2]}|\ce{Pb},0]{0.01}
+
+Wie Sie sehen, hat \lstinline=\ElPot= durch die Definition sein Subskript nun per Default rechts. Natürlich lässt es sich durch Angabe der Option \lstinline=\ElPot[r,,,left]{0.12}= immer noch nach links setzen: \ElPot[r,,,left]{0.12} (auch wenn das in diesem Fall vielleicht wenig sinnvoll ist).}
Tatsächlich wurden
\begin{lstlisting}
@@ -347,28 +494,162 @@ Tatsächlich wurden
\end{lstlisting}
definiert.
-Sie können mit \lstinline=\setnewstate= auch die vordefinierten Befehle überschreiben:
+\subsubsection{Größen umdefinieren}
+\NEU[1.1]Mit
+\begin{lstlisting}
+ \renewstate[<standard sup>,<Delta symbol>,<subscript pos>]{<name>}{<symbol>}{<unit>}
+\end{lstlisting}
+können Sie die vordefinierten Befehle überschreiben:
\begin{lstlisting}
- \setnewstate{Enthalpy}{X}{\joule\per\mole}
+ \renewstate{Enthalpy}{h}{\joule}
\Enthalpy[f]{12.5}
\end{lstlisting}
-{\setnewstate{Enthalpy}{X}{\joule\per\mole}\Enthalpy[f]{12.5}}
+{\renewstate{Enthalpy}{h}{\joule}\Enthalpy[f]{12.5}}
+
+Um thermodynamischen Konventionen zu folgen, könnte man also eine molare und eine absolute Größe definieren:
+\begin{lstlisting}
+ \setnewstate[ ]{enthalpy}{h}{\kilo\joule\per\mole}% molar
+ \renewstate[ ]{Enthalpy}{H}{\kilo\joule}% absolut
+ \enthalpy{-12.3} \Enthalpy{-12.3}
+\end{lstlisting}
+{\setnewstate[ ]{enthalpy}{h}{\kilo\joule\per\mole}% molar
+\renewstate[ ]{Enthalpy}{H}{\kilo\joule}% absolut
+\enthalpy{-12.3} \Enthalpy{-12.3}
+}
\subsection{State}\label{ssec:state}
-Die in Abschnitt \ref{ssec:siunitx} vorgestellten Befehle verwenden alle den auch ohne `siunitx' definierten Befehl
+Die in Abschnitt \ref{ssec:siunitx} vorgestellten Befehle verwenden intern alle den Befehl
+\begin{lstlisting}
+ \State[<sup>,<Delta symbol>,<subscript pos>]{<symbol>}{<subscript>}
+\end{lstlisting}
+Mit diesem Befehl können die thermodynamischen Größen auch ohne Zahl und Einheit angegeben werden. Beachten Sie, dass \lstinline={<subscript>}= ein \emph{optionales} Argument ist.
+
+Beispiele:
+\begin{lstlisting}
+ \State{A}, \State{G}{f}, \State[ ,,right]{E}{\ce{Na}}, \State[\SI{1000}{\celsius}]{H}
+\end{lstlisting}
+\State{A}, \State{G}{f}, \State[ ,,right]{E}{\ce{Na}}, \State[\SI{1000}{\celsius}]{H}
+
+Zugegeben: nicht in jedem Fall ist ist das einfacher oder bequemer als die direkte Eingabe wie zum Beispiel \lstinline=$\Delta E_\ce{Na}$= $\Delta E_\ce{Na}$. Die Beispiele sollen lediglich verdeutlichen, wie der Befehl funktioniert und eingesetzt werden \emph{kann}. Im ersten Fall spart man sicher Zeit gegenüber \lstinline=$\Delta_\mathrm{f}G^\standardstate$= $\Delta_\mathrm{f}G^\standardstate$.
+
+\label{standardstate}Das Standardzustandssymbol \standardstate\ wird nur angezeigt, wenn das Paket `chemstyle' geladen wurde und mit dem Befehl \lstinline=\standardstate= zur Verfügung steht. Sonst wird das Symbol \lstinline=\circ= $\circ$ verwendet. \lstinline=\State{A}{b}=: Wenn `chemstyle' geladen wurde \State{A}{b}, sonst \State[\circ]{A}{b}.
+
+\NEU[1.1]Mit dem Befehl
\begin{lstlisting}
- \State[<exponent>,<Delta symbol>]{<symbol>}{<kind>}
+ \setstatesubscript{<subscript pos>}
\end{lstlisting}
-Mit diesem Befehl können die thermodynamischen Größen auch ohne Zahl und Einheit angegeben werden.
+kann man die Voreinstellung der Subskript-Position festlegen. Wie Sie sicher schon festgestellt haben, ist sie per Default \lstinline=left=.
\begin{lstlisting}
- \State{G}{f}, \State[ ]{E}{}, \State[\SI{1000}{\celsius}]{H}{f}
+ \State{A}{b}\\
+ \setstatesubscript{right}
+ \State{A}{b}
\end{lstlisting}
-\State{G}{f}, \State[ ]{E}{}, \State[\SI{1000}{\celsius}]{H}{f}
+{\State{A}{b}\\
+ \setstatesubscript{right}
+ \State{A}{b}}
-Das Standardzustandssymbol wird nur angezeigt, wenn das Paket `chemstyle' geladen wurde und mit dem Befehl \lstinline=\standardstate= zur Verfügung steht. \lstinline=\State{A}{b}=: Wenn `chemstyle' geladen wurde \State{A}{b}, sonst \State[ ]{A}{b}.
+Diese Einstellung hat \emph{keinen Einfluss} auf die Funktionsweise von \lstinline=\setnewstate= und \lstinline=\renewstate=.
-\section{Umgebungen für `mhchem'}\label{sec:mhchem}
-Falls das Paket `mhchem' geladen wurde, stehen die Umgebungen
+\section{Spektroskopie}\label{sec:spektroskopie}
+\NEU[1.1]Wenn Substanzen darauf untersucht werden, ob sie sind, was sie sein wollen, kommt man in der Regel um die NMR-Spektroskopie nicht herum. Dabei werden die Messergebnisse oft in der Form \NMR(400)[CDCl3] = \num{1.59} (q, 1\ce{H}, \textit{J} = \SI{11.6}{\hertz}, \ce{H}-4)\ldots\ angegeben. `\CMname' stellt einen Befehl zur Verfügung, der diese Angaben vereinfachen soll (verwendet `siunitx').
+\begin{lstlisting}
+ \NMR{<num>,<elem>}(<num>,<unit>)[<solvent>]
+ \NMR*{<num>,<elem>}(<num>,<unit>)[<solvent>]
+\end{lstlisting}
+\emph{Alle} Argumente dieses Befehls sind optional. In der einfachsten Eingabe liefert der Befehl:
+\begin{itemize}
+ \item\lstinline=\NMR= {\NMR} (entspricht weitestgehend dem `bpchem'-Befehl \lstinline=\HNMR=)
+ \item\lstinline=\NMR*= {\NMR*} (Ausgabe ohne \verb=: $\delta$=)
+\end{itemize}
+Mit dem ersten Argument lässt die die Art der NMR ändern:
+\begin{itemize}
+ \item\lstinline=\NMR{13,C}= \NMR{13,C}
+ \item\lstinline=\NMR*{13,C}= \NMR*{13,C}
+\end{itemize}
+Mit dem zweiten Argument kann die bei der Messung verwendete Frequenz (in \si{\mega\hertz}) angegeben werden:
+\begin{itemize}
+ \item\lstinline=\NMR(400)= \NMR(400)
+ \item\lstinline=\NMR*(400)= \NMR*(400)
+\end{itemize}
+Die verwendete Einheit kann durch explizite Angabe geändert werden:
+\begin{itemize}
+ \item\lstinline=\NMR(4e8,\hertz)= \NMR(4e8,\hertz)
+ \item\lstinline=\NMR*(4e8,\hertz)= \NMR*(4e8,\hertz)
+\end{itemize}
+Das Setup von `siunitx' wirkt sich ebenfalls auf diesen Befehl aus:
+\begin{itemize}
+ \item\lstinline+\sisetup{exponent-product=\cdot}\NMR(4e8,\hertz)+ {\sisetup{exponent-product=\cdot}\NMR(4e8,\hertz)}
+ \item\lstinline+\sisetup{exponent-product=\cdot}\NMR*(4e8,\hertz)+ {\sisetup{exponent-product=\cdot}\NMR*(4e8,\hertz)}
+\end{itemize}
+Mit dem dritten Argument schließlich kann der verwendete Standard spezifiziert werden:
+\begin{itemize}
+ \item\lstinline=\NMR[CDCl3]= \NMR[CDCl3]
+ \item\lstinline=\NMR*[CDCl3]= \NMR*[CDCl3]
+\end{itemize}
+Das Lösungsmittel wird abhängig davon, ob Sie `mhchem' verwenden, in den \lstinline=\ce=-Befehl gesetzt. Wenn Sie `mhchem' nicht verwenden, wird der Index nicht automatisch erkannt und Sie müssen die Mathematik-Variante verwenden:
+\begin{itemize}
+ \item\lstinline=\NMR[CDCl$_3$]= \NMR[CDCl$_3$]
+ \item\lstinline=\NMR*[CDCl$_3$]= \NMR*[CDCl$_3$]
+\end{itemize}
+
+Alle Argumente können beliebig kombiniert werden, der Befehl kann außerdem auch im Mathematikmodus verwendet werden.
+
+Wenn Sie wollen, dass das Erscheinungsbild mit dem von `bpchem' übereinstimmt (vgl. `bpchem'-Befehl \lstinline=\HNMR= \HNMR und `\CMname'-Befehl \lstinline=\NMR= \NMR), dann verwenden Sie die Paketoption \lstinline=bpchem= (siehe Abschnitt \ref{sec:optionen}).
+
+Beispiele:
+\begin{lstlisting}
+ \NMR{13,C}(100) \\
+ \NMR*{13,C}(100) \\
+ \NMR*{19,F}[CFCl3] \\
+ \NMR*{19,F}(285)[CFCl3] \\
+ \NMR(400)[CDCl3] = \num{1.59} (q, 1H, \textit{J} = \SI{11.6}{\hertz}, H-4)
+\end{lstlisting}
+\NMR{13,C}(100) \\
+\NMR*{13,C}(100) \\
+\NMR*{19,F}[CFCl3] \\
+\NMR*{19,F}(285)[CFCl3] \\
+\NMR(400)[CDCl3] = \num{1.59} (q, 1H, \textit{J} = \SI{11.6}{\hertz}, H-4)
+
+\section{Befehle für `mhchem'}\label{sec:mhchem}
+Einige Makros sind für den Gebrauch mit `mhchem' gedacht und stehen zur Verfügung, wenn das Paket geladen wird. Bevor sie beschrieben werden einige Worte zur Verwendung von Befehlen innerhalb der \lstinline=\ce=- und \lstinline=\cee=-Befehle. Wohl aufgrund der Art und Weise, wie die Befehle ausgelesen werden, kann es immer wieder zu Schwierigkeiten kommen, vor allem, wenn Befehle mit Argumenten dort eingesetzt werden.
+
+Häufig müssen zum Beispiel Leerstellen gelassen werden:
+\begin{lstlisting}
+ \ce{Na\pch}\\ % kein Problem
+ \ce{Ca\pch[2]}\\ % falsche Darstellung
+ \ce{Ca \pch[2]}\\ % richtige Darstellung
+ \ce{Ca$\pch[2]$} % richtige Darstellung
+\end{lstlisting}
+\ce{Na\pch}\\
+\ce{Ca\pch[2]}\\
+\ce{Ca \pch[2]}\\
+\ce{Ca$\pch[2]$}
+
+In der Regel ist es auch nötig, Argumente mit geschweiften Klammern enden zu lassen:
+\begin{lstlisting}
+ \ce{\mch OMe}\\ % falsche Darstellung
+ \ce{\mch{} OMe}\\ % richtige Darstellung
+ \ce{$\mch$OMe} % richtige Darstellung
+\end{lstlisting}
+\ce{\mch OMe}\\
+\ce{\mch{} OMe}\\
+\ce{$\mch$OMe}
+
+Das betrifft \emph{nicht} nur `\CMname'-Befehle!
+\begin{lstlisting}
+ \ce{A \quad B} \ce{Na2\textbf{O}}\\ % falsche Darstellung
+ \ce{A \quad{} B} \ce{Na2 \textbf{O}}\\ % richtige Darstellung
+ \ce{A $\quad$ B} \ce{Na2 \textbf{O}} % richtige Darstellung
+\end{lstlisting}
+\ce{A \quad B} \ce{Na2\textbf{O}}\\
+\ce{A \quad{} B} \ce{Na2 \textbf{O}}\\
+\ce{A $\quad$ B} \ce{Na2 \textbf{O}}
+
+Wie Sie sehen können, können Sie in den meisten Fällen anstelle der Leerstellen oder geschweiften Klammern die entsprechenden Befehle zwischen \lstinline=$ $= schreiben.
+
+\subsection{Reaktionsumgebungen}\label{ssec:mhchem_reaktionen}
+\subsubsection{Durch `\CMname' definiert}
+Es stehen die Umgebungen\ldots
\begin{lstlisting}
\begin{reaction}
<mhchem code>
@@ -377,7 +658,7 @@ Falls das Paket `mhchem' geladen wurde, stehen die Umgebungen
<mhchem code>
\end{reactions}
\end{lstlisting}
-sowie die Varianten
+\ldots sowie die Varianten\ldots
\begin{lstlisting}
\begin{reaction*}
<mhchem code>
@@ -386,47 +667,51 @@ sowie die Varianten
<mhchem code>
\end{reactions*}
\end{lstlisting}
-zur Verfügung. Die Umgebung \lstinline=reaction=/\lstinline=reaction*= verwendet die Mathematik-Um\-ge\-bung \lstinline=equation=/\lstinline=equation*=, die Umgebung \lstinline=reactions=/\lstinline=reactions*= die Mathematik-Umgebung \lstinline=align=/\lstinline=align*=, um die Reaktionen zu setzen.
+\ldots zur Verfügung. Mit ihnen lassen sich (un)nummerierte Reaktionsgleichungen ähnlich mathematischer Formeln erstellen.
+
+Die Umgebung \verb=reaction=/\verb=reaction*= verwendet die Mathematik-Um\-ge\-bung \lstinline=equation=/\lstinline=equation*= und die Umgebung \verb=reactions=/\verb=reactions*= die Mathematik-Umgebung \lstinline=align=/\lstinline=align*=, um die Reaktionen zu setzen.
+
+Reaktion mit Zähler:
\begin{lstlisting}
- Reaktion mit Zähler:
\begin{reaction}
- H2 + 1/2 O2 -> H2O
+ A -> B
\end{reaction}
- Reaktion ohne Zähler:
- \begin{reaction*}
- C + O2 -> CO2
- \end{reaction*}
- mehrere Reaktionen mit Zähler:
- \begin{reactions}
- Cl2 &-> 2 Cl. \\
- Cl.{} + CH4 &-> HCl + {}.CH3\\
- {}{}.CH3 + Cl2 &-> CH3Cl + Cl.
- \end{reactions}
- mehrere Reaktionen ohne Zähler:
- \begin{reactions*}
- \Hpl + \Hyd &<=>> H2O\\
- SO4 \mch[2] + Ba \pch[2] &-> BaSO4 v
- \end{reactions*}
\end{lstlisting}
-Reaktion mit Zähler:
\begin{reaction}
- H2 + 1/2 O2 -> H2O
+ A -> B
\end{reaction}
Reaktion ohne Zähler:
+\begin{lstlisting}
+ \begin{reaction*}
+ C -> D
+ \end{reaction*}
+\end{lstlisting}
\begin{reaction*}
- C + O2 -> CO2
+ C -> D
\end{reaction*}
-mehrere Reaktionen mit Zähler:
+mehrere ausgerichtete Reaktionen mit Zähler:
+\begin{lstlisting}
+ \begin{reactions}
+ A &-> B + C \\
+ D + E &-> F
+ \end{reactions}
+\end{lstlisting}
\begin{reactions}
- Cl2 &-> 2 Cl. \\
- Cl.{} + CH4 &-> HCl + {}.CH3\\
- {}{}.CH3 + Cl2 &-> CH3Cl + Cl.
+ A &-> B + C \\
+ D + E &-> F
\end{reactions}
-mehrere Reaktionen ohne Zähler:
+mehrere ausgerichtete Reaktionen ohne Zähler:
+\begin{lstlisting}
+ \begin{reactions*}
+ G &-> H + I \\
+ J + K &-> L
+ \end{reactions*}
+\end{lstlisting}
\begin{reactions*}
- \Hpl + \Hyd &<=>> H2O\\
- SO4 \mch[2] + Ba \pch[2] &-> BaSO4 v
+ G &-> H + I \\
+ J + K &-> L
\end{reactions*}
+
Wenn Sie das Aussehen des Zählers ändern wollen, so können Sie \lstinline=\renewtagform{<tagname>}[<format>]{<right delim>}{<left delim>}=\footnote{Durch das Paket `mathtools' zur Verfügung gestellt} verwenden.
\begin{lstlisting}
\renewtagform{CMreaction}[R \textbf]{[}{]}
@@ -440,24 +725,144 @@ Wenn Sie das Aussehen des Zählers ändern wollen, so können Sie \lstinline=\re
\end{reaction}
}
+\subsubsection{Eigene Reaktionen}
+\NEU[1.1]Sie können auch neue Umgebungen selbst festlegen:
+\begin{lstlisting}
+ \newreaction{<name>}{<math name>}
+\end{lstlisting}
+Mit \lstinline=<name>= legen Sie den Namen der neuen Umgebung fest. Bei \lstinline=<math name>= wählen Sie die zu verwendende Mathematik-Umgebung aus.
+
+Der Befehl hat zwei Varianten. Zum einen \lstinline=\newreaction*=. Damit wird auch die entsprechende Sternvariante definiert, vorausgesetzt, die gesternte Mathematik-Umgebung existiert. Wenn nicht, wird es einen Fehler geben.
+
+Zum anderen \lstinline=\newreaction+=. Damit wird eine Umgebung mit Argument zu erstellt. Auch hier gilt: die entsprechende Mathematikumgebung muss bereits ein Argument haben.
+
+Auch die Kombination \lstinline=\newreaction*+= kann verwendet werden.
+
+Die beiden bestehenden Umgebungen sind über\ldots
+\begin{lstlisting}
+ \newreaction*{++reaction++}{equation}
+ \newreaction*{++reactions++}{align}
+\end{lstlisting}
+\ldots definiert.
+
+Nehmen wir einmal an, Sie möchten die Ausrichtungsmöglichkeiten der \lstinline=alignat=-Um\-ge\-bung auch für `mhchem'-Reaktionen nutzen. Sie könnten folgendes tun:
+\begin{lstlisting}
+ \newreaction*+{++reactionsat++}{alignat}
+\end{lstlisting}
+Damit steht nun die Umgebung \verb=reactionsat= zur Verfügung.
+\begin{lstlisting}
+ \begin{reactionsat}{3}
+ A &-> B &&-> C &&-> D \\
+ aaaaa &-> bbbbb &&-> ccccc &&-> ddddd
+ \end{reactionsat}
+ \begin{reactionsat*}{2}
+ A &-> B & C &-> D \\
+ aaaaa &-> bbbbb &\quad{} ccccc &-> ddddd
+ \end{reactionsat*}
+\end{lstlisting}
+\newreaction*+{reactionsat}{alignat}
+\begin{reactionsat}{3}
+ A &-> B &&-> C &&-> D \\
+ aaaaa &-> bbbbb &&-> ccccc &&-> ddddd
+\end{reactionsat}
+\begin{reactionsat*}{2}
+ A &-> B & C &-> D \\
+ aaaaa &-> bbbbb &\quad{} ccccc &-> ddddd
+\end{reactionsat*}
+
+\subsection{Phasen}\label{ssec:mhchem_phasen}
+\NEU[1.1]Folgende Befehle sind für Phasenangaben gedacht. Auch wenn diese Befehle für den Einsatz mit `mhchem' gedacht waren, können sie genauso gut ohne verwendet werden und stehen auch zur Verfügung, wenn `mhchem' nicht geladen wurde.
+\begin{lstlisting}
+ \solid[<anything>] % fest
+ \liquid[<anything>] % flüssig
+ \gas % gasförmig
+ \aq % gelöst in Wasser
+\end{lstlisting}
+Mir war es immer zu umständlich, die Phasenangaben auschreiben zu müssen:
+\begin{lstlisting}
+ \ce{C_{(f)} + 2 H2O_{(fl)} -> CO2_{(g)} + 2 H2_{(g)}}
+\end{lstlisting}
+Dasselbe Ergebnis erhalten Sie daher nun mit
+\begin{lstlisting}
+ \ce{C\solid{} + 2 H2O\liquid{} -> CO2\gas{} + 2 H2\gas}
+\end{lstlisting}
+\ce{C\solid{} + 2 H2O\liquid{} -> CO2\gas{} + 2 H2\gas}
+
+Der Vollständigkeit halber: \lstinline=NaCl\aq= gibt NaCl\aq.
+
+Wenn Sie lieber die englischen Bezeichnungen wollen, müssen Sie entweder auf die Paketoption \lstinline=german= (siehe Abschnitt \ref{sec:optionen}) verzichten, oder die Buchstaben als Argumente angeben:
+\begin{lstlisting}
+ \ce{C \solid[s] + 2 H2O \liquid[l] -> CO2\gas{} + 2 H2\gas}
+\end{lstlisting}
+\ce{C \solid[s] + 2 H2O \liquid[l] -> CO2\gas{} + 2 H2\gas{}}
+
+Natürlich ist es egal, welchen Befehl mit Argument Sie verwenden, da beide lediglich ein Subskript mit Klammern erzeugen. \lstinline=\solid[s]= ist identisch mit \lstinline=\liquid[s]=.
+
+Auch andere Einsätze sind denkbar:
+\begin{lstlisting}
+ C\solid[Graphit]
+\end{lstlisting}
+C\solid[Graphit]
+
+\subsection{Beschriftungen}\label{ssec:mhchem_beschriftung}
+\NEU[1.1]Ein Punkt, der bei `mhchem' bislang ein wenig umständlich war: Beschriften von Molekülen. Dafür stellt `\CMname' nun einen Befehl zur Verfügung:
+\begin{lstlisting}
+ \mhName[<width>][<textattr>]{<mhchem code>}{<name>}
+\end{lstlisting}
+Zum Beispiel:
+\begin{lstlisting}
+ \ce{4 C2H5Cl + Pb / Na -> \mhName{Pb(C2H5)4}{früheres Antiklopfmittel} + NaCl}
+\end{lstlisting}
+\ce{4 C2H5Cl + Pb / Na -> \mhName{Pb(C2H5)4}{früheres Antiklopfmittel} + NaCl}
+
+Wie Sie sehen, wird der Text per Default zentriert und \lstinline=\tiny= unter das Molekül gesetzt, das Molekül nimmt dabei seinen normalen Raum ein. Sie können mit dem ersten optionalen Argument die Breite aber beliebig wählen.
+\begin{lstlisting}
+ \ce{4 C2H5Cl + Pb / Na -> \mhName[3cm]{Pb(C2H5)4}{früheres Antiklopfmittel} + NaCl}
+\end{lstlisting}
+\ce{4 C2H5Cl + Pb / Na -> \mhName[3cm]{Pb(C2H5)4}{früheres Antiklopfmittel} + NaCl}
+
+Die Textattribute sind in der Voreinstellung mit \lstinline=\centering\tiny= festgelegt. Sie wer- den durch Eingabe anderer Attribute direkt zum Text nicht oder nur bedingt über\-schrie\-ben:
+\begin{lstlisting}
+ \ce{4 C2H5Cl + Pb / Na -> \mhName[3cm]{Pb(C2H5)4}{\small früheres Antiklopfmittel} + NaCl}\\
+ \ce{4 C2H5Cl + Pb / Na -> \mhName[3cm]{Pb(C2H5)4}{\raggedright\color{red}\bfseries früheres Antiklopfmittel} + NaCl}
+\end{lstlisting}
+\ce{4 C2H5Cl + Pb / Na -> \mhName[3cm]{Pb(C2H5)4}{\small früheres Antiklopfmittel} + NaCl}\\
+\ce{4 C2H5Cl + Pb / Na -> \mhName[3cm]{Pb(C2H5)4}{\raggedright\color{red}\bfseries früheres Antiklopfmittel} + NaCl}
+
+Durch das zweite optionale Argument lassen sie sich komplett überschreiben:
+\begin{lstlisting}
+ \ce{4 C2H5Cl + Pb / Na -> \mhName[3cm][\small]{Pb(C2H5)4}{früheres Antiklopfmittel} + NaCl}\\
+ \ce{4 C2H5Cl + Pb / Na -> \mhName[3cm][\raggedright\color{red}\bfseries]{Pb(C2H5)4}{früheres Antiklopfmittel} + NaCl}
+\end{lstlisting}
+\ce{4 C2H5Cl + Pb / Na -> \mhName[3cm][\small]{Pb(C2H5)4}{früheres Antiklopfmittel} + NaCl}\\
+\ce{4 C2H5Cl + Pb / Na -> \mhName[3cm][\raggedright\color{red}\bfseries]{Pb(C2H5)4}{früheres Antiklopfmittel} + NaCl}
+
+Um die Voreinstellung global zu ändern, gibt es den Befehl
+\begin{lstlisting}
+ \setmhName{<textattr>}
+\end{lstlisting}
+Damit können Sie die Voreinstellung nach Ihren Vorlieben festlegen:
+\begin{lstlisting}
+ \setmhName{\centering\footnotesize\color{blue}}
+ \ce{4 C2H5Cl + Pb / Na -> \mhName{Pb(C2H5)4}{früheres Antiklopfmittel} + NaCl}
+\end{lstlisting}
+{\setmhName{\centering\footnotesize\color{blue}}
+\ce{4 C2H5Cl + Pb / Na -> \mhName{Pb(C2H5)4}{früheres Antiklopfmittel} + NaCl}}
+
\section{Newman-Projektionen}\label{sec:newman}
Mit dem Befehl
\begin{lstlisting}
\newman[<angle>,<scale>,<tikz>]{<1>,<2>,<3>,<4>,<5>,<6>}
\end{lstlisting}
-lassen sich Newman-Projektionen erstellen (verwendet Ti\textbf{\textit{k}}Z). \textbf{Dazu müssen sie in der Präambel die Tikzlibrary `calc' einbinden}:
-\begin{lstlisting}
- \usetikzlibrary{calc}
-\end{lstlisting}
-Beispiele:
+lassen sich Newman-Projektionen erstellen (verwendet `\TikZ'). Beispiele:
\begin{lstlisting}
\newman{}\par% Standard: gestaffelt
- \newman[165]{}\par% gedreht => ekliptisch
+ \newman[175]{}\par% gedreht um 175 Grad => ekliptisch
\newman{1,2,3,4,5,6} \newman{1,2,3} \newman{,,,4,5,6}\par% mit Atomen
\newman[,.75,draw=blue,fill=blue!20]{}% verkleinert und mit TikZ angepasst
\end{lstlisting}
\newman{}\par
-\newman[165]{}\par
+\newman[175]{}\par
\newman{1,2,3,4,5,6} \newman{1,2,3} \newman{,,,4,5,6}\par
\newman[,.75,draw=blue,fill=blue!20]{}
@@ -471,14 +876,20 @@ Mit einer weiteren Option können die Nodes der Atome gestaltet werden:
Wenn Sie die "`vorderen"' und "`hinteren"' Nodes verschieden gestalten wollen, können Sie noch eine dritte Option verwenden:
\begin{lstlisting}
- \newman[][<tikz front nodes>][[<tikz back nodes>]]{<1>,<2>,<3>,<4>,<5>,<6>}
- % Beispiel:
- \newman[][draw=red,fill=red!20,inner sep=2pt,rounded corners][draw=blue,fill=blue!20,inner sep=2pt,rounded corners]{1,2,3,4,5,6} \newman[170][draw=red,fill=red!20,inner sep=2pt,rounded corners][draw=blue,fill=blue!20,inner sep=2pt,rounded corners]{1,2,3,4,5,6}
+ \newman[][<tikz front nodes>][<tikz back nodes>]{<1>,<2>,<3>,<4>,<5>,<6>}
+\end{lstlisting}
+Beispiele:
+\begin{lstlisting}
+ \newman[][draw=red,fill=red!20,inner sep=2pt,rounded corners][draw=blue,fill=blue!20,inner sep=2pt,rounded corners]{1,2,3,4,5,6}
+\end{lstlisting}
+\newman[][draw=red,fill=red!20,inner sep=2pt,rounded corners][draw=blue,fill=blue!20,inner sep=2pt,rounded corners]{1,2,3,4,5,6}
+\begin{lstlisting}
+ \newman[170][draw=red,fill=red!20,inner sep=2pt,rounded corners][draw=blue,fill=blue!20,inner sep=2pt,rounded corners]{1,2,3,4,5,6}
\end{lstlisting}
-\newman[][draw=red,fill=red!20,inner sep=2pt,rounded corners][draw=blue,fill=blue!20,inner sep=2pt,rounded corners]{1,2,3,4,5,6} \newman[170][draw=red,fill=red!20,inner sep=2pt,rounded corners][draw=blue,fill=blue!20,inner sep=2pt,rounded corners]{1,2,3,4,5,6}
+\newman[170][draw=red,fill=red!20,inner sep=2pt,rounded corners][draw=blue,fill=blue!20,inner sep=2pt,rounded corners]{1,2,3,4,5,6}
\section{p-Orbitale}\label{sec:orbitale}
-\CMname\ stellt auch Befehle zur Verfügung, mit denen p-Orbitale visualisiert werden können.
+`\CMname' stellt auch Befehle zur Verfügung, mit denen p-Orbitale visualisiert werden können.
\begin{lstlisting}
\porb[<size factor>,<color>,<angle>]
\phorb[<size factor>,<color>,<angle>]
@@ -488,15 +899,30 @@ Damit wird ein liegendes oder um \lstinline=<angle>= gedrehtes p-Orbital dargest
\lstinline=\phorb= stellt nur ein halbes Orbital dar: \lstinline=\phorb[,red,90]= \phorb[,red,90]
+Die Größe der dargestellten Orbitale hängt von einer internen Länge ab, die mit \lstinline=\setorbheight{<length>}= eingestellt werden kann und die per Default den Wert \lstinline=1em= hat.
+\begin{lstlisting}
+ \porb\par
+ \setorbheight{2em}\porb
+\end{lstlisting}
+{\porb\par\setorbheight{2em}\porb}
+
+Die Größe kann für ein einzelnes Orbital auch mit dem optionalen Argument \lstinline=<size factor>= festgelegt werden.
+\begin{lstlisting}
+ \porb\par
+ \porb[2]\par
+ \porb[.5]
+\end{lstlisting}
+{\porb\par\porb[2]\par\porb[.5]}
+
Mit den folgenden drei Befehlen stehen die in $x$-, $y$- und $z$-Richtung gedrehten Orbitale zusätzlich als Makro zur Verfügung:
\begin{lstlisting}
\pzorb \qquad \pyorb \qquad \pxorb
\end{lstlisting}
\pzorb \qquad \pyorb \qquad \pxorb
-Durch geeignetes Verschieben lassen sie sich alle an einer Stelle darstellen:
+Da die Orbitale als Tikzpicture mit Option \lstinline=overlay= gezeichnet werden, werden sie alle an dieselbe Stelle gesetzt, wenn man sie nicht verschiebt:
\begin{lstlisting}
- \hspace{2cm}\pxorb\hspace{-.3em}\pyorb\hspace{-.3em}\pzorb
+ \hspace{2cm}\pxorb\pyorb\pzorb
\tikz[overlay]{
\draw[->](0,0)--(1,0)node[right]{$y$};
\draw[dashed](0,0)--(-1,0);
@@ -506,10 +932,10 @@ Durch geeignetes Verschieben lassen sie sich alle an einer Stelle darstellen:
\draw[dashed](0,0)--(.707,.707);
}
\end{lstlisting}
-\hspace{2cm}\pxorb\hspace{-.3em}\pyorb\hspace{-.3em}\pzorb\tikz[overlay]{\draw[->](0,0)--(1,0)node[right]{$y$};\draw[->](0,0)--(0,1)node[above]{$z$};\draw[->](0,0)--(-.707,-.707)node[below left]{$x$};\draw[dashed](0,0)--(-1,0);\draw[dashed](0,0)--(0,-1);\draw[dashed](0,0)--(.707,.707);}
+\hspace{2cm}\pxorb\pyorb\pzorb\tikz[overlay]{\draw[->](0,0)--(1,0)node[right]{$y$};\draw[->](0,0)--(0,1)node[above]{$z$};\draw[->](0,0)--(-.707,-.707)node[below left]{$x$};\draw[dashed](0,0)--(-1,0);\draw[dashed](0,0)--(0,-1);\draw[dashed](0,0)--(.707,.707);}
\vspace{2cm}
-Die Orbitale lassen sich z.\,B. auch zusammen mit `chemfig' einsetzen:
+Die Orbitale lassen sich \zB auch zusammen mit `chemfig' einsetzen:
\begin{lstlisting}
\setorbheight{2em}\setbondoffset{0pt}
\chemfig{?\pzorb-[,1.3]\pzorb-[:30,1.1]\pzorb-[:150,.9]\pzorb-[4,1.3]\pzorb-[:-150,1.1]\pzorb?}\qquad
@@ -520,38 +946,19 @@ Die Orbitale lassen sich z.\,B. auch zusammen mit `chemfig' einsetzen:
\chemfig{?\pzorb-[,1.3]\pzorb-[:30,1.1]\pzorb-[:150,.9]\pzorb-[4,1.3]\pzorb-[:-150,1.1]\pzorb?}\qquad
\chemfig{?\pzorb-[,1.3]{\porb[,,-90]}-[:30,1.1]\pzorb-[:150,.9]{\porb[,,-90]}-[4,1.3]\pzorb-[:-150,1.1]{\porb[,,-90]}?}}
-\section{Paket-Optionen}\label{sec:optionen}
-\CMname\ hat zwei Paketoptionen:
-\begin{itemize}
- \item\lstinline+xspace=<boolean>+ Mit der Option \lstinline+xspace=true+ bekommen folgende Befehle ein \lstinline=\xspace= angehängt:\\
- \lstinline=\Hyd \HtO Text \Hyd, \HtO, Text= \Hyd \HtO Text \Hyd, \HtO, Text\\
- Default: \lstinline+xspace=false+
- \item\lstinline+circled=<boolean>+ Nicht alle mögen Kreise um die Ladungssymbole ($\oplus$ und $\ominus$) sondern bevorzugen sie ohne Kreise ($+$ und $-$). Dieses Verhalten kann mit dieser Option gesteuert werden. Mit \lstinline+circled=false+ verwenden alle Befehle von \CMname\ die Symbole ohne Kreis.\\
- Default: \lstinline+circled=true+
-\end{itemize}
-
\section{Liste der Befehle}\label{sec:befehlsreferenz}
\begin{tabular}{>{\raggedright}p{.35\textwidth}|>{\raggedright}p{.55\textwidth}}\toprule
- \lstinline=\el=, \lstinline=\prt=, \lstinline=\ntr= & Abschnitt \ref{sec:teilchen}: Teilchen, Ionen und ein Symbol\tabularnewline
- \lstinline=\HtO=, \lstinline=\Hpl=, \lstinline=\Hyd= & \tabularnewline
- \lstinline=\transitionstatesymbol= & \tabularnewline\midrule
- \lstinline=\cip=, \lstinline=\Rcip=, \lstinline=\Scip= & Abschnitt \ref{sec:stereo}: Stereo-Deskriptoren, Nomenklatur\tabularnewline
- \lstinline=\Dfi=, \lstinline=\Lfi= & \tabularnewline
- \lstinline=\E=, \lstinline=\Z=, \lstinline=\cis=, \lstinline=\trans= & \tabularnewline
- \lstinline=\Rconf=, \lstinline=\Sconf= & \tabularnewline
- \lstinline=\ortho=, \lstinline=\meta=, \lstinline=\para= & \tabularnewline\midrule
- \lstinline=\delm=, \lstinline=\delp= & Abschnitt \ref{sec:ladungen}: Oxidationszahlen und (echte) Ladungen\tabularnewline
- \lstinline=\mch=, \lstinline=\pch= & \tabularnewline
- \lstinline=\ox= & \tabularnewline
- \lstinline=\scrm=, \lstinline=\scrp= & \tabularnewline\midrule
- \lstinline=\Enthalpy=, \lstinline=\Entropy=, \lstinline=\Gibbs= & Abschnitt \ref{sec:standardstate}: (Standard) Zustand, Thermodynamik\tabularnewline
- \lstinline=\setnewstate= & \tabularnewline
- \lstinline=\State= & \tabularnewline\midrule
- \lstinline=\newman= & Abschnitt \ref{sec:newman}: Newman-Projektionen \tabularnewline\midrule
- \lstinline=\redox=, \lstinline=\OX= & Abschnitt \ref{sec:redoxreaktionen}: Redoxreaktionen \tabularnewline\midrule
- \lstinline=\begin{reaction}=, \lstinline=\begin{reaction*}=, \lstinline=\begin{reactions}=, \lstinline=\begin{reactions*}= & Abschnitt \ref{sec:mhchem}: Umgebungen für `mhchem'\tabularnewline\midrule
- \lstinline=\phorb=, \lstinline=\porb=, \lstinline=\pxorb=, \lstinline=\pyorb=, \lstinline=\pzorb= & Abschnitt \ref{sec:orbitale}: p-Orbitale\tabularnewline
- \lstinline=\setorbheight= & \tabularnewline\bottomrule
+ \lstinline=\el=, \lstinline=\prt=, \lstinline=\ntr=, \lstinline=\HtO=, \lstinline=\water=, \lstinline=\Hpl=, \lstinline=\Hyd=, \lstinline=\Nu=, \lstinline=\El=, \lstinline=\transitionstatesymbol=, \lstinline=\R= & Abschnitt \ref{sec:teilchen}: Teilchen, Ionen und ein Symbol\tabularnewline\midrule
+ \lstinline=\cip=, \lstinline=\Rcip=, \lstinline=\Scip=, \lstinline=\Dfi=, \lstinline=\Lfi=, \lstinline=\E=, \lstinline=\Z=, \lstinline=\cis=, \lstinline=\trans=, \lstinline=\Rconf=, \lstinline=\Sconf=, \lstinline=\ortho=, \lstinline=\meta=, \lstinline=\para=, \lstinline=\insitu=, \lstinline=\abinitio= & Abschnitt \ref{sec:stereo}: Stereo-Deskriptoren, Nomenklatur, lateinische Ausdrücke\tabularnewline\midrule
+ \lstinline=\pH=, \lstinline=\pOH=, \lstinline=\pKa=, \lstinline=\pKb= & Abschnitt \ref{sec:saeure_base}: Säure/Base \tabularnewline\midrule
+ \lstinline=\delm=, \lstinline=\delp=, \lstinline=\mch=, \lstinline=\pch=, \lstinline=\ox=, \lstinline=\scrm=, \lstinline=\scrp= & Abschnitt \ref{sec:ladungen}: Oxidationszahlen und (echte) Ladungen\tabularnewline\midrule
+ \lstinline=\mech= & Abschnitt \ref{sec:mechanismen}: Reaktionsmechanismen \tabularnewline\midrule
+ \lstinline=\redox=, \lstinline=\OX= & Abschnitt \ref{sec:redoxreaktionen}: Redoxreaktionen \tabularnewline\midrule
+ \lstinline=\Enthalpy=, \lstinline=\Entropy=, \lstinline=\Gibbs=, \lstinline=\setnewstate=, \lstinline=\renewstate=, \lstinline=\State=, \lstinline=\setstatesubscript= & Abschnitt \ref{sec:standardstate}: (Standard) Zustand, Thermodynamik \tabularnewline\midrule
+ \lstinline=\NMR= & Abschnitt \ref{sec:spektroskopie}: Spektroskopie \tabularnewline\midrule
+ \lstinline=\begin{reaction}=, \lstinline=\begin{reaction*}=, \lstinline=\begin{reactions}=, \lstinline=\begin{reactions*}=, \lstinline=\newreaction=, \lstinline=\solid=, \lstinline=\liquid=, \lstinline=\gas=, \lstinline=\mhName=, \lstinline=\setmhName= & Abschnitt \ref{sec:mhchem}: Befehle für `mhchem'\tabularnewline\midrule
+ \lstinline=\newman= & Abschnitt \ref{sec:newman}: Newman-Projektionen \tabularnewline\midrule
+ \lstinline=\phorb=, \lstinline=\porb=, \lstinline=\pxorb=, \lstinline=\pyorb=, \lstinline=\pzorb=, \lstinline=\setorbheight= & Abschnitt \ref{sec:orbitale}: p-Orbitale\tabularnewline\bottomrule
\end{tabular}
\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_en.pdf b/Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_en.pdf
index af7a68822ed..96108e08893 100644
--- a/Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_en.pdf
+++ b/Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_en.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_en.tex b/Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_en.tex
index c628602e7ca..6dc5d64d8b6 100644
--- a/Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_en.tex
+++ b/Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_en.tex
@@ -4,7 +4,7 @@
% - a collection of macros to make typesetting chemistry documents more convenient ---- %
% ------------------------------------------------------------------------------------- %
% - Clemens Niederberger -------------------------------------------------------------- %
-% - 2011/05/15 ------------------------------------------------------------------------ %
+% - 2011/06/22 ------------------------------------------------------------------------ %
% ------------------------------------------------------------------------------------- %
% - http://www.mychemistry.eu/ -------------------------------------------------------- %
% - contact@mychemistry.eu ------------------------------------------------------------ %
@@ -30,13 +30,15 @@
% - chemmacros_doc_de.tex, README - %
% ------------------------------------------------------------------------------------- %
\documentclass[parskip=full]{scrartcl}
-\usepackage[ngerman]{babel}
+\usepackage[english]{babel}
\usepackage[utf8]{inputenx}
\usepackage[dvipsnames]{xcolor}
\colorlet{code}{RawSienna}
-\usepackage{listings,url,chemfig,chemstyle,bpchem,siunitx,booktabs}
+\usepackage{listings,url,chemfig,chemstyle,bpchem,booktabs}
+\usepackage[perpage,hang]{footmisc}
+ \renewcommand*\thefootnote{\arabic{footnote})}
\usepackage[version=3,arrows=pgf]{mhchem}
-\usepackage[xspace=true]{chemmacros}
+\usepackage[xspace,circled]{chemmacros}
\usetikzlibrary{calc}
\lstset{literate={ä}{{\"a}}1 {ö}{{\"o}}1 {ü}{{\"u}}1 {Ä}{{\"A}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1 {ß}{{\ss}}1}
\lstset{
@@ -50,14 +52,15 @@
xleftmargin=20pt, % Einrückung links
breaklines=true, % Zeilenumbruch
moredelim=[is][\color{red!25!purple}]{!!}{!!},% Hervorhebung
+ moredelim=[is][\color{black}]{++}{++}, % Hervorhebung der Keywords rückgängig
commentstyle={\color[named]{Gray}},
emph={begin,end}, % Umgebungen hervorheben
emphstyle=\color{red},
keywordstyle=\color{code},
keywordstyle=[20]\color{blue},
- morekeywords=[20]{reaction,reactions},
+ morekeywords=[20]{reaction,reactions,reactionsat},
texcsstyle=[30]\color{code},
- moretexcs=[30]{ce,cf,chemabove,chembelow,chemfig,cip,cis,color,delm,delp,Dfi,draw,E,el,ElPot,ensuremath,Enthalpy,Entropy,Gibbs,gram,Helmholtz,HtO,Hpl,Hyd,IUPAC,joule,kelvin,kilo,lewis,Lfi,liter,mch,meta,milli,mole,newman,node,ntr,nu,ortho,ox,OX,para,pch,per,phorb,porb,prt,pxorb,pyorb,pzorb,Rcip,Rconf,redox,renewtagform,setorbheight,Scip,Sconf,scrm,scrp,setatomsep,setnewstate,sisetup,standardstate,State,text,tikz,trans,transitionstatesymbol,usetikzlibrary,xspace,Z},
+ moretexcs=[30]{abinitio,aq,atm,atmosphere,cal,calory,ce,cee,celsius,cf,chemabove,chembelow,chemfig,cip,cis,cmc,CNMR,color,cstsetup,DeclareSIUnit,delm,delp,Dfi,draw,E,el,El,ElPot,ensuremath,enthalpy,Enthalpy,Entropy,gas,Gibbs,gram,Helmholtz,HNMR,HtO,Hpl,Hyd,insitu,IUPAC,joule,kelvin,kilo,latin,lewis,Lfi,liter,liquid,mch,mech,meta,mhName,milli,mmHg,molar,moLar,Molar,mole,MolMass,newman,newreaction,NMR,node,normal,ntr,nu,Nu,ortho,ox,OX,para,pch,per,pH,pKa,pKb,phorb,pOH,porb,prt,pxorb,pyorb,pzorb,R,Rcip,Rconf,redox,renewstate,renewtagform,setorbheight,Scip,Sconf,scrm,scrp,setatomsep,setbondoffset,setmhName,setnewstate,setorbheight,setstatesubscript,setredoxdist,si,SI,sisetup,solid,standardstate,State,text,tikz,torr,trans,transitionstatesymbol,usetikzlibrary,volt,water,xspace,Z}
}
\usepackage{hyperref}
@@ -73,65 +76,85 @@
pdfcreator={LaTeX}
}
-\newcommand\paket[1]{`#1'\footnote{\url{http://www.ctan.org/pkg/#1}}}
+\newcommand*\paket[1]{`#1'\footnote{\url{http://www.ctan.org/pkg/#1}}}
+\reversemarginpar
+\newcommand*\NEU[1][]{\marginpar{\raggedleft\color{red}NEW \ifx\relax#1\relax\else\normalcolor v.#1\fi}}
\makeatletter
\let\CMname\CM@name%
\makeatother
+\newcommand*\ie{\mbox{i.\,e.}\xspace}
+\newcommand*\TikZ{\mbox{Ti\textbf{\textit{k}}Z}\xspace}
\begin{document}
\begin{titlepage}
\centering
- \Huge\makeatletter\CM@name\ v\CM@version\makeatother
+ \Huge\CMname\ v\makeatletter\CM@version\makeatother
\vskip.5cm
- \large\makeatletter\CM@date\makeatother
+ \Large\makeatletter\CM@date\makeatother
\vskip.5cm
- \Large Clemens \textsc{Niederberger}
+ \large Clemens \textsc{Niederberger}
\vskip.25cm
\normalsize\url{http://www.mychemistry.eu/}\\
\href{mailto:contact@mychemistry.eu}{contact@mychemistry.eu}
\vskip2cm
\begin{abstract}
- `\CMname' is a collection of macros and commands which are intended to make typesetting chemistry documents faster and more convenient. This includes some nomenclature commands, oxidation numbers, thermodynamic data, newman projections...
+ `\CMname' is a collection of macros and commands which are intended to make typesetting chemistry documents with \LaTeXe\ faster and more convenient. Coverage includes some nomenclature commands, oxidation numbers, thermodynamic data, newman projections, \etc
\end{abstract}
\end{titlepage}
\tableofcontents
\section{Licence, Requirements}
-\makeatletter\CM@name\ v\CM@version\makeatother\ underlies the The \LaTeX\ project public license\\(\url{http://www.latex-project.org/lppl.txt}).
+`\CMname' v\makeatletter\CM@version\makeatother\ underlies the The \LaTeX\ project public license\\(\url{http://www.latex-project.org/lppl.txt}).
-\CMname\ internally loads the packages \paket{xkeyval}, \paket{amsmath} and `tikz' (Ti\textbf{\textit{k}}Z = \paket{pgf}). If they're missing it will cause an error.
+`\CMname' internally loads the packages \paket{amsmath}, \paket{ifthen}, \paket{siunitx}, \paket{xparse} and `tikz' (\TikZ = \paket{pgf}) as well as the tikzlibrary \lstinline=calc=. If they're missing it will cause an error.
-The definition of some commands depends on which packages have been loaded \emph{before} \CMname\ was loaded. Some commands are only defined if a certain package has been loaded. This concern the packages \paket{mhchem}, \paket{siunitx} and \paket{chemstyle} and the commands from section \ref{sec:teilchen}, \lstinline=\ox= (section \ref{ssec:oxidationszahlen}), the commands from section \ref{sec:standardstate} and the environments drom section \ref{sec:mhchem}.
+`siunitx' needs \LaTeX3 support as provided in the \paket{expl3} and \paket{xpackages} bundles. `xparse' is part of the `xpackages' bundle. This means, that `\CMname' also needs \LaTeX3 support.
+
+The definition of some commands depends on which packages else have been loaded. Some commands are only defined if a certain package has been loaded. This concerns the packages \paket{bpchem}, \paket{chemstyle} and \paket{mhchem}.It is mentioned explicitly in the documentation, if a command has a definition depending on one of these packages.
+
+The package option \lstinline=bpchem= (section \ref{sec:optionen}) needs the package `bpchem' to be available.
The package option \lstinline=xspace= (section \ref{sec:optionen}) needs the package \paket{xspace} to be available.
-If the user loads `mhchem' \emph{before} \CMname, the packages \paket{mathtools} and \paket{environ} are needed.
+If the user loads `mhchem', the packages \paket{mathtools} and \paket{environ} are needed.
-The \lstinline=\redox= command (section \ref{sec:redoxreaktionen}) and the \lstinline=\newman= command (section \ref{sec:newman} need the tikz library `calc' to be loaded.
+\textbf{Please take notice, that the package options have changed with version 1.1.}
-The full functionality should be guaranteed with a preamble like this:
-\begin{lstlisting}
- \usepackage{siunitx,chemstyle}
- \usepackage[version=3,arrows=pgf]{mhchem}
- \usepackage[xspace=true]{chemmacros}
- \usetikzlibrary{calc}
-\end{lstlisting}
+\newpage
+\section{Package Options}\label{sec:optionen}
+\NEU[1.1]`\CMname' has four package options:
+\begin{description}
+ \item[\texttt{bpchem}] With this option first the package `bpchem' is loaded and second the appearance of the \lstinline=\NMR= command is changed to match the `bpchem' commands \lstinline=\HNMR= and \lstinline=\CNMR=. Without option: \NMR; with option: \HNMR;
+ \item[\texttt{circled}] Some chemists -- like me -- prefer circled charge symbols to have a clear distinction between charge and math symbols. In `\CMname's default behaviour they're \emph{not} circled ($+$ und $-$). With the option \lstinline+circled+ all commands of `\CMname' use the circled ones ($\oplus$ und $\ominus$).
+ \item[\texttt{german}] This option changes \lstinline=\pKa= from \mbox{\textsl{p}$K_\mathrm{A}$} into \mbox{\textsl{p}$K_\mathrm{S}$}. Also the phase identifiers \lstinline=\solid= and \lstinline=\liquid= are changed from \solid\ and \liquid\ into \solid[f] and \liquid[f\/l].
+ \item[\texttt{xspace}] With this option, the following commands get a \lstinline=\xspace=: \lstinline=\Hpl= \lstinline=\HtO= \lstinline=\water= \lstinline=\Hyd= \lstinline=\HtO= \lstinline=\pH= \lstinline=\pOH= \lstinline=\pKa= \lstinline=\pKb= \lstinline=\cis= \lstinline=\trans= \lstinline=\insitu= \lstinline=\abinitio= \lstinline=\mech= \lstinline=\NMR= \Hpl \HtO \water \Hyd \HtO \pH \pOH \pKa \pKb \cis \trans \insitu \abinitio \mech \NMR\\
+ The two commands \lstinline=\cis= and \lstinline=\trans= are also defined by the `bpchem' package. If you load that package, they are redefined by `\CMname'. In the definition of `bpchem' they \textit{always} have a \lstinline=\xspace=, with `\CMname' only with option \lstinline=xspace=. Apart from that they're identical.
+\end{description}
\section{Particles, Ions and a Symbol}\label{sec:teilchen}
-Some simple macros for displaying often needed particles and a symbol:
+Some simple macros for displaying often needed particles and a symbol. Please note, that they're displayed differently depending on the package options used, see section \ref{sec:optionen}.
\begin{itemize}
\item\lstinline=\Hpl= \Hpl (proton)
\item\lstinline=\Hyd= \Hyd (hydroxide)
- \item\lstinline=\HtO= \HtO (oxonium)
+ \item\NEU[1.1]\lstinline=\HtO= \HtO (oxonium) (\textbf{H} \textbf{t}hree \textbf{O})
+ \item\NEU[1.1]\lstinline=\water= \water
\item\lstinline=\el= \el (electron)
\item\lstinline=\prt= \prt (proton)
\item\lstinline=\ntr= \ntr (neutron)
- \item\lstinline=\transitionstatesymbol= \transitionstatesymbol\ transition state symbol (uses Ti\textbf{\textit{k}}Z)
+ \item\NEU[1.1]\lstinline=\Nu= \Nu (nucleophile)
+ \item\NEU[1.1]\lstinline=\El= \El (electrophile)
+ \item\lstinline=\transitionstatesymbol= \transitionstatesymbol\ transition state symbol (uses `\TikZ')
+\end{itemize}
+These commands are working both in text mode and math mode. Depending on wether `mhchem' has been loaded, atoms are defined with the \lstinline=\cf{}= command or with \lstinline=\mbox{}=.
+
+\NEU[1.1]There is another command which allows to typeset radicals with charges and subscripts.
+\begin{itemize}
+ \item\lstinline=\R[<sign>]{<subscript>}= \eg \lstinline=\R[+]{tert} \R[-]{sek} \R{prim}= \R[+]{tert} \R[-]{sek} \R{prim}
\end{itemize}
-These commands are working both in text mode and math mode. Depending on wether `mhchem' has been loaded, the first three particles are defined with the \lstinline=\cf{}= command or with \lstinline=\ensuremath{\text{}}=.
-\section{Stereo Descriptors, Nomenclature}\label{sec:stereo}
+\section{Stereo Descriptors, Nomenclature, Latin Phrases}\label{sec:stereo}
+\subsection{Stereo Descriptors and Nomenclature}
The following macros are intended to make the writing of IUPAC names more convenient:
\begin{itemize}
\item Cahn-Ingold-Prelog:
@@ -149,8 +172,8 @@ The following macros are intended to make the writing of IUPAC names more conven
\begin{itemize}
\item\lstinline=\Z= \Z
\item\lstinline=\E= \E
- \item\lstinline=\cis= \cis
- \item\lstinline=\trans= \trans
+ \item\lstinline=\cis= \cis (This command is also defined by the package `bpchem'. `\CMname' redefines it, see section \ref{sec:optionen}.)
+ \item\lstinline=\trans= \trans (This command is also defined by the package `bpchem'. `\CMname' redefines it, see section \ref{sec:optionen}.)
\end{itemize}
\item ortho/meta/para:
\begin{itemize}
@@ -159,34 +182,105 @@ The following macros are intended to make the writing of IUPAC names more conven
\item\lstinline=\para= \para
\end{itemize}
\end{itemize}
-absolute configuration (uses Ti\textbf{\textit{k}}Z):
+absolute configuration (uses `\TikZ'):
\begin{itemize}
\item\lstinline=\Rconf[<letter>]= \lstinline=\Rconf=: \Rconf \quad\lstinline=\Rconf[]=: \Rconf[]
\item\lstinline=\Sconf[<letter>]= \lstinline=\Sconf=: \Sconf \quad\lstinline=\Sconf[]=: \Sconf[]
\end{itemize}
+Examples:
+\begin{lstlisting}
+ \Dfi-Tartaric Acid = \cip{2S,3S}-Tartaric Acid
+\end{lstlisting}
+\Dfi-Tartaric Acid = \cip{2S,3S}-Tartaric Acid
+\begin{lstlisting}
+ \Dfi-($-$)-Threose = \cip{2S,3R}-($-$)-2,3,4-Trihydroxybutanal
+\end{lstlisting}
+\Dfi-($-$)-Threose = \cip{2S,3R}-($-$)-2,3,4-Trihydroxybutanal
+\begin{lstlisting}
+ \cis-2-Buten = \Z-2-Butene, \cip{2E,4Z}-Hexadiene
+\end{lstlisting}
+\cis-2-Buten = \Z-2-Butene, \cip{2E,4Z}-Hexadiene
\begin{lstlisting}
- \Dfi-Weinsäure = \cip{2S,3S}-Weinsäure, \Dfi-($-$)-Threose = \cip{2S,3R}-($-$)-2,3,4-Trihydroxybutanal\\
- \cis-2-Buten = \Z-2-Butene, \cip{2E,4Z}-Hexadiene\\
\meta-Xylol = 1,3-Dimethylbenzene
-
- % with `bpchem' command \IUPAC:
- \IUPAC{\Dfi-Wein\|säure} = \IUPAC{\cip{2S,3S}-Wein\|säure}, \IUPAC{\Dfi-($-$)-Threose} = \IUPAC{\cip{2S,3R}-($-$)-2,3,4\-Tri\|hydroxy\|butanal}
\end{lstlisting}
-\Dfi-Weinsäure = \cip{2S,3S}-Weinsäure, \Dfi-($-$)-Threose = \cip{2S,3R}-($-$)-2,3,4-Trihydroxybutanal\\
-\cis-2-Buten = \Z-2-Butene, \cip{2E,4Z}-Hexadiene\\
\meta-Xylol = 1,3-Dimethylbenzene
+\begin{lstlisting}
+ % with `bpchem' command \IUPAC:
+ \IUPAC{\Dfi-Tar\|taric Acid} = \IUPAC{\cip{2S,3S}-Tar\|taric Acid}, \IUPAC{\Dfi-($-$)-Threose} = \IUPAC{\cip{2S,3R}-($-$)-2,3,4\-Tri\|hydroxy\|butanal}
+\end{lstlisting}
+\IUPAC{\Dfi-Tar\|taric Acid} = \IUPAC{\cip{2S,3S}-Tar\|taric Acid}, \IUPAC{\Dfi-($-$)-Threose} = \IUPAC{\cip{2S,3R}-($-$)-2,3,4\-Tri\|hydroxy\|butanal}
+
+The last example uses the \lstinline=\IUPAC= command, which is provided by the `bpchem' package.
+
+Of course the appearance depends on the font you chose:
+\begin{lstlisting}
+ \cip{2S,3R} \E \Z \Dfi \Lfi \par
+ \fontfamily{ptm}\selectfont
+ \cip{2S,3R} \E \Z \Dfi \Lfi \par
+ \fontfamily{ppl}\selectfont
+ \cip{2S,3R} \E \Z \Dfi \Lfi
+\end{lstlisting}
+\cip{2S,3R} \E \Z \Dfi \Lfi
+
+\fontfamily{ptm}\selectfont
+\cip{2S,3R} \E \Z \Dfi \Lfi
+
+\fontfamily{ppl}\selectfont
+\cip{2S,3R} \E \Z \Dfi \Lfi
+\fontfamily{cmr}\selectfont
+
+\subsection{Latin Phrases}
+\NEU[1.1]At last there are two commands for common latin phrases.
+\begin{itemize}
+ \item\lstinline=\insitu= \insitu
+ \item\lstinline=\abinitio= \abinitio
+\end{itemize}
+If the package `chemstyle' has been loaded, too\footnote{`chemstyle' defines other similar commands like \etal, \invacuo.}, they are defined using `chemstyle's \lstinline=\latin= command. This means that then the appearance depends on `chemstyle's option \lstinline=abbremph=:
+\begin{lstlisting}
+ \insitu, \abinitio\\
+ \cstsetup{abbremph=false}
+ \insitu, \abinitio
+\end{lstlisting}
+{\insitu, \abinitio\\
+\cstsetup{abbremph=false}
+\insitu, \abinitio}
-\IUPAC{\Dfi-Wein\|säure} = \IUPAC{\cip{2S,3S}-Wein\|säure}, \IUPAC{\Dfi-($-$)-Threose} = \IUPAC{\cip{2S,3R}-($-$)-2,3,4\-Tri\|hydroxy\|butanal}
+If `chemstyle' hasn't been loaded, they're always in \textit{italics}.
-The last example uses the \lstinline=\IUPAC= command, which is provided by the \paket{bpchem} package.
+\section{Units with `siunitx'}\label{sec:einheiten}
+\NEU[1.1]In chemistry some non-SI units are very common. `siunitx' provides the command \lstinline=\DeclareSIUnit{<command>}{<unit>}= to add arbitrary units. `\CMname' uses that command to provide some units. Like all `siunitx' units they're only valid inside \lstinline=\SI{<num>}{<unit>}= and \lstinline=\si{<unit>}=.
+\begin{itemize}
+ \item\lstinline=\atmosphere= \si{\atmosphere}
+ \item\lstinline=\atm= \si{\atm}
+ \item\lstinline=\calory= \si{\calory}
+ \item\lstinline=\cal= \si{\cal}
+ \item\lstinline=\cmc= \si{\cmc} {}\footnote[1]{These units are also defined by `chemstyle'. They are only defined by `\CMname', if `chemstyle' is not loaded.}
+ \item\lstinline=\molar= \si{\molar} {}\footnotemark[1]
+ \item\lstinline=\moLar= \si{\moLar}
+ \item\lstinline=\Molar= \si{\Molar} {}\footnotemark[1]
+ \item\lstinline=\MolMass= \si{\MolMass}
+ \item\lstinline=\normal= \si{\normal}
+ \item\lstinline=\torr= \si{\torr}
+\end{itemize}
+By the way: \lstinline=\mmHg= \si{\mmHg} is already defined by `siunitx'.
+
+\section{Acid/Base}\label{sec:saeure_base}
+\NEU[1.1]Easy representation of \pH, \pKa \ldots
+\begin{itemize}
+ \item\lstinline=\pH= \pH
+ \item\lstinline=\pOH= \pOH
+ \item\lstinline=\pKa[<num>]= \lstinline=\pKa= \pKa, \lstinline=\pKa[1]= \pKa[1]
+ \item\lstinline=\pKb[<num>]= \lstinline=\pKb= \pKb, \lstinline=\pKb[1]= \pKb[1]
+\end{itemize}
+These commands can be used both in text and in math mode as well as inside the \lstinline=\ce=\linebreak command of the `mhchem' package. The command \lstinline=\pKa= depends on the package option \lstinline=german=, see section \ref{sec:optionen}.
\section{Oxidation Numbers and (real) Charges}\label{sec:ladungen}
\subsection{Ion Charges}\label{ssec:ionen}
Simple displaying of charges:
\begin{itemize}
- \item\lstinline=\pch[<number>]= positive charge (\textbf{p}lus + \textbf{ch}arge), \lstinline=\pch, Na\pch, Ca\pch[2]= \pch, Na\pch, Ca\pch[2]
- \item\lstinline=\mch[<number>]= negative charge (\textbf{m}inus + \textbf{ch}arge), \lstinline=\mch, F\mch, S\mch[2]= \mch, F\mch, S\mch[2]
+ \item\lstinline=\pch[<number>]= positive charge (\textbf{p}lus + \textbf{ch}arge): \lstinline=\pch= \pch, \lstinline=Na\pch= Na\pch, \lstinline=Ca\pch[2]= Ca\pch[2]
+ \item\lstinline=\mch[<number>]= negative charge (\textbf{m}inus + \textbf{ch}arge): \lstinline=\mch= \mch, \lstinline=F\mch= F\mch, \lstinline=S\mch[2]= S\mch[2]
\end{itemize}
\subsection{Oxidation Numbers}\label{ssec:oxidationszahlen}
@@ -210,102 +304,153 @@ These macros for example can be used with the \lstinline=\ox= command or with th
\ox{\delp,H}\ox{\delm,Cl}\par
\chemfig{\chemabove[3pt]{\lewis{246,Br}}{\delm}-\chemabove[3pt]{H}{\delp}}
-Also the following macros are useful together with `chemfig'.
+The following macros are useful together with `chemfig', too.
\begin{itemize}
\item\lstinline=\scrp= \scrp (\textbf{scr}iptstyle + \textbf{p}lus)
\item\lstinline=\scrm= \scrm (\textbf{scr}iptstyle + \textbf{m}inus)
\end{itemize}
For example:
\begin{lstlisting}
- {\setatomsep{1.8em}\chemfig{CH_3-CH_2-\chemabove{\lewis{026,O}}{\hspace{5mm}\scrm}}}
+ {\setatomsep{1.8em}\chemfig{CH_3-\chemabove{C}{\scrp}(-[6]C|H_3)-\vphantom{H_3}CH_3}}
+\end{lstlisting}
+{\setatomsep{1.8em}\chemfig{CH_3-\chemabove{C}{\scrp}(-[6]C|H_3)-\vphantom{H_3}CH_3}}
+
+\newpage
+\section{Reaction Mechanisms}\label{sec:mechanismen}
+\NEU[1.1]With the command
+\begin{lstlisting}
+ \mech[<type>]
+\end{lstlisting}
+one can specify the most common reaction mechanisms. \lstinline=<type>= can have one of the following values:
+\begin{itemize}
+ \item\lstinline+<type>=+ (empty, no opt. argument) nucleophilic substitution \lstinline=\mech= \mech
+ \item\lstinline+<type>=1+ unimolecular nucleophilic substitution \lstinline=\mech[1]= \mech[1]
+ \item\lstinline+<type>=2+ bimolecular nucleophilic substitution \lstinline=\mech[2]= \mech[2]
+ \item\lstinline+<type>=se+ electrophilic substitution \lstinline=\mech[se]= \mech[se]
+ \item\lstinline+<type>=1e+ unimolecular electrophilic substitution \lstinline=\mech[1e]= \mech[1e]
+ \item\lstinline+<type>=2e+ bimolecular electrophilic substitution \lstinline=\mech[2e]= \mech[2e]
+ \item\lstinline+<type>=ar+ electrophilic aromatic substitution \lstinline=\mech[ar]= \mech[ar]
+ \item\lstinline+<type>=+ elimination \lstinline=\mech[e]= \mech[e] (probably never to be used)
+ \item\lstinline+<type>=e1+ unimolecular elimination \lstinline=\mech[e1]= \mech[e1]
+ \item\lstinline+<type>=e2+ bimolecular elimination \lstinline=\mech[e2]= \mech[e2]
+ \item\lstinline+<type>=cb+ unimolecular elimination "conjugated base", \ie via carbanion \lstinline=\mech[cb]= \mech[cb]
+\end{itemize}
+This command can also be used in math mode and inside the \lstinline=\ce= command of the `mhchem' package.
+\begin{lstlisting}
+ $\mech[cb]$ \ce{\mech[2]} \ce{\mech[ar]}
\end{lstlisting}
-{\setatomsep{1.8em}\chemfig{CH_3-CH_2-\chemabove{\lewis{026,O}}{\hspace{5mm}\scrm}}}
+$\mech[cb]$ \ce{\mech[2]} \ce{\mech[ar]}
\section{Redox Reactions}\label{sec:redoxreaktionen}
-\CMname\ provides two commands \footnote{Thanks to \href{http://www.mathannotated.com/}{Peter Cao} who suggested the feature.} to visualize the transfer of electrons in redox reactions. Both commands are using `Ti\textbf{\textit{k}}Z', the second also needs the tikz library `calc', \textbf{which thus must be loaded in the preamble}.
+`\CMname' provides two commands\footnote{Thanks to \href{http://www.mathannotated.com/}{Peter Cao} who suggested this feature.} to visualize the transfer of electrons in redox reactions. Both commands are using `\TikZ'.
\begin{lstlisting}
\OX{<name>,<atom>}
\redox(<name1>,<name2>)[<tikz>][<dim>]{<text>}
\end{lstlisting}
-\lstinline=\OX= places \lstinline=<atom>= into a node, which is named with \lstinline=<name>=. If you have set two\lstinline=\OX=, they can be connected with a line using \lstinline=\redox=. To do so the names of the two nodes that shall be connected are written in the round braces. Since \lstinline=\redox= draw a tikzpicture with options \lstinline=remember picture,overlay=, the document needs to be \emph{compiled at least two times}.
+\lstinline=\OX= places \lstinline=<atom>= into a node, which is named with \lstinline=<name>=. If you have set two \lstinline=\OX=, they can be connected with a line using \lstinline=\redox=. To do so the names of the two nodes that are to be connected are written in the round braces. Since \lstinline=\redox= draws a tikzpicture with options \lstinline=remember picture,overlay=, the document needs to be \emph{compiled at least two times}.
\begin{lstlisting}
\OX{a,Na} $\rightarrow$ \OX{b,Na}\pch\redox(a,b){oxidation}
\end{lstlisting}
\OX{a,Na} $\rightarrow$ \OX{b,Na}\pch\redox(a,b){oxidation}
-This line can be customized using Ti\textbf{\textit{k}}Z keys in \lstinline=<tikz>=:
+This line can be customized using `\TikZ' keys in \lstinline=<tikz>=:
\begin{lstlisting}
\OX{a,Na} $\rightarrow$ \OX{b,Na}\pch\redox(a,b)[->,red]{ox}
\end{lstlisting}
\OX{a,Na} $\rightarrow$ \OX{b,Na}\pch\redox(a,b)[->,red]{ox}
-\lstinline=<dim>= can be used to adjust the length of the vertical line. The default value is \lstinline=.6em=. If you use a negative value the line is placed \emph{below} the text.
+\NEU[1.1]\lstinline=<dim>= can be used to adjust the length of the \emph{vertical parts} of the line. The default length is \lstinline=.6em=. This length is multiplied with \lstinline=<dim>=. If you use a negative value the line is placed \emph{below} the text.
\begin{lstlisting}
- \begin{center}
- \OX{a,Na} $\rightarrow$ \OX{b,Na}\pch\redox(a,b)[->,red]{ox}\redox(a,b)[<-,blue][-.6em]{red}
- \end{center}
+ \OX{a,Na} $\rightarrow$ \OX{b,Na}\pch
+ \redox(a,b)[->,red]{ox}
+ \redox(a,b)[<-,blue][-1]{red}
\end{lstlisting}
-\begin{center}
- \OX{a,Na} $\rightarrow$ \OX{b,Na}\pch\redox(a,b)[->,red]{ox}\redox(a,b)[<-,blue][-.6em]{red}
-\end{center}
+\OX{a,Na} $\rightarrow$ \OX{b,Na}\pch
+\redox(a,b)[->,red]{ox}
+\redox(a,b)[<-,blue][-1]{red}
+\vskip3mm
+
+The default length of the vertical lines can be customized with \lstinline=\setredoxdist{<length>}=:
+\begin{lstlisting}
+ \OX{a,A} $\rightarrow$ \OX{b,B}
+ \redox(a,b){}
+ \bigskip
+ \setredoxdist{1em}
+ \OX{a,A} $\rightarrow$ \OX{b,B}
+ \redox(a,b){}
+\end{lstlisting}
+{\OX{a,A} $\rightarrow$ \OX{b,B}
+\redox(a,b){}
+\bigskip
+\setredoxdist{1em}
+\OX{a,A} $\rightarrow$ \OX{b,B}
+\redox(a,b){}}
+
+An empty argument resets the length to the default value.
Both commands also can be used with the `mhchem' command \lstinline=\ce= and with the \lstinline=\ox= command (section \ref{ssec:oxidationszahlen}).
\begin{lstlisting}
\ce{ 2 \OX{o1,Na} + \OX{r1,Cl2} -> 2 \OX{o2,Na}\pch + 2 \OX{r2,Cl}\mch }
\redox(o1,o2){\small OX: $- 2\el$}
- \redox(r1,r2)[][-.6em]{\small RED: $+ 2\el$}
+ \redox(r1,r2)[][-1]{\small RED: $+ 2\el$}
+\end{lstlisting}
+\ce{ 2 \OX{o1,Na} + \OX{r1,Cl2} -> 2 \OX{o2,Na}\pch + 2 \OX{r2,Cl}\mch }
+\redox(o1,o2){\small OX: $- 2\el$}
+\redox(r1,r2)[][-1]{\small RED: $+ 2\el$}
+\vskip1cm
- \vskip2cm
+\begin{lstlisting}
\ce{ 2 \OX{o1,\ox{0,Na}} + \OX{r1,\ox{0,Cl2}} -> 2 \OX{o2,\ox{+I,Na}}\pch + 2 \OX{r2,\ox{-I,Cl}}\mch }
\redox(o1,o2){\small OX: $- 2\el$}
- \redox(r1,r2)[][-.6em]{\small RED: $+ 2\el$}
+ \redox(r1,r2)[][-1]{\small RED: $+ 2\el$}
+\end{lstlisting}
+\ce{ 2 \OX{o1,\ox{0,Na}} + \OX{r1,\ox{0,Cl2}} -> 2 \OX{o2,\ox{+I,Na}}\pch + 2 \OX{r2,\ox{-I,Cl}}\mch }
+\redox(o1,o2){\small OX: $- 2\el$}
+\redox(r1,r2)[][-1]{\small RED: $+ 2\el$}
+\vskip1cm
- \vskip3cm
+\begin{lstlisting}
\ce{ 2 \OX{o1,\ox{0,Na}} + \OX{r1,\ox{0,Cl2}} -> 2 \OX{o2,\ox{+I,Na}}\pch + 2 \OX{r2,\ox{-I,Cl}}\mch }
- \redox(o1,o2)[draw=red,->][2em]{\small OX: $- 2\el$}
+ \redox(o1,o2)[draw=red,->][3.33]{\small OX: $- 2\el$}
\redox(r1,r2)[draw=blue,->]{\small RED: $+ 2\el$}
+\end{lstlisting}
+\vskip1cm
+\ce{ 2 \OX{o1,\ox{0,Na}} + \OX{r1,\ox{0,Cl2}} -> 2 \OX{o2,\ox{+I,Na}}\pch + 2 \OX{r2,\ox{-I,Cl}}\mch }
+\redox(o1,o2)[draw=red,->][3.33]{\small OX: $- 2\el$}
+\redox(r1,r2)[draw=blue,->]{\small RED: $+ 2\el$}
- \vskip1cm
+\begin{lstlisting}
\ce{ 2 \OX{o1,\ox{0,Na}} + \OX{r1,\ox{0,Cl2}} -> 2 \OX{o2,\ox{+I,Na}}\pch + 2 \OX{r2,\ox{-I,Cl}}\mch }
\redox(o1,o2)[green,-stealth]{\small OX: $- 2\el$}
- \redox(r1,r2)[purple,-stealth][-.6em]{\small RED: $+ 2\el$}
+ \redox(r1,r2)[purple,-stealth][-1]{\small RED: $+ 2\el$}
\end{lstlisting}
-\ce{ 2 \OX{o1,Na} + \OX{r1,Cl2} -> 2 \OX{o2,Na}\pch + 2 \OX{r2,Cl}\mch }
-\redox(o1,o2){\small OX: $- 2\el$}
-\redox(r1,r2)[][-.6em]{\small RED: $+ 2\el$}
-
-\vskip2cm
\ce{ 2 \OX{o1,\ox{0,Na}} + \OX{r1,\ox{0,Cl2}} -> 2 \OX{o2,\ox{+I,Na}}\pch + 2 \OX{r2,\ox{-I,Cl}}\mch }
-\redox(o1,o2){\small OX: $- 2\el$}
-\redox(r1,r2)[][-.6em]{\small RED: $+ 2\el$}
-
-\vskip3cm
-\ce{ 2 \OX{o1,\ox{0,Na}} + \OX{r1,\ox{0,Cl2}} -> 2 \OX{o2,\ox{+I,Na}}\pch + 2 \OX{r2,\ox{-I,Cl}}\mch }
-\redox(o1,o2)[draw=red,->][2em]{\small OX: $- 2\el$}
-\redox(r1,r2)[draw=blue,->]{\small RED: $+ 2\el$}
-
+\redox(o1,o2)[red,-stealth]{\small OX: $- 2\el$}
+\redox(r1,r2)[blue,-stealth][-1]{\small RED: $+ 2\el$}
\vskip1cm
-\ce{ 2 \OX{o1,\ox{0,Na}} + \OX{r1,\ox{0,Cl2}} -> 2 \OX{o2,\ox{+I,Na}}\pch + 2 \OX{r2,\ox{-I,Cl}}\mch }
-\redox(o1,o2)[green,-stealth]{\small OX: $- 2\el$}
-\redox(r1,r2)[purple,-stealth][-.6em]{\small RED: $+ 2\el$}
-
+
\section{(Standard) State, Thermodynamics}\label{sec:standardstate}
-\subsection{With `siunitx'}\label{ssec:siunitx}
-If the package `siunitx' has been loaded, the following commands are available:
+\subsection{Thermodynamic Variables}\label{ssec:siunitx}
+The following commands use `siunitx':
\begin{itemize}
- \item\lstinline=\Enthalpy[<kind>,<exponent>,<unit>]{<value>}=
- \item\lstinline=\Entropy[<kind>,<exponent>,<unit>]{<value>}=
- \item\lstinline=\Gibbs[<kind>,<exponent>,<unit>]{<value>}=
+ \item\lstinline=\Enthalpy[<sub>,<sup>,<unit>,<subscript pos>]{<value>}=
+ \item\lstinline=\Entropy[<sub>,<sup>,<unit>,<subscript pos>]{<value>}=
+ \item\lstinline=\Gibbs[<sub>,<sup>,<unit>,<subscript pos>]{<value>}=
\end{itemize}
-Their usage is pretty much self-explaining: \lstinline=\Enthalpy{-123.4}= gives \Enthalpy{-123.4}. If you want to specify what kind of enthalpy (reaction, formation,\ldots) is meant Möchte you can use the first optional argument:\\
-\lstinline=\Enthalpy[r]{-123.4}= \Enthalpy[r]{-123.4}.
+Their usage is pretty much self-explaining:\\
+\lstinline=\Enthalpy{-123.4}= gives \Enthalpy{-123.4}.\\
+If you want to specify what kind of enthalpy (reaction, formation, \ldots) is meant, you can use the first optional argument \lstinline=<sub>=:\\
+\lstinline=\Enthalpy[r]{-123.4}= \Enthalpy[r]{-123.4}\\
+\lstinline=\Enthalpy[vapor.,,,right]{123}= \Enthalpy[vapor.,,,right]{123}
-The standard state symbol can be replaced by the second optional argument\ldots\\
-\lstinline=\Enthalpy[,o]{-123.4}= \Enthalpy[,o]{-123.4}\\
-\ldots and is anyway only set as standard state if the package `chemstyle' has been loaded, see section \ref{ssec:state}.
+\NEU[1.1]In the last example you could see the usage of the fourth optional argument (\lstinline=<subscript pos>=). It is used to specify whether the subscript is placed to the right or to the left of the main symbol. It can have the values \lstinline=left= (or empty) or \lstinline=right=.
-The third optional argument can be used to change the unit:\\
-\lstinline=\Enthalpy[,kcal/mol]{-123.4}= \Enthalpy[,,kcal/mol]{-123.4}\\
+The standard state symbol can be replaced by the second optional argument \lstinline=<sup>=\ldots\\
+\lstinline=\Enthalpy[,\transitionstatesymbol]{-123.4}= \Enthalpy[,\transitionstatesymbol]{-123.4}\\
+\ldots and else depends if the package `chemstyle' has been loaded, see section \ref{standardstatesymbol}.
+
+The third optional argument \lstinline=<unit>= can be used to change the unit:\\
+\lstinline=\Enthalpy[,,\kilo\calory\per\mole]{-123.4}= \Enthalpy[,,\kilo\calory\per\mole]{-123.4}\\
The unit is set corresponding to the rules of `siunitx' and depends on its settings:
\begin{lstlisting}
\Enthalpy{-1234.56e3}\par
@@ -322,13 +467,20 @@ The other two commands work exactly the same way.
\end{lstlisting}
\Entropy{12.3}, \Gibbs{-12.3}.
-You can use the command \lstinline=\setnewstate[<standard exponent>,<Delta symbol>]{<name>}{<symbol>}{<unit>}= to create new corresponding commands:
+\subsubsection{Create New Variables}
+You can use the command
+\begin{lstlisting}
+ \setnewstate[<standard sup>,<Delta symbol>,<subscript pos>]{<name>}{<symbol>}{<unit>}
+\end{lstlisting}
+to create new corresponding commands:
\begin{lstlisting}
\setnewstate{Helmholtz}{A}{\kilo\joule\per\mole}
- \setnewstate{ElPot}{E}{Volt}
- \Helmholtz{123.4} \ElPot{-1.1}
+ \setnewstate[ ,,right]{ElPot}{E}{\volt}
+ \Helmholtz{123.4} \ElPot{-1.1} \ElPot[\ce{Sn}|\ce{Sn \pch[2]}||\ce{Pb \pch[2]}|\ce{Pb},0]{0.01}
\end{lstlisting}
-{\setnewstate{Helmholtz}{A}{\kilo\joule\per\mole}\setnewstate{ElPot}{E}{Volt}\Helmholtz{123.4} \ElPot{-1.1}}
+{\setnewstate{Helmholtz}{A}{\kilo\joule\per\mole}\setnewstate[ ,,right]{ElPot}{E}{\volt}\Helmholtz{123.4} \ElPot{-1.1} \ElPot[\ce{Sn}|\ce{Sn \pch[2]}||\ce{Pb \pch[2]}|\ce{Pb},0]{0.01}
+
+As you can see, \lstinline=\ElPot= has its subscript by definition on the right as default behaviour. Of course you can still place it on the left by using the option \lstinline=\ElPot[r,,,left]{0.12}= \ElPot[r,,,left]{0.12} (even if this example might not make much sense).}
Indeed, the commands
\begin{lstlisting}
@@ -341,28 +493,162 @@ are defined as follows:
\setnewstate{Gibbs}{G}{\kilo\joule\per\mole}
\end{lstlisting}
-With \lstinline=\setnewstate= you also can redefine the existing commands:
+\subsubsection{Redefine Variables}
+\NEU[1.1]With
+\begin{lstlisting}
+ \renewstate[<standard sup>,<Delta symbol>,<subscript pos>]{<name>}{<symbol>}{<unit>}
+\end{lstlisting}
+you can redefine the already existing commands:
\begin{lstlisting}
- \setnewstate{Enthalpy}{X}{\joule\per\mole}
+ \renewstate{Enthalpy}{h}{\joule}
\Enthalpy[f]{12.5}
\end{lstlisting}
-{\setnewstate{Enthalpy}{X}{\joule\per\mole}\Enthalpy[f]{12.5}}
+{\renewstate{Enthalpy}{h}{\joule}\Enthalpy[f]{12.5}}
+
+So -- for following thermodynamic conventions -- one could define a molar and an absolute variable:
+\begin{lstlisting}
+ \setnewstate[ ]{enthalpy}{h}{\kilo\joule\per\mole}% molar
+ \renewstate[ ]{Enthalpy}{H}{\kilo\joule}% absolute
+ \enthalpy{-12.3} \Enthalpy{-12.3}
+\end{lstlisting}
+{\setnewstate[ ]{enthalpy}{h}{\kilo\joule\per\mole}% molar
+\renewstate[ ]{Enthalpy}{H}{\kilo\joule}% absolute
+\enthalpy{-12.3} \Enthalpy{-12.3}
+}
\subsection{State}\label{ssec:state}
The commands presented in section \ref{ssec:siunitx} internally all use the command
\begin{lstlisting}
- \State[<exponent>,<Delta symbol>]{<symbol>}{<kind>}
+ \State[<superscript>,<Delta symbol>,<subscript pos>]{<symbol>}{<subscript>}
+\end{lstlisting}
+It can be used to write the thermodynamic variables without value and unit. Please note that \lstinline={<subscript>}= is an \emph{optional} argument.
+
+Examples:
+\begin{lstlisting}
+ \State{A}, \State{G}{f}, \State[ ,,right]{E}{\ce{Na}}, \State[\SI{1000}{\celsius}]{H}
+\end{lstlisting}
+\State{A}, \State{G}{f}, \State[ ,,right]{E}{\ce{Na}}, \State[\SI{1000}{\celsius}]{H}
+
+I admit: not in every case it is easier or more convenient to use this command instead of the direct typing, for example \lstinline=$\Delta E_\ce{Na}$= $\Delta E_\ce{Na}$. The examples only are intended to show how the command works and what it \emph{can} be used for. The first example surely is typed faster than \lstinline=$\Delta_\mathrm{f}G^\standardstate$= $\Delta_\mathrm{f}G^\standardstate$.
+
+\label{standardstatesymbol}The standard state symbol \standardstate\ is only used, if the package `chemstyle' is loaded, which provides it with the command \lstinline=\standardstate=. Else the symbol \lstinline=\circ= $\circ$ is used. \lstinline=\State{A}{b}=: with `chemstyle' \State{A}{b}, without \State[\circ]{A}{b}.
+
+\NEU[1.1]With the command
+\begin{lstlisting}
+ \setstatesubscript{<subscript pos>}
+\end{lstlisting}
+one can change the predefined value of the subscript postition. You probably have noticed, that its default value is \lstinline=left=.
+\begin{lstlisting}
+ \State{A}{b}\\
+ \setstatesubscript{right}
+ \State{A}{b}
+\end{lstlisting}
+{\State{A}{b}\\
+ \setstatesubscript{right}
+ \State{A}{b}}
+
+This command does \emph{not} change the behaviour of \lstinline=\setnewstate= and \lstinline=\renewstate=.
+
+\section{Spectroscopy}\label{sec:spektroskopie}
+\NEU[1.1]If substances are examined wether they are what they're supposed to, one often needs NMR spectroscopy. Measured results then are written in a way like: \NMR(400)[CDCl3] = \num{1.59}\ldots\ `\CMname' provides a command which simplifies writing this down (uses `siunitx').
+\begin{lstlisting}
+ \NMR{<num>,<elem>}(<num>,<unit>)[<solvent>]
+ \NMR*{<num>,<elem>}(<num>,<unit>)[<solvent>]
+\end{lstlisting}
+\emph{All} arguments are optional! Without arguments we get:
+\begin{itemize}
+ \item\lstinline=\NMR= {\NMR} (very much like the `bpchem' command \lstinline=\HNMR=)
+ \item\lstinline=\NMR*= {\NMR*} (without \verb=: $\delta$=)
+\end{itemize}
+With the first argument you can specify the kind of NMR:
+\begin{itemize}
+ \item\lstinline=\NMR{13,C}= \NMR{13,C}
+ \item\lstinline=\NMR*{13,C}= \NMR*{13,C}
+\end{itemize}
+With the second argument the frequency (in \si{\mega\hertz}) can be specified:
+\begin{itemize}
+ \item\lstinline=\NMR(400)= \NMR(400)
+ \item\lstinline=\NMR*(400)= \NMR*(400)
+\end{itemize}
+You also can change the unit:
+\begin{itemize}
+ \item\lstinline=\NMR(4e8,\hertz)= \NMR(4e8,\hertz)
+ \item\lstinline=\NMR*(4e8,\hertz)= \NMR*(4e8,\hertz)
+\end{itemize}
+Please note that the setup of `siunitx' also has an impact on this command:
+\begin{itemize}
+ \item\lstinline+\sisetup{exponent-product=\cdot}\NMR(4e8,\hertz)+ {\sisetup{exponent-product=\cdot}\NMR(4e8,\hertz)}
+ \item\lstinline+\sisetup{exponent-product=\cdot}\NMR*(4e8,\hertz)+ {\sisetup{exponent-product=\cdot}\NMR*(4e8,\hertz)}
+\end{itemize}
+And finally with the third argument the solvent can be specified:
+\begin{itemize}
+ \item\lstinline=\NMR[CDCl3]= \NMR[CDCl3]
+ \item\lstinline=\NMR*[CDCl3]= \NMR*[CDCl3]
+\end{itemize}
+Depending on wether you use `mhchem' or not, the solvent is written inside the \lstinline=\ce= command. If you don't use `mhchem', the subscript isn't recognized automatically and you need the use the math mode:
+\begin{itemize}
+ \item\lstinline=\NMR[CDCl$_3$]= \NMR[CDCl$_3$]
+ \item\lstinline=\NMR*[CDCl$_3$]= \NMR*[CDCl$_3$]
+\end{itemize}
+
+All arguments can be combined freely, the command can also be used inside math mode.
+
+If you want the appearance to match the ones of `bpchem' (compare `bpchem' command \lstinline=\HNMR= \HNMR to `\CMname' command \lstinline=\NMR= \NMR), you can use the package option \lstinline=bpchem= (see section \ref{sec:optionen}).
+
+Examples:
+\begin{lstlisting}
+ \NMR{13,C}(100) \\
+ \NMR*{13,C}(100) \\
+ \NMR*{19,F}[CFCl3] \\
+ \NMR*{19,F}(285)[CFCl3] \\
+ \NMR(400)[CDCl3] = \num{1.59} (q, 1H, \textit{J} = \SI{11.6}{\hertz}, H-4)
\end{lstlisting}
-which also is available without `siunitx'. It can be used to write the thermodynamic variables without value and unit.
+\NMR{13,C}(100) \\
+\NMR*{13,C}(100) \\
+\NMR*{19,F}[CFCl3] \\
+\NMR*{19,F}(285)[CFCl3] \\
+\NMR(400)[CDCl3] = \num{1.59} (q, 1H, \textit{J} = \SI{11.6}{\hertz}, H-4)
+
+\section{Commands for `mhchem'}\label{sec:mhchem}
+There are some commands which are meant for the use with `mhchem'. They are defined if `mhchem' is loaded. Before they're described some words on using commands inside the \lstinline=\ce= and \lstinline=\cee= commands. Probably due to the way these commands are processed there can be difficulties especially when using commands with arguments.
+
+Often you have to leave blank spaces:
\begin{lstlisting}
- \State{G}{f}, \State[ ]{E}{}, \State[\SI{1000}{\celsius}]{H}{f}, \State[ ,\delta]{+}{}
+ \ce{Na\pch}\\ % no problem
+ \ce{Ca\pch[2]}\\ % displayed wrong
+ \ce{Ca \pch[2]}\\ % displayed right
+ \ce{Ca$\pch[2]$} % displayed right
\end{lstlisting}
-\State{G}{f}, \State[ ]{E}{}, \State[\SI{1000}{\celsius}]{H}{f}, \State[ ,\delta]{+}{}
+\ce{Na\pch}\\
+\ce{Ca\pch[2]}\\
+\ce{Ca \pch[2]}\\
+\ce{Ca$\pch[2]$}
-The standard state symbol \standardstate\ is only used, if the `chemstyle' package has been loaded, which provides it through the command \lstinline=\standardstate=. With `chemstyle': \lstinline=\State{A}{b}= \State{A}{b}, without: \State[ ]{A}{b}.
+You also need to put curly braces at the end of commands:
+\begin{lstlisting}
+ \ce{\mch OMe}\\ % displayed wrong
+ \ce{\mch{} OMe}\\ % displayed right
+ \ce{$\mch$OMe} % displayed right
+\end{lstlisting}
+\ce{\mch OMe}\\
+\ce{\mch{} OMe}\\
+\ce{$\mch$OMe}
-\section{Environments for `mhchem'}\label{sec:mhchem}
-If the package `mhchem' has been loaded the environments
+This is \emph{not} only true for `\CMname' commands!
+\begin{lstlisting}
+ \ce{A \quad B} \ce{Na2\textbf{O}}\\ % displayed wrong
+ \ce{A \quad{} B} \ce{Na2 \textbf{O}}\\ % displayed right
+ \ce{A $\quad$ B} \ce{Na2 \textbf{O}} % displayed right
+\end{lstlisting}
+\ce{A \quad B} \ce{Na2\textbf{O}}\\
+\ce{A \quad{} B} \ce{Na2 \textbf{O}}\\
+\ce{A $\quad$ B} \ce{Na2 \textbf{O}}
+
+As you can see in most cases instead of using blank spaces or curly braces you can also put the according command between \lstinline=$ $=.
+
+\subsection{Reaction Environments}\label{ssec:mhchem_reaktionen}
+\subsubsection{Defined by `\CMname'}
+You can use these environments for numbered\ldots
\begin{lstlisting}
\begin{reaction}
<mhchem code>
@@ -371,7 +657,7 @@ If the package `mhchem' has been loaded the environments
<mhchem code>
\end{reactions}
\end{lstlisting}
-and the starred versions
+\ldots and their starred versions for unnumbered reactions.
\begin{lstlisting}
\begin{reaction*}
<mhchem code>
@@ -380,48 +666,52 @@ and the starred versions
<mhchem code>
\end{reactions*}
\end{lstlisting}
-are defined. \lstinline=reaction=/\lstinline=reaction*= uses the math environment \lstinline=equation=/\lstinline=equation*= and \lstinline=reactions=/\lstinline=reactions*= uses the math environment \lstinline=align=/\lstinline=align*= to display the reactions.
+With them you can create (un)numbered reaction equations similar to mathematical equations.
+
+The environments \verb=reaction=/\verb=reaction*= use the \lstinline=equation=/\lstinline=equation*= environments and the environments \verb=reactions=/\verb=reactions*= use the \lstinline=align=/\lstinline=align*= environments to display the reactions.
+
+Reaction with counter:
\begin{lstlisting}
- reaction with counter:
\begin{reaction}
- H2 + 1/2 O2 -> H2O
+ A -> B
\end{reaction}
- reaction without counter:
- \begin{reaction*}
- C + O2 -> CO2
- \end{reaction*}
- several aligned reactions with counter:
- \begin{reactions}
- Cl2 &-> 2 Cl. \\
- Cl.{} + CH4 &-> HCl + {}.CH3\\
- {}{}.CH3 + Cl2 &-> CH3Cl + Cl.
- \end{reactions}
- several aligned reactions without counter:
- \begin{reactions*}
- \Hpl + \Hyd &<=>> H2O\\
- SO4 \mch[2] + Ba \pch[2] &-> BaSO4 v
- \end{reactions*}
\end{lstlisting}
-reaction with counter:
\begin{reaction}
- H2 + 1/2 O2 -> H2O
+ A -> B
\end{reaction}
-reaction without counter:
+Reaction without counter:
+\begin{lstlisting}
+ \begin{reaction*}
+ C -> D
+ \end{reaction*}
+\end{lstlisting}
\begin{reaction*}
- C + O2 -> CO2
+ C -> D
\end{reaction*}
-several aligned reactions with counter:
+Several aligned reactions with counter:
+\begin{lstlisting}
+ \begin{reactions}
+ A &-> B + C \\
+ D + E &-> F
+ \end{reactions}
+\end{lstlisting}
\begin{reactions}
- Cl2 &-> 2 Cl. \\
- Cl.{} + CH4 &-> HCl + {}.CH3\\
- {}{}.CH3 + Cl2 &-> CH3Cl + Cl.
+ A &-> B + C \\
+ D + E &-> F
\end{reactions}
-several aligned reactions without counter:
+Several aligned reactions without counter:
+\begin{lstlisting}
+ \begin{reactions*}
+ G &-> H + I \\
+ J + K &-> L
+ \end{reactions*}
+\end{lstlisting}
\begin{reactions*}
- \Hpl + \Hyd &<=>> H2O\\
- SO4 \mch[2] + Ba \pch[2] &-> BaSO4 v
+ G &-> H + I \\
+ J + K &-> L
\end{reactions*}
-If you want to change the layout of the counter tags, you can use \lstinline=\renewtagform{<tagname>}[<format>]{<right delim>}{<left delim>}=\footnote{provided by the package `mathtools'}.
+
+If you want to change the layout of the counter tags, you can use \lstinline=\renewtagform{<tagname>}[<format>]{<right delim>}{<left delim>}=\footnote{Provided by the `mathtools' package.}.
\begin{lstlisting}
\renewtagform{CMreaction}[R \textbf]{[}{]}
\begin{reaction}
@@ -434,24 +724,148 @@ If you want to change the layout of the counter tags, you can use \lstinline=\re
\end{reaction}
}
+\subsubsection{Own Reactions}
+\NEU[1.1]You can create new types of reactions with the command:
+\begin{lstlisting}
+ \newreaction{<name>}{<math name>}
+\end{lstlisting}
+\lstinline=<name>= will be the name of the new environment. \lstinline=<math name>= is the used math environment.
+
+The command has variants. The first one is \lstinline=\newreaction*=, which will also define a starred version of the new environment, if the starred math environment exists. If it doesn't exist, this will cause an error.
+
+The second one is \lstinline=\newreaction+=, which is used to define an environment with a mandatory argument. Of course this only works, if the used math environment has a mandatory argument.
+
+You can also use the combined version \lstinline=\newreaction*+=.
+
+The predefined environments are defined via
+\begin{lstlisting}
+ \newreaction*{++reaction++}{equation}
+ \newreaction*{++reactions++}{align}
+\end{lstlisting}
+
+Let's suppose, you'd like to have the alignment behaviour of the \lstinline=alignat= environment for `mhchem' reactions. You could do the following:
+\begin{lstlisting}
+ \newreaction*+{++reactionsat++}{alignat}
+\end{lstlisting}
+With this the \verb=reactionsat= environment is defined.
+\begin{lstlisting}
+ \begin{reactionsat}{3}
+ A &-> B &&-> C &&-> D \\
+ aaaaa &-> bbbbb &&-> ccccc &&-> ddddd
+ \end{reactionsat}
+ \begin{reactionsat*}{2}
+ A &-> B & C &-> D \\
+ aaaaa &-> bbbbb &$\quad$ ccccc &-> ddddd
+ \end{reactionsat*}
+\end{lstlisting}
+\newreaction*+{reactionsat}{alignat}
+\begin{reactionsat}{3}
+ A &-> B &&-> C &&-> D \\
+ aaaaa &-> bbbbb &&-> ccccc &&-> ddddd
+\end{reactionsat}
+\begin{reactionsat*}{2}
+ A &-> B & C &-> D \\
+ aaaaa &-> bbbbb &$\quad$ ccccc &-> ddddd
+\end{reactionsat*}
+
+\subsection{Phases}\label{ssec:mhchem_phasen}
+\NEU[1.1]These commands are intended to indicate the phase of a compound. Although these commands were intended for the use with `mhchem' they can be used without it as well and are also defined if `mhchem' isn't loaded.
+\begin{lstlisting}
+ \solid[<anything>]
+ \liquid[<anything>]
+ \gas
+ \aq % dissolved in water
+\end{lstlisting}
+I always found it tedious to type out phase indicators:
+\begin{lstlisting}
+ \ce{C_{(s)} + 2 H2O_{(l)} -> CO2_{(g)} + 2 H2_{(g)}}
+\end{lstlisting}
+The same result now can be achieved with:
+\begin{lstlisting}
+ \ce{C\solid{} + 2 H2O\liquid{} -> CO2\gas{} + 2 H2\gas}
+\end{lstlisting}
+\ce{C\solid{} + 2 H2O\liquid{} -> CO2\gas{} + 2 H2\gas}
+
+To make it complete: \lstinline=NaCl\aq= gives NaCl\aq.
+
+With the package option \lstinline=german= (see section \ref{sec:optionen}) you get:\\
+\ce{C \solid[f] + 2 H2O \liquid[f\/l] -> CO2 \gas{} + 2 H2 \gas}
+
+You can get the same result without the package option by using the arguments:
+\begin{lstlisting}
+ \ce{C \solid[f] + 2 H2O \liquid[fl] -> CO2\gas{} + 2 H2\gas}
+\end{lstlisting}
+\ce{C \solid[f] + 2 H2O \liquid[fl] -> CO2\gas{} + 2 H2\gas}
+
+If you looked closely, you have probably noticed that the german \lstinline=\liquid= isn't identical to \lstinline=\liquid[fl]= but to \lstinline=\liquid[f\/l]=. This makes the subscript more readable.
+
+Of course it doesn't matter which command with optional argument you use. Both of them just write a subscript with braces. \lstinline=\solid[f]= is identical to \lstinline=\liquid[f]=.
+
+One can think of other uses, too:
+\begin{lstlisting}
+ C\solid[graphite]
+\end{lstlisting}
+C\solid[graphite]
+
+\subsection{Text Under Compounds}\label{ssec:mhchem_beschriftung}
+\NEU[1.1]It has always been a bit laborious to write something under a molecule with `mhchem'. `\CMname' provides a command for that:
+\begin{lstlisting}
+ \mhName[<width>][<textattr>]{<mhchem code>}{<name>}
+\end{lstlisting}
+For example:
+\begin{lstlisting}
+ \ce{4 C2H5Cl + Pb / Na -> \mhName{Pb(C2H5)4}{former antiknock additive} + NaCl}
+\end{lstlisting}
+\ce{4 C2H5Cl + Pb / Na -> \mhName{Pb(C2H5)4}{former antiknock additive} + NaCl}
+
+As you can see the text is set centered and \lstinline=\tiny=, while the molecule uses it's normal space. With the first optional argument you can choose the width, that the molecule uses:
+\begin{lstlisting}
+ \ce{4 C2H5Cl + Pb / Na -> \mhName[3cm]{Pb(C2H5)4}{former antiknock additive} + NaCl}
+\end{lstlisting}
+\ce{4 C2H5Cl + Pb / Na -> \mhName[3cm]{Pb(C2H5)4}{former antiknock additive} + NaCl}
+
+The text attributes have \lstinline=\centering\tiny= as default. Using other attributes can overwrite them in certain circumstances:
+\begin{lstlisting}
+ \ce{4 C2H5Cl + Pb / Na -> \mhName[3cm]{Pb(C2H5)4}{\small former antiknock additive} + NaCl}\\
+ \ce{4 C2H5Cl + Pb / Na -> \mhName[3cm]{Pb(C2H5)4}{\raggedright\color{red}\bfseries former antiknock additive} + NaCl}
+\end{lstlisting}
+\ce{4 C2H5Cl + Pb / Na -> \mhName[3cm]{Pb(C2H5)4}{\small former antiknock additive} + NaCl}\\
+\ce{4 C2H5Cl + Pb / Na -> \mhName[3cm]{Pb(C2H5)4}{\raggedright\color{red}\bfseries former antiknock additive} + NaCl}
+
+Using the second optional argument will overwrite them in any case:
+\begin{lstlisting}
+ \ce{4 C2H5Cl + Pb / Na -> \mhName[3cm][\small]{Pb(C2H5)4}{former antiknock additive} + NaCl}\\
+ \ce{4 C2H5Cl + Pb / Na -> \mhName[3cm][\raggedright\color{red}\bfseries]{Pb(C2H5)4}{former antiknock additive} + NaCl}
+\end{lstlisting}
+\ce{4 C2H5Cl + Pb / Na -> \mhName[3cm][\small]{Pb(C2H5)4}{former antiknock additive} + NaCl}\\
+\ce{4 C2H5Cl + Pb / Na -> \mhName[3cm][\raggedright\color{red}\bfseries]{Pb(C2H5)4}{former antiknock additive} + NaCl}
+
+You can change the default values globally by using
+\begin{lstlisting}
+ \setmhName{<textattr>}
+\end{lstlisting}
+With this command you can change the predefined settings as you like:
+\begin{lstlisting}
+ \setmhName{\centering\footnotesize\color{blue}}
+ \ce{4 C2H5Cl + Pb / Na -> \mhName{Pb(C2H5)4}{former antiknock additive} + NaCl}
+\end{lstlisting}
+{\setmhName{\centering\footnotesize\color{blue}}
+\ce{4 C2H5Cl + Pb / Na -> \mhName{Pb(C2H5)4}{former antiknock additive} + NaCl}}
+
\section{Newman Projections}\label{sec:newman}
The command
\begin{lstlisting}
\newman[<angle>,<scale>,<tikz>]{<1>,<2>,<3>,<4>,<5>,<6>}
\end{lstlisting}
-allows you to create newman projections (uses Ti\textbf{\textit{k}}Z). \textbf{You need to load the tikz library `calc' for that}:
-\begin{lstlisting}
- \usetikzlibrary{calc}
-\end{lstlisting}
-Examples:
+allows you to create newman projections (uses `\TikZ'). Examples:
\begin{lstlisting}
\newman{}\par% default: staggered
- \newman[165]{}\par% rotated by 165 degrees => eclipsed
+ \newman[175]{}\par% rotated by 175 degrees => eclipsed
\newman{1,2,3,4,5,6} \newman{1,2,3} \newman{,,,4,5,6}\par% with atoms
\newman[,.75,draw=blue,fill=blue!20]{}% scaled and customized with TikZ
\end{lstlisting}
\newman{}\par
-\newman[165]{}\par
+\newman[175]{}\par
\newman{1,2,3,4,5,6} \newman{1,2,3} \newman{,,,4,5,6}\par
\newman[,.75,draw=blue,fill=blue!20]{}
@@ -465,14 +879,20 @@ Another option allows you to customize the nodes within which the atoms are plac
If you want to display the "front" atoms differently from the "back" atoms, you can use a third option:
\begin{lstlisting}
- \newman[][<tikz front nodes>][[<tikz back nodes>]]{<1>,<2>,<3>,<4>,<5>,<6>}
- % example:
- \newman[][draw=red,fill=red!20,inner sep=2pt,rounded corners][draw=blue,fill=blue!20,inner sep=2pt,rounded corners]{1,2,3,4,5,6} \newman[170][draw=red,fill=red!20,inner sep=2pt,rounded corners][draw=blue,fill=blue!20,inner sep=2pt,rounded corners]{1,2,3,4,5,6}
+ \newman[][<tikz front nodes>][<tikz back nodes>]{<1>,<2>,<3>,<4>,<5>,<6>}
+\end{lstlisting}
+Examples:
+\begin{lstlisting}
+ \newman[][draw=red,fill=red!20,inner sep=2pt,rounded corners][draw=blue,fill=blue!20,inner sep=2pt,rounded corners]{1,2,3,4,5,6}
+\end{lstlisting}
+\newman[][draw=red,fill=red!20,inner sep=2pt,rounded corners][draw=blue,fill=blue!20,inner sep=2pt,rounded corners]{1,2,3,4,5,6}
+\begin{lstlisting}
+ \newman[170][draw=red,fill=red!20,inner sep=2pt,rounded corners][draw=blue,fill=blue!20,inner sep=2pt,rounded corners]{1,2,3,4,5,6}
\end{lstlisting}
-\newman[][draw=red,fill=red!20,inner sep=2pt,rounded corners][draw=blue,fill=blue!20,inner sep=2pt,rounded corners]{1,2,3,4,5,6} \newman[170][draw=red,fill=red!20,inner sep=2pt,rounded corners][draw=blue,fill=blue!20,inner sep=2pt,rounded corners]{1,2,3,4,5,6}
+\newman[170][draw=red,fill=red!20,inner sep=2pt,rounded corners][draw=blue,fill=blue!20,inner sep=2pt,rounded corners]{1,2,3,4,5,6}
\section{p-Orbitals}\label{sec:orbitale}
-\CMname\ provides commands to visualize p-orbitals.
+`\CMname' provides commands to visualize p-orbitals.
\begin{lstlisting}
\porb[<size factor>,<color>,<angle>]
\phorb[<size factor>,<color>,<angle>]
@@ -482,15 +902,30 @@ This displays a horizontal orbital or one rotated by \lstinline=<angle>=: \lstin
\lstinline=\phorb= only displays one half orbital: \lstinline=\phorb[,red,90]= \phorb[,red,90]
+The size of the orbitals depends on an internal length that can be set with \lstinline=\setorbheight{<length>}=. It's default value is \lstinline=1em=.
+\begin{lstlisting}
+ \porb\par
+ \setorbheight{2em}\porb
+\end{lstlisting}
+{\porb\par\setorbheight{2em}\porb}
+
+The size of an orbital can also be changed directly using the optional argument \lstinline=<size factor>=.
+\begin{lstlisting}
+ \porb\par
+ \porb[2]\par
+ \porb[.5]
+\end{lstlisting}
+{\porb\par\porb[2]\par\porb[.5]}
+
There are shortcuts for the $x$-, $y$- and $z$-orbitals:
\begin{lstlisting}
\pzorb \qquad \pyorb \qquad \pxorb
\end{lstlisting}
\pzorb \qquad \pyorb \qquad \pxorb
-With suitable shifting you can display them all on one spot:
+Since the orbitals are drawn in a tikzpicture with the option \lstinline=overlay=, they are set all at the same spot, if you don't shift them:
\begin{lstlisting}
- \hspace{2cm}\pxorb\hspace{-.3em}\pyorb\hspace{-.3em}\pzorb
+ \hspace{2cm}\pxorb\pyorb\pzorb
\tikz[overlay]{
\draw[->](0,0)--(1,0)node[right]{$y$};
\draw[dashed](0,0)--(-1,0);
@@ -500,7 +935,7 @@ With suitable shifting you can display them all on one spot:
\draw[dashed](0,0)--(.707,.707);
}
\end{lstlisting}
-\hspace{2cm}\pxorb\hspace{-.3em}\pyorb\hspace{-.3em}\pzorb\tikz[overlay]{\draw[->](0,0)--(1,0)node[right]{$y$};\draw[->](0,0)--(0,1)node[above]{$z$};\draw[->](0,0)--(-.707,-.707)node[below left]{$x$};\draw[dashed](0,0)--(-1,0);\draw[dashed](0,0)--(0,-1);\draw[dashed](0,0)--(.707,.707);}
+\hspace{2cm}\pxorb\pyorb\pzorb\tikz[overlay]{\draw[->](0,0)--(1,0)node[right]{$y$};\draw[->](0,0)--(0,1)node[above]{$z$};\draw[->](0,0)--(-.707,-.707)node[below left]{$x$};\draw[dashed](0,0)--(-1,0);\draw[dashed](0,0)--(0,-1);\draw[dashed](0,0)--(.707,.707);}
\vspace{2cm}
The orbitals also can be used together with `chemfig':
@@ -514,39 +949,19 @@ The orbitals also can be used together with `chemfig':
\chemfig{?\pzorb-[,1.3]\pzorb-[:30,1.1]\pzorb-[:150,.9]\pzorb-[4,1.3]\pzorb-[:-150,1.1]\pzorb?}\qquad
\chemfig{?\pzorb-[,1.3]{\porb[,,-90]}-[:30,1.1]\pzorb-[:150,.9]{\porb[,,-90]}-[4,1.3]\pzorb-[:-150,1.1]{\porb[,,-90]}?}}
-\section{Pachage Options}\label{sec:optionen}
-\CMname\ has two package options:
-\begin{itemize}
- \item\lstinline+xspace=<boolean>+ With the option \lstinline+xspace=true+ the commands\\
- \lstinline=\Hyd \HtO Text \Hyd, \HtO, Text= \Hyd \HtO Text \Hyd, \HtO, Text\\
- get a \lstinline=\xspace=.\\
- Default: \lstinline+xspace=false+
- \item\lstinline+circled=<boolean>+ not everybody likes circled charge symbols ($\oplus$ and $\ominus$). Some prefer them without circles ($+$ and $-$). This can be chosen this option. With \lstinline+circled=false+ all \CMname\ commands are set without circles.\\
- Default: \lstinline+circled=true+
-\end{itemize}
-
\section{List of Commands}\label{sec:befehlsreferenz}
\begin{tabular}{>{\raggedright}p{.35\textwidth}|>{\raggedright}p{.55\textwidth}}\toprule
- \lstinline=\el=, \lstinline=\prt=, \lstinline=\ntr= & section \ref{sec:teilchen}: Particles, Ions and a Symbol\tabularnewline
- \lstinline=\HtO=, \lstinline=\Hpl=, \lstinline=\Hyd= & \tabularnewline
- \lstinline=\transitionstatesymbol= & \tabularnewline\midrule
- \lstinline=\cip=, \lstinline=\Rcip=, \lstinline=\Scip= & section \ref{sec:stereo}: Stereo Descriptors, Nomenclature\tabularnewline
- \lstinline=\Dfi=, \lstinline=\Lfi= & \tabularnewline
- \lstinline=\E=, \lstinline=\Z=, \lstinline=\cis=, \lstinline=\trans= & \tabularnewline
- \lstinline=\Rconf=, \lstinline=\Sconf= & \tabularnewline
- \lstinline=\ortho=, \lstinline=\meta=, \lstinline=\para= & \tabularnewline\midrule
- \lstinline=\delm=, \lstinline=\delp= & section \ref{sec:ladungen}: Oxidation Numbers and (real) Charges\tabularnewline
- \lstinline=\mch=, \lstinline=\pch= & \tabularnewline
- \lstinline=\ox= & \tabularnewline
- \lstinline=\scrm=, \lstinline=\scrp= & \tabularnewline\midrule
- \lstinline=\Enthalpy=, \lstinline=\Entropy=, \lstinline=\Gibbs= & section \ref{sec:standardstate}: (Standard) State, Thermodynamics\tabularnewline
- \lstinline=\setnewstate= & \tabularnewline
- \lstinline=\State= & \tabularnewline\midrule
- \lstinline=\newman= & section \ref{sec:newman}: Newman Projections \tabularnewline\midrule
- \lstinline=\redox=, \lstinline=\OX= & section \ref{sec:redoxreaktionen}: Redox Reactions \tabularnewline\midrule
- \lstinline=\begin{reaction}=, \lstinline=\begin{reaction*}=, \lstinline=\begin{reactions}=, \lstinline=\begin{reactions*}= & section \ref{sec:mhchem}: Environments for `mhchem'\tabularnewline\midrule
- \lstinline=\phorb=, \lstinline=\porb=, \lstinline=\pxorb=, \lstinline=\pyorb=, \lstinline=\pzorb= & section \ref{sec:orbitale}: p-Orbitals\tabularnewline
- \lstinline=\setorbheight= & \tabularnewline\bottomrule
+ \lstinline=\el=, \lstinline=\prt=, \lstinline=\ntr=, \lstinline=\HtO=, \lstinline=\water=, \lstinline=\Hpl=, \lstinline=\Hyd=, \lstinline=\Nu=, \lstinline=\El=, \lstinline=\transitionstatesymbol=, \lstinline=\R= & section \ref{sec:teilchen}: Particles, Ions and a Symbol\tabularnewline\midrule
+ \lstinline=\cip=, \lstinline=\Rcip=, \lstinline=\Scip=, \lstinline=\Dfi=, \lstinline=\Lfi=, \lstinline=\E=, \lstinline=\Z=, \lstinline=\cis=, \lstinline=\trans=, \lstinline=\Rconf=, \lstinline=\Sconf=, \lstinline=\ortho=, \lstinline=\meta=, \lstinline=\para=, \lstinline=\insitu=, \lstinline=\abinitio= & section \ref{sec:stereo}: Stereo Descriptors, Nomenclature, Latin Phrases\tabularnewline\midrule
+ \lstinline=\pH=, \lstinline=\pOH=, \lstinline=\pKa=, \lstinline=\pKb= & section \ref{sec:saeure_base}: Acid/Base \tabularnewline\midrule
+ \lstinline=\delm=, \lstinline=\delp=, \lstinline=\mch=, \lstinline=\pch=, \lstinline=\ox=, \lstinline=\scrm=, \lstinline=\scrp= & section \ref{sec:ladungen}: Oxidation Numbers and (real) Charges\tabularnewline\midrule
+ \lstinline=\mech= & section \ref{sec:mechanismen}: Reaction Mechanisms \tabularnewline\midrule
+ \lstinline=\redox=, \lstinline=\OX= & section \ref{sec:redoxreaktionen}: Redox Reactions \tabularnewline\midrule
+ \lstinline=\Enthalpy=, \lstinline=\Entropy=, \lstinline=\Gibbs=, \lstinline=\setnewstate=, \lstinline=\renewstate=, \lstinline=\State=, \lstinline=\setstatesubscript= & section \ref{sec:standardstate}: (Standard) State, Thermodynamics \tabularnewline\midrule
+ \lstinline=\NMR= & section \ref{sec:spektroskopie}: Spectroscopy \tabularnewline\midrule
+ \lstinline=\begin{reaction}=, \lstinline=\begin{reaction*}=, \lstinline=\begin{reactions}=, \lstinline=\begin{reactions*}=, \lstinline=\newreaction=, \lstinline=\solid=, \lstinline=\liquid=, \lstinline=\gas=, \lstinline=\mhName=, \lstinline=\setmhName= & section \ref{sec:mhchem}: Commands for `mhchem'\tabularnewline\midrule
+ \lstinline=\newman= & section \ref{sec:newman}: Newman Projections \tabularnewline\midrule
+ \lstinline=\phorb=, \lstinline=\porb=, \lstinline=\pxorb=, \lstinline=\pyorb=, \lstinline=\pzorb=, \lstinline=\setorbheight= & section \ref{sec:orbitale}: p-Orbitals\tabularnewline\bottomrule
\end{tabular}
\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/chemmacros/chemmacros.sty b/Master/texmf-dist/tex/latex/chemmacros/chemmacros.sty
index d789aef77ce..dcf361df406 100644
--- a/Master/texmf-dist/tex/latex/chemmacros/chemmacros.sty
+++ b/Master/texmf-dist/tex/latex/chemmacros/chemmacros.sty
@@ -4,7 +4,7 @@
% - a collection of macros to make typesetting chemistry documents more convenient ---- %
% ------------------------------------------------------------------------------------- %
% - Clemens Niederberger -------------------------------------------------------------- %
-% - 2011/05/15 ------------------------------------------------------------------------ %
+% - 2011/06/22 ------------------------------------------------------------------------ %
% ------------------------------------------------------------------------------------- %
% - http://www.mychemistry.eu/ -------------------------------------------------------- %
% - contact@mychemistry.eu ------------------------------------------------------------ %
@@ -28,385 +28,606 @@
% - - %
% - This work consists of the files chemmacros.sty, chemmacros_doc_de.tex, - %
% - chemmacros_doc_de.tex, README - %
-% ------------------------------------------------------------------------------------- %
-% - Version history: ------------------------------------------------------------------ %
-% 2011/05/15 version 1.0 CTAN release %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\CM@version{1.0}
-\def\CM@date{2011/05/15}
-\def\CM@name{chemmacros}
-\ProvidesPackage{chemmacros}[\CM@date]
-\typeout{\CM@name\space v\CM@version, \CM@date\space Clemens Niederberger}
-\RequirePackage{xkeyval,amsmath,tikz}
+\newcommand*\CM@version{1.1}%
+\newcommand*\CM@date{2011/06/22}%
+\newcommand*\CM@name{chemmacros}%
+\NeedsTeXFormat{LaTeX2e}[2009/09/24]%
+\ProvidesPackage{chemmacros}[2011/06/22 v1.1 chemistry macros]%
+\RequirePackage{amsmath,tikz,xparse,ifthen,siunitx}%
+\usetikzlibrary{calc}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% - package options ------------------------------------------------------------------- %
+% - ifs ------------------------------------------------------------------------------- %
+\newif\if@CM@circled\@CM@circledfalse%
+\newif\if@CM@german\@CM@germanfalse%
+\newif\if@CM@xspace\@CM@xspacefalse%
+\newif\if@CM@mhchemloaded\@CM@mhchemloadedfalse%
+\newif\if@CM@chemstyleloaded\@CM@chemstyleloadedfalse%
+\newif\if@CM@bpchemloaded\@CM@bpchemloadedfalse%
+\newif\if@CM@bpchem\@CM@bpchemfalse%
+\newif\if@CM@mychemistryloaded\@CM@mychemistryloadedfalse%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newif\if@circled\@circledtrue
-\newif\if@mhchemloaded\@mhchemloadedfalse
-\newif\if@xspaceloaded\@xspaceloadedfalse
-\newif\if@siunitxloaded\@siunitxloadedfalse
-\newif\if@chemstyleloaded\@chemstyleloadedfalse
-
-\define@boolkey+[CM]{chemmacros.sty}[CM@]{circled}{
- \ifCM@circled
- \@circledtrue
- \else
- \@circledfalse
- \fi
-}{
- \PackageWarning{chemmacros}{option `circled' is not boolean}
+% - package options ------------------------------------------------------------------- %
+% circled:
+\DeclareOption{circled}{%
+ \@CM@circledtrue%
}
-\define@key[CM]{chemmacros.sty}{xspace}{
- \def\CM@xspace@value{#1}%
+% xspace:
+\newcommand*\CM@xspace{}
+\DeclareOption{xspace}{%
+ \@CM@xspacetrue%
}
-\ProcessOptionsX[CM]
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% - tools ----------------------------------------------------------------------------- %
-\def\CM@false{false}%
-\def\CM@true{true}%
-\def\CM@off{off}%
-\def\CM@on{on}%
-\def\CM@right{right}%
-% Optional Argument Analysis ---------------------------------------------------------- %
-% Prüfen ob #2 in #1 enthalten ist
-% (das Makro ist eine Kopie von \CF@if@instr in chemfig.tex von Christian Tellechea)
-\def\CM@if@instr#1#2{%
- \def\CM@if@instr@i##1#2##2\@nil{\ifx\@empty##2\@empty\expandafter\@secondoftwo\else\expandafter\@firstoftwo\fi}%
- \CM@if@instr@i#1\@@nil#2\@nil%
+% german:
+\DeclareOption{german}{%
+ \@CM@germantrue%
}
-% Am ersten , splitten, #1 in #3 speichern, #2 in \CM@remainargs
-% (das Makro ist eine Kopie von \CF@analyze@movearg in chemfig.tex von Christian Tellechea)
-\def\CM@splitfirst#1,#2\@nil#3{%
- \def#3{#1}\def\CM@remainargs{#2}%
+
+% bpchem:
+\DeclareOption{bpchem}{
+ \@CM@bpchemtrue
}
-% ein durch , in 3 Teile getrenntes Argument splitten
-% (das Makro ist eine Abwandlung von \CF@analyze@movearg in chemfig.tex von Christian Tellechea)
-\def\CM@splitarg#1{%
- \CM@if@instr{#1}{,}{\expandafter\CM@splitfirst#1\@nil\CM@firstarg}{\def\CM@firstarg{#1}}%
- \expandafter\CM@if@instr\expandafter{\CM@remainargs}{,}{\expandafter\CM@splitfirst\CM@remainargs\@nil\CM@secondarg}{\expandafter\def\expandafter\CM@secondarg\expandafter{\CM@remainargs}}%
- \ifx\CM@remainargs\CM@secondarg\let\CM@thirdarg\@empty\else\expandafter\def\expandafter\CM@thirdarg\expandafter{\CM@remainargs}\fi%
+
+% unknown options:
+\DeclareOption*{%
+ \PackageWarning{chemmacros}{Unknown option `\CurrentOption'}%
}
+\ProcessOptions\relax
-\let\CM@xspace\empty%
-\ifx\CM@xspace@value\CM@false\def\CM@xspace{}\fi%
-\ifx\CM@xspace@value\CM@true%
- \@ifpackageloaded{xspace}{}{\RequirePackage{xspace}}
- \def\CM@xspace{\xspace}%
+\if@CM@bpchem
+ \RequirePackage{bpchem}
\fi
-\ifx\CM@xspace@value\CM@off\def\CM@xspace{}\fi%
-\ifx\CM@xspace@value\CM@on%
- \@ifpackageloaded{xspace}{}{\RequirePackage{xspace}}%
- \def\CM@xspace{\xspace}%
+
+\if@CM@xspace
+ \RequirePackage{xspace}%
+ \let\CM@xspace\xspace%
\fi
-\@ifpackageloaded{mhchem}{\@mhchemloadedtrue}{\@mhchemloadedfalse}
-\@ifpackageloaded{siunitx}{\@siunitxloadedtrue}{\@siunitxloadedfalse}
-\@ifpackageloaded{chemstyle}{\@chemstyleloadedtrue}{\@chemstyleloadedfalse}
+\AtBeginDocument{%
+ \@ifpackageloaded{mhchem}{\@CM@mhchemloadedtrue}{\@CM@mhchemloadedfalse}
+ \@ifpackageloaded{chemstyle}{\@CM@chemstyleloadedtrue}{\@CM@chemstyleloadedfalse}
+ \@ifpackageloaded{bpchem}{\@CM@bpchemloadedtrue}{\@CM@bpchemloadedfalse}
+ \@ifpackageloaded{mychemistry}{\@CM@mychemistryloadedtrue}{\@CM@mychemistryloadedfalse}
-\if@mhchemloaded%
- \def\CM@atom#1{\cf{#1}}%
-\else%
- \def\CM@atom#1{\ensuremath{\text{#1}}}%
-\fi
+ \if@CM@mhchemloaded
+ \newcommand*\CM@atom[1]{\cf{#1}}%
+ \else
+ \newcommand*\CM@atom[1]{\mbox{#1}}%
+ \fi
+
+ \if@CM@circled
+ \let\CM@plus\oplus
+ \let\CM@minus\ominus
+ \else
+ \newcommand*\CM@plus{+}%
+ \newcommand*\CM@minus{-}%
+ \fi
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% - tools ----------------------------------------------------------------------------- %
+% Test if #2 is part of #1
+% (the macro is a copy of chemfig's \CF@if@instr by Christian Tellechea)
+\newcommand*\CM@ifinstr[2]{%
+ \def\CM@ifinstr@i##1#2##2\@nil{\ifx\@empty##2\@empty\expandafter\@secondoftwo\else\expandafter\@firstoftwo\fi}%
+ \CM@ifinstr@i#1#2\@nil%
+}
+
+% split at comma, save part before in #3, save part after in \CM@RemainStr
+% (the macro is a copy of chemfig's \CF@analyze@movearg by Christian Tellechea)
+\def\CM@split#1,#2\@nil#3{%
+ \def#3{#1}\def\CM@RemainStr{#2}%
+}
+
+% Optional Argument Analysis ---------------------------------------------------------- %
+\newcounter{CM@tmp@cnt}
+\setcounter{CM@tmp@cnt}{0}
+\newcounter{CM@splitting@cnt}
+% empty \CM@arg@<num>
+\newcommand*\CM@ClearArgs[1]{%
+ \whiledo{\value{CM@tmp@cnt}<#1}{%
+ \stepcounter{CM@tmp@cnt}%
+ \expandafter\let\csname CM@arg@\roman{CM@tmp@cnt}\endcsname\@empty%
+ }%
+ \setcounter{CM@tmp@cnt}{0}%
+}
+% split a list separated by commas into \CM@arg@<num>, number of arguments chosen by #2
+\newcommand*\CM@splitting[2]{%
+ \CM@ClearArgs{#2}%
+ \setcounter{CM@splitting@cnt}{#2-1}%
+ \def\CM@RemainStr{#1}%
+ \whiledo{\value{CM@tmp@cnt}<\value{CM@splitting@cnt}}{%
+ \expandafter\CM@ifinstr\expandafter{\CM@RemainStr}{,}{%
+ \stepcounter{CM@tmp@cnt}%
+ \expandafter\CM@split\CM@RemainStr\@nil\CM@tmp@name%
+ \expandafter\let\csname CM@arg@\roman{CM@tmp@cnt}\endcsname\CM@tmp@name%
+ }{%
+ \stepcounter{CM@tmp@cnt}%
+ \expandafter\let\csname CM@arg@\roman{CM@tmp@cnt}\endcsname\CM@RemainStr%
+ \let\CM@RemainStr\@empty%
+ \setcounter{CM@tmp@cnt}{\value{CM@splitting@cnt}}%
+ }%
+ }%
+ \stepcounter{CM@tmp@cnt}%
+ \expandafter\let\csname CM@arg@\roman{CM@tmp@cnt}\endcsname\CM@RemainStr%
+ \setcounter{CM@tmp@cnt}{0}%
+}
+
+% check commands for equality --------------------------------------------------------- %
+\newcommand*\CM@compareCs[2]{%
+ \expandafter\let\expandafter\CM@cs@one\csname#1\endcsname%
+ \expandafter\let\expandafter\CM@cs@two\csname#2\endcsname%
+ \ifx\CM@cs@one\CM@cs@two\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
+}
+
+% check strings for equality ---------------------------------------------------------- %
+\newcommand*\CM@compareStr[2]{%
+ \edef\CM@cs@one{#1}%
+ \edef\CM@cs@two{#2}%
+ \ifx\CM@cs@one\CM@cs@two\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
+}
-\if@circled%
- \def\CM@plus{\oplus}%
- \def\CM@minus{\ominus}%
-\else%
- \def\CM@plus{+}%
- \def\CM@minus{-}%
-\fi
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% - particles, charges, other helpers ------------------------------------------------- %
+% - particles, charges ---------------------------------------------------------------- %
% electron
-\def\el{\ensuremath{e^\CM@minus}\CM@xspace}%
+\newcommand*\el{\ensuremath{e^\CM@minus}\CM@xspace}
% proton
-\def\prt{\ensuremath{p^\CM@plus}\CM@xspace}%
+\newcommand*\prt{\ensuremath{p^\CM@plus}\CM@xspace}
% charges
-\def\mch{\@ifnextchar[{\mch@ii}{\mch@i}}%
- \def\mch@i{\ensuremath{{}^{\CM@minus}}}%
- \def\mch@ii[#1]{\ensuremath{{}^{#1\CM@minus}}}%
-\def\pch{\@ifnextchar[{\pch@ii}{\pch@i}}%
- \def\pch@i{\ensuremath{{}^{\CM@plus}}}%
- \def\pch@ii[#1]{\ensuremath{{}^{#1\CM@plus}}}%
-\def\delm{\ensuremath{\text{\tiny$\delta\CM@minus$}}\CM@xspace}%
-\def\delp{\ensuremath{\text{\tiny$\delta\CM@plus$}}\CM@xspace}%
-\def\scrm{\ensuremath{\scriptstyle\CM@minus}}%
-\def\scrp{\ensuremath{\scriptstyle\CM@plus}}%
+\newcommand*\mch[1][]{\ensuremath{{}^{#1\CM@minus}}}
+\newcommand*\pch[1][]{\ensuremath{{}^{#1\CM@plus}}}
+\newcommand*\delm{\mbox{\tiny$\delta\CM@minus$}\CM@xspace}
+\newcommand*\delp{\mbox{\tiny$\delta\CM@plus$}\CM@xspace}
+\newcommand*\scrm{\ensuremath{\scriptstyle\CM@minus}}
+\newcommand*\scrp{\ensuremath{\scriptstyle\CM@plus}}
% neutron
-\def\ntr{\ensuremath{n^0}\CM@xspace}%
+\newcommand*\ntr{\ensuremath{n^0}\CM@xspace}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% - stereo descriptors ---------------------------------------------------------------- %
+% - stereo descriptors and sim. ------------------------------------------------------- %
% Cahn-Ingold-Prelog
-\def\Rcip{\textit{(R)}}%
-\def\Scip{\textit{(S)}}%
-\def\cip#1{\textit{(#1)}}%
-\def\Sconf{\@ifnextchar[{\sconf@ii}{\sconf@i}}% S-Konfiguration
- \def\sconf@ii[#1]{\tikz[baseline=(a.base),text height=1.5ex,text depth=.25ex]{\draw node(a) at (0,0) {#1};\draw[->,thick,rotate=90] (20:.3cm) arc (20:340:.3cm);}}%
- \def\sconf@i{\tikz[baseline=(a.base),text height=1.5ex,text depth=.25ex]{\draw node(a) at (0,0) {S};\draw[->,thick,rotate=90] (20:.3cm) arc (20:340:.3cm);}}%
-\def\Rconf{\@ifnextchar[{\rconf@ii}{\rconf@i}}% R-Konfiguration
- \def\rconf@ii[#1]{\tikz[baseline=(a.base),text height=1.5ex,text depth=.25ex]{\draw node(a) at (0,0) {#1};\draw[<-,thick,rotate=90] (20:.3cm) arc (20:340:.3cm);}}%
- \def\rconf@i{\tikz[baseline=(a.base),text height=1.5ex,text depth=.25ex]{\draw node(a) at (0,0) {R};\draw[<-,thick,rotate=90] (20:.3cm) arc (20:340:.3cm);}}%
-% E/Z
-\def\E{\textit{(E)}}%
-\def\Z{\textit{(Z)}}%
-\def\cis{\textit{cis}}%
-\def\trans{\textit{trans}}%
+\newcommand*\Rcip{\textit{(R)}}
+\newcommand*\Scip{\textit{(S)}}
+\newcommand*\cip[1]{\textit{(#1)}}
+\newcommand*\Sconf[1][S]{\tikz[baseline=(a.base),text height=1.5ex,text depth=.25ex]{\draw node(a) {#1};\draw[->,thick,rotate=90] ($(a.center)+(20:.8em)$) arc (20:340:.8em);}}
+\newcommand*\Rconf[1][R]{\tikz[baseline=(a.base),text height=1.5ex,text depth=.25ex]{\draw node(a) {#1};\draw[<-,thick,rotate=90] ($(a.center)+(20:.8em)$) arc (20:340:.8em);}}
+% E(ntgegen)/Z(usammen)
+\newcommand*\E{\textit{(E)}}
+\newcommand*\Z{\textit{(Z)}}
+\AtBeginDocument{\if@CM@bpchemloaded
+ \renewcommand*\cis{\textit{cis}\CM@xspace}
+ \renewcommand*\trans{\textit{trans}\CM@xspace}
+ \else
+ \newcommand*\cis{\textit{cis}\CM@xspace}
+ \newcommand*\trans{\textit{trans}\CM@xspace}
+\fi}
+\newcommand*\tert{\textit{tert}\CM@xspace}
% Fischer
-\def\Dfi{\textsc{d}}%
-\def\Lfi{\textsc{l}}%
+\newcommand*\Dfi{\textsc{d}}
+\newcommand*\Lfi{\textsc{l}}
% ortho/meta/para
-\def\ortho{\textsl{o}}%
-\def\meta{\textsl{m}}%
-\def\para{\textsl{p}}%
+\newcommand*\ortho{\textsl{o}}
+\newcommand*\meta{\textsl{m}}
+\newcommand*\para{\textsl{p}}
+
+% latin phrases
+\AtBeginDocument{\if@CM@chemstyleloaded
+ \newcommand*\insitu{\latin{in situ}\CM@xspace}
+ \newcommand*\abinitio{\latin{ab initio}\CM@xspace}
+\else
+ \newcommand*\insitu{\textit{in situ}\CM@xspace}
+ \newcommand*\abinitio{\textit{ab initio}\CM@xspace}
+\fi}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% - ions, molecules ------------------------------------------------------------------- %
+% Proton, Hydroxide, Hydronium/Oxonium, water, nucleophile, electrophile
+\newcommand*\Hpl{\CM@atom{H\pch}\CM@xspace}
+\newcommand*\Hyd{\CM@atom{OH\mch}\CM@xspace}
+\newcommand*\HtO{\CM@atom{H$_3$O\pch}\CM@xspace}
+\newcommand*\water{\CM@atom{H$_2$O}\CM@xspace}
+\newcommand*\Nu{\CM@atom{Nu\mch}\CM@xspace}
+\newcommand*\El{\CM@atom{E\pch}\CM@xspace}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% - acid/base ------------------------------------------------------------------------- %
+\newcommand*\pH{\mbox{\textsl{p}H}\CM@xspace}
+\newcommand*\pOH{\mbox{\textsl{p}OH}\CM@xspace}
+\newcommand*\pKa[1][]{\mbox{\textsl{p}$K_\mathrm{\if@CM@german S\else A\fi#1}$}\CM@xspace}
+\newcommand*\pKb[1][]{\mbox{\textsl{p}$K_\mathrm{B#1}$}\CM@xspace}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% - substituents ---------------------------------------------------------------------- %
+% \R[<sign>]{<subscript>}
+\newcommand*\R[2][]{\CM@atom{R$_{\mathrm{#2}}^{\ifx#1+\CM@plus\else\ifx#1-\CM@minus\fi\fi}$}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% - ions ------------------------------------------------------------------------------ %
-% Proton, Hydroxid, Hydronium
-\def\Hpl{\CM@atom{H$^\CM@plus$}\CM@xspace}%
-\def\Hyd{\CM@atom{OH$^\CM@minus$}\CM@xspace}%
-\def\HtO{\CM@atom{H$_3$O$^\CM@plus$}\CM@xspace}%
+% - units ----------------------------------------------------------------------------- %
+\DeclareSIUnit{\atm}{atm}
+\DeclareSIUnit{\atmosphere}{atm}
+\DeclareSIUnit{\calory}{cal}
+\DeclareSIUnit{\cal}{cal}
+\AtBeginDocument{\if@CM@chemstyleloaded\else
+ \DeclareSIUnit{\cmc}{\cubic\centi\metre}
+ \DeclareSIUnit{\molar}{\mole\per\cubic\deci\metre}
+ \DeclareSIUnit{\Molar}{\textsc{m}}
+\fi}
+\DeclareSIUnit{\moLar}{\mole\per\liter}
+\DeclareSIUnit{\MolMass}{\gram\per\mole}
+\DeclareSIUnit{\normal}{\textsc{n}}
+\DeclareSIUnit{\torr}{torr}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% - reaction mechanisms --------------------------------------------------------------- %
+% \mech[<type>]
+% <type> - substitutions: {}, 1, 2, se, 1e, 2e, ar
+% - eliminations: e, e1, e2, cb
+\newcommand*\CM@Substitution[1][]{%
+ \CM@compareStr{#1}{se}{\def\CM@subst@mol{_\mathrm{E}}\let\CM@subst@ar\@empty}{%
+ \CM@compareStr{#1}{1e}{\def\CM@subst@mol{_\mathrm{E}1}\let\CM@subst@ar\@empty}{%
+ \CM@compareStr{#1}{2e}{\def\CM@subst@mol{_\mathrm{E}2}\let\CM@subst@ar\@empty}{%
+ \CM@compareStr{#1}{ar}{\def\CM@subst@mol{_\mathrm{E}}\def\CM@subst@ar{Ar-}}{%
+ \def\CM@subst@mol{_\mathrm{N}#1}\let\CM@subst@ar\@empty}}}}%
+ \CM@atom{\mbox{\CM@subst@ar S}$\CM@subst@mol$}\CM@xspace%
+}
+\newcommand*\CM@Elimination[1][]{%
+ \CM@compareStr{#1}{cb}{\def\CM@elim@mol{1_\mathrm{cb}}}{\def\CM@elim@mol{#1}}%
+ \CM@atom{E$\CM@elim@mol$}\CM@xspace%
+}
+\newcommand*\mech[1][]{%
+ \CM@compareStr{#1}{se}{\def\CM@mech@type{S}\def\CM@mech@mol{_\mathrm{E}}\let\CM@mech@ar\@empty}{%
+ \CM@compareStr{#1}{1e}{\def\CM@mech@type{S}\def\CM@mech@mol{_\mathrm{E}1}\let\CM@mech@ar\@empty}{%
+ \CM@compareStr{#1}{2e}{\def\CM@mech@type{S}\def\CM@mech@mol{_\mathrm{E}2}\let\CM@mech@ar\@empty}{%
+ \CM@compareStr{#1}{ar}{\def\CM@mech@type{S}\def\CM@mech@mol{_\mathrm{E}}\def\CM@mech@ar{Ar-}}{%
+ \CM@compareStr{#1}{e}{\def\CM@mech@type{E}\def\CM@mech@mol{}\let\CM@mech@ar\@empty}{%
+ \CM@compareStr{#1}{e1}{\def\CM@mech@type{E}\def\CM@mech@mol{1}\let\CM@mech@ar\@empty}{%
+ \CM@compareStr{#1}{e2}{\def\CM@mech@type{E}\def\CM@mech@mol{2}\let\CM@mech@ar\@empty}{%
+ \CM@compareStr{#1}{cb}{\def\CM@mech@type{E}\def\CM@mech@mol{1_\mathrm{cb}}\let\CM@mech@ar\@empty}{%
+ \def\CM@mech@type{S}\def\CM@mech@mol{_\mathrm{N}#1}\let\CM@mech@ar\@empty}}}}}}}}%
+ \CM@atom{\mbox{\CM@mech@ar\CM@mech@type}$\CM@mech@mol$}\CM@xspace%
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% - oxidation numbers ----------------------------------------------------------------- %
% \ox{<number>,<atom>}
-\def\CM@ox@sign#1{%
- \ifx -#1{$-$}%
- \else \ifx +#1{$+$}%
+\newcommand*\CM@ox@sign[1]{%
+ \ifx -#1{$-$}% TODO: bad method here, do you see what happens if #1 is more than 1 token??? Use \@car to avoid the bug!
+ \else \ifx +#1{$+$}% TODO: bad method here, do you see what happens if #1 is more than 1 token??? Use \@car to avoid the bug!
\else #1%
\fi\fi%
}
-\def\ox#1{%
- \let\CM@remainargs\@empty\CM@splitarg{#1}%
- \ifx\CM@firstarg\@empty\PackageError{chemmacros}{\string\ox: oxidation number missing}\fi%
- \ifx\CM@secondarg\@empty\PackageError{chemmacros}{\string\ox: atom missing}\fi%
- \let\CM@thirdarg\@empty%
- \ensuremath{\overset{\text{\tiny\expandafter\CM@ox@sign\CM@firstarg}}{\expandafter\CM@atom\expandafter{\CM@secondarg}}}%
-}%
+% I don't quite understand the problem: that macro is used ONLY in \ox (lines 286-291) where no other input than arabic or (more often) roman numbers with a sign make any sense at all (chemically speaking*). In these cases everything happens as it is supposed to: the signs are changed into the math ones but the letters/numbers stay as they are. I must confess I didn't test senseless cases...
+%* And I would like to think that users who use a macro for oxidation numbers know what oxidation numbers are
+\DeclareRobustCommand\ox[1]{% needs to be robust in order to be used in mhchem's \ce macro
+ \CM@splitting{#1}{2}%
+ \CM@compareCs{CM@arg@i}{@empty}{\PackageError{chemmacros}{\string\ox: oxidation number missing}{}}{}%
+ \CM@compareCs{CM@arg@ii}{@empty}{\PackageError{chemmacros}{\string\ox: atom missing}{}}{}%
+ \ensuremath{\overset{\mbox{\tiny\expandafter\CM@ox@sign\CM@arg@i}}{\expandafter\CM@atom\expandafter{\CM@arg@ii}}}%
+}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% - oxidation arrows ------------------------------------------------------------------ %
+% place and name nodes:
% \OX{<name>,<atom>}
-% \redox(<name1>,<name2>)[<tikz>][<dim>]{<text>}
-% node setzen und benennen:
-\def\OX#1{%
- \let\CM@remainargs\@empty\CM@splitarg{#1}%
- \ifx\CM@firstarg\@empty\PackageError{chemmacros}{\string\OX: node name missing}\fi%
- \ifx\CM@secondarg\@empty\PackageError{chemmacros}{\string\OX: atom missing}\fi%
- \let\CM@thirdarg\@empty%
- \tikz[baseline=(\CM@firstarg.base),remember picture]{\node[inner sep=0](\CM@firstarg){\expandafter\CM@atom\expandafter{\CM@secondarg}};}%
+\DeclareRobustCommand*\OX[1]{% needs to be robust in order to be used in mhchem's \ce macro
+ \CM@splitting{#1}{2}%
+ \CM@compareCs{CM@arg@i}{@empty}{\PackageError{chemmacros}{\string\OX: node name missing}{}}{}%
+ \CM@compareCs{CM@arg@i}{@empty}{\PackageError{chemmacros}{\string\OX: atom missing}{}}{}%
+ \tikz[baseline=(\CM@arg@i.base),remember picture]{\node[inner sep=0](\CM@arg@i){\expandafter\CM@atom\expandafter{\CM@arg@ii}};}%
}
-% nodes mit Linie verbinden:
-\def\redox(#1){%
- \let\CM@redox@tikz\@empty%
- \let\CM@remainargs\@empty\CM@splitarg{#1}%
- \ifx\CM@firstarg\@empty\PackageError{chemmacros}{\string\redox: you must specify coordinates}\fi%
- \ifx\CM@secondarg\@empty\PackageError{chemmacros}{\string\redox: you must specify coordinates}\fi%
- \let\CM@thirdarg\@empty%
- \let\CM@redox@begin\CM@firstarg%
- \let\CM@redox@end\CM@secondarg%
- \redox@i%
-}
-\def\redox@i{\@ifnextchar[{\redox@ii}{\def\CM@redox@shift{.6em}\def\CM@redox@anchor{above}\def\CM@redox@side{north}\def\CM@redox@dist{.2em}\redox@v}}
-\def\redox@ii[#1]{%
- \ifx\@empty#1\@empty
- \let\CM@redox@tikz\@empty%
- \else%
- \def\CM@redox@tikz{#1}%
- \fi
- \redox@iii%
-}
-\def\redox@iii{\@ifnextchar[{\redox@iv}{\def\CM@redox@shift{.6em}\def\CM@redox@anchor{above}\def\CM@redox@side{north}\def\CM@redox@dist{.2em}\redox@v}}
-\def\redox@iv[#1]{%
- \ifx\@empty#1\@empty%
- \let\CM@redox@shift\@empty%
- \else%
- \pgfmathparse{#1<0}
- \ifnum\pgfmathresult=1%
- \def\CM@redox@anchor{below}\def\CM@redox@side{south}\def\CM@redox@dist{-.2em}%
+% connect nodes with "redox"-line
+% \redox(<name1>,<name2>)[<tikz>][<dim>]{<text>}
+\newcommand*\CM@redox@dist{.6em}
+\newcommand*\setredoxdist[1]{\ifx\@empty#1\@empty\renewcommand*\CM@redox@dist{.6em}\else\renewcommand*\CM@redox@dist{#1}\fi}
+\NewDocumentCommand\redox{d()oom}{%
+ \IfNoValueTF{#1}{%
+ \PackageError{chemmacros}{\string\redox: You need to specify coordinates}{}
+ }{%
+ \CM@splitting{#1}{2}%
+ \let\CM@redox@begin\CM@arg@i%
+ \let\CM@redox@end\CM@arg@ii%
+ }
+ \IfNoValueTF{#2}{\def\CM@redox@tikz{}}{\def\CM@redox@tikz{#2}}
+ \IfNoValueTF{#3}{%
+ \def\CM@redox@shift{1}%
+ \def\CM@redox@anchor{above}%
+ \def\CM@redox@side{north}%
+ \def\CM@redox@sep{.2em}%
+ }{%
+ \pgfmathparse{#3<0}% TODO : You should learn to test if an integer is less than 0: \ifnum#1<\z@
+% #3 is not necessarily an integer. It is more likely real; if you know a way to test if '-.5' is less than 0 that's easier than \pgfmathparse, please let me know.
+ \ifnum\pgfmathresult=1 %
+ \def\CM@redox@anchor{below}\def\CM@redox@side{south}\def\CM@redox@sep{-.2em}%
\else%
- \def\CM@redox@anchor{above}\def\CM@redox@side{north}\def\CM@redox@dist{.2em}%
+ \def\CM@redox@anchor{above}\def\CM@redox@side{north}\def\CM@redox@sep{.2em}%
\fi%
- \def\CM@redox@shift{#1}%
- \fi%
- \redox@v%
+ \def\CM@redox@shift{#3}%
+ }
+ \tikz[remember picture,overlay]{\expandafter\draw\expandafter[\CM@redox@tikz] ($(\CM@redox@begin.\CM@redox@side)+(0,\CM@redox@sep)$) -- ++(0,\CM@redox@shift*\CM@redox@dist) -| node[pos=.25,\CM@redox@anchor]{#4} ($(\CM@redox@end.\CM@redox@side)+(0,\CM@redox@sep)$);}%
}
-\def\redox@v#1{%
- \ifx\CM@redox@tikz\@empty\def\CM@redox@tikz{}\fi%
- \ifx\CM@redox@shift\@empty\def\CM@redox@shift{.6em}\def\CM@redox@anchor{above}\fi%
- \tikz[remember picture,overlay]{\expandafter\draw\expandafter[\CM@redox@tikz] ($(\CM@redox@begin.\CM@redox@side)+(0,\CM@redox@dist)$) -- ++(0,\CM@redox@shift) -| node[pos=.25,\CM@redox@anchor]{#1} ($(\CM@redox@end.\CM@redox@side)+(0,\CM@redox@dist)$);}%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% - spectroscopy ---------------------------------------------------------------------- %
+% \NMR(<num>,<elem>)[<num>,<unit>]{<solvent>} ALL arguments are optional
+% \NMR* same but without ": $\delta$" at end
+\AtBeginDocument{
+ \NewDocumentCommand\NMR{sG{1,H}d()o}{%
+ \IfBooleanTF{#1}{\let\CM@nmr@delta\@empty}{\ifmmode\def\CM@nmr@delta{\mbox{: }\delta}\else\def\CM@nmr@delta{: $\delta$}\fi}%
+ \CM@splitting{#2}{2}%
+ \let\CM@nmr@istp\CM@arg@i
+ \let\CM@nmr@elem\CM@arg@ii
+ \IfNoValueTF{#3}{%
+ \let\CM@nmr@spec\@empty
+ \let\CM@nmr@freq\@empty
+ }{%
+ \let\CM@nmr@spec\relax
+ \CM@splitting{#3}{2}%
+ \CM@compareCs{CM@arg@ii}{@empty}{\def\CM@nmr@unit{\mega\hertz}}{\def\CM@nmr@unit{\CM@arg@ii}}%
+ \def\CM@nmr@freq{\expandafter\SI\expandafter{\CM@arg@i}{\CM@nmr@unit}}%
+ }%
+ \IfNoValueTF{#4}{%
+ \let\CM@nmr@lm\@empty
+ \let\CM@nmr@comma\@empty
+ }{%
+ \let\CM@nmr@spec\relax
+ \def\CM@nmr@lm{\CM@atom{#4}}%
+ \CM@compareCs{CM@nmr@freq}{@empty}{\let\CM@nmr@comma\@empty}{\def\CM@nmr@comma{,\ifmmode\medspace\else\hspace{\smallskipamount}\fi}}%
+ }%
+ \CM@compareCs{CM@nmr@spec}{@empty}{}{%
+ \def\CM@nmr@spec{\hspace{\smallskipamount}(\CM@nmr@freq\CM@nmr@comma\CM@nmr@lm)}%
+ }%
+ \if@CM@bpchem
+ \ifmmode
+ \expandafter\text\expandafter{\IUPAC{\^{\CM@nmr@istp}\CM@nmr@elem-NMR}\CM@nmr@spec}\CM@nmr@delta
+ \else
+ \IUPAC{\^{\CM@nmr@istp}\CM@nmr@elem-NMR}\CM@nmr@spec\CM@nmr@delta\CM@xspace
+ \fi
+ \else
+ \ifmmode
+ ^{\CM@nmr@istp}\expandafter\CM@atom\expandafter{\CM@nmr@elem}\mbox{-}\text{NMR}\CM@nmr@spec\CM@nmr@delta
+ \else
+ $^{\CM@nmr@istp}$\expandafter\CM@atom\expandafter{\CM@nmr@elem}-NMR\CM@nmr@spec\CM@nmr@delta\CM@xspace
+ \fi
+ \fi
+ }
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% - reaction environments for mhchem -------------------------------------------------- %
-\if@mhchemloaded
- \RequirePackage{mathtools,environ}
- \newtagform{CMreaction}{\{}{\}}
- \newcounter{save@reaction}%
- \newcounter{reaction}%
- \def\CM@AtBeginReaction{\setcounter{save@reaction}{\value{equation}}\setcounter{equation}{\value{reaction}}\usetagform{CMreaction}}%
- \def\CM@AtEndReaction{\setcounter{reaction}{\value{equation}}\setcounter{equation}{\value{save@reaction}}\usetagform{default}}%
- %
- \NewEnviron{reaction}{\CM@AtBeginReaction\begin{equation}\expandafter\ce\expandafter{\BODY}\end{equation}\CM@AtEndReaction}
- \NewEnviron{reaction*}{\begin{equation*}\expandafter\ce\expandafter{\BODY}\end{equation*}}
- %
- \NewEnviron{reactions}{\CM@AtBeginReaction\begin{align}\expandafter\cee\expandafter{\BODY}\end{align}\CM@AtEndReaction}
- \NewEnviron{reactions*}{\begin{align*}\expandafter\cee\expandafter{\BODY}\end{align*}}
-\fi
+% - for use with mhchem --------------------------------------------------------------- %
+\AtBeginDocument{\if@CM@mhchemloaded
+% placing text below atom/molecule
+ \newcommand*\CM@mhName@textattr@default{\centering\tiny}%
+% \setmhName{<commands>}
+ \newcommand*\setmhName[1]{%
+ \ifx\@empty#1\@empty
+ \renewcommand*\CM@mhName@textattr@default{\centering\tiny}%
+ \else
+ \renewcommand*\CM@mhName@textattr@default{#1}%
+ \fi
+ }
+% \mhName[<width>][<textattr>]{<formula>}{<text>}
+ \newlength{\CM@mhName@boxlength}%
+ \NewDocumentCommand\mhName{oomm}{%
+ \IfNoValueTF{#1}{%
+ \settowidth{\CM@mhName@boxlength}{#3}%
+ }{%
+ \ifx\@empty#1\@empty
+ \settowidth{\CM@mhName@boxlength}{#3}%
+ \else
+ \setlength{\CM@mhName@boxlength}{#1}%
+ \fi
+ }%
+ \IfNoValueTF{#2}{%
+ \let\CM@mhName@textattr\CM@mhName@textattr@default
+ }{%
+ \def\CM@mhName@textattr{#2}
+ }
+ \def\CM@mhName@formula{#3}
+ \ensuremath{\underset{\parbox{\CM@mhName@boxlength}{\CM@mhName@textattr#4}}{\expandafter\ce\expandafter{\CM@mhName@formula}}}%
+ }
+% reaction environments for mhchem
+ \RequirePackage{mathtools,environ}
+ \newtagform{CMreaction}{\{}{\}}
+ \newcounter{save@reaction}%
+ \newcounter{reaction}%
+ \newcommand*\CM@AtBeginReaction{\setcounter{save@reaction}{\value{equation}}\setcounter{equation}{\value{reaction}}\usetagform{CMreaction}}%
+ \newcommand*\CM@AtEndReaction{\setcounter{reaction}{\value{equation}}\setcounter{equation}{\value{save@reaction}}\usetagform{default}}%
+% \newreaction*+{<name>}{<type>}
+% * and + are optional
+ \NewDocumentCommand\newreaction{st+mm}{%
+ \@ifundefined{#3}{%
+ \IfBooleanTF{#2}{%
+ \NewEnviron{#3}[1]{\CM@AtBeginReaction\begin{#4}{##1}\expandafter\cee\expandafter{\BODY}\end{#4}\CM@AtEndReaction}
+ \IfBooleanTF{#1}{%
+ \NewEnviron{#3*}[1]{\begin{#4*}{##1}\expandafter\cee\expandafter{\BODY}\end{#4*}}%
+ }{}%
+ }{%
+ \NewEnviron{#3}{\CM@AtBeginReaction\begin{#4}\expandafter\cee\expandafter{\BODY}\end{#4}\CM@AtEndReaction}
+ \IfBooleanTF{#1}{%
+ \NewEnviron{#3*}{\begin{#4*}\expandafter\cee\expandafter{\BODY}\end{#4*}}%
+ }{}%
+ }%
+ }{\PackageError{chemmacros}{The environment/command #3 is already defined}{}}%
+ }
+% predefined:
+ \newreaction*{reaction}{equation}%
+ \newreaction*{reactions}{align}%
+\fi}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% - phases ---------------------------------------------------------------------------- %
+\newcommand*\solid[1][]{\ensuremath{_\mathrm{(\ifx\@empty#1\@empty\if@CM@german f\else s\fi\else#1\fi)}}}
+\newcommand*\gas{\ensuremath{_\mathrm{(g)}}}
+\newcommand*\liquid[1][]{\ensuremath{_\mathrm{(\ifx\@empty#1\@empty\if@CM@german f\/l\else l\fi\else#1\fi)}}}
+\newcommand*\aq{\ensuremath{_\mathrm{(aq)}}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% - transition state symbol ----------------------------------------------------------- %
-\def\transitionstatesymbol{\tikz[inner sep=0,outer sep=0,minimum size=0]{%
- \coordinate (@TSa) at (0,0);%
- \coordinate (@TSb) at (0,.6em);%
- \draw(@TSa)--node[pos=.3333](@TSx){}node[pos=.6667](@TSy){}(@TSb);%
+\AtBeginDocument{%
+\newcommand*\CM@transition@state@symbol{\tikz[inner sep=0,outer sep=0,minimum size=0]{%
+ \draw(0,0)--node[pos=.3333](@TSx){}node[pos=.6667](@TSy){}(0,.6em);%
\draw(@TSx)++(-.3em,0)--++(.6em,0);%
\draw(@TSy)++(-.3em,0)--++(.6em,0);}%
}
+% make sure symbol scales correctly:
+\if@CM@mychemistryloaded
+ \renewcommand*\transitionstatesymbol{\ifmmode\text{\CM@transition@state@symbol}\else\CM@transition@state@symbol\fi}
+\else
+ \newcommand*\transitionstatesymbol{\ifmmode\text{\CM@transition@state@symbol}\else\CM@transition@state@symbol\fi}
+\fi}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% - enthalpy, entropy ----------------------------------------------------------------- %
-% \State[<exp>,<Delta>,right]{<Symbol>}{<Index>}
-\def\State{\@ifnextchar[{\CM@state@ii}{\CM@state@i}}%
- \def\CM@state@i#1#2{\ensuremath{\Delta_\mathrm{#2}#1\if@chemstyleloaded^\standardstate\fi}}%
- \def\CM@state@ii[#1]#2#3{%
- \let\CM@remainargs\@empty\CM@splitarg{#1}%
- \ensuremath{\ifx\CM@secondarg\@empty\Delta\else\CM@secondarg\fi\ifx\CM@thirdarg\CM@right\else_\mathrm{#3}\fi#2\ifx\CM@thirdarg\CM@right_\mathrm{#3}\fi\ifx\CM@firstarg\@empty\if@chemstyleloaded^{\standardstate}\fi\else^{\CM@firstarg}\fi}%
- }%
+% - thermodynamics et.al. ------------------------------------------------------------- %
+\AtBeginDocument{\if@CM@chemstyleloaded\else\newcommand*\standardstate{\circ}\fi
-\if@siunitxloaded
- \if@chemstyleloaded\else\def\standardstate{}\fi
- \let\CM@standard@state@symbol\standardstate%
- \def\setnewstate{\@ifnextchar[{\CM@setnewstate@ii}{\let\CM@current@standard@state@symbol\@empty\def\CM@state@delta{\Delta}\def\CM@state@kind@right{}\CM@setnewstate@i}}%
- \def\CM@setnewstate@ii[#1]{%
- \let\CM@remainargs\@empty\CM@splitarg{#1}% exp,Delta,right
- \ifx\CM@firstarg\@empty\let\CM@current@standard@state@symbol\@empty\else\let\CM@current@standard@state@symbol\CM@firstarg\fi%
- \ifx\CM@secondarg\@empty\def\CM@state@delta{\Delta}\else\let\CM@state@delta\CM@secondarg\fi%
- \ifx\CM@thirdarg\CM@right\let\CM@state@kind@right\CM@right\else\def\CM@state@kind@right{}\fi%
- \CM@setnewstate@i%
- }
- \def\CM@setnewstate@i#1#2#3{%
- \ifx\CM@current@standard@state@symbol\@empty\let\CM@current@standard@state@symbol\standardstate\fi%
- \expandafter\let\csname CM@#1@symbol\endcsname\CM@current@standard@state@symbol%
- \expandafter\let\csname CM@#1@delta\endcsname\CM@state@delta%
- \expandafter\def\csname#1\endcsname{\@ifnextchar[{\csname CM@#1@ii\endcsname}{\csname CM@#1@i\endcsname}}%
- \expandafter\def\csname CM@#1@i\endcsname##1{\ensuremath{\State[\csname CM@#1@symbol\endcsname,\csname CM@#1@delta\endcsname]{#2}{}=\SI{##1}{#3}}}%
- \expandafter\def\csname CM@#1@ii\endcsname[##1]##2{%
- \let\CM@remainargs\@empty\CM@splitarg{##1}% index,exp,einheit
- \let\CM@state@index\CM@firstarg%
- \let\CM@state@symbol\CM@secondarg%
- \let\CM@state@unit\CM@thirdarg%
- \ensuremath{\State[\CM@state@symbol,\csname CM@#1@delta\endcsname]{#2}{\CM@state@index} = \SI{##2}{\ifx\CM@state@unit\@empty#3\else\CM@state@unit\fi}}%
+% \setstatesubscript{right/left}
+\newcommand*\CM@State@subscript{left}
+\newcommand*\setstatesubscript[1]{%
+ \renewcommand*\CM@State@subscript{\ifx\relax#1\relax left\else#1\fi}
+}
+
+% \State[<exp>,<Delta>,<subscript pos>]{<Symbol>}{<Index>}
+% {<Index>} is an optional argument!
+\NewDocumentCommand\State{omG{}}{%
+ \IfNoValueTF{#1}{\CM@splitting{}{3}}{\CM@splitting{#1}{3}}%
+ \ensuremath{%
+ \CM@compareCs{CM@arg@iii}{@empty}{%
+ \CM@compareStr{\CM@State@subscript}{right}{\let\CM@State@sub@left\@empty\def\CM@State@sub@right{_\mathrm{#3}}}{\let\CM@State@sub@right\@empty\def\CM@State@sub@left{_\mathrm{#3}}}%
+ }{
+ \CM@compareStr{\CM@arg@iii}{right}{\let\CM@State@sub@left\@empty\def\CM@State@sub@right{_\mathrm{#3}}}{%
+ \CM@compareStr{\CM@arg@iii}{left}{\let\CM@State@sub@right\@empty\def\CM@State@sub@left{_\mathrm{#3}}}{%
+ \PackageWarning{chemmacros}{\string\State: <subscript pos> can only have the values 'left' or 'right'}{}%
+ }
}%
- }%
- \setnewstate{Enthalpy}{H}{\kilo\joule\per\mole}%
- \setnewstate[, ]{Entropy}{S}{\joule\per\kelvin\per\mole}%
- \setnewstate{Gibbs}{G}{\kilo\joule\per\mole}%
-\fi%
+ }%
+ \CM@compareCs{CM@arg@ii}{@empty}{\Delta}{\CM@arg@ii}\CM@State@sub@left#2\CM@State@sub@right%
+ \CM@compareCs{CM@arg@i}{@empty}{^{\standardstate}}{^{\CM@arg@i}}}%
+}
+
+% \setnewstate[<exp>,<Delta>,<subscript pos>]{<command>}{<letter>}{<unit>}
+% \renewstate[<exp>,<Delta>,<subscript pos>]{<command>}{<letter>}{<unit>}
+\newcommand*\CM@setnewstate[4][]{%
+ \CM@splitting{#1}{3}% [<exp>,<Delta>,<subscript pos>]
+ \CM@compareCs{CM@arg@i}{@empty}{\expandafter\let\csname CM@#2@supscript\endcsname\standardstate}{\expandafter\let\csname CM@#2@supscript\endcsname\CM@arg@i}%
+ \CM@compareCs{CM@arg@ii}{@empty}{\expandafter\let\csname CM@#2@delta\endcsname\Delta}{\expandafter\let\csname CM@#2@delta\endcsname\CM@arg@ii}
+ \CM@compareCs{CM@arg@iii}{@empty}{\@namedef{CM@#2@right}{left}}{\expandafter\let\csname CM@#2@right\endcsname\CM@arg@iii}%
+ \@namedef{#2}{\@ifnextchar[{\@nameuse{CM@#2@ii}}{\@nameuse{CM@#2@i}}}%
+ \@namedef{CM@#2@i}##1{\ensuremath{\State[\@nameuse{CM@#2@supscript},\@nameuse{CM@#2@delta},\@nameuse{CM@#2@right}]{#3}{}=\SI{##1}{#4}}}%
+ \@namedef{CM@#2@ii}[##1]##2{%
+ \CM@splitting{##1}{4}% [<index>,<exp>,<unit>,<subscript pos>]
+ \let\CM@State@index\CM@arg@i
+ \CM@compareCs{CM@arg@ii}{@empty}{\def\CM@State@supscript{\@nameuse{CM@#2@supscript}}}{\let\CM@State@supscript\CM@arg@ii}%
+ \CM@compareCs{CM@arg@iii}{@empty}{\def\CM@State@unit{#4}}{\let\CM@State@unit\CM@arg@iii}%
+ \CM@compareCs{CM@arg@iv}{@empty}{\def\CM@State@right{\@nameuse{CM@#2@right}}}{\let\CM@State@right\CM@arg@iv}%
+ \ensuremath{\State[\CM@State@supscript,\@nameuse{CM@#2@delta},\CM@State@right]{#3}{\CM@State@index} = \SI{##2}{\CM@State@unit}}%
+ }%
+}
+\newcommand*\setnewstate[4][]{%
+ \@ifundefined{#2}{\CM@setnewstate[#1]{#2}{#3}{#4}}{\PackageError{chemmacros}{\string\setnewstate: state #2 is already defined}{}}%
+}
+\newcommand*\renewstate[4][]{%
+ \@ifundefined{#2}{\PackageError{chemmacros}{\string\renewstate: state #2 is not defined}{}}{\CM@setnewstate[#1]{#2}{#3}{#4}}%
+}
+\setnewstate{Enthalpy}{H}{\kilo\joule\per\mole}%
+\setnewstate[, ]{Entropy}{S}{\joule\per\kelvin\per\mole}%
+\setnewstate{Gibbs}{G}{\kilo\joule\per\mole}%
+}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% - p-orbitals ------------------------------------------------------------------------ %
-% \phorb[<size factor>,<color>,<angle>]
-\def\CM@phorb{\@ifnextchar[{\CM@phorb@ii}{\let\CM@firstarg\@empty\let\CM@secondarg\@empty\let\CM@thirdarg\@empty\CM@phorb@i}}
-\def\CM@phorb@ii[#1]{\let\CM@remainargs\@empty\CM@splitarg{#1}\CM@phorb@i}
-\def\CM@phorb@i{
- \ifx\CM@firstarg\@empty\def\CM@orb@flip{1.5*\CM@orb@height}\else\def\CM@orb@flip{\CM@firstarg*1.5*\CM@orb@height}\fi
- \ifx\CM@secondarg\@empty\def\CM@orb@color{black}\else\def\CM@orb@color{\CM@secondarg}\fi
- \ifx\CM@thirdarg\@empty\def\CM@orb@ang{0}\else\def\CM@orb@ang{\CM@thirdarg}\fi
- \tikzpicture[overlay,rotate={\CM@orb@ang-90},opacity=.5,inner sep=0pt,outer sep=0pt,text height=0pt,text depth=0pt]
- \pgfsetfillopacity{.5}
- \node(\CM@orb@node){};
- \draw[draw=\CM@orb@color,fill=\CM@orb@color] (\CM@orb@node) .. controls ++(-.9*\CM@orb@height,\CM@orb@flip) and ++(.9*\CM@orb@height,\CM@orb@flip) .. (\CM@orb@node);
- \endtikzpicture
+\newcommand*\CM@porb[1][]{%
+ \CM@splitting{#1}{3}%
+ \CM@compareCs{CM@arg@i}{@empty}{\let\CM@orbital@height\CM@orb@height}{\def\CM@orbital@height{\CM@arg@i*\CM@orb@height}}%
+ \CM@compareCs{CM@arg@ii}{@empty}{\def\CM@orb@color{black}}{\let\CM@orb@color\CM@arg@ii}%
+ \CM@compareStr{\CM@orb@color}{white}{\def\CM@orb@color@draw{black}}{\let\CM@orb@color@draw\CM@orb@color}%
+ \CM@compareCs{CM@arg@iii}{@empty}{\def\CM@orb@ang{0}}{\let\CM@orb@ang\CM@arg@iii}%
+ \tikzpicture[overlay,rotate={\CM@orb@ang-90},opacity=.5,inner sep=0pt,outer sep=0pt,text height=0pt,text depth=0pt]%
+ \pgfsetfillopacity{.5}%
+ \CM@compareStr{\CM@orb@half}{false}{%
+ \draw[draw=black] (0,0) .. controls ++(-.9*\CM@orbital@height,-1.5*\CM@orbital@height) and ++(.9*\CM@orbital@height,-1.5*\CM@orbital@height) .. (0,0);%
+ }{}%
+ \draw[draw=\CM@orb@color@draw,fill=\CM@orb@color] (0,0) .. controls ++(-.9*\CM@orbital@height,1.5*\CM@orbital@height) and ++(.9*\CM@orbital@height,1.5*\CM@orbital@height) .. (0,0);%
+ \endtikzpicture%
}
-\def\phorb{\CM@phorb}
-
+% full orbital:
% \porb[<size factor>,<color>,<angle>]
-\def\CM@porb{\@ifnextchar[{\CM@porb@ii}{\let\CM@firstarg\@empty\let\CM@secondarg\@empty\let\CM@thirdarg\@empty\CM@porb@i}}
-\def\CM@porb@ii[#1]{\let\CM@remainargs\@empty\CM@splitarg{#1}\CM@porb@i}
-\def\CM@porb@i{
- \ifx\CM@firstarg\@empty\def\CM@orb@flip{1.5*\CM@orb@height}\else\def\CM@orb@flip{\CM@firstarg*1.5*\CM@orb@height}\fi
- \ifx\CM@secondarg\@empty\def\CM@orb@color{black}\else\def\CM@orb@color{\CM@secondarg}\fi
- \ifx\CM@thirdarg\@empty\def\CM@orb@ang{0}\else\def\CM@orb@ang{\CM@thirdarg}\fi
- \tikzpicture[overlay,rotate={\CM@orb@ang-90},opacity=.5,inner sep=0pt,outer sep=0pt,text height=0pt,text depth=0pt]
- \pgfsetfillopacity{.5}
- \node(\CM@orb@node){};
- \draw[draw=black] (\CM@orb@node) .. controls ++(-.9*\CM@orb@height,\CM@orb@flip) and ++(.9*\CM@orb@height,\CM@orb@flip) .. (\CM@orb@node);
- \draw[draw=\CM@orb@color,fill=\CM@orb@color] (\CM@orb@node) .. controls ++(-.9*\CM@orb@height,-\CM@orb@flip) and ++(.9*\CM@orb@height,-\CM@orb@flip) .. (\CM@orb@node);
- \endtikzpicture
-}
-\def\porb{\CM@porb}
+\newcommand*\porb{\def\CM@orb@half{false}\CM@porb}%
+% half of an orbital:
+% \phorb[<size factor>,<color>,<angle>]
+\newcommand*\phorb{\def\CM@orb@half{true}\CM@porb}%
-\def\CM@orb@node{x}
-\def\CM@orb@height{1em}
-\def\setorbheight#1{
+% predefined orbitals:
+\newcommand*\pzorb{\porb[,,90]}%
+\newcommand*\pyorb{\porb[,,0]}%
+\newcommand*\pxorb{\porb[,,-135]}%
+
+% change orbital settings:
+\newcommand*\CM@orb@height{1em}%
+\newcommand*\setorbheight[1]{%
\ifx\@empty#1\@empty
- \def\CM@orb@height{1em}
+ \renewcommand*\CM@orb@height{1em}%
\else
- \def\CM@orb@height{#1}
+ \renewcommand*\CM@orb@height{#1}%
\fi
}
-\def\pzorb{\porb[,,90]}
-\def\pyorb{\porb[,,0]}
-\def\pxorb{\porb[,,-135]}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% - Newman projections ---------------------------------------------------------------- %
-\let\CM@newman@tikz@ring\@empty%
-\let\CM@newman@tikz@one\@empty%
-\let\CM@newman@tikz@two\@empty%
-\def\newman{\@ifnextchar[{\CM@newman@ii}{\def\CM@newman@angle{0}\def\CM@newman@scale{1}\let\CM@newman@tikz@ring\@empty\let\CM@newman@tikz@one\@empty\let\CM@newman@tikz@two\@empty\CM@newman@i}}%
-\def\CM@newman@ii[#1]{%
- \let\CM@remainargs\@empty\CM@splitarg{#1}%
- \ifx\CM@firstarg\@empty\def\CM@newman@angle{0}\else\let\CM@newman@angle\CM@firstarg\fi%
- \ifx\CM@secondarg\@empty\def\CM@newman@scale{1}\else\let\CM@newman@scale\CM@secondarg\fi%
- \ifx\CM@thirdarg\@empty\let\CM@newman@tikz@ring\else\let\CM@newman@tikz@ring\CM@thirdarg\fi%
- \CM@newman@iii%
-}
-\def\CM@newman@iii{\@ifnextchar[{\CM@newman@iv}{\CM@newman@i}}
-\def\CM@newman@iv[#1]{%
- \ifx\@empty#1\@empty\let\CM@newman@tikz@one\@empty\else\edef\CM@newman@tikz@one{#1}\fi%
- \let\CM@newman@tikz@two\CM@newman@tikz@one%
- \CM@newman@v%
-}
-\def\CM@newman@v{\@ifnextchar[{\CM@newman@vi}{\CM@newman@i}}
-\def\CM@newman@vi[#1]{%
- \ifx\@empty#1\@empty\else\edef\CM@newman@tikz@two{#1}\fi%
- \CM@newman@i%
-}
-\def\CM@newman@i#1{%
- \let\CM@remainargs\@empty\CM@splitarg{#1}%
- \ifx\CM@firstarg\@empty\let\CM@newman@node@one\@empty\else\let\CM@newman@node@one\CM@firstarg\fi%
- \ifx\CM@secondarg\@empty\let\CM@newman@node@two\CM@newman@tikz@one\else\let\CM@newman@node@two\CM@secondarg\fi%
- \let\CM@remainargs\@empty%
- \expandafter\CM@splitarg\expandafter{\CM@thirdarg}%
- \ifx\CM@firstarg\@empty\let\CM@newman@node@three\@empty\else\let\CM@newman@node@three\CM@firstarg\fi%
- \ifx\CM@secondarg\@empty\let\CM@newman@node@four\@empty\else\let\CM@newman@node@four\CM@secondarg\fi%
- \let\CM@remainargs\@empty%
- \expandafter\CM@splitarg\expandafter{\CM@thirdarg}%
- \ifx\CM@firstarg\@empty\let\CM@newman@node@five\@empty\else\let\CM@newman@node@five\CM@firstarg\fi%
- \ifx\CM@secondarg\@empty\let\CM@newman@node@six\@empty\else\let\CM@newman@node@six\CM@secondarg\fi%
- \let\CM@thirdarg\@empty%
- \edef\CM@newman@tikz{scale=\CM@newman@scale,atomF/.style={inner sep=0,outer sep=0,\CM@newman@tikz@one},atomB/.style={inner sep=0,outer sep=0,\CM@newman@tikz@two}}
- \expandafter\tikz\expandafter[\CM@newman@tikz]{%
- \coordinate (a) at (0,0);
- \expandafter\draw\expandafter[\CM@newman@tikz@ring] (a) circle (.5);
- \foreach\i in{30+\CM@newman@angle,150+\CM@newman@angle,270+\CM@newman@angle}
- {\expandafter\draw\expandafter[\CM@newman@tikz@ring] ($(a)+(\i:0.5)$) --++(\i:.5);}
- \node[atomB,anchor=-150+\CM@newman@angle] at ($(a)+(30+\CM@newman@angle:1.05)$) {\CM@newman@node@five};
- \node[atomB,anchor=-30+\CM@newman@angle] at ($(a)+(150+\CM@newman@angle:1.05)$){\CM@newman@node@six};
- \node[atomB,anchor=90+\CM@newman@angle] at ($(a)+(270+\CM@newman@angle:1.05)$){\CM@newman@node@four};
- \foreach\i in{90,210,330}
- {\expandafter\draw\expandafter[\CM@newman@tikz@ring] (a) --++(\i:1);}
- \node[atomF,anchor=-90] at ($(a)+(90:1.05)$) {\CM@newman@node@one};
- \node[atomF,anchor=30] at ($(a)+(210:1.05)$){\CM@newman@node@two};
- \node[atomF,anchor=150] at ($(a)+(330:1.05)$){\CM@newman@node@three};
+% \newman[<angle>,<scale>,<tikz ring>][<tikz (front) nodes>][<tikz back nodes>]{<1>,<2>,<3>,<4>,<5>,<6>}
+\NewDocumentCommand\newman{ooom}{%
+ \IfNoValueTF{#1}{%
+ \def\CM@newman@angle{0}%
+ \def\CM@newman@scale{1}%
+ \def\CM@newman@tikz@ring{}%
+ }{%
+ \CM@splitting{#1}{3}%
+ \CM@compareCs{CM@arg@i}{@empty}{\def\CM@newman@angle{0}}{\let\CM@newman@angle\CM@arg@i}%
+ \CM@compareCs{CM@arg@ii}{@empty}{\def\CM@newman@scale{1}}{\let\CM@newman@scale\CM@arg@ii}%
+ \expandafter\def\expandafter\CM@newman@tikz@ring\expandafter{\CM@arg@iii}%
+ }
+ \IfNoValueTF{#2}{%
+ \let\CM@newman@tikz@one\@empty%
+ }{%
+ \def\CM@newman@tikz@one{#2}%
}
+ \IfNoValueTF{#3}{%
+ \let\CM@newman@tikz@two\CM@newman@tikz@one%
+ }{%
+ \def\CM@newman@tikz@two{#3}%
+ }
+ \CM@splitting{#4}{6}%
+ \edef\CM@newman@tikz{scale=\CM@newman@scale,CMatomFront/.style={inner sep=0,outer sep=0,\CM@newman@tikz@one},CMatomBack/.style={inner sep=0,outer sep=0,\CM@newman@tikz@two}}
+ \expandafter\tikz\expandafter[\CM@newman@tikz]{%
+ \expandafter\draw\expandafter[\CM@newman@tikz@ring] (0,0) circle (.5);%
+ \foreach\i in{30+\CM@newman@angle,150+\CM@newman@angle,270+\CM@newman@angle}{%
+ \expandafter\draw\expandafter[\CM@newman@tikz@ring] (\i:0.5) --++(\i:.5);%
+ }%
+ \node[CMatomBack,anchor=-150+\CM@newman@angle] at (30+\CM@newman@angle:1.05) {\CM@arg@v};%
+ \node[CMatomBack,anchor=-30+\CM@newman@angle] at (150+\CM@newman@angle:1.05) {\CM@arg@vi};%
+ \node[CMatomBack,anchor=90+\CM@newman@angle] at (270+\CM@newman@angle:1.05) {\CM@arg@iv};%
+ \foreach\i in{90,210,330}{%
+ \expandafter\draw\expandafter[\CM@newman@tikz@ring] (0,0) --++(\i:1);%
+ }%
+ \node[CMatomFront,anchor=-90] at (90:1.05) {\CM@arg@i};%
+ \node[CMatomFront,anchor=30] at (210:1.05) {\CM@arg@ii};%
+ \node[CMatomFront,anchor=150] at (330:1.05) {\CM@arg@iii};%
+ }%
}
-
-\endinput \ No newline at end of file
+\endinput
+% - Version history: ------------------------------------------------------------------ %
+% 2011/05/15 version 1.0 CTAN release %
+% 2011/06/22 version 1.1 "LaTeXified" whole package for safer usage %
+% less user work required (like loading package after another) %
+% more particle macros %
+% latin phrases %
+% extra units %
+% acid/base commands %
+% \mech %
+% \NMR %
+% \mhName, \setmhName, \newreaction, phases %
+% \renewstate, \setstatesubscript %
+% improved orbitals %
+% simpler package options, option german, bpchem %
+% bug fixes % \ No newline at end of file