diff options
author | Karl Berry <karl@freefriends.org> | 2020-03-26 21:31:31 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2020-03-26 21:31:31 +0000 |
commit | 43d422c5abd7a05708ebb2dab98b18043436fd08 (patch) | |
tree | c6d5c9da90a8a76ea859e051b3065e0535e19161 /Master/texmf-dist/tex/latex/mychemistry | |
parent | 92c0c09db1a4291c5cf027d25557ccb55bbefd2a (diff) |
rm mychemistry, obsolete on ctan
git-svn-id: svn://tug.org/texlive/trunk@54565 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/mychemistry')
-rw-r--r-- | Master/texmf-dist/tex/latex/mychemistry/mychemistry.sty | 1557 |
1 files changed, 0 insertions, 1557 deletions
diff --git a/Master/texmf-dist/tex/latex/mychemistry/mychemistry.sty b/Master/texmf-dist/tex/latex/mychemistry/mychemistry.sty deleted file mode 100644 index 089ac37b854..00000000000 --- a/Master/texmf-dist/tex/latex/mychemistry/mychemistry.sty +++ /dev/null @@ -1,1557 +0,0 @@ -% -------------------------------------------------------------------------- -% the MYCHEMISTRY package -% -% create reaction schemes with LaTeX and chemfig -% -% -------------------------------------------------------------------------- -% Clemens Niederberger -% Web: https://www.bitbucket.org/cgnieder/mychemistry -% E-Mail: contact@mychemistry.eu -% -------------------------------------------------------------------------- -% If you have any ideas, questions, suggestions or bugs to report, please -% feel free to contact me. -% -------------------------------------------------------------------------- -% Copyright 2011--2012 Clemens Niederberger -% -% This work may be distributed and/or modified under the -% conditions of the LaTeX Project Public License, either version 1.3 -% of this license or (at your option) any later version. -% The latest version of this license is in -% http://www.latex-project.org/lppl.txt -% and version 1.3 or later is part of all distributions of LaTeX -% version 2005/12/01 or later. -% -% This work has the LPPL maintenance status `maintained'. -% -% The Current Maintainer of this work is Clemens Niederberger. -% -% This work consists of the files mychemistrysty, mychemistry_en.tex, -% README and the derived file mychemistry_en.pdf. -% -------------------------------------------------------------------------- -\ProvidesPackage{mychemistry}[2012/12/19 v1.99b create reaction schemes with LaTeX and chemfig] -\RequirePackage{etoolbox,float,xkeyval,chemfig,chemmacros} -\usetikzlibrary{ - arrows, - positioning, - decorations.pathmorphing, - shapes, - calc, - matrix, - chains, - scopes, - intersections} - -% -------------------------------------------------------------------------- -% Tools -\newif\ifmCh@strict -\newif\ifmCh@draft -\def\mCh@if@strict{% - \ifmCh@strict\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi} - -\def\mCh@error#1#2{% - \mCh@if@strict - {\PackageError{mychemistry}{#1}{#2}} - {\PackageWarning{mychemistry}{#1}{#2}}} - -\def\mCh@strict@error#1#2{% - \begingroup - \mCh@stricttrue - \mCh@error{#1}{#2}% - \endgroup} - -\def\mCh@def#1{% - \ifdef{#1}{% - \mCh@strict@error{already defined}{mychemistry tries to define \string#1 but - it seems it is already defined. Please contact the author.}% - \@gobble - }{\def#1}} - -% "variablen" definieren -\mCh@def\mCh@strip@bs{\expandafter\@gobble\string} -\mCh@def\mCh@ifis@variable#1#2#3{% - \ifcsdef{mCh@variable@\mCh@strip@bs#1} - {#2} - {\mCh@error{variable \string#1 undefined}{}#3}} -\mCh@def\mCh@new@variable#1{% - \ifcsdef{mCh@variable@\mCh@strip@bs#1} - {\mCh@error{variable \string#1 already defined. I'm doing nothing!}{}} - {\csdef{mCh@variable@\mCh@strip@bs#1}{}\csdef{mCh@\mCh@strip@bs#1}{}}} -\mCh@def\mCh@set@variable#1#2{% - \mCh@ifis@variable{#1}{\csdef{mCh@\mCh@strip@bs#1}{#2}}{\@gobble}} -\mCh@def\mCh@xset@variable#1#2{% - \mCh@ifis@variable{#1}{\csedef{mCh@\mCh@strip@bs#1}{#2}}{\@gobble}} -\mCh@def\mCh@clear@variable#1{% - \mCh@ifis@variable{#1}{\csdef{mCh@\mCh@strip@bs#1}{}}{}} -\mCh@def\mCh@let@variable#1#2{% - \mCh@ifis@variable{#1}{\mCh@ifis@variable{#2} - {\csletcs{mCh@\mCh@strip@bs#1}{mCh@\mCh@strip@bs#2}}{}}{}} -\mCh@def\mCh@empty@variable#1{% - \mCh@ifis@variable{#1}{\cslet{mCh@\mCh@strip@bs#1}\@empty}{}} -\mCh@def\mCh@ifeq@variable#1#2#3#4{% - \mCh@ifis@variable{#1}{\mCh@ifis@variable{#2} - {\ifcsequal{mCh@\mCh@strip@bs#1}{mCh@\mCh@strip@bs#2}{#3}{#4}}{}}{}} -\mCh@def\mCh@ifempty@variable#1#2#3{% - \ifcsequal{mCh@\mCh@strip@bs#1}{@empty}{#2}{#3}} - -\mCh@new@variable\true -\mCh@new@variable\false - -\mCh@set@variable\true{true} -\mCh@set@variable\false{false} - -% Optional Argument Analysis -% is #2 part of #1? (inspired by \CF@if@instr by Christian Tellechea) -\mCh@def\mCh@if@instr#1#2{% - \def\mCh@if@instr@i##1#2##2\@nil{% - \ifstrempty{##2}{\@secondoftwo}{\@firstoftwo}}% - \mCh@if@instr@i#1\@@nil#2\@nil -} - -\mCh@new@variable\firstarg -\mCh@new@variable\secondarg -\mCh@new@variable\thirdarg - -% Am ersten , splitten, #1 in #3 speichern, #2 in \mCh@remainargs -% (das Makro ist eine Kopie von \CF@analyze@movearg in chemfig.tex von Christian Tellechea) -\mCh@def\mCh@splitfirst#1,#2\@nil#3{% - \def#3{#1}\def\mCh@remainargs{#2}% -} - -% ein durch , in 3 Teile getrenntes Argument splitten -% (das Makro ist eine Abwandlung von \CF@analyze@movearg in chemfig.tex von Christian Tellechea) -\mCh@def\mCh@splitarg#1{% - \mCh@if@instr{#1}{,} - {\expandafter\mCh@splitfirst#1\@nil\mCh@firstarg} - {\mCh@set@variable\firstarg{#1}}% - \expandafter\mCh@if@instr\expandafter{\mCh@remainargs}{,} - {\expandafter\mCh@splitfirst\mCh@remainargs\@nil\mCh@secondarg}{\expandafter\mCh@set@variable\expandafter\secondarg\expandafter{\mCh@remainargs}}% - \ifx\mCh@remainargs\mCh@secondarg - \mCh@empty@variable\thirdarg - \else - \expandafter\mCh@set@variable\expandafter\thirdarg\expandafter{\mCh@remainargs}% - \fi -} - -% -------------------------------------------------------------------------- -% options -\define@key[MC]{mychemistry.sty}{strict}{\mCh@stricttrue} -\DeclareOptionX[MC]{strict}{\mCh@stricttrue} - -\define@key[MC]{mychemistry.sty}{draft}{\mCh@stricttrue\mCh@drafttrue} -\DeclareOptionX[MC]{draft}{\mCh@stricttrue\mCh@drafttrue} - -\define@key[MC]{mychemistry.sty}{final}{\mCh@strictfalse\mCh@draftfalse} -\DeclareOptionX[MC]{final}{\mCh@strictfalse\mCh@draftfalse} - -\mCh@new@variable\rs@placement -\mCh@new@variable\rs@currentplacement - -\mCh@set@variable\rs@placement{hpt} -\mCh@let@variable\rs@currentplacement\rs@placement - -\define@key[MC]{mychemistry.sty}{placement}{% - \mCh@set@variable\rs@placement{#1}} - -\ProcessOptionsX[MC] - -% -------------------------------------------------------------------------- -% language settings -\mCh@new@variable\rs@name -\mCh@set@variable\rs@name{Reaction scheme} - -\RequirePackage{translations} -\NewTranslation{English} {reaction-scheme-(caption-title)} {Reaction scheme} -\NewTranslation{French} {reaction-scheme-(caption-title)} {Sch\'{e}ma r\'{e}actionnel} -\NewTranslation{German} {reaction-scheme-(caption-title)} {Reaktionsschema} -\NewTranslation{Italian} {reaction-scheme-(caption-title)} {Reazione Scheme} -\NewTranslation{Spanish} {reaction-scheme-(caption-title)} {Esquema de Reacci\'{o}n} -\mCh@set@variable\rs@name{\GetTranslation{reaction-scheme-(caption-title)}} - - -% -------------------------------------------------------------------------- -% Direction Analysis -% Richtungen: -\mCh@new@variable\r -\mCh@new@variable\ar -\mCh@new@variable\a -\mCh@new@variable\al -\mCh@new@variable\l -\mCh@new@variable\br -\mCh@new@variable\b -\mCh@new@variable\bl - -\mCh@set@variable\r{right} -\mCh@set@variable\ar{above right} -\mCh@set@variable\a{above} -\mCh@set@variable\al{above left} -\mCh@set@variable\l{left} -\mCh@set@variable\br{below right} -\mCh@set@variable\b{below} -\mCh@set@variable\bl{below left} - -\mCh@new@variable\vert@i -\mCh@new@variable\vert@ii -\mCh@new@variable\vert@iii - -\mCh@set@variable\vert@i{90} -\mCh@set@variable\vert@ii{-90} -\mCh@set@variable\vert@iii{270} - -% Richtung in Bezug auf node oder nicht? -\mCh@new@variable\direction - -\mCh@def\mCh@split@angle#1.#2\@nil#3{% - \def#3{#1}\mCh@set@variable\direction{#2}} -\mCh@def\mCh@wowo@node#1{% - \mCh@if@instr{#1}{.} - {\expandafter\mCh@split@angle#1\@nil\mCh@referred@node} - {\mCh@set@variable\direction{#1}}} - -% Winkel bestimmen: -\mCh@new@variable\angle -\mCh@new@variable\referred@node - -\mCh@def\mCh@analyze@angle#1{% - \mCh@empty@variable\angle - \mCh@empty@variable\referred@node - \mCh@wowo@node{#1}% - \mCh@ifeq@variable\direction\r {\mCh@set@variable\angle{0}}{}% - \mCh@ifeq@variable\direction\ar {\mCh@set@variable\angle{45}}{}% - \mCh@ifeq@variable\direction\a {\mCh@set@variable\angle{90}}{}% - \mCh@ifeq@variable\direction\al {\mCh@set@variable\angle{135}}{}% - \mCh@ifeq@variable\direction\l {\mCh@set@variable\angle{180}}{}% - \mCh@ifeq@variable\direction\bl {\mCh@set@variable\angle{225}}{}% - \mCh@ifeq@variable\direction\b {\mCh@set@variable\angle{270}}{}% - \mCh@ifeq@variable\direction\br {\mCh@set@variable\angle{315}}{}% - \mCh@ifempty@variable\angle{% - \pgfmathparse{\mCh@direction <0 ? int(\mCh@direction+360) : int(\mCh@direction) }% - \mCh@xset@variable\angle{\pgfmathresult}% - }{}% -} -% -------------------------------------------------------------------------- -% PFEILE -% \arrow[<pos>,<type>,<length factor>,<name>,both,<tikz>]{<above>}{<below>} -% Pfeiltypen: -\mCh@new@variable\arrow@type@def -\mCh@new@variable\arrow@type@eqv -\mCh@new@variable\arrow@type@back -\mCh@new@variable\arrow@type@eq -\mCh@new@variable\arrow@type@eqq -\mCh@new@variable\arrow@type@eeq -\mCh@new@variable\arrow@type@not -\mCh@new@variable\arrow@type@pm - -\mCh@set@variable\arrow@type@def{->} -\mCh@set@variable\arrow@type@eqv{<->} -\mCh@set@variable\arrow@type@back{<-} -\mCh@set@variable\arrow@type@eq{<=>} -\mCh@set@variable\arrow@type@eqq{<=>>} -\mCh@set@variable\arrow@type@eeq{<<=>} -\mCh@set@variable\arrow@type@not{-|>} -\mCh@set@variable\arrow@type@pm{-+>} - -% Voreinstellungen -% Pfeillänge -\mCh@new@variable\arrow@length@def -\mCh@new@variable\arrow@length -\mCh@new@variable\arrow@factor - -\mCh@set@variable\arrow@length@def{4em} -\let\mCh@arrow@length\mCh@arrow@length@def -\mCh@set@variable\arrow@factor{1} - -\newrobustcmd\setarrowlength[1]{% - \ifblank{#1} - {\mCh@let@variable\arrow@length\arrow@length@def} - {\mCh@set@variable\arrow@length{#1}}} - -% Label-Abstand -\mCh@new@variable\arrow@label@dist@def -\mCh@new@variable\arrow@label@dist - -\mCh@set@variable\arrow@label@dist@def{.2em} -\mCh@let@variable\arrow@label@dist\arrow@label@dist@def - -\newrobustcmd\setarrowlabel[1]{% - \ifblank{#1} - {\mCh@let@variable\arrow@label@dist\arrow@label@dist@def} - {\mCh@set@variable\arrow@label@dist{#1}}} - -% Pfeildicke -\mCh@new@variable\arrow@linethickness@default -\mCh@new@variable\arrow@linethickness - -\mCh@set@variable\arrow@linethickness@default{semithick} -\mCh@let@variable\arrow@linethickness\arrow@linethickness@default - -\newrobustcmd\setarrowline[1]{% - \ifblank{#1} - {\mCh@let@variable\arrow@linethickness\arrow@linethickness@default} - {\mCh@set@variable\arrow@linethickness{#1}}} - -% Winkel untersuchen, um Label richtig anzubringen -\mCh@new@variable\beta -\mCh@new@variable\arrow@label@anchor@up -\mCh@new@variable\arrow@label@anchor@down -\mCh@new@variable\arrow@label@anchor@add -\mCh@new@variable\arrow@label@anchor@sub -\newcount\mCh@alpha - -\mCh@def\mCh@evaluate@angle#1{ - \mCh@alpha=#1 - \pgfmathparse{cos(\mCh@alpha) > 0} - \ifnum\pgfmathresult=1 - \mCh@set@variable\beta{#1}% - \mCh@set@variable\arrow@label@anchor@up{south}% - \mCh@set@variable\arrow@label@anchor@down{north}% - \ifnum\mCh@alpha<180 - \mCh@set@variable\arrow@label@anchor@add{east}% - \mCh@set@variable\arrow@label@anchor@sub{south}% - \else - \mCh@set@variable\arrow@label@anchor@add{south}% - \mCh@set@variable\arrow@label@anchor@sub{west}% - \fi - \else - \pgfmathparse{cos(\mCh@alpha) == 0}% - \ifnum\pgfmathresult=1 - \mCh@set@variable\beta{0}% - \ifnum\mCh@alpha=90 - \mCh@set@variable\arrow@label@anchor@up{east}% - \mCh@set@variable\arrow@label@anchor@down{west}% - \mCh@set@variable\arrow@label@anchor@add{east}% - \mCh@set@variable\arrow@label@anchor@sub{east}% - \else - \mCh@set@variable\arrow@label@anchor@up{west}% - \mCh@set@variable\arrow@label@anchor@down{east}% - \mCh@set@variable\arrow@label@anchor@add{west}% - \mCh@set@variable\arrow@label@anchor@sub{west}% - \fi - \else - \mCh@set@variable\arrow@label@anchor@up{north}% - \mCh@set@variable\arrow@label@anchor@down{south}% - \ifnum\mCh@alpha=180 - \mCh@set@variable\beta{180-#1}% - \mCh@set@variable\arrow@label@anchor@add{north}% - \mCh@set@variable\arrow@label@anchor@sub{north}% - \fi - \ifnum\mCh@alpha>180 - \mCh@set@variable\beta{180+#1}% - \mCh@set@variable\arrow@label@anchor@add{west}% - \mCh@set@variable\arrow@label@anchor@sub{north}% - \fi - \ifnum\mCh@alpha<180 - \mCh@set@variable\beta{180+#1}% - \mCh@set@variable\arrow@label@anchor@add{north}% - \mCh@set@variable\arrow@label@anchor@sub{east}% - \fi - \fi - \fi -} - -% Maße der Nodes der Pfeilargumente bestimmen, größere später an Pfeil weitergeben -\mCh@new@variable\arrow@both -\mCh@set@variable\arrow@both{both} - -\newlength{\mCh@height@A} -\newlength{\mCh@height@B} -\newlength{\mCh@arrow@label@height} -\newlength{\mCh@width@A} -\newlength{\mCh@width@B} -\newlength{\mCh@arrow@label@width} - -\mCh@def\mCh@savenode{% - \global\let\mCh@minx=\pgfpositionnodelaterminx - \global\let\mCh@maxx=\pgfpositionnodelatermaxx - \global\let\mCh@miny=\pgfpositionnodelaterminy - \global\let\mCh@maxy=\pgfpositionnodelatermaxy -} - -% der nächste Befehl benötigt pgf v2.10! -\mCh@def\mCh@largernode#1#2{% - \ifdef\pgfpositionnodelater{% - \pgfpositionnodelater{\mCh@savenode}% - \node{#1}; - \deflength{\mCh@width@A}{\mCh@maxx-\mCh@minx}% - \deflength{\mCh@height@A}{\mCh@maxy-\mCh@miny}% - \node{#2}; - \deflength{\mCh@width@B}{\mCh@maxx-\mCh@minx}% - \deflength{\mCh@height@B}{\mCh@maxy-\mCh@miny}% - \pgfmathsetlength{\mCh@arrow@label@width}{max(\mCh@width@A,\mCh@width@B)}% - \pgfmathsetlength{\mCh@arrow@label@height}{max(\mCh@height@A,\mCh@height@B)}% - \global\mCh@arrow@label@width=\mCh@arrow@label@width - \global\mCh@arrow@label@height=\mCh@arrow@label@height - }{% - \mCh@error{% - The command \string\pgfpositionnodelater\space is undefined. Make sure, - you have installed the latest version of pgf}{}% - }% -} - -% Pfeil zeichnen: -\newrobustcmd\mCh@arrow[3][]{% - \ifstrempty{#1} - {\mCh@arrow@i}{\mCh@arrow@ii[#1]} - {#2}{#3}} - -\mCh@def\mCh@arrow@i#1#2{% - \node[on chain=going {at=(\tikzchainprevious.0)}, - minimum size=0, - inner sep=3pt, - outer sep=0, - anchor=180, - shift=(0:.5*\mCh@rxn@node@distance)] (@mCh@arrow@start){}; - \node[on chain=going {at=(\tikzchainprevious.0), - shift=($(0:.5*\mCh@arrow@factor*\mCh@arrow@length)$)}, - minimum size=0, - inner sep=3pt, - outer sep=0] (@mCh@arrow@end){}; - \draw[-mCtip,\mCh@arrow@linethickness] - let \n1={0}, \n2={180} - in (@mCh@arrow@start.\n1) --node[pos=.5,inner sep=0](mCh@arrow@center){} - ++($(0:\mCh@arrow@factor*\mCh@arrow@length)$); - \expandafter\node\expandafter[\mCh@arrow@uplabel@visible, - rotate=0, - anchor=south, - inner sep=0] - at ($(mCh@arrow@center)!\mCh@arrow@label@dist!90:(@mCh@arrow@end)$){#1}; - \expandafter\node\expandafter[\mCh@arrow@downlabel@visible, - rotate=0, - anchor=north, - inner sep=0] - at ($(mCh@arrow@center)!\mCh@arrow@label@dist!-90:(@mCh@arrow@end)$){#2}; -} - -\mCh@new@variable\arrow@plusminus -\mCh@new@variable\anchor -\mCh@new@variable\arrow@tikz -\mCh@new@variable\arrow@type@valid -\mCh@new@variable\arrow@type -\mCh@new@variable\arrow@type@actual -\mCh@new@variable\arrow@name - -\mCh@def\mCh@arrow@ii[#1]#2#3{% - \mCh@empty@variable\arrow@plusminus - \mCh@empty@variable\arrow@type - \let\mCh@remainargs\@empty - \mCh@splitarg{#1}% - \mCh@ifempty@variable\firstarg{% erste Option: Richtung - \mCh@set@variable\angle{0}% - \mCh@set@variable\beta{0}% - \mCh@set@variable\arrow@label@anchor@up{south}% - \mCh@set@variable\arrow@label@anchor@down{north}% - \mCh@set@variable\arrow@label@anchor@add{south}% - \mCh@set@variable\arrow@label@anchor@sub{south}% - \mCh@set@variable\anchor{180}% - \mCh@empty@variable\referred@node - }{% - \expandafter\mCh@analyze@angle\expandafter{\mCh@firstarg}% - \mCh@set@variable\anchor{180+\mCh@angle}% - \mCh@evaluate@angle{\mCh@angle}% - } - \mCh@ifempty@variable\referred@node{% - \mCh@set@variable\referred@node{\tikzchainprevious}% - }{}% - \mCh@ifempty@variable\secondarg{}{% zweite Option: Typ - \mCh@set@variable\arrow@type{true} - \mCh@let@variable\arrow@type@actual\secondarg - }% - \let\mCh@remainargs\@empty% - \expandafter\mCh@splitarg\expandafter{\mCh@thirdarg}% - \mCh@ifempty@variable\firstarg{% dritte Option: Längenfaktor - \mCh@set@variable\arrow@factor{1}% - }{% - \mCh@xset@variable\arrow@factor{\mCh@firstarg}% - }% - \mCh@ifempty@variable\secondarg{% vierte Option: Name - \mCh@set@variable\arrow@name{mCh@arrow@center}% - }{% - \mCh@xset@variable\arrow@name{\mCh@secondarg}% - }% - \let\mCh@remainargs\@empty% - \expandafter\mCh@splitarg\expandafter{\mCh@thirdarg}% - \mCh@ifeq@variable\arrow@both\firstarg% fünfte Option: both - {{\mCh@largernode{#2}{#3}}}% - {% - \deflength{\mCh@arrow@label@width}{0pt}% - \deflength{\mCh@arrow@label@height}{0pt}% - }% - \mCh@ifempty@variable\secondarg{% sechste Option: tikz - \mCh@empty@variable\arrow@tikz - }{% - \mCh@xset@variable\arrow@tikz{\mCh@secondarg,\mCh@thirdarg}% - }% - \node[on chain=going {at=(\mCh@referred@node.\mCh@angle)}, - minimum size=0, - inner sep=3pt, - outer sep=0, - anchor=\mCh@anchor, - shift=(\mCh@angle:.5*\mCh@rxn@node@distance)] (@mCh@arrow@start){}; - \node[on chain=going {at=(\tikzchainprevious.\mCh@angle), - shift=($(\mCh@angle:.5*\mCh@arrow@factor*\mCh@arrow@length)$)}, - minimum size=0, - inner sep=3pt, - outer sep=0] (@mCh@arrow@end){}; - \mCh@ifeq@variable\arrow@type\true{% - \mCh@let@variable\arrow@type@valid\false - \mCh@ifeq@variable\arrow@type@actual\arrow@type@eq{% <=> - \mCh@let@variable\arrow@type@valid\true - \expandafter\draw\expandafter[\mCh@arrow@tikz, - -mChtip, - \mCh@arrow@linethickness] - let \n1={20+\mCh@angle}, \n2={160+\mCh@angle} - in (@mCh@arrow@start.\n1) --node[pos=.5,inner sep=0](mCh@arrow@center@up){} - ++($(\mCh@angle:\mCh@arrow@factor*\mCh@arrow@length)$); - \expandafter\draw\expandafter[\mCh@arrow@tikz, - mChtip-, - \mCh@arrow@linethickness] - let \n1={-20+\mCh@angle}, \n2={200+\mCh@angle} - in (@mCh@arrow@start.\n1) --node[pos=.5,inner sep=0](mCh@arrow@center@down){} - ++($(\mCh@angle:\mCh@arrow@factor*\mCh@arrow@length)$); - \draw[draw=none] - let \n1={\mCh@angle}, \n2={180+\mCh@angle} - in (@mCh@arrow@start.\n1) --node[pos=.5,inner sep=0](\mCh@arrow@name){} - ++($(\mCh@angle:\mCh@arrow@factor*\mCh@arrow@length)$); - \expandafter\node\expandafter[\mCh@arrow@uplabel@visible, - rotate=\mCh@beta, - anchor=\mCh@arrow@label@anchor@up, - minimum width=\mCh@arrow@label@width, - minimum height=\mCh@arrow@label@height, - inner sep=0] - at ($(mCh@arrow@center@up)!\mCh@arrow@label@dist!90:(@mCh@arrow@end)$){#2}; - \expandafter\node[\expandafter\mCh@arrow@downlabel@visible, - rotate=\mCh@beta, - anchor=\mCh@arrow@label@anchor@down, - minimum width=\mCh@arrow@label@width, - minimum height=\mCh@arrow@label@height, - inner sep=0] - at ($(mCh@arrow@center@down)!\mCh@arrow@label@dist!-90:(@mCh@arrow@end)$){#3}; - }{}% - \mCh@ifeq@variable\arrow@type@actual\arrow@type@eqq{% <=>> - \mCh@let@variable\arrow@type@valid\true - \expandafter\draw\expandafter[\mCh@arrow@tikz, - -mChtip, - \mCh@arrow@linethickness] - let \n1={20+\mCh@angle}, \n2={160+\mCh@angle} - in (@mCh@arrow@start.\n1) --node[pos=.5,inner sep=0](mCh@arrow@center@up){} - ++($(\mCh@angle:\mCh@arrow@factor*\mCh@arrow@length)$); - \expandafter\draw\expandafter[\mCh@arrow@tikz, - mChtip-, - \mCh@arrow@linethickness] - let \n1={-20+\mCh@angle} - in ($(@mCh@arrow@start.\n1)+(\mCh@angle:.25*\mCh@arrow@factor*\mCh@arrow@length)$) - --node[pos=.5,inner sep=0](mCh@arrow@center@down){} - ++($(\mCh@angle:.5*\mCh@arrow@factor*\mCh@arrow@length)$); - \draw[draw=none] let \n1={\mCh@angle}, \n2={180+\mCh@angle} - in (@mCh@arrow@start.\n1) --node[pos=.5,inner sep=0](\mCh@arrow@name){} - ++($(\mCh@angle:\mCh@arrow@factor*\mCh@arrow@length)$); - \expandafter\node\expandafter[\mCh@arrow@uplabel@visible, - rotate=\mCh@beta, - anchor=\mCh@arrow@label@anchor@up, - minimum width=\mCh@arrow@label@width, - minimum height=\mCh@arrow@label@height, - inner sep=0] - at ($(mCh@arrow@center@up)!\mCh@arrow@label@dist!90:(@mCh@arrow@end)$){#2}; - \expandafter\node\expandafter[\mCh@arrow@downlabel@visible, - rotate=\mCh@beta, - anchor=\mCh@arrow@label@anchor@down, - minimum width=\mCh@arrow@label@width, - minimum height=\mCh@arrow@label@height, - inner sep=0] - at ($(mCh@arrow@center@down)!\mCh@arrow@label@dist!-90:(@mCh@arrow@end)$){#3}; - }{}% - \mCh@ifeq@variable\arrow@type@actual\arrow@type@eeq{% <<=> - \mCh@let@variable\arrow@type@valid\true - \expandafter\draw\expandafter[\mCh@arrow@tikz, - -mChtip, - \mCh@arrow@linethickness] - let \n1={20+\mCh@angle}, \n2={160+\mCh@angle} - in ($(@mCh@arrow@start.\n1)+(\mCh@angle:.25*\mCh@arrow@factor*\mCh@arrow@length)$) - --node[pos=.5,inner sep=0](mCh@arrow@center@up){} - ++($(\mCh@angle:.5*\mCh@arrow@factor*\mCh@arrow@length)$); - \expandafter\draw\expandafter[\mCh@arrow@tikz, - mChtip-, - \mCh@arrow@linethickness] - let \n1={-20+\mCh@angle}, \n2={200+\mCh@angle} - in (@mCh@arrow@start.\n1) --node[pos=.5,inner sep=0](mCh@arrow@center@down){} - ++($(\mCh@angle:\mCh@arrow@factor*\mCh@arrow@length)$); - \draw[draw=none] - let \n1={\mCh@angle}, \n2={180+\mCh@angle} - in (@mCh@arrow@start.\n1) --node[pos=.5,inner sep=0](\mCh@arrow@name){} - ++($(\mCh@angle:\mCh@arrow@factor*\mCh@arrow@length)$); - \expandafter\node\expandafter[\mCh@arrow@uplabel@visible, - rotate=\mCh@beta, - anchor=\mCh@arrow@label@anchor@up, - minimum width=\mCh@arrow@label@width, - minimum height=\mCh@arrow@label@height, - inner sep=0] - at ($(mCh@arrow@center@up)!\mCh@arrow@label@dist!90:(@mCh@arrow@end)$){#2}; - \expandafter\node\expandafter[\mCh@arrow@downlabel@visible, - rotate=\mCh@beta, - anchor=\mCh@arrow@label@anchor@down, - minimum width=\mCh@arrow@label@width, - minimum height=\mCh@arrow@label@height, - inner sep=0] - at ($(mCh@arrow@center@down)!\mCh@arrow@label@dist!-90:(@mCh@arrow@end)$){#3}; - }{}% - \mCh@ifeq@variable\arrow@type@actual\arrow@type@def{% -> - \mCh@let@variable\arrow@type@valid\true - \expandafter\draw\expandafter[\mCh@arrow@tikz, - -mCtip, - \mCh@arrow@linethickness, - \mCh@arrow@tikz] - let \n1={\mCh@angle}, \n2={180+\mCh@angle} - in (@mCh@arrow@start.\n1) --node[pos=.5,inner sep=0](\mCh@arrow@name){} - ++($(\mCh@angle:\mCh@arrow@factor*\mCh@arrow@length)$); - \expandafter\node\expandafter[\mCh@arrow@uplabel@visible, - rotate=\mCh@beta, - anchor=\mCh@arrow@label@anchor@up, - minimum width=\mCh@arrow@label@width, - minimum height=\mCh@arrow@label@height] - at ($(\mCh@arrow@name)!\mCh@arrow@label@dist!90:(@mCh@arrow@end)$){#2}; - \expandafter\node\expandafter[\mCh@arrow@downlabel@visible, - rotate=\mCh@beta, - anchor=\mCh@arrow@label@anchor@down, - minimum width=\mCh@arrow@label@width, - minimum height=\mCh@arrow@label@height] - at ($(\mCh@arrow@name)!\mCh@arrow@label@dist!-90:(@mCh@arrow@end)$){#3}; - }{}% - \mCh@ifeq@variable\arrow@type@actual\arrow@type@eqv{% <-> - \mCh@let@variable\arrow@type@valid\true - \expandafter\draw\expandafter[\mCh@arrow@tikz, - mCtip-mCtip, - \mCh@arrow@linethickness] - let \n1={\mCh@angle}, \n2={180+\mCh@angle} - in (@mCh@arrow@start.\n1) --node[pos=.5,inner sep=0](\mCh@arrow@name){} - ++($(\mCh@angle:\mCh@arrow@factor*\mCh@arrow@length)$); - \expandafter\node\expandafter[\mCh@arrow@uplabel@visible, - rotate=\mCh@beta, - anchor=\mCh@arrow@label@anchor@up, - minimum width=\mCh@arrow@label@width, - minimum height=\mCh@arrow@label@height,inner sep=0] - at ($(\mCh@arrow@name)!\mCh@arrow@label@dist!90:(@mCh@arrow@end)$){#2}; - \expandafter\node\expandafter[\mCh@arrow@downlabel@visible, - rotate=\mCh@beta, - anchor=\mCh@arrow@label@anchor@down, - minimum width=\mCh@arrow@label@width, - minimum height=\mCh@arrow@label@height,inner sep=0] - at ($(\mCh@arrow@name)!\mCh@arrow@label@dist!-90:(@mCh@arrow@end)$){#3}; - }{}% - \mCh@ifeq@variable\arrow@type@actual\arrow@type@back{% <- - \mCh@let@variable\arrow@type@valid\true - \expandafter\draw\expandafter[\mCh@arrow@tikz, - mCtip-, - \mCh@arrow@linethickness] - let \n1={\mCh@angle}, \n2={180+\mCh@angle} - in (@mCh@arrow@start.\n1) --node[pos=.5,inner sep=0](\mCh@arrow@name){} - ++($(\mCh@angle:\mCh@arrow@factor*\mCh@arrow@length)$); - \expandafter\node\expandafter[\mCh@arrow@uplabel@visible, - rotate=\mCh@beta, - anchor=\mCh@arrow@label@anchor@up, - minimum width=\mCh@arrow@label@width, - minimum height=\mCh@arrow@label@height, - inner sep=0] at ($(\mCh@arrow@name)!\mCh@arrow@label@dist!90:(@mCh@arrow@end)$){#2}; - \expandafter\node\expandafter[\mCh@arrow@downlabel@visible, - rotate=\mCh@beta, - anchor=\mCh@arrow@label@anchor@down, - minimum width=\mCh@arrow@label@width, - minimum height=\mCh@arrow@label@height, - inner sep=0] - at ($(\mCh@arrow@name)!\mCh@arrow@label@dist!-90:(@mCh@arrow@end)$){#3}; - }{}% - \mCh@ifeq@variable\arrow@type@actual\arrow@type@not{% -|> - \mCh@let@variable\arrow@type@valid\true - \expandafter\draw\expandafter[\mCh@arrow@tikz, - -mCtip, - \mCh@arrow@linethickness] - let \n1={\mCh@angle}, \n2={180+\mCh@angle} - in (@mCh@arrow@start.\n1) --node[pos=.5,inner sep=0](\mCh@arrow@name){} - ++($(\mCh@angle:\mCh@arrow@factor*\mCh@arrow@length)$); - \expandafter\node\expandafter[\mCh@arrow@uplabel@visible, - rotate=\mCh@beta, - anchor=\mCh@arrow@label@anchor@up, - minimum width=\mCh@arrow@label@width, - minimum height=\mCh@arrow@label@height, - inner sep=0] at ($(\mCh@arrow@name)!.8em!90:(@mCh@arrow@end)$){#2}; - \expandafter\node\expandafter[\mCh@arrow@downlabel@visible, - rotate=\mCh@beta, - anchor=\mCh@arrow@label@anchor@down, - minimum width=\mCh@arrow@label@width, - minimum height=\mCh@arrow@label@height,inner sep=0] - at ($(\mCh@arrow@name)!.8em!-90:(@mCh@arrow@end)$){#3}; - \draw ($(mCh@arrow@center)!.6em!-110:(@mCh@arrow@end)+(\mCh@angle:.1em)$) - --($(mCh@arrow@center)!.6em!70:(@mCh@arrow@end)+(\mCh@angle:.1em)$); - \draw ($(mCh@arrow@center)!.6em!-110:(@mCh@arrow@end)+(180+\mCh@angle:.1em)$) - --($(mCh@arrow@center)!.6em!70:(@mCh@arrow@end)+(180+\mCh@angle:.1em)$); - }{}% - \mCh@ifeq@variable\arrow@type@actual\arrow@type@pm{% -+> - \mCh@let@variable\arrow@type@valid\true - \mCh@let@variable\arrow@plusminus\true - \draw[-mCtip,\mCh@arrow@linethickness] - let \n1={\mCh@angle}, \n2={180+\mCh@angle} - in (@mCh@arrow@start.\n1) --node[pos=.5,inner sep=0](\mCh@arrow@name){} - ++($(\mCh@angle:\mCh@arrow@factor*\mCh@arrow@length)$); - }{}% - \mCh@ifeq@variable\arrow@type@valid\false - {\mCh@error{Unknown arrow type `\mCh@arrow@type@actual'}{}}{}% - }{% default: -> - \expandafter\draw\expandafter[\mCh@arrow@tikz, - -mCtip, - \mCh@arrow@linethickness] - let \n1={\mCh@angle}, \n2={180+\mCh@angle} - in (@mCh@arrow@start.\n1) --node[pos=.5,inner sep=0](\mCh@arrow@name){} - ++($(\mCh@angle:\mCh@arrow@factor*\mCh@arrow@length)$); - \expandafter\node\expandafter[\mCh@arrow@uplabel@visible, - rotate=\mCh@beta, - anchor=\mCh@arrow@label@anchor@up, - minimum width=\mCh@arrow@label@width, - minimum height=\mCh@arrow@label@height,inner sep=0] - at ($(\mCh@arrow@name)!\mCh@arrow@label@dist!90:(@mCh@arrow@end)$){#2}; - \expandafter\node\expandafter[\mCh@arrow@downlabel@visible, - rotate=\mCh@beta, - anchor=\mCh@arrow@label@anchor@down, - minimum width=\mCh@arrow@label@width, - minimum height=\mCh@arrow@label@height,inner sep=0] - at ($(\mCh@arrow@name)!\mCh@arrow@label@dist!-90:(@mCh@arrow@end)$){#3}; - }% - \mCh@ifempty@variable\arrow@plusminus{}{% - \ifstrempty{#2}{}{% - \draw (\mCh@arrow@name.base) edge[bend left] - ++(${0.6667}*(146.3+\mCh@angle:.5*\mCh@arrow@factor*\mCh@arrow@length)$); - \node[anchor=\mCh@arrow@label@anchor@add, - inner sep=\mCh@arrow@label@dist, - minimum width=\mCh@arrow@label@width, - minimum height=\mCh@arrow@label@height] - at ($(\mCh@arrow@name.base)+{0.6667}*(146.3+\mCh@angle:.5*\mCh@arrow@factor*\mCh@arrow@length)$) {#2}; - }% - \ifstrempty{#3}{}{% - \draw (\mCh@arrow@name.base) edge[bend right,-mCtip] - ++(${0.6667}*(33.7+\mCh@angle:.5*\mCh@arrow@factor*\mCh@arrow@length)$); - \node[anchor=\mCh@arrow@label@anchor@sub, - inner sep=\mCh@arrow@label@dist, - minimum width=\mCh@arrow@label@width, - minimum height=\mCh@arrow@label@height] - at ($(\mCh@arrow@name.base)+{0.6667}*(33.7+\mCh@angle:.5*\mCh@arrow@factor*\mCh@arrow@length)$) {#3}; - }% - }% - \mCh@set@variable\arrow@factor{1}% -} - -% eigene Pfeilspitze ------------------------------------------------------------------ % -\pgfarrowsdeclare{mCtip}{mCtip} - {% - \arrowsize=0.2pt - \advance\arrowsize by .5\pgflinewidth - \pgfarrowsleftextend{-4\arrowsize-.5\pgflinewidth}% - \pgfarrowsrightextend{.5\pgflinewidth}% - } - {% - \pgfsetdash{}{0pt}% do not dash - \pgfsetroundjoin% fix join - \pgfsetroundcap% fix cap - \pgfpathmoveto{\pgfpointorigin}% - \pgfpathlineto{\pgfpoint{-3pt}{1pt}}% - \pgfpathlineto{\pgfpoint{-1.5pt}{0pt}}% - \pgfpathlineto{\pgfpoint{-3pt}{-1pt}}% - \pgfpathlineto{\pgfpoint{0pt}{0pt}}% - \pgfusepathqfillstroke - } - -\pgfarrowsdeclare{mChtip}{mChtip} - {% - \arrowsize=0.2pt - \advance\arrowsize by .5\pgflinewidth - \pgfarrowsleftextend{-4\arrowsize-.5\pgflinewidth}% - \pgfarrowsrightextend{.5\pgflinewidth}% - } - {% - \pgfsetdash{}{0pt}% do not dash - \pgfsetroundjoin% fix join - \pgfsetroundcap% fix cap - \pgfpathmoveto{\pgfpoint{0pt}{0pt}}% - \pgfpathlineto{\pgfpoint{-3pt}{1pt}}% - \pgfpathlineto{\pgfpoint{-1.5pt}{0pt}}% - \pgfpathlineto{\pgfpoint{0pt}{0pt}}% - \pgfusepathqfillstroke - } - -% -------------------------------------------------------------------------- -% MERGE -% \merge[<label>,<pos>,<length>]{<target>}{<start a>}{<start b>} -\mCh@new@variable\merge@length -\mCh@new@variable\merge@length@default -\mCh@new@variable\merge@length@value -\mCh@new@variable\merge@arg -\mCh@new@variable\merge@to -\mCh@new@variable\merge@from@one -\mCh@new@variable\merge@from@two - -\mCh@set@variable\merge@length@default{3em} -\mCh@let@variable\merge@length@value\merge@length@default - -% Basisbefehle -\mCh@def\mCh@merge@right{% - \draw[mCtip-,\mCh@arrow@linethickness] - ($(\mCh@merge@to.west)+(-\mCh@rxn@node@distance,0)$) - --node[midway,above,yshift=.1em]{\mCh@merge@arg} - ++(-\mCh@merge@length,0) node(crossing) {}; - \draw[\mCh@arrow@linethickness] - ($(\mCh@merge@from@one.east)+(\mCh@rxn@node@distance,0)$) -| (crossing.base); - \draw[\mCh@arrow@linethickness] - ($(\mCh@merge@from@two.east)+(\mCh@rxn@node@distance,0)$) -| (crossing.base); -} - -\mCh@def\mCh@merge@above{% - \draw[mCtip-,\mCh@arrow@linethickness] - ($(\mCh@merge@to.south)+(0,-\mCh@rxn@node@distance)$) - --node[midway,right,xshift=.1em]{\mCh@merge@arg} - ++(0,-\mCh@merge@length) node(crossing) {}; - \draw[\mCh@arrow@linethickness] - (crossing.base) -| ($(\mCh@merge@from@one.north)+(0,\mCh@rxn@node@distance)$); - \draw[\mCh@arrow@linethickness] - (crossing.base) -| ($(\mCh@merge@from@two.north)+(0,\mCh@rxn@node@distance)$); -} - -\mCh@def\mCh@merge@left{% - \draw[mCtip-,\mCh@arrow@linethickness] - ($(\mCh@merge@to.east)+(\mCh@rxn@node@distance,0)$) - --node[midway,above,yshift=.1em]{\mCh@merge@arg} - ++(\mCh@merge@length,0) node(crossing) {}; - \draw[\mCh@arrow@linethickness] - ($(\mCh@merge@from@one.west)+(-\mCh@rxn@node@distance,0)$) -| (crossing.base); - \draw[\mCh@arrow@linethickness] - ($(\mCh@merge@from@two.west)+(-\mCh@rxn@node@distance,0)$) -| (crossing.base); -} - -\mCh@def\mCh@merge@below{% - \draw[mCtip-,\mCh@arrow@linethickness] - ($(\mCh@merge@to.north)+(0,\mCh@rxn@node@distance)$) - --node[midway,right,xshift=.1em]{\mCh@merge@arg} - ++(0,\mCh@merge@length) node(crossing) {}; - \draw[\mCh@arrow@linethickness] - (crossing.base) -| ($(\mCh@merge@from@one.south)+(0,-\mCh@rxn@node@distance)$); - \draw[\mCh@arrow@linethickness] - (crossing.base) -| ($(\mCh@merge@from@two.south)+(0,-\mCh@rxn@node@distance)$); -} - -% eigentlicher Befehl ----------------------------------------------------------------- % -\newrobustcmd\mCh@merge[4][]{% - \ifblank{#1} - {\mCh@merge@i}{\mCh@merge@ii[#1]} - {#2}{#3}{#4}} - -\mCh@def\mCh@merge@i#1#2#3{% - \mCh@let@variable\merge@length\merge@length@value - \mCh@empty@variable\merge@arg - \mCh@set@variable\merge@to{#1}% - \mCh@set@variable\merge@from@one{#2}% - \mCh@set@variable\merge@from@two{#3}% - \mCh@merge@below -} - -\mCh@def\mCh@merge@ii[#1]#2#3#4{% - \let\mCh@remainargs\@empty - \mCh@splitarg{#1}% - \mCh@ifempty@variable\firstarg - {\mCh@empty@variable\merge@arg} - {\mCh@let@variable\merge@arg\firstarg}% - \mCh@ifempty@variable\thirdarg - {\mCh@let@variable\merge@length\merge@length@value} - {\mCh@set@variable\merge@length{\mCh@thirdarg}}% - \mCh@set@variable\merge@to{#2}% - \mCh@set@variable\merge@from@one{#3}% - \mCh@set@variable\merge@from@two{#4}% - \mCh@ifempty@variable\secondarg - {\mCh@merge@below} - {\csuse{mCh@merge@\mCh@secondarg}}% -} - -\newrobustcmd\setmergelength[1]{% - \ifblank{#1} - {\mCh@let@variable\merge@length@value\merge@length@default} - {\mCh@set@variable\merge@length@value{#1}}} - -% -------------------------------------------------------------------------- -% REAKTIONSSCHEMA -\newlength\mCh@rxn@node@distance@default -\newlength\mCh@rxn@node@distance - -\deflength\mCh@rxn@node@distance@default{1em} -\deflength\mCh@rxn@node@distance{\mCh@rxn@node@distance@default} - -\newrobustcmd\setrcndist[1]{% - \ifblank{#1} - {\deflength\mCh@rxn@node@distance{\mCh@rxn@node@distance@default}} - {\deflength\mCh@rxn@node@distance{#1}}} - -% Schema -% \begin{rxnscheme}[<label>,<placement>,<align>,<scale factor>,<name>]{<caption>} -\mCh@new@variable\rs@scale -\mCh@new@variable\rs@currentscale - -\mCh@set@variable\rs@scale{1.0} -\mCh@set@variable\rs@currentscale{\mCh@rs@scale} - -\newrobustcmd\setschemename[1]{% - \mCh@set@variable\rs@name{#1}} - -\mCh@new@variable\rs@caption -\mCh@new@variable\rs@label -\mCh@new@variable\rs@currentlabel -\mCh@new@variable\rs@align -\mCh@new@variable\rs@right -\mCh@new@variable\rs@center -\mCh@new@variable\rs@left - -\mCh@let@variable\rs@currentlabel\rs@label -\mCh@set@variable\rs@align{center} -\mCh@set@variable\rs@right{right} -\mCh@set@variable\rs@center{center} -\mCh@set@variable\rs@left{left} - -\newrobustcmd\setschemealign[1]{% - \ifblank{#1} - {\mCh@set@variable\rs@align{center}} - {\mCh@set@variable\rs@align{#1}}} - -% Gleitumgebung -\floatstyle{ruled} -\newfloat{rxnfloat}{\mCh@rs@currentplacement}{rxnscheme} -\floatname{rxnfloat}{\mCh@rs@name}% Name ändern - -% eigentliche Umgebung: -\newrobustcmd\mCh@rxnscheme[2][]{% - \ifblank{#1} - {\mCh@rxnscheme@i} - {\mCh@empty@variable\rs@currentlabel\mCh@rxnscheme@ii[#1]}% - {#2}} - -\mCh@def\mCh@rxnscheme@ii[#1]#2{% [<label>,<placement>,<align>,<scale>,<name>] - \let\mCh@remainargs\@empty - \mCh@splitarg{#1}% - \mCh@ifempty@variable\firstarg% erste Option - {\mCh@empty@variable\rs@currentlabel} - {\mCh@let@variable\rs@currentlabel\firstarg}% - \mCh@ifempty@variable\secondarg% zweite Option - {\mCh@let@variable\rs@currentplacement\rs@placement} - {\mCh@let@variable\rs@currentplacement\secondarg}% - \let\mCh@remainargs\@empty - \expandafter\mCh@splitarg\expandafter{\mCh@thirdarg}% - \mCh@ifempty@variable\firstarg% dritte Option - {\mCh@set@variable\rs@align{center}} - {\mCh@let@variable\rs@align\firstarg}% - \mCh@ifempty@variable\secondarg% vierte Option - {\mCh@set@variable\rs@currentscale{1}} - {\mCh@let@variable\rs@currentscale\secondarg}% - \mCh@ifempty@variable\thirdarg{}% fünfte Option - {\mCh@let@variable\rs@name\thirdarg}% - \mCh@rxnscheme@i{#2}% -} - -\mCh@def\mCh@scheme@enable{% - \let\arrow\mCh@arrow - \let\reactant\mCh@reactant - \let\mesomeric\mCh@mesomeric - \let\transition\mCh@transition - \let\anywhere\mCh@anywhere - \let\dummy\mCh@dummy - \let\branch\mCh@branch - \let\chemand\mCh@chemand - \let\merge\mCh@merge -% \let\elmove\mCh@elmove -} - -\mCh@def\mCh@scheme@disable{% - \let\arrow\relax - \let\reactant\relax - \let\mesomeric\relax - \let\transition\relax - \let\anywhere\relax - \let\dummy\relax - \let\branch\relax - \let\chemand\relax - \let\merge\relax -% \let\elmove\relax -} - -\mCh@def\mCh@rxnscheme@i#1{% - \mCh@scheme@enable - \mCh@set@variable\rs@caption{#1}% - \rxnfloat - \mCh@ifeq@variable\rs@align\rs@center{\centering}{}% - \mCh@ifeq@variable\rs@align\rs@left{\raggedright}{}% - \mCh@ifeq@variable\rs@align\rs@right{\raggedleft}{}% - \mCh@atomsize\mCh@bondlength\mCh@bondshape - \tikzpicture[ - every picture/.style={scale=\mCh@rs@currentscale}, - start chain, - node distance=\mCh@rxn@node@distance, - inner sep=0pt, - outer sep=0pt] - \mCh@dummy -} - -\newenvironment{rxnscheme}{\mCh@rxnscheme}{% - \endtikzpicture - \caption{\mCh@rs@caption}% - \mCh@ifempty@variable\rs@currentlabel{} - {\label{\mCh@rs@currentlabel}}% - \endrxnfloat - \mCh@scheme@disable -} - -% ---------------------------------------------------------------------------- -% einfache Reaktion -% \begin{rxn}[<align>,<scalefactor>] -\mCh@new@variable\reaction@scale -\mCh@new@variable\reaction@align - -\mCh@set@variable\reaction@scale{1.0} -\mCh@set@variable\reaction@align{center} - -\newrobustcmd\setrxnalign[1]{% - \ifblank{#1} - {\mCh@set@variable\reaction@align{center}} - {\mCh@set@variable\reaction@align{#1}}} - -\mCh@new@variable\reaction@right -\mCh@new@variable\reaction@center -\mCh@new@variable\reaction@left - -\mCh@set@variable\reaction@right{right} -\mCh@set@variable\reaction@center{center} -\mCh@set@variable\reaction@left{left} - -\newrobustcmd\mCh@rxn[1][]{% - \ifblank{#1} - {\mCh@rxn@i}{\mCh@rxn@ii[#1]}} - -\mCh@def\mCh@rxn@ii[#1]{% - \let\mCh@remainargs\@empty - \mCh@splitarg{#1}% - \mCh@ifempty@variable\firstarg - {\mCh@let@variable\reaction@align\reaction@center} - {\mCh@let@variable\reaction@align\firstarg}% - \mCh@ifempty@variable\secondarg - {\mCh@set@variable\reaction@scale{1}} - {\mCh@let@variable\reaction@scale\secondarg}% - \mCh@rxn@i -} - -\mCh@def\mCh@rxn@i{% - \mCh@scheme@enable - \hspace*{0pt}% - \mCh@ifeq@variable\reaction@align\reaction@center{\center}{}% - \mCh@ifeq@variable\reaction@align\reaction@left{\flushleft}{}% - \mCh@ifeq@variable\reaction@align\reaction@right{\flushright}{}% - \mCh@bondlength\mCh@bondshape\mCh@atomsize - \begin{tikzpicture}[ - every picture/.style={scale=\mCh@reaction@scale}, - start chain, - node distance=\mCh@rxn@node@distance, - inner sep=0pt, - outer sep=0pt] - \mCh@dummy -} - -\newenvironment{rxn}{\mCh@rxn}{% - \end{tikzpicture}% - \mCh@ifeq@variable\reaction@align\reaction@center{\endcenter}{}% - \mCh@ifeq@variable\reaction@align\reaction@left{\endflushleft}{}% - \mCh@ifeq@variable\reaction@align\reaction@right{\endflushright}{}% - \mCh@scheme@disable -} - -% -------------------------------------------------------------------------- -% REAKTANDEN -% Standardreaktand -% \reactant[<pos>,<name>,<tikz>]{<something>} -\def\mCh@argument@safe{\@makeother\#} - -\newrobustcmd\mCh@reactant[1][]{% - \begingroup - \mCh@argument@safe - \ifblank{#1} - {\mCh@reactant@i} - {\mCh@reactant@ii[#1]}% -} - -\mCh@def\mCh@reactant@i#1{% - \expandafter\node\expandafter[% - \mCh@reactant@visible, - on chain=going {at=(\tikzchainprevious.0)}, - anchor=180, - shift=(0:\mCh@rxn@node@distance)]{#1}; - \endgroup -} - -\mCh@def\mCh@reactant@ii[#1]#2{% - \let\mCh@remainargs\@empty\mCh@splitarg{#1}% - \mCh@ifempty@variable\firstarg{% erste Option: <pos>, zweite Option: <name>, dritte Option: <tikz> - \mCh@set@variable\angle{0}% - \mCh@set@variable\anchor{180}% - \mCh@empty@variable\referred@node - }{% - \expandafter\mCh@analyze@angle\expandafter{\mCh@firstarg}% - \mCh@set@variable\anchor{180+\mCh@angle}% - }% - \mCh@ifempty@variable\referred@node - {\mCh@set@variable\referred@node{\tikzchainprevious}}{}% - \expandafter\expandafter\expandafter\node\expandafter\expandafter\expandafter[% - \expandafter\mCh@thirdarg\expandafter,% - \mCh@reactant@visible, - on chain=going {at=(\mCh@referred@node.\mCh@angle)}, - anchor=\mCh@anchor,shift=(\mCh@angle:\mCh@rxn@node@distance)] - (\mCh@secondarg){#2}; - \endgroup -} - -% Mesomerie -% \mesomeric[<pos>,<name>,<tikz>]{<something>} -\newrobustcmd\mCh@mesomeric[1][]{% - \begingroup - \mCh@argument@safe - \ifblank{#1} - {\mCh@mesomeric@i} - {\mCh@mesomeric@ii[#1]}% -} - -\mCh@def\mCh@mesomeric@i#1{% - \node[on chain=going {at=(\tikzchainprevious.0), - shift=($(0:\mCh@rxn@node@distance)$)}, - anchor=180,shift=(0:\mCh@rxn@node@distance), - inner sep=1pt, - left delimiter={[}, - right delimiter={]}] - {\tikzpicture[start branch]#1\endtikzpicture}; - \endgroup -} - -\mCh@def\mCh@mesomeric@ii[#1]#2{% - \let\mCh@remainargs\@empty - \mCh@splitarg{#1}% - \mCh@ifempty@variable\firstarg{% erste Option: <pos>, zweite Option: <name>, dritte Option: <tikz> - \mCh@set@variable\angle{0}% - \mCh@set@variable\anchor{180}% - \mCh@empty@variable\referred@node - }{% - \expandafter\mCh@analyze@angle\expandafter{\mCh@firstarg}% - \mCh@set@variable\anchor{180+\mCh@angle}% - }% - \mCh@ifempty@variable\referred@node - {\mCh@set@variable\referred@node{\tikzchainprevious}}{}% - \expandafter\node\expandafter[\mCh@thirdarg, - on chain=going {at=(\mCh@referred@node.\mCh@angle)}, - anchor=\mCh@anchor, - shift=(\mCh@angle:\mCh@rxn@node@distance), - inner sep=1pt, - left delimiter={[}, - right delimiter={]}] - (\mCh@secondarg){\tikzpicture[start branch]#2\endtikzpicture}; - \endgroup -} - -% Mesomerie-Pfeil -% \marrow[<pos>] -\newrobustcmd\marrow[1][]{\arrow[#1,<->,.5]{}{}} - -% Anywhere -% \anywhere{<pos>,<name>,<tikz>}{<something>} -\mCh@new@variable\anywhere@positioning - -\newrobustcmd\mCh@anywhere[1]{% - \begingroup - \mCh@argument@safe - \let\mCh@remainargs\@empty - \mCh@splitarg{#1}% erste Option: <pos>, zweite Option: <name>, dritte Option: <tikz> - \mCh@ifempty@variable\firstarg{% - \mCh@error{\string\anywhere: positioning missing}{}% - }{% - \expandafter\mCh@if@instr\expandafter{\mCh@firstarg}{=}{% - \mCh@xset@variable\anywhere@positioning{\mCh@firstarg}% - }{% - \expandafter\mCh@analyze@angle\expandafter{\mCh@firstarg}% - \mCh@set@variable\anchor{180+\mCh@angle}% - \mCh@ifempty@variable\referred@node{% - \mCh@error{You can't use `angle' to position \string\anywhere. - You need to use `name.angle'}% - }{% - \mCh@set@variable\anywhere@positioning{% - at=(\mCh@referred@node.\mCh@angle),anchor=\mCh@anchor}% - }% - }% - }% - \mCh@anywhere@i -} - -\mCh@def\mCh@anywhere@i#1{% - \expandafter\expandafter\expandafter\node\expandafter\expandafter\expandafter[% - \expandafter\mCh@thirdarg\expandafter,% - \mCh@anywhere@positioning](\mCh@secondarg){#1}; - \endgroup -} - -% Dummy -% \dummy[<name>] -\newrobustcmd\mCh@dummy[1][]{% - \ifblank{#1} - {\draw node[on chain,xshift=-\mCh@rxn@node@distance]{};} - {\draw node[on chain,xshift=-\mCh@rxn@node@distance](#1){};}} - -% Uebergangszustand -% \transition[<pos>,<name>,<tikz>]{<something>} -\mCh@new@variable\transition@name - -\newrobustcmd\mCh@transition[1][]{% - \begingroup - \mCh@argument@safe - \ifblank{#1} - {\mCh@transition@i} - {\mCh@transition@ii[#1]}% -} - -\mCh@def\mCh@transition@i#1{% - \expandafter\node\expandafter[\mCh@reactant@visible, - on chain=going {at=(\tikzchainprevious.0)}, - anchor=180, - shift=(0:\mCh@rxn@node@distance), - anchor=180, - inner sep=3pt, - left delimiter={[}, - right delimiter={]}] - (mCh@transition@name){#1}; - \node at ($(mCh@transition@name.north east)+(.7em,0)$) - {$\transitionstatesymbol$}; - \endgroup -} - -\mCh@def\mCh@transition@ii[#1]#2{% - \let\mCh@remainargs\@empty - \mCh@splitarg{#1}% - \mCh@ifempty@variable\firstarg{% erste Option: <pos> - \mCh@set@variable\angle{0}% - \mCh@set@variable\anchor{180}% - \mCh@empty@variable\referred@node - }{% - \expandafter\mCh@analyze@angle\expandafter{\mCh@firstarg}% - \mCh@set@variable\anchor{180+\mCh@angle}% - }% - \mCh@ifempty@variable\secondarg% zweite Option: <name>, dritte Option: <tikz> - {\mCh@set@variable\transition@name{mCh@transition@name}} - {\mCh@let@variable\transition@name\secondarg}% - \mCh@ifempty@variable\referred@node - {\mCh@set@variable\referred@node{\tikzchainprevious}}{}% - \expandafter\expandafter\expandafter\node\expandafter\expandafter\expandafter[% - \mCh@reactant@visible\expandafter,% - \mCh@thirdarg, - on chain=going {at=(\mCh@referred@node.\mCh@angle)}, - anchor=\mCh@anchor, - shift=(\mCh@angle:\mCh@rxn@node@distance), - inner sep=3pt, - left delimiter={[}, - right delimiter={]}] - (\mCh@transition@name){#2}; - \node at ($(\mCh@transition@name.north east)+(.7em,0)$) - {$\transitionstatesymbol$}; - \endgroup -} - -% Abzweigung -% \branch[<pos>,<name>,<tikz>]{<formulae>} -% <pos>: default: on chain=going "right" (0°) -% on chain=going <somewhere> -% <somewhere>=of <name> -% <angle> (sitzt auf der Kette) -% <name>.<angle> (sitzt nicht auf der Kette) -\mCh@new@variable\branch@positioning - -\newrobustcmd\mCh@branch[1][]{% - \begingroup - \mCh@argument@safe - \ifblank{#1} - {\mCh@branch@i} - {\mCh@branch@ii[#1]}% -} - -\mCh@def\mCh@branch@i{% - \expandafter\mCh@set@variable\expandafter\branch@positioning\expandafter{\mCh@branch@visible, - on chain=going {at=(\tikzchainprevious.0)}, - anchor=180, - shift=(0:\mCh@rxn@node@distance)}% - \mCh@empty@variable\secondarg - \mCh@empty@variable\thirdarg - \mCh@branch@iii} - -\mCh@def\mCh@branch@ii[#1]{% - \let\mCh@remainargs\@empty - \mCh@splitarg{#1}% erste Option: <pos>, zweite Option: <name>, dritte Option: <tikz> - \mCh@ifempty@variable\firstarg{% - \expandafter\mCh@set@variable\expandafter\branch@positioning\expandafter{\mCh@branch@visible, - on chain=going {at=(\tikzchainprevious.0)}, - anchor=180, - shift=(0:\mCh@rxn@node@distance)}% - }{% - \expandafter\mCh@if@instr\expandafter{\mCh@firstarg}{=}{% - \mCh@xset@variable\branch@positioning{\mCh@branch@visible,\mCh@firstarg}% - }{% - \expandafter\mCh@analyze@angle\expandafter{\mCh@firstarg}% - \mCh@set@variable\anchor{180+\mCh@angle}% - \mCh@ifempty@variable\referred@node{% - \expandafter\mCh@set@variable\expandafter\branch@positioning\expandafter{\mCh@branch@visible, - on chain=going {at=(\tikzchainprevious.\mCh@angle)}, - anchor=\mCh@anchor, - shift=(\mCh@angle:\mCh@rxn@node@distance)}% - }{% - \expandafter\mCh@set@variable\expandafter\branch@positioning\expandafter{\mCh@branch@visible, - at=(\mCh@referred@node.\mCh@angle), - anchor=\mCh@anchor, - shift=(\mCh@angle:\mCh@rxn@node@distance)}% - }% - }% - }% - \mCh@branch@iii} - -\mCh@def\mCh@branch@iii#1{% - \expandafter\expandafter\expandafter\node\expandafter\expandafter\expandafter[% - \expandafter\mCh@branch@positioning\expandafter,% - \mCh@thirdarg] - (\mCh@secondarg){\tikzpicture[start branch]#1\endtikzpicture}; - \endgroup -}% - - -% -------------------------------------------------------------------------- -% Sonstiges -% Elektronenverschiebungspfeile -\mCh@new@variable\elmove@default@tikz -\mCh@new@variable\elmove@tikz - -\tikzset{mCh@elmove/.style={->,red,shorten <=3pt,shorten >=1pt}} -\mCh@set@variable\elmove@default@tikz{mCh@elmove} -\mCh@let@variable\elmove@tikz\elmove@default@tikz - -\newrobustcmd\elmove[5][]{% - \chemmove{ - \expandafter\draw\expandafter[\mCh@elmove@tikz,#1] - (#2).. controls +(#3) and +(#5)..(#4); - }} - -\newrobustcmd\setelmove[1]{% - \ifblank{#1} - {\mCh@let@variable\elmove@tikz\elmove@default@tikz} - {\mCh@set@variable\elmove@tikz{#1}}} - -% Plus -\newrobustcmd\mCh@chemand[1][]{% - \ifblank{#1} - {\reactant{\chemsign[0pt]{+}}} - {\reactant[#1]{\chemsign[0pt]{+}}}} - -% -------------------------------------------------------------------------- -% Setup myChemistry -% Bindungslänge -\mCh@new@variable\bondlength@default -\mCh@new@variable\bondlength - -\mCh@set@variable\bondlength@default{1.8em} -\mCh@set@variable\bondlength{\setatomsep{\mCh@bondlength@default}} - -\newrobustcmd\setbondlength[1]{% - \ifblank{#1} - {\mCh@set@variable\bondlength{\setatomsep{\mCh@bondlength@default}}} - {\mCh@set@variable\bondlength{\setatomsep{#1}}}} - -% Keilbindungen -\mCh@new@variable\bondshape@one -\mCh@new@variable\bondshape@two -\mCh@new@variable\bondshape@three - -\mCh@set@variable\bondshape@one{3pt} -\mCh@set@variable\bondshape@two{.5pt} -\mCh@set@variable\bondshape@three{1pt} - -\newrobustcmd\setbondshape[3]{% - \ifblank{#1} - {\mCh@set@variable\bondshape@one{3pt}} - {\mCh@set@variable\bondshape@one{#1}}% - \ifblank{#2} - {\mCh@set@variable\bondshape@two{.5pt}} - {\mCh@set@variable\bondshape@two{#2}}% - \ifblank{#3} - {\mCh@set@variable\bondshape@three{1pt}} - {\mCh@set@variable\bondshape@three{#3}}% -} - -\mCh@new@variable\bondshape -\mCh@set@variable\bondshape{% - \setcrambond{\mCh@bondshape@one}{\mCh@bondshape@two}{\mCh@bondshape@three}} - -% Atomgröße -\mCh@new@variable\atomsize@default -\mCh@new@variable\atomsize - -\mCh@set@variable\atomsize@default{\small} -\mCh@let@variable\atomsize\atomsize@default - -\newrobustcmd\setatomsize[1]{% - \ifblank{#1} - {\mCh@let@variable\atomsize\atomsize@default} - {\mCh@set@variable\atomsize{#1}}} - -% allg. Setup -\newrobustcmd\mCsetup[1]{\setkeys{mCh@setup}{#1}} - -\define@key{mCh@setup}{arrowlabel}[\mCh@arrow@label@dist@def]{% - \setarrowlabel{#1}} -\define@key{mCh@setup}{arrowlength}[\mCh@arrow@length@def]{% - \setarrowlength{#1}} -\define@key{mCh@setup}{arrowline}[\mCh@arrow@linethickness@default]{% - \setarrowline{#1}} -\define@key{mCh@setup}{atomsize}[\mCh@atomsize@default]{% - \setatomsize{#1}} -\define@key{mCh@setup}{bondlength}[\mCh@bondlength@default]{% - \setbondlength{#1}} -\define@key{mCh@setup}{rcndist}[\mCh@rxn@node@distance@default]{% - \setrcndist{#1}} -\define@key{mCh@setup}{rxnalign}[center]{% - \setrxnalign{#1}} -\define@key{mCh@setup}{schemealign}[center]{% - \setschemealign{#1}} -\define@key{mCh@setup}{align}[center]{% - \setrxnalign{#1} - \setschemealign{#1}} -\define@key{mCh@setup}{mergelength}[\mCh@merge@length@default]{% - \setmergelength{#1}} -\define@key{mCh@setup}{elmove}[\mCh@elmove@default@tikz]{% - \setelmove{#1}} -\define@key{mCh@setup}{reset}[]{% - \setarrowlabel{}% - \setarrowlength{}% - \setarrowline{}% - \setmergelength{}% - \setatomsize{}% - \setbondlength{}% - \setbondshape{}{}{}% - \setrcndist{}% - \setrxnalign{}% - \setschemealign{}% - \setelmove{}% -} - -% -------------------------------------------------------------------------- -% NODES SICHTBAR/UNSICHTBAR MACHEN -\mCh@new@variable\reactant@visible -\mCh@new@variable\arrow@uplabel@visible -\mCh@new@variable\arrow@downlabel@visible -\mCh@new@variable\branch@visible - -\mCh@empty@variable\reactant@visible -\mCh@empty@variable\arrow@uplabel@visible -\mCh@empty@variable\arrow@downlabel@visible -\mCh@empty@variable\branch@visible - -\newrobustcmd\makevisible{% - \ifmCh@draft - \mCh@set@variable\reactant@visible{draw=red!60,solid}% - \mCh@set@variable\arrow@uplabel@visible{draw=green!60,solid}% - \mCh@set@variable\arrow@downlabel@visible{draw=blue!60,solid}% - \mCh@set@variable\branch@visible{draw=cyan,solid}% - \fi -} - -\newrobustcmd\makeinvisible{% - \mCh@empty@variable\reactant@visible - \mCh@empty@variable\arrow@uplabel@visible - \mCh@empty@variable\arrow@downlabel@visible - \mCh@empty@variable\branch@visible -} - -\endinput - -% ---------------------------------------------------------------------------- -HISTORY: -2011/02/24 version 1.0 - first release to CTAN -2011/03/01 version 1.1 - package option `english' added - - package key `placement' added - - rxnscheme key `placement' added - - package key `shade=boolean' changed into package - option `shade' - - package option `nochemexec' added, will prevent mC - from loading chemexec -2011/03/20 version 1.2 - license changed into LPPL 1.3 or later - - package option `nocompounds' added, will prevent mC - from loading chemcompounds - - package option `chemstyle' added, will load chemstyle - - package option `nomhchem' added, will prevent mC from - loading mhchem if chemexec isn't loaded either - - package option `nopackages' added, will prevent mC - from loading any chemistry package except chemfig - - some small issues resolved - - bug in arrow type <=> resolved - - arrow argument placement rewritten; two new keys for - arrow: `aboveshift' and `belowshift' (causing new - problems with alignment, though) - - wrong arrow alignment (due to last change) mainly - resolved (NEEDS pgf v2.10!) - => solved wrong branch alignment as well - - `inner sep' set to 0, arrow, transition & mesomeric - adjusted - - bug in arrow type -|> resolved - - commands \makevisible / \makeinvisible added - - arrow key `both' added - - rxn has now keys instead of an option - - commands \setrcndist, \setrxnalign, \setschemealign - added - - rxn-, rxnscheme-key align added -2011/03/26 version 1.2.1 - rewritten commands, so they accept second argument - without first: - \reactand, \mesomeric, \transition, \branch, - \makevisible, \makeinvisible -2011/03/28 version 1.2.2 - bugfix with transition - - 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 -2011/04/15 version 1.4 - minor bugfixes - - \merge-command rewritten: it now accepts an arrow - label and the length is adjustable - - \dummy mostly obsolete - - bugfix with aligning rxn & rxnscheme - - synonym to \reactand=\reactant added - - rxn & rxnscheme rewritten - - commands \reactant, \mesomeric, \branch & \transition - modified: argument is set with \mCh@argument@safe{#1}, - so the chemfig catcode regime is working properly - before () (else possible problem with triple bond ~) - - syntax of \arrow changed so it fits to the syntax of - all the other commands - - command \anywhere added - - own arrow tips defined - - command \setarrowline added - - new arrow type -+> added -2011/04/23 version 1.5 - major parts of the code rewritten -- the whole - positioning part now is different and way more flexible: - arbitrary angles can be used for positioning, referencing - an object is easier, arrows can be modified using <tikz>, - command \anywhere now has similar syntax - - arrow types <=>> and <<=> added - - arrow type -+> modified: more flexible - - bugfixes in error-handling -2011/04/27 version 1.5.1 - removed bondwidth.tex - - \arrow, \reactant, \mesomeric, \transition, \anywhere, - \dummy, \branch, and \chemand only defined inside scheme - environments -2012/07/27 version 1.99 - conflict with `pdfpages' resolved, LaTeXified various - parts in order to minimize conflicts with other - packages; \merge is also only defined inside the scheme - environments -2012/09/20 version 1.99a - small adjustments to \elmove -2012/12/19 version 1.99b - changed catcode regime (# is read with catcode 12) - so that chemfig's bond offset works - -% ----------------------------------------------------------------------------
\ No newline at end of file |