diff options
-rw-r--r-- | Master/texmf-dist/doc/latex/mychemistry/README | 20 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/mychemistry/bondwidth.tex | 58 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/mychemistry/mychemistry_de.pdf | bin | 846923 -> 909168 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/mychemistry/mychemistry_de.tex | 1358 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/mychemistry/mychemistry_en.pdf | bin | 826361 -> 887184 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/mychemistry/mychemistry_en.tex | 1339 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/mychemistry/mychemistry.sty | 1024 |
7 files changed, 2182 insertions, 1617 deletions
diff --git a/Master/texmf-dist/doc/latex/mychemistry/README b/Master/texmf-dist/doc/latex/mychemistry/README index 09c2e36b52c..f94cf1e73a6 100644 --- a/Master/texmf-dist/doc/latex/mychemistry/README +++ b/Master/texmf-dist/doc/latex/mychemistry/README @@ -1,7 +1,7 @@ -------------------------------------------------------------------------- -the myChemistry package +the myChemistry package v1.3 Creating reaction schemes with LaTeX and ChemFig -2011/03/20 +2011/04/04 -------------------------------------------------------------------------- Clemens Niederberger Web: http://www.niederberger-berlin.net/2011/02/latex-mychemistry/ @@ -21,8 +21,8 @@ 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 and -mychemistry_en.tex +This work consists of the files mychemistry.sty, mychemistry_de.tex, +mychemistry_en.tex and bondwidth.tex -------------------------------------------------------------------------- myChemistry relies on the ChemFig-package and won't work, if it isn't installed. @@ -31,8 +31,16 @@ with LaTeX and ChemFig. myChemistry bundles the packages ChemFig, mhchem, chemcompounds and chemexec. With package options one can prevent myChemistry from loading any chemistry related packages except ChemFig, though. -The command \arrow[both]{}{} needs at least pgf version from 09/08/2011. -With older will work, but you can't use the arrow option `both'. +The command \arrow[both]{}{} needs at least pgf version from 09/08/2010. +It will work with older versions, if you don't use the arrow option +`both'. +The file bondwidth.tex provides the command \setbondwidth{<width>} +for ChemFig and is inluded with \input{bondwidth} after +\usepackage{chemfig} or \usepackage{mychemistry}. +If you used earlier versions of myChemistry before, please be aware +that that the usage of some commands, e.g. \reactand, has changed. +Your documents might not compile properly anymore unless the code +is adjusted. -------------------------------------------------------------------------- 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/mychemistry/bondwidth.tex b/Master/texmf-dist/doc/latex/mychemistry/bondwidth.tex new file mode 100644 index 00000000000..ec5a5144af8 --- /dev/null +++ b/Master/texmf-dist/doc/latex/mychemistry/bondwidth.tex @@ -0,0 +1,58 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% bondwidth.tex +% change the line width of bonds in ChemFig for all formulae +% 2011/04/02 v0.4 +% ------------------------------------------------------------------- +% 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. +% ------------------------------------------------------------------- +% adds the command \setbondwidth{} to ChemFig +% changes the line width of the bonds to +% the specified width. An empty argument will +% restore the default. +% input in the preamble after loading ChemFig +% with \input{bondwidth} +% Please be aware: this has only be tested with +% ChemFig version 0.4; this will NOT work with +% older versions! +% ------------------------------------------------------------------- +% 2011/03/21 - v0.1: initial version +% 2011/03/23 - v0.2: restoring default with empty argument +% 2011/03/24 - v0.3: command setbondwidth rewritten so the +% ifthen-package isn't required anymore +% 2011/04/02 - v0.4: \makeatletter/-other stören, wenn bondwidth.tex +% via sty-file eingebunden => entfernt +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\@mc@bond@width{0.2pt}% default +\def\setbondwidth#1{% set bond width or restore default + \ifx\@empty#1\@empty\def\@mc@bond@width{0.2pt}\else\def\@mc@bond@width{#1}\fi +} +\def\CF@chemfig@ii[#1][#2]{% modify ChemFig's internal command + \edef\CF@tmp@str{[remember picture,every node/.style={anchor=base,inner sep=0pt,outer sep=0pt,minimum size=0pt\ifx\@empty#2\@empty\else,#2\fi},baseline,line width=\@mc@bond@width\ifx\@empty#1\@empty\else,#1\fi]}% + \expandafter\tikzpicture\CF@tmp@str + \begingroup + \let\CF@hook@list\@empty + \ifx\CF@atom@sep\@empty\def\CF@atom@sep{3em}\fi + \ifx\CF@cram@basewidth\@empty\def\CF@cram@basewidth{1.5ex}\fi + \CF@incyclefalse + \CF@cnt@groupnumber\z@ + \let\CF@last@action\z@% + \let\CF@start@offset\@empty + \let\CF@end@offset\@empty + \let\CF@bond@outcontentsaved\@empty + \def\CF@cycle@anglecorrection{180/\CF@cycle@num}% + \everyeof{\@nil}\endlinechar\m@ne + \CF@sanitize@catcode + \CF@chemfig@iii +}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/mychemistry/mychemistry_de.pdf b/Master/texmf-dist/doc/latex/mychemistry/mychemistry_de.pdf Binary files differindex ce423e0999e..d17960b50fc 100644 --- a/Master/texmf-dist/doc/latex/mychemistry/mychemistry_de.pdf +++ b/Master/texmf-dist/doc/latex/mychemistry/mychemistry_de.pdf diff --git a/Master/texmf-dist/doc/latex/mychemistry/mychemistry_de.tex b/Master/texmf-dist/doc/latex/mychemistry/mychemistry_de.tex index 33ce8f88f19..9cc45d178b7 100644 --- a/Master/texmf-dist/doc/latex/mychemistry/mychemistry_de.tex +++ b/Master/texmf-dist/doc/latex/mychemistry/mychemistry_de.tex @@ -4,7 +4,7 @@ % - Creating reaction schemes with LaTeX and ChemFig ---------------------------------- % % ------------------------------------------------------------------------------------- % % - Clemens Niederberger -------------------------------------------------------------- % -% - 2011/03/20 ------------------------------------------------------------------------ % +% - 2011/04/04 ------------------------------------------------------------------------ % % ------------------------------------------------------------------------------------- % % - http://www.niederberger-berlin.net/2011/02/latex-mychemistry/ --------------------- % % - kontakt@niederberger-berlin.net --------------------------------------------------- % @@ -26,14 +26,15 @@ % - - % % - The Current Maintainer of this work is Clemens Niederberger. - % % - - % -% - This work consists of the files mychemistry.sty, mychemistry_de.tex and - % -% - mychemistry_en.tex - % +% - 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 @@ -41,9 +42,9 @@ \usepackage[T1]{fontenc} % Text-Ausgabe-Codierung \usepackage{textcomp,mathcomp} \usepackage{xspace,paralist} % xspace und Listen -\usepackage[Gray]{SIunits} % Einheiten - \addunit{\emlength}{em} - \addunit{\pt}{pt} +\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 @@ -53,14 +54,14 @@ \labelformat{subsubsection}{Ab\-schnitt #1} \usepackage[dvipsnames]{xcolor} % Farbe \colorlet{code}{RawSienna} - \xdefinecolor{DarkRed}{rgb}{0.4392,0.0627,0.0627} + \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{DarkRed}\titlerule[2pt]\filright\normalcolor\nobreak} % davor + \color{MyDarkRed}\titlerule[2pt]\filright\normalcolor\nobreak} % davor {\contentslabel [\textsc{Abschnitt}\ \thecontentslabel]{6.5pc}} % nummerierter Eintrag @@ -81,9 +82,8 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usepackage{hyperref} \hypersetup{colorlinks=true, % Setup der Hyperlinks und des pdf - linkcolor=black, + linkcolor=green!50!black, urlcolor=blue!70, - citecolor=black, plainpages=false, bookmarksopen=true, bookmarksopenlevel=2, @@ -96,7 +96,7 @@ pdfcreator={LaTeX} } \usepackage[color=dunkelrot]{mychemistry} % myChemistry - \renewcommand\thebeispiel{\arabic{beispiel}} % chemexec angepasst + \def\thebeispiel{\arabic{beispiel}} % chemexec angepasst \labelformat{beispiel}{Bei\-spiel #1} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - Listings anpassen ----------------------------------------------------------------- % @@ -105,7 +105,7 @@ \lstset{literate={ä}{{\"a}}1 {ö}{{\"o}}1 {ü}{{\"u}}1 {Ä}{{\"A}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1 {ß}{{\ss}}1} \lstset{ language=[LaTeX]TeX, - basicstyle={\ttfamily\footnotesize}, % Grundstil + basicstyle={\ttfamily}, % Grundstil extendedchars=true, numbers=left, % Zeilennummern numberstyle=\tiny, % Größe des Zeilennummern @@ -113,12 +113,15 @@ gobble=0, % das erste Leerzeichen abschneiden xleftmargin=20pt, % Einrückung links breaklines=true, % Zeilenumbruch - moredelim=[is][\color{blue}]{!!}{!!}, % Hervorhebung + moredelim=[is][\color{red!25!purple}]{!!}{!!},% Hervorhebung commentstyle={\color[named]{Gray}}, emph={begin,end}, % Umgebungen hervorheben emphstyle=\color{red}, keywordstyle=\color{code}, - morekeywords={arrow,arrowlength,atomsize,bondlength,bondshape,branch,chemfig,chemmove,chemname,chemsign,ce,compound,draw,dummy,elmove,floatplacement,floatstyle,lewis,listof,makeinvisible,makevisible,marrow,merge,mesomeric,node,reactand,restylefloat,setatomsep,setcrambond,setrcndist,setrxnalign,setschemealign,setschemename,transition}, + 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 } @@ -142,9 +145,41 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - 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 ----------------------------- % -\makeatletter \newcommand{\BeginExample}{% \VerbatimEnvironment \begin{VerbatimOut}[gobble=1]{\jobname.tmp}} @@ -201,11 +236,12 @@ \makeatother % - weitere Makros -------------------------------------------------------------------- % -\newcommand{\mC}{{\color{DarkRed}\sffamily myChemistry}\xspace} % Paketname +\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\NEU[1][0pt]{\leavevmode\llap{\footnotesize\ECFTeenSpirit\color{red}Neu\kern\dimexpr20pt+#1\relax}} +\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};} @@ -216,42 +252,42 @@ \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[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{ + \reactand[,a]{ \chemfig{C(-[4]*6(=-=-=-))(-[2]*6(=-=-=-))(-[6,,,2]HO)-C(-[2]CH_3) (-[6]OH)-CH_3} - }{a} + } \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}% }; @@ -266,33 +302,57 @@ \vskip4cm \begin{rxn}[scale=.7] \setatomsep{1.5em}\footnotesize - \reactand{ \chemfig{C(-[4]*6(=-=-=-))(-[2]*6(=-=-=-))(-[6,,,2]HO)-C(-[2]CH_3)(-[6]OH)-CH_3} }{a} + \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} }{} + \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} }{} - }{} + \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} }{} + \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} }{} - }{} + \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{Was ist neu?} +\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. Das wurde in der Dokumentation jeweils mit {\ECFTeenSpirit\color{red}Neu} gekennzeichnet. 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}). +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 \mCversion\ nun unter der LPPL Version 1.3 oder später. +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[<ausrichtung>,<anker>,<tikz>]{} +\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{<dicke>}+ 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}) @@ -304,9 +364,9 @@ Damit \mC funktionieren kann, müssen ein paar Pakete installiert sein: \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 \verb=rxnscheme=-Umgebung definiert; + \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 \verb=\pgfpositionnodelater= muss verfügbar 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} @@ -314,19 +374,19 @@ Seit August 2010 steht mit \CF eine wirklich flexible Lösung für organische St \mC bindet die Pakete \begin{itemize} - \item \CF\footnote{von Christian Tellechea, \url{http://www.ctan.org/tex-archive/macros/latex/contrib/chemfig/}}, + \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.niederberger-berlin.net/downloads/?did=1}} und + \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 \verb=\ce{}= (mhchem) - \item \verb=\ox{}{}=, \verb=\om[]=, \verb=\op[]=, \verb=\Hyd=, \verb=\Hpl= (chemexec) - \item \verb=\chemfig[][]{}=, \verb=\chemrel[]{}=, \verb=\chemsign[]{}=, \verb=\lewis{}= (\CF) - \item \verb=\declarecompound[]{}=, \verb=\compound{}= (chemcompounds). + \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. @@ -372,74 +432,78 @@ Dadurch ergeben sich einige Möglichkeiten, die `nodes' relativ zueinander zu pl \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} }{} + \reactand{ \chemfig{-[::30]-[::-60]OH} } \arrow{Ox.}{} - \reactand{ \chemfig{-[::30]=_[::-60]O} }{} + \reactand{ \chemfig{-[::30]=_[::-60]O} } \end{rxn} \end{SideBySideExample} Sie sehen hier die wichtigsten Befehle von \mC im Einsatz: \begin{description} \vitem=\begin{rxn}[<keys>]= Die erste von zwei Umgebungen. Sie stellt die Reaktionschemata zwischen den Text und zentriert sie (siehe \ref{ssec:rxn}). - \vitem=\reactand[<ausrichtung>]{<formeln>}{<anker>}= setzt eine `node' auf die `chain', in die die chemischen Formeln geschrieben werden. Die Standard-Ausrichtung ist nach \verb=right= (siehe \ref{ssec:reactand}). - \vitem=\arrow[<keys>]{<oben>}{<unten>}= schreibt in der Standardeinstellung einen \unit{5}\emlength\ langen einfachen Pfeil nach rechts (siehe \ref{ssec:arrow}). + \vitem=\reactand[<ausrichtung>,<anker>,<tikz>]{<formeln>}= 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[<keys>]{<oben>}{<unten>}= 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} }{} + \reactand{ \chemfig{-[::30]=_[::-60]O} } \arrow[direction=below]{}{Ox.} - \reactand[below]{ \chemfig{-[::30](-[::60]OH)=_[::-60]O} }{} + \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 \verb=below= wird die Carbonsäure unter den Pfeil gesetzt und nicht rechts daneben. Durch die Key-Angabe \verb+direction=below+ zeigt der Pfeil nach unten anstatt nach rechts. +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} }{} + \reactand{ \chemfig{-[::30]-[::-60]OH} } \arrow{}{} - \reactand{ \chemfig{-[::30]=_[::-60]O} }{carbonyl} + \reactand[,carbonyl]{ \chemfig{-[::30]=_[::-60]O} } \arrow[direction=below]{}{} - \reactand[below]{ \chemfig{-[::30](-[::60]OH)=_[::-60]O} }{} + \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} }{} - }{} + \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[<ausrichtung>]{<zweig>}{<anker>}=\ + \vitem=\branch[<ausrichtung>,<anker>,<tikz>]{<zweig>}= (siehe \ref{ssec:branch}) \end{description} -Der Zweig wurde mit \verb+right=of carbonyl+ rechts neben den ersten Reaktanden mit dem Anker \verb=carbonyl= angesetzt. Innerhalb des Zweigs wurde beim Pfeil der Key \verb+type={<=>}+ verwendet, wodurch der Gleichgewichtspfeil dargestellt wurde. Andere \verb=type=-Mög\-lich\-kei\-ten wären \verb=->= (Voreinstellung), \verb=<-= oder \verb=<->=. +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 \verb=\branch= können so umfangreichere Reaktionschemata entstehen: +Durch mehrfaches Verwenden von \lstinline=\branch= können so umfangreichere Reaktionschemata entstehen: \begin{Example} \begin{rxn} - \reactand{ \chemfig{-[::30]-[::-60]OH} }{} + \reactand{ \chemfig{-[::30]-[::-60]OH} } \arrow{}{} - \reactand{ \chemfig{-[::30]=_[::-60]O} }{carbonyl} + \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} }{} - }{imin} - \branch[below right=of carbonyl]{ - \arrow[type={<=>},direction=below right]{ \chemfig{[,.75]-[::30]-[::-60]OH} }{} - \reactand[below right]{ \chemfig{-[::30](-[::60]O-[::-60]-[::-60])-[::-60]OH} }{} - }{halbacetal} - \branch[above=of carbonyl,xshift=5.75em]{ + \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} }{} + \reactand[above]{ \chemfig{-[::30](-[::60]OH)-[::-60]-[::60]=[::60]O} } \arrow{$-\ce{H2O}$}{} - \reactand{ \chemfig{-[::30]=[::-60]-[::60]=[::60]O} }{} - }{aldol} + \reactand{ \chemfig{-[::30]=[::-60]-[::60]=[::60]O} } + } \end{rxn} \end{Example} @@ -447,9 +511,9 @@ Durch mehrfaches Verwenden von \verb=\branch= können so umfangreichere Reaktion 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} }{} + \reactand{ \chemfig{=[::30]-[::-60]OH} } \arrow[type={<=>}]{}{} - \reactand{ \chemfig{-[::30]=[::-60]O} }{} + \reactand{ \chemfig{-[::30]=[::-60]O} } \end{rxnscheme} \end{Example} Hier kommt die Umgebung @@ -469,40 +533,40 @@ Es gibt einige Voreinstellungen, die zum Teil meinem persönlichen Geschmack ges Außerhalb der Umgebungen gelten weiterhin die Voreinstellungen von \CF. \begin{SideBySideExample} \begin{rxn} - \reactand{\chemfig{**6(------)}}{} + \reactand{\chemfig{**6(------)}} \end{rxn} \chemfig{**6(------)} \end{SideBySideExample} Sie können die Voreinstellungen von \mC über folgende Befehle ändern: \begin{Verbatim} - \bondlength{<länge>} - \bondshape{<basislänge>}{<strichdicke>}{<strichabstand>} - \atomsize{<schriftgröße>} + \setbondlength{<länge>} + \setbondshape{<basislänge>}{<strichdicke>}{<strichabstand>} + \setatomsize{<schriftgröße>} \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. \verb=\atomsize= hat die Voreinstellung \verb=\small=. -\begin{SideBySideExample} - \bondlength{2.1em}\bondshape{5pt}{1pt}{2pt}\atomsize{\Large} +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]}}{} + \reactand{\chemfig{-[::30](<[::60])-[::-60](<:[::-60])-[::60]}} \end{rxn} - \bondlength{}\bondshape{}{}{}\atomsize{} + \setbondlength{}\setbondshape{}{}{}\setatomsize{} \begin{rxn} - \reactand{\chemfig{-[::30](<[::60])-[::-60](<:[::-60])-[::60]}}{} + \reactand{\chemfig{-[::30](<[::60])-[::-60](<:[::-60])-[::60]}} \end{rxn} -\end{SideBySideExample} +\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{SideBySideExample} +\begin{Example} \begin{rxn} \setatomsep{2.1em}\setcrambond{5pt}{1pt}{2pt}\Large - \reactand{\chemfig{-[::30](<[::60])-[::-60](<:[::-60])-[::60]}}{} + \reactand{\chemfig{-[::30](<[::60])-[::-60](<:[::-60])-[::60]}} \end{rxn} \begin{rxn} - \reactand{\chemfig{-[::30](<[::60])-[::-60](<:[::-60])-[::60]}}{} + \reactand{\chemfig{-[::30](<[::60])-[::-60](<:[::-60])-[::60]}} \end{rxn} -\end{SideBySideExample} -Reaktionspfeile haben als Standardwert die Länge \unit{5}\emlength\ oder $\unit{5\sqrt{2}}\emlength$ im Fall der schrägen Pfeile. Die Voreinstellung lässt sich mit +\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} - \arrowlength{<länge>} + \setarrowlength{<länge>} \end{Verbatim} \SaveVerb{arrowlength}=<länge>=% auf \UseVerb{arrowlength} bzw. $\text{\UseVerb{arrowlength}}\cdot\sqrt{2}$ ändern. @@ -510,73 +574,152 @@ auf \UseVerb{arrowlength} bzw. $\text{\UseVerb{arrowlength}}\cdot\sqrt{2}$ ände \subsection{Paket-Optionen}\label{ssec:paketoptionen} \mC verfügt über einige Paket-Optionen. \begin{description} - \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 \verb=rxnscheme=-Umgebung (siehe \ref{ssec:rxnscheme}) in "`Reaction scheme"' geändert. - \vitem+placement=<position>+ Durch den Aufruf dieser Option kann das Standard-Platzie\-rungs\-ver\-hal\-ten der \verb=rxnscheme=-Umgebung (siehe \ref{ssec:rxnscheme}) in \verb=<position>= geändert werden. - \vitem+color=<farbe>+ Mit dieser Option wird die entsprechende Farbe an `chemexec' weitergereicht und dessen Option \verb+shade=true+ aufgerufen. - \vitem+nocolor+ Mit dieser Option wird `chemexec' ohne Farbe und mit der Option \verb+shade=false+ geladen (Default-Verhalten von \mC). - \vitem+shade+ Mit dieser Option wird `chemexec' mit der Option \verb+shade=true+ geladen. + \vitem+chemstyle+\settowidth{\tmplength}{\tt chemstyle}\Vii[\tmplength]Mit dieser Option kann `chemstyle' automatisch geladen werden, ohne dass Konflikte mit \mC enstehen. + \vitem+color=<farbe>+ 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+nocompounds+\settowidth{\tmplength}{\tt nocompounds}\NEU[\tmplength]Durch diese Option können Sie verhindern, dass \mC `chemcompounds' lädt. - \vitem+nomhchem+\settowidth{\tmplength}{\tt nomhchem}\NEU[\tmplength]Durch diese Option können Sie verhindern, dass \mC `mhchem' lädt, vorausgesetzt, dass `chemexec' auch nicht geladen wird. - \vitem+chemstyle+\settowidth{\tmplength}{\tt chemstyle}\NEU[\tmplength]Mit dieser Option kann `chemstyle' automatisch geladen werden, ohne dass Konflikte mit \mC enstehen. - \vitem+nopackages+\settowidth{\tmplength}{\tt nopackages}\NEU[\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+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=<position>+ Durch den Aufruf dieser Option kann das Standard-Platzie\-rungs\-ver\-hal\-ten der \lstinline=rxnscheme=-Umgebung (siehe \ref{ssec:rxnscheme}) in \lstinline=<position>= 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[right,->,green!45!blue!55]{ \chemfig{*6(---(-)---)} }{} + \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[right,minimum width=5em]{ \rule[-1em]{1em}{.5pt}\;\rule[-1em]{3em}{.5pt} }{}} + \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}{} - \reactand[below,yshift=1em]{F\"ulle die L\"ucken}{a} - \branch[below=of a]{ \reactand[right,minimum width=5em]{ \stoich\ Na }{}\reactand{$+$}{} \leer \arrow{}{} \leer \reactand{$+$}{} \leer }{b} - \branch[below=of b,draw,inner sep=3pt]{\reactand[right,minimum width=5em]{}{}\reactand{$+$}{}\reactand[right,minimum width=5em]{}{}\arrow{}{}\reactand[right,minimum width=5em]{Natriumchlorid $+$ Wasserstoff}{}}{} + \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. Manchmal werden in den Beispielen der Befehlsreferenz die Nodes (in der \TikZ-Bedeutung), innerhalb derer Reaktanden, Pfeile oder Branches gesetzt werden, farbig eingerahmt, um zu sehen, welchen Platz sie einnehmen. Das geschieht mithilfe des Befehls \verb=\makevisible=, siehe \ref{ssec:makevisible}. +Im folgenden Abschnitt werden alle Befehle von \mC in alphabetischer Reihenfolge vorgestellt. \subsection{arrow}\label{ssec:arrow} -Reaktionspfeile werden mit \verb=\arrow= erstellt. +Reaktionspfeile werden mit \lstinline=\arrow= erstellt. \begin{Verbatim} \arrow[<keys>]{<oben>}{<unten>} \end{Verbatim} -Mit mehreren Keys können die Reaktionspfeile angepasst werden. Sie werden nach dem Muster \verb+key=wert+ angegeben. +Mit mehreren Keys können die Reaktionspfeile angepasst werden. Sie werden nach dem Muster \lstinline+key=wert+ angegeben. \begin{description} \vitem+direction=<richtung>+ -- mögliche Einstellungen sind: \begin{rxn} - \arrowlength{2.5em} + \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}{}}{} + \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=<typ>+ -- mögliche Einstellungen sind: \begin{rxn} \dummy[a] - \branch[below=of a,yshift=1em]{\arrow{}{}\reactand{\ttfamily type=\{-\textgreater\}}{}}{b} - \branch[below=of b,yshift=1em]{\arrow[type={<-}]{}{}\reactand{\ttfamily type=\{\textless-\}}{}}{c} - \branch[below=of c,xshift=.5em,yshift=1em]{\arrow[type={<->}]{}{}\reactand{\ttfamily type=\{\textless-\textgreater\}}{}}{d} - \branch[below=of d,yshift=1em]{\arrow[type={<=>}]{}{}\reactand{\ttfamily type=\{\textless=\textgreater\}}{}}{e} - \branch[below=of e,yshift=1em]{\arrow[type={-|>}]{}{}\reactand{\ttfamily type=\{-\textbar\textgreater\}}{}}{} + \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=<faktor>+ -- mit dem Faktoren, den Sie hier angeben, wird die Pfeillänge (\unit{5.0}\emlength\ bei Faktor = $1.0$, Standard) multipliziert. +\vitem+length=<faktor>+ -- mit dem Faktoren, den Sie hier angeben, wird die Pfeillänge (\SI{5.0}{\emlength} bei Faktor = $1.0$, Standard) multipliziert. \vitem+name=<anker>+ -- hier können Sie dem Pfeil einen Anker geben, auf den \zB mit einem Branch referenziert werden kann. -\vitem+both+\settowidth{\tmplength}{\tt both}\NEU[\tmplength]-- durch diesen Key haben die beiden Nodes, in die die Beschriftungen geschrieben werden, die gleichen Maße. +\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} @@ -598,141 +741,142 @@ Mit mehreren Keys können die Reaktionspfeile angepasst werden. Sie werden nach Einmal die meisten Keys im Einsatz: \begin{SideBySideExample} \begin{rxn} - \reactand{A}{} + \reactand{A} \arrow[name=pfeil]{B}{} - \branch[above=of pfeil,yshift=-4em]{ + \branch[above=of pfeil,,yshift=-4em]{ \arrow[type=<-,direction=above,length=.7]{}{} - \reactand[above]{D}{} - }{} - \reactand{C}{} + \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} + \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 \verb=both= bekommen die Nodes beider Pfeilbeschriftungen die gleichen Maße, wodurch die Ausrichtung korrigiert werden kann. +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} + \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{arrowlength} -Reaktionspfeile haben als Standardwert die Länge \unit{5.0}\emlength\ oder $\unit{5.0\cdot\sqrt{2}}\emlength$ im Fall der schrägen Pfeile. Die Voreinstellung lässt sich mit -\begin{Verbatim} - \arrowlength{<länge>} -\end{Verbatim} -auf \UseVerb{arrowlength} bzw. $\text{\UseVerb{arrowlength}}\cdot\sqrt{2}$ ändern. Beachten Sie, dass Sie eine Längeneinheit verwenden müssen. - -\subsection{atomsize} -Mit -\begin{Verbatim} - \atomsize{<größe>} -\end{Verbatim} -lässt sich die Schriftgröße der Atomgruppen verändern. Standard ist \verb=\small=. - -\subsection{bondlength} -Mit -\begin{Verbatim} - \bondlength{<länge>} -\end{Verbatim} -lässt sich \verb=\setatomsep{<länge>}= für die \CF-Formeln \emph{innerhalb} der \mC-Umgebungen einstellen. Standard ist \unit{1.8}\emlength. - -\subsection{bondshape} -Mit -\begin{Verbatim} - \bondshape{<basislänge>}{<strichdicke>}{<strichabstand>} -\end{Verbatim} -lässt sich \verb=\setcrambond{<basislänge>}{<strichdicke>}{<strichabstand>}= für die \CF-Formeln \emph{innerhalb} der \mC-Umgebungen einstellen. Standard sind in dieser Reihenfolge \unit{3}\pt, \unit{.5}\pt\ und \unit{1}\pt. - \subsection{branch}\label{ssec:branch} -Der Befehl \verb=\branch= wird verwendet, um eine Verzweigung der Reaktion zu realisieren. +\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[<ausrichtung>]{<formel(n)>}{<anker>} + \branch[<ausrichtung>,<anker>,<tikz>]{<formel(n)>} \end{Verbatim} -Für den \texttt{\textbackslash branch} wird die Ausrichtung und der Anker wichtig. Sehen wir uns ein Beispiel an. +Für den \lstinline+\branch+ wird die Ausrichtung und der Anker wichtig. Sehen wir uns ein Beispiel an. \begin{Example} \begin{rxn} - \reactand{\chemfig{-[::30]=[::-60](-[::-60])-[::60]}}{start} + \reactand[,start]{\chemfig{-[::30]=_[::-60](-[::-60])-[::60]}} \arrow[length=.75]{\ce{HCl}}{} - \reactand{\chemfig{-[::30]-[::-60](-[::120]Cl)(-[::-60])-[::60]}}{} - \reactand{\chemsign+\chemfig{-[::30](-[::60]Cl)-[::-60](-[::-60])-[::60]}}{} + \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]}}{} - \reactand{\chemsign+\chemfig{-[::30](-[::60]OH)-[::-60](-[::-60])-[::60]}}{} - }{} + \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 \texttt{start} bekommen (Zeile 2, siehe auch \ref{ssec:reactand}). +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!!} + \reactand[,!!start!!]{ ... } \end{Verbatim} -\texttt{\textbackslash branch} bezieht sich nun in seiner Ausrichtung darauf (Zeile 6): -\begin{Verbatim}[firstnumber=6] - \branch[below right!!=of start!!]{ ... }{} +\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 \texttt{\textbackslash reactand} oder \texttt{\textbackslash arrow}. Lässt man das optionale Argument leer, dann platziert sich der Branch automatisch rechts. +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} }{} + \reactand{ \chemfig{CH_2=CH-OH} } \arrow[type={<=>},length=.5]{}{} - \branch{ \reactand{ \chemfig{CH_3-CH=O} }{} }{} + \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 <wert>+. + \item[relativ] In diesem Fall geben Sie folgendes an: \lstinline+<wert>=of <anker>+. +\end{description} +Als \lstinline+<wert>+ 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 \verb=\arrow=-Key \verb=both= ist nicht wirklich eine Lösung, weil die kleinere Beschriftung dann nicht mehr am Pfeil liegt, sondern wegrutscht. +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} + \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 \verb=xshift= und \verb=yshift= verschieben. +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} + \reactand[,a]{A} \arrow{}{} - \branch[below=of a,xshift=-1.35em]{ + \branch[below=of a,,xshift=-1.35em]{ \arrow[direction=below]{\chemfig{-[::30]-[::-60]OH}}{\Hpl} - }{} + } \end{rxn} \makeinvisible \end{SideBySideExample} -\subsection{dummy} -Mit \verb=\dummy= zeichnet man eine leere Node. Die Pfeile, die mit \verb=\arrow= erzeugt werden, müssen einer Node nachfolgen. \verb=\arrow= ruft intern \verb=\tikzchainprevious= auf. Ist \emph{vor} einem Pfeil noch \emph{keine} Node auf die Chain geschrieben worden, erzeugt das eine Fehlermeldung. Duch setzen des \verb=\dummy= kann ein Schema dennoch mit einem Pfeil beginnen. +\subsection{chemand}\label{ssec:chemand} +\NEU% +Der Befehl +\begin{Verbatim} + \chemand[<ausrichtung>,<anker>,<tikz>] +\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} -\verb=\elmove= ist lediglich ein Abkürzungsmakro für den \CF-Befehl \verb=\chemmove=. +\subsection{elmove}\label{ssec:elmove} +\lstinline=\elmove= ist lediglich ein Abkürzungsmakro für den \CF-Befehl \lstinline=\chemmove=. \begin{Verbatim} \elmove[<tikz>]{<start>}{<startrichtung>}{<ende>}{<endrichtung>} \end{Verbatim} @@ -740,48 +884,77 @@ Das schreibt den Befehl \begin{Verbatim} \chemmove{\draw[!!<tikz>!!](!!<start>!!).. controls +(!!<startrichtung>!!) and +(!!<endrichtung>!!)..(!!<ende>!!);} \end{Verbatim} -mit \verb?[->,red,shorten <=3pt,shorten >=1pt]? als Voreinstellung für \verb=<tikz>=. Wie\linebreak\verb=\chemmove= funktioniert, können Sie im Manual zu \CF nachlesen. +mit \lstinline?[->,red,shorten <=3pt,shorten >=1pt]? als Voreinstellung für \lstinline=<tikz>=. -\begin{SideBySideExample} +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{SideBySideExample} +\end{Example} \subsection{makeinvisible}\label{ssec:makeinvisible} -\NEU% -Dieser Befehl hebt die Änderungen von \verb=\makevisible= (siehe \ref{ssec:makevisible}) auf und stellt das normale Verhalten von \mC wieder her. \verb=\makeinvisible= wirkt sich nur auf nachfolgende Reaktanden aus. +\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} -\NEU% -Mit \verb=\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: +\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}. - \verb=\makevisible= wirkt sich nur auf nachfolgende Reaktanden aus. + \lstinline=\makevisible= wirkt sich nur auf nachfolgende Reaktanden aus. \begin{SideBySideExample} \makevisible \begin{rxn} - \reactand{A}{a} + \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 \verb=\marrow= zeichnet einen Mesomeriepfeil. +Der Befehl \lstinline=\marrow= zeichnet einen Mesomeriepfeil. \begin{Verbatim} \marrow[<ausrichtung>] \end{Verbatim} -Die Ausrichtung funktioniert analog zu \verb=\reactand= (\ref{ssec:reactand}), siehe auch \ref{ssec:mesomeric}. +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{<keys>} +\end{Verbatim} +kann verwendet werden, um alle Voreinstellungen zu verändern. Für jeden der \lstinline=\set<command>=-Befehle von \mC mit Ausnahme von \lstinline=\setbondshape= gibt es einen Key \lstinline+<command>=<value>+. Zusätzlich gibt es den Key \lstinline+align=<value>+, 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 \verb=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. +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[<key>]{<ziel>}{<start a>}{<start b>} \end{Verbatim} @@ -804,135 +977,137 @@ Der \verb=merge=-Befehl sind nicht nur für den direkten Einsatz in den \mC-Um\- \end{tikzpicture} \end{center} \end{SideBySideExample} -Gibt man den Start- und dem Zielreaktanden Anker, funktioniert \verb=\merge= natürlich auch in den \mC-Umgebungen. +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{ \chemfig{Cl-[:30,1.5]--[:-30,1.5]O-[:30,1.5]--[:-30,1.5]Cl}{} }{oben} + \reactand[,oben]{ \chemfig{Cl-[:30,1.5]--[:-30,1.5]O-[:30,1.5]--[:-30,1.5]Cl}{} } \arrow[length=.5]{}{} - \reactand{ \chemfig{O(-[:-150]**6(-----(-OH)-))-[:90]-[:30]-[:-30]O-[:30]-[:-30]-[:-90]O-[:-30]**6(-(-HO)-----)} }{start_oben} + \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,xshift=8em,yshift=-4em]{ - \reactand{ \chemfig{**6((--[6,,,2]HO)-N-(--[6]OH)----)} }{} + \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)----)} }{} - }{start_unten} + \reactand{ \chemfig{**6((--[6]Br)-N-(--[6]Br)----)} } + } % Ziel - \branch[right=of start_oben,xshift=5em,yshift=-4em]{ - \reactand{ \chemfig{O(-[:-150]**6(-----(-O?)-))-[:90]-[:30]**6(-N-(--[:-90]O-[:-30]**6(-(-O-[6]-[:-150]-[:150]O-[:-150]-[:150]?)-----))----)} }{c} - }{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 \verb=\merge= in den \mC-Umgebungen verwenden. Die Verwendung von \verb=\merge= erfordert unter Umständen einige Spielerei mit Branches, xshift und yshift, bis man das gewünschte Ergebnis erhält. +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{ \chemname{\chemfig{**6(---(-NH_2)---)}}{Anilin} }{start_aa} - \reactand[below,yshift=-3em]{ \chemname{\ce{HNO2}}{salpetrige S"aure} }{start_ab} - \branch[right=of start_aa,xshift=6em,yshift=-5em]{ - \reactand{ \chemname{\chemfig{**6(---(-N|_2\op)---)}}{Diazoniumion} }{} - }{ziel_a}% = start_ba - \branch[below=of ziel_a,yshift=-3em]{ - \reactand{ \chemname{\chemfig{**6(---(-NH_2)---)}}{Anilin} }{} - }{start_bb} - \branch[right=of ziel_a,xshift=6em,yshift=-5em]{ - \reactand{ \chemname{\chemfig{N(-[:-150]**6(------))=N-[:-30]**6(---(-NH_2)---)}}{p-Aminodiazobenzol} }{} - }{ziel_b} + \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} -Der \verb=\mesomeric=-Befehl funktioniert wie \verb=\reactand= (\ref{ssec:reactand}). Sein Zweck ist es, eckige Klammern zu setzen. +\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[<ausrichtung>]{<formel(n)>}{<anker>} + \mesomeric[<ausrichtung>,<anker>,<tikz>]{<formel(n)>} \end{Verbatim} -In \verb=<formel(n)>= werden die mesomeren Grenzstrukturen geschrieben. Mit \verb=\marrow=\linebreak (\ref{ssec:marrow}) werden die Mesomeriepfeile gesetzt. Man kann \verb=\mesomeric= falls nötig mit einem Anker (\verb=<anker>=) versehen (\ref{ssec:branch}). Die Ausrichtung funktioniert analog \verb=\reactand=. +In \lstinline=<formel(n)>= 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=<anker>=) 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(=-=-=-)} }{} + \reactand{ \chemfig{*6(=-=-=-)} } \marrow[below] - \reactand[below]{ \chemfig{*6(-=-=-=)} }{} - }{} + \reactand[below]{ \chemfig{*6(-=-=-=)} } + } \end{rxn} \end{SideBySideExample} Vielleicht auch einen Komplex? -\begin{SideBySideExample} +\begin{Example} \begin{rxn} \setatomsep{3em} - \mesomeric{ - \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} }{} - }{a} + \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{SideBySideExample} +\end{Example} \subsection{reactand}\label{ssec:reactand} -Der Befehl \verb=\reactand= ist so etwas wie der Basisbefehl. +\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[<ausrichtung>]{<formel(n)>}{<anker>} + \reactand[<ausrichtung>,<anker>,<tikz>]{<formel(n)>} \end{Verbatim} -In diesen Befehl werden die Formeln (\verb=<formel>=) geschrieben und können, falls nötig, mit einem Anker (\verb=<anker>=) versehen werden. Das optionale Argument kann die 8 Werte +In diesen Befehl werden die Formeln (\lstinline=<formel>=) geschrieben und können, falls nötig, mit einem Anker (\lstinline=<anker>=) versehen werden. Die Ausrichtung kann die 8 Werte \begin{inparaenum}[(a)] - \item \texttt{right}, - \item \texttt{above right}, - \item \texttt{above}, - \item \texttt{above left}, - \item \texttt{left}, - \item \texttt{below left}, - \item \texttt{below}, - \item \texttt{below right} + \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 (\texttt{right}). Dieses Argument wird verwendet, wenn die Reaktionsgleichung nicht von links nach rechts, sondern \zB von oben nach unten verlaufen soll. +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}}{} + \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}}{} + \reactand{\ce{Br2}} + \reactand[below]{\ce{I2}} + \reactand{\ce{Cl2}} \end{rxn} %Reaktion von oben nach unten: \begin{rxn} - \reactand{\ce{Br-Br}}{} + \reactand{\ce{Br-Br}} \arrow[length=.5,direction=below]{$h\nu$}{} - \reactand[below]{\ce{2 ~\lewis{0.,Br}}}{} + \reactand[below]{\ce{2 ~\lewis{0.,Br}}} \end{rxn} \end{SideBySideExample} \subsection{rxn (Umgebung)}\label{ssec:rxn} -Die Umgebung \verb=rxn= ist eine unnummerierte nicht gleitende Umgebung für Reaktionsschemata. Die Reaktionsschemata werden zentriert. Die Voreinstellungen \verb=\bondlength=, \verb=\bondshape=, \verb=\arrowlength= und \verb=\atomsize= gelten hier ebenso wie bei \verb=rxnscheme=. +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}[<keys>] ... @@ -940,25 +1115,25 @@ Die Umgebung \verb=rxn= ist eine unnummerierte nicht gleitende Umgebung für Rea \end{Verbatim} \subsubsection{Optionen}\label{sssec:rxn_optionen} -\NEU\verb=rxn= hat zwei Keys: +\Vii\lstinline=rxn= hat zwei Keys: \begin{description} - \vitem+align=<ausrichtung>+ das Ausrichtungsverhalten der \verb=rxn=-Umgebung, Default: center - \vitem+scale=<factor>+ Skalierung der \verb=rxn=-Umgebung, Default: 1.0 + \vitem+align=<ausrichtung>+ das Ausrichtungsverhalten der \lstinline=rxn=-Umgebung, Default: center + \vitem+scale=<factor>+ Skalierung der \lstinline=rxn=-Umgebung, Default: 1.0 \end{description} \begin{Example} \begin{rxn}[align=center] - \reactand{center}{}\arrow{}{}\reactand{zentriert}{} + \reactand{center}\arrow{}{}\reactand{zentriert} \end{rxn} \begin{rxn}[align=right] - \reactand{right}{}\arrow{}{}\reactand{rechts}{} + \reactand{right}\arrow{}{}\reactand{rechts} \end{rxn} \begin{rxn}[align=left] - \reactand{left}{}\arrow{}{}\reactand{links}{} + \reactand{left}\arrow{}{}\reactand{links} \end{rxn} \end{Example} \subsection{rxnscheme (Umgebung)}\label{ssec:rxnscheme} -Die Umgebung \verb=\rxnscheme= ist eine Gleitumgebung für Reaktionsschemata. +Die Umgebung \lstinline=rxnscheme= ist eine Gleitumgebung für Reaktionsschemata. \begin{Verbatim} \begin{rxnscheme}[<keys>]{<caption>} ... @@ -966,42 +1141,42 @@ Die Umgebung \verb=\rxnscheme= ist eine Gleitumgebung für Reaktionsschemata. \end{Verbatim} \subsubsection{Optionen}\label{sssec:rxnscheme_optionen} \begin{description} - \vitem+label=<label>+ Wie jede Gleitumgebung kann auch \verb=rxnscheme= mit einem Label versehen werden. Setzen Sie \zB + \vitem+label=<label>+ Wie jede Gleitumgebung kann auch \lstinline=rxnscheme= mit einem Label versehen werden. Setzen Sie \zB \begin{Verbatim} \begin{rxnscheme}[label={rs:schema}]{<caption>} ... \end{rxnscheme} \end{Verbatim} - ein, können Sie mit \verb=\ref{rs:schema}= wie gewohnt referenzieren. + ein, können Sie mit \lstinline=\ref{rs:schema}= wie gewohnt referenzieren. \vitem+scale=<scalefactor>+ Mit diesem Key kann das Reaktionsschema skaliert werden. Beachten Sie, dass er sich nicht auf die Schriftgröße und die Größe der \CF-Formeln auswirkt. \begin{Verbatim} \begin{rxnscheme}[scale=<scalefactor>]{<caption>} ... \end{rxnscheme} \end{Verbatim} - \vitem+align=<ausrichtung>+\settowidth{\tmplength}{\tt align=<ausrichtung>}\NEU[\tmplength]Mit diesem Key kann man auswählen, ob das Schema links, rechts oder mittig ausgerichtet wird. + \vitem+align=<ausrichtung>+\settowidth{\tmplength}{\tt align=<ausrichtung>}\Vii[\tmplength]Mit diesem Key kann man auswählen, ob das Schema links, rechts oder mittig ausgerichtet wird. \end{description} \begin{Example} \begin{rxnscheme}[scale=2]{Gro\ss es Schema} \large\setatomsep{3.5em} - \reactand{ \chemfig{=[::30]-[::-60]OH} }{} + \reactand{ \chemfig{=[::30]-[::-60]OH} } \arrow[type={<=>}]{}{} - \reactand{ \chemfig{-[::30]=[::-60]O} }{} + \reactand{ \chemfig{-[::30]=[::-60]O} } \end{rxnscheme} \begin{rxnscheme}[scale=.5]{Kleines Schema} \tiny\setatomsep{1em} - \reactand{ \chemfig{=[::30]-[::-60]OH} }{} + \reactand{ \chemfig{=[::30]-[::-60]OH} } \arrow[type={<=>}]{}{} - \reactand{ \chemfig{-[::30]=[::-60]O} }{} + \reactand{ \chemfig{-[::30]=[::-60]O} } \end{rxnscheme} \begin{rxnscheme}{center} - \reactand{center}{}\arrow{}{}\reactand{zentriert}{} + \reactand{center}\arrow{}{}\reactand{zentriert} \end{rxnscheme} \begin{rxnscheme}[align=right]{right} - \reactand{right}{}\arrow{}{}\reactand{rechts}{} + \reactand{right}\arrow{}{}\reactand{rechts} \end{rxnscheme} \begin{rxnscheme}[align=left]{left} - \reactand{left}{}\arrow{}{}\reactand{links}{} + \reactand{left}\arrow{}{}\reactand{links} \end{rxnscheme} \end{Example} @@ -1015,30 +1190,30 @@ Wenn Ihnen der Stil nicht gefällt, können Sie diesen mit ändern. Als Stile stehen durch das `float'-Paket \begin{description} \vitem=plain= Ohne spezielle Formatierungen, Legende erscheint unter dem Objekt - \vitem=plaintop= Wie \verb=plain=, aber Legende oberhalb des Objekts + \vitem=plaintop= Wie \lstinline=plain=, aber Legende oberhalb des Objekts \vitem=boxed= Objekt ist gerahmt, Legende unterhalb - \vitem=ruled= Legende erscheint von Linien umgeben oberhalb des Objekts, Objekt wird unterhalb von einer weiteren Linie begrenzt; Voreinstellung für \verb=rxnscheme= + \vitem=ruled= Legende erscheint von Linien umgeben oberhalb des Objekts, Objekt wird unterhalb von einer weiteren Linie begrenzt; Voreinstellung für \lstinline=rxnscheme= \end{description} zur Verfügung. \begin{Example} \begin{rxnscheme}{ruled} - \reactand{Standard-Stil}{} + \reactand{Standard-Stil} \end{rxnscheme} \floatstyle{boxed} \restylefloat{rxnfloat} \begin{rxnscheme}{boxed} - \reactand{mit Rahmen}{} + \reactand{mit Rahmen} \end{rxnscheme} \floatstyle{plain} \restylefloat{rxnfloat} \begin{rxnscheme}{plain} - \reactand{ohne Schnickschnack}{} + \reactand{ohne Schnickschnack} \end{rxnscheme} \end{Example} \floatstyle{ruled} \restylefloat{rxnfloat} \paragraph{Platzierung} -Auch das Platzierungsverhalten, das in der Voreinstellung \verb=H= ist, können Sie entsprechend ändern. +Auch das Platzierungsverhalten, das in der Voreinstellung \lstinline=H= ist, können Sie entsprechend ändern. \begin{Verbatim} \floatplacement{rxnfloat}{<position>} \end{Verbatim} @@ -1066,7 +1241,7 @@ Um den Zähler zu ändern, gehen Sie wie üblich vor. Durch \makeatother \renewcommand{\therxnfloat}{\arabic{section}.\arabic{rxnfloat}} \end{Verbatim} -wird der Zähler der Schemata \zB mit jeder neuen \verb=section= zurückgesetzt und die Nummer nach den Muster \verb=section.rxnscheme= ausgegeben. Beachten Sie, dass Sie wegen des {@} den Aufruf mit \verb=\makeatletter= und\verb=\makeatother= begrenzen müssen. +wird der Zähler der Schemata \zB mit jeder neuen \lstinline=section= zurückgesetzt und die Nummer nach den Muster \lstinline=section.rxnscheme= ausgegeben. Beachten Sie, dass Sie wegen des {@} den Aufruf mit \lstinline=\makeatletter= und\lstinline=\makeatother= begrenzen müssen. \paragraph{Verzeichnis} Mit \begin{Verbatim} @@ -1077,62 +1252,97 @@ können Sie eine Liste aller Reaktionsschemata erzeugen: \listof{rxnfloat}{Reaktionsschemata} \end{SideBySideExample} -\subsection{setrcndist}\label{ssec:setrcndist} +\subsection{setarrowlength}\label{ssec:setarrowlength} \NEU% -Die einzelnen Nodes, in denen die Reaktanden und Pfeile geschrieben werden, haben in den \mC-Umgebungen einen bestimmten Abstand voneinander. Per Default ist das \unit{1}\emlength. Wenn Sie das ändern wollen, können Sie das mit +Reaktionspfeile haben als Standardwert die Länge \SI{5.0}{\emlength} oder $5.0\cdot\sqrt{2}\,\si{\emlength}$ im Fall der schrägen Pfeile. Die Voreinstellung lässt sich mit +\begin{Verbatim} + \setarrowlength{<länge>} +\end{Verbatim} +auf \UseVerb{arrowlength} bzw. $\text{\UseVerb{arrowlength}}\cdot\sqrt{2}$ ändern. Beachten Sie, dass Sie eine Längeneinheit verwenden müssen. Lassen Sie das Argument leer, wird die Voreinstellung wiederhergestellt. + +{\bfseries Dieser Befehl ersetzt \lstinline+\arrowlength+, der bis Version 1.2 noch verfügbar war.} + +\subsection{setatomsize}\label{ssec:setatomsize} +Mit +\begin{Verbatim} + \setatomsize{<größe>} +\end{Verbatim} +lässt sich die Schriftgröße der Atomgruppen verändern. Standard ist \lstinline=\small=. Lassen Sie das Argument leer, wird die Voreinstellung wiederhergestellt. + +{\bfseries Dieser Befehl ersetzt \lstinline+\atomsize+, der bis Version 1.2 noch verfügbar war.} + +\subsection{setbondlength}\label{ssec:setbondlength} +Mit +\begin{Verbatim} + \setbondlength{<länge>} +\end{Verbatim} +lässt sich \lstinline=\setatomsep{<länge>}= für die \CF-Formeln \emph{innerhalb} der \mC-Umgebungen einstellen. Standard ist \SI{1.8}{\emlength}. Lassen Sie das Argument leer, wird die Voreinstellung wiederhergestellt. + +{\bfseries Dieser Befehl ersetzt \lstinline+\bondlength+, der bis Version 1.2 noch verfügbar war.} + +\subsection{setbondshape}\label{ssec:setbondshape} +Mit +\begin{Verbatim} + \setbondshape{<basislänge>}{<strichdicke>}{<strichabstand>} +\end{Verbatim} +lässt sich \lstinline=\setcrambond{<basislänge>}{<strichdicke>}{<strichabstand>}= für die \CF-Formeln \emph{innerhalb} der \mC-Umgebungen einstellen. Standard sind in dieser Reihenfolge \SI{3}{\pt}, \SI{.5}{\pt} und \SI{1}{\pt}. Lassen Sie die Argumente leer, wird die jeweilige Voreinstellung wiederhergestellt. + +{\bfseries Dieser Befehl ersetzt \lstinline+\bondshape+, der bis Version 1.2 noch verfügbar war.} + +\subsection{setrcndist}\label{ssec:setrcndist} +\Vii% +Die einzelnen Nodes, in denen die Reaktanden und Pfeile geschrieben werden, haben in den \mC-Umgebungen einen bestimmten Abstand voneinander. Per Default ist das \SI{1}{\emlength}. Wenn Sie das ändern wollen, können Sie das mit \begin{Verbatim} \setrcndist{<länge>} \end{Verbatim} -machen. Lassen Sie das Argument leer, wird der Abstand wieder auf \unit{1}\emlength\ zurückgesetzt. +machen. Lassen Sie das Argument leer, wird der Abstand wieder auf \SI{1}{\emlength} zurückgesetzt. \begin{SideBySideExample} \setrcndist{2em} \begin{rxn} - \reactand{A}{}\arrow{}{} + \reactand{A}\arrow{}{} \end{rxn} \setrcndist{} \begin{rxn} - \reactand{A}{}\arrow{}{} + \reactand{A}\arrow{}{} \end{rxn} \end{SideBySideExample} -\subsection{setrxnalign/setschemealign} -\NEU% +\subsection{setrxnalign/setschemealign}\label{ssec:setrxnalign}\label{ssec:setschemealign} +\Vii% Mit den Befehlen \begin{Verbatim} \setrxnalign{<alignment>} \setschemealign{<alignment>} \end{Verbatim} -lässt sich das Default-Ausrichtungsverhalten (siehe \ref{sssec:rxn_optionen} \&\ \ref{sssec:rxnscheme_optionen}) der Umgebungen festlegen. Es gibt die Einstellungsmöglichkeiten \verb=left=, \verb=center= oder \verb=right=. +lässt sich das Default-Ausrichtungsverhalten (siehe \ref{sssec:rxn_optionen} \&\ \ref{sssec:rxnscheme_optionen}) der Umgebungen festlegen. Es gibt die Einstellungsmöglichkeiten \lstinline=left=, \lstinline=center= oder \lstinline=right=. -Lassen Sie das Argument leer, wird die Defaulteinstellung von \mC (\verb=center=) wiederhergestellt. +Lassen Sie das Argument leer, wird die Defaulteinstellung von \mC (\lstinline=center=) wiederhergestellt. \begin{Example} \setrxnalign{right} \begin{rxn} - \reactand{A}{}\arrow{}{}\reactand{B}{} + \reactand{A}\arrow{}{}\reactand{B} \end{rxn} \setrxnalign{} \begin{rxn} - \reactand{A}{}\arrow{}{}\reactand{B}{} + \reactand{A}\arrow{}{}\reactand{B} \end{rxn} \end{Example} -\subsection{setschemename} +\subsection{setschemename}\label{ssec:setschemename} Siehe \ref{par:rxnscheme_name}. \subsection{transition}\label{ssec:transition} -\verb=\transition= funktioniert genau wie \verb=\mesomeric=. +\NEU\lstinline=\transition= funktioniert genau wie \lstinline=\reactand= (siehe \ref{ssec:reactand}). \textbf{Wenn Sie ältere Versionen von \mC eingesetzt haben, beachten Sie, dass sich die Befehl-Syntax verändert hat.} \begin{Verbatim} - \transition[<ausrichtung>]{<formel>}{<anker>} + \transition[<ausrichtung>,<anker>,<tikz>]{<formel>} \end{Verbatim} \begin{SideBySideExample} \begin{rxn} - \reactand{ \ce{H2 + I2} }{} + \reactand{ \ce{H2 + I2} } \arrow[type={<=>},length=.5,direction=below]{}{} - \transition[below]{ - \reactand{ \chemfig[dotted][]{H?-I-[2]I-[4]H?} }{} - }{} + \transition[below]{ \chemfig[dotted][]{H?-I-[2]I-[4]H?} } \arrow[type={<=>},length=.5,direction=below]{}{} - \reactand[below]{ \ce{2 HI} }{} + \reactand[below]{ \ce{2 HI} } \end{rxn} \end{SideBySideExample} @@ -1140,111 +1350,111 @@ Siehe \ref{par:rxnscheme_name}. \subsection{Addition}\label{ssec:addition} Ein einfaches Reaktionschema mit zwei unterschiedlichen Produkten. \begin{rxnscheme}{Additionsreaktion} - \reactand{ \chemfig{=_[::-30]-[::60](=[::60]O)-[::-60]} }{} + \reactand{ \chemfig{=_[::-30]-[::60](=[::60]O)-[::-60]} } \arrow{ $+ \Hpl$ }{} - \mesomeric{ - \reactand{ \chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120,.3,,,white]\oplus)-[::-60]} }{} + \mesomeric[,gf]{ + \reactand{ \chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120,.3,,,white]\oplus)-[::-60]} } \marrow[below] - \reactand[below]{ \chemfig{\oplus-[6,.3,,,white]-[:-30]=_[::60](-[::60]OH)-[::-60]} }{} - }{gf} - \branch[right=of gf,yshift=3em]{ + \reactand[below]{ \chemfig{\oplus-[6,.3,,,white]-[:-30]=_[::60](-[::60]OH)-[::-60]} } + } + \branch[right=of gf,,yshift=3em]{ \arrow{}{} - \reactand{ \chemname{\chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120]R)-[::-60]}}{1,2-Addukt} }{} - }{} - \branch[right=of gf,yshift=-5em]{ + \reactand{ \chemname{\chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120]R)-[::-60]}}{1,2-Addukt} } + } + \branch[right=of gf,,yshift=-5em]{ \arrow{}{} - \reactand{ \chemname{\chemfig{R-[6]-[:-30]=_[::60](-[::60]OH)-[::-60]}}{1,4-Addukt} }{} - }{} + \reactand{ \chemname{\chemfig{R-[6]-[:-30]=_[::60](-[::60]OH)-[::-60]}}{1,4-Addukt} } + } \end{rxnscheme} Schritt für Schritt. Zunächst das Edukt und der erste Reaktionspfeil. \begin{Verbatim} - \reactand{ \chemfig{=_[::-30]-[::60](=[::60]O)-[::-60]} }{} + \reactand{ \chemfig{=_[::-30]-[::60](=[::60]O)-[::-60]} } \arrow{ $+ \Hpl$ }{} \end{Verbatim} \begin{rxn} - \reactand{ \chemfig{=_[::-30]-[::60](=[::60]O)-[::-60]} }{} + \reactand{ \chemfig{=_[::-30]-[::60](=[::60]O)-[::-60]} } \arrow{ $+ \Hpl$ }{} \end{rxn} Anschließend die mesomeren Grenzformeln: \begin{Verbatim}[firstnumber=3] - \mesomeric{ - \reactand{ \chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120,.3,,,white]\oplus)-[::-60]} }{} + \mesomeric[,gf]{ + \reactand{ \chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120,.3,,,white]\oplus)-[::-60]} } \marrow[below] - \reactand[below]{ \chemfig{\oplus-[6,.3,,,white]-[:-30]=_[::60](-[::60]OH)-[::-60]} }{} - }{gf} + \reactand[below]{ \chemfig{\oplus-[6,.3,,,white]-[:-30]=_[::60](-[::60]OH)-[::-60]} } + } \end{Verbatim} \begin{rxn} - \reactand{ \chemfig{=_[::-30]-[::60](=[::60]O)-[::-60]} }{} + \reactand{ \chemfig{=_[::-30]-[::60](=[::60]O)-[::-60]} } \arrow{ $+ \Hpl$ }{} - \mesomeric{ - \reactand{ \chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120,.3,,,white]\oplus)-[::-60]} }{} + \mesomeric[,gf]{ + \reactand{ \chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120,.3,,,white]\oplus)-[::-60]} } \marrow[below] - \reactand[below]{ \chemfig{\oplus-[6,.3,,,white]-[:-30]=_[::60](-[::60]OH)-[::-60]} }{} - }{gf} + \reactand[below]{ \chemfig{\oplus-[6,.3,,,white]-[:-30]=_[::60](-[::60]OH)-[::-60]} } + } \end{rxn} Nun den Branch zum 1,2-Addukt, mit yshift nach oben verschoben: \begin{Verbatim}[firstnumber=8] - \branch[right=of gf,yshift=3em]{ + \branch[right=of gf,,yshift=3em]{ \arrow{}{} - \reactand{ \chemname{\chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120]R)-[::-60]}}{1,2-Addukt} }{} - }{} + \reactand{ \chemname{\chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120]R)-[::-60]}}{1,2-Addukt} } + } \end{Verbatim} \begin{rxn} - \reactand{ \chemfig{=_[::-30]-[::60](=[::60]O)-[::-60]} }{} + \reactand{ \chemfig{=_[::-30]-[::60](=[::60]O)-[::-60]} } \arrow{ $+ \Hpl$ }{} - \mesomeric{ - \reactand{ \chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120,.3,,,white]\oplus)-[::-60]} }{} + \mesomeric[,gf]{ + \reactand{ \chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120,.3,,,white]\oplus)-[::-60]} } \marrow[below] - \reactand[below]{ \chemfig{\oplus-[6,.3,,,white]-[:-30]=_[::60](-[::60]OH)-[::-60]} }{} - }{gf} - \branch[right=of gf,yshift=3em]{ + \reactand[below]{ \chemfig{\oplus-[6,.3,,,white]-[:-30]=_[::60](-[::60]OH)-[::-60]} } + } + \branch[right=of gf,,yshift=3em]{ \arrow{}{} - \reactand{ \chemname{\chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120]R)-[::-60]}}{1,2-Addukt} }{} - }{} + \reactand{ \chemname{\chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120]R)-[::-60]}}{1,2-Addukt} } + } \end{rxn} Zuletzt den Branch zum 1,4-Addukt, mit yshift nach unten verschoben: \begin{Verbatim}[firstnumber=12] - \branch[right=of gf,yshift=-5em]{ + \branch[right=of gf,,yshift=-5em]{ \arrow{}{} - \reactand{ \chemname{\chemfig{R-[6]-[:-30]=_[::60](-[::60]OH)-[::-60]}}{1,4-Addukt} }{} - }{} + \reactand{ \chemname{\chemfig{R-[6]-[:-30]=_[::60](-[::60]OH)-[::-60]}}{1,4-Addukt} } + } \end{Verbatim} \begin{rxn} - \reactand{ \chemfig{=_[::-30]-[::60](=[::60]O)-[::-60]} }{} + \reactand{ \chemfig{=_[::-30]-[::60](=[::60]O)-[::-60]} } \arrow{ $+ \Hpl$ }{} - \mesomeric{ - \reactand{ \chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120,.3,,,white]\oplus)-[::-60]} }{} + \mesomeric[,gf]{ + \reactand{ \chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120,.3,,,white]\oplus)-[::-60]} } \marrow[below] - \reactand[below]{ \chemfig{\oplus-[6,.3,,,white]-[:-30]=_[::60](-[::60]OH)-[::-60]} }{} - }{gf} - \branch[right=of gf,yshift=3em]{ + \reactand[below]{ \chemfig{\oplus-[6,.3,,,white]-[:-30]=_[::60](-[::60]OH)-[::-60]} } + } + \branch[right=of gf,,yshift=3em]{ \arrow{}{} - \reactand{ \chemname{\chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120]R)-[::-60]}}{1,2-Addukt} }{} - }{} - \branch[right=of gf,yshift=-5em]{ + \reactand{ \chemname{\chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120]R)-[::-60]}}{1,2-Addukt} } + } + \branch[right=of gf,,yshift=-5em]{ \arrow{}{} - \reactand{ \chemname{\chemfig{R-[6]-[:-30]=_[::60](-[::60]OH)-[::-60]}}{1,4-Addukt} }{} - }{} + \reactand{ \chemname{\chemfig{R-[6]-[:-30]=_[::60](-[::60]OH)-[::-60]}}{1,4-Addukt} } + } \end{rxn} Der komplette Code ist also der folgende: \begin{Verbatim} \begin{rxnscheme}{Additionsreaktion} - \reactand{ \chemfig{=_[::-30]-[::60](=[::60]O)-[::-60]} }{} + \reactand{ \chemfig{=_[::-30]-[::60](=[::60]O)-[::-60]} } \arrow{ $+ \Hpl$ }{} - \mesomeric{ - \reactand{ \chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120,.3,,,white]\oplus)-[::-60]} }{} + \mesomeric[,gf]{ + \reactand{ \chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120,.3,,,white]\oplus)-[::-60]} } \marrow[below] - \reactand[below]{ \chemfig{\oplus-[6,.3,,,white]-[:-30]=_[::60](-[::60]OH)-[::-60]} }{} - }{gf} - \branch[right=of gf,yshift=3em]{ + \reactand[below]{ \chemfig{\oplus-[6,.3,,,white]-[:-30]=_[::60](-[::60]OH)-[::-60]} } + } + \branch[right=of gf,,yshift=3em]{ \arrow{}{} - \reactand{ \chemname{\chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120]R)-[::-60]}}{1,2-Addukt} }{} - }{} - \branch[right=of gf,yshift=-5em]{ + \reactand{ \chemname{\chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120]R)-[::-60]}}{1,2-Addukt} } + } + \branch[right=of gf,,yshift=-5em]{ \arrow{}{} - \reactand{ \chemname{\chemfig{R-[6]-[:-30]=_[::60](-[::60]OH)-[::-60]}}{1,4-Addukt} }{} - }{} + \reactand{ \chemname{\chemfig{R-[6]-[:-30]=_[::60](-[::60]OH)-[::-60]}}{1,4-Addukt} } + } \end{rxnscheme} \end{Verbatim} @@ -1253,58 +1463,58 @@ Der komplette Code ist also der folgende: Folgendes Reaktionsschema soll verwirklicht werden. \begin{rxnscheme}[scale=.8]{Elektrophile Substitution} \setatomsep{1.6em} - \reactand{ \chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{Benzol \compound{benzol}} }{start} + \reactand[,start]{ \chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{Benzol \compound{benzol}} } \branch[below=of start]{ - \arrow[direction=below,name=pfeil_a]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} - }{} + \arrow[direction=below,name=pfeil_a,both]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} + } - \branch[below=of pfeil_a,xshift=8.5em]{ - \mesomeric{ + \branch[below=of pfeil_a,mesomerie,xshift=8.5em]{ + \mesomeric{ \reactand{ \chemfig{*6(=[@{e1}]-=-(-[:120]Br)(-[:60]H)-(-[:-30,.4,,,white]\oplus)-[@{e2}])} \elmove{e1}{60:4mm}{e2}{0:4mm} - }{m1} + } \marrow \reactand{ \chemfig{*6(-(-[:90,.4,,,white]\oplus)-[@{e4}]=[@{e3}]-(-[:120]Br)(-[:60]H)-=)} \elmove{e3}{180:4mm}{e4}{150:4mm} - }{m1} + } \marrow \reactand{ \chemfig{*6(-=-(-[:-150,.4,,,white]\oplus)-(-[:120]Br)(-[:60]H)-=)} - }{m3} - }{} - }{mesomerie} + } + } + } - \branch[above=of mesomerie,xshift=7.25em]{ + \branch[above=of mesomerie,,xshift=7.25em]{ \arrow[direction=above]{$-\Hpl$}{} - }{} + } \arrow[length=2.6]{}{} - \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{Brombenzol \compound{brombenzol}} }{} + \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{Brombenzol \compound{brombenzol}} } \end{rxnscheme} -Zunächst erstellen wir die Hauptreaktion. Dafür setzen wir die Befehle \verb=\reactand=, \verb=\arrow= und die Umgebung \verb=\begin{rxn} ... \end{rxn}= ein. +Zunächst erstellen wir die Hauptreaktion. Dafür setzen wir die Befehle \lstinline=\reactand=, \lstinline=\arrow= und die Umgebung \lstinline=\begin{rxn} ... \end{rxn}= ein. \begin{Verbatim} \begin{rxn} \reactand{ \chemname{\chemfig{*6(-=-=-=)}}{Benzol \compound{benzol}} - }{} + } \arrow{}{} \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{Brombenzol \compound{brombenzol}} - }{} + } \end{rxn} \end{Verbatim} \begin{rxn} \reactand{ \chemname{\chemfig{*6(-=-=-=)}}{Benzol \compound{benzol}} - }{} + } \arrow{}{} \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{Brombenzol \compound{brombenzol}} - }{} + } \end{rxn} Nun wollen wir das ganze etwas verkleinern, damit wir nicht soviel Platz verbrauchen. \begin{Verbatim} @@ -1312,103 +1522,103 @@ Nun wollen wir das ganze etwas verkleinern, damit wir nicht soviel Platz verbrau \setatomsep{1.6em}!! \reactand{ \chemname{\chemfig{*6(-=-=-=)}}{Benzol \compound{benzol}} - }{} + } \arrow{}{} \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{Brombenzol \compound{brombenzol}} - }{} + } \end{rxn} \end{Verbatim} \begin{rxn}[scale=.8] \setatomsep{1.6em} \reactand{ - \chemname{\chemfig{*6(-=-=-=)}}{Benzol \compound{benzol}} - }{} + \chemname{\chemfig{*6(-=-=-=)}}{Benzol \compound{benzol}} + } \arrow{}{} \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{Brombenzol \compound{brombenzol}} - }{} + } \end{rxn} Damit die beiden Benzol-Ringe auf gleicher Höhe erscheinen, haben wir zwei Möglichkeiten. Entweder, wir verschieben den zweiten mit \TikZ-Code nach oben: \begin{Verbatim}[firstnumber=7] - \reactand[!!right,yshift=1em!!]{ - \chemname{\chemfig{*6(-=-=(-Br)-=)}}{Brombenzol \compound{brombenzol}} - }{} + \reactand[,,!!yshift=1em!!]{ + \chemname{\chemfig{*6(-=-=(-Br)-=)}}{Brombenzol \compound{brombenzol}} + } \end{Verbatim} -Beachten Sie, dass Sie, um den \TikZ-Code angeben zu können, die \textbf{Ausrichtung explizit schreiben müssen}. Diese Lösung ist nicht optimal, da dann der Reaktionspfeil nicht mittig sondern etwas zu tief erscheint. +Diese Lösung ist nicht optimal, da dann der Reaktionspfeil nicht mittig sondern etwas zu tief erscheint. \begin{rxn} \reactand{ - \chemname{\chemfig{*6(-=-=-=)}}{Benzol \compound{benzol}} - }{} + \chemname{\chemfig{*6(-=-=-=)}}{Benzol \compound{benzol}} + } \arrow{}{} - \reactand[right,yshift=1em]{ + \reactand[,,yshift=1em]{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{Brombenzol \compound{brombenzol}} - }{} + } \end{rxn} Die zweite Variante wäre, den ersten Ring nach unten zu verschieben. Das können wir nicht mit \TikZ-Code verwirklichen, da der Pfeil und der zweite Ring jeweils relativ zum vorhergehenden gesetzt werden. Durch ein unsichtbares Brom erreichen wir aber den gewünschten Effekt: \begin{Verbatim}[firstnumber=3] \reactand{ - \chemname{\chemfig{*6(-=-=!!(-[,,,,white]\phantom{Br})!!-=)}}{Benzol \compound{benzol}} - }{} + \chemname{\chemfig{*6(-=-=!!(-[,,,,white]\phantom{Br})!!-=)}}{Benzol \compound{benzol}} + } \end{Verbatim} \begin{rxn} \reactand{ - \chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{Benzol \compound{benzol}} - }{} + \chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{Benzol \compound{benzol}} + } \arrow{}{} \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{Brombenzol \compound{brombenzol}} - }{} + } \end{rxn} -Damit wir nun unterhalb dieser Reaktion einen Reaktionszweig erstellen können, benötigen wir den Befehl \verb=\branch= und wir müssen der ersten Formel einen Namen als Anker geben. +Damit wir nun unterhalb dieser Reaktion einen Reaktionszweig erstellen können, benötigen wir den Befehl \lstinline=\branch= und wir müssen der ersten Formel einen Namen als Anker geben. \begin{Verbatim} \begin{rxn}[scale=.8] \setatomsep{1.6em} - \reactand{ - \chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{Benzol \compound{benzol}} - }{!!start!!} + \reactand[,!!start!!]{ + \chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{Benzol \compound{benzol}} + } - \branch[!!below=of start!!]{ - \arrow[!!direction=below!!]{ \ce{Br2 / AlBr3} }{ $-\ce{AlBr4\om}$ } - }{} + \branch[!!below=of start!!]{ + \arrow[!!direction=below!!,both]{ \ce{Br2 / AlBr3} }{ $-\ce{AlBr4\om}$ } + } \arrow{}{} \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{Brombenzol \compound{brombenzol}} - }{} + } \end{rxn} \end{Verbatim} -Wir nennen also die erste Substanz \verb=start= und sagen \verb=\branch= mit \verb+below=of start+, dass die Verzweigung unterhalb beginnen soll. Damit der anschließende Reaktionspfeil nach unten zeigt, bekommt \verb=\arrow= den Key \verb+direction=below+. Damit erhalten wir folgendes Bild: +Wir nennen also die erste Substanz \lstinline=start= und sagen \lstinline=\branch= mit \lstinline+below=of start+, dass die Verzweigung unterhalb beginnen soll. Damit der anschließende Reaktionspfeil nach unten zeigt, bekommt \lstinline=\arrow= den Key \lstinline+direction=below+. Damit erhalten wir folgendes Bild: \begin{rxn}[scale=.8] \setatomsep{1.6em} - \reactand{ - \chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{Benzol \compound{benzol}} - }{start} - \branch[below=of start]{ - \arrow[direction=below]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} - }{} + \reactand[,start]{ + \chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{Benzol \compound{benzol}} + } + \branch[below=of start]{ + \arrow[direction=below,both]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} + } \arrow{}{} \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{Brombenzol \compound{brombenzol}} - }{} + } \end{rxn} -Als nächstes erstellen wir die mesomeren Grenzformeln des Wheland-Komplexes. Hier setzen wir drei weitere Befehle ein: \verb=\mesomeric=, \verb=\marrow= und \verb=\elmove=. +Als nächstes erstellen wir die mesomeren Grenzformeln des Wheland-Komplexes. Hier setzen wir drei weitere Befehle ein: \lstinline=\mesomeric=, \lstinline=\marrow= und \lstinline=\elmove=. \begin{Verbatim} !!\mesomeric{!! \reactand{ \chemfig{*6(=[@{e1}]-=-(-[:120]Br)(-[: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]Br)(-[:60]H)-=)} \elmove{e3}{180:4mm}{e4}{150:4mm} - }{} + } \marrow \reactand{ \chemfig{*6(-=-(-[:-150,.4,,,white]\oplus)-(-[:120]Br)(-[:60]H)-=)} - }{} - !!}{}!! + } + !!}!! \end{Verbatim} \begin{rxn}[scale=.8] \setatomsep{1.6em} @@ -1416,190 +1626,190 @@ Als nächstes erstellen wir die mesomeren Grenzformeln des Wheland-Komplexes. Hi \reactand{ \chemfig{*6(=[@{e1}]-=-(-[:120]Br)(-[: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]Br)(-[:60]H)-=)} \elmove{e3}{180:4mm}{e4}{150:4mm} - }{} + } \marrow \reactand{ \chemfig{*6(-=-(-[:-150,.4,,,white]\oplus)-(-[:120]Br)(-[:60]H)-=)} - }{} - }{} + } + } \end{rxn} -Setzen wir den Code \emph{in den} \verb=\branch= nach dem Pfeil, ergibt sich folgendes Gesamtbild: +Setzen wir den Code \emph{in den} \lstinline=\branch= nach dem Pfeil, ergibt sich folgendes Gesamtbild: \begin{rxn}[scale=.8] \setatomsep{1.6em} - \reactand{ - \chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{Benzol \compound{benzol}} - }{start} + \reactand[,start]{ + \chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{Benzol \compound{benzol}} + } - \branch[below=of start]{ - \arrow[direction=below]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} - \mesomeric{ - \reactand{ + \branch[below=of start]{ + \arrow[direction=below,both]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} + \mesomeric{ + \reactand{ \chemfig{*6(=[@{e1}]-=-(-[:120]Br)(-[:60]H)-(-[:-30,.4,,,white]\oplus)-[@{e2}])} \elmove{e1}{60:4mm}{e2}{0:4mm} - }{} - \marrow - \reactand{ + } + \marrow + \reactand{ \chemfig{*6(-(-[:90,.4,,,white]\oplus)-[@{e4}]=[@{e3}]-(-[:120]Br)(-[:60]H)-=)} \elmove{e3}{180:4mm}{e4}{150:4mm} - }{} - \marrow - \reactand{ + } + \marrow + \reactand{ \chemfig{*6(-=-(-[:-150,.4,,,white]\oplus)-(-[:120]Br)(-[:60]H)-=)} - }{} - }{} - }{} + } + } + } \arrow{}{} \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{Brombenzol \compound{brombenzol}} - }{} + } \end{rxn} Die Ausrichtung der mesomeren Formeln stimmt offensichtlich nicht und der Pfeil ist nicht mehr, wo er sein soll. Wir könnten folgendes versuchen: \begin{Verbatim} \begin{rxn}[scale=.8] \setatomsep{1.6em} - \reactand{ - \chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{Benzol \compound{benzol}} - }{start} - - \branch[below=of start]{ - \arrow[direction=below]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} - \mesomeric!![below]!!{ - \reactand{ - \chemfig{*6(=[@{e1}]-=-(-[:120]Br)(-[: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]Br)(-[:60]H)-=)} - \elmove{e3}{180:4mm}{e4}{150:4mm} - }{} - \marrow - \reactand{ - \chemfig{*6(-=-(-[:-150,.4,,,white]\oplus)-(-[:120]Br)(-[:60]H)-=)} - }{} - }{} - }{} + \reactand[,start]{ + \chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{Benzol \compound{benzol}} + } + + \branch[below=of start]{ + \arrow[direction=below,both]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} + \mesomeric!![below]!!{ + \reactand{ + \chemfig{*6(=[@{e1}]-=-(-[:120]Br)(-[: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]Br)(-[:60]H)-=)} + \elmove{e3}{180:4mm}{e4}{150:4mm} + } + \marrow + \reactand{ + \chemfig{*6(-=-(-[:-150,.4,,,white]\oplus)-(-[:120]Br)(-[:60]H)-=)} + } + } + } \arrow{}{} \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{Brombenzol \compound{brombenzol}} - }{} + } \end{rxn} \end{Verbatim} Das Ergebnis ist schon besser: \begin{rxn}[scale=.8] \setatomsep{1.6em} - \reactand{ - \chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{Benzol \compound{benzol}} - }{start} - - \branch[below=of start]{ - \arrow[direction=below]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} - \mesomeric[below]{ - \reactand{ - \chemfig{*6(=[@{e1}]-=-(-[:120]Br)(-[: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]Br)(-[:60]H)-=)} - \elmove{e3}{180:4mm}{e4}{150:4mm} - }{} - \marrow - \reactand{ - \chemfig{*6(-=-(-[:-150,.4,,,white]\oplus)-(-[:120]Br)(-[:60]H)-=)} - }{} - }{} - }{} + \reactand[,start]{ + \chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{Benzol \compound{benzol}} + } + + \branch[below=of start]{ + \arrow[direction=below,both]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} + \mesomeric[below]{ + \reactand{ + \chemfig{*6(=[@{e1}]-=-(-[:120]Br)(-[: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]Br)(-[:60]H)-=)} + \elmove{e3}{180:4mm}{e4}{150:4mm} + } + \marrow + \reactand{ + \chemfig{*6(-=-(-[:-150,.4,,,white]\oplus)-(-[:120]Br)(-[:60]H)-=)} + } + } + } \arrow{}{} \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{Brombenzol \compound{brombenzol}} - }{} + } \end{rxn} -Es ist allerdings für unser Beispiel unbefriedigend, dass die Platzierung zwar unterhalb, aber zentriert erscheint. Um das zu umgehen, werden wir dem Pfeil darüber einen Namen als Anker geben und die mesomeren Formeln als eigenen \verb=\branch= setzen. +Es ist allerdings für unser Beispiel unbefriedigend, dass die Platzierung zwar unterhalb, aber zentriert erscheint. Um das zu umgehen, werden wir dem Pfeil darüber einen Namen als Anker geben und die mesomeren Formeln als eigenen \lstinline=\branch= setzen. \begin{Verbatim}[firstnumber=6] ... \branch[below=of start]{ - \arrow[direction=below,!!name=pfeil_a!!]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} - }{} + \arrow[direction=below,!!name=pfeil_a!!,both]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} + } !!\branch[below=of pfeil_a]{!! \mesomeric{ \reactand{ \chemfig{*6(=[@{e1}]-=-(-[:120]Br)(-[: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]Br)(-[:60]H)-=)} \elmove{e3}{180:4mm}{e4}{150:4mm} - }{} + } \marrow \reactand{ \chemfig{*6(-=-(-[:-150,.4,,,white]\oplus)-(-[:120]Br)(-[:60]H)-=)} - }{} - }{} - !!}{}!! + } + } + !!}!! ... \end{Verbatim} \begin{rxn}[scale=.8] \setatomsep{1.6em} - \reactand{\chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{Benzol \compound{benzol}} }{start} + \reactand[,start]{\chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{Benzol \compound{benzol}} } \branch[below=of start]{ - \arrow[direction=below,name=pfeil_a]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} - }{} + \arrow[direction=below,name=pfeil_a,both]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} + } - \branch[below=of pfeil_a]{ + \branch[below=of pfeil_a,mesomerie]{ \mesomeric{ \reactand{ \chemfig{*6(=[@{e1}]-=-(-[:120]Br)(-[:60]H)-(-[:-30,.4,,,white]\oplus)-[@{e2}])} \elmove{e1}{60:4mm}{e2}{0:4mm} - }{m1} + } \marrow \reactand{ \chemfig{*6(-(-[:90,.4,,,white]\oplus)-[@{e4}]=[@{e3}]-(-[:120]Br)(-[:60]H)-=)} \elmove{e3}{180:4mm}{e4}{150:4mm} - }{m1} + } \marrow \reactand{ \chemfig{*6(-=-(-[:-150,.4,,,white]\oplus)-(-[:120]Br)(-[:60]H)-=)} - }{m3} - }{} - }{mesomerie} + } + } + } \arrow{}{} - \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{Brombenzol \compound{brombenzol}} }{} + \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{Brombenzol \compound{brombenzol}} } \end{rxn} -Das scheint auf den ersten Blick keine Verbesserung zu sein. Allerdings können wir den \verb=\branch= mit den \TikZ-Keys \verb=xshift= und \verb=yshift= noch beliebig verschieben. +Das scheint auf den ersten Blick keine Verbesserung zu sein. Allerdings können wir den \lstinline=\branch= mit den \TikZ-Keys \lstinline=xshift= und \lstinline=yshift= noch beliebig verschieben. \begin{Verbatim}[firstnumber=6] ... \branch[below=of start]{ - \arrow[direction=below,name=pfeil_a]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} - }{} - \branch[below=of pfeil_a,!!xshift=8.5em!!]{ + \arrow[direction=below,name=pfeil_a,both]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} + } + \branch[below=of pfeil_a,mesomerie,!!xshift=8.5em!!]{ \mesomeric{ \reactand{ \chemfig{*6(=[@{e1}]-=-(-[:120]Br)(-[: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]Br)(-[:60]H)-=)} \elmove{e3}{180:4mm}{e4}{150:4mm} - }{} + } \marrow \reactand{ \chemfig{*6(-=-(-[:-150,.4,,,white]\oplus)-(-[:120]Br)(-[:60]H)-=)} - }{} - }{} - }{} + } + } + } ... \end{Verbatim} \begin{rxn}[scale=.8] @@ -1607,157 +1817,157 @@ Das scheint auf den ersten Blick keine Verbesserung zu sein. Allerdings können \reactand{\chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{Benzol \compound{benzol}} }{start} \branch[below=of start]{ - \arrow[direction=below,name=pfeil_a]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} - }{} + \arrow[direction=below,name=pfeil_a,both]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} + } - \branch[below=of pfeil_a,xshift=8.5em]{ + \branch[below=of pfeil_a,mesomerie,xshift=8.5em]{ \mesomeric{ \reactand{ \chemfig{*6(=[@{e1}]-=-(-[:120]Br)(-[:60]H)-(-[:-30,.4,,,white]\oplus)-[@{e2}])} \elmove{e1}{60:4mm}{e2}{0:4mm} - }{m1} + } \marrow \reactand{ \chemfig{*6(-(-[:90,.4,,,white]\oplus)-[@{e4}]=[@{e3}]-(-[:120]Br)(-[:60]H)-=)} \elmove{e3}{180:4mm}{e4}{150:4mm} - }{m1} + } \marrow \reactand{ \chemfig{*6(-=-(-[:-150,.4,,,white]\oplus)-(-[:120]Br)(-[:60]H)-=)} - }{m3} - }{} - }{mesomerie} + } + } + } \arrow{}{} - \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{Brombenzol \compound{brombenzol}} }{} + \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{Brombenzol \compound{brombenzol}} } \end{rxn} -Damit wir mit dem Pfeil zurück nicht wieder das Problem mit der Zentrierung haben, bekommt er ebenfalls seinen eigenen \verb=\branch=. +Damit wir mit dem Pfeil zurück nicht wieder das Problem mit der Zentrierung haben, bekommt er ebenfalls seinen eigenen \lstinline=\branch=. \begin{Verbatim}[firstnumber=6] ... \branch[below=of start]{ - \arrow[direction=below,!!name=pfeil_a!!]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} - }{} - \branch[below=of pfeil_a,xshift=8.5em]{ + \arrow[direction=below,!!name=pfeil_a!!,both]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} + } + \branch[below=of pfeil_a,!!mesomerie!!,xshift=8.5em]{ \mesomeric{ \reactand{ \chemfig{*6(=[@{e1}]-=-(-[:120]Br)(-[: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]Br)(-[:60]H)-=)} \elmove{e3}{180:4mm}{e4}{150:4mm} - }{} + } \marrow \reactand{ \chemfig{*6(-=-(-[:-150,.4,,,white]\oplus)-(-[:120]Br)(-[:60]H)-=)} - }{} - }{} - }{!!mesomerie!!} - \branch[!!above=of mesomerie,xshift=7.25em!!]{ + } + } + } + \branch[!!above=of mesomerie,,xshift=7.25em!!]{ \arrow[direction=above]{$-\Hpl$}{} - }{} + } ... \end{Verbatim} \begin{rxn}[scale=.8] \setatomsep{1.6em} - \reactand{\chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{Benzol \compound{benzol}} }{start} + \reactand[,start]{\chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{Benzol \compound{benzol}} } \branch[below=of start]{ - \arrow[direction=below,name=pfeil_a]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} - }{} + \arrow[direction=below,name=pfeil_a,both]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} + } - \branch[below=of pfeil_a,xshift=8.5em]{ + \branch[below=of pfeil_a,mesomerie,xshift=8.5em]{ \mesomeric{ \reactand{ \chemfig{*6(=[@{e1}]-=-(-[:120]Br)(-[:60]H)-(-[:-30,.4,,,white]\oplus)-[@{e2}])} \elmove{e1}{60:4mm}{e2}{0:4mm} - }{m1} + } \marrow \reactand{ \chemfig{*6(-(-[:90,.4,,,white]\oplus)-[@{e4}]=[@{e3}]-(-[:120]Br)(-[:60]H)-=)} \elmove{e3}{180:4mm}{e4}{150:4mm} - }{m1} + } \marrow \reactand{ \chemfig{*6(-=-(-[:-150,.4,,,white]\oplus)-(-[:120]Br)(-[:60]H)-=)} - }{m3} - }{} - }{mesomerie} - \branch[above=of mesomerie,xshift=7.25em]{ + } + } + } + \branch[above=of mesomerie,,xshift=7.25em]{ \arrow[direction=above]{$-\Hpl$}{} - }{} + } \arrow{}{} - \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{Brombenzol \compound{brombenzol}} }{} + \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{Brombenzol \compound{brombenzol}} } \end{rxn} Nun sind wir fast am Ziel. Der Hauptreaktion ist noch zu kurz. \begin{Verbatim} \begin{rxn}[scale=.8] \setatomsep{1.6em} - \reactand{\chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{Benzol \compound{benzol}} }{start} + \reactand[,start]{\chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{Benzol \compound{benzol}} } \branch[below=of start]{ - \arrow[direction=below,name=pfeil_a]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} - }{} - \branch[below=of pfeil_a,xshift=8.5em]{ + \arrow[direction=below,name=pfeil_a,both]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} + } + \branch[below=of pfeil_a,mesomerie,xshift=8.5em]{ \mesomeric{ \reactand{ \chemfig{*6(=[@{e1}]-=-(-[:120]Br)(-[: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]Br)(-[:60]H)-=)} \elmove{e3}{180:4mm}{e4}{150:4mm} - }{} + } \marrow \reactand{ \chemfig{*6(-=-(-[:-150,.4,,,white]\oplus)-(-[:120]Br)(-[:60]H)-=)} - }{} - }{} - }{mesomerie} - \branch[above=of mesomerie,xshift=7.25em]{ + } + } + } + \branch[above=of mesomerie,,xshift=7.25em]{ \arrow[direction=above]{$-\Hpl$}{} - }{} + } \arrow[!!length=2.6!!]{}{} - \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{Brombenzol \compound{brombenzol}} }{} + \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{Brombenzol \compound{brombenzol}} } \end{rxn} \end{Verbatim} \begin{rxn}[scale=.8] \setatomsep{1.6em} - \reactand{\chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{Benzol \compound{benzol}} }{start} + \reactand[,start]{\chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{Benzol \compound{benzol}} } \branch[below=of start]{ - \arrow[direction=below,name=pfeil_a]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} - }{} - \branch[below=of pfeil_a,xshift=8.5em]{ + \arrow[direction=below,name=pfeil_a,both]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} + } + \branch[below=of pfeil_a,mesomerie,xshift=8.5em]{ \mesomeric{ \reactand{ \chemfig{*6(=[@{e1}]-=-(-[:120]Br)(-[: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]Br)(-[:60]H)-=)} \elmove{e3}{180:4mm}{e4}{150:4mm} - }{} + } \marrow \reactand{ \chemfig{*6(-=-(-[:-150,.4,,,white]\oplus)-(-[:120]Br)(-[:60]H)-=)} - }{} - }{} - }{mesomerie} - \branch[above=of mesomerie,xshift=7.25em]{ + } + } + } + \branch[above=of mesomerie,,xshift=7.25em]{ \arrow[direction=above]{$-\Hpl$}{} - }{} + } \arrow[length=2.6]{}{} - \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{Brombenzol \compound{brombenzol}} }{} + \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{Brombenzol \compound{brombenzol}} } \end{rxn} \newpage \subsection[Synthese mit \TikZ]{\TikZ, \mC und \CF für eine umfangreichere Synthese}\label{ssec:tikzsynthese} -Da die \CF-Befehle innerhalb einer \verb=tikzpicture=-Umgebung problemlos funktionieren, lassen sich mit dem \verb=\merge=-Befehl von \mC auch größere Synthesen realisieren. Die anderen \mC-Befehle funktionieren nicht ohne weiteres, da sie alle auf einer \verb=chain= angeordnet werden. Solange Sie \mC eingebunden haben, müssen Sie allerdings kaum eine \verb=tikzlibrary= zusätzlich einbinden. Im Beispiel wurde direkt auf die Gleitumgebung \verb=rxnfloat= von \mC zugegriffen. +Da die \CF-Befehle innerhalb einer \lstinline=tikzpicture=-Umgebung problemlos funktionieren, lassen sich mit dem \lstinline=\merge=-Befehl von \mC auch größere Synthesen realisieren. Die anderen \mC-Befehle funktionieren nicht ohne weiteres, da sie alle auf einer \lstinline=chain= angeordnet werden. Solange Sie \mC eingebunden haben, müssen Sie allerdings kaum eine \lstinline=tikzlibrary= zusätzlich einbinden. Im Beispiel wurde direkt auf die Gleitumgebung \lstinline=rxnfloat= von \mC zugegriffen. \begin{Verbatim} \begin{rxnfloat} @@ -1951,7 +2161,7 @@ In den abschließenden Zeilen 21 -- 28 wird zunächst eine leere node erstellt ( \end{center} \section{Nachwort} -\mC steckt noch in den Kinderschuhen. Das bedeutet, das vermutlich noch eine ganze Reihe von Bugs enthalten sind. Bestimmt fehlt auch noch das eine oder andere Feature, das nützlich wäre. Da ich das Paket nur in meiner Freizeit testen und verbessern kann, bin ich über \emph{jede} Art von Feedback sehr froh. Wenn Ihnen \mC gefällt, dann helfen Sie doch, es zu verbessern, indem Sie mir Ihre Erfahrungen mitteilen. +\mC steckt noch in den Kinderschuhen. Das bedeutet, dass vermutlich noch eine ganze Reihe von Bugs enthalten sind. Bestimmt fehlt auch noch das eine oder andere Feature, das nützlich wäre. Da ich das Paket nur in meiner Freizeit testen und verbessern kann, bin ich über \emph{jede} Art von Feedback sehr froh. Wenn Ihnen \mC gefällt, dann helfen Sie doch, es zu verbessern, indem Sie mir Ihre Erfahrungen mitteilen. Auch wenn ich mich bemüht habe, sinnvolle chemische Reaktionen einzusetzen, habe ich nicht extra überprüft, ob jedes Beispiel chemisch sinnvoll ist. Vertrauen Sie den Beispielen diesbezüglich nicht, sondern sehen Sie in einem Lehrbuch der Chemie nach. diff --git a/Master/texmf-dist/doc/latex/mychemistry/mychemistry_en.pdf b/Master/texmf-dist/doc/latex/mychemistry/mychemistry_en.pdf Binary files differindex e979f624c6b..0661d500a75 100644 --- a/Master/texmf-dist/doc/latex/mychemistry/mychemistry_en.pdf +++ b/Master/texmf-dist/doc/latex/mychemistry/mychemistry_en.pdf diff --git a/Master/texmf-dist/doc/latex/mychemistry/mychemistry_en.tex b/Master/texmf-dist/doc/latex/mychemistry/mychemistry_en.tex index 68dd917fc13..e9bdab2407d 100644 --- a/Master/texmf-dist/doc/latex/mychemistry/mychemistry_en.tex +++ b/Master/texmf-dist/doc/latex/mychemistry/mychemistry_en.tex @@ -4,7 +4,7 @@ % - Creating reaction schemes with LaTeX and ChemFig ---------------------------------- % % ------------------------------------------------------------------------------------- % % - Clemens Niederberger -------------------------------------------------------------- % -% - 2011/03/20 ------------------------------------------------------------------------ % +% - 2011/04/04 ------------------------------------------------------------------------ % % ------------------------------------------------------------------------------------- % % - http://www.niederberger-berlin.net/2011/02/latex-mychemistry/ --------------------- % % - kontakt@niederberger-berlin.net --------------------------------------------------- % @@ -26,14 +26,15 @@ % - - % % - The Current Maintainer of this work is Clemens Niederberger. - % % - - % -% - This work consists of the files mychemistry.sty, mychemistry_de.tex and - % -% - mychemistry_en.tex - % +% - This work consists of the files mychemistry.sty, mychemistry_de.tex, - % +% - mychemistry_en.tex and bondwidth.tex - % % ------------------------------------------------------------------------------------- % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \documentclass[DIV10]{scrartcl} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - Pakete ---------------------------------------------------------------------------- % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage{etoolbox} \usepackage{scrhack} % verbessert KOMAs Zusammenspiel mit floats \usepackage[english]{babel} % Sprache \usepackage{emerald} % chemfig-Schrift @@ -41,9 +42,9 @@ \usepackage[T1]{fontenc} % Text-Ausgabe-Codierung \usepackage{textcomp,mathcomp} \usepackage{xspace,paralist} % xspace und Listen -\usepackage[Gray]{SIunits} % Einheiten - \addunit{\emlength}{em} - \addunit{\pt}{pt} +\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 @@ -81,9 +82,8 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usepackage{hyperref} \hypersetup{colorlinks=true, % Setup der Hyperlinks und des pdf - linkcolor=black, + linkcolor=green!50!black, urlcolor=blue!70, - citecolor=black, plainpages=false, bookmarksopen=true, bookmarksopenlevel=2, @@ -105,7 +105,7 @@ \lstset{literate={ä}{{\"a}}1 {ö}{{\"o}}1 {ü}{{\"u}}1 {Ä}{{\"A}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1 {ß}{{\ss}}1} \lstset{ language=[LaTeX]TeX, - basicstyle={\ttfamily\footnotesize}, % Grundstil + basicstyle={\ttfamily}, % Grundstil extendedchars=true, numbers=left, % Zeilennummern numberstyle=\tiny, % Größe des Zeilennummern @@ -113,12 +113,15 @@ gobble=0, % das erste Leerzeichen abschneiden xleftmargin=20pt, % Einrückung links breaklines=true, % Zeilenumbruch - moredelim=[is][\color{blue}]{!!}{!!}, % Hervorhebung + moredelim=[is][\color{red!25!purple}]{!!}{!!},% Hervorhebung commentstyle={\color[named]{Gray}}, emph={begin,end}, % Umgebungen hervorheben emphstyle=\color{red}, keywordstyle=\color{code}, - morekeywords={arrow,arrowlength,atomsize,bondlength,bondshape,branch,chemfig,chemmove,chemname,chemsign,ce,compound,draw,dummy,elmove,floatplacement,floatstyle,lewis,listof,makeinvisible,makevisible,marrow,merge,mesomeric,node,reactand,restylefloat,setatomsep,setcrambond,setrcndist,setrxnalign,setschemealign,setschemename,transition}, + 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 } @@ -142,9 +145,41 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - 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 ----------------------------- % -\makeatletter \newcommand{\BeginExample}{% \VerbatimEnvironment \begin{VerbatimOut}[gobble=1]{\jobname.tmp}} @@ -205,7 +240,8 @@ \newcommand{\CF}{{\ECFAugie ChemFig}\xspace} % ChemFig in der originalen Schrift \newcommand{\eg}{\mbox{e.\,g.}\xspace} \newcommand{\TikZ}{\mbox{Ti{\bfseries\itshape k}Z}\xspace} -\newcommand\NEU[1][0pt]{\leavevmode\llap{\footnotesize\ECFTeenSpirit\color{red}New\kern\dimexpr20pt+#1\relax}} +\newcommand\Vii[1][0pt]{\leavevmode\llap{\footnotesize\ECFTeenSpirit v1.2\kern\dimexpr20pt+#1\relax}} +\newcommand\NEU[1][0pt]{\leavevmode\llap{\footnotesize\ECFTeenSpirit\color{red}New in \mCversion\kern\dimexpr20pt+#1\relax}} \newlength{\tmplength} % - für Beispiele --------------------------------------------------------------------- % \newcommand{\abovearrow}{\tikz\node[draw,minimum width=3em,minimum height=1.5em,blue]{\footnotesize above};} @@ -222,36 +258,36 @@ \begin{verbatim} \begin{rxn}[scale=.7] \setatomsep{1.5em}\footnotesize - \reactand{ + \reactand[,a]{ \chemfig{C(-[4]*6(=-=-=-))(-[2]*6(=-=-=-))(-[6,,,2]HO)-C(-[2]CH_3) (-[6]OH)-CH_3} - }{a} + } \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}% }; @@ -266,33 +302,58 @@ \vskip4cm \begin{rxn}[scale=.7] \setatomsep{1.5em}\footnotesize - \reactand{ \chemfig{C(-[4]*6(=-=-=-))(-[2]*6(=-=-=-))(-[6,,,2]HO)-C(-[2]CH_3)(-[6]OH)-CH_3} }{a} + \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} }{} + \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} }{} + \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} }{} - }{} + \reactand{ \chemfig{C(-[4]*6(=-=-=-))(-[2]*6(=-=-=-))(-[6,,,2]HO)-\chembelow{C}{\oplus}(-[2]CH_3)-CH_3} } + } \end{rxn} \end{titlepage} \tableofcontents \section{About} -\subsection{What's new?} -Since \mCversion\ there are some new features. The main part plays behind the scenes: the wrong arrow- and branch-alignments have been corrected. \textbf{Due to these changes \mC now needs Version 2.10 of \TikZ (or pgf, actually}, see \ref{ssec:voraussetzungen}). +\subsection{Changes} +The new features or changes of each version are marked with {\ECFTeenSpirit v} followed by the version number, \eg {\ECFTeenSpirit v1.2}. The most recent changes are marked with {\ECFTeenSpirit\color{red}New in \mCversion}. + +\subsubsection{Version 1.2} +\Vii% +Since v1.2 there are some new features. The main part plays behind the scenes: the wrong arrow- and branch-alignments have been corrected. \textbf{Due to these changes \mC now needs Version 2.10 of \TikZ (or pgf, actually}, see \ref{ssec:voraussetzungen}). -There are some new "frontend" features as well. In this documentation they are marked with {\ECFTeenSpirit\color{red}New}. For one thing there are some new package options (see \ref{ssec:paketoptionen}). Additionally the arrows have got two new keys (see \ref{ssec:arrow}). +There are some new "frontend" features as well. For one thing there are some new package options (see \ref{ssec:paketoptionen}). Additionally the arrows have got two new keys (see \ref{ssec:arrow}). The environments have gained a few features, with which they can be customized, too (see \ref{sssec:rxn_optionen}, \ref{sssec:rxnscheme_optionen} and \ref{ssec:setrcndist}). -Last but not least since \mCversion\ \mC underlies LPPL version 1.3 or later. +Last but not least since v1.2 \mC underlies LPPL version 1.3 or later. + +\subsubsection{Version 1.3} +\NEU% +The commands \lstinline+\branch+, \lstinline+\mesomeric+, \lstinline+\reactand+ and \lstinline+\transition+ now cannot only accept alignment as optional argument but \TikZ keys as well. Also the second mandatory Argument \lstinline+<anchor>+ now is an optional one. So the first argument still is alignment, the second is the anchor name and in the third you can use arbitrary \TikZ keys. +\begin{Verbatim} + \command[<alignment>,<anchor>,<tikz>]{} +\end{Verbatim} +Version 1.2 explicitly needed a given alignment, if one wanted to use \TikZ keys, even with default alignment. Since \mCversion\ this isn't required any more. +\begin{Verbatim} + % up to version 1.2: + \reactand{\ce{Br2}}{}\arrow{$h\nu$}{}\reactand!![right,draw,inner sep=5pt]!!{\ce{2 \lewis{0.,Br}}}{} + % since version 1.3: + \reactand{\ce{Br2}}\arrow{$h\nu$}{}\reactand!![,,draw,inner sep=5pt]!!{\ce{2 \lewis{0.,Br}}} +\end{Verbatim} +The commands to customize \mC have been renamed and the command\linebreak\lstinline+\mCsetup+ has been added. Now you can customize \mC using only one command. See \ref{ssec:setarrowlength}, \ref{ssec:setatomsize}, \ref{ssec:setbondlength}, \ref{ssec:setbondshape} and \ref{ssec:mCsetup}. + +There is the new command \lstinline+\chemand+, which produces a $+$, see \ref{ssec:chemand}. + +If you're using \CF v0.4, \mC inputs the file \lstinline+bondwith.tex+ which provides the command \lstinline+\setbondwidth{<width>}+ with which you can change the line thickness of bonds. + +And you might find this one nice: every \mC command in a listing is a hyperlink referring to the corresponding entry in the command reference. \subsection{Licence} \mC \mCversion\ underlies the The LaTeX project public license\\(\url{http://www.latex-project.org/lppl.txt}). @@ -304,35 +365,37 @@ In order to function properly \mC needs some packages to be available. \item[ifthen] for internal queries; \item[calc] for internal calculations; \item[xkeyval] package options and command keys are created with this package; - \item[float] the \verb=rxnscheme= environment is defined with this package; - \item[pgf/\TikZ] pgf actually isn't just one package but a whole bundle. They are the basis layer for \TikZ. \mC needs at least the version from 09/08/2011\footnote{\url{http://sourceforge.net/projects/pgf/files/}}. More precisely: the command \verb=\pgfpositionnodelater= must exist. + \item[float] the \lstinline=rxnscheme= environment is defined with this package; + \item[pgf/\TikZ] pgf actually isn't just one package but a whole bundle. They are the basis layer for \TikZ. \mC needs at least the version from 09/08/2010\footnote{\url{http://sourceforge.net/projects/pgf/files/}}. More precisely: the command \lstinline=\pgfpositionnodelater= must exist. Even more precisely: only the \lstinline+\arrow+ key \lstinline+both+ (see \ref{ssec:arrow}) needs \lstinline=\pgfpositionnodelater=. If you don't use this option, \mC should work nicely with pgf v2.00. Older versions have not been tested. \end{description} \subsection{The Idea} Since \CF was published August 2010, there is a flexible solution for creating organic structures. With \CF and `mhchem' one is able to create nearly all structural and molecular formulars that a chemist needs. There is one thing, though, in which `ochem' still beats \CF: creating reaction mechanisms. This is where \mC comes in. + \mC loads the packages \begin{itemize} - \item \CF\footnote{by Christian Tellechea, \url{http://www.ctan.org/tex-archive/macros/latex/contrib/chemfig/}}, + \item \CF\footnote{by Christian Tellechea, \url{http://www.ctan.org/tex-archive/macros/generic/chemfig/}}, \item `mhchem'\footnote{by Martin Hensel, \url{http://www.ctan.org/tex-archive/macros/latex/contrib/mhchem/}} in version 3, when ist exists, - \item `chemexec'\footnote{by me, \url{http://www.niederberger-berlin.net/downloads/?did=1}}, when it exists, and + \item `chemexec'\footnote{by me, \url{http://www.ctan.org/tex-archive/macros/latex/contrib/chemexec/}}, when it exists, and \item `chemcompounds'\footnote{by Stephan Schenk, \url{http://www.ctan.org/tex-archive/macros/latex/contrib/chemcompounds/}}, when ist exists. \end{itemize} -How these packages work, you can read in their documentation. Commands provided by these packages are for example +How these packages work, you can read in their documentations. Commands provided by these packages are for example \begin{itemize} - \item \verb=\ce{}= (mhchem) - \item \verb=\ox{}{}=, \verb=\om[]=, \verb=\op[]=, \verb=\Hyd=, \verb=\Hpl= (chemexec) - \item \verb=\chemfig[][]{}=, \verb=\chemrel[]{}=, \verb=\chemsign[]{}=, \verb=\lewis{}= (\CF) - \item \verb=\declarecompound[]{}=, \verb=\compound{}= (chemcompounds). + \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} Some of these commands are used in the examples of this documentation \textit{without being mentioned explicitly}. + Above all, \mC provides commands for creating reaction mechanisms. \section{Usage} \subsection{Background} -\mC provides two environments within which the mechanisms are created. Both environments basically are `tikzpicture'-environments. One might ask oneself: why? You can do loads of stuff with \CF already. And \TikZ provides all the possibilities one could ask for. But since I'm a lazy guy I wrote several macros providing \TikZ commands, I often used. They got so many and got more and more possibilities to adjust, that I bundled them into this package. Of course you can still use \TikZ and stay more flexible with it, if you like. +\mC provides two environments within which the mechanisms are created. Both environments basically are \lstinline+tikzpicture+ environments. One might ask oneself: why? You can do loads of stuff with \CF already. And \TikZ provides all the possibilities one could ask for. But since I'm a lazy guy I wrote several macros providing \TikZ commands, I often used. They got so many and got more and more possibilities to adjust, that I bundled them into this package. Of course you can still use \TikZ and stay more flexible with it, if you like. \subsection{Basic Principle} -Within the `tikzpicture' reactands and arrows are placed as nodes on a `chain'\footnote{Provided by the tikzlibrary `chains'}. +Within the \lstinline+tikzpicture+ reactands and arrows are placed as nodes on a \lstinline+chain+\footnote{Provided by the tikzlibrary `chains'}. \begin{SideBySideExample} \begin{tikzpicture}[start chain] \node [on chain] {A}; @@ -368,73 +431,76 @@ Above all \mC uses the possibility of creating branches to the chain. \end{SideBySideExample} You don't have to understand that mechanism in detail, but you should remember the placement commands in the last example, because \mC uses them in the same way. +In some of the examples in this documentation the nodes are boxed with a coloured frame (see \ref{ssec:makevisible}). This is done so one can see, which size they have and which impact changes of the alignment have on them. + \subsection{How does it work?} \subsubsection{Basic Commands} Let's take a look at an example first: \begin{SideBySideExample} \begin{rxn} - \reactand{ \chemfig{-[::30]-[::-60]OH} }{} + \reactand{ \chemfig{-[::30]-[::-60]OH} } \arrow{Ox.}{} - \reactand{ \chemfig{-[::30]=_[::-60]O} }{} + \reactand{ \chemfig{-[::30]=_[::-60]O} } \end{rxn} \end{SideBySideExample} In this example you see the most important commands of \mC: \begin{description} - \vitem=\begin{rxn}[<keys>]= The first of two environments. It creates a centered reaction scheme between to paragraphs (see \ref{ssec:rxn}). - \vitem=\reactand[<alignment>]{<formela>}{<anchor>}= places a `node' on the `chain', in\linebreak which the chemical formul\ae\ are written. The default placement is to the \verb=right= (see \ref{ssec:reactand}). - \vitem=\arrow[<keys>]{<above>}{<below>}= creates an arrow, which by default has the length \unit{5}\emlength\ pointing to the right (see \ref{ssec:arrow}). + \vitem=\begin{rxn}[<keys>]= The first of two environments. It creates a centered reaction scheme between two paragraphs (see \ref{ssec:rxn}). + \vitem=\reactand[<alignment>,<anchor>,<tikz>]{<formula>}= places a \lstinline+node+ on the \lstinline+chain+, in which the chemical formul\ae\ are written. The default alignment is to the \lstinline=right= (see \ref{ssec:reactand}). + \vitem=\arrow[<keys>]{<above>}{<below>}= creates an arrow, which by default has a length of \SI{5}{\emlength} pointing to the right (see \ref{ssec:arrow}). \end{description} \begin{SideBySideExample} \begin{rxn} - \reactand{ \chemfig{-[::30]=_[::-60]O} }{} + \reactand{ \chemfig{-[::30]=_[::-60]O} } \arrow[direction=below]{}{Ox.} - \reactand[below]{ \chemfig{-[::30](-[::60]OH)=_[::-60]O} }{} + \reactand[below]{ \chemfig{-[::30](-[::60]OH)=_[::-60]O} } \end{rxn} \end{SideBySideExample} -As you can see one can align the reaction scheme vertical as well. By giving \verb=\reactand= the option \verb=below=, the carbonic acid is placed below the arrow. With the key \verb+direction=below+ the arrow points down instead to the right. +As you can see one can align the reaction scheme vertical as well. By giving \lstinline=\reactand= the option \lstinline=below=, the carbonic acid is placed below the arrow. With \lstinline+direction=below+ the arrow points down instead to the right. \subsubsection{Branches} With what we saw until now it is not yet clear, why one would use \mC. the horizontal reaction schemes can be realized with \CF and `mhchem' just as well. And why would anyone need a vertical reaction scheme? But what could make \mC interesting is the possibility of branched reaction schemes. \begin{Example} \begin{rxn} - \reactand{ \chemfig{-[::30]-[::-60]OH} }{} + \reactand{ \chemfig{-[::30]-[::-60]OH} } \arrow{}{} - \reactand{ \chemfig{-[::30]=_[::-60]O} }{carbonyl} + \reactand[,carbonyl]{ \chemfig{-[::30]=_[::-60]O} } \arrow[direction=below]{}{} - \reactand[below]{ \chemfig{-[::30](-[::60]OH)=_[::-60]O} }{} + \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} }{} - }{} + \reactand{ \chemfig{-[::30]=_[::-60]N(-[6]H)-[::60]R} } + } \end{rxn} \end{Example} In the last example you've got to know another important command: \begin{description} - \vitem=\branch[<alignment>]{<branch commands>}{<anchor>}=\ + \vitem=\branch[<alignment>,<anchor>,<tikz>]{<branch commands>}= (see \ref{ssec:branch}) \end{description} -The branch was placed right of the first reactand with the anchor \verb=carbonyl= by using the option \verb+right=of carbonyl+. Inside the branch we used an arrow with the key \verb+type={<=>}+ so we would get an equilibrium arrow. Other types would for example be \verb=->= (default), \verb=<-= or \verb=<->=.\\ -Extensive reaction schemes can be realized through multiple usage ao \verb=\branch=: +The branch was placed right of the first reactand with the anchor \lstinline=carbonyl= by using the option \lstinline+right=of carbonyl+. Inside the branch we used an arrow with the key \lstinline+type={<=>}+ so we would get an equilibrium arrow. Other types would for example be \lstinline=->= (default), \lstinline=<-= or \lstinline=<->=. + +Extensive reaction schemes can be realized through multiple usage of \lstinline=\branch=: \begin{Example} \begin{rxn} - \reactand{ \chemfig{-[::30]-[::-60]OH} }{} + \reactand{ \chemfig{-[::30]-[::-60]OH} } \arrow{}{} - \reactand{ \chemfig{-[::30]=_[::-60]O} }{carbonyl} + \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} }{} - }{imin} - \branch[below right=of carbonyl]{ - \arrow[type={<=>},direction=below right]{ \chemfig{[,.75]-[::30]-[::-60]OH} }{} - \reactand[below right]{ \chemfig{-[::30](-[::60]O-[::-60]-[::-60])-[::-60]OH} }{} - }{halbacetal} - \branch[above=of carbonyl,xshift=5.75em]{ + \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} }{} + \reactand[above]{ \chemfig{-[::30](-[::60]OH)-[::-60]-[::60]=[::60]O} } \arrow{$-\ce{H2O}$}{} - \reactand{ \chemfig{-[::30]=[::-60]-[::60]=[::60]O} }{} - }{aldol} + \reactand{ \chemfig{-[::30]=[::-60]-[::60]=[::60]O} } + } \end{rxn} \end{Example} @@ -442,9 +508,9 @@ Extensive reaction schemes can be realized through multiple usage ao \verb=\bran The second environment provided by \mC works just as the first one. This time the scheme is placed within a numbered floating environment and is given a caption. \begin{Example} \begin{rxnscheme}{Keto-enol tautomerization} - \reactand{ \chemfig{=[::30]-[::-60]OH} }{} + \reactand{ \chemfig{=[::30]-[::-60]OH} } \arrow[type={<=>}]{}{} - \reactand{ \chemfig{-[::30]=[::-60]O} }{} + \reactand{ \chemfig{-[::30]=[::-60]O} } \end{rxnscheme} \end{Example} Here we use the environment @@ -453,7 +519,7 @@ Here we use the environment ... \end{rxnscheme} \end{Verbatim} -In the command reference (\ref{ssec:rxnscheme}) you can read how you can customize. +In the command reference (\ref{ssec:rxnscheme}) you can read how to customize the scheme. \subsection{Predefined Values} There are some predefined values, that are basically due to my personal taste. But of course you can change them according to your requirements. For \CF-formul\ae\ \emph{inside of \mC environments} some values are predefined as follows: @@ -464,40 +530,40 @@ There are some predefined values, that are basically due to my personal taste. B Outside the \mC environments the defaults of \CF still are set. \begin{SideBySideExample} \begin{rxn} - \reactand{\chemfig{**6(------)}}{} + \reactand{\chemfig{**6(------)}} \end{rxn} \chemfig{**6(------)} \end{SideBySideExample} \mC's defaults can be changed with these commands: \begin{Verbatim} - \bondlength{<length>} - \bondshape{<base length>}{<dash thickness>}{<dash spacing>} - \atomsize{<font size>} + \setbondlength{<length>} + \setbondshape{<base length>}{<dash thickness>}{<dash spacing>} + \setatomsize{<font size>} \end{Verbatim} -With these commands, the parameters are changed \emph{for all following} \mC environments. If you leave the arguments empty, default values are restored. Default for \verb=\atomsize= is \verb=\small=. -\begin{SideBySideExample} - \bondlength{2.1em}\bondshape{5pt}{1pt}{2pt}\atomsize{\Large} +With these commands, the parameters are changed \emph{for all following} \mC environments. If you leave the arguments empty, default values are restored. Default for \lstinline=\setatomsize= is \lstinline=\small=. +\begin{Example} + \setbondlength{2.1em}\setbondshape{5pt}{1pt}{2pt}\setatomsize{\Large} \begin{rxn} - \reactand{\chemfig{-[::30](<[::60])-[::-60](<:[::-60])-[::60]}}{} + \reactand{\chemfig{-[::30](<[::60])-[::-60](<:[::-60])-[::60]}} \end{rxn} - \bondlength{}\bondshape{}{}{}\atomsize{} + \setbondlength{}\setbondshape{}{}{}\setatomsize{} \begin{rxn} - \reactand{\chemfig{-[::30](<[::60])-[::-60](<:[::-60])-[::60]}}{} + \reactand{\chemfig{-[::30](<[::60])-[::-60](<:[::-60])-[::60]}} \end{rxn} -\end{SideBySideExample} +\end{Example} If you only want to change the parameters of a single environment you can use \CF's commands and \LaTeX's fontsize commands \emph{inside the environment}. -\begin{SideBySideExample} +\begin{Example} \begin{rxn} \setatomsep{2.1em}\setcrambond{5pt}{1pt}{2pt}\Large - \reactand{\chemfig{-[::30](<[::60])-[::-60](<:[::-60])-[::60]}}{} + \reactand{\chemfig{-[::30](<[::60])-[::-60](<:[::-60])-[::60]}} \end{rxn} \begin{rxn} - \reactand{\chemfig{-[::30](<[::60])-[::-60](<:[::-60])-[::60]}}{} + \reactand{\chemfig{-[::30](<[::60])-[::-60](<:[::-60])-[::60]}} \end{rxn} -\end{SideBySideExample} -The default length of an arrow is \unit{5}\emlength\ or $\unit{5\sqrt{2}}\emlength$ if it's a diagonal one. You can change that by using the following command: +\end{Example} +The default length of an arrow is \SI{5}{\emlength} or $5\sqrt2\,\si{\emlength}$ if it's a diagonal one. You can change that by using the following command: \begin{Verbatim} - \arrowlength{<length>} + \setarrowlength{<length>} \end{Verbatim} \SaveVerb{arrowlength}=<length>=% Then the values are \UseVerb{arrowlength} or $\text{\UseVerb{arrowlength}}\cdot\sqrt{2}$ respectively. @@ -505,72 +571,151 @@ Then the values are \UseVerb{arrowlength} or $\text{\UseVerb{arrowlength}}\cdot\ \subsection{Package options}\label{ssec:paketoptionen} \mC has a number of package options. \begin{description} - \vitem+english+ With this option, \mC loads the english version of `chemexec', if the package isn't loaded separately before. The name of the \verb=rxnscheme= environment (see \ref{ssec:rxnscheme}) is changed into "Reaction scheme". - \vitem+placement=<position>+ The default placement behaviour of the \verb=rxnscheme= environment is changed to \verb=<position>=. - \vitem+color=<colour>+ This loads `chemexec' with the options \verb=color<colour>= \&\ \verb+shade=true+. - \vitem+nocolor+ `chemexec' is loaded without colour and with the option \verb+shade=false+ (default behaviour of \mC). - \vitem+shade+ loads `chemexec' with the \verb+shade=true+ option. + \vitem+chemstyle+\settowidth{\tmplength}{\tt chemstyle}\Vii[\tmplength]load the `chemstyle' package, without conflicts with \mC. + \vitem+color=<colour>+ This loads `chemexec' with the options \lstinline=color<colour>= \&\ \lstinline+shade=true+. + \vitem+english+ With this option, \mC loads the english version of `chemexec', if the package isn't loaded separately before. The name of the \lstinline=rxnscheme= environment (see \ref{ssec:rxnscheme}) is changed into "Reaction scheme". \vitem+nochemexec+ prevent \mC from loading `chemexec'. - \vitem+nocompounds+\settowidth{\tmplength}{\tt nocompounds}\NEU[\tmplength]prevent \mC from loading `chemcompounds'. - \vitem+nomhchem+\settowidth{\tmplength}{\tt nomhchem}\NEU[\tmplength]prevent \mC from loading `mhchem' lädt, if `chemexec' isn't loaded either. - \vitem+chemstyle+\settowidth{\tmplength}{\tt chemstyle}\NEU[\tmplength]load the `chemstyle' package, without conflicts with \mC. - \vitem+nopackages+\settowidth{\tmplength}{\tt nopackages}\NEU[\tmplength]prevent \mC from loading \emph{any} package (except \CF)\footnote{apart from the ones \mC needs to function (like \TikZ etc.).}. + \vitem+nocolor+ `chemexec' is loaded without colour and with the option \lstinline+shade=false+ (default behaviour of \mC). + \vitem+nocompounds+\settowidth{\tmplength}{\tt nocompounds}\Vii[\tmplength]prevent \mC from loading `chemcompounds'. + \vitem+nomhchem+\settowidth{\tmplength}{\tt nomhchem}\Vii[\tmplength]prevent \mC from loading `mhchem' lädt, if `chemexec' isn't loaded either. + \vitem+nopackages+\settowidth{\tmplength}{\tt nopackages}\Vii[\tmplength]prevent \mC from loading \emph{any} package (except \CF)\footnote{apart from the ones \mC needs to function (like \TikZ etc.).}. + \vitem+placement=<position>+ The default placement behaviour of the \lstinline=rxnscheme= environment is changed to \lstinline=<position>=. + \vitem+shade+ loads `chemexec' with the \lstinline+shade=true+ option. \end{description} \section{Advanced Usage, Usage with \TikZ} Most of the commands allow alignment with \TikZ code. Using \TikZ code you have much more possibilities aligning reactands relatively to one another. If you are familiar with \TikZ you have even more flexibility, of course (see \ref{ssec:tikzsynthese}). + +\subsection{The Alignment Question} +Since reactands, arrows and branches are aligned centered to the referred object, the default alignment not always produces nice results. +\begin{Example} + \makevisible + \begin{rxn} + \reactand{ \chemname{\chemfig{*6(-=-=-=)}}{benzene \compound{benzene}} } + \arrow{}{} + \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{bromobenzene \compound{bromobenzene}} } + \end{rxn} +\end{Example} +As you can see, both reactands are not aligned equally to the arrow, as far as the benzene ring is concerned. The first reactand seems to be too shifted up. Trying to solve this with \TikZ code fails: +\begin{Example} + \makevisible + \begin{rxn} + \reactand[,,yshift=-1em]{ \chemname{\chemfig{*6(-=-=-=)}}{benzene \compound{benzene}} } + \arrow{}{} + \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{bromobenzene \compound{bromobenzene}} } + \end{rxn} +\end{Example} +This is, because the first reactand is shifted with the respect to the object it refers to. Since it is the first object on the chain itself, it isn't shifted at all. The following arrow always is centered to the object before. +\begin{SideBySideExample} + \makevisible + \begin{rxn} + \reactand{A} + \chemand + \reactand[,,yshift=1em]{B} + \arrow{}{} + \end{rxn} +\end{SideBySideExample} +Since there is no possibility to change the alignment of the arrow itself (yet), what you can do is put it inside a branch. +\begin{Example} + \makevisible + \begin{rxn} + \reactand{A} + \chemand + \reactand[,,yshift=1em]{B} + \branch[,,yshift=-1em]{\arrow{}{}} + \end{rxn} + \begin{rxn} + \reactand{ \chemname{\chemfig{*6(-=-=-=)}}{benzene \compound{benzene}} } + \branch[,,yshift=1em]{\arrow{}{}} + \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{bromobenzene \compound{bromobenzene}} } + \end{rxn} +\end{Example} +For the last example this isn't the best solution, though, because exact alignment needs lots of tries until you get the required result. There is another solution: an invisible bromine to the first benzene. +\begin{Example} + \makevisible + \begin{rxn} + \reactand{ \chemname{\chemfig{*6(-=-=(-[,,,,draw=none]\phantom{Br})-=)}}{benzene \compound{benzene}} } + \arrow{}{} + \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{bromobenzene \compound{bromobenzene}} } + \end{rxn} +\end{Example} +In other cases, \TikZ code can successfully be used: +\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 groups at the same height: + \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} +I'm afraid that in many cases you'll have to play with \lstinline+xshift+ and \lstinline+yshift+, until the scheme looks like you want. Maybe further versions of \mC will provide a more user friendly alignment syntax. + +\subsection{Using \TikZ to Achieve Other Results} +You could, just for fun?, change the looks of a molecule with \TikZ. \begin{SideBySideExample} \begin{rxn} - \reactand[right,->,green!45!blue!55]{ \chemfig{*6(---(-)---)} }{} + \reactand[,,->,green!45!blue!55]{ \chemfig{*6(---(-)---)} } \end{rxn} \chemfig[->,green!45!blue!55]{*6(---(-)---)} \end{SideBySideExample} The last example is not very good, of course, since you can achieve the same result using \CF's own possibilities. But other cases are imaginable: \begin{Example} - \newcommand{\emptyreactand}{\reactand[right,minimum width=5em]{ \rule[-1em]{1em}{.5pt}\;\rule[-1em]{3em}{.5pt} }{}} + \newcommand{\emptyreactand}{\reactand[,minimum width=5em]{ \rule[-1em]{1em}{.5pt}\;\rule[-1em]{3em}{.5pt} }{}} \newcommand{\stoich}{\rule[-3pt]{1em}{.5pt}} \begin{rxn} - \reactand{\bf\Large Ionic compounds (I)}{} - \reactand[below,yshift=1em]{Fill in the missing parts}{a} - \branch[below=of a]{ \reactand[right,minimum width=5em]{ \stoich\ Na }{}\reactand{$+$}{} \emptyreactand \arrow{}{} \emptyreactand \reactand{$+$}{} \emptyreactand }{b} - \branch[below=of b,draw,inner sep=3pt]{\reactand[right,minimum width=5em]{}{}\reactand{$+$}{}\reactand[right,minimum width=5em]{}{}\arrow{}{}\reactand[right,minimum width=5em]{Sodium chloride $+$ Hydrogen}{}}{} + \reactand{\bf\Large Ionic compounds (I)} + \reactand[below,a,yshift=1em]{Fill in the missing parts} + \branch[below=of a,b]{ \reactand[,,minimum width=5em]{ \stoich\ Na }\chemand \emptyreactand \arrow{}{} \emptyreactand \chemand \emptyreactand } + \branch[below=of b,,draw,inner sep=3pt]{\reactand[,,minimum width=5em]{}\chemand\reactand[,,minimum width=5em]{}\arrow{}{}\reactand[,,minimum width=5em]{Sodium chloride $+$ Hydrogen}} \end{rxn} \end{Example} \section{Alphabetical Command Reference} -In the following section every command is explained. In some of the examples the nodes (in the \TikZ sense), within which the reactands and arrows are set, are emphasized. This is done by giving them are coloured frame through using the command \verb=\makevisible=, see \ref{ssec:makevisible}. +In the following section every command is explained. + \subsection{arrow}\label{ssec:arrow} -Reaction arrows are created with \verb=\arrow=. +Reaction arrows are created with \lstinline=\arrow=. \begin{Verbatim} \arrow[<keys>]{<above>}{<below>} \end{Verbatim} -There are several keys to customize the arrows. They are used like \verb+key=value+. +There are several keys to customize the arrows. They are used like \lstinline+key=value+. \begin{description} \vitem+direction=<direction>+ -- possible values are: \begin{rxn} - \arrowlength{2.5em} + \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}{}}{} + \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=<type>+ -- possible values are: \begin{rxn} \dummy[a] - \branch[below=of a,yshift=1em]{\arrow{}{}\reactand{\ttfamily type=\{-\textgreater\}}{}}{b} - \branch[below=of b,yshift=1em]{\arrow[type={<-}]{}{}\reactand{\ttfamily type=\{\textless-\}}{}}{c} - \branch[below=of c,xshift=.5em,yshift=1em]{\arrow[type={<->}]{}{}\reactand{\ttfamily type=\{\textless-\textgreater\}}{}}{d} - \branch[below=of d,yshift=1em]{\arrow[type={<=>}]{}{}\reactand{\ttfamily type=\{\textless=\textgreater\}}{}}{e} - \branch[below=of e,yshift=1em]{\arrow[type={-|>}]{}{}\reactand{\ttfamily type=\{-\textbar\textgreater\}}{}}{} + \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=<factor>+ -- the length (\unit{5.0}\emlength, factor = $1.0$, default) is multiplied with this factor. +\vitem+length=<factor>+ -- the length (\SI{5.0}{\emlength}, factor = $1.0$, default) is multiplied with this factor. \vitem+name=<anchor>+ -- this anchor can be used to refer to the arrow, \eg with a branch. -\vitem+both+\settowidth{\tmplength}{\tt both}\NEU[\tmplength]-- this gives both arrow argument nodes the same width and height. +\vitem+both+\settowidth{\tmplength}{\tt both}\Vii[\tmplength]-- this gives both arrow argument nodes the same width and height. \end{description} \begin{SideBySideExample} \begin{rxn} @@ -592,201 +737,217 @@ There are several keys to customize the arrows. They are used like \verb+key=val Most keys in action: \begin{SideBySideExample} \begin{rxn} - \reactand{A}{} + \reactand{A} \arrow[name=arrow_a]{B}{} - \branch[above=of arrow_a,yshift=-4em]{ + \branch[above=of arrow_a,,yshift=-4em]{ \arrow[type=<-,direction=above,length=.7]{}{} - \reactand[above]{D}{} - }{} - \reactand{C}{} + \reactand[above]{D} + } + \reactand{C} \end{rxn} \end{SideBySideExample} If an arrow is placed inside a branch (see \ref{ssec:branch}) the alignment of the branch possibly is determined by the width and height of the arrow arguments. If these arguments have different sizes, the alignment can go wrong. \begin{SideBySideExample} \makevisible \begin{rxn} - \reactand{A}{a} + \reactand[,a]{A} \arrow{}{} \branch[below=of a]{ \arrow[direction=below]{\chemfig{-[::30]-[::-60]OH}}{} - }{} + } \end{rxn} \makeinvisible \end{SideBySideExample} -By using the key \verb=both=, both argument nodes have the same size, which can correct the alignment. +By using the key \lstinline=both=, both argument nodes have the same size, which can correct the alignment. \begin{SideBySideExample} \makevisible \begin{rxn} - \reactand{A}{a} + \reactand[,a]{A} \arrow{}{} \branch[below=of a]{ \arrow[direction=below,both]{\chemfig{-[::30]-[::-60]OH}}{} - }{} + } \end{rxn} \makeinvisible \end{SideBySideExample} There is more about the alignment problem in \ref{sssec:branch_ausrichtung}. -\subsection{arrowlength} -The default length of an reaction arrow is \unit{5.0}\emlength\ or $\unit{5.0\cdot\sqrt{2}}\emlength$ for the diagonal ones. You can change these values using -\begin{Verbatim} - \arrowlength{<length>} -\end{Verbatim} -into \UseVerb{arrowlength} or $\text{\UseVerb{arrowlength}}\cdot\sqrt{2}$, respectively. Mind the fact that you have to use a length unit. - -\subsection{atomsize} -With -\begin{Verbatim} - \atomsize{<font size>} -\end{Verbatim} -you can change the font size of the atom groups. Default value is \verb=\small=. - -\subsection{bondlength} -With -\begin{Verbatim} - \bondlength{<length>} -\end{Verbatim} -you can change \verb=\setatomsep{<length>}= for all \CF formul\ae\ \emph{inside} of the\\ -\mC environments. Default value is \unit{1.8}\emlength. - -\subsection{bondshape} -With -\begin{Verbatim} - \bondshape{<base length>}{<dash thickness>}{<dash spacing>} -\end{Verbatim} -you can change \verb=\setcrambond{<base length>}{<dash thickness>}{<dash spacing>}= for all \CF formul\ae\ \emph{inside} of the \mC environments. Default values are (in this order) \unit{3}\pt, \unit{.5}\pt\ and \unit{1}\pt. - \subsection{branch}\label{ssec:branch} -\verb=\branch= is used to, well, create a branch to a reaction. +\NEU\lstinline=\branch= is used to, well, create a branch to a reaction. \textbf{If you used earlier versions of \mC please be aware, that the command syntax has changed.} \begin{Verbatim} - \branch[<alignment>]{<branch code>}{<anchor>} + \branch[<alignment>,<anchor>,<tikz>]{<branch code>} \end{Verbatim} -For \verb=\branch= alignment an anchor is important. Let's take a look at an example: +For \lstinline=\branch= alignment an anchor is important. Let's take a look at an example: \begin{Example} \begin{rxn} - \reactand{\chemfig{-[::30]=[::-60](-[::-60])-[::60]}}{start} + \reactand[,start]{\chemfig{-[::30]=_[::-60](-[::-60])-[::60]}} \arrow[length=.75]{\ce{HCl}}{} - \reactand{\chemfig{-[::30]-[::-60](-[::120]Cl)(-[::-60])-[::60]}}{} - \reactand{\chemsign+\chemfig{-[::30](-[::60]Cl)-[::-60](-[::-60])-[::60]}}{} + \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]}}{} - \reactand{\chemsign+\chemfig{-[::30](-[::60]OH)-[::-60](-[::-60])-[::60]}}{} - }{} + \reactand[below right]{\chemfig{-[::30]-[::-60](-[::120]OH)(-[::-60])-[::60]}} + \chemand + \reactand{\chemfig{-[::30](-[::60]OH)-[::-60](-[::-60])-[::60]}} + } \end{rxn} \end{Example} -The first reactand got the anchor \texttt{start} (line 2, also see \ref{ssec:reactand}). +The first reactand got the anchor \lstinline+start+ (line 2, also see \ref{ssec:reactand}). \begin{Verbatim}[firstnumber=2] - \reactand{ ... }{!!start!!} + \reactand[,!!start!!]{ ... } \end{Verbatim} -\verb=\branch= now refers to it in its alignment (line 6): +\lstinline=\branch= now refers to it in its alignment (line 6): \begin{Verbatim}[firstnumber=6] - \branch[below right!!=of start!!]{ ... }{} + \branch[below right!!=of start!!]{ ... } \end{Verbatim} -If you don't use the alignment reference to an anchor, you automatically refer to the last \verb=\reactand= or \verb=\arrow=. If you don't use alignment at all, then the branch is aligned to the right of the last \verb=\reactand= or \verb=\arrow=. +If you don't use the alignment reference to an anchor, you automatically refer to the last \lstinline=\reactand= or \lstinline=\arrow=. If you don't use alignment at all, then the branch is aligned to the right of the last \lstinline=\reactand= or \lstinline=\arrow=. \begin{SideBySideExample} \begin{rxn} - \reactand{ \chemfig{CH_2=CH-OH} }{} + \reactand{ \chemfig{CH_2=CH-OH} } \arrow[type={<=>},length=.5]{}{} - \branch{ \reactand{ \chemfig{CH_3-CH=O} }{} }{} + \branch{ \reactand{ \chemfig{CH_3-CH=O} } } \end{rxn} \end{SideBySideExample} -%Using \TikZ code you have far more possibilities: -%\begin{SideBySideExample} -% \begin{rxn} -% \reactand{reactand}{reactand} -% \branch[right,xshift=2.2em,yshift=.8em,rotate=-20]{ -% \arrow{}{} -% \reactand[right,rotate=20]{product}{product} -% }{} -% \end{rxn} -%\end{SideBySideExample} +You have several options for alignment: you can either put the \lstinline+\branch+ on a \lstinline+chain+ or place it relative to a object. +\begin{description} + \vitem+chain+ In this case you use: \lstinline+on chain=going <value>+. + \item[relative] In this case you use: \lstinline+<value>=of <anchor>+. +\end{description} +As possible \lstinline+<value>+ you have the same choices as for \lstinline+\reactand+, see \ref{ssec:reactand}. Default is \lstinline+on chain=going right+. \subsubsection{Alignment problems}\label{sssec:branch_ausrichtung} -If an arrow has two arguments with different sizes and is placed inside a branch, the alignment of the branch can go wrong. In this case the \verb=\arrow= key \verb=both= isn't a solution, since the smaller argument then is not placed next to the arrow but is centered in its node. +If an arrow has two arguments with different sizes and is placed inside a branch, the alignment of the branch can go wrong. In this case the \lstinline=\arrow= key \lstinline=both= isn't a solution, since the smaller argument then is not placed next to the arrow but is centered in its node. \begin{SideBySideExample} \makevisible \begin{rxn} - \reactand{A}{a} + \reactand[,a]{A} \arrow{}{} \branch[below=of a]{ \arrow[direction=below,both]{\chemfig{-[::30]-[::-60]OH}}{\Hpl} - }{} + } \end{rxn} \makeinvisible \end{SideBySideExample} -What you have to do is shift the branch using the \TikZ keys \verb=xshift= and \verb=yshift=. +What you have to do is shift the branch using the \TikZ keys \lstinline=xshift= and \lstinline=yshift=. \begin{SideBySideExample} \makevisible \begin{rxn} - \reactand{A}{a} + \reactand[,a]{A} \arrow{}{} - \branch[below=of a,xshift=-1.35em]{ + \branch[below=of a,,xshift=-1.35em]{ \arrow[direction=below]{\chemfig{-[::30]-[::-60]OH}}{\Hpl} - }{} + } \end{rxn} \makeinvisible \end{SideBySideExample} -\subsection{dummy} -\verb=\dummy= creates an empty node. \verb=\arrow= needs to follow after a node, because \verb=\arrow= internally uses \verb=\tikzchainprevious=. If there is no node on the chain \emph{before} \verb=\arrow= is used, it will cause an error. But by using \verb=\dummy= you can start a scheme with an arrow anyway. +\subsection{chemand}\label{ssec:chemand} +\NEU% +The command +\begin{Verbatim} + \chemand[<alignment>,<anchor>,<tikz>] +\end{Verbatim} +produces and places a $+$ in the same way \lstinline+\reactand+ places arbitrary text. +\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} +The optional arguments for \lstinline+\chemand+ and \lstinline+\reactand+ are the same, see \ref{ssec:reactand}. + +\subsection{dummy}\label{ssec:dummy} +\lstinline=\dummy= creates an empty node. \lstinline=\arrow= needs to follow after a node, because \lstinline=\arrow= internally uses \lstinline=\tikzchainprevious=. If there is no node on the chain \emph{before} \lstinline=\arrow= is used, it will cause an error. But by using \lstinline=\dummy= you can start a scheme with an arrow anyway. \begin{SideBySideExample} \begin{rxn} \dummy\arrow{}{} \end{rxn} \end{SideBySideExample} -\subsection{elmove} -\verb=\elmove= just is a shortcut for \CF's \verb=\chemmove=. -\begin{Verbatim} +\subsection{elmove}\label{ssec:elmove} +\lstinline=\elmove= just is a shortcut for \CF's \lstinline=\chemmove=. +\begin{lstlisting}[emphstyle=\normalcolor] \elmove[<tikz>]{<start>}{<start direction>}{<end>}{<end direction>} -\end{Verbatim} +\end{lstlisting} This is expanding the command \begin{Verbatim} \chemmove{\draw[!!<tikz>!!](!!<start>!!).. controls +(!!<start direction>!!) and +(!!<end direction>!!)..(!!<end>!!);} \end{Verbatim} -using \verb?[->,red,shorten <=3pt,shorten >=1pt]? as default for \verb=<tikz>=. How you use \texttt{\textbackslash chem\-move} is described in the documentation for \CF. +using \lstinline?[->,red,shorten <=3pt,shorten >=1pt]? as default for \lstinline=<tikz>=. How you use \lstinline+\chemmove+ is described in the documentation for \CF. -\begin{SideBySideExample} +\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{SideBySideExample} +\end{Example} \subsection{makeinvisible}\label{ssec:makeinvisible} -\NEU% -\verb=\makeinvisible= restores the normal \mC behaviour after \verb=\makevisible= (see \ref{ssec:makevisible}) has been used. \verb=\makeinvisible= only changes the looks of nodes following after it. +\Vii% +\lstinline=\makeinvisible= restores the normal \mC behaviour after \lstinline=\makevisible= (see \ref{ssec:makevisible}) has been used. \lstinline=\makeinvisible= only changes the looks of nodes following after it. \subsection{makevisible}\label{ssec:makevisible} -\NEU% -With \verb=\makevisible= you can visualize the nodes within which reactands, arrows and branches are set. This is useful when you're aligning branches, for example. You can see an example for \verb=\makevisible= in \ref{ssec:arrow}. Every kind of nodes is emphasized with a different colour: +\Vii% +With \lstinline=\makevisible= you can visualize the nodes within which reactands, arrows and branches are set. This is useful when you're aligning branches, for example. You can see an example for \lstinline=\makevisible= in \ref{ssec:arrow}. Every kind of nodes is emphasized with a different colour: \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\{\}\{\}}};. Also see \ref{ssec:makeinvisible}. - \verb=\makevisible= only changes the looks of nodes following after it. + \lstinline=\makevisible= only changes the looks of nodes following after it. \begin{SideBySideExample} \makevisible \begin{rxn} - \reactand{A}{a} + \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} -\verb=\marrow= creates a double-headed arrow. +\lstinline=\marrow= creates a double-headed arrow. \begin{Verbatim} \marrow[<direction>] \end{Verbatim} -It is a shortcut for \verb+\arrow[type=<->,length=.5,direction=<direction>]{}{}+. You can use \verb=<direction>= like the alignment option of \verb=\reactand= (see \ref{ssec:reactand} or \ref{ssec:mesomeric}). +It is a shortcut for \lstinline+\arrow[type=<->,length=.5,direction=<direction>]{}{}+. You can use \lstinline=<direction>= like the alignment option of \lstinline=\reactand= (see \ref{ssec:reactand} or \ref{ssec:mesomeric}). + +\subsection{mCsetup}\label{ssec:mCsetup} +\NEU% +With +\begin{Verbatim} + \mCsetup{<keys>} +\end{Verbatim} +you can fully customize \mC. For each of \mC's commands going like \lstinline+\set<command>+ except \lstinline+\setbondshape+ there is a key \lstinline+<command>=<value>+. Additionally there is the key \lstinline+align=<value>+, with which you can change the alignment behaviour of both \lstinline+rxn+ and \lstinline+rxnscheme+, and the key \lstinline+reset+, with whith all values are reset to default. +\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} -\verb=\merge= cannot only be used in \mC's environments but also in a `tikzpicture'. With \verb=\merge= you can, well, two branches into one. To be able to do that, you need to refer to anchors. +\lstinline=\merge= cannot only be used in \mC's environments but also in a `tikzpicture'. With \lstinline=\merge= you can, well, two branches into one. To be able to do that, you need to refer to anchors. \begin{Verbatim} \merge[<key>]{<target>}{<start a>}{<start b>} \end{Verbatim} @@ -809,162 +970,164 @@ It is a shortcut for \verb+\arrow[type=<->,length=.5,direction=<direction>]{}{}+ \end{tikzpicture} \end{center} \end{SideBySideExample} -Usage of \verb=\merge= in a \mC environment: +Usage of \lstinline=\merge= in a \mC environment: \begin{Example} \begin{rxn} \setatomsep{1em}\tiny % branch 1 - \reactand{ \chemfig{Cl-[:30,1.5]--[:-30,1.5]O-[:30,1.5]--[:-30,1.5]Cl}{} }{above} + \reactand[,above]{ \chemfig{Cl-[:30,1.5]--[:-30,1.5]O-[:30,1.5]--[:-30,1.5]Cl}{} } \arrow[length=.5]{}{} - \reactand{ \chemfig{O(-[:-150]**6(-----(-OH)-))-[:90]-[:30]-[:-30]O-[:30]-[:-30]-[:-90]O-[:-30]**6(-(-HO)-----)} }{start_above} + \reactand[,start_above]{ \chemfig{O(-[:-150]**6(-----(-OH)-))-[:90]-[:30]-[:-30]O-[:30]-[:-30]-[:-90]O-[:-30]**6(-(-HO)-----)} } % branch 2 - \branch[below=of above,xshift=8em,yshift=-4em]{ - \reactand{ \chemfig{**6((--[6,,,2]HO)-N-(--[6]OH)----)} }{} + \branch[below=of above,start_below,xshift=8em,yshift=-4em]{ + \reactand{ \chemfig{**6((--[6,,,2]HO)-N-(--[6]OH)----)} } \arrow[length=.5]{}{} - \reactand{ \chemfig{**6((--[6]Br)-N-(--[6]Br)----)} }{} - }{start_below} + \reactand{ \chemfig{**6((--[6]Br)-N-(--[6]Br)----)} } + } % target - \branch[right=of start_above,xshift=5em,yshift=-4em]{ - \reactand{ \chemfig{O(-[:-150]**6(-----(-O?)-))-[:90]-[:30]**6(-N-(--[:-90]O-[:-30]**6(-(-O-[6]-[:-150]-[:150]O-[:-150]-[:150]?)-----))----)} }{c} - }{target} + \branch[right=of start_above,target,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]?)-----))----)} } + } % merging: \merge[direction=right]{target}{start_above}{start_below} \end{rxn} \end{Example} -Please note, that you should use branches to refer to, when you use \verb=\merge= in a \mC environment. Using \verb=\merge= may afford playing with xshift and yshift until you get the result you want. +Please note, that you should use branches to refer to, when you use \lstinline=\merge= in a \mC environment. Using \lstinline=\merge= may afford playing with xshift and yshift until you get the result you want. \begin{Example} \begin{rxn} \setatomsep{1.5em} - \reactand{ \chemname{\chemfig{**6(---(-NH_2)---)}}{aniline} }{start_aa} - \reactand[below,yshift=-3em]{ \chemname{\ce{HNO2}}{nitrous acid} }{start_ab} - \branch[right=of start_aa,xshift=6em,yshift=-5em]{ - \reactand{ \chemname{\chemfig{**6(---(-N|_2\op)---)}}{diazonium ion} }{} - }{target_a}% = start_ba - \branch[below=of target_a,yshift=-3em]{ - \reactand{ \chemname{\chemfig{**6(---(-NH_2)---)}}{aniline} }{} - }{start_bb} - \branch[right=of target_a,xshift=6em,yshift=-5em]{ - \reactand{ \chemname{\chemfig{N(-[:-150]**6(------))=N-[:-30]**6(---(-NH_2)---)}}{aniline yellow} }{} - }{target_b} + \reactand[,start_aa]{ \chemname{\chemfig{**6(---(-NH_2)---)}}{aniline} } + \reactand[below,start_ab,yshift=-3em]{ \chemname{\ce{HNO2}}{nitrous acid} } + \branch[right=of start_aa,target_a,xshift=6em,yshift=-5em]{ + \reactand{ \chemname{\chemfig{**6(---(-N|_2\op)---)}}{diazonium ion} } + }% = start_ba + \branch[below=of target_a,start_bb,yshift=-3em]{ + \reactand{ \chemname{\chemfig{**6(---(-NH_2)---)}}{aniline} } + } + \branch[right=of target_a,target_b,xshift=6em,yshift=-5em]{ + \reactand{ \chemname{\chemfig{N(-[:-150]**6(------))=N-[:-30]**6(---(-NH_2)---)}}{aniline yellow} } + } \merge[direction=right]{target_a}{start_aa}{start_ab} \merge[direction=right]{target_b}{target_a}{start_bb} \end{rxn} \end{Example} \subsection{mesomeric}\label{ssec:mesomeric} -The \verb=\mesomeric= command works just like \verb=\reactand= (see \ref{ssec:reactand}) but places the formula into square brackets. +\NEU% +The \lstinline=\mesomeric= command works just like \lstinline=\branch= (see \ref{ssec:branch}) but places the formul\ae\ into square brackets. \textbf{If you used earlier versions of \mC please be aware, that the command syntax has changed.} \begin{Verbatim} - \mesomeric[<alignment>]{<formula>}{<anchor>} + \mesomeric[<alignment>,<anchor>,<tikz>]{<formula>} \end{Verbatim} -The resonance formul\ae\ are written into \verb=<formula>=. With \verb=\marrow= (see \ref{ssec:marrow}) you create the resonance arrows. If needed you can give an anchor (\verb=<anchor>=) to \verb=\mesomeric= (also see \ref{ssec:branch}). Alignment is used the same way as with \verb=\reactand=. +The resonance formul\ae\ are written into \lstinline=<formula>=. With \lstinline=\marrow= (see \ref{ssec:marrow}) you create the resonance arrows. If needed you can give an anchor (\lstinline=<anchor>=) to \lstinline=\mesomeric= (also see \ref{ssec:branch}). Alignment is used the same way as with \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} Or vertical, too: \begin{SideBySideExample} \begin{rxn} \mesomeric{ - \reactand{ \chemfig{*6(=-=-=-)} }{} + \reactand{ \chemfig{*6(=-=-=-)} } \marrow[below] - \reactand[below]{ \chemfig{*6(-=-=-=)} }{} - }{} + \reactand[below]{ \chemfig{*6(-=-=-=)} } + } \end{rxn} \end{SideBySideExample} Or maybe a coordination complex? -\begin{SideBySideExample} +\begin{Example} \begin{rxn} \setatomsep{3em} - \mesomeric{ - \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} }{} - }{a} + \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{SideBySideExample} +\end{Example} \subsection{reactand}\label{ssec:reactand} -The command \verb=\reactand= is somehow the basic command of \mC. +\NEU% +The command \lstinline=\reactand= is somehow the basic command of \mC. \textbf{If you used earlier versions of \mC please be aware, that the command syntax has changed.} \begin{Verbatim} - \reactand[<alignment>]{<formula>}{<anchor>} + \reactand[<alignment>,<anchor>,<tikz>]{<formula>} \end{Verbatim} -In this command the actual formul\ae\ are written (\verb=<formula>=). If needed, they can be given an anchor (\verb=<anchor>=). The optional argument \verb=<alignment>= can have 8 different values: +In this command the actual formul\ae\ are written (\lstinline=<formula>=). If needed, they can be given an anchor (\lstinline=<anchor>=). The optional argument \lstinline=<alignment>= can have 8 different values: \begin{inparaenum}[(a)] - \item \verb=right=, - \item \verb=above right=, - \item \verb=above=, - \item \verb=above left=, - \item \verb=left=, - \item \verb=below left=, - \item \verb=below=, - \item \verb=below right= + \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} -Default is \verb=right=. You use this argument to place the reactand relatively to the reactand or arrow right before. +Default is \lstinline=right=. You use this argument to place the reactand relatively to the reactand or arrow right before. \begin{SideBySideExample} %horizontal: \begin{rxn} - \reactand{\ce{Br2}}{} - \reactand[below]{\ce{Cl2}}{} + \reactand{\ce{Br2}} + \reactand[below]{\ce{Cl2}} \end{rxn} %more than one reactand: \begin{rxn} - \reactand{\ce{Br2}}{} - \reactand[below]{\ce{I2}}{} - \reactand{\ce{Cl2}}{} + \reactand{\ce{Br2}} + \reactand[below]{\ce{I2}} + \reactand{\ce{Cl2}} \end{rxn} %vertical reaction: \begin{rxn} - \reactand{\ce{Br-Br}}{} + \reactand{\ce{Br-Br}} \arrow[length=.5,direction=below]{$h\nu$}{} - \reactand[below]{\ce{2 ~\lewis{0.,Br}}}{} + \reactand[below]{\ce{2 ~\lewis{0.,Br}}} \end{rxn} \end{SideBySideExample} \subsection{rxn (environment)}\label{ssec:rxn} -\verb=rxn= is a non-floating not numbered environment for reaction schemes. All schemes are centered. +\lstinline=rxn= is a non-floating not numbered environment for reaction schemes. All schemes are centered. \begin{Verbatim} \begin{rxn}[<keys>] ... \end{rxn} \end{Verbatim} -The optional argument \verb=<scale factor>= has the same effect as has the key \verb+scale=<scale+\linebreak\verb+factor>+ on \verb=rxnscheme=. Default is $1.0$. +The optional argument \lstinline=<scale factor>= has the same effect as has the key \lstinline+scale=<scalefactor>+ on \lstinline=rxnscheme=. Default is $1.0$. \subsubsection{Options}\label{sssec:rxn_optionen} -\NEU\verb=rxn= has two keys: +\Vii\lstinline=rxn= has two keys: \begin{description} - \vitem+align=<alignment>+ alignment behaviour of the \verb=rxn= environment; default is `center' - \vitem+scale=<factor>+ factor by which the \verb=rxn= environment is scaled; default: `1.0' + \vitem+align=<alignment>+ alignment behaviour of the \lstinline=rxn= environment; default is `center' + \vitem+scale=<factor>+ factor by which the \lstinline=rxn= environment is scaled; default: `1.0' \end{description} \begin{Example} \begin{rxn}[align=center] - \reactand{center}{}\arrow{}{}\reactand{centered}{} + \reactand{center}\arrow{}{}\reactand{centered} \end{rxn} \begin{rxn}[align=right] - \reactand{right}{}\arrow{}{}\reactand{raggedleft}{} + \reactand{right}\arrow{}{}\reactand{raggedleft} \end{rxn} \begin{rxn}[align=left] - \reactand{left}{}\arrow{}{}\reactand{raggedright}{} + \reactand{left}\arrow{}{}\reactand{raggedright} \end{rxn} \end{Example} \subsection{rxnscheme (environment)}\label{ssec:rxnscheme} -\verb=\rxnscheme= is a floating environment for reaction schemes. +\lstinline=rxnscheme= is a floating environment for reaction schemes. \begin{Verbatim} \begin{rxnscheme}[<keys>]{<caption>} ... @@ -972,48 +1135,48 @@ The optional argument \verb=<scale factor>= has the same effect as has the key \ \end{Verbatim} \subsubsection{Options}\label{sssec:rxnscheme_optionen} \begin{description} - \vitem+label=<label>+ Like every other floating environment \verb=rxnscheme= can be given a label. To do that, you need to use the key \verb+label=<label>+. For example if you use + \vitem+label=<label>+ Like every other floating environment \lstinline=rxnscheme= can be given a label. To do that, you need to use the key \lstinline+label=<label>+. For example if you use \begin{Verbatim} \begin{rxnscheme}[label={rs:schema}]{<caption>} ... \end{rxnscheme} \end{Verbatim} -you can refer to it by using \verb=\ref{rs:schema}= as usual. -\vitem+scale=<factor>+ \verb=rxnscheme= has another key with which the scheme can be scaled. Please keep in mind that it doesn't affect the font size and the size of the \CF formul\ae. +you can refer to it by using \lstinline=\ref{rs:schema}= as usual. +\vitem+scale=<factor>+ \lstinline=rxnscheme= has another key with which the scheme can be scaled. Please keep in mind that it doesn't affect the font size and the size of the \CF formul\ae. \begin{Verbatim} \begin{rxnscheme}[placement=<placement>]{<caption>} ... \end{rxnscheme} \end{Verbatim} - \vitem+align=<alignment>+\settowidth{\tmplength}{\tt align=<ausrichtung>}\NEU[\tmplength]This key changes the alignment of the scheme. You can choose between \verb=left=, \verb=center= and \verb=right=. + \vitem+align=<alignment>+\settowidth{\tmplength}{\tt align=<ausrichtung>}\Vii[\tmplength]This key changes the alignment of the scheme. You can choose between \lstinline=left=, \lstinline=center= and \lstinline=right=. \end{description} \begin{Example} \begin{rxnscheme}[scale=2]{Big scheme} \large\setatomsep{3.5em} - \reactand{ \chemfig{=[::30]-[::-60]OH} }{} + \reactand{ \chemfig{=[::30]-[::-60]OH} } \arrow[type={<=>}]{}{} - \reactand{ \chemfig{-[::30]=[::-60]O} }{} + \reactand{ \chemfig{-[::30]=[::-60]O} } \end{rxnscheme} \begin{rxnscheme}[scale=.5]{Small scheme} \tiny\setatomsep{1em} - \reactand{ \chemfig{=[::30]-[::-60]OH} }{} + \reactand{ \chemfig{=[::30]-[::-60]OH} } \arrow[type={<=>}]{}{} - \reactand{ \chemfig{-[::30]=[::-60]O} }{} + \reactand{ \chemfig{-[::30]=[::-60]O} } \end{rxnscheme} \begin{rxnscheme}{center} - \reactand{center}{}\arrow{}{}\reactand{centered}{} + \reactand{center}\arrow{}{}\reactand{centered} \end{rxnscheme} \begin{rxnscheme}[align=right]{right} - \reactand{right}{}\arrow{}{}\reactand{raggedleft}{} + \reactand{right}\arrow{}{}\reactand{raggedleft} \end{rxnscheme} \begin{rxnscheme}[align=left]{left} - \reactand{left}{}\arrow{}{}\reactand{raggedright}{} + \reactand{left}\arrow{}{}\reactand{raggedright} \end{rxnscheme} \end{Example} \subsubsection{Customizing rxnscheme} \paragraph{Style} -If you don't like the style of \verb=rxnscheme= you can change it by using +If you don't like the style of \lstinline=rxnscheme= you can change it by using \begin{Verbatim} \floatstyle{<new style>} \restylefloat{rxnfloat} @@ -1021,29 +1184,29 @@ If you don't like the style of \verb=rxnscheme= you can change it by using There are different possible styles, privided by the `float' package: \begin{description} \vitem=plain= without any special formatting, the caption is below the object - \vitem=plaintop= like \verb=plain=, but the caption is placed above the object + \vitem=plaintop= like \lstinline=plain=, but the caption is placed above the object \vitem=boxed= the object is boxed, the caption placed below - \vitem=ruled= the caption is placed above the object framed by to rules, one above and one below, another rule frames the object below; default for \verb=rxnscheme= + \vitem=ruled= the caption is placed above the object framed by to rules, one above and one below, another rule frames the object below; default for \lstinline=rxnscheme= \end{description} \begin{Example} \begin{rxnscheme}{ruled} - \reactand{default style}{} + \reactand{default style} \end{rxnscheme} \floatstyle{boxed} \restylefloat{rxnfloat} \begin{rxnscheme}{boxed} - \reactand{framed object}{} + \reactand{framed object} \end{rxnscheme} \floatstyle{plain} \restylefloat{rxnfloat} \begin{rxnscheme}{plain} - \reactand{without any special formatting}{} + \reactand{without any special formatting} \end{rxnscheme} \end{Example} \floatstyle{ruled} \restylefloat{rxnfloat} \paragraph{Placement} -Usually floating environments have an optional argument for their placement. \verb=rxnscheme='s default placement is \verb=H= which means, it is placed \emph{exactly here}. If you want to change it into \verb=htp= or something, you can use +Usually floating environments have an optional argument for their placement. \lstinline=rxnscheme='s default placement is \lstinline=H= which means, it is placed \emph{exactly here}. If you want to change it into \lstinline=htp= or something, you can use \begin{Verbatim} \floatplacement{rxnfloat}{<placement>} \end{Verbatim} @@ -1051,7 +1214,7 @@ It's easier, though, loading \mC with the `placement' option: \begin{Verbatim} \usepackage[placement=<placement>]{mychemistry} \end{Verbatim} -This will change the default placement behaviour from \verb=H= to \verb=<placement>=. You can also change the placement behaviour of just one \verb=rxnscheme= environment by using the placement key: +This will change the default placement behaviour from \lstinline=H= to \lstinline=<placement>=. You can also change the placement behaviour of just one \lstinline=rxnscheme= environment by using the placement key: \begin{Verbatim} \begin{rxnscheme}[placement=<placement>]{<caption>} ... @@ -1072,73 +1235,111 @@ The counter can be changed just as usual. For example by using \makeatletter \renewcommand{\therxnscheme}{\arabic{section}.\arabic{rxnscheme}} \end{Verbatim} -the counter is reset with every new section an looks like \verb=section.rxnscheme=. Please be aware, that you have to write \verb=\@addtoreset= between \verb=\makeatletter= and \verb=\makeatother= because of the {@}. +the counter is reset with every new section an looks like \lstinline=section.rxnscheme=. Please be aware, that you have to write \lstinline=\@addtoreset= between \lstinline=\makeatletter= and \lstinline=\makeatother= because of the {@}. \paragraph{List of schemes} By writing \begin{Verbatim} \listof{rxnfloat}{<title>} \end{Verbatim} -you can create a list of all schemes created with \verb=rxnscheme=. +you can create a list of all schemes created with \lstinline=rxnscheme=. \begin{SideBySideExample} \listof{rxnfloat}{Reaction schemes} \end{SideBySideExample} -\subsection{setrcndist}\label{ssec:setrcndist} +\subsection{setarrowlength}\label{ssec:setarrowlength} +\NEU% +The default length of an reaction arrow is \SI{5.0}{\emlength} or $5.0\cdot\sqrt{2}\,\si{\emlength}$ for the diagonal ones. You can change these values using +\begin{Verbatim} + \setarrowlength{<length>} +\end{Verbatim} +into \UseVerb{arrowlength} or $\text{\UseVerb{arrowlength}}\cdot\sqrt{2}$, respectively. Mind the fact that you have to use a length unit. If you leave the argument empty, the length is reset to default. + +{\bfseries This command replaces \lstinline=\arrowlength= from earlier versions.} + +\subsection{setatomsize}\label{ssec:setatomsize} +\NEU% +With +\begin{Verbatim} + \setatomsize{<font size>} +\end{Verbatim} +you can change the font size of the atom groups. Default value is \lstinline=\small=. If you leave the argument empty, the size is reset to default. + +{\bfseries This command replaces \lstinline=\atomsize= from earlier versions.} + +\subsection{setbondlength}\label{ssec:setbondlength} \NEU% -The nodes within which the reactands an arrows are set have a certain distance between them. The default distance is \unit{1}\emlength. If you want to change that, you can use +With +\begin{Verbatim} + \setbondlength{<length>} +\end{Verbatim} +you can change \lstinline=\setatomsep{<length>}= for all \CF formul\ae\ \emph{inside} of the\\ +\mC environments. Default value is \SI{1.8}{\emlength}. If you leave the argument empty, the length is reset to default. + +{\bfseries This command replaces \lstinline=\bondlength= from earlier versions.} + +\subsection{setbondshape}\label{ssec:setbondshape} +With +\begin{Verbatim} + \setbondshape{<base length>}{<dash thickness>}{<dash spacing>} +\end{Verbatim} +you can change \lstinline=\setcrambond{<base length>}{<dash thickness>}{<dash spacing>}= for all \CF formul\ae\ \emph{inside} of the \mC environments. Default values are (in this order) \SI{3}{\pt}, \SI{.5}{\pt} and \SI{1}{\pt}. If you leave an argument empty, the value is reset to default. + +{\bfseries This command replaces \lstinline=\bondshape= from earlier versions.} + +\subsection{setrcndist}\label{ssec:setrcndist} +\Vii% +The nodes within which the reactands an arrows are set have a certain distance between them. The default distance is \SI{1}{\emlength}. If you want to change that, you can use \begin{Verbatim} \setrcndist{<länge>} \end{Verbatim} -If you leave the argument empty, the distance is reset to \unit{1}\emlength. +If you leave the argument empty, the distance is reset to \SI{1}{\emlength}. \begin{SideBySideExample} \setrcndist{2em} \begin{rxn} - \reactand{A}{}\arrow{}{} + \reactand{A}\arrow{}{} \end{rxn} \setrcndist{} \begin{rxn} - \reactand{A}{}\arrow{}{} + \reactand{A}\arrow{}{} \end{rxn} \end{SideBySideExample} -\subsection{setrxnalign/setschemealign} -\NEU% +\subsection{setrxnalign/setschemealign}\label{ssec:setrxnalign}\label{ssec:setschemealign} +\Vii% With the commands \begin{Verbatim} \setrxnalign{<alignment>} \setschemealign{<alignment>} \end{Verbatim} -The default alignment behaviour of \verb=rxn= and \verb=rxnscheme= (see \ref{sssec:rxn_optionen} \&\ \ref{sssec:rxnscheme_optionen}) can be set. You can choose between \verb=left=, \verb=center= and \verb=right=. +The default alignment behaviour of \lstinline=rxn= and \lstinline=rxnscheme= (see \ref{sssec:rxn_optionen} \&\ \ref{sssec:rxnscheme_optionen}) can be set. You can choose between \lstinline=left=, \lstinline=center= and \lstinline=right=. -If you leave the argument empty, \mC's default behaviour (\verb=center=) is restored. +If you leave the argument empty, \mC's default behaviour (\lstinline=center=) is restored. \begin{Example} \setrxnalign{right} \begin{rxn} - \reactand{A}{}\arrow{}{}\reactand{B}{} + \reactand{A}\arrow{}{}\reactand{B} \end{rxn} \setrxnalign{} \begin{rxn} - \reactand{A}{}\arrow{}{}\reactand{B}{} + \reactand{A}\arrow{}{}\reactand{B} \end{rxn} \end{Example} -\subsection{setschemename} +\subsection{setschemename}\label{ssec:setschemename} See \ref{par:rxnscheme_name}. \subsection{transition}\label{ssec:transition} -\verb=\transition= works exactly like \verb=\mesomeric= (see \ref{ssec:mesomeric}). +\NEU\lstinline=\transition= works exactly like \lstinline=\reactand= (see \ref{ssec:reactand}). \textbf{If you used earlier versions of \mC please be aware, that the command syntax has changed.} \begin{Verbatim} - \transition[<alignment>]{<formula>}{<anchor>} + \transition[<alignment>,<anchor>,<tikz>]{<formula>} \end{Verbatim} \begin{SideBySideExample} \begin{rxn} - \reactand{ \ce{H2 + I2} }{} + \reactand{ \ce{H2 + I2} } \arrow[type={<=>},length=.5,direction=below]{}{} - \transition[below]{ - \reactand{ \chemfig[dotted][]{H?-I-[2]I-[4]H?} }{} - }{} + \transition[below]{ \chemfig[dotted][]{H?-I-[2]I-[4]H?} } \arrow[type={<=>},length=.5,direction=below]{}{} - \reactand[below]{ \ce{2 HI} }{} + \reactand[below]{ \ce{2 HI} } \end{rxn} \end{SideBySideExample} @@ -1146,111 +1347,111 @@ See \ref{par:rxnscheme_name}. \subsection{Addition Reaction}\label{ssec:addition} A simple reaction scheme with two different products. \begin{rxnscheme}{addition reaction} - \reactand{ \chemfig{=_[::-30]-[::60](=[::60]O)-[::-60]} }{} + \reactand{ \chemfig{=_[::-30]-[::60](=[::60]O)-[::-60]} } \arrow{ $+ \Hpl$ }{} - \mesomeric{ - \reactand{ \chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120,.3,,,white]\oplus)-[::-60]} }{} + \mesomeric[,rf]{ + \reactand{ \chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120,.3,,,white]\oplus)-[::-60]} } \marrow[below] - \reactand[below]{ \chemfig{\oplus-[6,.3,,,white]-[:-30]=_[::60](-[::60]OH)-[::-60]} }{} - }{rf} - \branch[right=of rf,yshift=3em]{ + \reactand[below]{ \chemfig{\oplus-[6,.3,,,white]-[:-30]=_[::60](-[::60]OH)-[::-60]} } + } + \branch[right=of rf,,yshift=3em]{ \arrow{}{} - \reactand{ \chemname{\chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120]R)-[::-60]}}{1,2-adduct} }{} - }{} - \branch[right=of rf,yshift=-5em]{ + \reactand{ \chemname{\chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120]R)-[::-60]}}{1,2-adduct} } + } + \branch[right=of rf,,yshift=-5em]{ \arrow{}{} - \reactand{ \chemname{\chemfig{R-[6]-[:-30]=_[::60](-[::60]OH)-[::-60]}}{1,4-adduct} }{} - }{} + \reactand{ \chemname{\chemfig{R-[6]-[:-30]=_[::60](-[::60]OH)-[::-60]}}{1,4-adduct} } + } \end{rxnscheme} Let's take a closer look, step after step. At first we write the first reactand and the reaction arrow. \begin{Verbatim} - \reactand{ \chemfig{=_[::-30]-[::60](=[::60]O)-[::-60]} }{} + \reactand{ \chemfig{=_[::-30]-[::60](=[::60]O)-[::-60]} } \arrow{ $+ \Hpl$ }{} \end{Verbatim} \begin{rxn} - \reactand{ \chemfig{=_[::-30]-[::60](=[::60]O)-[::-60]} }{} + \reactand{ \chemfig{=_[::-30]-[::60](=[::60]O)-[::-60]} } \arrow{ $+ \Hpl$ }{} \end{rxn} -Then we write the resonance formul\ae. The \verb=\mesomeric= gets the anchor \verb=rf= (line 7). +Then we write the resonance formul\ae. The \lstinline=\mesomeric= gets the anchor \lstinline=rf= (line 7). \begin{Verbatim}[firstnumber=3] - \mesomeric{ - \reactand{ \chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120,.3,,,white]\oplus)-[::-60]} }{} + \mesomeric[,rf]{ + \reactand{ \chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120,.3,,,white]\oplus)-[::-60]} } \marrow[below] - \reactand[below]{ \chemfig{\oplus-[6,.3,,,white]-[:-30]=_[::60](-[::60]OH)-[::-60]} }{} - }{rf} + \reactand[below]{ \chemfig{\oplus-[6,.3,,,white]-[:-30]=_[::60](-[::60]OH)-[::-60]} } + } \end{Verbatim} \begin{rxn} - \reactand{ \chemfig{=_[::-30]-[::60](=[::60]O)-[::-60]} }{} + \reactand{ \chemfig{=_[::-30]-[::60](=[::60]O)-[::-60]} } \arrow{ $+ \Hpl$ }{} - \mesomeric{ - \reactand{ \chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120,.3,,,white]\oplus)-[::-60]} }{} + \mesomeric[,rf]{ + \reactand{ \chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120,.3,,,white]\oplus)-[::-60]} } \marrow[below] - \reactand[below]{ \chemfig{\oplus-[6,.3,,,white]-[:-30]=_[::60](-[::60]OH)-[::-60]} }{} - }{rf} + \reactand[below]{ \chemfig{\oplus-[6,.3,,,white]-[:-30]=_[::60](-[::60]OH)-[::-60]} } + } \end{rxn} -Now comes the 1,2-adduct, placed in a branch referring \verb=rf=, shifted above with yshift: +Now comes the 1,2-adduct, placed in a branch referring \lstinline=rf=, shifted above with yshift: \begin{Verbatim}[firstnumber=8] - \branch[right=of rf,yshift=3em]{ + \branch[right=of rf,,yshift=3em]{ \arrow{}{} - \reactand{ \chemname{\chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120]R)-[::-60]}}{1,2-adduct} }{} - }{} + \reactand{ \chemname{\chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120]R)-[::-60]}}{1,2-adduct} } + } \end{Verbatim} \begin{rxn} - \reactand{ \chemfig{=_[::-30]-[::60](=[::60]O)-[::-60]} }{} + \reactand{ \chemfig{=_[::-30]-[::60](=[::60]O)-[::-60]} } \arrow{ $+ \Hpl$ }{} - \mesomeric{ - \reactand{ \chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120,.3,,,white]\oplus)-[::-60]} }{} + \mesomeric[,rf]{ + \reactand{ \chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120,.3,,,white]\oplus)-[::-60]} } \marrow[below] - \reactand[below]{ \chemfig{\oplus-[6,.3,,,white]-[:-30]=_[::60](-[::60]OH)-[::-60]} }{} - }{rf} - \branch[right=of rf,yshift=3em]{ + \reactand[below]{ \chemfig{\oplus-[6,.3,,,white]-[:-30]=_[::60](-[::60]OH)-[::-60]} } + } + \branch[right=of rf,,yshift=3em]{ \arrow{}{} - \reactand{ \chemname{\chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120]R)-[::-60]}}{1,2-adduct} }{} - }{} + \reactand{ \chemname{\chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120]R)-[::-60]}}{1,2-adduct} } + } \end{rxn} -At last we write the branch containing the 1,4-adduct, also referencing \verb=rf=, shifted below with yshift: +At last we write the branch containing the 1,4-adduct, also referencing \lstinline=rf=, shifted below with yshift: \begin{Verbatim}[firstnumber=12] - \branch[right=of rf,yshift=-5em]{ + \branch[right=of rf,,yshift=-5em]{ \arrow{}{} - \reactand{ \chemname{\chemfig{R-[6]-[:-30]=_[::60](-[::60]OH)-[::-60]}}{1,4-adduct} }{} - }{} + \reactand{ \chemname{\chemfig{R-[6]-[:-30]=_[::60](-[::60]OH)-[::-60]}}{1,4-adduct} } + } \end{Verbatim} \begin{rxn} - \reactand{ \chemfig{=_[::-30]-[::60](=[::60]O)-[::-60]} }{} + \reactand{ \chemfig{=_[::-30]-[::60](=[::60]O)-[::-60]} } \arrow{ $+ \Hpl$ }{} - \mesomeric{ - \reactand{ \chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120,.3,,,white]\oplus)-[::-60]} }{} + \mesomeric[,rf]{ + \reactand{ \chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120,.3,,,white]\oplus)-[::-60]} } \marrow[below] - \reactand[below]{ \chemfig{\oplus-[6,.3,,,white]-[:-30]=_[::60](-[::60]OH)-[::-60]} }{} - }{rf} - \branch[right=of rf,yshift=3em]{ + \reactand[below]{ \chemfig{\oplus-[6,.3,,,white]-[:-30]=_[::60](-[::60]OH)-[::-60]} } + } + \branch[right=of rf,,yshift=3em]{ \arrow{}{} - \reactand{ \chemname{\chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120]R)-[::-60]}}{1,2-adduct} }{} - }{} - \branch[right=of rf,yshift=-5em]{ + \reactand{ \chemname{\chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120]R)-[::-60]}}{1,2-adduct} } + } + \branch[right=of rf,,yshift=-5em]{ \arrow{}{} - \reactand{ \chemname{\chemfig{R-[6]-[:-30]=_[::60](-[::60]OH)-[::-60]}}{1,4-adduct} }{} - }{} + \reactand{ \chemname{\chemfig{R-[6]-[:-30]=_[::60](-[::60]OH)-[::-60]}}{1,4-adduct} } + } \end{rxn} The complete code looks like this: \begin{Verbatim} \begin{rxnscheme}{addition reaction} - \reactand{ \chemfig{=_[::-30]-[::60](=[::60]O)-[::-60]} }{} + \reactand{ \chemfig{=_[::-30]-[::60](=[::60]O)-[::-60]} } \arrow{ $+ \Hpl$ }{} - \mesomeric{ - \reactand{ \chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120,.3,,,white]\oplus)-[::-60]} }{} + \mesomeric[,rf]{ + \reactand{ \chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120,.3,,,white]\oplus)-[::-60]} } \marrow[below] - \reactand[below]{ \chemfig{\oplus-[6,.3,,,white]-[:-30]=_[::60](-[::60]OH)-[::-60]} }{} - }{rf} - \branch[right=of rf,yshift=3em]{ + \reactand[below]{ \chemfig{\oplus-[6,.3,,,white]-[:-30]=_[::60](-[::60]OH)-[::-60]} } + } + \branch[right=of rf,,yshift=3em]{ \arrow{}{} - \reactand{ \chemname{\chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120]R)-[::-60]}}{1,2-adduct} }{} - }{} - \branch[right=of rf,yshift=-5em]{ + \reactand{ \chemname{\chemfig{=_[:-30]-[::60](-[::60]OH)(-[::-120]R)-[::-60]}}{1,2-adduct} } + } + \branch[right=of rf,,yshift=-5em]{ \arrow{}{} - \reactand{ \chemname{\chemfig{R-[6]-[:-30]=_[::60](-[::60]OH)-[::-60]}}{1,4-adduct} }{} - }{} + \reactand{ \chemname{\chemfig{R-[6]-[:-30]=_[::60](-[::60]OH)-[::-60]}}{1,4-adduct} } + } \end{rxnscheme}} \end{Verbatim} @@ -1259,58 +1460,54 @@ The complete code looks like this: We want to display the following reaction scheme: \begin{rxnscheme}[scale=.8]{electrophilic substitution} \setatomsep{1.6em} - \reactand{ \chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{benzene \compound{benzene}} }{start} - + \reactand[,start]{ \chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{benzene \compound{benzene}} } \branch[below=of start]{ - \arrow[direction=below,name=arrow_a]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} - }{} - - \branch[below=of arrow_a,xshift=8.5em]{ + \arrow[direction=below,name=pfeil_a,both]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} + } + \branch[below=of pfeil_a,mesomerism,xshift=8.5em]{ \mesomeric{ \reactand{ \chemfig{*6(=[@{e1}]-=-(-[:120]Br)(-[:60]H)-(-[:-30,.4,,,white]\oplus)-[@{e2}])} \elmove{e1}{60:4mm}{e2}{0:4mm} - }{m1} + } \marrow \reactand{ \chemfig{*6(-(-[:90,.4,,,white]\oplus)-[@{e4}]=[@{e3}]-(-[:120]Br)(-[:60]H)-=)} \elmove{e3}{180:4mm}{e4}{150:4mm} - }{m1} + } \marrow \reactand{ \chemfig{*6(-=-(-[:-150,.4,,,white]\oplus)-(-[:120]Br)(-[:60]H)-=)} - }{m3} - }{} - }{mesomerism} - - \branch[above=of mesomerism,xshift=7.25em]{ + } + } + } + \branch[above=of mesomerism,,xshift=7.25em]{ \arrow[direction=above]{$-\Hpl$}{} - }{} - + } \arrow[length=2.6]{}{} - \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{bromobenzene \compound{bromobenzene}} }{} + \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{bromobenzene \compound{bromobenzene}} } \end{rxnscheme} -First we write the main reaction. To do so, we use the commands \verb=\reactand=, \verb=\arrow= and the environment \verb=\begin{rxn} ... \end{rxn}=. +First we write the main reaction. To do so, we use the commands \lstinline=\reactand=, \lstinline=\arrow= and the environment \lstinline=\begin{rxn} ... \end{rxn}=. \begin{Verbatim} \begin{rxn} \reactand{ \chemname{\chemfig{*6(-=-=-=)}}{benzene \compound{benzene}} - }{} + } \arrow{}{} \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{bromobenzene \compound{bromobenzene}} - }{} + } \end{rxn} \end{Verbatim} \begin{rxn} \reactand{ \chemname{\chemfig{*6(-=-=-=)}}{benzene \compound{benzene}} - }{} + } \arrow{}{} \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{bromobenzene \compound{bromobenzene}} - }{} + } \end{rxn} Now we make it a little bit smaller: \begin{Verbatim} @@ -1318,103 +1515,101 @@ Now we make it a little bit smaller: \setatomsep{1.6em}!! \reactand{ \chemname{\chemfig{*6(-=-=-=)}}{benzene \compound{benzene}} - }{} + } \arrow{}{} \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{bromobenzene \compound{bromobenzene}} - }{} + } \end{rxn} \end{Verbatim} \begin{rxn}[scale=.8] \setatomsep{1.6em} \reactand{ \chemname{\chemfig{*6(-=-=-=)}}{benzene \compound{benzene}} - }{} + } \arrow{}{} \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{bromobenzene \compound{bromobenzene}} - }{} + } \end{rxn} We have two possibilities to align both benzene rings at the same height. Either we shift the second one up using \TikZ code: \begin{Verbatim}[firstnumber=7] - \reactand[!!right,yshift=1em!!]{ + \reactand[,,!!yshift=1em!!]{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{bromobenzene \compound{bromobenzene}} - }{} + } \end{Verbatim} -Please notice, that you have to write the alignment-command of the second reactand \textbf{explicitly} in order to use \TikZ. This is not the best solution, because the arrow isn't centered with respect to the rings. +This is not the best solution, because the arrow isn't centered with respect to the rings. \begin{rxn} \reactand{ \chemname{\chemfig{*6(-=-=-=)}}{benzene \compound{benzene}} - }{} + } \arrow{}{} - \reactand[right,yshift=1em]{ + \reactand[,,yshift=1em]{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{bromobenzene \compound{bromobenzene}} - }{} + } \end{rxn} The second possibility would be to shift the first ring down. We can't achieve that by using \TikZ code, because the following arrow and reactand align themselves with respect to the reactand or arrow directly before. But we can write an invisible bromine to the first benzene to do the trick: \begin{Verbatim}[firstnumber=3] \reactand{ \chemname{\chemfig{*6(-=-=!!(-[,,,,white]\phantom{Br})!!-=)}}{benzene \compound{benzene}} - }{} + } \end{Verbatim} \begin{rxn} \reactand{ \chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{benzene \compound{benzene}} - }{} + } \arrow{}{} \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{bromobenzene \compound{bromobenzene}} - }{} + } \end{rxn} We need to give the first reactand an anchor in order to refer to it with the branch. \begin{Verbatim} \begin{rxn}[scale=.8] \setatomsep{1.6em} - \reactand{ + \reactand[,!!start!!]{ \chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{benzene \compound{benzene}} - }{!!start!!} - + } \branch[!!below=of start!!]{ - \arrow[!!direction=below!!]{ \ce{Br2 / AlBr3} }{ $-\ce{AlBr4\om}$ } - }{} - + \arrow[!!direction=below!!,both]{ \ce{Br2 / AlBr3} }{ $-\ce{AlBr4\om}$ } + } \arrow{}{} \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{bromobenzene \compound{bromobenzene}} - }{} + } \end{rxn} \end{Verbatim} -So the first reactand gets the anchor \verb=start= and the branch refers to it with \verb+below=of+\linebreak\verb+start+. For the reaction arrow to point below, we need to use the key \verb+direction=below+. Now we get: +So the first reactand gets the anchor \lstinline=start= and the branch refers to it with \lstinline+below=of start+. For the reaction arrow to point below, we need to use the key \lstinline+direction=below+. Now we get: \begin{rxn}[scale=.8] \setatomsep{1.6em} - \reactand{ + \reactand[,start]{ \chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{benzene \compound{benzene}} - }{start} + } \branch[below=of start]{ - \arrow[direction=below]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} - }{} + \arrow[direction=below,both]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} + } \arrow{}{} \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{bromobenzene \compound{bromobenzene}} - }{} + } \end{rxn} -Next we write the resonance formul\ae\ of the Wheland intermediate. To do that we use three further commands: \verb=\mesomeric=, \verb=\marrow= and \verb=\elmove=. +Next we write the resonance formul\ae\ of the Wheland intermediate. To do that we use three further commands: \lstinline=\mesomeric=, \lstinline=\marrow= and \lstinline=\elmove=. \begin{Verbatim} !!\mesomeric{!! \reactand{ \chemfig{*6(=[@{e1}]-=-(-[:120]Br)(-[: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]Br)(-[:60]H)-=)} \elmove{e3}{180:4mm}{e4}{150:4mm} - }{} + } \marrow \reactand{ \chemfig{*6(-=-(-[:-150,.4,,,white]\oplus)-(-[:120]Br)(-[:60]H)-=)} - }{} - !!}{}!! + } + !!}!! \end{Verbatim} \begin{rxn}[scale=.8] \setatomsep{1.6em} @@ -1422,348 +1617,334 @@ Next we write the resonance formul\ae\ of the Wheland intermediate. To do that w \reactand{ \chemfig{*6(=[@{e1}]-=-(-[:120]Br)(-[: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]Br)(-[:60]H)-=)} \elmove{e3}{180:4mm}{e4}{150:4mm} - }{} + } \marrow \reactand{ \chemfig{*6(-=-(-[:-150,.4,,,white]\oplus)-(-[:120]Br)(-[:60]H)-=)} - }{} - }{} + } + } \end{rxn} When we write the code \emph{inside} of the branch, directly after the arrow, we get the following: - \begin{rxn}[scale=.8] - \setatomsep{1.6em} - \reactand{ - \chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{benzene \compound{benzene}} - }{start} - - \branch[below=of start]{ - \arrow[direction=below]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} - \mesomeric{ +\begin{rxn}[scale=.8] + \setatomsep{1.6em} + \reactand[,start]{ + \chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{benzene \compound{benzene}} + } + \branch[below=of start]{ + \arrow[direction=below,both]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} + \mesomeric{ \reactand{ \chemfig{*6(=[@{e1}]-=-(-[:120]Br)(-[: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]Br)(-[:60]H)-=)} \elmove{e3}{180:4mm}{e4}{150:4mm} - }{} + } \marrow \reactand{ \chemfig{*6(-=-(-[:-150,.4,,,white]\oplus)-(-[:120]Br)(-[:60]H)-=)} - }{} - }{} - }{} - - \arrow{}{} - \reactand{ - \chemname{\chemfig{*6(-=-=(-Br)-=)}}{bromobenzene \compound{bromobenzene}} - }{} + } + } + } + \arrow{}{} + \reactand{ + \chemname{\chemfig{*6(-=-=(-Br)-=)}}{bromobenzene \compound{bromobenzene}} + } \end{rxn} This obviously messes everything up. We can try this, though: \begin{Verbatim} \begin{rxn}[scale=.8] \setatomsep{1.6em} - \reactand{ + \reactand[,start]{ \chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{benzene \compound{benzene}} - }{start} - + } \branch[below=of start]{ - \arrow[direction=below]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} + \arrow[direction=below,both]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} \mesomeric!![below]!!{ \reactand{ \chemfig{*6(=[@{e1}]-=-(-[:120]Br)(-[: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]Br)(-[:60]H)-=)} \elmove{e3}{180:4mm}{e4}{150:4mm} - }{} + } \marrow \reactand{ \chemfig{*6(-=-(-[:-150,.4,,,white]\oplus)-(-[:120]Br)(-[:60]H)-=)} - }{} - }{} - }{} - + } + } + } \arrow{}{} \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{bromobenzene \compound{bromobenzene}} - }{} + } \end{rxn} \end{Verbatim} The result is better: \begin{rxn}[scale=.8] \setatomsep{1.6em} - \reactand{ + \reactand[,start]{ \chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{benzene \compound{benzene}} - }{start} - + } \branch[below=of start]{ - \arrow[direction=below]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} + \arrow[direction=below,both]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} \mesomeric[below]{ \reactand{ \chemfig{*6(=[@{e1}]-=-(-[:120]Br)(-[: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]Br)(-[:60]H)-=)} \elmove{e3}{180:4mm}{e4}{150:4mm} - }{} + } \marrow \reactand{ \chemfig{*6(-=-(-[:-150,.4,,,white]\oplus)-(-[:120]Br)(-[:60]H)-=)} - }{} - }{} - }{} - + } + } + } \arrow{}{} \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{bromobenzene \compound{bromobenzene}} - }{} + } \end{rxn} -It isn't really what we want, though, because the intermediate is centered below the arrow. In order to be able to shift the whole thing, we place iot into a branch of its own. -\begin{Verbatim}[firstnumber=6] +It isn't really what we want, though, because the intermediate is centered below the arrow. In order to be able to shift the whole thing, we place it into a branch of its own. +\begin{Verbatim}[firstnumber=4] ... \branch[below=of start]{ - \arrow[direction=below,!!name=arrow_a!!]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} - }{} + \arrow[direction=below,both,!!name=arrow_a!!]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} + } !!\branch[below=of arrow_a]{!! \mesomeric{ \reactand{ \chemfig{*6(=[@{e1}]-=-(-[:120]Br)(-[: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]Br)(-[:60]H)-=)} \elmove{e3}{180:4mm}{e4}{150:4mm} - }{} + } \marrow \reactand{ \chemfig{*6(-=-(-[:-150,.4,,,white]\oplus)-(-[:120]Br)(-[:60]H)-=)} - }{} - }{} - !!}{}!! + } + } + !!}!! ... \end{Verbatim} \begin{rxn}[scale=.8] \setatomsep{1.6em} - \reactand{\chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{benzene \compound{benzene}} }{start} - + \reactand[,start]{\chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{benzene \compound{benzene}} } \branch[below=of start]{ - \arrow[direction=below,name=arrow_a]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} - }{} - + \arrow[direction=below,both,name=arrow_a]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} + } \branch[below=of arrow_a]{ - \mesomeric{ + \mesomeric[,mesomerism]{ \reactand{ \chemfig{*6(=[@{e1}]-=-(-[:120]Br)(-[:60]H)-(-[:-30,.4,,,white]\oplus)-[@{e2}])} \elmove{e1}{60:4mm}{e2}{0:4mm} - }{m1} + } \marrow \reactand{ \chemfig{*6(-(-[:90,.4,,,white]\oplus)-[@{e4}]=[@{e3}]-(-[:120]Br)(-[:60]H)-=)} \elmove{e3}{180:4mm}{e4}{150:4mm} - }{m1} + } \marrow \reactand{ \chemfig{*6(-=-(-[:-150,.4,,,white]\oplus)-(-[:120]Br)(-[:60]H)-=)} - }{m3} - }{} - }{mesomerism} - + } + } + } \arrow{}{} - \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{bromobenzene \compound{bromobenzene}} }{} + \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{bromobenzene \compound{bromobenzene}} } \end{rxn} In first sight this isn't better. But by shifting the branch with xshift, we get what we want: -\begin{Verbatim}[firstnumber=6] +\begin{Verbatim}[firstnumber=4] ... \branch[below=of start]{ - \arrow[direction=below,name=arrow_a]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} - }{} - \branch[below=of arrow_a,!!xshift=8.5em!!]{ + \arrow[direction=below,both,name=arrow_a]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} + } + \branch[below=of arrow_a,,!!xshift=8.5em!!]{ \mesomeric{ \reactand{ \chemfig{*6(=[@{e1}]-=-(-[:120]Br)(-[: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]Br)(-[:60]H)-=)} \elmove{e3}{180:4mm}{e4}{150:4mm} - }{} + } \marrow \reactand{ \chemfig{*6(-=-(-[:-150,.4,,,white]\oplus)-(-[:120]Br)(-[:60]H)-=)} - }{} - }{} - }{} + } + } + } ... \end{Verbatim} \begin{rxn}[scale=.8] \setatomsep{1.6em} - \reactand{\chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{benzene \compound{benzene}} }{start} - + \reactand[,start]{\chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{benzene \compound{benzene}} } \branch[below=of start]{ - \arrow[direction=below,name=arrow_a]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} - }{} - - \branch[below=of arrow_a,xshift=8.5em]{ - \mesomeric{ + \arrow[direction=below,both,name=arrow_a]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} + } + \branch[below=of arrow_a,mesomerism,xshift=8.5em]{ + \mesomeric{ \reactand{ \chemfig{*6(=[@{e1}]-=-(-[:120]Br)(-[:60]H)-(-[:-30,.4,,,white]\oplus)-[@{e2}])} \elmove{e1}{60:4mm}{e2}{0:4mm} - }{m1} + } \marrow \reactand{ \chemfig{*6(-(-[:90,.4,,,white]\oplus)-[@{e4}]=[@{e3}]-(-[:120]Br)(-[:60]H)-=)} \elmove{e3}{180:4mm}{e4}{150:4mm} - }{m1} + } \marrow \reactand{ \chemfig{*6(-=-(-[:-150,.4,,,white]\oplus)-(-[:120]Br)(-[:60]H)-=)} - }{m3} - }{} - }{mesomerism} - + } + } + } \arrow{}{} - \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{bromobenzene \compound{bromobenzene}} }{} + \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{bromobenzene \compound{bromobenzene}} } \end{rxn} -The last arrow is also placed in its own branch, so we can shift it, where we want. -\begin{Verbatim}[firstnumber=6] +The last arrow is also placed in its own branch, so we can shift it where we want. +\begin{Verbatim}[firstnumber=4] ... \branch[below=of start]{ - \arrow[direction=below,!!name=arrow_a!!]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} - }{} - \branch[below=of arrow_a,xshift=8.5em]{ + \arrow[direction=below,both,!!name=arrow_a!!]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} + } + \branch[below=of arrow_a,!!mesomerism!!,xshift=8.5em]{ \mesomeric{ \reactand{ \chemfig{*6(=[@{e1}]-=-(-[:120]Br)(-[: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]Br)(-[:60]H)-=)} \elmove{e3}{180:4mm}{e4}{150:4mm} - }{} + } \marrow \reactand{ \chemfig{*6(-=-(-[:-150,.4,,,white]\oplus)-(-[:120]Br)(-[:60]H)-=)} - }{} - }{} - }{!!mesomerism!!} - \branch[!!above=of mesomerism,xshift=7.25em!!]{ + } + } + } + \branch[!!above=of mesomerism,,xshift=7.25em!!]{ \arrow[direction=above]{$-\Hpl$}{} - }{} + } ... \end{Verbatim} \begin{rxn}[scale=.8] \setatomsep{1.6em} - \reactand{\chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{benzene \compound{benzene}} }{start} - + \reactand[,start]{\chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{benzene \compound{benzene}} } \branch[below=of start]{ - \arrow[direction=below,name=arrow_a]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} - }{} - - \branch[below=of arrow_a,xshift=8.5em]{ - \mesomeric{ + \arrow[direction=below,both,name=arrow_a]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} + } + \branch[below=of arrow_a,mesomerism,xshift=8.5em]{ + \mesomeric{ \reactand{ \chemfig{*6(=[@{e1}]-=-(-[:120]Br)(-[:60]H)-(-[:-30,.4,,,white]\oplus)-[@{e2}])} \elmove{e1}{60:4mm}{e2}{0:4mm} - }{m1} + } \marrow \reactand{ \chemfig{*6(-(-[:90,.4,,,white]\oplus)-[@{e4}]=[@{e3}]-(-[:120]Br)(-[:60]H)-=)} \elmove{e3}{180:4mm}{e4}{150:4mm} - }{m1} + } \marrow \reactand{ \chemfig{*6(-=-(-[:-150,.4,,,white]\oplus)-(-[:120]Br)(-[:60]H)-=)} - }{m3} - }{} - }{mesomerism} - \branch[above=of mesomerism,xshift=7.25em]{ + } + } + } + \branch[above=of mesomerism,,xshift=7.25em]{ \arrow[direction=above]{$-\Hpl$}{} - }{} + } \arrow{}{} - \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{bromobenzene \compound{bromobenzene}} }{} + \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{bromobenzene \compound{bromobenzene}} } \end{rxn} -Now we're almost there: the arrow of the main reaction is too short. +Now we're almost there: the arrow of the main reaction still is too short. \begin{Verbatim} \begin{rxn}[scale=.8] \setatomsep{1.6em} - \reactand{\chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{benzene \compound{benzene}} }{start} + \reactand[,start]{\chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{benzene \compound{benzene}} } \branch[below=of start]{ - \arrow[direction=below,name=arrow_a]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} - }{} - \branch[below=of arrow_a,xshift=8.5em]{ + \arrow[direction=below,both,name=arrow_a]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} + } + \branch[below=of arrow_a,mesomerism,xshift=8.5em]{ \mesomeric{ \reactand{ \chemfig{*6(=[@{e1}]-=-(-[:120]Br)(-[: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]Br)(-[:60]H)-=)} \elmove{e3}{180:4mm}{e4}{150:4mm} - }{} + } \marrow \reactand{ \chemfig{*6(-=-(-[:-150,.4,,,white]\oplus)-(-[:120]Br)(-[:60]H)-=)} - }{} - }{} - }{mesomerism} - \branch[above=of mesomerism,xshift=7.25em]{ + } + } + } + \branch[above=of mesomerism,,xshift=7.25em]{ \arrow[direction=above]{$-\Hpl$}{} - }{} + } \arrow[!!length=2.6!!]{}{} - \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{bromobenzene \compound{bromobenzene}} }{} + \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{bromobenzene \compound{bromobenzene}} } \end{rxn} \end{Verbatim} \begin{rxn}[scale=.8] \setatomsep{1.6em} - \reactand{\chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{benzene \compound{benzene}} }{start} + \reactand[,start]{\chemname{\chemfig{*6(-=-=(-[,,,,white]\phantom{Br})-=)}}{benzene \compound{benzene}} } \branch[below=of start]{ - \arrow[direction=below,name=arrow_a]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} - }{} - \branch[below=of arrow_a,xshift=8.5em]{ + \arrow[direction=below,both,name=arrow_a]{\ce{Br2 / AlBr3}}{$-\ce{AlBr4\om}$} + } + \branch[below=of arrow_a,mesomerism,xshift=8.5em]{ \mesomeric{ \reactand{ \chemfig{*6(=[@{e1}]-=-(-[:120]Br)(-[: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]Br)(-[:60]H)-=)} \elmove{e3}{180:4mm}{e4}{150:4mm} - }{} + } \marrow \reactand{ \chemfig{*6(-=-(-[:-150,.4,,,white]\oplus)-(-[:120]Br)(-[:60]H)-=)} - }{} - }{} - }{mesomerism} - \branch[above=of mesomerism,xshift=7.25em]{ + } + } + } + \branch[above=of mesomerism,,xshift=7.25em]{ \arrow[direction=above]{$-\Hpl$}{} - }{} + } \arrow[length=2.6]{}{} - \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{bromobenzene \compound{bromobenzene}} }{} + \reactand{ \chemname{\chemfig{*6(-=-=(-Br)-=)}}{bromobenzene \compound{bromobenzene}} } \end{rxn} \newpage \subsection[Synthesis with \TikZ]{Creating an extensive synthesis using \TikZ, \mC and \CF}\label{ssec:tikzsynthese} -Since the commands of \CF are functioning well in a `tikzpicure' environment, we can create extensive syntheses, using the \verb=\merge= command. The other \mC commands can't be used here without further attention, because they're placed on a chain. In the next example, we directly use the floating environment \verb=rxnfloat=. +Since the commands of \CF are functioning well in a `tikzpicure' environment, we can create extensive syntheses, using the \lstinline=\merge= command. The other \mC commands can't be used here without further attention, because they're placed on a chain. In the next example, we directly use the floating environment \lstinline=rxnfloat=. \begin{Verbatim} \begin{rxnfloat} diff --git a/Master/texmf-dist/tex/latex/mychemistry/mychemistry.sty b/Master/texmf-dist/tex/latex/mychemistry/mychemistry.sty index 13aaeb8d82e..07b86991346 100644 --- a/Master/texmf-dist/tex/latex/mychemistry/mychemistry.sty +++ b/Master/texmf-dist/tex/latex/mychemistry/mychemistry.sty @@ -4,7 +4,7 @@ % - Creating reaction schemes with LaTeX and ChemFig ---------------------------------- % % ------------------------------------------------------------------------------------- % % - Clemens Niederberger -------------------------------------------------------------- % -% - 2011/03/20 ------------------------------------------------------------------------ % +% - 2011/03/27 ------------------------------------------------------------------------ % % ------------------------------------------------------------------------------------- % % - http://www.niederberger-berlin.net/2011/02/latex-mychemistry/ --------------------- % % - kontakt@niederberger-berlin.net --------------------------------------------------- % @@ -57,91 +57,119 @@ % - arrow key `both' added - % % - rxn has now keys instead of an option - % % - commands \setrcndist, \setrxnalign, \setschemealign added - % -% - rxn-, rxnscheme-key align added - % +% - rxn-, rxnscheme-key align added - % +% - 2011/03/26 version 1.2.1 - % +% - rewriting commands, so they accept second argument without first: - % +% - \reactand, \mesomeric, \transition, \branch, \makevisible, \makeinvisible - % +% - rewritten - % +% - 2011/03/28 version 1.2.2 - % +% - bugfix with transition resolved - % +% - atomsize, arrowlength, bondlength and bondshape renamed into set<name> - % +% - and code slightly rewritten - % +% - \mCsetup added - % +% - 2011/04/01 version 1.2.3 - % +% - bug in \branch resolved - % +% - \chemand added - % +% - 2011/04/02 version 1.2.4 - % +% - bugs in \makevisible, \makeinvisible resolved - % +% - input bondwidth.tex if ChemFig v0.4 - % +% - 2011/04/04 version 1.3 - % +% - commands \reactand, \mesomeric, \branch, \transition, \chemand (\makeinvisible - % +% - \makeinvisible) rewritten: more flexible with opt. arguments - % % ------------------------------------------------------------------------------------- % % - TODO - % % - make the arrow type {-|>} look nicer - % % - work on how chemistry-packages are automatically loaded; - % % - add ui for easy handling this issue? (via \mCsetup ?) - % % - add rotate=<winkel> for diagonal arrows? - % -% - add \mCdefault or sim. to restore all default settings? - % +% - option for baseline-alignment of reactands et.al.? - % +% - option for shifting arrows? - % % ------------------------------------------------------------------------------------- % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\def\@mc@version{v1.2} -\def\@mc@date@de{20. M\"arz 2011} -\def\@mc@date@en{March 20th 2011} -\ProvidesPackage{mychemistry}[2011/03/20] -\typeout{myChemistry \@mc@version} -\typeout{2011/03/20 Clemens Niederberger} +\def\mC@def#1{% + \ifdefined#1% + \errmessage{myChemistry Package Error: the macro \string#1\space is already defined. Please let the author know.}% + \fi + \def#1% +} +\mC@def\mC@version{v1.3} +\mC@def\mC@date@de{04. April 2011} +\mC@def\mC@date@en{April 4th 2011} +\mC@def\mC@Date{2011/04/04} +\mC@def\mC@name{myChemistry} +\ProvidesPackage{mychemistry}[\mC@Date\space v\mC@version] +\typeout{} +\typeout{\mC@name\space \mC@version} +\typeout{\mC@Date\space Clemens Niederberger} \typeout{} \RequirePackage{ifthen,calc,float} \RequirePackage{xkeyval} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Optionen, z.T. auch an chemexec weitergeben -\newcommand{\@mc@exec@color}{black} -\newcommand{\@mc@exec@shade}{false} +\newcommand{\mC@exec@color}{black} +\newcommand{\mC@exec@shade}{false} \newif\if@usecolor\@usecolorfalse % wenn key color, dann Farbe und Option shade=true an chemexec weitergeben \define@key[MC]{mychemistry.sty}% {color}{ \@usecolortrue - \renewcommand{\@mc@exec@color}{#1} - \renewcommand{\@mc@exec@shade}{true} + \renewcommand{\mC@exec@color}{#1} + \renewcommand{\mC@exec@shade}{true} } % sonst nicht: \DeclareOptionX[MC]{nocolor}{ \@usecolortrue - \renewcommand{\@mc@exec@color}{black} - \renewcommand{\@mc@exec@shade}{false} + \renewcommand{\mC@exec@color}{black} + \renewcommand{\mC@exec@shade}{false} } % shade separat (de-)aktivieren \DeclareOptionX[MC]{shade}{% - \renewcommand{\@mc@exec@shade}{true} + \renewcommand{\mC@exec@shade}{true} } % chemexec abschalten -\newcommand{\@mc@exec@true}{true} +\newcommand{\mC@exec@true}{true} \DeclareOptionX[MC]{nochemexec}{% - \renewcommand{\@mc@exec@true}{false} + \renewcommand{\mC@exec@true}{false} } % mhchem abschalten -\newcommand{\@mc@mhchem@true}{true} +\newcommand{\mC@mhchem@true}{true} \DeclareOptionX[MC]{nomhchem}{% - \renewcommand{\@mc@mhchem@true}{false} + \renewcommand{\mC@mhchem@true}{false} } % chemcompounds abschalten -\newcommand{\@mc@compound@true}{true} +\newcommand{\mC@compound@true}{true} \DeclareOptionX[MC]{nocompounds}{% - \renewcommand{\@mc@compound@true}{false} + \renewcommand{\mC@compound@true}{false} } % chemstyle einschalten -\newcommand{\@mc@chemstyle@true}{false} +\newcommand{\mC@chemstyle@true}{false} \DeclareOptionX[MC]{chemstyle}{% - \renewcommand{\@mc@chemstyle@true}{true} + \renewcommand{\mC@chemstyle@true}{true} } % nur `chemfig' laden \DeclareOptionX[MC]{nopackages}{% - \renewcommand{\@mc@exec@true}{false} - \renewcommand{\@mc@mhchem@true}{false} - \renewcommand{\@mc@compound@true}{false} - \renewcommand{\@mc@chemstyle@true}{false} + \renewcommand{\mC@exec@true}{false} + \renewcommand{\mC@mhchem@true}{false} + \renewcommand{\mC@compound@true}{false} + \renewcommand{\mC@chemstyle@true}{false} } % englische Version von chemexec, englische Variante von myChemistry -\newcommand{\@mc@exec@english}{} -\newcommand{\@mc@rs@name}{Reaktionsschema} +\newcommand{\mC@exec@english}{} +\newcommand{\mC@rs@name}{Reaktionsschema} \DeclareOptionX[MC]{english}{ - \renewcommand{\@mc@exec@english}{,english} - \renewcommand{\@mc@rs@name}{Reaction scheme} + \renewcommand{\mC@exec@english}{,english} + \renewcommand{\mC@rs@name}{Reaction scheme} } -\newcommand{\@mc@rs@placement}{H} -\newcommand{\@mc@rs@currentplacement}{\@mc@rs@placement} +\newcommand{\mC@rs@placement}{H} +\newcommand{\mC@rs@currentplacement}{\mC@rs@placement} \define@key[MC]{mychemistry.sty}{placement}{ - \renewcommand{\@mc@rs@placement}{#1} + \renewcommand{\mC@rs@placement}{#1} } \ProcessOptionsX[MC] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % chemstyle laden, falls verfügbar und Option aktiv \IfFileExists{chemstyle.sty}{% - \ifthenelse{\equal{\@mc@chemstyle@true}{true}}{ + \ifthenelse{\equal{\mC@chemstyle@true}{true}}{ \@ifpackageloaded{chemstyle}{}{ \RequirePackage[varioref=false,floats=float]{chemstyle} \PackageInfo{mychemistry}{You loaded `chemstyle' with options `varioref=false' and `floats=float'. Please be aware, that you might need to restyle the float `table'. Take a look at the `chemstyle' documentation for further information.} @@ -151,13 +179,13 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % chemcompounds laden, falls verfügbar \IfFileExists{chemcompounds.sty}{% - \ifthenelse{\equal{\@mc@compound@true}{true}}{ + \ifthenelse{\equal{\mC@compound@true}{true}}{ \@ifpackageloaded{chemcompounds}{}{ \RequirePackage{chemcompounds} } }{} }{ - \typeout{`chemcompounds' is not installed.} + \PackageWarning{myChemistry: `chemcompounds' is not installed. You shoul use the `nocompounds' option.} } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % chemfig laden, falls verfügbar @@ -172,240 +200,265 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % chemexec laden, falls verfügbar, falls nicht, dann wenigstens mhchem laden \IfFileExists{chemexec.sty}{% mit den Default-Optionen color=black, shade=false,exercise,exersize=large - \ifthenelse{\equal{\@mc@exec@true}{true}}{ - \ifthenelse{\equal{\@mc@mhchem@true}{true}}{}{ + \ifthenelse{\equal{\mC@exec@true}{true}}{ + \ifthenelse{\equal{\mC@mhchem@true}{true}}{}{ \PackageWarning{mychemistry}{You used the option `nomhchem' but not `nochemexec'. Please be aware that `mhchem' is loaded by `chemexec' anyway.} } \@ifpackageloaded{chemexec}{}{ - \RequirePackage[color=\@mc@exec@color,shade=\@mc@exec@shade,exercise,exersize=large\@mc@exec@english]{chemexec} + \RequirePackage[color=\mC@exec@color,shade=\mC@exec@shade,exercise,exersize=large\mC@exec@english]{chemexec} } }{} }{ - \typeout{`chemexec' ist not installed.} + \PackageWarning{myChemistry: `chemexec' ist not installed. You should use the `nochemexec' option.} \IfFileExists{mhchem.sty}{ - \ifthenelse{\equal{\@mc@mhchem@true}{true}}{ + \ifthenelse{\equal{\mC@mhchem@true}{true}}{ \@ifpackageloaded{mhchem}{}{ \RequirePackage[version=3]{mhchem} } }{} }{ - \typeout{`mhchem' ist not installed.} + \PackageWarning{myChemistry: `mhchem' ist not installed. You should use the `nomhchem' option.} } } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % NEUE BEFEHLE: % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\providecommand{\mCversion}{\@mc@version} -\providecommand{\mCdate}[1]{ - \ifthenelse{\equal{#1}{de}}{\@mc@date@de}{} - \ifthenelse{\equal{#1}{en}}{\@mc@date@en}{} +% myChemistry Informationen ----------------------------------------------------------- % +\mC@def\mCversion{\mC@version} +\mC@def\mCdate#1{\csname mC@date@#1\endcsname} +% additional für ChemFig v0.4 --------------------------------------------------------- % +\mC@def\mC@CFversion@test{0.4}% +\IfFileExists{bondwidth.tex}{% + \ifx\CF@ver\mC@CFversion@test\input{bondwidth}\fi +}{}% +% Optional Argument Analysis ---------------------------------------------------------- % +% Prüfen ob #2 in #1 enthalten ist +\mC@def\mC@if@instr#1#2{% + \def\mC@if@instr@i##1#2##2\@nil{\ifx\@empty##2\@empty\expandafter\@secondoftwo\else\expandafter\@firstoftwo\fi}% + \mC@if@instr@i#1\@@nil#2\@nil +} +% Am ersten , splitten, #1 in #3 speichern, #2 in \mC@remainargs +\mC@def\mC@splitfirst#1,#2\@nil#3{% + \def#3{#1}\def\mC@remainargs{#2}% +} +% ein durch , in 3 Teile getrenntes Argument splitten +\mC@def\mC@splitarg#1{ + \mC@if@instr{#1}{,}{\expandafter\mC@splitfirst#1\@nil\mC@firstarg}{\def\mC@firstarg{#1}} + \expandafter\mC@if@instr\expandafter{\mC@remainargs}{,}{\expandafter\mC@splitfirst\mC@remainargs\@nil\mC@secondarg}{\expandafter\def\expandafter\mC@secondarg\expandafter{\mC@remainargs}} + \ifx\mC@remainargs\mC@secondarg\let\mC@thirdarg\@empty\else\expandafter\def\expandafter\mC@thirdarg\expandafter{\mC@remainargs}\fi } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % PFEILE ------------------------------------------------------------------------------ % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % interne Befehle, Voreinstellungen --------------------------------------------------- % -\newcommand{\@arrow@above}{above} % oben -\newcommand{\@arrow@currentabove}{\@arrow@above} % -\newcommand{\@arrow@below}{below} % unten -\newcommand{\@arrow@currentbelow}{\@arrow@below} % -\newcommand{\@arrow@direction}{right} % Richtung -\newcommand{\@arrow@currentdirection}{\@arrow@direction} -\newcommand{\@arrow@currentlength}{\@arrow@length} -\newlength{\@arrow@length@actual} -\newcommand{\@arrow@rotate}{} -\newcommand{\@arrow@argument@angle}{} -\newcommand{\@arrow@argument@shift}{2pt} -\newcommand{\@arrow@argument@anchor}{} -\newcommand{\@arrow@argument@both}{} -%\newcommand{\@arrow@argument@size}{} -\newcommand{\@arrow@above@anchor}{} -\newcommand{\@arrow@below@anchor}{} -\newcommand{\@arrow@type}{->} % Pfeiltyp -\newcommand{\@arrow@currenttype}{\@arrow@type} % -\newcommand{\@arrow@start@up}{0,0.05} % Verschiebung für Glgw-Pfeil -\newcommand{\@arrow@start@down}{0,-0.05} % -\newcommand{\@arrow@placement}{on chain=going \@arrow@currentdirection} % wohin? -\newcommand{\@arrow@currentplacement}{\@arrow@placement} -\newcommand{\@arrow@cross@base@x}{} % Befehle für durchgestrichenen Pfeil -\newcommand{\@arrow@cross@base@y}{} % -\newcommand{\@arrow@cross@angle}{} % -\newcommand{\@arrow@cross@length}{} % -\newcommand{\@arrow@cross@draw}{} % +\newcommand{\mC@arrow@above}{above} % oben +\newcommand{\mC@arrow@currentabove}{\mC@arrow@above} % +\newcommand{\mC@arrow@below}{below} % unten +\newcommand{\mC@arrow@currentbelow}{\mC@arrow@below} % +\newcommand{\mC@arrow@direction}{right} % Richtung +\newcommand{\mC@arrow@currentdirection}{\mC@arrow@direction} +\newcommand{\mC@arrow@currentlength}{\mC@arrow@length} +\newlength{\mC@arrow@length@actual} +\newcommand{\mC@arrow@rotate}{} +\newcommand{\mC@arrow@argument@angle}{} +\newcommand{\mC@arrow@argument@shift}{2pt} +\newcommand{\mC@arrow@argument@anchor}{} +\newcommand{\mC@arrow@argument@both}{} +\newcommand{\mC@arrow@above@anchor}{} +\newcommand{\mC@arrow@below@anchor}{} +\newcommand{\mC@arrow@type}{->} % Pfeiltyp +\newcommand{\mC@arrow@currenttype}{\mC@arrow@type} % +\newcommand{\mC@arrow@start@up}{0,0.05} % Verschiebung für Glgw-Pfeil +\newcommand{\mC@arrow@start@down}{0,-0.05} % +\newcommand{\mC@arrow@placement}{on chain=going \mC@arrow@currentdirection} % wohin? +\newcommand{\mC@arrow@currentplacement}{\mC@arrow@placement} +\newcommand{\mC@arrow@cross@base@x}{} % Befehle für durchgestrichenen Pfeil +\newcommand{\mC@arrow@cross@base@y}{} % +\newcommand{\mC@arrow@cross@angle}{} % +\newcommand{\mC@arrow@cross@length}{} % +\newcommand{\mC@arrow@cross@draw}{} % % Laengenfaktor ----------------------------------------------------------------------- % -\newcommand{\@arrow@length}{1.0} % Längenfaktor -\newcommand{\@arrow@length@factor}{1.0} % Default-Faktor -\newcommand{\@arrow@end}{\@arrow@length@actual,0} % Pfeilende -\define@key{arrow}{length}[\@arrow@length]{% % - \renewcommand{\@arrow@currentlength}{#1}}% % -\newlength{\@arrow@length@default} % -\setlength{\@arrow@length@default}{5em} % Default-Laenge -\newcommand{\arrowlength}[1]{\setlength{\@arrow@length@default}{#1}} +\newcommand{\mC@arrow@length}{1.0} % Längenfaktor +\newcommand{\mC@arrow@length@factor}{1.0} % Default-Faktor +\newcommand{\mC@arrow@end}{\mC@arrow@length@actual,0} % Pfeilende +\define@key{arrow}{length}[\mC@arrow@length]{% % + \renewcommand{\mC@arrow@currentlength}{#1}}% % +\newlength{\mC@arrow@length@default} % +\setlength{\mC@arrow@length@default}{5em} % Default-Laenge +\mC@def\setarrowlength#1{ + \ifx\@empty#1\@empty + \setlength{\mC@arrow@length@default}{5em} + \else + \setlength{\mC@arrow@length@default}{#1} + \fi +} +\let\arrowlength\setarrowlength % Beschriftungen ---------------------------------------------------------------------- % -\newlength{\@arrow@argument@aboveshift} % Verschieben der Beschriftung -\newlength{\@arrow@argument@belowshift} % Verschieben der Beschriftung +\newlength{\mC@arrow@argument@aboveshift} % Verschieben der Beschriftung +\newlength{\mC@arrow@argument@belowshift} % Verschieben der Beschriftung \define@key{arrow}{aboveshift}[2pt]{% - \setlength{\@arrow@argument@aboveshift}{#1}} + \setlength{\mC@arrow@argument@aboveshift}{#1}} \define@key{arrow}{belowshift}[2pt]{% - \setlength{\@arrow@argument@belowshift}{#1}} + \setlength{\mC@arrow@argument@belowshift}{#1}} \define@key{arrow}{both}[]{ - \renewcommand{\@arrow@argument@both}{true} + \renewcommand{\mC@arrow@argument@both}{true} } % Anker ------------------------------------------------------------------------------- % -\newcommand{\@arrow@name}{} % Anker -\newcommand{\@arrow@currentname}{\@arrow@name} % -\define@key{arrow}{name}[\@arrow@name]{% % - \renewcommand{\@arrow@currentname}{#1}}% % +\newcommand{\mC@arrow@name}{} % Anker +\newcommand{\mC@arrow@currentname}{\mC@arrow@name} % +\define@key{arrow}{name}[\mC@arrow@name]{% % + \renewcommand{\mC@arrow@currentname}{#1}}% % % Richtung ---------------------------------------------------------------------------- % -\define@key{arrow}{direction}[\@arrow@direction]{% - \renewcommand{\@arrow@currentdirection}{#1} % +\define@key{arrow}{direction}[\mC@arrow@direction]{% + \renewcommand{\mC@arrow@currentdirection}{#1} % \ifthenelse{\equal{#1}{right}}{% nach rechts, Einstellungen: - \renewcommand{\@arrow@end}{\@arrow@length@actual,0} - \renewcommand{\@arrow@currentabove}{above} - \renewcommand{\@arrow@currentbelow}{below} - \renewcommand{\@arrow@above@anchor}{south} - \renewcommand{\@arrow@below@anchor}{north} - \renewcommand{\@arrow@argument@anchor}{ - \node(@arrow@center) at ($(\tikzchainprevious.east)+(.5\@arrow@length@actual+\@rxn@node@distance,0)$) {}; + \renewcommand{\mC@arrow@end}{\mC@arrow@length@actual,0} + \renewcommand{\mC@arrow@currentabove}{above} + \renewcommand{\mC@arrow@currentbelow}{below} + \renewcommand{\mC@arrow@above@anchor}{south} + \renewcommand{\mC@arrow@below@anchor}{north} + \renewcommand{\mC@arrow@argument@anchor}{ + \node(@arrow@center) at ($(\tikzchainprevious.east)+(.5\mC@arrow@length@actual+\mC@rxn@node@distance,0)$) {}; } - \renewcommand{\@arrow@argument@angle}{0} - \renewcommand{\@arrow@rotate}{0} - \renewcommand{\@arrow@start@up}{0,0.03} - \renewcommand{\@arrow@start@down}{0,-0.03} - \renewcommand{\@arrow@cross@base@x}{.15em} - \renewcommand{\@arrow@cross@base@y}{0} - \renewcommand{\@arrow@cross@angle}{60} - \renewcommand{\@arrow@cross@length}{.5em} + \renewcommand{\mC@arrow@argument@angle}{0} + \renewcommand{\mC@arrow@rotate}{0} + \renewcommand{\mC@arrow@start@up}{0,0.03} + \renewcommand{\mC@arrow@start@down}{0,-0.03} + \renewcommand{\mC@arrow@cross@base@x}{.15em} + \renewcommand{\mC@arrow@cross@base@y}{0} + \renewcommand{\mC@arrow@cross@angle}{60} + \renewcommand{\mC@arrow@cross@length}{.5em} }{ \ifthenelse{\equal{#1}{above right}}{% nach oben rechts, Einstellungen: - \renewcommand{\@arrow@end}{\@arrow@length@actual,\@arrow@length@actual} - \renewcommand{\@arrow@currentabove}{above left} - \renewcommand{\@arrow@currentbelow}{below right} - \renewcommand{\@arrow@above@anchor}{south} - \renewcommand{\@arrow@below@anchor}{north} - \renewcommand{\@arrow@argument@anchor}{ - \node(@arrow@center) at ($(\tikzchainprevious.north east)+(.5\@arrow@length@actual+.707\@rxn@node@distance,.5\@arrow@length@actual+.707\@rxn@node@distance)$) {}; + \renewcommand{\mC@arrow@end}{\mC@arrow@length@actual,\mC@arrow@length@actual} + \renewcommand{\mC@arrow@currentabove}{above left} + \renewcommand{\mC@arrow@currentbelow}{below right} + \renewcommand{\mC@arrow@above@anchor}{south} + \renewcommand{\mC@arrow@below@anchor}{north} + \renewcommand{\mC@arrow@argument@anchor}{ + \node(@arrow@center) at ($(\tikzchainprevious.north east)+(.5\mC@arrow@length@actual+.707\mC@rxn@node@distance,.5\mC@arrow@length@actual+.707\mC@rxn@node@distance)$) {}; } - \renewcommand{\@arrow@argument@angle}{45} - \renewcommand{\@arrow@rotate}{45} - \renewcommand{\@arrow@start@up}{-0.02,0.02} - \renewcommand{\@arrow@start@down}{0.02,-0.02} - \renewcommand{\@arrow@cross@base@x}{.1em} - \renewcommand{\@arrow@cross@base@y}{.1em} - \renewcommand{\@arrow@cross@angle}{-15} - \renewcommand{\@arrow@cross@length}{.7em} + \renewcommand{\mC@arrow@argument@angle}{45} + \renewcommand{\mC@arrow@rotate}{45} + \renewcommand{\mC@arrow@start@up}{-0.02,0.02} + \renewcommand{\mC@arrow@start@down}{0.02,-0.02} + \renewcommand{\mC@arrow@cross@base@x}{.1em} + \renewcommand{\mC@arrow@cross@base@y}{.1em} + \renewcommand{\mC@arrow@cross@angle}{-15} + \renewcommand{\mC@arrow@cross@length}{.7em} }{ \ifthenelse{\equal{#1}{above}}{% nach oben, Einstellungen: - \renewcommand{\@arrow@end}{0,\@arrow@length@actual} - \renewcommand{\@arrow@currentabove}{left} - \renewcommand{\@arrow@currentbelow}{right} - \renewcommand{\@arrow@above@anchor}{east} - \renewcommand{\@arrow@below@anchor}{west} - \renewcommand{\@arrow@argument@anchor}{ - \node(@arrow@center) at ($(\tikzchainprevious.north)+(0,.5\@arrow@length@actual+\@rxn@node@distance)$) {}; + \renewcommand{\mC@arrow@end}{0,\mC@arrow@length@actual} + \renewcommand{\mC@arrow@currentabove}{left} + \renewcommand{\mC@arrow@currentbelow}{right} + \renewcommand{\mC@arrow@above@anchor}{east} + \renewcommand{\mC@arrow@below@anchor}{west} + \renewcommand{\mC@arrow@argument@anchor}{ + \node(@arrow@center) at ($(\tikzchainprevious.north)+(0,.5\mC@arrow@length@actual+\mC@rxn@node@distance)$) {}; } - \renewcommand{\@arrow@argument@angle}{90} - \renewcommand{\@arrow@rotate}{0} - \renewcommand{\@arrow@start@up}{-0.03,0} - \renewcommand{\@arrow@start@down}{0.03,0} - \renewcommand{\@arrow@cross@base@x}{0} - \renewcommand{\@arrow@cross@base@y}{.15em} - \renewcommand{\@arrow@cross@angle}{30} - \renewcommand{\@arrow@cross@length}{.5em} + \renewcommand{\mC@arrow@argument@angle}{90} + \renewcommand{\mC@arrow@rotate}{0} + \renewcommand{\mC@arrow@start@up}{-0.03,0} + \renewcommand{\mC@arrow@start@down}{0.03,0} + \renewcommand{\mC@arrow@cross@base@x}{0} + \renewcommand{\mC@arrow@cross@base@y}{.15em} + \renewcommand{\mC@arrow@cross@angle}{30} + \renewcommand{\mC@arrow@cross@length}{.5em} }{ \ifthenelse{\equal{#1}{above left}}{% nach oben links, Einstellungen: - \renewcommand{\@arrow@end}{-\@arrow@length@actual,\@arrow@length@actual} - \renewcommand{\@arrow@currentabove}{above right} - \renewcommand{\@arrow@currentbelow}{below left} - \renewcommand{\@arrow@above@anchor}{south} - \renewcommand{\@arrow@below@anchor}{north} - \renewcommand{\@arrow@argument@anchor}{ - \node(@arrow@center) at ($(\tikzchainprevious.north west)+(-.5\@arrow@length@actual-.707\@rxn@node@distance,.5\@arrow@length@actual+.707\@rxn@node@distance)$) {}; + \renewcommand{\mC@arrow@end}{-\mC@arrow@length@actual,\mC@arrow@length@actual} + \renewcommand{\mC@arrow@currentabove}{above right} + \renewcommand{\mC@arrow@currentbelow}{below left} + \renewcommand{\mC@arrow@above@anchor}{south} + \renewcommand{\mC@arrow@below@anchor}{north} + \renewcommand{\mC@arrow@argument@anchor}{ + \node(@arrow@center) at ($(\tikzchainprevious.north west)+(-.5\mC@arrow@length@actual-.707\mC@rxn@node@distance,.5\mC@arrow@length@actual+.707\mC@rxn@node@distance)$) {}; } - \renewcommand{\@arrow@argument@angle}{-45} - \renewcommand{\@arrow@rotate}{-45} - \renewcommand{\@arrow@start@up}{-0.02,-0.02} - \renewcommand{\@arrow@start@down}{0.02,0.02} - \renewcommand{\@arrow@cross@base@x}{-.1em} - \renewcommand{\@arrow@cross@base@y}{.1em} - \renewcommand{\@arrow@cross@angle}{15} - \renewcommand{\@arrow@cross@length}{.7em} + \renewcommand{\mC@arrow@argument@angle}{-45} + \renewcommand{\mC@arrow@rotate}{-45} + \renewcommand{\mC@arrow@start@up}{-0.02,-0.02} + \renewcommand{\mC@arrow@start@down}{0.02,0.02} + \renewcommand{\mC@arrow@cross@base@x}{-.1em} + \renewcommand{\mC@arrow@cross@base@y}{.1em} + \renewcommand{\mC@arrow@cross@angle}{15} + \renewcommand{\mC@arrow@cross@length}{.7em} }{ \ifthenelse{\equal{#1}{left}}{% nach links, Einstellungen: - \renewcommand{\@arrow@end}{-\@arrow@length@actual,0} - \renewcommand{\@arrow@currentabove}{above} - \renewcommand{\@arrow@currentbelow}{below} - \renewcommand{\@arrow@above@anchor}{south} - \renewcommand{\@arrow@below@anchor}{north} - \renewcommand{\@arrow@argument@anchor}{ - \node(@arrow@center) at ($(\tikzchainprevious.west)+(-.5\@arrow@length@actual-\@rxn@node@distance,0)$) {}; + \renewcommand{\mC@arrow@end}{-\mC@arrow@length@actual,0} + \renewcommand{\mC@arrow@currentabove}{above} + \renewcommand{\mC@arrow@currentbelow}{below} + \renewcommand{\mC@arrow@above@anchor}{south} + \renewcommand{\mC@arrow@below@anchor}{north} + \renewcommand{\mC@arrow@argument@anchor}{ + \node(@arrow@center) at ($(\tikzchainprevious.west)+(-.5\mC@arrow@length@actual-\mC@rxn@node@distance,0)$) {}; } - \renewcommand{\@arrow@argument@angle}{0} - \renewcommand{\@arrow@rotate}{0} - \renewcommand{\@arrow@start@up}{0,-0.03} - \renewcommand{\@arrow@start@down}{0,0.03} - \renewcommand{\@arrow@cross@base@x}{.15em} - \renewcommand{\@arrow@cross@base@y}{0} - \renewcommand{\@arrow@cross@angle}{60} - \renewcommand{\@arrow@cross@length}{.5em} + \renewcommand{\mC@arrow@argument@angle}{0} + \renewcommand{\mC@arrow@rotate}{0} + \renewcommand{\mC@arrow@start@up}{0,-0.03} + \renewcommand{\mC@arrow@start@down}{0,0.03} + \renewcommand{\mC@arrow@cross@base@x}{.15em} + \renewcommand{\mC@arrow@cross@base@y}{0} + \renewcommand{\mC@arrow@cross@angle}{60} + \renewcommand{\mC@arrow@cross@length}{.5em} }{ \ifthenelse{\equal{#1}{below left}}{% nach unten links, Einstellungen: - \renewcommand{\@arrow@end}{-\@arrow@length@actual,-\@arrow@length@actual} - \renewcommand{\@arrow@currentabove}{above left} - \renewcommand{\@arrow@currentbelow}{below right} - \renewcommand{\@arrow@above@anchor}{south} - \renewcommand{\@arrow@below@anchor}{north} - \renewcommand{\@arrow@argument@anchor}{ - \node(@arrow@center) at ($(\tikzchainprevious.south west)+(-.5\@arrow@length@actual-.707\@rxn@node@distance,-.5\@arrow@length@actual-.707\@rxn@node@distance)$) {}; + \renewcommand{\mC@arrow@end}{-\mC@arrow@length@actual,-\mC@arrow@length@actual} + \renewcommand{\mC@arrow@currentabove}{above left} + \renewcommand{\mC@arrow@currentbelow}{below right} + \renewcommand{\mC@arrow@above@anchor}{south} + \renewcommand{\mC@arrow@below@anchor}{north} + \renewcommand{\mC@arrow@argument@anchor}{ + \node(@arrow@center) at ($(\tikzchainprevious.south west)+(-.5\mC@arrow@length@actual-.707\mC@rxn@node@distance,-.5\mC@arrow@length@actual-.707\mC@rxn@node@distance)$) {}; } - \renewcommand{\@arrow@argument@angle}{45} - \renewcommand{\@arrow@rotate}{45} - \renewcommand{\@arrow@start@up}{0.02,-0.02} - \renewcommand{\@arrow@start@down}{-0.02,0.02} - \renewcommand{\@arrow@cross@base@x}{.1em} - \renewcommand{\@arrow@cross@base@y}{.1em} - \renewcommand{\@arrow@cross@angle}{-15} - \renewcommand{\@arrow@cross@length}{.7em} + \renewcommand{\mC@arrow@argument@angle}{45} + \renewcommand{\mC@arrow@rotate}{45} + \renewcommand{\mC@arrow@start@up}{0.02,-0.02} + \renewcommand{\mC@arrow@start@down}{-0.02,0.02} + \renewcommand{\mC@arrow@cross@base@x}{.1em} + \renewcommand{\mC@arrow@cross@base@y}{.1em} + \renewcommand{\mC@arrow@cross@angle}{-15} + \renewcommand{\mC@arrow@cross@length}{.7em} }{ \ifthenelse{\equal{#1}{below}}{% nach unten, Einstellungen: - \renewcommand{\@arrow@end}{0,-\@arrow@length@actual} - \renewcommand{\@arrow@currentabove}{left} - \renewcommand{\@arrow@currentbelow}{right} - \renewcommand{\@arrow@above@anchor}{east} - \renewcommand{\@arrow@below@anchor}{west} - \renewcommand{\@arrow@argument@anchor}{ - \node(@arrow@center) at ($(\tikzchainprevious.south)+(0,-.5\@arrow@length@actual-\@rxn@node@distance)$) {}; + \renewcommand{\mC@arrow@end}{0,-\mC@arrow@length@actual} + \renewcommand{\mC@arrow@currentabove}{left} + \renewcommand{\mC@arrow@currentbelow}{right} + \renewcommand{\mC@arrow@above@anchor}{east} + \renewcommand{\mC@arrow@below@anchor}{west} + \renewcommand{\mC@arrow@argument@anchor}{ + \node(@arrow@center) at ($(\tikzchainprevious.south)+(0,-.5\mC@arrow@length@actual-\mC@rxn@node@distance)$) {}; } - \renewcommand{\@arrow@argument@angle}{90} - \renewcommand{\@arrow@rotate}{0} - \renewcommand{\@arrow@start@up}{0.03,0} - \renewcommand{\@arrow@start@down}{-0.03,0} - \renewcommand{\@arrow@cross@base@x}{0} - \renewcommand{\@arrow@cross@base@y}{.15em} - \renewcommand{\@arrow@cross@angle}{30} - \renewcommand{\@arrow@cross@length}{.5em} + \renewcommand{\mC@arrow@argument@angle}{90} + \renewcommand{\mC@arrow@rotate}{0} + \renewcommand{\mC@arrow@start@up}{0.03,0} + \renewcommand{\mC@arrow@start@down}{-0.03,0} + \renewcommand{\mC@arrow@cross@base@x}{0} + \renewcommand{\mC@arrow@cross@base@y}{.15em} + \renewcommand{\mC@arrow@cross@angle}{30} + \renewcommand{\mC@arrow@cross@length}{.5em} }{ \ifthenelse{\equal{#1}{below right}}{% nach unten rechts, Einstellungen: - \renewcommand{\@arrow@end}{\@arrow@length@actual,-\@arrow@length@actual} - \renewcommand{\@arrow@currentabove}{above right} - \renewcommand{\@arrow@currentbelow}{below left} - \renewcommand{\@arrow@above@anchor}{south} - \renewcommand{\@arrow@below@anchor}{north} - \renewcommand{\@arrow@argument@anchor}{ - \node(@arrow@center) at ($(\tikzchainprevious.south east)+(.5\@arrow@length@actual+.707\@rxn@node@distance,-.5\@arrow@length@actual-.707\@rxn@node@distance)$) {}; + \renewcommand{\mC@arrow@end}{\mC@arrow@length@actual,-\mC@arrow@length@actual} + \renewcommand{\mC@arrow@currentabove}{above right} + \renewcommand{\mC@arrow@currentbelow}{below left} + \renewcommand{\mC@arrow@above@anchor}{south} + \renewcommand{\mC@arrow@below@anchor}{north} + \renewcommand{\mC@arrow@argument@anchor}{ + \node(@arrow@center) at ($(\tikzchainprevious.south east)+(.5\mC@arrow@length@actual+.707\mC@rxn@node@distance,-.5\mC@arrow@length@actual-.707\mC@rxn@node@distance)$) {}; } - \renewcommand{\@arrow@argument@angle}{-45} - \renewcommand{\@arrow@rotate}{-45} - \renewcommand{\@arrow@start@up}{0.02,0.02} - \renewcommand{\@arrow@start@down}{-0.02,-0.02} - \renewcommand{\@arrow@cross@base@x}{-.1em} - \renewcommand{\@arrow@cross@base@y}{.1em} - \renewcommand{\@arrow@cross@angle}{15} - \renewcommand{\@arrow@cross@length}{.7em} + \renewcommand{\mC@arrow@argument@angle}{-45} + \renewcommand{\mC@arrow@rotate}{-45} + \renewcommand{\mC@arrow@start@up}{0.02,0.02} + \renewcommand{\mC@arrow@start@down}{-0.02,-0.02} + \renewcommand{\mC@arrow@cross@base@x}{-.1em} + \renewcommand{\mC@arrow@cross@base@y}{.1em} + \renewcommand{\mC@arrow@cross@angle}{15} + \renewcommand{\mC@arrow@cross@length}{.7em} }{ \PackageError{mychemistry}{Unknown arrow direction}% oder Fehler } @@ -419,26 +472,26 @@ } % Pfeiltyp ---------------------------------------------------------------------------- % -\newcommand{\@arrow@drawing}{} -\define@key{arrow}{type}[\@arrow@type]{% - \renewcommand{\@arrow@currenttype}{#1} +\newcommand{\mC@arrow@drawing}{} +\define@key{arrow}{type}[\mC@arrow@type]{% + \renewcommand{\mC@arrow@currenttype}{#1} \ifthenelse{\equal{#1}{->}}{ - \renewcommand{\@arrow@drawing}{\draw[->,thick,text height=0] (0,0) -- node[pos=.5](@arrow@center){} ++(\@arrow@end);} + \renewcommand{\mC@arrow@drawing}{\draw[->,thick,text height=0] (0,0) -- node[pos=.5](@arrow@center){} ++(\mC@arrow@end);} }{ \ifthenelse{\equal{#1}{<->}}{ - \renewcommand{\@arrow@drawing}{\draw[<->,thick,text height=0] (0,0) -- node[pos=.5](@arrow@center){} ++(\@arrow@end);} + \renewcommand{\mC@arrow@drawing}{\draw[<->,thick,text height=0] (0,0) -- node[pos=.5](@arrow@center){} ++(\mC@arrow@end);} }{ \ifthenelse{\equal{#1}{<-}}{ - \renewcommand{\@arrow@drawing}{\draw[<-,thick,text height=0] (0,0) -- node[pos=.5](@arrow@center){} ++(\@arrow@end);} + \renewcommand{\mC@arrow@drawing}{\draw[<-,thick,text height=0] (0,0) -- node[pos=.5](@arrow@center){} ++(\mC@arrow@end);} }{ \ifthenelse{\equal{#1}{<=>}}{ - \renewcommand{\@arrow@drawing}{\draw[-left to,thick,text height=0] (\@arrow@start@up) -- ++(\@arrow@end);\draw[left to-,thick,text height=0] (\@arrow@start@down) -- ++(\@arrow@end);\draw[draw=none] (0,0) -- node[pos=.5](@arrow@center){} ++(\@arrow@end);} + \renewcommand{\mC@arrow@drawing}{\draw[-left to,thick,text height=0] (\mC@arrow@start@up) -- ++(\mC@arrow@end);\draw[left to-,thick,text height=0] (\mC@arrow@start@down) -- ++(\mC@arrow@end);\draw[draw=none] (0,0) -- node[pos=.5](@arrow@center){} ++(\mC@arrow@end);} }{ \ifthenelse{\equal{#1}{-|>}}{ - \setlength{\@arrow@argument@aboveshift}{.75em} - \setlength{\@arrow@argument@belowshift}{.75em} - \renewcommand{\@arrow@cross@draw}{\draw[thick] ($(@arrow@center.base) + (\@arrow@cross@base@x,\@arrow@cross@base@y) + (\@arrow@cross@angle:\@arrow@cross@length)$) -- ($(@arrow@center.base) + (\@arrow@cross@base@x,\@arrow@cross@base@y) + (\@arrow@cross@angle-180:\@arrow@cross@length)$);\draw[thick] ($(@arrow@center.base) + (-\@arrow@cross@base@x,-\@arrow@cross@base@y) + (\@arrow@cross@angle:\@arrow@cross@length)$) -- ($(@arrow@center.base) + (-\@arrow@cross@base@x,-\@arrow@cross@base@y) + (\@arrow@cross@angle-180:\@arrow@cross@length)$);} - \renewcommand{\@arrow@drawing}{\draw[->,thick,text height=0] (0,0) -- node[pos=.5](@arrow@center){} ++(\@arrow@end);\@arrow@cross@draw} + \setlength{\mC@arrow@argument@aboveshift}{.75em} + \setlength{\mC@arrow@argument@belowshift}{.75em} + \renewcommand{\mC@arrow@cross@draw}{\draw[thick] ($(@arrow@center.base) + (\mC@arrow@cross@base@x,\mC@arrow@cross@base@y) + (\mC@arrow@cross@angle:\mC@arrow@cross@length)$) -- ($(@arrow@center.base) + (\mC@arrow@cross@base@x,\mC@arrow@cross@base@y) + (\mC@arrow@cross@angle-180:\mC@arrow@cross@length)$);\draw[thick] ($(@arrow@center.base) + (-\mC@arrow@cross@base@x,-\mC@arrow@cross@base@y) + (\mC@arrow@cross@angle:\mC@arrow@cross@length)$) -- ($(@arrow@center.base) + (-\mC@arrow@cross@base@x,-\mC@arrow@cross@base@y) + (\mC@arrow@cross@angle-180:\mC@arrow@cross@length)$);} + \renewcommand{\mC@arrow@drawing}{\draw[->,thick,text height=0] (0,0) -- node[pos=.5](@arrow@center){} ++(\mC@arrow@end);\mC@arrow@cross@draw} }{ \PackageError{mychemistry}{Unknown arrow type}% oder Fehler } @@ -449,119 +502,119 @@ }% % ------------------------------------------------------------------------------------- % % Maße der Nodes der Pfeilargumente bestimmen, größere später an Pfeil weitergeben -\newlength{\@mc@height@A} -\newlength{\@mc@height@B} -\newlength{\@arrow@argument@height} -\newlength{\@mc@width@A} -\newlength{\@mc@width@B} -\newlength{\@arrow@argument@width} -\newcommand{\@mc@savenode}{% - \global\let\@mc@minx=\pgfpositionnodelaterminx% - \global\let\@mc@maxx=\pgfpositionnodelatermaxx% - \global\let\@mc@miny=\pgfpositionnodelaterminy% - \global\let\@mc@maxy=\pgfpositionnodelatermaxy% +\newlength{\mC@height@A} +\newlength{\mC@height@B} +\newlength{\mC@arrow@argument@height} +\newlength{\mC@width@A} +\newlength{\mC@width@B} +\newlength{\mC@arrow@argument@width} +\newcommand{\mC@savenode}{% + \global\let\mC@minx=\pgfpositionnodelaterminx% + \global\let\mC@maxx=\pgfpositionnodelatermaxx% + \global\let\mC@miny=\pgfpositionnodelaterminy% + \global\let\mC@maxy=\pgfpositionnodelatermaxy% }% % der nächste Befehl benötigt pgf v2.10! -\newcommand{\@mc@largernode}[2]{ +\newcommand{\mC@largernode}[2]{ \@ifundefined{pgfpositionnodelater}{ \PackageError{mychemistry}{The command \string\pgfpositionnodelater is undefined. Make sure, you have installed the latest version of pgf.} }{} - {\pgfpositionnodelater{\@mc@savenode} + {\pgfpositionnodelater{\mC@savenode} \node{#1}; - \setlength{\@mc@width@A}{\@mc@maxx}% - \addtolength{\@mc@width@A}{-\@mc@minx} - \setlength{\@mc@height@A}{\@mc@maxy}% - \addtolength{\@mc@height@A}{-\@mc@miny} + \setlength{\mC@width@A}{\mC@maxx}% + \addtolength{\mC@width@A}{-\mC@minx} + \setlength{\mC@height@A}{\mC@maxy}% + \addtolength{\mC@height@A}{-\mC@miny} \node{#2}; - \setlength{\@mc@width@B}{\@mc@maxx}% - \addtolength{\@mc@width@B}{-\@mc@minx} - \setlength{\@mc@height@B}{\@mc@maxy}% - \addtolength{\@mc@height@B}{-\@mc@miny} - \pgfmathsetlength{\@arrow@argument@width}{max(\@mc@width@A,\@mc@width@B)} - \pgfmathsetlength{\@arrow@argument@height}{max(\@mc@height@A,\@mc@height@B)} - \global\@arrow@argument@width=\@arrow@argument@width - \global\@arrow@argument@height=\@arrow@argument@height + \setlength{\mC@width@B}{\mC@maxx}% + \addtolength{\mC@width@B}{-\mC@minx} + \setlength{\mC@height@B}{\mC@maxy}% + \addtolength{\mC@height@B}{-\mC@miny} + \pgfmathsetlength{\mC@arrow@argument@width}{max(\mC@width@A,\mC@width@B)} + \pgfmathsetlength{\mC@arrow@argument@height}{max(\mC@height@A,\mC@height@B)} + \global\mC@arrow@argument@width=\mC@arrow@argument@width + \global\mC@arrow@argument@height=\mC@arrow@argument@height } } % Pfeil zeichnen ---------------------------------------------------------------------- % -\newcommand{\@arrow}[3][]{ - \renewcommand{\@arrow@length@factor}{\@arrow@currentlength} - \setlength{\@arrow@length@actual}{\@arrow@currentlength\@arrow@length@default} - \ifthenelse{\equal{\@arrow@argument@both}{true}}{ - \@mc@largernode{#2}{#3} +\newcommand{\mC@arrow}[3][]{ + \renewcommand{\mC@arrow@length@factor}{\mC@arrow@currentlength} + \setlength{\mC@arrow@length@actual}{\mC@arrow@currentlength\mC@arrow@length@default} + \ifthenelse{\equal{\mC@arrow@argument@both}{true}}{ + \mC@largernode{#2}{#3} }{ - \setlength{\@arrow@argument@width}{0pt} - \setlength{\@arrow@argument@height}{0pt} + \setlength{\mC@arrow@argument@width}{0pt} + \setlength{\mC@arrow@argument@height}{0pt} } - \draw node[on chain=going \@arrow@currentdirection](\@arrow@currentname) {\tikz{ - \@arrow@drawing + \draw node[on chain=going \mC@arrow@currentdirection](\mC@arrow@currentname) {\tikz{ + \mC@arrow@drawing } }; - \@arrow@argument@anchor - \draw node[anchor=\@arrow@above@anchor,rotate=\@arrow@rotate,minimum width=\@arrow@argument@width, minimum height=\@arrow@argument@height] - at ($(@arrow@center.base)+(90+\@arrow@argument@angle:\@arrow@argument@aboveshift)$) {#2}; - \draw node[anchor=\@arrow@below@anchor,rotate=\@arrow@rotate,minimum width=\@arrow@argument@width, minimum height=\@arrow@argument@height] - at ($(@arrow@center.base)+(-90+\@arrow@argument@angle:\@arrow@argument@belowshift)$) {#3}; - \setlength{\@arrow@argument@aboveshift}{2pt} - \setlength{\@arrow@argument@belowshift}{2pt} + \mC@arrow@argument@anchor + \draw node[anchor=\mC@arrow@above@anchor,rotate=\mC@arrow@rotate,minimum width=\mC@arrow@argument@width, minimum height=\mC@arrow@argument@height] + at ($(@arrow@center.base)+(90+\mC@arrow@argument@angle:\mC@arrow@argument@aboveshift)$) {#2}; + \draw node[anchor=\mC@arrow@below@anchor,rotate=\mC@arrow@rotate,minimum width=\mC@arrow@argument@width, minimum height=\mC@arrow@argument@height] + at ($(@arrow@center.base)+(-90+\mC@arrow@argument@angle:\mC@arrow@argument@belowshift)$) {#3}; + \setlength{\mC@arrow@argument@aboveshift}{2pt} + \setlength{\mC@arrow@argument@belowshift}{2pt} } % Voreinstellungen: \presetkeys% {arrow} - {direction=\@arrow@direction,length=\@arrow@length,type=\@arrow@type,aboveshift=\@arrow@argument@shift,belowshift=\@arrow@argument@shift} + {direction=\mC@arrow@direction,length=\mC@arrow@length,type=\mC@arrow@type,aboveshift=\mC@arrow@argument@shift,belowshift=\mC@arrow@argument@shift} {} % Eigentlicher Befehl: \providecommand{\arrow}[3][]{ \setkeys{arrow}{#1} - \@arrow{#2}{#3} + \mC@arrow{#2}{#3} } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % MERGE ------------------------------------------------------------------------------- % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\@merge@direction}{below} -\newcommand{\@merge@to}{} -\newcommand{\@merge@from@one}{} -\newcommand{\@merge@from@two}{} -\newcommand{\@merge}[3]{ - \renewcommand{\@merge@to}{#1} - \renewcommand{\@merge@from@one}{#2} - \renewcommand{\@merge@from@two}{#3} +\newcommand{\mC@merge@direction}{below} +\newcommand{\mC@merge@to}{} +\newcommand{\mC@merge@from@one}{} +\newcommand{\mC@merge@from@two}{} +\newcommand{\mC@merge}[3]{ + \renewcommand{\mC@merge@to}{#1} + \renewcommand{\mC@merge@from@one}{#2} + \renewcommand{\mC@merge@from@two}{#3} } % Basisbefehle ------------------------------------------------------------------------ % -\newcommand{\@merge@right}{ - \draw[stealth-,thick] ($(\@merge@to.west)+(-1em,0)$) -- ($(\@merge@to.west)+(-4em,0)$) node(crossing) {}; - \draw[thick] ($(\@merge@from@one.east)+(1em,0)$) -| (crossing.base); - \draw[thick] ($(\@merge@from@two.east)+(1em,0)$) -| (crossing.base); -} -\newcommand{\@merge@above}{ - \draw[stealth-,thick] ($(\@merge@to.south)+(0,-1em)$) -- ($(\@merge@to.south)+(0,-4em)$) node(crossing) {}; - \draw[thick] (crossing.base) -| ($(\@merge@from@one.north)+(0,1em)$); - \draw[thick] (crossing.base) -| ($(\@merge@from@two.north)+(0,1em)$); -} -\newcommand{\@merge@left}{ - \draw[stealth-,thick] ($(\@merge@to.east)+(1em,0)$) -- ($(\@merge@to.east)+(4em,0)$) node(crossing) {}; - \draw[thick] ($(\@merge@from@one.west)+(-1em,0)$) -| (crossing.base); - \draw[thick] ($(\@merge@from@two.west)+(-1em,0)$) -| (crossing.base);; -} -\newcommand{\@merge@below}[3]{ - \draw[stealth-,thick] ($(\@merge@to.north)+(0,1em)$) -- ($(\@merge@to.north)+(0,4em)$) node(crossing) {}; - \draw[thick] (crossing.base) -| ($(\@merge@from@one.south)+(0,-1em)$); - \draw[thick] (crossing.base) -| ($(\@merge@from@two.south)+(0,-1em)$); +\newcommand{\mC@merge@right}{ + \draw[stealth-,thick] ($(\mC@merge@to.west)+(-1em,0)$) -- ($(\mC@merge@to.west)+(-4em,0)$) node(crossing) {}; + \draw[thick] ($(\mC@merge@from@one.east)+(1em,0)$) -| (crossing.base); + \draw[thick] ($(\mC@merge@from@two.east)+(1em,0)$) -| (crossing.base); +} +\newcommand{\mC@merge@above}{ + \draw[stealth-,thick] ($(\mC@merge@to.south)+(0,-1em)$) -- ($(\mC@merge@to.south)+(0,-4em)$) node(crossing) {}; + \draw[thick] (crossing.base) -| ($(\mC@merge@from@one.north)+(0,1em)$); + \draw[thick] (crossing.base) -| ($(\mC@merge@from@two.north)+(0,1em)$); +} +\newcommand{\mC@merge@left}{ + \draw[stealth-,thick] ($(\mC@merge@to.east)+(1em,0)$) -- ($(\mC@merge@to.east)+(4em,0)$) node(crossing) {}; + \draw[thick] ($(\mC@merge@from@one.west)+(-1em,0)$) -| (crossing.base); + \draw[thick] ($(\mC@merge@from@two.west)+(-1em,0)$) -| (crossing.base);; +} +\newcommand{\mC@merge@below}[3]{ + \draw[stealth-,thick] ($(\mC@merge@to.north)+(0,1em)$) -- ($(\mC@merge@to.north)+(0,4em)$) node(crossing) {}; + \draw[thick] (crossing.base) -| ($(\mC@merge@from@one.south)+(0,-1em)$); + \draw[thick] (crossing.base) -| ($(\mC@merge@from@two.south)+(0,-1em)$); } % key zur Auswahl --------------------------------------------------------------------- % \define@choicekey{merge}{direction}[\val\nr]{right,above,left,below}[below]{ \ifcase\nr\relax - \@merge@right + \mC@merge@right \or - \@merge@above + \mC@merge@above \or - \@merge@left + \mC@merge@left \or - \@merge@below + \mC@merge@below \fi } % Voreinstellung ---------------------------------------------------------------------- % @@ -571,132 +624,122 @@ {} % eigentlicher Befehl ----------------------------------------------------------------- % \newcommand{\merge}[4][]{ - \@merge{#2}{#3}{#4} + \mC@merge{#2}{#3}{#4} \setkeys{merge}{#1} } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % REAKTIONSSCHEMA --------------------------------------------------------------------- % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newlength{\@rxn@node@distance} -\setlength{\@rxn@node@distance}{1em} -\providecommand{\setrcndist}[1]{ - \ifthenelse{\equal{#1}{}}{ - \setlength{\@rxn@node@distance}{1em} - }{ - \setlength{\@rxn@node@distance}{#1} - } +\newlength{\mC@rxn@node@distance} +\setlength{\mC@rxn@node@distance}{1em} +\mC@def\setrcndist#1{% + \ifx\@empty#1\@empty% + \setlength{\mC@rxn@node@distance}{1em}% + \else% + \setlength{\mC@rxn@node@distance}{#1}% + \fi% } % ------------------------------------------------------------------------------------- % % Schema ------------------------------------------------------------------------------ % % ------------------------------------------------------------------------------------- % -\newcommand{\@mc@rs@scale}{1.0} % Default-Skalierung -\newcommand{\@mc@rs@currentscale}{\@mc@rs@scale} % -\providecommand{\setschemename}[1]{\renewcommand{\@mc@rs@name}{#1}} -\newcommand{\@mc@rs@caption}{} % Beschriftung -\newcommand{\@mc@rs@label}{} % Label -\newcommand{\@mc@rs@currentlabel}{\@mc@rs@label} % +\newcommand{\mC@rs@scale}{1.0} % Default-Skalierung +\newcommand{\mC@rs@currentscale}{\mC@rs@scale} % +\providecommand{\setschemename}[1]{\renewcommand{\mC@rs@name}{#1}} +\newcommand{\mC@rs@caption}{} % Beschriftung +\newcommand{\mC@rs@label}{} % Label +\newcommand{\mC@rs@currentlabel}{\mC@rs@label} % \define@key{rxnscheme}{label}{% % \ifthenelse{\equal{#1}{}}{}{ % - \renewcommand{\@mc@rs@currentlabel}{#1} % + \renewcommand{\mC@rs@currentlabel}{#1} % } % } % \define@key{rxnscheme}{scale}[1.0]{ % Skalierung - \renewcommand{\@mc@rs@currentscale}{#1} % + \renewcommand{\mC@rs@currentscale}{#1} % } % \define@key{rxnscheme}{name}{ % Name - \renewcommand{\@mc@rs@name}{#1} % + \renewcommand{\mC@rs@name}{#1} % } % \define@key{rxnscheme}{placement}{ % Float-Platzierung - \renewcommand{\@mc@rs@currentplacement}{#1} % + \renewcommand{\mC@rs@currentplacement}{#1} % } % -\newcommand{\@mc@rs@align}{center} % -\newcommand{\@mc@rs@right}{right} % -\newcommand{\@mc@rs@center}{center} % -\newcommand{\@mc@rs@left}{left} % -\providecommand{\setschemealign}[1]{ % - \ifthenelse{\equal{#1}{}}{ % - \renewcommand{\@mc@rs@align}{center} % - }{ % - \renewcommand{\@mc@rs@align}{#1} % - } % +\newcommand{\mC@rs@align}{center} % +\newcommand{\mC@rs@right}{right} % +\newcommand{\mC@rs@center}{center} % +\newcommand{\mC@rs@left}{left} % +\mC@def\setschemealign#1{% % + \ifx\@empty#1\@empty % + \renewcommand{\mC@rs@align}{center} % + \else % + \renewcommand{\mC@rs@align}{#1} % + \fi % } % \define@key{rxnscheme}{align}{ % Alignment - \renewcommand{\@mc@rs@align}{#1} + \renewcommand{\mC@rs@align}{#1} } -% Voreinstellungen: -%\presetkeys% -% {rxnscheme} -% {scale=\@mc@rs@scale,align=\@mc@rs@align,label=\@mc@rs@label} -% {} % Gleitumgebung \floatstyle{ruled} -\newfloat{rxnfloat}{\@mc@rs@currentplacement}{rxnscheme} -\floatname{rxnfloat}{\@mc@rs@name} % Name ändern +\newfloat{rxnfloat}{\mC@rs@currentplacement}{rxnscheme} +\floatname{rxnfloat}{\mC@rs@name} % Name ändern % eigentliche Umgebung: \newenvironment{rxnscheme}[2][]{% \setkeys{rxnscheme}{#1} - \renewcommand\@mc@rs@caption{#2} + \renewcommand\mC@rs@caption{#2} \begin{rxnfloat} %\centering - \ifx\@mc@rs@align\@mc@rs@center \centering \fi - \ifx\@mc@rs@align\@mc@rs@left \raggedright \fi - \ifx\@mc@rs@align\@mc@rs@right \raggedleft \fi - \@mc@atomsize\@mc@bondlength\@mc@bondshape - \begin{tikzpicture}[every picture/.style={scale=\@mc@rs@currentscale},start chain,node distance=\@rxn@node@distance,inner sep=0pt] + \ifx\mC@rs@align\mC@rs@center \centering \fi + \ifx\mC@rs@align\mC@rs@left \raggedright \fi + \ifx\mC@rs@align\mC@rs@right \raggedleft \fi + \mC@atomsize\mC@bondlength\mC@bondshape + \begin{tikzpicture}[every picture/.style={scale=\mC@rs@currentscale},start chain,node distance=\mC@rxn@node@distance,inner sep=0pt,outer sep=0pt] }{% \end{tikzpicture}% - \caption{\@mc@rs@caption} - \ifthenelse{\equal{\@mc@rs@currentlabel}{}}{}{\label{\@mc@rs@currentlabel}} + \caption{\mC@rs@caption} + \ifthenelse{\equal{\mC@rs@currentlabel}{}}{}{\label{\mC@rs@currentlabel}} \end{rxnfloat} } % ------------------------------------------------------------------------------------- % % einfache Reaktion ------------------------------------------------------------------- % % ------------------------------------------------------------------------------------- % -\newcommand{\@mc@reaction@scale}{1.0} -\newcommand{\@mc@reaction@align}{center} -\providecommand{\setrxnalign}[1]{ - \ifthenelse{\equal{#1}{}}{ - \renewcommand{\@mc@reaction@align}{center} - }{ - \renewcommand{\@mc@reaction@align}{#1} - } +\newcommand{\mC@reaction@scale}{1.0} +\newcommand{\mC@reaction@align}{center} +\mC@def\setrxnalign#1{ + \ifx\@empty#1\@empty + \renewcommand{\mC@reaction@align}{center} + \else + \renewcommand{\mC@reaction@align}{#1} + \fi } -\newcommand{\@mc@reaction@right}{right} -\newcommand{\@mc@reaction@center}{center} -\newcommand{\@mc@reaction@left}{left} +\newcommand{\mC@reaction@right}{right} +\newcommand{\mC@reaction@center}{center} +\newcommand{\mC@reaction@left}{left} \define@key{rxn}{scale}{ - \renewcommand{\@mc@reaction@scale}{#1}} + \renewcommand{\mC@reaction@scale}{#1}} \define@key{rxn}{align}{ - \renewcommand{\@mc@reaction@align}{#1}} -% Voreinstellungen: -%\presetkeys% -% {rxn} -% {scale=\@mc@reaction@scale,align=\@mc@reaction@align} -% {} + \renewcommand{\mC@reaction@align}{#1}} \newenvironment{rxn}[1][]{% \setkeys{rxn}{#1} - \ifx\@mc@reaction@align\@mc@reaction@center + \ifx\mC@reaction@align\mC@reaction@center \begin{center} \fi - \ifx\@mc@reaction@align\@mc@reaction@left + \ifx\mC@reaction@align\mC@reaction@left \begin{flushleft} \fi - \ifx\@mc@reaction@align\@mc@reaction@right + \ifx\mC@reaction@align\mC@reaction@right \begin{flushright} \fi - \@mc@bondlength\@mc@bondshape\@mc@atomsize - \begin{tikzpicture}[every picture/.style={scale=\@mc@reaction@scale},start chain,node distance=\@rxn@node@distance,inner sep=0pt] + \mC@bondlength\mC@bondshape\mC@atomsize + \begin{tikzpicture}[every picture/.style={scale=\mC@reaction@scale},start chain,node distance=\mC@rxn@node@distance,inner sep=0pt,outer sep=0pt] }{% \end{tikzpicture}% - \ifx\@mc@reaction@align\@mc@reaction@center + \ifx\mC@reaction@align\mC@reaction@center \end{center} \fi - \ifx\@mc@reaction@align\@mc@reaction@left + \ifx\mC@reaction@align\mC@reaction@left \end{flushleft} \fi - \ifx\@mc@reaction@align\@mc@reaction@right + \ifx\mC@reaction@align\mC@reaction@right \end{flushright} \fi } @@ -705,26 +748,50 @@ % REAKTANDEN -------------------------------------------------------------------------- % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Standardreaktand -------------------------------------------------------------------- % -\newcommand{\@mc@reactand}[3][]{\draw node[on chain=going #1](#3) {#2};} -\providecommand{\reactand}[3][right]{\@mc@reactand[#1]{#2}{#3}} +\mC@def\mC@reactand{\@ifnextchar[{\mC@reactand@ii}{\mC@reactand@i}} +\mC@def\mC@reactand@i#1{\def\mC@firstarg{on chain=going right}\let\mC@secondarg\@empty\let\mC@thirdarg\@empty\mC@reactand@iii{#1}} +\mC@def\mC@reactand@ii[#1]#2{ + \let\mC@remainargs\@empty\mC@splitarg{#1} + \ifx\mC@firstarg\@empty\def\mC@reactand@alignment{right}\else\let\mC@reactand@alignment\mC@firstarg\fi + \def\mC@firstarg{on chain=going \mC@reactand@alignment} + \mC@reactand@iii{#2}} +\mC@def\mC@reactand@iii#1{\expandafter\expandafter\expandafter\node\expandafter\expandafter\expandafter[\expandafter\mC@firstarg\expandafter,\mC@thirdarg](\mC@secondarg){#1};} +\mC@def\reactand{\mC@reactand} % Mesomerie --------------------------------------------------------------------------- % -\newcommand{\@mc@mesomeric}[3][]{\draw node[inner sep=1pt,on chain=going #1,left delimiter={[},right delimiter={]}](#3) {#2};} -\providecommand{\mesomeric}[3][right]{\@mc@mesomeric[#1]{\begin{tikzpicture}[start branch]#2\end{tikzpicture}}{#3}} +\mC@def\mC@mesomeric{\@ifnextchar[{\mC@mesomeric@ii}{\mC@mesomeric@i}} +\mC@def\mC@mesomeric@i#1{\def\mC@firstarg{on chain=going right}\let\mC@secondarg\@empty\let\mC@thirdarg\@empty\mC@mesomeric@iii{#1}} +\mC@def\mC@mesomeric@ii[#1]#2{ + \let\mC@remainargs\@empty\mC@splitarg{#1} + \ifx\mC@firstarg\@empty\def\mC@mesomeric@alignment{right}\else\let\mC@mesomeric@alignment\mC@firstarg\fi + \def\mC@firstarg{on chain=going \mC@mesomeric@alignment} + \mC@mesomeric@iii{#2}} +\mC@def\mC@mesomeric@iii#1{\expandafter\expandafter\expandafter\node\expandafter\expandafter\expandafter[\expandafter\mC@firstarg\expandafter,\mC@thirdarg,inner sep=1pt,left delimiter={[},right delimiter={]}](\mC@secondarg){\tikzpicture[start branch]#1\endtikzpicture};} +\mC@def\mesomeric{\mC@mesomeric} + \providecommand{\marrow}[1][right]{\arrow[type=<->,length=.5,direction=#1]{}{}} -\providecommand{\dummy}[1][]{\draw node[on chain,xshift=-\@rxn@node@distance](#1) {};} +% Dummy ------------------------------------------------------------------------------- % +\providecommand{\dummy}[1][]{\draw node[on chain,xshift=-\mC@rxn@node@distance](#1) {};} % Uebergangszustand ------------------------------------------------------------------- % -\newcommand\@mc@transition@name{} -\newcommand{\@mc@transition}[3][]{ - \ifthenelse{\equal{#3}{}}{\renewcommand\@mc@transition@name{a}}{\renewcommand\@mc@transition@name{#3}} - \draw node[inner sep=1pt,on chain=going #1,left delimiter={[},right delimiter={]}](\@mc@transition@name) {#2} node at ($(\@mc@transition@name.north east)+(.25,0)$) {$\ddagger$}; -} -\providecommand{\transition}[3][right]{\@mc@transition[#1]{\begin{tikzpicture}[start branch]#2\end{tikzpicture}}{#3}} +\mC@def\mC@transition@name{x} +\mC@def\mC@transition{\@ifnextchar[{\mC@transition@ii}{\mC@transition@i}} +\mC@def\mC@transition@i#1{\def\mC@firstarg{on chain=going right}\let\mC@secondarg\mC@transition@name\let\mC@thirdarg\@empty\mC@transition@iii{#1}} +\mC@def\mC@transition@ii[#1]#2{ + \let\mC@remainargs\@empty\mC@splitarg{#1} + \ifx\mC@firstarg\@empty\def\mC@transition@alignment{right}\else\let\mC@transition@alignment\mC@firstarg\fi + \def\mC@firstarg{on chain=going \mC@transition@alignment} + \ifx\mC@secondarg\@empty\let\mC@secondarg\mC@transition@name\fi + \mC@transition@iii{#2}} +\mC@def\mC@transition@iii#1{\expandafter\expandafter\expandafter\node\expandafter\expandafter\expandafter[\expandafter\mC@firstarg\expandafter,\mC@thirdarg,inner sep=1pt,left delimiter={[},right delimiter={]}](\mC@secondarg){#1} node at ($(\mC@secondarg.north east)+(.25,0)$) {$\ddagger$};} +\mC@def\transition{\mC@transition} % Abzweigung -------------------------------------------------------------------------- % -\newcommand{\@mc@branch}[3][]{\node[#1] (#3) {#2};} -\providecommand{\branch}[3][on chain=going right]{\@mc@branch[#1]{\begin{tikzpicture}[start branch]#2\end{tikzpicture}}{#3}} +\mC@def\mC@branch{\@ifnextchar[{\mC@branch@ii}{\mC@branch@i}} +\mC@def\mC@branch@i#1{\def\mC@firstarg{on chain=going right}\let\mC@secondarg\@empty\let\mC@thirdarg\@empty\mC@branch@iii{#1}} +\mC@def\mC@branch@ii[#1]#2{\let\mC@remainargs\@empty\mC@splitarg{#1}\ifx\mC@firstarg\@empty\def\mC@firstarg{on chain=going right}\fi\mC@branch@iii{#2}} +\mC@def\mC@branch@iii#1{\expandafter\expandafter\expandafter\node\expandafter\expandafter\expandafter[\expandafter\mC@firstarg\expandafter,\mC@thirdarg](\mC@secondarg){\tikzpicture[start branch]#1\endtikzpicture};} +\mC@def\branch{\mC@branch} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Sonstiges --------------------------------------------------------------------------- % @@ -732,99 +799,140 @@ % Elektronenverschiebungspfeile ------------------------------------------------------- % \providecommand{\elmove}[5][->,red,shorten <=3pt,shorten >=1pt]{\chemmove{\draw[#1](#2).. controls +(#3) and +(#5)..(#4);}} % Bindungslänge ----------------------------------------------------------------------- % -\newcommand{\@mc@bondlength}{\setatomsep{1.8em}} -\providecommand{\bondlength}[1]{ - \ifthenelse{\equal{#1}{}}{ - \renewcommand{\@mc@bondlength}{\setatomsep{1.8em}} - }{ - \renewcommand{\@mc@bondlength}{\setatomsep{#1}} - } -} +\newcommand{\mC@bondlength}{\setatomsep{1.8em}} +\mC@def\setbondlength#1{ + \ifx\@empty#1\@empty + \renewcommand{\mC@bondlength}{\setatomsep{1.8em}} + \else + \renewcommand{\mC@bondlength}{\setatomsep{#1}} + \fi +} +\let\bondlength\setbondlength % Keilbindungen ----------------------------------------------------------------------- % -\newcommand{\@mc@bondshape@one}{3pt} -\newcommand{\@mc@bondshape@two}{.5pt} -\newcommand{\@mc@bondshape@three}{1pt} -\providecommand{\bondshape}[3]{ - \ifthenelse{\equal{#1}{}}{ - \renewcommand{\@mc@bondshape@one}{3pt} - }{ - \renewcommand{\@mc@bondshape@one}{#1} - } - \ifthenelse{\equal{#2}{}}{ - \renewcommand{\@mc@bondshape@two}{.5pt} - }{ - \renewcommand{\@mc@bondshape@two}{#2} - } - \ifthenelse{\equal{#3}{}}{ - \renewcommand{\@mc@bondshape@three}{1pt} - }{ - \renewcommand{\@mc@bondshape@three}{#3} - } -} -\newcommand{\@mc@bondshape}{\setcrambond{\@mc@bondshape@one}{\@mc@bondshape@two}{\@mc@bondshape@three}} +\mC@def\mC@bondshape@one{3pt} +\mC@def\mC@bondshape@two{.5pt} +\mC@def\mC@bondshape@three{1pt} +\mC@def\setbondshape#1#2#3{ + \ifx\@empty#1\@empty + \renewcommand{\mC@bondshape@one}{3pt} + \else + \renewcommand{\mC@bondshape@one}{#1} + \fi + \ifx\@empty#2\@empty + \renewcommand{\mC@bondshape@two}{.5pt} + \else + \renewcommand{\mC@bondshape@two}{#2} + \fi + \ifx\@empty#3\@empty + \renewcommand{\mC@bondshape@three}{1pt} + \else + \renewcommand{\mC@bondshape@three}{#3} + \fi +} +\let\bondshape\setbondshape +\mC@def\mC@bondshape{\setcrambond{\mC@bondshape@one}{\mC@bondshape@two}{\mC@bondshape@three}} % Atomgröße --------------------------------------------------------------------------- % -\newcommand{\@mc@atomsize}{\small} -\providecommand{\atomsize}[1]{ - \ifthenelse{\equal{#1}{}}{ - \renewcommand{\@mc@atomsize}{\small} - }{ - \renewcommand{\@mc@atomsize}{#1} - } -} +\mC@def\mC@atomsize{\small} +\mC@def\setatomsize#1{ + \ifx\@empty#1\@empty + \renewcommand{\mC@atomsize}{\small} + \else + \renewcommand{\mC@atomsize}{#1} + \fi +} +\let\atomsize\setatomsize +% Plus -------------------------------------------------------------------------------- % +\mC@def\mC@chemand{\@ifnextchar[{\mC@chemand@ii}{\mC@chemand@i}} +\mC@def\mC@chemand@i{\def\mC@firstarg{on chain=going right}\let\mC@secondarg\@empty\let\mC@thirdarg\@empty\mC@chemand@iii} +\mC@def\mC@chemand@ii[#1]{ + \let\mC@remainargs\@empty\mC@splitarg{#1} + \ifx\mC@firstarg\@empty\def\mC@chemand@alignment{right}\else\let\mC@chemand@alignment\mC@firstarg\fi + \def\mC@firstarg{on chain=going \mC@chemand@alignment} + \mC@chemand@iii} +\mC@def\mC@chemand@iii{\expandafter\expandafter\expandafter\node\expandafter\expandafter\expandafter[\expandafter\mC@firstarg\expandafter,\mC@thirdarg](\mC@secondarg){\chemsign[0pt]{+}};} +\mC@def\chemand{\mC@chemand} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Setup myChemistry ------------------------------------------------------------------- % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\mC@def\mCsetup#1{\setkeys{setup}{#1}} +\define@key{setup}{arrowlength}[5em]{% + \setarrowlength{#1}} +\define@key{setup}{atomsize}[\small]{% + \setatomsize{#1}} +\define@key{setup}{bondlength}[1.8em]{% + \setbondlength{#1}} +\define@key{setup}{rcndist}[1em]{% + \setrcndist{#1}} +\define@key{setup}{rxnalign}[center]{% + \setrxnalign{#1}} +\define@key{setup}{schemealign}[center]{% + \setschemealign{#1}} +\define@key{setup}{align}[center]{% + \setrxnalign{#1} + \setschemealign{#1}} +\define@key{setup}{reset}[]{% + \setarrowlength{} + \setatomsize{} + \setbondlength{} + \setbondshape{}{}{} + \setrcndist{} + \setrxnalign{} + \setschemealign{}} + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % NODES SICHTBAR/UNSICHTBAR MACHEN ---------------------------------------------------- % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newcommand\makevisible{ - \renewcommand{\@mc@branch}[3][]{\node[draw=purple,dotted,##1] (##3) {##2};} - \renewcommand{\@mc@reactand}[3][]{\draw node[draw=red!60,solid,on chain=going ##1](##3) {##2};} - \renewcommand{\@mc@mesomeric}[3][]{\draw node[draw=red!60,solid,on chain=going ##1,left delimiter={[},right delimiter={]}](##3) {##2};} - \renewcommand{\@arrow}[3][]{ - \renewcommand{\@arrow@length@factor}{\@arrow@currentlength} - \setlength{\@arrow@length@actual}{\@arrow@currentlength\@arrow@length@default} - \ifthenelse{\equal{\@arrow@argument@both}{true}}{ - \@mc@largernode{##2}{##3} + \def\mC@reactand@iii##1{\expandafter\expandafter\expandafter\node\expandafter\expandafter\expandafter[\expandafter\mC@firstarg\expandafter,\mC@thirdarg,draw=red!60,solid](\mC@secondarg){##1};} + \def\mC@branch@iii##1{\expandafter\expandafter\expandafter\node\expandafter\expandafter\expandafter[\expandafter\mC@firstarg\expandafter,\mC@thirdarg,draw=purple,dotted](\mC@secondarg){\tikzpicture[start branch]##1\endtikzpicture};} + \def\mC@transition@iii##1{\expandafter\expandafter\expandafter\node\expandafter\expandafter\expandafter[\expandafter\mC@firstarg\expandafter,\mC@thirdarg,inner sep=1pt,left delimiter={[},right delimiter={]},draw=red!60,solid](\mC@secondarg){##1} node at ($(\mC@secondarg.north east)+(.25,0)$) {$\ddagger$};} + \renewcommand{\mC@arrow}[3][]{ + \renewcommand{\mC@arrow@length@factor}{\mC@arrow@currentlength} + \setlength{\mC@arrow@length@actual}{\mC@arrow@currentlength\mC@arrow@length@default} + \ifthenelse{\equal{\mC@arrow@argument@both}{true}}{ + \mC@largernode{##2}{##3} }{ - \setlength{\@arrow@argument@width}{0pt} - \setlength{\@arrow@argument@height}{0pt} + \setlength{\mC@arrow@argument@width}{0pt} + \setlength{\mC@arrow@argument@height}{0pt} } - \draw node[solid,on chain=going \@arrow@currentdirection](\@arrow@currentname) {\tikz{ - \@arrow@drawing + \draw node[solid,on chain=going \mC@arrow@currentdirection](\mC@arrow@currentname) {\tikz{ + \mC@arrow@drawing } }; - \@arrow@argument@anchor - \draw node[draw=green!60,solid,anchor=\@arrow@above@anchor,rotate=\@arrow@rotate,minimum width=\@arrow@argument@width, minimum height=\@arrow@argument@height] - at ($(@arrow@center.base)+(90+\@arrow@argument@angle:\@arrow@argument@aboveshift)$) {##2}; - \draw node[draw=blue!60,solid,anchor=\@arrow@below@anchor,rotate=\@arrow@rotate,minimum width=\@arrow@argument@width, minimum height=\@arrow@argument@height] - at ($(@arrow@center.base)+(-90+\@arrow@argument@angle:\@arrow@argument@belowshift)$) {##3}; - \setlength{\@arrow@argument@aboveshift}{2pt} - \setlength{\@arrow@argument@belowshift}{2pt} + \mC@arrow@argument@anchor + \draw node[draw=green!60,solid,anchor=\mC@arrow@above@anchor,rotate=\mC@arrow@rotate,minimum width=\mC@arrow@argument@width, minimum height=\mC@arrow@argument@height] + at ($(@arrow@center.base)+(90+\mC@arrow@argument@angle:\mC@arrow@argument@aboveshift)$) {##2}; + \draw node[draw=blue!60,solid,anchor=\mC@arrow@below@anchor,rotate=\mC@arrow@rotate,minimum width=\mC@arrow@argument@width, minimum height=\mC@arrow@argument@height] + at ($(@arrow@center.base)+(-90+\mC@arrow@argument@angle:\mC@arrow@argument@belowshift)$) {##3}; + \setlength{\mC@arrow@argument@aboveshift}{2pt} + \setlength{\mC@arrow@argument@belowshift}{2pt} } } \newcommand\makeinvisible{ - \renewcommand{\@mc@reactand}[3][]{\draw node[on chain=going ##1](##3) {##2};} - \renewcommand{\@mc@mesomeric}[3][]{\draw node[on chain=going ##1,left delimiter={[},right delimiter={]}](##3) {##2};} - \renewcommand{\@mc@branch}[3][]{\node[##1] (##3) {##2};} - \renewcommand{\@arrow}[3][]{ - \renewcommand{\@arrow@length@factor}{\@arrow@currentlength} - \setlength{\@arrow@length@actual}{\@arrow@currentlength\@arrow@length@default} - \ifthenelse{\equal{\@arrow@argument@both}{true}}{ - \@mc@largernode{##2}{##3} + \def\mC@reactand@iii##1{\expandafter\expandafter\expandafter\node\expandafter\expandafter\expandafter[\expandafter\mC@firstarg\expandafter,\mC@thirdarg](\mC@secondarg){##1};} + \def\mC@branch@iii##1{\expandafter\expandafter\expandafter\node\expandafter\expandafter\expandafter[\expandafter\mC@firstarg\expandafter,\mC@thirdarg](\mC@secondarg){\tikzpicture[start branch]##1\endtikzpicture};} + \def\mC@transition@iii##1{\expandafter\expandafter\expandafter\node\expandafter\expandafter\expandafter[\expandafter\mC@firstarg\expandafter,\mC@thirdarg,inner sep=1pt,left delimiter={[},right delimiter={]}](\mC@secondarg){##1} node at ($(\mC@secondarg.north east)+(.25,0)$) {$\ddagger$};} + \renewcommand{\mC@arrow}[3][]{ + \renewcommand{\mC@arrow@length@factor}{\mC@arrow@currentlength} + \setlength{\mC@arrow@length@actual}{\mC@arrow@currentlength\mC@arrow@length@default} + \ifthenelse{\equal{\mC@arrow@argument@both}{true}}{ + \mC@largernode{##2}{##3} }{ - \setlength{\@arrow@argument@width}{0pt} - \setlength{\@arrow@argument@height}{0pt} + \setlength{\mC@arrow@argument@width}{0pt} + \setlength{\mC@arrow@argument@height}{0pt} } - \draw node[on chain=going \@arrow@currentdirection](\@arrow@currentname) {\tikz{ - \@arrow@drawing + \draw node[on chain=going \mC@arrow@currentdirection](\mC@arrow@currentname) {\tikz{ + \mC@arrow@drawing } }; - \@arrow@argument@anchor - \draw node[anchor=\@arrow@above@anchor,rotate=\@arrow@rotate,minimum width=\@arrow@argument@width, minimum height=\@arrow@argument@height] - at ($(@arrow@center.base)+(90+\@arrow@argument@angle:\@arrow@argument@aboveshift)$) {##2}; - \draw node[anchor=\@arrow@below@anchor,rotate=\@arrow@rotate,minimum width=\@arrow@argument@width, minimum height=\@arrow@argument@height] - at ($(@arrow@center.base)+(-90+\@arrow@argument@angle:\@arrow@argument@belowshift)$) {##3}; - \setlength{\@arrow@argument@aboveshift}{2pt} - \setlength{\@arrow@argument@belowshift}{2pt} + \mC@arrow@argument@anchor + \draw node[anchor=\mC@arrow@above@anchor,rotate=\mC@arrow@rotate,minimum width=\mC@arrow@argument@width, minimum height=\mC@arrow@argument@height] + at ($(@arrow@center.base)+(90+\mC@arrow@argument@angle:\mC@arrow@argument@aboveshift)$) {##2}; + \draw node[anchor=\mC@arrow@below@anchor,rotate=\mC@arrow@rotate,minimum width=\mC@arrow@argument@width, minimum height=\mC@arrow@argument@height] + at ($(@arrow@center.base)+(-90+\mC@arrow@argument@angle:\mC@arrow@argument@belowshift)$) {##3}; + \setlength{\mC@arrow@argument@aboveshift}{2pt} + \setlength{\mC@arrow@argument@belowshift}{2pt} } } % ------------------------------------------------------------------------------------- % |