%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % ------------------------------------------------------------------------------------- % % - myChemistry - mychemistry_de.tex -------------------------------------------------- % % - Create reaction schemes with LaTeX and ChemFig ------------------------------------ % % ------------------------------------------------------------------------------------- % % - Clemens Niederberger -------------------------------------------------------------- % % - 2011/04/27 ------------------------------------------------------------------------ % % ------------------------------------------------------------------------------------- % % - 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, examples.tex - % % ------------------------------------------------------------------------------------- % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \documentclass[DIV10,titlepage,toc=index]{scrartcl} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - Pakete ---------------------------------------------------------------------------- % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usepackage{etoolbox} \usepackage{scrhack} % verbessert KOMAs Zusammenspiel mit floats \usepackage{emerald} % Schriftarten \usepackage[utf8]{inputenx} % Zeichenkodierung: Eingabe \usepackage[T1]{fontenc} % Text-Ausgabe-Codierung \usepackage{textcomp,mathcomp} \usepackage[makeindex]{splitidx} % Index; Kompilieren: makeindex -sl index.ist *.idx \usepackage[ngerman]{babel} % Sprache \usepackage{xspace,paralist} % xspace und Listen \usepackage{siunitx,booktabs} \DeclareSIUnit{\emlength}{em} \DeclareSIUnit{\pt}{pt} \sisetup{list-final-separator = { und }, range-phrase = { bis }, separate-uncertainty = true, exponent-product = \cdot, per-mode = symbol} \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} \labelformat{table}{Ta\-bel\-le #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=MyDarkRed!20!red, urlcolor=blue!70, plainpages=false, bookmarksopen=true, bookmarksopenlevel=2, bookmarksnumbered=true, pdfstartview=FitH, pdfauthor={Clemens Niederberger}, pdftitle={myChemistry}, pdfsubject={Create reaction schemes with LaTeX and ChemFig}, pdfkeywords={myChemistry}, pdfcreator={LaTeX} } \usepackage[color=MyDarkRed]{mychemistry} % myChemistry \def\thebeispiel{\arabic{beispiel}} % chemexec angepasst \labelformat{beispiel}{Bei\-spiel #1} \labelformat{rxnfloat}{Sche\-ma #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]{anywhere,arrow,branch,chemabove,chemand,chembelow,chemfig,chemmove,chemname,chemrel,chemsign,ce,color,compound,declarecompound,draw,dummy,elmove,floatplacement,floatstyle,Hpl,Hyd,lewis,listof,makeinvisible,makevisible,marrow,mCsetup,merge,mesomeric,node,nu,om,op,ox,pgfpositionnodelater,reactant,restylefloat,setarrowlabel,setarrowlength,setarrowline,setatomsep,setatomsize,setbondlength,setbondshape,setcrambond,setmergelength,setrcndist,setrxnalign,setschemealign,setschemename,si,SI,textcolor,transition,vflipnext}, fancyvrb=true } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - Kopf- und Fußzeile ---------------------------------------------------------------- % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usepackage{scrpage2} \pagestyle{scrheadings} \setheadwidth{textwithmarginpar} \automark{section} \ihead{\mC v\mCversion} \ohead{\bfseries Dokumentation} \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}\ECFJD my\-Chemis\-try}\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} % folgender Befehl ist eine Kopie von CHristian Tellecheas \newcommand\NEU[1][0pt]{\leavevmode\llap{\footnotesize\ECFTeenSpirit\color{red}Neu\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=MyDarkRed,right color=white](current page.south west) rectangle ([yshift=3cm,xshift=-3cm]current page.center); \shade[top color=black,bottom color=MyDarkRed]([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}[,.7] \setatomsep{1.5em}\footnotesize \reactant[,a]{ \chemfig{C(-[4]*6(=-=-=-))(-[2]*6(=-=-=-))(-[6,,,2]HO)-C(-[2]CH_3) (-[6]OH)-CH_3} } \arrow[a.20]{}{} \reactant[20]{ \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[,,1.42]{$-\ce{H2O}$}{} \reactant{ \chemfig{\chembelow{C}{\oplus}(-[4]*6(=-=-=-))(-[2] *6(=-=-=-))-C(-[2]CH_3)(-[6]OH)-CH_3} } \arrow[a.-20,-|>]{}{} \reactant[-20]{ \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[,,1.42]{$-\ce{H2O}$}{} \reactant{ \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 v\mCversion\par\bigskip \footnotesize\mCdate{de}\par \normalsize Clemens Niederberger\par\vskip1.5cm \color{white}\huge Reaktionsschemata mit \LaTeX\ und \CF erstellen% \end{center} \vskip3cm \begin{rxn}[,.7] \setatomsep{1.5em}\footnotesize \reactant[,a]{ \chemfig{C(-[4]*6(=-=-=-))(-[2]*6(=-=-=-))(-[6,,,2]HO)-C(-[2]CH_3)(-[6]OH)-CH_3} } \arrow[a.20]{}{} \reactant[20]{ \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[,,1.42]{$-\ce{H2O}$}{} \reactant{ \chemfig{\chembelow{C}{\oplus}(-[4]*6(=-=-=-))(-[2]*6(=-=-=-))-C(-[2]CH_3)(-[6]OH)-CH_3} }{} \arrow[a.-20,-|>]{}{} \reactant[-20]{ \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[,,1.42]{$-\ce{H2O}$}{} \reactant{ \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} Die neuesten Änderungen sind mit {\ECFTeenSpirit\color{red}Neu} gekennzeichnet. \subsubsection{Version 1.2} Neben einigen Bugfixes gibt es in Version v1.2 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 Vorstellungen 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} Die Befehle \lstinline+\branch+, \lstinline+\mesomeric+, \lstinline+\reactant+ 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{lstlisting} \befehl[,,]{} \end{lstlisting} 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 v1.3 nicht mehr nötig. \begin{lstlisting} % bisher: \reactant{\ce{Br2}}{}\arrow{$h\nu$}{}\reactant!![right,draw,inner sep=5pt]!!{\ce{2 \lewis{0.,Br}}}{} % jetzt: \reactant{\ce{Br2}}\arrow{$h\nu$}{}\reactant!![,,draw,inner sep=5pt]!!{\ce{2 \lewis{0.,Br}}} \end{lstlisting} 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}. Und auch das ist vielleicht ganz angenehm: alle \mC-Befehle in den Listings der Dokumentation sind nun anklickbare Hyperlinks, die auf ihre Beschreibung in der Befehlsreferenz verweisen. \subsubsection{Version 1.4} Der Befehl \lstinline+\merge+ wurde neu geschrieben, so dass der Pfeil auch beschriftet werden kann. Der eigentliche Zweck des Befehls \lstinline+\dummy+ ist obsolet geworden. Der Befehl existiert aber weiterhin. Bei den beiden Umgebungen \lstinline+rxn+ und \lstinline+rxnscheme+ hat sich die Verwendung der Optionen geändert, siehe \ref{sssec:rxn_optionen} und \ref{sssec:rxnscheme_optionen}. Die Keys von \lstinline+\arrow+ sind in Optionen verändert worden, um die Syntax des Befehls mit den anderen anzugleichen. Zudem gibt es drei neue Pfeiltypen, siehe \ref{ssec:arrow}. Neu ist außerdem das Aussehen der Pfeile und eine Möglichkeit, die Liniendicke der Pfeile anzupassen, siehe \ref{ssec:setarrowline}. Es gibt einen weiteren neuen Befehl: \lstinline+\anywhere+ (\ref{ssec:anywhere}), mit dem Text oder Formeln außerhalb der Chain gesetzt werden können. \subsubsection{Version \mCversion} \NEU% Im Hintergrund ist viel passiert, was einige neue Features bei der Anwendung gebracht hat. Die wichtigste Neuerung ist eine deutlich flexiblere Richtungsangabe bei allen Befehlen (Reaktanden, Pfeile, Zweige \ldots). Anstelle der starren \lstinline+right below+ u.\,ä. kann jetzt der Winkel angegeben werden. Es gibt die neuen Pfeiltypen \lstinline+<=>>+ und \lstinline+<<=>+, mit denen ein verschobenes Gleichgewicht angezeigt werden kann. Die Default-Platzierung von \lstinline+rxnscheme+ wurde von \lstinline+H+ in \lstinline+htp+ geändert. Die konkreten Einsatz-Beispiele wurden aus der Dokumentation ausgelagert und befinden sich in der Datei \texttt{examples.tex} bzw. \texttt{examples.pdf}. Die Befehle \lstinline+\arrow+, \lstinline+\reactant+, \lstinline+\mesomeric+, \lstinline+\transition+, \lstinline+\anywhere+, \lstinline+\dummy+, \lstinline+\branch+ und \lstinline+\chemand+ sind nur innerhalb der Umgebungen \lstinline+rxn+ und \lstinline+rxnscheme+ definiert. \subsection{Lizenz} \mC v\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}\index{Voraussetzungen|(} Damit \mC funktionieren kann, müssen ein paar Pakete installiert sein: \begin{description} \item[\CF]\index{Voraussetzungen!ChemFig@\CF} ohne das ergibt die ganze Sache gar keinen Sinn; \item[ifthen]\index{Voraussetzungen!ifthen} für interne Abfragen; \item[calc]\index{Voraussetzungen!calc} für interne Berechnungen; \item[xkeyval]\index{Voraussetzungen!xkeyval} Paketoptionen und Befehl-Keys werden damit erstellt; \item[float]\index{Voraussetzungen!float} damit wird die \lstinline=rxnscheme=-Umgebung definiert; \item[pgf/\TikZ]\index{Voraussetzungen!pgf}\index{Voraussetzungen!TikZ@\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 die Option \lstinline+both+ des Befehls \lstinline+\arrow+ diese Version. Wenn Sie die Option nicht verwenden, sollte \mC auch mit pgf v2.00 problemlos funktionieren. Ältere Versionen wurden nicht getestet. \end{description} \index{Voraussetzungen|)} \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/}}\index{ChemFig@\CF}, \item wenn vorhanden `mhchem'\footnote{von Martin Hensel, \url{http://www.ctan.org/tex-archive/macros/latex/contrib/mhchem/}}\index{mhchem} in der Version 3, \item wenn vorhanden `chemexec'\footnote{von mir, \url{http://www.ctan.org/tex-archive/macros/latex/contrib/chemexec/}}\index{chemexec} und \item wenn vorhanden `chemcompounds'\footnote{von Stephan Schenk, \url{http://www.ctan.org/tex-archive/macros/latex/contrib/chemcompounds/}}\index{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)\index{mhchem} \item \lstinline=\ox{}{}=, \lstinline=\om[]=, \lstinline=\op[]=, \lstinline=\Hyd=, \lstinline=\Hpl= (chemexec)\index{chemexec} \item \lstinline=\chemfig[][]{}=, \lstinline=\chemrel[]{}=, \lstinline=\chemsign[]{}=, \lstinline=\lewis{}= (\CF)\index{ChemFig@\CF} \item \lstinline=\declarecompound[]{}=, \lstinline=\compound{}= (chemcompounds).\index{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 \lstinline+tikzpicture+-Um\-ge\-bung. Die Frage, die sich aufdrängt, ist natürlich: wozu? \CF bringt doch schon einiges an Möglichkeiten mit, Reaktionsgleichungen zu erstellen. 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. \subsection{Das Grundprinzip} In dem \lstinline+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, das Grundprinzip sollte reichen. \subsection{Wie funktioniert's?} \subsubsection{Basisbefehle} Basis bilden folgende drei Befehle:\index{reactant}\index{rxn}\index{arrow} \begin{lstlisting} \begin{rxn}[,] \reactant[,,]{} \arrow[,,,,both,]{}{} \end{rxn} \end{lstlisting} Die Schemata werden innerhalb der \lstinline+rxn+-Umgebung erstellt. Dort werden Reaktanden und Pfeile gesetzt. \begin{SideBySideExample} \begin{rxn} \reactant{ \chemfig{-[::30]-[::-60]OH} } \arrow{Ox.}{} \reactant{ \chemfig{-[::30]=_[::-60]O} } \end{rxn} \end{SideBySideExample} Ohne Optionen werden Reaktanden und Pfeile immer rechts voneinander gesetzt. Möchte man das nicht, hat man die Möglichkeit, über \lstinline++ die Positionierung zu ändern. \begin{SideBySideExample} % Anordnung mit Schluesselwoertern: \begin{rxn} \reactant{ \chemfig{-[::30]-[::-60]OH} } \arrow[below]{Ox.}{} \reactant[below]{ \chemfig{-[::30]=_[::-60]O} } \end{rxn} % Anordnung durch Angabe des Winkels zur Horizontalen: \begin{rxn} \reactant{ \chemfig{-[::30]-[::-60]OH} } \arrow[180]{}{Ox.} \reactant[180]{ \chemfig{-[::30]=_[::-60]O} } \end{rxn} \end{SideBySideExample} \begin{table} \centering \begin{tabular}{>{\tt}lSS} \toprule {\normalfont Schlüsselwort} & {pos. Winkel} & {neg. Winkel} \\ \midrule right & 0 & \pm 360 \\ right above & 45 & -315 \\ above & 90 & -270 \\ above left & 135 & -225 \\ left & 180 & -180 \\ below left & 225 & -135 \\ below & 270 & -90 \\ below right & 315 & -45 \\ \bottomrule \end{tabular} \caption{Schlüsselwörter zur Positionierung}\label{tab:keywords} \end{table} Sie sehen im letzten Beispiel, dass die Positionierung durch Schlüsselwörter (siehe \ref{tab:keywords}) wie \lstinline+below+ oder durch Angabe eines Winkels aus dem Intervall $[\ang{-360};\ang{360}]$ zur Horizontalen. \ang{0} entspricht \lstinline+right+, der Voreinstellung. \emph{Positive Winkel} bedeuten eine Drehung im \emph{Gegenuhrzeigersinn}, negative eine im Uhrzeigersinn, ganz in der mathematischen Bedeutung. \begin{SideBySideExample} \begin{rxn} \reactant{ \chemfig{-[::30]-[::-60]OH} } \arrow[20]{Ox.}{} \reactant[20]{ \chemfig{-[::30]=_[::-60]O} } \end{rxn} \begin{rxn} \reactant{ \chemfig{-[::30]-[::-60]OH} } \arrow[-20]{Ox.}{} \reactant[-20]{ \chemfig{-[::30]=_[::-60]O} } \end{rxn} \end{SideBySideExample} \subsubsection{Positionierung} Die Reaktanden und Pfeile können nicht nur durch Schlüsselwörter und Winkel alleine positioniert werden, sondern auch in Bezug auf einen anderen Reaktanden oder Pfeil. \begin{Example} \begin{rxn} \reactant[,start]{ \chemfig{R-[::30](-[::60]R|^1) (-[::-120]R|^2)-[::-60]OH} } \arrow[40]{\tiny$\text{R}^1=\text{H}$} {\tiny$\text{R}^2=\text{H}$} \reactant[40]{ \chemfig{R-[::30]=_[::-60]O} } \arrow[start.0]{\tiny$\text{R}^1=\text{Alkyl}$} {\tiny$\text{R}^2=\text{H}$} \reactant{ \chemfig{R-[::30](-[::60]R)=_[::-60]O} } \arrow[start.-40,-|>]{\tiny$\text{R}^1=\text{Alkyl}$} {\tiny$\text{R}^2=\text{Alkyl}$} \end{rxn} \end{Example} Im letzten Beispiel wurden dem ersten Reaktanden der \lstinline++ \lstinline+start+ gegeben. Darauf konnten sich die Pfeile in Zeilen 5 und 7 in der Positionierung beziehen. Der \emph{zuvor vergebene Name} fungiert als Anker für den nächsten Reaktanden oder Pfeil, wenn die Positionierung nach dem Muster \begin{lstlisting} . \end{lstlisting} angegeben wird. Auch Pfeile können einen Anker bekommen. Der Ankerpunkt eines Pfeils sitzt immer in der Mitte eines Pfeils und hat \emph{keine} Ausdehnung. \begin{SideBySideExample} \begin{rxn} \reactant{\chemfig{[:60]-(-[::60])=[::-60](-[::-60])-}} \arrow[,,,pfeil]{}{} \reactant[pfeil.90]{\ce{H2O}} \end{rxn} \end{SideBySideExample} Bei dieser Art der Positionierung wird die Kette, aud der die Reaktanden und Pfeile sitzen, \emph{nicht} unterbrochen. \begin{lstlisting} \begin{rxn} \reactant[,a]{A} \arrow{}{} \reactant{B} \arrow[a.-90]{}{} \reactant[-90]{C} \arrow[a.180]{}{} \reactant[180]{D} \end{rxn} \end{lstlisting} Alle sieben Objekte dieses Beispiels sitzen logisch gesehen auf einer Kette. Das nächste Objekt wird nun per Default rechts daneben geschrieben, wenn keine andere Positionierung angegeben wird. \begin{rxn} \tikzset{nummer/.style={circle,fill=gray!30,draw=gray,minimum size=3.5mm}} \reactant[,a]{A}\arrow[,,,pa]{}{}\reactant[,b]{B} \arrow[a.-90,,,pb]{}{}\reactant[-90,c]{C} \arrow[a.180,,,pc]{}{}\reactant[180,d]{D} \anywhere{a.45,,nummer}{1} \anywhere{pa.90,,nummer}{2} \anywhere{b.45,,nummer}{3} \anywhere{pb.0,,nummer}{4} \anywhere{c.45,,nummer}{5} \anywhere{pc.90,,nummer}{6} \anywhere{d.45,,nummer}{7} \end{rxn} \subsubsection{Verzweigungen} Um die Kette zu unterbrechen, gibt es den folgenden Befehl:\index{branch} \begin{lstlisting} \branch[,,]{} \end{lstlisting} Bei einem Branch funktioniert die Positionierung ein bisschen anders als bei den bisherigen Objekten, auch wenn die Syntax ähnlich ist. Zusätzlich zu den drei bisherigen Positionierungsmöglichkeiten kommen beim Branch noch zwei weitere dazu. Alle Positionierungen, die sich auf einen Anker beziehen, sorgen dafür, dass der Branch \emph{nicht} auf der Kette sitzt, sondern ein echter Ast ist. \begin{lstlisting} % auf der Kette % auf der Kette . % nicht auf der Kette on chain=going % auf der Kette =of % nicht auf der Kette \end{lstlisting} Als \lstinline++ können die Werte aus \ref{tab:keywords} verwendet werden. \begin{Example} \begin{rxn} \reactant{ \chemfig{-[::30]-[::-60]OH} } \arrow{}{} \reactant[,carbonyl]{ \chemfig{-[::30]=_[::-60]O} } \branch[carbonyl.-90]{ \arrow[-90,<=>]{\ce{NH2R}}{} \reactant[-90]{ \chemfig{-[::30]=_[::-60]N(-[6]H)-[::60]R} } } \arrow{}{} \reactant{ \chemfig{-[::30](-[::60]OH)=_[::-60]O} } \end{rxn} \end{Example} Beachten Sie im letzten Beispiel, dass der Pfeil und der Reaktand nach dem Branch die ursprüngliche Kette fortsetzen. \begin{lstlisting} \begin{rxn} \reactant[,a]{A} \arrow{}{} \reactant{B} \branch[a.-90]{ \arrow[-90]{}{} \reactant[-90]{C} } \arrow[a.180]{}{} \reactant[180]{D} \end{rxn} \end{lstlisting} Die Kette wird durch den Ast unterbrochen, der seinerseits eine weitere Kette startet. \begin{rxn} \tikzset{nummer/.style={circle,fill=gray!30,draw=gray,minimum size=3.5mm}} \reactant[,a]{A}\arrow[,,,pa]{}{}\reactant[,b]{B} \branch[a.-90]{ \arrow[-90,,,pb]{}{}\reactant[-90,c]{C} \anywhere{pb.0,,nummer}{a} \anywhere{c.45,,nummer}{b} } \arrow[a.180,,,pc]{}{}\reactant[180,d]{D} \anywhere{a.45,,nummer}{1} \anywhere{pa.90,,nummer}{2} \anywhere{b.45,,nummer}{3} \anywhere{pc.90,,nummer}{4} \anywhere{d.45,,nummer}{5} \end{rxn} Durch \lstinline+\branch+ sind verzweigtere Schemata möglich: \begin{Example} \begin{rxn} \reactant{ \chemfig{-[::30]-[::-60]OH} } \arrow{}{} \reactant[,carbonyl]{ \chemfig{-[::30]=_[::-60]O} } \arrow[-90]{}{} \reactant[-90]{ \chemfig{-[::30](-[::60]OH)=_[::-60]O} } \branch[right=of carbonyl]{ \arrow[,<=>,1.12]{\ce{NH2R}}{} \reactant{ \chemfig{-[::30]=_[::-60]N(-[6]H)-[::60]R} } } \branch[below right=of carbonyl]{ \arrow[-45,<=>,1.12]{ \chemfig{[,.75]-[::30]-[::-60]OH} }{} \reactant[-45]{ \chemfig{-[::30](-[::60]O-[::-60]-[::-60])-[::-60]OH} } } \arrow[carbonyl.90]{ \chemfig{[,.75]-[::30]=_[::-60]O}/\Hpl }{} \reactant[90]{ \chemfig{-[::30](-[::60]OH)-[::-60]-[::60]=[::60]O} } \arrow{$-\ce{H2O}$}{} \reactant{ \chemfig{-[::30]=[::-60]-[::60]=[::60]O} } \end{rxn} \end{Example} \subsubsection{Nummerierte Schemata} Es gibt noch eine weitere Umgebung, innerhalb derer Schemata erstellt werden können.\index{rxnscheme} \begin{lstlisting} \begin{rxnscheme}[