%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % ------------------------------------------------------------------------------------- % % - myChemistry - mychemistry_de.tex -------------------------------------------------- % % - Creating reaction schemes with LaTeX and ChemFig ---------------------------------- % % ------------------------------------------------------------------------------------- % % - Clemens Niederberger -------------------------------------------------------------- % % - 2011/04/04 ------------------------------------------------------------------------ % % ------------------------------------------------------------------------------------- % % - http://www.niederberger-berlin.net/2011/02/latex-mychemistry/ --------------------- % % - kontakt@niederberger-berlin.net --------------------------------------------------- % % ------------------------------------------------------------------------------------- % % - If you have any ideas, questions, suggestions or bugs to report, please feel free - % % - to contact me. -------------------------------------------------------------------- % % ------------------------------------------------------------------------------------- % % - Copyright 2011 Clemens Niederberger - % % - - % % - This work may be distributed and/or modified under the - % % - conditions of the LaTeX Project Public License, either version 1.3 - % % - of this license or (at your option) any later version. - % % - The latest version of this license is in - % % - http://www.latex-project.org/lppl.txt - % % - and version 1.3 or later is part of all distributions of LaTeX - % % - version 2005/12/01 or later. - % % - - % % - This work has the LPPL maintenance status `maintained'. - % % - - % % - The Current Maintainer of this work is Clemens Niederberger. - % % - - % % - This work consists of the files mychemistry.sty, mychemistry_de.tex, - % % - mychemistry_en.tex and bondwidth.tex - % % ------------------------------------------------------------------------------------- % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \documentclass[DIV10,titlepage]{scrartcl} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - Pakete ---------------------------------------------------------------------------- % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usepackage{etoolbox} \usepackage{scrhack} % verbessert KOMAs Zusammenspiel mit floats \usepackage[ngerman]{babel} % Sprache \usepackage{emerald} % chemfig-Schrift \usepackage[utf8x]{inputenc} % Zeichenkodierung: Eingabe \usepackage[T1]{fontenc} % Text-Ausgabe-Codierung \usepackage{textcomp,mathcomp} \usepackage{xspace,paralist} % xspace und Listen \usepackage{siunitx} \DeclareSIUnit{\emlength}{em} \DeclareSIUnit{\pt}{pt} \usepackage{listings,fancyvrb} % wortwörtliche Anzeige \newcommand{\vitem}[1][]{\SaveVerb[aftersave={\item[\textnormal{\UseVerb[#1]{vsave}}]}]{vsave}} \usepackage[perpage,multiple]{footmisc} % Fußnoten \usepackage[ngerman]{varioref} % flexibles Referenzieren \labelformat{section}{Ab\-schnitt #1} \labelformat{subsection}{Ab\-schnitt #1} \labelformat{subsubsection}{Ab\-schnitt #1} \usepackage[dvipsnames]{xcolor} % Farbe \colorlet{code}{RawSienna} \xdefinecolor{MyDarkRed}{rgb}{0.4392,0.0627,0.0627} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - Anzeige des Inhaltsverzeichnisses ------------------------------------------------- % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usepackage{titletoc} \titlecontents{section} [6.5pc] % SECTION-ANZEIGE {\renewcommand\familydefault{ppl}\addvspace{2pc}\bfseries \color{MyDarkRed}\titlerule[2pt]\filright\normalcolor\nobreak} % davor {\contentslabel [\textsc{Abschnitt}\ \thecontentslabel]{6.5pc}} % nummerierter Eintrag {\hspace{-6.5pc}\scshape\thecontentslabel} % unnummerierter Eintrag {\hfill\contentspage} [\addvspace{3pt}\renewcommand\familydefault{ppl}] % danach %% \newcommand{\xquad}{\hspace{1em plus.4em minus.4em}} \titlecontents*{subsubsection}[6pc] % SUBSUBSECTION-ANZEIGE {\footnotesize\itshape} {} {} {,~\thecontentspage} [\xquad\textbullet\xquad] {} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - Hyperlinks ------------------------------------------------------------------------ % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usepackage{hyperref} \hypersetup{colorlinks=true, % Setup der Hyperlinks und des pdf linkcolor=green!50!black, urlcolor=blue!70, plainpages=false, bookmarksopen=true, bookmarksopenlevel=2, bookmarksnumbered=true, pdfstartview=FitH, pdfauthor={Clemens Niederberger}, pdftitle={myChemistry}, pdfsubject={Creating reactionschemes with LaTeX}, pdfkeywords={myChemistry}, pdfcreator={LaTeX} } \usepackage[color=dunkelrot]{mychemistry} % myChemistry \def\thebeispiel{\arabic{beispiel}} % chemexec angepasst \labelformat{beispiel}{Bei\-spiel #1} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - Listings anpassen ----------------------------------------------------------------- % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \fvset{numbers=left,numbersep=3pt,xleftmargin=20pt,gobble=0,numberblanklines=true} \lstset{literate={ä}{{\"a}}1 {ö}{{\"o}}1 {ü}{{\"u}}1 {Ä}{{\"A}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1 {ß}{{\ss}}1} \lstset{ language=[LaTeX]TeX, basicstyle={\ttfamily}, % Grundstil extendedchars=true, numbers=left, % Zeilennummern numberstyle=\tiny, % Größe des Zeilennummern numberblanklines=true, % Leerzeilen nummerieren gobble=0, % das erste Leerzeichen abschneiden xleftmargin=20pt, % Einrückung links breaklines=true, % Zeilenumbruch moredelim=[is][\color{red!25!purple}]{!!}{!!},% Hervorhebung commentstyle={\color[named]{Gray}}, emph={begin,end}, % Umgebungen hervorheben emphstyle=\color{red}, keywordstyle=\color{code}, keywordstyle=[20]\color{blue}, morekeywords=[20]{rxn,rxnfloat,rxnscheme,tikzpicture}, texcsstyle=[30]\color{code}, moretexcs=[30]{arrow,branch,chemand,chemfig,chemmove,chemname,chemrel,chemsign,ce,compound,declarecompound,draw,dummy,elmove,floatplacement,floatstyle,Hpl,Hyd,lewis,listof,makeinvisible,makevisible,marrow,mCsetup,merge,mesomeric,node,nu,om,op,ox,reactand,restylefloat,setarrowlength,setatomsep,setatomsize,setbondlength,setbondshape,setcrambond,setrcndist,setrxnalign,setschemealign,setschemename,transition}, fancyvrb=true } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - Kopf- und Fußzeile ---------------------------------------------------------------- % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usepackage{scrpage2} \pagestyle{scrheadings} \setheadwidth{textwithmarginpar} \automark{section} \ihead{\mC \mCversion} \ifoot{\small\color{gray}-~Seite~\thepage~-} \cfoot{} \ofoot{} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - Komascript ------------------------------------------------------------------------ % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \setkomafont{disposition}{\rmfamily\bfseries} % Gewicht fett und Schriftart roman %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - neue Befehle ---------------------------------------------------------------------- % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - Hyperlinks in Listings ------------------------------------------------------------ % % - auf Basis von Code usenet: comp.text.tex ------------------------------------------ % \makeatletter \AtBeginEnvironment{VerbatimOut}{\let\lsthk@OutputBox\lsthk@OutputBox@H@@k\let\lstbasicfont\footnotesize} \AtBeginEnvironment{Verbatim}{\let\lsthk@OutputBox\lsthk@OutputBox@H@@k\let\lstbasicfont\footnotesize} \AtBeginEnvironment{SideBySideExample}{\let\lsthk@OutputBox\lsthk@OutputBox@H@@k\let\lstbasicfont\footnotesize} \AtBeginDocument{\preto\FV@VerbatimBegin{\let\lsthk@OutputBox\lsthk@OutputBox@H@@k\let\lstbasicfont\footnotesize}} \AtBeginDocument{\preto\FV@VerbatimBegin{\let\lsthk@OutputBox\lsthk@OutputBox@H@@k\let\lstbasicfont\footnotesize}} \providerobustcmd*\ifrefundefined [1]{% \begingroup% \csname @safe@activestrue\endcsname% \expandafter\endgroup\csname @\ifcsname r@#1\endcsname second\else first\fi oftwo\endcsname }% \ifrefundefined \def\lsthk@OutputBox@H@@k{% \begingroup% \let\lst@UM\@empty% \edef\@tempc{ssec:\detokenize\expandafter{\the\lst@token }}%\edef \ifrefundefined{\@tempc}% \endgroup% \sethyperlistings% }% \lsthk@OutputBox@fcltxH@@k \def\sethyperlistings {\global\let \hyperlistingsreference =\@tempc \endgroup \aftergroup \dohyperlistings }% after \hbox \def\dohyperlistings {\def\lst@alloverstyle ##1{\hyperlistings ##1}} \def\hyperlistings{% \setbox\@tempboxa\hbox% \bgroup% \rlap{\hypersetup {linkcolor=.}\relax\fboxrule\z@% \hyperref[\hyperlistingsreference]{\boxframe{\wd\@tempboxa}{\ht\@tempboxa}{\dp\@tempboxa}}}% \unhbox\@tempboxa% \egroup% }% \hyperlistings \let\lsthk@OutputBox\lsthk@OutputBox@H@@k % - Beispiele ------------------------------------------------------------------------- % % - auf Basis der Beispiele in der fancyvrb-Dokumentation ----------------------------- % \newcommand{\BeginExample}{% \VerbatimEnvironment \begin{VerbatimOut}[gobble=1]{\jobname.tmp}} \newcommand{\BelowExample}[1]{% \VerbatimInput[numbersep=3pt,fontsize=\footnotesize, numbers=left,xleftmargin=5mm,xrightmargin=0pt]{\jobname.tmp} #1} % - Code, Ergebnis rechts ------------------------------------------------------------- % \newcommand{\SideBySide@Example}[1]{% \setlength{\parindent}{0pt}% \begin{minipage}[c]{.48\textwidth} \VerbatimInput[numbersep=3pt,fontsize=\footnotesize, numbers=left,xleftmargin=5mm,xrightmargin=0pt]{\jobname.tmp} \end{minipage}% \hspace*{2mm} \begin{minipage}[c]{.48\textwidth} #1 \end{minipage} } \def\SideBySideExample{% \catcode`\^^M=\active \@ifnextchar[{\catcode`\^^M=5\beispiel\vspace*{1mm}\SideBySideExample@}% {\catcode`\^^M=5\beispiel\vspace*{1mm}\SideBySideExample@@}} \def\SideBySideExample@[#1]{#1\SideBySideExample@@} \def\SideBySideExample@@{\BeginExample} \def\endSideBySideExample{% \end{VerbatimOut}% \SideBySide@Example{\input{\jobname.tmp}}\vspace*{1mm}\endbeispiel} % - Code, Ergebnis danach ------------------------------------------------------------- % \newcommand{\@Example}[1]{% \setlength{\parindent}{0pt}% \begin{minipage}{\textwidth} \VerbatimInput[numbersep=3pt,fontsize=\footnotesize, numbers=left,xleftmargin=5mm,xrightmargin=0pt]{\jobname.tmp} \end{minipage}% \smallskip \begin{minipage}{\textwidth} #1 \end{minipage} } \def\Example{% \catcode`\^^M=\active \@ifnextchar[{\catcode`\^^M=5\beispiel\vspace*{1mm}\Example@}% {\catcode`\^^M=5\beispiel\vspace*{1mm}\Example@@}} \def\Example@[#1]{#1\Example@@} \def\Example@@{\BeginExample} \def\endExample{% \end{VerbatimOut}% \@Example{\input{\jobname.tmp}}\vspace*{1mm}\endbeispiel} \makeatother % - weitere Makros -------------------------------------------------------------------- % \newcommand{\mC}{{\color{MyDarkRed}\sffamily myChemistry}\xspace} % Paketname \newcommand{\CF}{{\ECFAugie ChemFig}\xspace} % ChemFig in der originalen Schrift \newcommand{\zB}{\mbox{z.\,B.}\xspace} \newcommand{\TikZ}{\mbox{Ti{\bfseries\itshape k}Z}\xspace} \newcommand\Vii[1][0pt]{\leavevmode\llap{\footnotesize\ECFTeenSpirit seit v1.2\kern\dimexpr20pt+#1\relax}} \newcommand\NEU[1][0pt]{\leavevmode\llap{\footnotesize\ECFTeenSpirit\color{red}Neu in \mCversion\kern\dimexpr20pt+#1\relax}} \newlength{\tmplength} % - für Beispiele --------------------------------------------------------------------- % \newcommand{\oben}{\tikz\node[draw,minimum width=3em,minimum height=1.5em,blue]{\footnotesize oben};} \newcommand{\unten}{\tikz\node[draw,minimum width=3em,minimum height=1.5em,red]{\footnotesize unten};} \newcommand{\substanz}{\tikz\node[draw,minimum width=5em,minimum height=3em]{};} \begin{document} \begin{titlepage} % inspired by the titlepage of chemfig's documentation \begin{tikzpicture}[remember picture,overlay] \shade[color=dunkelrot,right color=white](current page.south west) rectangle ([yshift=3cm,xshift=-3cm]current page.center); \shade[top color=black,bottom color=dunkelrot]([yshift=7cm]current page.east)rectangle([yshift=2.5cm]current page.west); \node[text width=\textwidth,opacity=.15,yshift=-5.3cm] at (current page.center) {% \begin{verbatim} \begin{rxn}[scale=.7] \setatomsep{1.5em}\footnotesize \reactand[,a]{ \chemfig{C(-[4]*6(=-=-=-))(-[2]*6(=-=-=-))(-[6,,,2]HO)-C(-[2]CH_3) (-[6]OH)-CH_3} } \branch[below right=of a]{ \arrow[direction=above right,length=.7]{}{} \reactand[above right]{ \chemfig{C(-[4]*6(=-=-=-))(-[2]*6(=-=-=-))(-[@{e1}6,,,2]H_2@{e2} \chembelow{O}{\oplus})-C(-[2]CH_3)(-[6]OH)-CH_3}\elmove{e1} {10:4mm}{e2}{-10:4mm} } \arrow{$-\ce{H2O}$}{} \reactand{ \chemfig{\chembelow{C}{\oplus}(-[4]*6(=-=-=-))(-[2]*6(=-=-=-))-C (-[2]CH_3)(-[6]OH)-CH_3} } } \branch[below right=of a]{ \arrow[type={-|>},direction=below right,length=.7]{}{} \reactand[below right]{ \chemfig{C(-[4]*6(=-=-=-))(-[2]*6(=-=-=-))(-[6,,,2]HO)-C(-[2]CH_3) (-[@{e3}6]@{e4}\chembelow{O}{\oplus}H_2)-CH_3}\elmove{e3} {170:4mm}{e4}{-170:4mm} } \arrow{$-\ce{H2O}$}{} \reactand{ \chemfig{C(-[4]*6(=-=-=-))(-[2]*6(=-=-=-))(-[6,,,2]HO)- \chembelow{C}{\oplus}(-[2]CH_3)-CH_3} } } \end{rxn} \end{verbatim}% }; \end{tikzpicture} \begin{center} \scalebox{4}{\mC}\par \Large\mCversion\par\bigskip \footnotesize\mCdate{de}\par \normalsize Clemens Niederberger\par\vskip1.5cm \color{white}\huge Reaktionsschemata mit \LaTeX\ und \CF erstellen% \end{center} \vskip4cm \begin{rxn}[scale=.7] \setatomsep{1.5em}\footnotesize \reactand[,a]{ \chemfig{C(-[4]*6(=-=-=-))(-[2]*6(=-=-=-))(-[6,,,2]HO)-C(-[2]CH_3)(-[6]OH)-CH_3} } \branch[above right=of a]{ \arrow[direction=above right,length=.7]{}{} \reactand[above right]{ \chemfig{C(-[4]*6(=-=-=-))(-[2]*6(=-=-=-))(-[@{e1}6,,,2]H_2@{e2}\chembelow{O}{\oplus})-C(-[2]CH_3)(-[6]OH)-CH_3}\elmove{e1}{10:4mm}{e2}{-10:4mm} } \arrow{$-\ce{H2O}$}{} \reactand{ \chemfig{\chembelow{C}{\oplus}(-[4]*6(=-=-=-))(-[2]*6(=-=-=-))-C(-[2]CH_3)(-[6]OH)-CH_3} } } \branch[below right=of a]{ \arrow[type={-|>},direction=below right,length=.7]{}{} \reactand[below right]{ \chemfig{C(-[4]*6(=-=-=-))(-[2]*6(=-=-=-))(-[6,,,2]HO)-C(-[2]CH_3)(-[@{e3}6]@{e4}\chembelow{O}{\oplus}H_2)-CH_3}\elmove{e3}{170:4mm}{e4}{-170:4mm} } \arrow{$-\ce{H2O}$}{} \reactand{ \chemfig{C(-[4]*6(=-=-=-))(-[2]*6(=-=-=-))(-[6,,,2]HO)-\chembelow{C}{\oplus}(-[2]CH_3)-CH_3} } } \end{rxn} \end{titlepage} \tableofcontents \section{Über} \subsection{Änderungen} Neue Befehle oder Veränderungen wurden mit {\ECFTeenSpirit seit v} gefolgt von der Versionsnummer markiert, \zB {\ECFTeenSpirit seit v1.2}. Die neuesten Änderungen sind mit {\ECFTeenSpirit\color{red}Neu in \mCversion} gekennzeichnet. \subsubsection{Version 1.2} \Vii% Neben einigen Bugfixes gibt es in Version \mCversion\ ein paar Neuerungen. Insbesondere wurde das fehlerhafte Verhalten bei der Ausrichtung von Branches sowie das seltsame Verhalten von Pfeilbeschriftungen, wenn man die Pfeillänge änderte, korrigiert. \textbf{Diese Veränderung hat zur Folge, das \mC nun \TikZ oder vielmehr pgf in der Version 2.10 benötigt} (siehe \ref{ssec:voraussetzungen}). Während sich diese Neuerungen im Hintergrund abspielen, gibt es auch ein paar Neuerungen für die Bedienung. Zum Beispiel gibt es nun einige Paketoptionen, um die automatisch eingebundenen Pakete besser zu handhaben (\ref{ssec:paketoptionen}). Außerdem haben die Pfeile zwei neue Keys bekommen (siehe \ref{ssec:arrow}). Auch die Umgebungen haben nun ein paar Möglichkeiten mehr, den persönlichen Vortellungen angepasst zu werden (siehe \ref{sssec:rxn_optionen}, \ref{sssec:rxnscheme_optionen} und \ref{ssec:setrcndist}). Nicht zuletzt steht \mC ab v1.2 nun unter der LPPL Version 1.3 oder später. \subsubsection{Version 1.3} \NEU% Die Befehle \lstinline+\branch+, \lstinline+\mesomeric+, \lstinline+\reactand+ und \lstinline+\transition+ können als optionales Argument neben der Ausrichtung auch \TikZ-Keys erhalten. Das zweite Argument ist nun ebenfalls als Option einzusetzen. Damit ist das erste optionale Argument immer noch die Ausrichtung, das zweite der Anker und in das dritte können beliebige \TikZ-Keys eingesetzt werden. \begin{Verbatim} \befehl[,,]{} \end{Verbatim} Bis Version 1.2 musste die Ausrichtung explizit angegeben werden, auch wenn die Default\-einstellung verwendet werden sollte, falls man \TikZ-Keys verwenden wollte. Das ist seit \mCversion\ nicht mehr nötig. \begin{Verbatim} % bisher: \reactand{\ce{Br2}}{}\arrow{$h\nu$}{}\reactand!![right,draw,inner sep=5pt]!!{\ce{2 \lewis{0.,Br}}}{} % jetzt: \reactand{\ce{Br2}}\arrow{$h\nu$}{}\reactand!![,,draw,inner sep=5pt]!!{\ce{2 \lewis{0.,Br}}} \end{Verbatim} Die Voreinstellungsbefehle wurden umbenannt und der Befehl \lstinline+\mCsetup+ hinzugefügt, mit dem die Voreinstellungen mit einer Schnittstelle gehandhabt werden können. Siehe \ref{ssec:setarrowlength}, \ref{ssec:setatomsize}, \ref{ssec:setbondlength}, \ref{ssec:setbondshape} und \ref{ssec:mCsetup}. Es gibt den neuen Befehl \lstinline+chemand+, der ein $+$ erzeugt, siehe \ref{ssec:chemand}. Wenn man \CF v0.4 verwendet, bindet \mC die Datei \lstinline+bondwidth.tex+ ein, die den Befehl \lstinline+\setbondwidth{}+ bereitstellt. Damit kann die Liniendicke der Bindungen von \CF-Formeln verändert werden. Und auch das ist vielleicht ganz angenehm: alle \mC-Befehle in den Listings sind nun anklickbare Hyperlinks, die auf ihre Beschreibung in der Befehlsreferenz verweisen. \subsection{Lizenz} \mC \mCversion\ steht unter der LaTeX Project Public License Version 1.3 oder später.\newline(\url{http://www.latex-project.org/lppl.txt}) \subsection{Voraussetzungen}\label{ssec:voraussetzungen} Damit \mC funktionieren kann, müssen ein paar Pakete installiert sein: \begin{description} \item[\CF] ohne das ergibt die ganze Sache gar keinen Sinn; \item[ifthen] für interne Abfragen; \item[calc] für interne Berechnungen; \item[xkeyval] Paketoptionen und Befehl-Keys werden damit erstellt; \item[float] damit wird die \lstinline=rxnscheme=-Umgebung definiert; \item[pgf/\TikZ] pgf ist nicht nur ein Paket sondern eine ganze Reihe von Paketen. Sie stellen die gesamte Basis für \TikZ da. Damit \mC funktionieren kann, muss mindestens die Version vom 08.09.2010\footnote{\url{http://sourceforge.net/projects/pgf/files/}} installiert sein.\\ Genauer: der Befehl \lstinline=\pgfpositionnodelater= muss verfügbar sein. Noch genauer benötigt der Key \lstinline+both+ des Befehls \lstinline+\arrow+ diese Version. Wenn Sie den Key nicht verwenden, sollte \mC auch mit pgf v2.00 problemlos funktionieren. Ältere Versionen wurden nicht getestet. \end{description} \subsection{Die Idee} Seit August 2010 steht mit \CF eine wirklich flexible Lösung für organische Strukturformeln zur Verfügung. So kann man nun durch das Einbinden von \CF und `mhchem' mehr oder weniger alle Struktur- und Summenformeln, die man als Chemiker so benötigt, mit \LaTeX\ setzen. Was \CF gegenüber `ochem' noch benachteiligt, ist das Erstellen richtiger Reaktionsmechanismen. Hier soll \mC Abhilfe schaffen. \mC bindet die Pakete \begin{itemize} \item \CF\footnote{von Christian Tellechea, \url{http://www.ctan.org/tex-archive/macros/generic/chemfig/}}, \item wenn vorhanden `mhchem'\footnote{von Martin Hensel, \url{http://www.ctan.org/tex-archive/macros/latex/contrib/mhchem/}} in der Version 3, \item wenn vorhanden `chemexec'\footnote{von mir, \url{http://www.ctan.org/tex-archive/macros/latex/contrib/chemexec/}} und \item wenn vorhanden `chemcompounds'\footnote{von Stephan Schenk, \url{http://www.ctan.org/tex-archive/macros/latex/contrib/chemcompounds/}} ein. \end{itemize} Zur Funktion der Befehle der oben genannten Pakete siehe deren Dokumentation. Wenn Sie die Pakete separat laden wollen, weil Sie ihnen Optionen mitgeben wollen, dann sollten Sie das machen, \emph{bevor} Sie \mC laden, um Konflikte zu vermeiden. \mC prüft intern einerseits darauf, ob die Pakete installiert sind und falls ja, ob sie bereits geladen sind. Wenn nicht, werden sie von \mC aufgerufen. Befehle, die durch die eingebundenen Pakete zur Verfügung stehen, sind unter anderem \begin{itemize} \item \lstinline=\ce{}= (mhchem) \item \lstinline=\ox{}{}=, \lstinline=\om[]=, \lstinline=\op[]=, \lstinline=\Hyd=, \lstinline=\Hpl= (chemexec) \item \lstinline=\chemfig[][]{}=, \lstinline=\chemrel[]{}=, \lstinline=\chemsign[]{}=, \lstinline=\lewis{}= (\CF) \item \lstinline=\declarecompound[]{}=, \lstinline=\compound{}= (chemcompounds). \end{itemize} In den Beispielen in diesem Manual wurden Befehle dieser Pakete verwendet \emph{ohne sie speziell als solche zu kennzeichnen}.\\ Vor allem stellt \mC Befehle zum Erstellen von Reaktionsschemata zur Verfügung. \section{Verwendung} \subsection{Hintergrund} \mC stellt zwei Umgebungen zur Verfügung, innerhalb derer die Reaktionsmechanismen erstellt werden. Beide Umgebungen sind letztlich eine `tikzpicture'-Umgebung. Die Frage, die sich aufdrängt, ist natürlich: wozu? \CF bringt doch schon einiges an Möglichkeiten mit. Und mit \TikZ hat man wirklich alle Möglichkeiten offen. Zugegeben. Allerdings bin ich faul, also habe einige häufig verwendete \TikZ-Befehle zu Makros zusammengefasst. Die sind immer mehr geworden und haben immer mehr Feinheiten erhalten, so dass dieses Paket dabei herausgekommen ist. Selbstverständlich bleibt man mit \TikZ flexibler, aber die Möglichkeit bleibt einem ja immer offen. \subsection{Das Grundprinzip} In dem `tikzpicture', das in den \mC-Umgebungen erstellt wird, werden Reaktanden und Reaktionspfeile mit einzelnen `nodes'\footnote{In einem tikzpicture kann man nahezu beliebig sogenannte `nodes' setzen, mit allen möglichen Formen und Inhalten. Das sind "`Knotenpunkte"' an bestimmten Koordinaten in einer `tikzpicture'-Umgebung.} auf einer `chain'\footnote{Dafür ist die tikzlibrary `chains' nötig.} angeordnet. \begin{SideBySideExample} \begin{tikzpicture}[start chain] \node [on chain] {A}; \node [on chain] {B}; \node [on chain] {C}; \end{tikzpicture} \end{SideBySideExample} Dadurch ergeben sich einige Möglichkeiten, die `nodes' relativ zueinander zu platzieren. \begin{SideBySideExample} \begin{tikzpicture}[start chain=going right,node distance=5mm] \node [draw,on chain] {Hello}; \node [draw,on chain] {World}; \node [draw,continue chain=going below,on chain] {,}; \node [draw,on chain] {this}; \node [draw,on chain] {is}; \end{tikzpicture} \end{SideBySideExample} \mC macht vor allem von der Möglichkeit Gebrauch, `branches' zu erstellen. \begin{SideBySideExample} \begin{tikzpicture}[start chain=going right,node distance=5mm] \node [draw,on chain] {A}; \node [draw,on chain] {B}; { [start branch] \node [on chain=going below] {1}; \node [on chain=going below] {2}; } { [start branch] \node [on chain=going above] {$\alpha$}; \node [on chain=going above] {$\beta$}; } \node [draw,on chain] {C}; \end{tikzpicture} \end{SideBySideExample} Sie müssen das nicht in allen Konsequenzen nachvollziehen, sollten aber die Richtungsangaben des letzten Beispiels in Erinnerung behalten, denn sie werden von \mC ebenfalls verwendet. In manchen Beispielen der Dokumentation werden die Nodes farbig eingerahmt (siehe \ref{ssec:makevisible}), damit man sehen kann, welchen Platz sie einnehmen und welchen Effekt eine Änderung der Ausrichtung hat. \subsection{Wie funktioniert's?} \subsubsection{Basisbefehle} Sehen wir uns zunächst ein Beispiel an: \begin{SideBySideExample} \begin{rxn} \reactand{ \chemfig{-[::30]-[::-60]OH} } \arrow{Ox.}{} \reactand{ \chemfig{-[::30]=_[::-60]O} } \end{rxn} \end{SideBySideExample} Sie sehen hier die wichtigsten Befehle von \mC im Einsatz: \begin{description} \vitem=\begin{rxn}[]= Die erste von zwei Umgebungen. Sie stellt die Reaktionschemata zwischen den Text und zentriert sie (siehe \ref{ssec:rxn}). \vitem=\reactand[,,]{}= setzt eine \lstinline+node+ auf die\linebreak\lstinline+chain+, in die die chemischen Formeln geschrieben werden. Die Standard-Aus\-rich\-tung ist \lstinline=right= (siehe \ref{ssec:reactand}). \vitem=\arrow[]{}{}= schreibt in der Standardeinstellung einen \SI{5}{\emlength} langen einfachen Pfeil nach rechts (siehe \ref{ssec:arrow}). \end{description} \begin{SideBySideExample} \begin{rxn} \reactand{ \chemfig{-[::30]=_[::-60]O} } \arrow[direction=below]{}{Ox.} \reactand[below]{ \chemfig{-[::30](-[::60]OH)=_[::-60]O} } \end{rxn} \end{SideBySideExample} Wie Sie sehen, lässt sich das Reaktionschema durch optionale Argumente anders ausrichten. Durch die Angabe \lstinline=below= wird die Carbonsäure unter den Pfeil gesetzt und nicht rechts daneben. Durch die Key-Angabe \lstinline+direction=below+ zeigt der Pfeil nach unten anstatt nach rechts. \subsubsection{Verzweigungen} Bislang ist noch nicht recht einsichtig, wieso man \mC einsetzen sollte. Die waagerechten Reaktionen sind mit `mhchem' und \CF selbst zu verwirklichen. Und weshalb sollte man eine senkrechte Reaktion benötigen? Was den Einsatz von \mC aber interessant machen könnte, ist die Möglichkeit, verzweigte Reaktionsschemata zu erstellen. \begin{Example} \begin{rxn} \reactand{ \chemfig{-[::30]-[::-60]OH} } \arrow{}{} \reactand[,carbonyl]{ \chemfig{-[::30]=_[::-60]O} } \arrow[direction=below]{}{} \reactand[below]{ \chemfig{-[::30](-[::60]OH)=_[::-60]O} } \branch[right=of carbonyl]{ \arrow[type={<=>}]{\ce{NH2R}}{} \reactand{ \chemfig{-[::30]=_[::-60]N(-[6]H)-[::60]R} } } \end{rxn} \end{Example} Im letzten Beispiel haben Sie einen weiteren wichtigen Befehl kennengelernt: \begin{description} \vitem=\branch[,,]{}= (siehe \ref{ssec:branch}) \end{description} Der Zweig wurde mit \lstinline+right=of carbonyl+ rechts neben den ersten Reaktanden mit dem Anker \lstinline=carbonyl= angesetzt. Innerhalb des Zweigs wurde beim Pfeil der Key \lstinline+type={<=>}+ verwendet, wodurch der Gleichgewichtspfeil dargestellt wurde. Andere \lstinline=type=-Mög\-lich\-kei\-ten wären \lstinline=->= (Voreinstellung), \lstinline=<-= oder \lstinline=<->=. Durch mehrfaches Verwenden von \lstinline=\branch= können so umfangreichere Reaktionschemata entstehen: \begin{Example} \begin{rxn} \reactand{ \chemfig{-[::30]-[::-60]OH} } \arrow{}{} \reactand[,carbonyl]{ \chemfig{-[::30]=_[::-60]O} } \arrow[direction=below]{}{} \reactand[below]{ \chemfig{-[::30](-[::60]OH)=_[::-60]O} } \branch[right=of carbonyl,imin]{ \arrow[type={<=>},length=1.12]{\ce{NH2R}}{} \reactand{ \chemfig{-[::30]=_[::-60]N(-[6]H)-[::60]R} } } \branch[below right=of carbonyl,halbacetal,yshift=-2pt,xshift=3pt]{ \arrow[type={<=>},direction=below right,length=1.12,aboveshift=3pt]{ \chemfig{[,.75]-[::30]-[::-60]OH} }{} \reactand[below right]{ \chemfig{-[::30](-[::60]O-[::-60]-[::-60])-[::-60]OH} } } \branch[above=of carbonyl,aldol,xshift=5.2em]{ \arrow[direction=above]{ \chemfig{[,.75]-[::30]=_[::-60]O}/\Hpl }{} \reactand[above]{ \chemfig{-[::30](-[::60]OH)-[::-60]-[::60]=[::60]O} } \arrow{$-\ce{H2O}$}{} \reactand{ \chemfig{-[::30]=[::-60]-[::60]=[::60]O} } } \end{rxn} \end{Example} \subsubsection{Nummerierte Schemata} Die zweite Umgebung von \mC funktioniert genau wie die erste, setzt das Reaktionsschema allerdings in eine nummerierte Gleitumgebung mit Überschrift. \begin{Example} \begin{rxnscheme}{Keto-Enol-Tautomerie} \reactand{ \chemfig{=[::30]-[::-60]OH} } \arrow[type={<=>}]{}{} \reactand{ \chemfig{-[::30]=[::-60]O} } \end{rxnscheme} \end{Example} Hier kommt die Umgebung \begin{Verbatim} \begin{rxnscheme}[]{} ... \end{rxnscheme} \end{Verbatim} zum Einsatz. Wie Sie die Ihren Vorstellungen gemäß anpassen können, lesen Sie in der Befehlsreferenz (\ref{ssec:rxnscheme}). \subsection{Voreinstellungen} Es gibt einige Voreinstellungen, die zum Teil meinem persönlichen Geschmack geschuldet sind, die Sie aber nach Bedarf ändern können. So gelten für die \CF-Formeln \emph{innerhalb der \mC-Umgebungen} folgende Voreinstellungen: \begin{Verbatim} \setatomsep{1.8em} \setcrambond{3pt}{0.5pt}{1pt} \end{Verbatim} Außerhalb der Umgebungen gelten weiterhin die Voreinstellungen von \CF. \begin{SideBySideExample} \begin{rxn} \reactand{\chemfig{**6(------)}} \end{rxn} \chemfig{**6(------)} \end{SideBySideExample} Sie können die Voreinstellungen von \mC über folgende Befehle ändern: \begin{Verbatim} \setbondlength{} \setbondshape{}{}{} \setatomsize{} \end{Verbatim} Damit werden die Einstellungen nachfolgend \emph{für alle weiteren} \mC-Umgebungen geändert. Lassen Sie die Argumente leer, werden die Voreinstellungen wiederhergestellt. \lstinline=\setatomsize= hat die Voreinstellung \lstinline=\small=. \begin{Example} \setbondlength{2.1em}\setbondshape{5pt}{1pt}{2pt}\setatomsize{\Large} \begin{rxn} \reactand{\chemfig{-[::30](<[::60])-[::-60](<:[::-60])-[::60]}} \end{rxn} \setbondlength{}\setbondshape{}{}{}\setatomsize{} \begin{rxn} \reactand{\chemfig{-[::30](<[::60])-[::-60](<:[::-60])-[::60]}} \end{rxn} \end{Example} Wollen Sie nur die Parameter einer Umgebung ändern, verwenden Sie \emph{innerhalb der Umgebung} die Befehle von \CF und die \LaTeX-Befehle für die Schriftgröße. \begin{Example} \begin{rxn} \setatomsep{2.1em}\setcrambond{5pt}{1pt}{2pt}\Large \reactand{\chemfig{-[::30](<[::60])-[::-60](<:[::-60])-[::60]}} \end{rxn} \begin{rxn} \reactand{\chemfig{-[::30](<[::60])-[::-60](<:[::-60])-[::60]}} \end{rxn} \end{Example} Reaktionspfeile haben als Standardwert die Länge \SI{5}{\emlength} oder $5\sqrt{2}\si{\emlength}$ im Fall der schrägen Pfeile. Die Voreinstellung lässt sich mit \begin{Verbatim} \setarrowlength{} \end{Verbatim} \SaveVerb{arrowlength}==% auf \UseVerb{arrowlength} bzw. $\text{\UseVerb{arrowlength}}\cdot\sqrt{2}$ ändern. \subsection{Paket-Optionen}\label{ssec:paketoptionen} \mC verfügt über einige Paket-Optionen. \begin{description} \vitem+chemstyle+\settowidth{\tmplength}{\tt chemstyle}\Vii[\tmplength]Mit dieser Option kann `chemstyle' automatisch geladen werden, ohne dass Konflikte mit \mC enstehen. \vitem+color=+ Mit dieser Option wird die entsprechende Farbe an `chemexec' weitergereicht und dessen Option \lstinline+shade=true+ aufgerufen. \vitem+english+ Wird diese Option aufgerufen, dann lädt \mC `chemexec' in der englischen Version, falls das Paket nicht vorher aufgerufen wurde. Außerdem wird der Name der \lstinline=rxnscheme=-Umgebung (siehe \ref{ssec:rxnscheme}) in "`Reaction scheme"' geändert. \vitem+nochemexec+ Durch diese Option können Sie verhindern, dass \mC `chemexec' lädt. \vitem+nocolor+ Mit dieser Option wird `chemexec' ohne Farbe und mit der Option \lstinline+shade=false+ geladen (Default-Verhalten von \mC). \vitem+nocompounds+\settowidth{\tmplength}{\tt nocompounds}\Vii[\tmplength]Durch diese Option können Sie verhindern, dass \mC `chemcompounds' lädt. \vitem+nomhchem+\settowidth{\tmplength}{\tt nomhchem}\Vii[\tmplength]Durch diese Option können Sie verhindern, dass \mC `mhchem' lädt, vorausgesetzt, dass `chemexec' auch nicht geladen wird. \vitem+nopackages+\settowidth{\tmplength}{\tt nopackages}\Vii[\tmplength]Durch diese Option werden (außer \CF) gar keine Pakete geladen\footnote{Außer denen, die \mC benötigt, um zu funktionieren (\TikZ etc.).}. \vitem+placement=+ Durch den Aufruf dieser Option kann das Standard-Platzie\-rungs\-ver\-hal\-ten der \lstinline=rxnscheme=-Umgebung (siehe \ref{ssec:rxnscheme}) in \lstinline== geändert werden. \vitem+shade+ Mit dieser Option wird `chemexec' mit der Option \lstinline+shade=true+ geladen. \end{description} \section{Fortgeschrittene Anwendung, Verwendung von \TikZ} Die meisten der Befehle ermöglichen nach der Ausrichtungsangabe die Angabe weiteren \TikZ-Codes. Dadurch lassen sich viele Feinjustierungen vornehmen. Wenn Sie Sich mit \TikZ einigermaßen auskennen, können Sie sowieso noch weitaus mehr realisieren, als durch \CF und \mC vorgegeben (siehe \ref{ssec:tikzsynthese}). \subsection{Die Ausrichtungsfrage} Da Reaktanden, Pfeile und Zweige mittig zu dem Objekt, auf das sie sich beziehen, ausgerichtet werden, erzeugt die Default-Ausrichtung nicht immer schöne Ergebnisse. \begin{Example} \makevisible \begin{rxn} \reactand{ \chemname{\chemfig{*6(-=-=-=)}}{Benzol \compound{benzol}} } \arrow{}{} \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{Brombenzol \compound{brombenzol}} } \end{rxn} \end{Example} Wie Sie sehen können, sind die beiden Reaktanden aus Sicht der Benzolringe nicht gleich zu dem Pfeil ausgerichtet. Der erste Reaktand scheint nach oben geschoben zu sein. Der Versuch, das mit \TikZ-Code zu korrigieren, versagt. \begin{Example} \makevisible \begin{rxn} \reactand[,,yshift=-1em]{ \chemname{\chemfig{*6(-=-=-=)}}{Benzol \compound{benzol}} } \arrow{}{} \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{Brombenzol \compound{brombenzol}} } \end{rxn} \end{Example} Das kommt daher, da der erste Reaktand relativ zu dem Objekt verschoben wird, auf das er sich bezieht. Da er das erste Objekt auf der Chain ist, wird er gar nicht verschoben. Der nachfolgende Pfeil richtet sich in Bezug auf den ersten Reaktanden aus. \begin{SideBySideExample} \makevisible \begin{rxn} \reactand{A} \chemand \reactand[,,yshift=1em]{B} \arrow{}{} \end{rxn} \end{SideBySideExample} Da es (noch) keine Möglichkeit gibt, die Ausrichtung des Pfeils selbst zu ändern, könnte man ihn stattdessen in einen Zweig stecken. \begin{Example} \makevisible \begin{rxn} \reactand{A} \chemand \reactand[,,yshift=1em]{B} \branch[,,yshift=-1em]{\arrow{}{}} \end{rxn} \begin{rxn} \reactand{ \chemname{\chemfig{*6(-=-=-=)}}{Benzol \compound{benzol}} } \branch[,,yshift=1em]{\arrow{}{}} \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{Brombenzol \compound{brombenzol}} } \end{rxn} \end{Example} Das ist für das letzte Beispiel aber nicht die beste Lösung, da die exakte Ausrichtung auf diese Weise immer eine ganze Reihe von Versuchen benötigt, bis man das gewünschte Ergebnis erzielt. Es gibt eine andere Lösung: ein unsichtbares Brom am ersten Benzol. \begin{Example} \makevisible \begin{rxn} \reactand{ \chemname{\chemfig{*6(-=-=(-[,,,,draw=none]\phantom{Br})-=)}}{Benzol \compound{benzol}} } \arrow{}{} \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{Brombenzol \compound{brombenzol}} } \end{rxn} \end{Example} In anderen Fällen ist der \TikZ-Code aber die beste Lösung: \begin{Example} \makevisible default: \begin{rxn} \reactand{\chemfig{-[:-30]-[:30](=[2]O)-[:-30]OH}} \chemand \reactand{\chemfig{HO-[:30]-[:-30]-[:30]}} \arrow{[\Hpl]}{\SI{200}{\celsius}} \reactand{\chemfig{-[:-30]-[:30](=[2]O)-[:-30]O-[:30]-[:-30]-[:30]}} \end{rxn} Hydroxy-Gruppen auf gleicher H\"ohe: \begin{rxn} \reactand{\chemfig{-[:-30]-[:30](=[2]O)-[:-30]OH}} \chemand[,,yshift=-1.2em] \reactand[,,yshift=.12em]{\chemfig{HO-[:30]-[:-30]-[:30]}} \branch[,,yshift=1em]{\arrow{[\Hpl]}{\SI{200}{\celsius}}} \reactand{\chemfig{-[:-30]-[:30](=[2]O)-[:-30]O-[:30]-[:-30]-[:30]}} \end{rxn} \end{Example} Ich fürchte, in vielen Fällen müssen Sie mit \lstinline+xshift+ und \lstinline+yshift+ spielen, bis das Schema aussieht, wie Sie Sich das vorstellen. Vielleicht wird eine zukünftige Version von \mC eine benutzerfreundlichere Ausrichtungsmöglichkeit bieten. \subsection{Mit \TikZ andere Ziele erreichen} %TODO: Einleitungstext; checken, ob die Salzbildung jetzt richtig aussieht Man könnte natürlich, nur zum Spaß?, das Aussehen von Molekülen mit \TikZ ändern. \begin{SideBySideExample} \begin{rxn} \reactand[,,->,green!45!blue!55]{ \chemfig{*6(---(-)---)} } \end{rxn} \chemfig[->,green!45!blue!55]{*6(---(-)---)} \end{SideBySideExample} Das Beispiel ist natürlich kein gutes, da mit \CF dasselbe Ergebnis erzielt werden kann. Vielfache andere Anwendungen sind aber denkbar: \begin{Example} \newcommand{\leer}{\reactand[,minimum width=5em]{ \rule[-1em]{1em}{.5pt}\;\rule[-1em]{3em}{.5pt} }{}} \newcommand{\stoich}{\rule[-3pt]{1em}{.5pt}} \begin{rxn} \reactand{\bf\Large Salzbildung (I)} \reactand[below,a,yshift=1em]{F\"ulle die L\"ucken} \branch[below=of a,b]{ \reactand[,,minimum width=5em]{ \stoich\ Na }\chemand \leer \arrow{}{} \leer \chemand \leer } \branch[below=of b,,draw,inner sep=3pt]{\reactand[,,minimum width=5em]{}\chemand\reactand[,,minimum width=5em]{}\arrow{}{}\reactand[,,minimum width=5em]{Natriumchlorid $+$ Wasserstoff}} \end{rxn} \end{Example} \section{Alphabetische Befehlsreferenz} Im folgenden Abschnitt werden alle Befehle von \mC in alphabetischer Reihenfolge vorgestellt. \subsection{arrow}\label{ssec:arrow} Reaktionspfeile werden mit \lstinline=\arrow= erstellt. \begin{Verbatim} \arrow[]{}{} \end{Verbatim} Mit mehreren Keys können die Reaktionspfeile angepasst werden. Sie werden nach dem Muster \lstinline+key=wert+ angegeben. \begin{description} \vitem+direction=+ -- mögliche Einstellungen sind: \begin{rxn} \setarrowlength{2.5em} \dummy[a] \arrow{}{}\reactand{right} \branch[above right=of a]{\arrow[direction=above right]{}{}\reactand[above right]{above right}} \branch[above=of a]{\arrow[direction=above]{}{}\reactand[above]{above}} \branch[above left=of a]{\arrow[direction=above left]{}{}\reactand[above left]{above left}} \branch[left=of a]{\arrow[direction=left]{}{}\reactand[left]{left}} \branch[below left=of a]{\arrow[direction=below left]{}{}\reactand[below left]{below left}} \branch[below=of a]{\arrow[direction=below]{}{}\reactand[below]{below}} \branch[below right=of a]{\arrow[direction=below right]{}{}\reactand[below right]{below right}} \end{rxn} \vitem+type=+ -- mögliche Einstellungen sind: \begin{rxn} \dummy[a] \branch[below=of a,b,yshift=1em]{\arrow{}{}\reactand{\ttfamily type=\{-\textgreater\}}} \branch[below=of b,c,yshift=1em]{\arrow[type={<-}]{}{}\reactand{\ttfamily type=\{\textless-\}}} \branch[below=of c,d,xshift=.5em,yshift=1em]{\arrow[type={<->}]{}{}\reactand{\ttfamily type=\{\textless-\textgreater\}}} \branch[below=of d,e,yshift=1em]{\arrow[type={<=>}]{}{}\reactand{\ttfamily type=\{\textless=\textgreater\}}} \branch[below=of e,,yshift=1em]{\arrow[type={-|>}]{}{}\reactand{\ttfamily type=\{-\textbar\textgreater\}}} \end{rxn} \vitem+length=+ -- mit dem Faktoren, den Sie hier angeben, wird die Pfeillänge (\SI{5.0}{\emlength} bei Faktor = $1.0$, Standard) multipliziert. \vitem+name=+ -- hier können Sie dem Pfeil einen Anker geben, auf den \zB mit einem Branch referenziert werden kann. \vitem+both+\settowidth{\tmplength}{\tt both}\Vii[\tmplength]-- durch diesen Key haben die beiden Nodes, in die die Beschriftungen geschrieben werden, die gleichen Maße. \end{description} \begin{SideBySideExample} \begin{rxn} \dummy\arrow{\ce{Br2}}{$h\nu$} \arrow{\chemfig{-[::30]-[::-60]OH}}{} \end{rxn} \begin{rxn} \dummy\arrow[direction=above]{\ce{Br2}}{$h\nu$} \end{rxn} \begin{rxn} \dummy\arrow[direction=above]{\chemfig{-[::30]-[::-60]OH}}{} \end{rxn} \begin{rxn} \dummy\arrow[direction=above right]{\ce{Br2}}{$h\nu$} \end{rxn} \begin{rxn} \dummy\arrow[direction=above right]{\chemfig{-[::30]-[::-60]OH}}{} \end{rxn} \end{SideBySideExample} Einmal die meisten Keys im Einsatz: \begin{SideBySideExample} \begin{rxn} \reactand{A} \arrow[name=pfeil]{B}{} \branch[above=of pfeil,,yshift=-4em]{ \arrow[type=<-,direction=above,length=.7]{}{} \reactand[above]{D} } \reactand{C} \end{rxn} \end{SideBySideExample} Liegt der Pfeil in einem Branch (siehe \ref{ssec:branch}), dann wird die Ausrichtung des Branch bestimmt durch die Größe der Nodes, mit denen die Pfeilbeschriftung platziert wird. Hat der Pfeil nun nur eine oder zwei unterschiedlich große Beschriftungen, dann ist die Ausrichtung falsch. \begin{SideBySideExample} \makevisible \begin{rxn} \reactand[,a]{A} \arrow{}{} \branch[below=of a]{ \arrow[direction=below]{\chemfig{-[::30]-[::-60]OH}}{} } \end{rxn} \makeinvisible \end{SideBySideExample} Durch die Verwendung des Keys \lstinline=both= bekommen die Nodes beider Pfeilbeschriftungen die gleichen Maße, wodurch die Ausrichtung korrigiert werden kann. \begin{SideBySideExample} \makevisible \begin{rxn} \reactand[,a]{A} \arrow{}{} \branch[below=of a]{ \arrow[direction=below,both]{\chemfig{-[::30]-[::-60]OH}}{} } \end{rxn} \makeinvisible \end{SideBySideExample} Mehr zu dem Problem der Ausrichtung lesen Sie in \ref{sssec:branch_ausrichtung}. \subsection{branch}\label{ssec:branch} \NEU% Der Befehl \lstinline=\branch= wird verwendet, um eine Verzweigung der Reaktion zu realisieren. \textbf{Wenn Sie ältere Versionen von \mC eingesetzt haben, beachten Sie, dass sich die Befehl-Syntax verändert hat.} \begin{Verbatim} \branch[,,]{} \end{Verbatim} Für den \lstinline+\branch+ wird die Ausrichtung und der Anker wichtig. Sehen wir uns ein Beispiel an. \begin{Example} \begin{rxn} \reactand[,start]{\chemfig{-[::30]=_[::-60](-[::-60])-[::60]}} \arrow[length=.75]{\ce{HCl}}{} \reactand{\chemfig{-[::30]-[::-60](-[::120]Cl)(-[::-60])-[::60]}} \chemand \reactand{\chemfig{-[::30](-[::60]Cl)-[::-60](-[::-60])-[::60]}} \branch[below right=of start]{ \arrow[direction=below right,length=.75]{\ce{H2O}}{} \reactand[below right]{\chemfig{-[::30]-[::-60](-[::120]OH)(-[::-60])-[::60]}} \chemand \reactand{\chemfig{-[::30](-[::60]OH)-[::-60](-[::-60])-[::60]}} } \end{rxn} \end{Example} In diesem Beispiel hat der erste Reaktand den Anker \lstinline+start+ bekommen (Zeile 2, siehe auch \ref{ssec:reactand}). \begin{Verbatim}[firstnumber=2] \reactand[,!!start!!]{ ... } \end{Verbatim} \lstinline+\branch+ bezieht sich nun in seiner Ausrichtung darauf (Zeile 7): \begin{Verbatim}[firstnumber=7] \branch[below right!!=of start!!]{ ... } \end{Verbatim} Gibt man die Ausrichtung nicht in Bezug auf einen Anker an, bezieht sie sich immer auf den letzten \lstinline+reactand+ oder \lstinline+\arrow+. Lässt man das optionale Argument leer, dann platziert sich der Branch automatisch rechts. \begin{SideBySideExample} \begin{rxn} \reactand{ \chemfig{CH_2=CH-OH} } \arrow[type={<=>},length=.5]{}{} \branch{ \reactand{ \chemfig{CH_3-CH=O} } } \end{rxn} \end{SideBySideExample} Zur Ausrichtung haben Sie mehrere Möglichkeiten: Sie können den Branch entweder selbst auf die \lstinline+chain+ setzen oder ihn relativ zu einem Objekt platzieren. \begin{description} \vitem+chain+ In diesem Fall geben Sie als Ausrichtung folgendes an: \lstinline+on chain=going +. \item[relativ] In diesem Fall geben Sie folgendes an: \lstinline+=of +. \end{description} Als \lstinline++ können Sie die gleichen Werte einsetzen wie bei \lstinline+\reactand+, siehe \ref{ssec:reactand}. Die Voreinstellung ist \lstinline+on chain=going right+. \subsubsection{Ausrichtungsprobleme}\label{sssec:branch_ausrichtung} Wenn ein Pfeil zwei verschieden große Beschriftungen hat und in einem Branch liegt, wird der Branch nicht mehr richtig ausgerichtet. Der \lstinline=\arrow=-Key \lstinline=both= ist nicht wirklich eine Lösung, weil die kleinere Beschriftung dann nicht mehr am Pfeil liegt, sondern wegrutscht. \begin{SideBySideExample} \makevisible \begin{rxn} \reactand[,a]{A} \arrow{}{} \branch[below=of a]{ \arrow[direction=below,both]{\chemfig{-[::30]-[::-60]OH}}{\Hpl} } \end{rxn} \makeinvisible \end{SideBySideExample} In diesem Fall können Sie den Branch mit den \TikZ-Keys \lstinline=xshift= und \lstinline=yshift= verschieben. \begin{SideBySideExample} \makevisible \begin{rxn} \reactand[,a]{A} \arrow{}{} \branch[below=of a,,xshift=-1.35em]{ \arrow[direction=below]{\chemfig{-[::30]-[::-60]OH}}{\Hpl} } \end{rxn} \makeinvisible \end{SideBySideExample} \subsection{chemand}\label{ssec:chemand} \NEU% Der Befehl \begin{Verbatim} \chemand[,,] \end{Verbatim} erzeugt und platziert ein $+$ auf die gleiche Weise, wie \lstinline+\reactand+ beliebigen Text platziert. \begin{Example} \begin{rxn} \reactand{\chemfig{*6(------)}} \chemand \reactand{\ce{Br2}} \arrow{$h\nu$}{} \reactand{\chemfig{*6(--(-Br)----)}} \chemand \reactand{\ce{HBr}} \end{rxn} \end{Example} Die optionalen Argumente von \lstinline+\chemand+ und \lstinline+\reactand+ sind die gleichen, siehe \ref{ssec:reactand}. \subsection{dummy}\label{ssec:dummy} Mit \lstinline=\dummy= zeichnet man eine leere Node. Die Pfeile, die mit \lstinline=\arrow= erzeugt werden, müssen einer Node nachfolgen. \lstinline=\arrow= ruft intern \lstinline=\tikzchainprevious= auf. Ist \emph{vor} einem Pfeil noch \emph{keine} Node auf die Chain geschrieben worden, erzeugt das eine Fehlermeldung. Duch setzen des \lstinline=\dummy= kann ein Schema dennoch mit einem Pfeil beginnen. \begin{SideBySideExample} \begin{rxn} \dummy\arrow{}{} \end{rxn} \end{SideBySideExample} \subsection{elmove}\label{ssec:elmove} \lstinline=\elmove= ist lediglich ein Abkürzungsmakro für den \CF-Befehl \lstinline=\chemmove=. \begin{Verbatim} \elmove[]{}{}{}{} \end{Verbatim} Das schreibt den Befehl \begin{Verbatim} \chemmove{\draw[!!!!](!!!!).. controls +(!!!!) and +(!!!!)..(!!!!);} \end{Verbatim} mit \lstinline?[->,red,shorten <=3pt,shorten >=1pt]? als Voreinstellung für \lstinline==. Wie \lstinline=\chemmove= funktioniert, können Sie im Manual zu \CF nachlesen. \begin{Example} \begin{center} \setatomsep{1.8em} \chemfig{*6(=[@{e1}]-=-(-[:120]Br)(-[:60]H)-(-[:-30,.4,,,white]\oplus)-[@{e2}])} \elmove{e1}{60:4mm}{e2}{0:4mm} \end{center} \end{Example} \subsection{makeinvisible}\label{ssec:makeinvisible} \Vii% Dieser Befehl hebt die Änderungen von \lstinline=\makevisible= (siehe \ref{ssec:makevisible}) auf und stellt das normale Verhalten von \mC wieder her. \lstinline=\makeinvisible= wirkt sich nur auf nachfolgende Reaktanden aus. \subsection{makevisible}\label{ssec:makevisible} \Vii% Mit \lstinline=\makevisible= können Sie die Nodes, innerhalb derer sich die Reaktanden befinden, farbig hervorheben. Das kann \zB bei der Positionierung und Feinjustierung von Branches ganz nützlich sein. Ein Beispiel dafür sehen Sie in \ref{ssec:arrow}. Je nach Art der Node ist die Markierung eine andere: \tikz[baseline=(X.base)]\node[draw=red!60](X){\texttt{\textbackslash reactand\{\}\{\}}};, \tikz[baseline=(X.base)]\node[draw=green!60](X){\texttt{\textbackslash arrow\{above\}\{\}}};, \tikz[baseline=(X.base)]\node[draw=blue!60](X){\texttt{\textbackslash arrow\{\}\{below\}}}; und \tikz[baseline=(X.base)]\node[draw=purple, dotted](X){\texttt{\textbackslash branch\{\}\{\}}};. Siehe auch \ref{ssec:makeinvisible}. \lstinline=\makevisible= wirkt sich nur auf nachfolgende Reaktanden aus. \begin{SideBySideExample} \makevisible \begin{rxn} \reactand[,a]{A} \arrow{a}{b} \branch[below=of a]{ \arrow[direction=below,both]{a}{b} } \end{rxn} \makeinvisible \end{SideBySideExample} \subsection{marrow}\label{ssec:marrow} Der Befehl \lstinline=\marrow= zeichnet einen Mesomeriepfeil. \begin{Verbatim} \marrow[] \end{Verbatim} Die Ausrichtung funktioniert analog zu \lstinline=\reactand= (\ref{ssec:reactand}), siehe auch \ref{ssec:mesomeric}. \subsection{mCsetup}\label{ssec:mCsetup} \NEU% Der Befehl \begin{Verbatim} \mCsetup{} \end{Verbatim} kann verwendet werden, um alle Voreinstellungen zu verändern. Für jeden der \lstinline=\set=-Befehle von \mC mit Ausnahme von \lstinline=\setbondshape= gibt es einen Key \lstinline+=+. Zusätzlich gibt es den Key \lstinline+align=+, mit dem das Ausrichtungsverhalten von \lstinline=rxn= und \lstinline=rxnscheme= gleichzeitig geändert werden kann und den Key \lstinline=reset=, durch den alle Voreinstellungen wiederhergestellt werden. \begin{Example} \mCsetup{ arrowlength=3em, rcndist=2em, atomsize=\large, bondlength=3em, %rxnalign=right, %schemealign=left, align=left } \setbondshape{4pt}{2pt}{1pt} \begin{rxn} \reactand{A}\arrow{}{}\reactand{\chemfig{A-(<[2])(<:[6])-B}} \end{rxn} \mCsetup{reset} \begin{rxn} \reactand{A}\arrow{}{}\reactand{\chemfig{A-(<[2])(<:[6])-B}} \end{rxn} \end{Example} \subsection{merge}\label{ssec:merge} Der \lstinline=merge=-Befehl sind nicht nur für den direkten Einsatz in den \mC-Um\-ge\-bun\-gen gedacht, sondern können flexibler in einem `tikzpicture' eingesetzt werden. Mit diesem Befehl können verschiedene Reaktionsstränge zu einem vereint werden. Dafür müssen die einzelnen zu vereinenden Reaktanden als `nodes' mit Namen gekennzeichnet sein. \begin{Verbatim} \merge[]{}{}{} \end{Verbatim} \begin{SideBySideExample} \begin{center} \begin{tikzpicture} \node(a) at (0,0) {A}; \node(b) at (10em,0) {B}; \node[draw,minimum size=3em](c) at (5em,-8em) {C}; \merge{c}{a}{b} \node(d) at (0,-16em) {D}; \node(e) at (10em,-16em) {E}; \merge[direction=above]{c}{d}{e} \node(f) at (-3em,-4em) {F}; \node(g) at (-3em,-12em) {G}; \merge[direction=right]{c}{f}{g} \node(h) at (13em,-4em) {H}; \node(i) at (13em,-12em) {I}; \merge[direction=left]{c}{h}{i} \end{tikzpicture} \end{center} \end{SideBySideExample} Gibt man den Start- und dem Zielreaktanden Anker, funktioniert \lstinline=\merge= natürlich auch in den \mC-Umgebungen. \begin{Example} \begin{rxn} \setatomsep{1em}\tiny % Strang 1 \reactand[,oben]{ \chemfig{Cl-[:30,1.5]--[:-30,1.5]O-[:30,1.5]--[:-30,1.5]Cl}{} } \arrow[length=.5]{}{} \reactand[,start_oben]{ \chemfig{O(-[:-150]**6(-----(-OH)-))-[:90]-[:30]-[:-30]O-[:30]-[:-30]-[:-90]O-[:-30]**6(-(-HO)-----)} } % Strang 2 \branch[below=of oben,start_unten,xshift=8em,yshift=-4em]{ \reactand{ \chemfig{**6((--[6,,,2]HO)-N-(--[6]OH)----)} } \arrow[length=.5]{}{} \reactand{ \chemfig{**6((--[6]Br)-N-(--[6]Br)----)} } } % Ziel \branch[right=of start_oben,ziel,xshift=5em,yshift=-4em]{ \reactand[,c]{ \chemfig{O(-[:-150]**6(-----(-O?)-))-[:90]-[:30]**6(-N-(--[:-90]O-[:-30]**6(-(-O-[6]-[:-150]-[:150]O-[:-150]-[:150]?)-----))----)} } } % Zusammenfuehren: \merge[direction=right]{ziel}{start_oben}{start_unten} \end{rxn} \end{Example} Beachten Sie, dass für die `nodes' in der Regel Branches verwendet werden sollten, wenn Sie \lstinline=\merge= in den \mC-Umgebungen verwenden. Die Verwendung von \lstinline=\merge= erfordert unter Umständen einige Spielerei mit Branches, xshift und yshift, bis man das gewünschte Ergebnis erhält. \begin{Example} \begin{rxn} \setatomsep{1.5em} \reactand[,start_aa]{ \chemname{\chemfig{**6(---(-NH_2)---)}}{Anilin} } \reactand[below,start_ab,yshift=-3em]{ \chemname{\ce{HNO2}}{salpetrige S"aure} } \branch[right=of start_aa,ziel_a,xshift=6em,yshift=-5em]{ \reactand{ \chemname{\chemfig{**6(---(-N|_2\op)---)}}{Diazoniumion} } }% = start_ba \branch[below=of ziel_a,start_bb,yshift=-3em]{ \reactand{ \chemname{\chemfig{**6(---(-NH_2)---)}}{Anilin} } } \branch[right=of ziel_a,ziel_b,xshift=6em,yshift=-5em]{ \reactand{ \chemname{\chemfig{N(-[:-150]**6(------))=N-[:-30]**6(---(-NH_2)---)}}{p-Aminodiazobenzol} } } \merge[direction=right]{ziel_a}{start_aa}{start_ab} \merge[direction=right]{ziel_b}{ziel_a}{start_bb} \end{rxn} \end{Example} \subsection{mesomeric}\label{ssec:mesomeric} \NEU% Der \lstinline=\mesomeric=-Befehl funktioniert wie ähnlich wie \lstinline=\branch= (\ref{ssec:branch}). Sein Zweck ist es, eckige Klammern zu setzen. \textbf{Wenn Sie ältere Versionen von \mC eingesetzt haben, beachten Sie, dass sich die Befehl-Syntax verändert hat.} \begin{Verbatim} \mesomeric[,,]{} \end{Verbatim} In \lstinline== werden die mesomeren Grenzstrukturen geschrieben. Mit \lstinline=\marrow=\linebreak (\ref{ssec:marrow}) werden die Mesomeriepfeile gesetzt. Man kann \lstinline=\mesomeric= falls nötig mit einem Anker (\lstinline==) versehen (\ref{ssec:branch}). Die Ausrichtung funktioniert analog \lstinline=\reactand=. \begin{Example} \begin{rxn} \mesomeric{ \reactand{ \chemfig{*6(=[@{e1}]-=-(-[:120]X)(-[:60]H)-(-[:-30,.4,,,white]\oplus)-[@{e2}])} \elmove{e1}{60:4mm}{e2}{0:4mm} } \marrow \reactand{ \chemfig{*6(-(-[:90,.4,,,white]\oplus)-[@{e4}]=[@{e3}]-(-[:120]X)(-[:60]H)-=)} \elmove{e3}{180:4mm}{e4}{150:4mm} } \marrow \reactand{ \chemfig{*6(-=-(-[:-150,.4,,,white]\oplus)-(-[:120]X)(-[:60]H)-=)} } } \end{rxn} \end{Example} Oder auch von oben nach unten: \begin{SideBySideExample} \begin{rxn} \mesomeric{ \reactand{ \chemfig{*6(=-=-=-)} } \marrow[below] \reactand[below]{ \chemfig{*6(-=-=-=)} } } \end{rxn} \end{SideBySideExample} Vielleicht auch einen Komplex? \begin{Example} \begin{rxn} \setatomsep{3em} \mesomeric[,a]{ \reactand{ \chemfig{H_3\lewis{0,N}-[,1.35,,,dotted]{Cu}(-[2,,,,dotted]\lewis{6,N}H_3)(-[6,,,,dotted]\lewis{2,N}H_3)-[,1.2,,,dotted]\lewis{4,N}H_3} } } \node[above right=of a,yshift=-1em] {$2\oplus$}; \end{rxn} \end{Example} \subsection{reactand}\label{ssec:reactand} \NEU% Der Befehl \lstinline=\reactand= ist so etwas wie der Basisbefehl. \textbf{Wenn Sie ältere Versionen von \mC eingesetzt haben, beachten Sie, dass sich die Befehl-Syntax verändert hat.} \begin{Verbatim} \reactand[,,]{} \end{Verbatim} In diesen Befehl werden die Formeln (\lstinline==) geschrieben und können, falls nötig, mit einem Anker (\lstinline==) versehen werden. Die Ausrichtung kann die 8 Werte \begin{inparaenum}[(a)] \item \lstinline+right+, \item \lstinline+above right+, \item \lstinline+above+, \item \lstinline+above left+, \item \lstinline+left+, \item \lstinline+below left+, \item \lstinline+below+, \item \lstinline+below right+ \end{inparaenum} annehmen, Voreinstellung ist (\lstinline+right+). Dieses Argument wird verwendet, wenn die Reaktionsgleichung nicht von links nach rechts, sondern \zB von oben nach unten verlaufen soll. \begin{SideBySideExample} %untereinander: \begin{rxn} \reactand{\ce{Br2}} \reactand[below]{\ce{Cl2}} \end{rxn} %Beispiel mit mehreren Reaktanden: \begin{rxn} \reactand{\ce{Br2}} \reactand[below]{\ce{I2}} \reactand{\ce{Cl2}} \end{rxn} %Reaktion von oben nach unten: \begin{rxn} \reactand{\ce{Br-Br}} \arrow[length=.5,direction=below]{$h\nu$}{} \reactand[below]{\ce{2 ~\lewis{0.,Br}}} \end{rxn} \end{SideBySideExample} \subsection{rxn (Umgebung)}\label{ssec:rxn} Die Umgebung \lstinline=rxn= ist eine unnummerierte nicht gleitende Umgebung für Reaktionsschemata. Die Reaktionsschemata werden per Default zentriert. Die Voreinstellungen \lstinline=\setbondlength=, \lstinline=\setbondshape=, \lstinline=\setarrowlength= und \lstinline=\setatomsize= gelten hier ebenso wie bei\lstinline=rxnscheme=. \begin{Verbatim} \begin{rxn}[] ... \end{rxn} \end{Verbatim} \subsubsection{Optionen}\label{sssec:rxn_optionen} \Vii\lstinline=rxn= hat zwei Keys: \begin{description} \vitem+align=+ das Ausrichtungsverhalten der \lstinline=rxn=-Umgebung, Default: center \vitem+scale=+ Skalierung der \lstinline=rxn=-Umgebung, Default: 1.0 \end{description} \begin{Example} \begin{rxn}[align=center] \reactand{center}\arrow{}{}\reactand{zentriert} \end{rxn} \begin{rxn}[align=right] \reactand{right}\arrow{}{}\reactand{rechts} \end{rxn} \begin{rxn}[align=left] \reactand{left}\arrow{}{}\reactand{links} \end{rxn} \end{Example} \subsection{rxnscheme (Umgebung)}\label{ssec:rxnscheme} Die Umgebung \lstinline=rxnscheme= ist eine Gleitumgebung für Reaktionsschemata. \begin{Verbatim} \begin{rxnscheme}[]{} ... \end{rxnscheme} \end{Verbatim} \subsubsection{Optionen}\label{sssec:rxnscheme_optionen} \begin{description} \vitem+label=