diff options
Diffstat (limited to 'Master/texmf-dist/tex/context/base/ppchtex.mkii')
-rw-r--r-- | Master/texmf-dist/tex/context/base/ppchtex.mkii | 3555 |
1 files changed, 0 insertions, 3555 deletions
diff --git a/Master/texmf-dist/tex/context/base/ppchtex.mkii b/Master/texmf-dist/tex/context/base/ppchtex.mkii deleted file mode 100644 index 07ca9789ac0..00000000000 --- a/Master/texmf-dist/tex/context/base/ppchtex.mkii +++ /dev/null @@ -1,3555 +0,0 @@ -%D \module -%D [ file=ppchtex (m-chemie), -%D version=1997.03.19, -%D title=\CONTEXT\ Extra Modules, -%D subtitle=\PPCHTEX\ (Plain Pictex Context cHemie \TEX), -%D author=Hans Hagen, -%D date=\currentdate, -%D suggestions={Tobias Burnus, Dirk Kuypers \& Ton Otten}. -%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] -%C -%C This module is part of the \CONTEXT\ macro||package and is -%C therefore copyrighted by \PRAGMA. See mreadme.pdf for -%C details. - -% option=test => boxes -% dummy => file -% final => file / local run -% -% constante van phantom in definitie ONE: \setchemicaltextwidth 300 -% -% it would be interesting to rewrite this module with todays -% experiences and new context functionality, maybe ... - -% Deze module ondersteunt het zetten van chemische -% (structuur)formules. Hoewel de macro' zijn afgestemd op -% CONTEXT, zijn ze ook buiten deze zetomgeving te gebruiken. -% -% Dit is, afgezien van updates, de definitieve versie van -% PPCHTEX. Gebruikersgemak, eenvoud, flexibiliteit, en -% snelheid zijn inmiddels redelijk geoptimaliseerd. Dit neemt -% niet weg dat hier en daar nog verbetering mogelijk is. Dit -% zal dan ook nog gebeuren. -% -% Volgende versies zullen tenminste dezelfde functionaliteit -% hebben. We houden ons natuurlijk het recht voor de kwaliteit -% van de output te verbeteren. Daarnaast staan nog op het -% wensenlijstje: -% -% - optimaliseren in termen van proces-tijd -% - aanpassen naamgeving van interne macro's -% - toevoegen van functionaliteit -% - in \x!-vorm omzetten van GIVES, TB enz. -% -% De mix tussen engels en nederlands lijkt soms verwarrend. -% Meestal zijn verborgen macro's engels en zichtbare macro's -% nederlands. Het gebruik van [ ] en { } sluit aan op andere -% Context-macro's. Hetzelfde geldt voor instellingen en -% \start-\stop-constructies. -% -% De schijnbaar overbodige \bgroup-\egroup constructie -% garandeert aansluiting bij de Context-macro's voor het -% plaatsen van figuren, tabellen en andere floats. -% -% Binnen Context worden de macro's geladen met -% \gebruikextras[chemie]. Daarbij wordt een passende melding -% getoont. Buiten Context genereren we een melding: - -\doifundefined{usemodule} - {\writestatus{loading}{ConTeXt Chemical Macro's / 1996.3.1}} - -% Er kan gebruik worden gemaakt van PiCTeX of PStricks. Een -% van deze pakketten moet van te voren zijn geladen. -% -% \input prepictex.tex (i.g.v. LaTeX) -% \input pictex.tex -% \input postpictex.tex (i.g.v. LaTeX) -% -% of: -% -% \input multido.tex -% \input pstricks.tex -% \input pst-plot.tex -% -% In \CONTEXT\ kan men de modules m-pictex en m-pstricks -% gebruiken. De eerste module laad of efficiente wijze PiCTeX -% en de tweede module koppelt het PSTRICKS kleurmechanisme -% aan dat van \CONTEXT. -% - -% PSTricks: {-\chemicalangle} instead of {*0}, which produces -% faulty ps code when \chemicalangle=0 - -\startcommands dutch english german - - gotochemical: naarchemie gotochemical zurchemie - setupchemical: stelchemiein setupchemical stellechemieein - startchemical: startchemie startchemical startchemie - stopchemical: stopchemie stopchemical stopchemie - definechemical: definieerchemie definechemical definierechemie - chemical: chemie chemical chemie - toptext: boventekst toptext textueber - bottext: ondertekst bottext textunter - midtext: middentekst midtext textmitte - -\stopcommands - -\doifundefined{fiverm} % In the more recent LaTeX versions - {\font\fiverm=cmr5 } % \fiverm is no longer (pre)defined. - -\doifdefinedelse{beginpicture} % PiCTeX - {\doifdefinedelse{startMPdrawing} - {\chardef\chemicaldrawingmode=2 } % MetaPost - {\chardef\chemicaldrawingmode=0 }} % raw - {\doifdefinedelse{psaxes} - {\chardef\chemicaldrawingmode=1 } % PSTricks - {\chardef\chemicaldrawingmode=3 }} % unknown - -\ifcase\chemicaldrawingmode - \writestatus{ppchtex}{using PiCTeX} -\or - \writestatus{ppchtex}{using PSTricks (still experimental)} - \writestatus{ppchtex}{automatic sizing not (yet) supported} -\or - \writestatus{ppchtex}{using PiCTeX and MetaPost} -\else - \writestatus{ppchtex}{load PiCTeX (+pre/post) or PSTricks (+pst_plot) first} - \bgroup - \read16 to \exit - \egroup - \expandafter\endinput -\fi - -% De onderstaande help-informatie (%I) kan worden opgeroepen -% in TeXEdit. De daaropvolgende setup-informatie (%S) kan -% nadat zij is uit deze file is gefilterd met TeXUtil, in -% handleidingen worden gebruikt. In deze file opgenomen -% documentatie (%D en %M) kan worden gebruikt voor een -% technische handleiding. Met %T kunnen templates worden -% gedefinieerd voor TeXEdit. - -%I n=Chemie -%I c=\stelchemiein,\chemie -%I -%I Chemische formules kunnen worden gezet met behulp van de -%I onderstaande commando's: -%I -%I buiten $ en $$ : -%I -%I \chemie[segmenten][symbolen] -%I -%I \startchemie[instellingen] -%I \chemie... -%I \chemie... -%I \stopchemie -%I -%I en binnen $ en $$: -%I -%I \chemie{}{} -%I -%I Voor tekst, uitleg en voorbeelde verwijzen we vooralsnog -%I naar de handleiding. -%P -%I Het gedrag van de macro's kan worden ingesteld met: -%I -%I \stelchemiein[breedte=,hoogte=,links=,rechts=,boven=, -%I onder=,korps=,schaal=,status=,assenstelsel=,kader=, -%I variant=,optie=,formaat=,tekstformaat=,resolutie=, -%I offset=,letter=] -%I -%I Structuren kunnen worden voorgedefinieerd met het commando -%I -%I \definieerchemie[naam]{\chemie...} - -%S \startsetup -%S \command -%S [\!stelchemiein] -%S \type -%S [\c!vars!] -%S \variable -%S [\c!breedte] -%S [\c!number!,\v!passend] -%S [0] -%S \variable -%S [\c!hoogte] -%S [\c!number!,\v!passend] -%S [0] -%S \variable -%S [\c!links] -%S [\c!number!] -%S [0] -%S \variable -%S [\c!rechts] -%S [\c!number!] -%S [0] -%S \variable -%S [\c!boven] -%S [\c!number!] -%S [0] -%S \variable -%S [\c!onder] -%S [\c!number!] -%S [0] -%S \variable -%S [\c!resolutie] -%S [\c!number!] -%S [\outputresolution] -%S \variable -%S [\c!korps] -%S [10pt,11pt,12pt] -%S [\bodyfontsize] -%S \variable -%S [\c!schaal] -%S [\v!klein,\v!middel,\v!groot] -%S [\v!middel] -%S \variable -%S [\c!formaat] -%S [\v!klein,\v!middel,\v!groot] -%S [\v!groot] -%S \variable -%S [\c!tekstformaat] -%S [\v!klein,\v!middel,\v!groot] -%S [\v!groot] -%S \variable -%S [\c!status] -%S [\v!start,\v!stop] -%S [\v!start] -%S \variable -%S [\c!kader] -%S [\v!aan,\v!uit] -%S [\v!uit] -%S \variable -%S [\c!assenstelsel] -%S [\v!aan,\v!uit] -%S [\v!uit] -%S \variable -%S [\c!optie] -%S [\v!test] -%S [] -%S \variable -%S [\c!variant] -%S [1,2] -%S [1] -%S \variable -%S [\c!offset] -%S [HIGH,LOW] -%S [LOW] -%S \variable -%S [\c!letter] -%S [\c!command!] -%S [\rm] -%S \stopsetup - -%S \startsetup -%S \command -%S [\v!startchemie] -%S \type -%S [\c!vars!\c!stp!] -%S \inheritvariable -%S [\v!stelchemiein] -%S [] -%S \stopsetup - -%S \startsetup -%S \command -%S [\v!chemie] -%S \type -%S [\c!vals!\c!vals!] -%S \value -%S [\c!list!] -%S [] -%S \value -%S [\c!list!] -%S [] -%S \stopsetup - -%S \startsetup -%S \command -%S [definieerchemie] -%S \type -%S [\c!val!\c!arg!] -%S \value -%S [\c!text!] -%S [] -%S \stopsetup - -\unprotect - -% Om te voorkomen dat sub- en superscripts botsen passen we -% wat fontdimen's aan (Knuth, The TeXBook, p179). Helaas -% kunnen deze instellingen niet lokaal worden gehouden door -% groeperen, vandaar dat een en ander moet worden geset ‚n -% gereset. -% -% Er dient een relatie te worden gelegd met de afmetingen -% van de letters. In een eerdere versie werden daartoe de -% \fontdimen's opgehoogd. Omdat dit problemen gaf bij -% scaled fonts, is bij nader inzien gekozen voor de -% onderstaande oplossing, waarbij de nieuwe waarden worden -% afgeleid van de x-height (\fontexheight). De factor 0.70 -% is min of meer experimenteel vastgesteld. Soms worden de -% regels iets verder uit elkaar gezet. Jammer. Italic fonts -% hebben grotere cijfers en vallen min of meer uit de boot. - -\newif\ifloweredsubscripts - -% Due to some upward incompatibality of LaTeX to LaTeX2.09 -% and/or LaTeX2e we had to force \@@dochemicalstyle. Otherwise -% some weird \nullfont error comes up. - -\def\beginlatexmathmodehack - {\ifmmode - \let\endlatexmathmodehack=\relax - \else - \def\endlatexmathmodehack{$}$\@@dochemicalstyle\empty - \fi} - -\def\setsubscripts% - {\beginlatexmathmodehack - \def\dosetsubscript##1##2##3% - {\dimen0=##3\fontexheight##2% - \setxvalue{@@\string##1\string##2}{\the##1##2\relax}% - ##1##2=\dimen0\relax}% - \def\dodosetsubscript##1##2% - {\dosetsubscript{##1}{\textfont 2}{##2}% - \dosetsubscript{##1}{\scriptfont 2}{##2}% - \dosetsubscript{##1}{\scriptscriptfont2}{##2}}% - %dodosetsubscript\mathsupnormal {?}% - \dodosetsubscript\mathsubnormal {.7}% - \dodosetsubscript\mathsubcombined{.7}% - \global\loweredsubscriptstrue - \endlatexmathmodehack} - -\def\resetsubscripts - {\ifloweredsubscripts - \beginlatexmathmodehack - \def\doresetsubscript##1##2% - {\dimen0=\getvalue{@@\string##1\string##2}\relax - ##1##2=\dimen0}% - \def\dodoresetsubscript##1% - {\doresetsubscript{##1}{\textfont2}% - \doresetsubscript{##1}{\scriptfont2}% - \doresetsubscript{##1}{\scriptscriptfont2}}% - %dodoresetsubscript\mathsupnormal - \dodoresetsubscript\mathsubnormal - \dodoresetsubscript\mathsubcombined - \global\loweredsubscriptsfalse - \endlatexmathmodehack - \fi} - -\ifx\Umathchar\undefined \else - % for the moment we nil them, soon we will have a proper - % way to deal with this - \let\setsubscripts \relax - \let\resetsubscripts\relax -\fi - -\def\doresetsubscripts - {\resetsubscripts} - -\def\sethighsubscripts - {\resetsubscripts - \let\dosetsubscripts=\relax} - -\def\setlowsubscripts - {\def\dosetsubscripts{\setsubscripts}} - -\setlowsubscripts - -\newcount\horchemical % t.z.t. \newcounter -\newcount\verchemical % t.z.t. \newcounter -\newcount\txtchemical % t.z.t. \newcounter -\newcount\levchemical % t.z.t. \newcounter - -\newif\ifinchemical \inchemicalfalse -\newif\iffixedchemical \fixedchemicalfalse - -\newbox\chemicalsymbols - -% Eigenlijk moeten de constanten en variabelen in cont-nl.tex -% staan. Dit pakket is echter relatief onafhankelijk van CONTEXT. - -\definesystemvariable {chemical} - -\definesystemconstant {chemical} - -\definesystemconstant {translate} -\definesystemconstant {distance} -\definesystemconstant {mirror} -\definesystemconstant {rotate} -\definesystemconstant {substitute} -\definesystemconstant {angle} - -\definesystemconstant {executechemical} -\definesystemconstant {chemicaltextelement} -\definesystemconstant {chemicallinesegment} -\definesystemconstant {chemicalcircsegment} - -\def\chemicalspace {\quad} - -% begin van experiment: -% -% De onderstaande twee macro's kunnen worden gebruikt voor -% bijvoorbeeld een interactiemechanisme. -% -% \localgotochemical {verwijzing} {tekst} -% \localthisischemical {verwijzing} - -\def\dowithchemical% - {} - -\doifdefinedelse{@@iastate} - {\def\localgotochemical#1#2{\naarbox{#2}[#1]}% - \def\localthisischemical#1{\pagereference[#1]}} - {\def\localgotochemical#1{}% - \def\localthisischemical#1{}} - -% eind van experiment - -\def\setchemicalmaximum #1 - {\def\maxchemical{#1}} - -\def\doifchemicalnumber#1#2#3% - {\doifnumberelse{#1} - {\ifnum#1>\maxchemical\relax - \writestatus{ppchtex}{number #1 is skipped}% - \else - #3% - \fi} - {\unknownchemical{#2}}}% - -\newif\ifsmallchemicaltext - -\let\@@localchemicalstyle\empty - -\def\setupchemicalformat[#1]% - {\processaction - [\getvalue{#1\c!size}] - [ \v!small=>\def\@@localchemicalformat{\scriptscriptstyle}, - \v!medium=>\def\@@localchemicalformat{\ifsmallchemicaltext\scriptscriptstyle\else\scriptstyle\fi}, - \v!big=>\def\@@localchemicalformat{\ifsmallchemicaltext\scriptstyle\else\textstyle\fi}, - \s!unknown=>\def\@@localchemicalformat{\getvalue{#1\c!size}}]% - \processaction - [\getvalue{#1\c!textsize}] - [ \v!small=>\def\@@localchemicalstyle{\scriptscriptstyle}, - \v!medium=>\def\@@localchemicalstyle{\ifsmallchemicaltext\scriptscriptstyle\else\scriptstyle\fi}, - \v!big=>\def\@@localchemicalstyle{\ifsmallchemicaltext\scriptstyle\else\textstyle\fi}, - \s!unknown=>\def\@@localchemicalstyle{\getvalue{#1\c!textsize}}]% - \processaction - [\getvalue{#1\c!scale}] - [ \v!small=>\def\@@localchemicalscale{500}, - \v!medium=>\def\@@localchemicalscale{625}, - \v!big=>\def\@@localchemicalscale{750}, - \s!unknown=>\def\@@localchemicalscale{\getvalue{#1\c!scale}}]} - -\def\@@currentchemicalformat - {\ifinchemical - \@@localchemicalformat - \else - \@@localchemicalstyle - \fi} - -\def\dosetupchemical[#1]% - {\getparameters[\??chemical\s!chemical][#1]% - \doifelse{\@@chemicalchemicaloffset}{LOW} - {\setlowsubscripts} - {\sethighsubscripts}% - \setupchemicalformat[\??chemical\s!chemical]% - \ignorespaces} - -\def\setupchemical - {\dosingleargument\dosetupchemical} - -\def\@@dochemicalstyle% % default mapping - {\@@chemicalstyle} - -\def\@@dochemicalcolor% % no mapping yet - {} - -\def\@@chemicalstyle % $inner-style$ % (overloaded) - {\@@chemicalchemicalstyle} % $$outer-style$$ - -\def\@@writechemicalstate#1#2% - {} - -\def\@@beginchemicallocalpicture - {\ifcase\chemicaldrawingmode - \beginpicture - \or - \pspicture(0,0)(0,0) % is this permitted ? - \or - \pushMPdrawing - \startMPdrawing - %prologues := 1 ; - %input mp-tool ; - u := 10*\@@chemicalunit; - bboxmargin := 0pt ; - pickup pencircle scaled 2u ; % ??? - \stopMPdrawing - \beginpicture - \fi} - -\def\@@endchemicallocalpicture#1#2% - {\ifcase\chemicaldrawingmode - \endpicture - \or - \endpspicture - \or - \resetchemicalcoordinates - \setbox2\hbox{\MPshiftdrawingtrue\MPstaticgraphictrue\getMPdrawing}% - \wd2=\!!zeropoint - \ht2=\!!zeropoint - \dp2=\!!zeropoint - \put {\box2} at 0 0 - \endpicture - \popMPdrawing - \fi} - -\def\@@beginchemicalpicture#1#2#3#4% - {\ifnum\chemicaldrawingmode=1 - \pspicture(#1,#3)(#2,#4)% - \def\account##1##2{}% - \psaxes[axesstyle=none,labels=none,ticks=none](#1,#3)(#2,#4)% - \else - \beginpicture - \setplotarea - x from {#1} to {#2}, - y from {#3} to {#4} - \iffixedchemical - \accountingon - \def\account##1##2% - {\put {} at {##1} {##2} }% - \else - \accountingoff - \def\account##1##2{}% - \fi - \fi - \ignorespaces} - -\def\@@endchemicalpicture% - {\ifcase\chemicaldrawingmode - \put {\box\chemicalsymbols} at 0 0 % elders - \endpicture - \or - \rput(0,0){\box\chemicalsymbols}% - \endpspicture - \or - \put {\box\chemicalsymbols} at 0 0 % elders - \ifMPdrawingdone - \resetchemicalcoordinates - \setbox2\hbox{\MPshiftdrawingtrue\MPstaticgraphictrue\getMPdrawing}% - \wd2=\!!zeropoint - \ht2=\!!zeropoint - \dp2=\!!zeropoint - \put {\box2} at 0 0 % - \fi - \endpicture - \fi} - -\def\@@setchemicalcoordinatesystem#1% - {\edef\@@chemicalunit{#1}% - \ifcase\chemicaldrawingmode - \setcoordinatesystem units <\@@chemicalunit,\@@chemicalunit> % - \or - \psset{unit=\@@chemicalunit}% - \or - \setcoordinatesystem units <\@@chemicalunit,\@@chemicalunit> % - \startMPdrawing - %input mp-tool ; - %prologues := 1 ; - u := 10*#1; - bboxmargin := 0pt ; - pickup pencircle scaled 2u ; % ??? - \stopMPdrawing - \fi} - -\ifx\MPdivten\undefined % hack to prevent overflows in mp - \def\MPdivten[#1]{\withoutpt\the\dimexpr#1pt/10\relax} -\fi - -\def\@@setchemicalaxis#1#2#3#4% - {\ifcase\chemicaldrawingmode - \axis - bottom shiftedto y=0 - ticks from {#1} to {#2} by 500 / - \axis - left shiftedto x=0 - ticks from {#3} to {#4} by 500 / % - \or - \psaxes[labels=none,Dx=500,Dy=500](0,0)(#1,#3)(#2,#4)% - \or - \global\MPdrawingdonetrue - % we need to div beforehand because of mp limitations - \startMPdrawing - x1 := \MPdivten[#1]u ; x2 := \MPdivten[#2]u; - y1 := \MPdivten[#3]u ; y2 := \MPdivten[#4]u; - draw z1--(x2,y1)--z2--(x1,y2)--cycle ; - d := 50u ; dd := 10u ; - draw (x1,0)--(x2,0) ; - draw (0,y1)--(0,y2) ; - for i=d step -d until x1: draw (i,dd)--(i,-dd) ; endfor ; - for i=d step d until x2: draw (i,dd)--(i,-dd) ; endfor ; - for i=d step -d until y1: draw (-dd,i)--(dd,i) ; endfor ; - for i=d step d until y2: draw (-dd,i)--(dd,i) ; endfor ; - \stopMPdrawing - \fi} - -\def\@@setsecondchemicalplotsymbol% - {\ifcase\chemicaldrawingmode - \!!widtha=50.8mm - \divide\!!widtha by \@@chemicalresolution\relax - \plotsymbolspacing=\!!widtha - \setplotsymbol({\vrule\!!height\!!widtha\!!width\!!widtha})% - \fi} - -% Something for Dirk: - -\newcount \currentchemical - -%\newif \ifskipchemical - -\def\setchemicaldimensions#1#2#3% - {\bgroup - \global\advance\currentchemical by 1 - \dimen0=#1\relax - \dimen2=#2\relax - \dimen4=#3\relax - \setxvalue{chemical::\the\currentchemical}% - {\noexpand\docommand{\the\dimen0}{\the\dimen2}{\the\dimen4}}% - \egroup} - -%\def\getchemicaldimensions#1#2#3% -% {\global\advance\currentchemical by 1 -% \def\docommand##1##2##3% -% {#1=##1\relax#2=##2\relax#3=##3\relax}% -% \doifdefinedelse{chemical::\the\currentchemical} -% {\getvalue{chemical::\the\currentchemical}} -% {\docommand{6cm}{4cm}{0cm}}} -% -%\def\savechemicaldimensions% -% {\bgroup -% \writestatus{ppchtex}{saving dimensions in ppchtex.dim}% -% \def\docommand##1##2##3% -% {\immediate\write\scratchwrite -% {\noexpand\setchemicaldimensions{##1}{##2}{##3}}}% -% \immediate\openout\scratchwrite=ppchtex.dim -% \scratchcounter=0 -% \loop -% \ifnum\scratchcounter<\currentchemical -% \advance\scratchcounter by 1 -% \getvalue{chemical::\the\scratchcounter}% -% \repeat -% \immediate\closeout\scratchwrite -% \egroup} -% -%\def\loadchemicaldimensions% oh, how nice it would be to use -% {\bgroup % one of the context read commands -% \global\currentchemical=0 -% \immediate\openin\scratchread=./ppchtex.dim -% \ifeof\scratchread -% \immediate\closein\scratchread -% \global\skipchemicalfalse -% \else -% \immediate\closein\scratchread -% \input ./ppchtex.dim\relax -% \ifnum\currentchemical>0 -% \writestatus{ppchtex}{loading dimensions from ppchtex.dim}% -% \global\skipchemicaltrue -% \else -% \global\skipchemicalfalse -% \fi -% \global\currentchemical=0 -% \global\let\savechemicaldimensions=\relax -% \fi -% \egroup -% \global\let\loadchemicaldimensions=\relax} - -\ifx\normalchemicalframe\undefined - \let\normalchemicalframe\hbox % hook for educational purposes -\fi - -\unexpanded\def\complexstartchemical[#1]% - {\copyparameters - [\??chemical][\??chemical\s!chemical] - [\c!width,\c!height,\c!left,\c!right,\c!top,\c!bottom, - \c!bodyfont,\c!size,\c!scale,\c!state,\c!frame,\c!axis,\c!factor, - \c!location,\c!option,\c!alternative,\c!resolution,\c!offset,\c!style, - \c!color,\c!rulecolor,\c!rulethickness]% - \getparameters - [\??chemical] - [#1]% - % - \setupchemicalformat[\??chemical]% - % - \ifnum\chemicaldrawingmode=2 - \resetMPdrawing - \fi - % - \doif{\@@chemicalalternative}{2} - {\@@setsecondchemicalplotsymbol}% - % - \doif{\@@chemicalaxis}\v!on - {\let\chemicalframe\hbox}% - % - \!!counta=250000 - \divide\!!counta by \@@localchemicalscale - \!!widtha=\@@chemicalbodyfont - \divide\!!widtha by \!!counta - \@@setchemicalcoordinatesystem{\the\!!widtha}% - % - % \!!counta = -x \!!countc = -y - % \!!countb = +x \!!countd = +y - % - \def\calculateaxis##1##2##3##4##5% - {##1=##3\relax - ##2=##4\relax - \ifnum##5=0 - \ifnum##3=0 - \ifnum##4=0 - ##1=2000 - ##2=2000 - \fi - \fi - \else - \ifnum##3=0 - \ifnum##4=0 - ##1=##5\relax - \divide##1 by 2 - ##2=##1\relax - \else - ##1=##5\relax - \advance##1 by -##2\relax - \fi - \else - \ifnum##4=0 - ##2=##5\relax - \advance##2 by -##1\relax - \fi - \fi - \fi}% - \fixedchemicalfalse - \doif\@@chemicalwidth\v!fit - {\edef\@@chemicalwidth - {\ifnum\chemicaldrawingmode=1 2000 \else 1 \fi}% - \fixedchemicaltrue}% - \doif\@@chemicalheight\v!fit - {\edef\@@chemicalheight - {\ifnum\chemicaldrawingmode=1 2000 \else 1 \fi}% - \fixedchemicaltrue}% - \doifelse\@@chemicallocation\v!intext - {\!!counta=0 \!!countb=0 - \!!counta=0 \!!countd=0 } - {\calculateaxis - \!!counta\!!countb - \@@chemicalleft\@@chemicalright\@@chemicalwidth - \calculateaxis - \!!countc\!!countd - \@@chemicalbottom\@@chemicaltop\@@chemicalheight}% - % - \edef\@@chemheight {\the\!!countc}% - \edef\@@chemdepth {\the\!!countd}% - \edef\@@chemicaltop {\the\!!countc}% - \edef\@@chemicalbottom{\the\!!countd}% - % - \doifinsetelse\v!on{\@@chemicalframe,\@@chemicalaxis} - {\def\@@chemicalborder{\chemicalframe}} - {\def\@@chemicalborder{\normalchemicalframe}}% - % - \setbox0=\hbox\bgroup % this was a \vbox which took \hsize - % - \@@beginchemicalpicture - {-\the\!!counta}{\the\!!countb} - {-\the\!!countc}{\the\!!countd}% - \doif{\@@chemicalstate}\v!start - {\doif\@@chemicalaxis\v!on - {\@@setchemicalaxis - {-\the\!!counta}{\the\!!countb} - {-\the\!!countc}{\the\!!countd}}}% - \doifelse\@@chemicaloption\v!test - {\def\@@writechemicalstate##1##2% - {\convertargument##2\to\ascii - \writestatus{##1}{\ascii}}} - {\def\@@writechemicalstate##1##2{}}% - \ignorespaces} - -\def\dostartchemical% - {\catcode`\^=\@@superscript% t.b.v. \enableduplication - \catcode`\_=\@@subscript % t.b.v. de zekerheid - \begingroup - \inchemicaltrue - \def\toptext##1{\gdef\thetoptext{##1}\ignorespaces}\toptext{}% - \def\bottext##1{\gdef\thebottext{##1}\ignorespaces}\bottext{}% - \def\midtext##1{\gdef\themidtext{##1}\ignorespaces}\midtext{}% - \def\@@chemicalpostponed{}% - \complexorsimpleempty\startchemical} - -\def\startchemical - {\bgroup % t.b.v. ungrouped floats -% \loadchemicaldimensions -% \ifskipchemical -% \def\dostartchemical% -% {\def\dummy[####1]{}\dosingleempty\dummy}% -% \def\chemical% -% {\def\dummy[####1][####2][####3]{}\dotripleempty\dummy}% -% \def\toptext##1{}% -% \def\midtext##1{}% -% \def\bottext##1{}% -% \fi - \dostartchemical} - -\def\stopchemical - {%\ifskipchemical - % \getchemicaldimensions{\dimen0}{\dimen2}{\dimen4}% - % \dimen8=\dimen2\advance\dimen8 by \dimen4 - % \setbox0=\vbox to \dimen8 - % {\vss\hbox to \dimen0{\hss\the\currentchemical\hss}\vss}% - % \wd0=\dimen0\ht0=\dimen2\dp0=\dimen4 - % \chemicalframe{\box0}% - %\else - \checkchemicalpicture - \@@endchemicalpicture - \egroup - \ifnum\chemicaldrawingmode=1 - \dimen0=\@@chemicalunit - \setbox0=\hbox{\lower\@@chemdepth\dimen0\box0}% - \ht0=\@@chemheight\dimen0 - \dp0=\@@chemdepth\dimen0 - \fi - \dimen0=\ht0 - \advance\dimen0 by \dp0 - \inchemicalfalse % enables \chemie{} in text - \setbox4=\alignedchemical\themidtext - \setbox6=\alignedchemical\thetoptext - \setbox8=\alignedchemical\thebottext - \setbox4=\hbox to \wd0 - {\strut\hss$\vcenter{\box4}$\hss}% - \setbox2=\vbox to \dimen0 - {\hbox to \wd0{\strut\hss\box6\hss} - \vfill - \hbox to \wd0{\strut\hss\box8\hss} - \vss}% disables the depth - \wd0=0pt \wd4=0pt - \ht2=\ht0 \dp2=\dp0 - \ht4=\ht0 \dp4=\dp0 - %\setchemicaldimensions{\wd2}{\ht2}{\dp2}% - \@@chemicalborder{\box0\box4\box2}% text on top of chemicals - \endgroup - %\fi - \ignorespaces - \egroup} % t.b.v. ungrouped floats - -\def\alignedchemical#1% - {\vtop - {\def\par{\egroup\hbox\bgroup\strut}% - \let\\=\par - \let\endgraf=\par - \hbox\bgroup\strut#1\egroup}} - -% \setchemicalcoordinates{#1}{#2} -% -% #1: verplaatsing in x-richting -% #2: verplaatsing in y-richting - -\newif\ifchemicaldirection - -\def\checkchemicaldirection#1#2% - {\ifchemicaldirection - \ifnum#1>0 \advance\horchemical -\chemicaldirection \fi - \ifnum#1<0 \advance\horchemical +\chemicaldirection \fi - \ifnum#2>0 \advance\verchemical -\chemicaldirection \fi - \ifnum#2<0 \advance\verchemical +\chemicaldirection \fi - \chemicaldirectionfalse - \fi} - -\def\processchemicaldirection% - {\chemicaldirectiontrue\processchemicaltranslate} - -\def\setchemicalcoordinates#1#2% - {\advance\horchemical #1\relax - \advance\verchemical #2\relax - \checkchemicaldirection{#1}{#2}% - \!!counta=-\horchemical\edef\chemicalxoffset{\the\!!counta}% - \!!countb=-\verchemical\edef\chemicalyoffset{\the\!!countb}% - \ifnum\chemicaldrawingmode=1 - % njet - \else - \setcoordinatesystem point at {\the\horchemical} {\the\verchemical} - \fi} - -\def\resetchemicalcoordinates - {\horchemical=0 - \verchemical=0 - \edef\chemicalxoffset{0}% - \edef\chemicalyoffset{0}% - \ifnum\chemicaldrawingmode=1 - % njet - \else - \setcoordinatesystem point at 0 0 - \fi} - -\def\restorechemicalcoordinates - {%\writestatus{ppchtex}{restoring \the\horchemical,\the\verchemical}% - \edef\chemicalxoffset{\the\horchemical}% - \edef\chemicalyoffset{\the\verchemical}% - \ifnum\chemicaldrawingmode=1 - % njet - \else - \setcoordinatesystem point at {\the\horchemical} {\the\verchemical} - \fi} - -\def\setchemicaltranslate #1 #2 #3 - {\setvalue{\s!translate#1}{\setchemicalcoordinates{#2}{#3}}} - -\def\processchemicaltranslate#1% - {\def\doprocess[##1##2]% - {\doifchemicalnumber{##1}{MOV#1} - {\ifnum##1=0 - \def\chemicaloffset{0}% incompatible change - \resetchemicalcoordinates - \else - \getvalue{\s!translate##1}% - \dochemicaloffset{##1}% - \def\chemicaloffset{0}% - \fi}}% - \doprocess[#1]} - -\def\setchemicaldistance #1 - {\setvalue{\s!distance1}{\setchemicalcoordinates{-#1}{ 0}}% - \setvalue{\s!distance2}{\setchemicalcoordinates{ 0}{ #1}}% - \setvalue{\s!distance3}{\setchemicalcoordinates{ #1}{ 0}}% - \setvalue{\s!distance4}{\setchemicalcoordinates{ 0}{-#1}}} - -\def\setchemicaldirection #1 - {\def\chemicaldirection{#1}} - -\def\processchemicaldistance#1% - {\def\doprocess[##1##2]% - {\doifchemicalnumber{##1}{ADJ#1} - {\ifnum##1=0 - \resetchemicalcoordinates - \else - \def\@@chemicalpostponed{\getvalue{\s!distance##1}}% - \@@chemicalpostponed - \fi}}% - \doprocess[#1]} - -\def\setchemicalsubstitute #1 - {\setvalue{\s!substitute1}{\setchemicalcoordinates{-#1}{ 0}}% - \setvalue{\s!substitute2}{\setchemicalcoordinates{ 0}{ #1}}% - \setvalue{\s!substitute3}{\setchemicalcoordinates{ #1}{ 0}}% - \setvalue{\s!substitute4}{\setchemicalcoordinates{ 0}{-#1}}} - -\def\processchemicalsubstitute#1% - {\def\doprocess[##1##2]% - {\doifchemicalnumber{##1}{SUB#1} - {\ifnum##1=0 - \resetchemicalcoordinates - \else - \def\@@chemicalpostponed{\getvalue{\s!substitute##1}}% - \@@chemicalpostponed - \fi}}% - \doprocess[#1]} - -% Het is mogelijk een offset of move meerdere malen uit te -% voeren, door een nummer voor het commando te plaatsen. - -\def\chemicalrepeat {1} - -\def\redoprocesschemical[#1#2]% - {\doifinstringelse{#1}{0123456789.} - {\edef\chemicalrepeat{\chemicalrepeat#1}% - \redoprocesschemical[#2]} - {\processchemical[#1#2]% - \def\chemicalrepeat{1}}} - -\def\doprocesschemical[#1#2]#3% - {\doifinstringelse{#1}{0123456789.} - {\def\chemicalrepeat{#1}% - \redoprocesschemical[#2]} - {#3}} - -% \dochemicaloffset{#1} -% -% #1: binding - -\def\chemicaloffset{0} - -\def\processchemicaloffset#1% - {\dimen0=62500 sp % real calc on cardinals, funny number - \dimen0=\chemicalrepeat\dimen0 - \divide\dimen0 by \@@localchemicalscale - \!!counta=\dimen0 - \def\doprocess[##1##2]% - {\doifinstringelse{##1}{128} - {\edef\chemicaloffset{\the\!!counta}} - {\doifinstringelse{##1}{456} - {\edef\chemicaloffset{-\the\!!counta}} - {\doifelse{##1}{0} - {\edef\chemicaloffset{0}} - {\unknownchemical{OFF#1}}}}}% - \doprocess[#1]} - -\def\dochemicaloffset#1% - {\ifnum\chemicaloffset=0 - \def\undochemicaloffset{}% - \else - \setchemicalcoordinates{-\chemicaloffset}{0}% - \def\undochemicaloffset% - {\setchemicalcoordinates{\chemicaloffset}{0}% - \def\undochemicaloffset{}}% - \fi} - -\def\processchemicalphantom#1#2% - {\setbox0=\hbox - {\def\splitoff##1????{##1}% - $\@@dochemicalstyle{\@@localchemicalformat\splitoff#2}$}% - \dimen0=.25\wd0 - \divide\dimen0 by \@@localchemicalscale - \!!counta=\dimen0 - \doifinstringelse{#1}{128} - {\edef\chemicaloffset{\the\!!counta}} - {\doifinstringelse{#1}{456} - {\edef\chemicaloffset{-\the\!!counta}} - {\doifelse{#1}{0} - {\edef\chemicaloffset{0}} - {\unknownchemical{OF#1:#2}}}}} - -% \dosetchemicalrotation{#1}{#2} -% -% #1: cos(phi) -% #2: sin(phi) - -\def\chemicalrotation {1} -\def\chemicalangle {0} -\def\chemicalxoffset {0} -\def\chemicalyoffset {0} - -\def\setchemicalmirror#1% - {\setvalue{\s!mirror#1}{*}} - -\def\resetchemicalmirror#1% - {\resetvalue{\s!mirror#1}} - -\def\togglechemicalmirror#1% - {\doifelse{\getvalue{\s!mirror#1}}{*} - {\resetchemicalmirror{#1}} - {\setchemicalmirror{#1}}} - -\def\setchemicalrotation #1 #2 #3 #4 #5 #6 #7 #8 #9 - {\setvalue{\s!rotate1.#1}{\dosetchemicalrotation{#2}{#3}}% - \setvalue{\s!rotate2.#1}{\dosetchemicalrotation{#4}{#5}}% - \setvalue{\s!rotate3.#1}{\dosetchemicalrotation{#6}{#7}}% - \setvalue{\s!rotate4.#1}{\dosetchemicalrotation{#8}{#9}}} - -\def\setchemicalangle #1 #2 #3 #4 #5 - {\setvalue{\s!angle1.#1}{\dosetchemicalangle{#2}}% - \setvalue{\s!angle2.#1}{\dosetchemicalangle{#3}}% - \setvalue{\s!angle3.#1}{\dosetchemicalangle{#4}}% - \setvalue{\s!angle4.#1}{\dosetchemicalangle{#5}}} - -\def\chemicalrotate[#1]% - {\doifdefinedelse{\s!mirror#1} - {\getvalue{\s!rotate\chemicalrotation.#1\getvalue{\s!mirror#1}}% - \getvalue{\s!angle\chemicalrotation.#1\getvalue{\s!mirror#1}}} - {\getvalue{\s!rotate\chemicalrotation.#1}% - \getvalue{\s!angle\chemicalrotation.#1}}} - -\def\dosetchemicalangle#1% zwak zie onder - {\def\chemicalangle{#1}} - -\def\dosetchemicalrotation#1#2% - {\ifnum\chemicaldrawingmode=1 - % njet - \else - \startrotation by {#1} {#2} %% \stoprotation (t.b.v. testen) - \fi} - -\def\doresetchemicalrotation - {\ifnum\chemicaldrawingmode=1 - % njet - \else - \stoprotation - \fi} - -\def\processchemicalrotation#1% - {\def\doprocess[##1##2]% - {\doifnumberelse{##1} - {\def\chemicalrotation{##1}} - {\unknownchemical{ROT#1}}}% - \doprocess[#1]} - -% \filtertextelement[#1][#2][#3][#4] -% -% #1: volgnummer -% #2: offset in uitlijningen -% #3: lijst met uitlijningen -> \chemicalloca -% #4: lijst met teksten -> \chemicaltext - -\def\setchemicallocation#1% - {\doifelse{#1}{} - {\edef\chemicalloca{c}} - {\edef\chemicalloca{#1}}} - -\newif\iffixedchemicaltext - -\def\filterchemicaltextelement[#1][#2][#3][#4]% - {\ifchemicaltextconstant - \def\chemicaltext{#4}% - \setchemicallocation{}% - \else - \ifnum#1=0\relax - \setchemicallocation{}% - \else - \iffixedchemicaltext - \!!counta#2 - \else - \!!counta=\chemicalrotation - \advance\!!counta -1 - \multiply\!!counta #2 - \advance\!!counta #1 - \fi - \getfromcommalist[#3][\the\!!counta]% - \setchemicallocation\commalistelement - \fi - \ifchemicalpicture - \let\chemicaltext\relax - \else - \advance\txtchemical 1 - \getfromcommalist[#4][\txtchemical]% - \let\chemicaltext\commalistelement - \fi - \fi - \fixedchemicaltextfalse} - -% \putchemicaltext{#1}{#2} -% -% #1 : x-coordinaat -% #2 : y-coordinaat -% -% \chemicaltext en \chemicalloca worden met \gettextelement -% opgehaald uit de tweede set bij \chemie -% -% Ten behoeve van testdoeleinden wordt gebruik gemaakt van -% \chemicalframe in plaats van het meer sjieke, maar tevens -% meer trage \framed. - -\ifx\ruledhbox\undefined - \def\chemicalframe#1% - {\hbox - {\vrule\hskip-.4pt - \vbox{\hrule\vskip-.4pt\hbox{#1}\vskip-.4pt\hrule}% - \hskip-.4pt\vrule}} -\else - \def\chemicalframe#1% - {\ruledhbox{#1}} -\fi - -\def\doputchemicaltext#1 [#2] at #3 #4 % - {\ifnum\chemicaldrawingmode=1 - \rput - {-\chemicalangle}(\chemicalxoffset,\chemicalyoffset)% - {\expanded{\rput[#2]{\chemicalangle}(#3,#4){#1}}}% - \else - \put {#1} [#2] at {#3} {#4} % - \fi} - -\def\dodoifsinglelocation#1#2\\#3% - {\ifx#2\relax#3\fi} - -\def\doifsinglelocationelse#1% - {\expandafter\dodoifsinglelocationelse#1\relax\\} - -\def\putchemicaltext#1#2% - {\enablechemicalspecials - \ifchemicalpicture - \setchemicalpicture{#1}{#2}% - \else - \doifelse\@@chemicaloption\v!test - {\def\@@chemicalframe{\chemicalframe}} - {\def\@@chemicalframe{}}% - \dosetsubscripts - \setbox2=\hbox{\@@dochemicalcolor - $\@@dochemicalstyle{\@@localchemicalformat \chemicaltext}$}% - \setbox4=\hbox{$\@@dochemicalstyle{\@@localchemicalformat C_2^2}$}% - \setbox6=\hbox{$\@@dochemicalstyle{\@@localchemicalformat O}$}% or C - \doresetsubscripts - \doifnot\@@chemicallocation\v!intext - {\ht2=\ht4 - \dp2=\dp4}% - \setbox2=\hbox{\@@chemicalframe{\box2}}% - \ifdim\wd2>\wd6 - \doifelse{#1}{0} - {\doifnot{#2}{0}{\wd2=\wd6}} - {%\doifsinglelocation\chemicalloca - {\doifinset{\chemicalloca}{t,b}{\wd2=\wd6}}}% common ? - \fi - \expanded - {\doputchemicaltext - {\noexpand\dowithchemical{\copy2}} % per se \copy2 i.p.v. \box2 - [\chemicalloca] at {#1} {#2} } - \nomoreaccounting - \fi - \disablechemicalspecials} - -\def\setchemicaltextelement #1 #2 #3 - {\setvalue{\s!chemicaltextelement#1}{\putchemicaltext{#2}{#3}}} - -\def\getchemicalfixedtextelement% - {\fixedchemicaltexttrue - \getchemicaltextelement} - -\def\getchemicaltextelement[#1][#2][#3][#4][#5]% - {\filterchemicaltextelement[#2][#3][#4][#5]% - \doifelse{#2}{0} - {\dochemicaloffset{#2}% % incompatible change - \putchemicaltext{0}{0}% - \undochemicaloffset} % incompatible change - {\chemicalrotate[#2]% - \dochemicaloffset{#2}% - \def\chemicaltextelementnumber{#2}% - \getvalue{\s!chemicaltextelement#1}% - \getvalue{\s!chemicaltextelement#11}% - \getvalue{\s!chemicaltextelement#12}% - \getvalue{\s!chemicaltextelement#13}% - \undochemicaloffset}} - -\def\processchemicaltextelement#1#2#3#4#5% - {\def\doprocess[##1##2##3##4##5]% - {\doifelse{##1}{?} - {\doprocess[1..\maxchemical ????]} - {\doifchemicalnumber{##1}{#1#2} - {\doifelse{##2##3}{..} - {\doifchemicalnumber{##4}{#1#2} - {\getchemicaltextelement[#1][##1][#4][#5][#3]% - \doifnot{##1}{##4} - {\!!counta=##1\relax - \advance\!!counta by 1 - \edef\nextsegment{\the\!!counta}% - \doprocess[\nextsegment..##4##5]}}} - {\getchemicaltextelement[#1][##1][#4][#5][#3]% - \doifnot{##2}{?}{\doprocess[##2##3##4##5]}}}}}% - \doprocess[#2]% - \smallchemicaltextfalse} - -\def\processchemicalsmalltextelement% - {\smallchemicaltexttrue\processchemicaltextelement} - -\def\processchemicalsmalltextconstant% - {\smallchemicaltexttrue\processchemicaltextconstant} - -\def\processchemicalunrotatedtextelement#1#2#3#4#5#6% - {\bgroup - \xdef\@@xxx{0}% - \xdef\@@yyy{0}% - \def\putchemicaltext##1##2% - {\xdef\@@xxx{##1}% - \xdef\@@yyy{##2}}% - \getvalue{\s!chemicaltextelement#1}% - \egroup - \bgroup - \def\doputchemicaltext##1 [##2] at ##3 ##4 % - {\ifnum\chemicaldrawingmode=1 - \rput - {-\chemicalangle}(\chemicalxoffset,\chemicalyoffset)% - {\rput{\chemicalangle}(\@@xxx,\@@yyy){\expanded{\rput[##2](##3,##4){##1}}}}% - \else - \put - {\stoprotation \setcoordinatesystem point at 0 0 - \expanded{\put {##1} [##2] at {##3} {##4} }} - at {\@@xxx} {\@@yyy} - \fi}% - \processchemicaltextelement{#2}{#3}{#4}{#5}{#6}% - \egroup} - -\newif\ifchemicaltextconstant - -\def\processchemicaltextconstant#1#2#3#4% - {\chemicaltextconstanttrue - \let\@@oldchemicalframe\@@chemicalframe - \let\@@chemicalframe\relax - \processchemicaltextelement{#1}{#2}{#3}{#4}{}% - \let\@@chemicalframe\@@oldchemicalframe - \chemicaltextconstantfalse} - -% \plotchemicalline{#1}{#2}{#3}{#4} -% -% #1: x-coordinaat beginpunt -% #2: y-coordinaat beginpunt -% #3: x-coordinaat eindpunt -% #4: y-coordinaat eindpunt - -\chardef\chemicallinetype=0 - -\def\doplotchemicalline - {\!!counte=\!!countc \advance\!!counte by -\!!counta - \!!countf=\!!countd \advance\!!countf by -\!!countb - \bgroup - \ifcase\chemicaldrawingmode - \ifcase\chemicallinetype - % 0 : normal line - \plot {\!!counta} {\!!countb} {\!!countc} {\!!countd} /% - \or - % 1 : normal arrow - \arrow <5pt> [.2,.67] from {\!!counta} {\!!countb} to {\!!countc} {\!!countd} - \or - % 2 : reverse arrow - \arrow <5pt> [.2,.67] from {\!!countc} {\!!countd} to {\!!counta} {\!!countb} - \or - % 3 : unrotated line - \put {\stoprotation \setcoordinatesystem point at 0 0 - \plot 0 0 {\!!counte} {\!!countf} /} - [\chemicallineposition] at {\!!counta} {\!!countb} - \else - % 4 : dashed line - \findlength {\plot {\!!counta} {\!!countb} {\!!countc} {\!!countd} /}% - \setdashesnear <2pt> for <\totalarclength>% - \plot {\!!counta} {\!!countb} {\!!countc} {\!!countd} /% - \fi - \or - \ifcase\chemicallinetype - \rput - {-\chemicalangle}(\chemicalxoffset,\chemicalyoffset)% - {\psline(\!!counta,\!!countb)(\!!countc,\!!countd)}% - \or - \rput - {-\chemicalangle}(\chemicalxoffset,\chemicalyoffset)% - {\psline{->}(\!!counta,\!!countb)(\!!countc,\!!countd)}% - \or - \rput - {-\chemicalangle}(\chemicalxoffset,\chemicalyoffset)% - {\psline{<-}(\!!counta,\!!countb)(\!!countc,\!!countd)}% - \or - \rput - {-\chemicalangle}(\chemicalxoffset,\chemicalyoffset)% - {\expanded{\rput[\chemicallineposition]{-\chemicalangle}% - (\!!counta,\!!countb){\psline(0,0)(\!!counte,\!!countf)}}}% - \else - \psset{linestyle=dashed}% - \rput - {-\chemicalangle}(\chemicalxoffset,\chemicalyoffset)% - {\psline(\!!counta,\!!countb)(\!!countc,\!!countd)}% - \fi - \or - \global\MPdrawingdonetrue - \setchemicalattributes - \startMPdrawing - x0 := \MPdivten[\chemicalxoffset]u ; - y0 := \MPdivten[\chemicalyoffset]u ; - x1 := \MPdivten[\the\!!counta]u ; - y1 := \MPdivten[\the\!!countb]u ; - x2 := \MPdivten[\the\!!countc]u ; - y2 := \MPdivten[\the\!!countd]u ; - x3 := \MPdivten[\the\!!counte]u ; - y3 := \MPdivten[\the\!!countf]u ; - \ifcase\chemicallinetype - % 0 : normal line - draw ((z1--z2) rotatedaround(origin,-\chemicalangle)) - shifted z0 ; - \or - % 1 : normal arrow - drawarrow ((z1--z2) rotatedaround(origin,-\chemicalangle)) - shifted z0 ; - \or - % 2 : reverse arrow - drawarrow ((z2--z1) rotatedaround(origin,-\chemicalangle)) - shifted z0 ; - \or - % 3 : unrotated line % nog \chemicalineposition: t/b - draw (origin--z3) - shifted (z1 rotatedaround(origin,-\chemicalangle)) - shifted z0 ; - \else - % 4 : dashed line - draw ((z1--z2) rotatedaround(origin,-\chemicalangle)) -% shifted z0 dashed evenly ; - shifted z0 dashed dashpattern(on 5.5u off 6u) ; - \fi - \stopMPdrawing - \fi - \egroup - \account\!!counta\!!countb - \account\!!countc\!!countd} - -\def\plotchemicalline#1#2#3#4% - {\!!counta=#1\!!countb=#2\!!countc=#3\!!countd=#4\relax - \doplotchemicalline} - -\def\plotchemicalfactorline#1#2#3#4% - {\!!counta=#1\!!countb=#2\!!countc=#3\!!countd=#4\relax - \ifdim\@@chemicalfactor\onepoint=\onepoint \else - \scratchdimen\!!counta\s!sp \multiply\scratchdimen1000 \scratchdimen\@@chemicalfactor\scratchdimen \divide\scratchdimen1000 \!!counta\scratchdimen - \scratchdimen\!!countc\s!sp \multiply\scratchdimen1000 \scratchdimen\@@chemicalfactor\scratchdimen \divide\scratchdimen1000 \!!countc\scratchdimen - \fi - \doplotchemicalline} - -\def\plotchemicalzline#1#2#3#4% - {\!!counta=#1\!!countb=#2\!!countc=#3\!!countd=#4\relax - \ifnum\chemicaldrawingmode=2 - \global\MPdrawingdonetrue - \setchemicalattributes - \startMPdrawing - x0 := \MPdivten[\chemicalxoffset]u ; - y0 := \MPdivten[\chemicalyoffset]u ; - x1 := \MPdivten[\the\!!counta]u ; - y1 := \MPdivten[\the\!!countb]u ; - x2 := \MPdivten[\the\!!countc]u ; - y2 := \MPdivten[\the\!!countd]u ; - filldraw (( - \ifnum\chemicalangle>180 - z1--z2 - \else\ifnum\chemicalangle<90 - z1--(z2 shifted (-2u,+2u))--(z2 shifted (+2u,-2u)) - \else\ifnum\chemicalangle=90 - (z1 shifted (-2u,+2u))--(z1 shifted (+2u,-2u))-- - (z2 shifted (+2u,+2u))--(z2 shifted (-2u,-2u)) - \else - (z1 shifted (+2u,+2u))--(z1 shifted (-2u,-2u))--z2 - \fi\fi\fi - --cycle) rotatedaround(origin,-\chemicalangle)) shifted z0 ; - \stopMPdrawing - \else - \doplotchemicalline - \ifnum\chemicalangle>180 \else - \ifnum\chemicalangle=90 - \advance\!!counta by -20 \advance\!!countc by -20 - \doplotchemicalline - \advance\!!counta by 40 \advance\!!countc by 40 - \else\ifnum\chemicalangle<90 - \advance\!!countc by -20 \advance\!!countd by +20 - \doplotchemicalline - \advance\!!countc by +40 \advance\!!countd by -40 - \else - \advance\!!counta by 20 \advance\!!countb by 20 - \doplotchemicalline - \advance\!!counta by -40 \advance\!!countb by -40 - \fi\fi - \fi - \doplotchemicalline - \fi} - -\def\plotchemicaldeltaline#1#2#3#4% - {\!!counta=#1\!!countb=#2\!!countc=#3\!!countd=#4\relax - \ifnum\chemicaldrawingmode=2 - \global\MPdrawingdonetrue - \setchemicalattributes - \startMPdrawing - x0 := \MPdivten[\chemicalxoffset]u ; - y0 := \MPdivten[\chemicalyoffset]u ; - x1 := \MPdivten[\the\!!counta]u ; - y1 := \MPdivten[\the\!!countb]u ; - x2 := \MPdivten[\the\!!countc]u ; - y2 := \MPdivten[\the\!!countd]u ; - filldraw ((z1--(z2 rotatedaround(z1,5))--(z2 rotatedaround(z1,-5)) - --cycle) rotatedaround(origin,-\chemicalangle)) - shifted z0 ; - \stopMPdrawing - \account{#1}{#2}% - \account{#3}{#4}% - \else - \doplotchemicalline - \advance\!!countc by 16 \advance\!!countd by -21 - \doplotchemicalline - \advance\!!countc by -4 \advance\!!countd by 7 - \doplotchemicalline - \advance\!!countc by -4 \advance\!!countd by 7 - \doplotchemicalline - \advance\!!countc by -8 \advance\!!countd by 14 - \doplotchemicalline - \advance\!!countc by -4 \advance\!!countd by 7 - \doplotchemicalline - \advance\!!countc by -4 \advance\!!countd by 7 - \doplotchemicalline - \advance\!!countc by -4 \advance\!!countd by 7 - \doplotchemicalline - \fi} - -\def\setchemicallinesegment #1 #2 #3 #4 #5 - {\setvalue{\s!chemicallinesegment#1}{\plotchemicalline{#2}{#3}{#4}{#5}}} - -\def\setchemicalfactorlinesegment #1 #2 #3 #4 #5 - {\setvalue{\s!chemicallinesegment#1}{\plotchemicalfactorline{#2}{#3}{#4}{#5}}} - -\def\getchemicallinesegment[#1][#2]% - {\chemicalrotate[#1]% - \dochemicaloffset{#1}% - \getvalue{\s!chemicallinesegment#2}% - \getvalue{\s!chemicallinesegment#21}% - \getvalue{\s!chemicallinesegment#22}% - \undochemicaloffset} - -\def\getprivatechemicallinesegment[#1][#2]% - {\chemicalrotate[#1]% - \getvalue{\s!chemicallinesegment#2#1}} - -\def\doprocesschemicallinesegment#1#2#3#4#5% - {\chardef\chemicallinetype=#1 - \def\chemicallineposition{#2}% - \def\doprocess[##1##2##3##4##5]% - {\doifelse{##1}{?} - {\doprocess[1..\maxchemical ????]} - {\doifchemicalnumber{##1}{#4#5} - {\doifelse{##2##3}{..} - {\doifchemicalnumber{##4}{#4#5} - {#3[##1][#4]% - \doifnot{##1}{##4} - {\!!counta=##1\relax - \advance\!!counta by 1 - \edef\nextsegment{\the\!!counta}% - \doprocess[\nextsegment..##4##5]}}} - {#3[##1][#4]% - \doifnot{##2}{?} - {\doprocess[##2##3##4##5]}}}}}% - \doprocess[#5]} - -\def\processchemicallinesegment - {\doprocesschemicallinesegment0c\getchemicallinesegment} - -\def\processchemicalzlinesegment#1#2% - {%\doprocesschemicallinesegment0c\getchemicallinesegment{#1}{#2}% - \bgroup - \def\plotchemicalline{\plotchemicalzline}% - \doprocesschemicallinesegment0c\getchemicallinesegment{#1}{#2}% - \egroup} - -\def\processchemicaldeltalinesegment#1#2% - {%\doprocesschemicallinesegment0c\getchemicallinesegment{#1}{#2}% - \bgroup - \def\plotchemicalline{\plotchemicaldeltaline}% - \doprocesschemicallinesegment0c\getchemicallinesegment{#1}{#2}% - \egroup} - -\def\processprivatechemicallinesegment% - {\doprocesschemicallinesegment0c\getprivatechemicallinesegment} - -\def\processchemicaldownarrowsegment% - {\doprocesschemicallinesegment1c\getchemicallinesegment} - -\def\processchemicaluparrowsegment% - {\doprocesschemicallinesegment2c\getchemicallinesegment} - -\def\processchemicalunrotatedlinesegment#1% - {\doprocesschemicallinesegment3{#1}\getchemicallinesegment} - -\def\processchemicaldashedlinesegment - {\doprocesschemicallinesegment4c\getchemicallinesegment} - -\def\plotchemicaldasheddeltaline#1#2#3#4% - {\!!counta=#1\!!countb=#2\!!countc=#3\!!countd=#4\relax - \ifnum\chemicaldrawingmode=2 - \global\MPdrawingdonetrue - \setchemicalattributes - \startMPdrawing - x0 := \MPdivten[\chemicalxoffset]u ; - y0 := \MPdivten[\chemicalyoffset]u ; - x1 := \MPdivten[\the\!!counta]u ; - y1 := \MPdivten[\the\!!countb]u ; - x2 := \MPdivten[\the\!!countc]u ; - y2 := \MPdivten[\the\!!countd]u ; - z20 = z2 rotatedaround(z1,+5) ; - z21 = z2 rotatedaround(z1,-5) ; - draw (z1 rotatedaround(origin,-\chemicalangle)) shifted z0 ; - save n ; n := 5 ; - for i=1 upto n : - draw ((((z20--z21) shifted -z2) shifted (i/n)[z2,z1]) - rotatedaround(origin,-\chemicalangle)) shifted z0 ; - endfor - \stopMPdrawing - \account{#1}{#2}% - \account{#3}{#4}% - \else - \doplotchemicalline - \advance\!!countc by 16 \advance\!!countd by -21 - \doplotchemicalline - \advance\!!countc by -4 \advance\!!countd by 7 - \doplotchemicalline - \advance\!!countc by -4 \advance\!!countd by 7 - \doplotchemicalline - \advance\!!countc by -8 \advance\!!countd by 14 - \doplotchemicalline - \advance\!!countc by -4 \advance\!!countd by 7 - \doplotchemicalline - \advance\!!countc by -4 \advance\!!countd by 7 - \doplotchemicalline - \advance\!!countc by -4 \advance\!!countd by 7 - \doplotchemicalline - \fi} - -\def\plotchemicalwavyline#1#2#3#4% - {\!!counta=#1\!!countb=#2\!!countc=#3\!!countd=#4\relax - \ifnum\chemicaldrawingmode=2 - \global\MPdrawingdonetrue - \setchemicalattributes - \startMPdrawing - x0 := \MPdivten[\chemicalxoffset]u ; - y0 := \MPdivten[\chemicalyoffset]u ; - x1 := \MPdivten[\the\!!counta]u ; - y1 := \MPdivten[\the\!!countb]u ; - x2 := \MPdivten[\the\!!countc]u ; - y2 := \MPdivten[\the\!!countd]u ; - save d ; pair d ; - d := z2 rotatedaround(z1,+5) shifted -z2 ; - save n ; n := 4 ; - draw ((for i=0 upto n-1 : - ((i)/n)[z1,z2] .. - ((i+.25)/n)[z1,z2] shifted d .. - ((i+.50)/n)[z1,z2] .. - ((i+.75)/n)[z1,z2] shifted -d .. - endfor - z2) rotatedaround(origin,-\chemicalangle)) shifted z0 ; - \stopMPdrawing - \account{#1}{#2}% - \account{#3}{#4}% - \else - \doplotchemicalline - \advance\!!countc by 16 \advance\!!countd by -21 - \doplotchemicalline - \advance\!!countc by -4 \advance\!!countd by 7 - \doplotchemicalline - \advance\!!countc by -4 \advance\!!countd by 7 - \doplotchemicalline - \advance\!!countc by -8 \advance\!!countd by 14 - \doplotchemicalline - \advance\!!countc by -4 \advance\!!countd by 7 - \doplotchemicalline - \advance\!!countc by -4 \advance\!!countd by 7 - \doplotchemicalline - \advance\!!countc by -4 \advance\!!countd by 7 - \doplotchemicalline - \fi} - -\def\processchemicaldasheddeltalinesegment#1#2% - {\bgroup - \def\plotchemicalline{\plotchemicaldasheddeltaline}% - \doprocesschemicallinesegment0c\getchemicallinesegment{#1}{#2}% - \egroup} - -\def\processchemicalwavylinesegment#1#2% - {\bgroup - \def\plotchemicalline{\plotchemicalwavyline}% - \doprocesschemicallinesegment0c\getchemicallinesegment{#1}{#2}% - \egroup} - -\def\processchemicalopenend#1#2% - {\doprocesschemicallinesegment0c\doprocesschemicalopenend{#1}{#2}} - -\def\doprocesschemicalopenend[#1][#2]% - {\chemicalrotate[#1]% - \dochemicaloffset{#1}% - \ifcase\chemicaldrawingmode - \beginpicture - \setquadratic\plot - 300 0 400 0 - 500 0 550 75 - 600 0 650 -75 - 700 0 750 75 - 800 0 850 -75 - 900 0 950 0 - 1050 0 / - \endpicture - \or - \rput{-\chemicalangle}(\chemicalxoffset,\chemicalyoffset)% - {\psline(300,0)(500,0)% - \rput(500,0){\psplot[yunit=75,plotstyle=curve]{0}{720}{x sin}}% - \psline(950,0)(1050,0)}% - \or - \global\MPdrawingdonetrue - \setchemicalattributes - \startMPdrawing - x0 := \MPdivten[\chemicalxoffset]u ; - y0 := \MPdivten[\chemicalyoffset]u ; - draw - (((30.0u,0)--(50.0u,0){up}..(55.0u,7.5u).. - (60.0u,0)..(65.0u,-7.5u)..(70.0u,0).. - (75.0u,7.5u)..(80.0u,0)..(85.0u,-7.5u)..{up} - (90.0u,0)--(105.0u,0)) rotatedaround(origin,-\chemicalangle)) - shifted z0 ; - \stopMPdrawing - \fi - \undochemicaloffset} - -% \plotchemicalcircle{#1}{#2}{#3}{#4} -% -% #1: lengte van de boog in graden -% #2: x-coordinaat eindpunt -% #3: y-coordinaat eindpunt - -\newif\ifchemicaldotted - -\def\plotchemicalcircle#1#2#3#4#5#6% - {\bgroup - \ifcase\chemicaldrawingmode - \ifchemicaldotted - \findlength{\circulararc {#4} degrees from {#5} {#6} center at {0} {0} }% - \divide\totalarclength by 6 - \def\b{\the\totalarclength}% - \divide\totalarclength by 2 - \def\a{\the\totalarclength}% - \setdashpattern <\a,\b,\b,\b,\b,\b,\a> - \fi - \circulararc {#4} degrees from {#5} {#6} center at {0} {0} % - \or - \ifchemicaldotted - \psset{linestyle=dashed}% - \fi - \rput - {-\chemicalangle}(\chemicalxoffset,\chemicalyoffset)% - {\psarc(0,0){#3}{#1}{#2}}% - \or - \global\MPdrawingdonetrue - \setchemicalattributes - \startMPdrawing - r := \MPdivten[#3]*2u; - x0 := \MPdivten[\chemicalxoffset]u ; - y0 := \MPdivten[\chemicalyoffset]u ; - draw ((subpath (#1/45,#2/45) of (fullcircle scaled (r))) - rotatedaround (origin,\chemicalangle+150)) - shifted z0 \ifchemicaldotted dashed withdots \fi ; - \stopMPdrawing - \fi - \egroup} - -\def\setchemicalcircsegment #1 #2 #3 #4 #5 #6 #7 - {\setvalue{\s!chemicalcircsegment#1}{\plotchemicalcircle{#2}{#3}{#4}{#5}{#6}{#7}}} - -\def\getchemicalcircsegment[#1][#2]% - {\chemicalrotate[#1]% - \getvalue{\s!chemicalcircsegment#2}} - -\def\doprocesschemicalcircsegment#1#2% - {\def\doprocess[##1##2##3##4##5]% - {\doifelse{##1}{?} - {\doprocess[1..\maxchemical ????]} - {\doifchemicalnumber{##1}{#1#2} - {\doifelse{##2##3}{..} - {\doifchemicalnumber{##4}{#1#2} - {\getchemicalcircsegment[##1][#1]% - \doifnot{##1}{##4} - {\!!counta=##1\relax - \advance\!!counta by 1 - \edef\nextsegment{\the\!!counta}% - \doprocess[\nextsegment..##4##5]}}} - {\getchemicalcircsegment[##1][#1]% - \doifnot{##2}{?} - {\doprocess[##2##3##4##5]}}}}}% - \doprocess[#2]} - -\def\processchemicalcircsegment% - {\chemicaldottedfalse\doprocesschemicalcircsegment} - -\def\processchemicaldottsegment% - {\chemicaldottedtrue\doprocesschemicalcircsegment} - -\let\endchemicalpicture = \relax -\let\checkchemicalpicture = \relax -\let\nomoreaccounting = \relax - -\newif\ifchemicalpicture - -\def\beginchemicalpicture#1% NO PSTRICKS SUPPORT YET - {\checkchemicalpicture - \bgroup % DOES NOT HANDLE AUTOWIDTH/HEIGHT - \chemicalpicturetrue - \processchemical[#1]} - -\def\setchemicalpicture#1#2% - {\chemicalpicturefalse - \def\endchemicalpicture% - {\@@endchemicallocalpicture{#1}{#2}% - \egroup - \ifnum\chemicaldrawingmode=1 - \rput - {-\chemicalangle}(\chemicalxoffset,\chemicalyoffset)% - {\expanded{\rput[\chemicalloca]{\chemicalangle}(#1,#2){\box\nextbox}}}% - \else - \expanded{\put{\box\nextbox}[\chemicalloca] at {#1} {#2} } - \fi - \egroup}% - \def\checkchemicalpicture% - {\ifx\endchemicalpicture\relax \else - \writestatus{ppchtex}{missing end of picture (PE)}% - \endchemicalpicture - \fi}% - \setbox\nextbox=\hbox\bgroup - \@@beginchemicallocalpicture - % alternatief: gewoon accounting, en zelf l,r afhandelen - \ifnum\chemicaldrawingmode=1 - % njet - \else - \accountingon - \let\nomoreaccounting=\accountingoff - \fi} - -\def\doskipchemical[#1][#2]% - {{\tt[ppchtex]}} - -\def\skipchemical% - {\dodoubleargument\doskipchemical} - -\def\complexchemical% met \expandafter - {\ifinchemical - \expandafter\dochemical - \else - \writestatus{ppchtex}{the [][]-alternative is not permitted here}% - \expandafter\skipchemical - \fi} - -\newif\ifinnerchemical - -\def\dosimplechemical#1#2#3% - {\doifdefinedelse{\??chemical\c!location} - {\writestatus{ppchtex}{the {}{}-alternative is not permitted here}} - {\ifinnerchemical - \let\chemicalsign = \chemicalinnersign - \let\chemicalmolecule = \chemicalinnermolecule - \let\chemicalsinglearrow = \chemicalsingleinnerarrow - \let\chemicaldoublearrow = \chemicaldoubleinnerarrow - \let\chemicaltwintiparrow = \chemicaltwintipinnerarrow - \else - \let\chemicalsign = \chemicaloutersign - \let\chemicalmolecule = \chemicaloutermolecule - \let\chemicalsinglearrow = \chemicalsingleouterarrow - \let\chemicaldoublearrow = \chemicaldoubleouterarrow - \let\chemicaltwintiparrow = \chemicaltwintipouterarrow - \fi - \disablechemicalspecials - \unexpandedprocessallactionsinset - [#1] - [ HIGH=>\sethighsubscripts, - LOW=>\setlowsubscripts, - PLUS=>\chemicalsign{+}, - GIVES=>\chemicalsinglearrow{#2}{#3}, - EQUILIBRIUM=>\chemicaldoublearrow{#2}{#3}, - MESOMERIC=>\chemicaltwintiparrow{#2}{#3}, - SINGLE=>\singlechemicalbond, - DOUBLE=>\doublechemicalbond, - TRIPLE=>\triplechemicalbond, - +=>\chemicalsign{+}, - ->=>\chemicalsinglearrow{#2}{#3}, - <->=>\chemicaldoublearrow{#2}{#3}, - <>=>\chemicaltwintiparrow{#2}{#3}, - -=>\singlechemicalbond, - --=>\doublechemicalbond, - ---=>\triplechemicalbond, - \s!unknown=>\enablechemicalspecials - \chemicalmolecule{\commalistelement}{#2}{#3}]}} - -%\def\dosimplechemicalA#1#2#3% -% {\let\chemicalspace=\relax -% \def\dodosimplechemical##1% -% {\dosimplechemical{##1}{}{}}% -% \@EA\processcommalist\@EA[\@@chemicalchemicaloffset,#1]\dodosimplechemical -% \egroup} - -\def\dosimplechemicalA#1#2#3% % evt: {#1,\relax} - {\let\chemicalspace=\relax - \@EA\dosimplechemical\@EA{\@@chemicalchemicaloffset,#1}{#2}{#3}% - \egroup} - -\def\dosimplechemicalB#1#2#3% - {\dosimplechemical{#1}{#2}{#3}% - \egroup} - -\def\dosimplechemicalC#1#2#3% - {$\simplechemical{#1}{#2}{#3}$% - \egroup} % erbij - -\def\simplechemical - {\ifinner - \innerchemicaltrue - \else - \innerchemicalfalse - \fi - \bgroup - \catcode`\^=\@@superscript % t.b.v. \enableduplication - \catcode`\_=\@@subscript % t.b.v. de zekerheid - \ifmmode - \ifinnerchemical - \def\next{\dotriplegroupempty\dosimplechemicalA}% - \else - \def\next{\dotriplegroupempty\dosimplechemicalB}% - \fi - \else - \def\next{\dotriplegroupempty\dosimplechemicalC}% - \fi - \next} - -\definecomplexorsimple\chemical - -\def\dogotochemical#1#2% - {\def\dowithchemical% % experiment - {\localgotochemical{#1}}% % experiment - \chemical} % experiment - -\def\gotochemical% % experiment - {\dosingleargument\dogotochemical} % experiment - -\def\dododochemical#1[#2][#3]% % experiment - {\def\simpledododochemical% % experiment - {#1[#2][#3]}% % experiment - \def\complexdododochemical[##1]% % experiment - {\def\dowithchemical% % experiment - {\localthisischemical{#2}}% % experiment - #1[#3][##1]}% % experiment - \complexorsimple\dododochemical} % experiment - -\def\dodochemical[#1][#2]% - {\ignorespaces - \ifinchemical - \drawchemical[#1][#2]% - \ignorespaces - \else - \startchemical[\c!location=\v!intext]% - \drawchemical[#1][#2]% - \expandafter\stopchemical - \fi - \ignorespaces} - -\def\dochemical[#1]% - {\def\simpledochemical% - {\@@writechemicalstate{ppchtex}{[#1][]}% - \dodochemical[#1][]}% - % - \def\complexdochemical[##1]% - {\@@writechemicalstate{ppchtex}{[#1][##1]}% - \txtchemical=0% - \dodochemical[#1][##1]}% - % - \def\complexdochemical[##1]% % experiment - {\@@writechemicalstate{ppchtex}{[#1][##1]}% % experiment - \txtchemical=0% % experiment - \dododochemical\dodochemical[#1][##1]}% % experiment - % - \complexorsimple\dochemical} - -% \processlocalchemicals{#1} -% -% #1: commando's - -\def\dodoprocesschemical#1% - {\processchemical[#1????]} - -\def\processlocalchemicals#1% - {\processcommalist[#1]\dodoprocesschemical} - -% \drawchemical[#1][#2] -% -% #1: bindingen enz. -% #2: atomen enz. - -\def\localdodochemical[#1][#2]% - {\@@writechemicalstate{ppchtex}{[#1][#2]}% - %\bgroup % koppelen en afmetingen gaat fout, vandaar: - \advance\levchemical 1 - \letvalue{\??chemical\s!unknown\the\levchemical}\unknownchemical - \setevalue{\??chemical\c!text\the\levchemical}{\the\txtchemical}% - \txtchemical=0 - \dodochemical[#1][#2]% - % \@EA\txtchemical\@EA\csname\??chemical\c!text\the\levchemical\endcsname - \txtchemical\csname\??chemical\c!text\the\levchemical\endcsname - \@EA\let\@EA\unknownchemical\csname\??chemical\s!unknown\the\levchemical\endcsname - \advance\levchemical -1 - %\egroup - \ignorespaces} - -\def\drawchemical[#1][#2]% - {\ignorespaces - \def\dodochemical[##1][##2]% - {\drawchemical[##1][##2]% - \ignorespaces}% - \def\dochemical[##1]% - {\def\simpledochemical% - {\@@writechemicalstate{ppchtex}{[##1][#2]}% - \dodochemical[##1][#2]% - \ignorespaces}% - \def\complexdochemical[####1]% - {\dododochemical\localdodochemical[##1][####1,#2]}% - \complexorsimple\dochemical}% - \doif\@@chemicalstate\v!start - {\doifelse\chemicalname\s!unknown - {\getvalue{\s!executechemical\defaultchemical}[#2]} - {\getvalue{\s!executechemical\chemicalname}[#2]}% - \def\unknownchemical##1% - {\processunknownchemical[##1][#2]}% - \processcommalist[\@@chemicaloffset,#1]\dodoprocesschemical}% - \ignorespaces} - -\unexpanded\def\chemicaloxidation#1#2#3% - {\chemicaltop - {\ifnum#20=0 - 0% - \else - #1\expandafter\uppercase\expandafter{\romannumeral#2}% - \fi} - {#3}} - -\def\chemicaltfraction{\ifinchemical.60\else.8\fi} -\def\chemicalbfraction{\ifinchemical.45\else.6\fi} -\def\chemicallfraction{\ifinchemical.1\else.1\fi} -\def\chemicalrfraction{\ifinchemical.1\else.1\fi} - -\def\chemicaltighttext - {\def\chemicaltfraction{\ifinchemical.3\else.6\fi}% - \def\chemicalbfraction{\ifinchemical.2\else.4\fi}% - \def\chemicallfraction{\ifinchemical 0\else 0\fi}% - \def\chemicalrfraction{\ifinchemical 0\else 0\fi}} - -\def\dochemicaltop#1#2#3#4% - {\vbox - {\@@dochemicalcolor - \baselineskip=\chemicaltfraction\baselineskip \lineskip0pt - \halign - {#1###2\cr - $\@@dochemicalstyle{\scriptscriptstyle#3}$\cr - $\@@dochemicalstyle{\@@currentchemicalformat#4}$\cr}}} - -\def\dochemicalbottom#1#2#3#4% - {\vtop - {\@@dochemicalcolor - \baselineskip=\chemicalbfraction\baselineskip \lineskip0pt - \halign - {#1###2\cr - $\@@dochemicalstyle{\@@currentchemicalformat#4}$\cr - $\@@dochemicalstyle{\scriptscriptstyle#3}$\cr}}} - -\def\chemicalleft#1#2% - {\hbox - {\@@dochemicalcolor - $\@@dochemicalstyle{\scriptscriptstyle#1}$% - $\@@dochemicalstyle{\@@currentchemicalformat\hskip\chemicallfraction em#2}$}} - -\def\chemicalright#1#2% - {\hbox - {\@@dochemicalcolor - $\@@dochemicalstyle{\@@currentchemicalformat#2\hskip\chemicalrfraction em}$% - $\@@dochemicalstyle{\scriptscriptstyle#1}$}} - -\def\chemicalcentered#1% - {\setbox0=\hbox{$\@@dochemicalstyle{\scriptscriptstyle#1}$}% - \setbox2=\hbox{$\@@dochemicalstyle{\@@currentchemicalformat C}$}% - \dimen0=.5\ht2 - \advance\dimen0 by -.5\ht0 - \advance\dimen0 by \dp0 - \hbox{\@@dochemicalcolor\raise\dimen0\box0}} - -\def\chemicalleftcentered#1#2% - {\hbox - {\@@dochemicalcolor - \chemicalcentered{#1}% - $\@@dochemicalstyle{\@@currentchemicalformat\hskip\chemicallfraction em#2}$}} - -\def\chemicalrightcentered#1#2% - {\hbox - {\@@dochemicalcolor - $\@@dochemicalstyle{\@@currentchemicalformat#2\hskip\chemicalrfraction em}$% - \chemicalcentered{#1}}} - -\def\chemicaltop {\dochemicaltop \hss \hss } -\def\chemicallefttop {\dochemicaltop \relax \hss } -\def\chemicalrighttop {\dochemicaltop \hss \relax} -\def\chemicalbottom {\dochemicalbottom \hss \hss } -\def\chemicalleftbottom {\dochemicalbottom \relax \hss } -\def\chemicalrightbottom {\dochemicalbottom \hss \relax} - -\def\chemicaltopleft #1{\chemicalleft {\chemicallefttop {#1}{}}} -\def\chemicalbottomleft #1{\chemicalleft {\chemicalleftbottom{#1}{}}} -\def\chemicaltopright #1{\chemicalright{\chemicallefttop {#1}{}}} -\def\chemicalbottomright#1{\chemicalright{\chemicalleftbottom{#1}{}}} - -\def\chemicalsmashedleft#1% - {\hbox\bgroup - \@@dochemicalcolor - \setbox0=\hbox{$\@@dochemicalstyle{\@@currentchemicalformat C}$}% - \setbox2=\hbox{$\@@dochemicalstyle{\@@currentchemicalformat#1}$}% - \wd2=\wd0 - \box2 - \egroup} - -\def\chemicalsmashedmiddle#1% - {\hbox\bgroup - \@@dochemicalcolor - \setbox0=\hbox{$\@@dochemicalstyle{\@@currentchemicalformat C}$}% - \setbox2=\hbox{$\@@dochemicalstyle{\@@currentchemicalformat#1}$}% - \hbox{\hskip-.5\wd2\hskip.5\wd0\box2} - \egroup} - -\def\chemicalsmashedright#1% - {\hbox\bgroup - \@@dochemicalcolor - \setbox0=\hbox{$\@@dochemicalstyle{\@@currentchemicalformat C}$}% - \setbox2=\hbox{$\@@dochemicalstyle{\@@currentchemicalformat#1}$}% - \hbox to \wd0{\hskip-\wd2\hskip\wd0\box2}% - \egroup} - -\def\+{\tabalign} % is \long in Plain - -\def\chemicalforever#1#2% - {\bgroup - \setbox0=\hbox - {\@@dochemicalcolor - $\@@dochemicalstyle{\scriptscriptstyle\hskip-.15em#2}$}% - \wd0=0pt - \big#1_{\hskip.1em\box0}% - \egroup} - -\def\disablechemicalspecials% - {\def\+##1{##1}\def\-##1{##1}% - \def\[{[}\def\]{]}% - \def\1{}\def\2{}\def\3{}\def\4{}\def\5{}\def\6{}\def\7{}% - \def\X{}% - \def\T{}\def\B{}\def\L{}\def\R{}\def\LC{}\def\RC{}% - \def\TL{}\def\BL{}\def\TR{}\def\BR{}% - \def\LT{}\def\LB{}\def\RT{}\def\RB{}% - \def\SL{}\def\SM{}\def\SR{}} - -\def\enablechemicalspecials% - {\def\+{\dodoublegroupempty\chemicaloxidation{+}}% {} needed! - \def\-{\dodoublegroupempty\chemicaloxidation{-}}% {} needed! - \def\[{\dodoublegroupempty\chemicalforever {[}}% {} needed! - \def\]{\dodoublegroupempty\chemicalforever {]}}% {} needed! - \def\1{\chemicaloxidation\relax1}% - \def\2{\chemicaloxidation\relax2}% - \def\3{\chemicaloxidation\relax3}% - \def\4{\chemicaloxidation\relax4}% - \def\5{\chemicaloxidation\relax5}% - \def\6{\chemicaloxidation\relax6}% - \def\7{\chemicaloxidation\relax7}% - \def\X{\chemicaltighttext}% - \def\T{\chemicaltop}% - \def\B{\chemicalbottom}% - \def\L{\chemicalleft}% - \def\LC{\chemicalleftcentered}% - \def\R{\chemicalright}% - \def\RC{\chemicalrightcentered}% - \def\TL{\chemicaltopleft}% - \def\BL{\chemicalbottomleft}% - \def\TR{\chemicaltopright}% - \def\BR{\chemicalbottomright}% - \def\LT{\chemicallefttop}% - \def\LB{\chemicalleftbottom}% - \def\RT{\chemicalrighttop}% - \def\RB{\chemicalrightbottom}% - \def\SL{\chemicalsmashedleft}% - \def\SM{\chemicalsmashedmiddle}% - \def\SR{\chemicalsmashedright}% -} - -% \reversechemical#1#2#3 -% -% #1: prefix -% #2: volgnummer enz -% #3: tegengestelde volgnummers - -\def\reversechemical#1#2#3% - {\def\doprocess[##1##2]% - {\doifchemicalnumber{##1}{#1#2}% - {\getfromcommalist[#3][##1]% - \let\reversechemicalaction=\commalistelement - \processchemical[#1\reversechemicalaction##2]}}% - \doprocess[#2]} - -% \processunknownchemical[#1????][#2] -% -% #1: bindingen enz. -% #2: atomen enz. - -\def\defaultchemical% - {SIX} - -\def\processunknownchemical[#1????][#2]% - {\processaction - [#1] - [ SAVE=>\executechemicalSAVE, - RESTORE=>\executechemicalRESTORE, - HIGH=>\sethighsubscripts, - LOW=>\setlowsubscripts, - \s!default=>, - \s!unknown=>\doifdefinedelse{\s!executechemical#1} - {\def\chemicalrotation{1}% - \def\chemicaloffset{0}% - \doifdefined{\s!executechemical#1} - {\getvalue{\s!executechemical#1}[#2]}% - \@@chemicalpostponed} - {\getpredefinedchemical{#1}}]} - -\newcount\chemicalstack % tzt \newwounter - -\setvalue{\s!chemical\c!x1}{0} -\setvalue{\s!chemical\c!y1}{0} - -\def\executechemicalSAVE - {%\writestatus{ppchtex}{saving \the\horchemical,\the\verchemical}% - \advance\chemicalstack by 1 - \letvalue {\s!chemical n\the\chemicalstack}=\chemicalname - %\letvalue {\s!chemical p\the\chemicalstack}=\@@chemicalpostponed - \setevalue{\s!chemical x\the\chemicalstack}{\the\horchemical}% - \setevalue{\s!chemical y\the\chemicalstack}{\the\verchemical}} - -\def\restorechemicalvalues#1% - {\let\oldprocesschemical=\processchemical - \doifdefined{\s!executechemical#1}{\getvalue{\s!executechemical#1}[]}% - \let\processchemical=\oldprocesschemical} - -\def\executechemicalRESTORE - {\ifnum\chemicalstack=0\relax - \horchemical=\getvalue{\s!chemical x1}\relax - \verchemical=\getvalue{\s!chemical y1}\relax - \else - \restorechemicalvalues{\getvalue{\s!chemical n\the\chemicalstack}}% - %\@EA\let\@EA\@@chemicalpostponed\@EA=\csname\s!chemical p\the\chemicalstack\endcsname - \let\@@chemicalpostponed=\relax - \horchemical=\getvalue{\s!chemical x\the\chemicalstack}\relax - \verchemical=\getvalue{\s!chemical y\the\chemicalstack}\relax - \advance\chemicalstack by -1 - \fi - \restorechemicalcoordinates} - -% De onderstaande macro's zijn verantwoordelijk voor het zetten -% van de + en pijlen. De +, en dus ook de pijlen, worden omhoog -% gehaald. Dit oogt m.i. fraaier. - -\def\chemicalinnerclip#1% - {{\setbox0=\hbox{#1}\ht0\ht\strutbox\dp0\dp\strutbox\box0}} - -\def\chemicalraise#1#2% - {\chemicalinnerclip - {\setbox0=\hbox{$#1+$}% - \raise\dp0\hbox{$#1#2$}}} - -\def\chemicalinnersign#1% todo: \@@chemicaltextcolor - {\chemicalraise{\@@localchemicalstyle}{#1}} - -\def\chemicaloutersign#1% - {\chemicalraise{}{\@@dochemicalcolor#1}} - -\def\chemicalsingleinnerarrow#1#2% - {\chemicalraise{\@@localchemicalstyle}{\longrightarrow}} - -\def\chemicaldoubleinnerarrow#1#2% todo: \@@chemicaltextcolor - {\chemicalinnerclip - {\lower.2ex\hbox - {\setbox0=\hbox{$\@@localchemicalstyle\longrightarrow$}% - \setbox2=\hbox{$\@@localchemicalstyle\longleftarrow$}% - \wd0=0pt\raise\ht0\box0\box2}}} - -\def\chemicaltwintipinnerarrow#1#2% todo: \@@chemicaltextcolor - {\chemicalinnerclip - {\setbox0=\hbox{\chemicalraise{\@@localchemicalstyle}{\longrightarrow}}% - \setbox2=\hbox{\chemicalraise{\@@localchemicalstyle}{\longleftarrow}}% - \wd0=0pt\box0\box2}} - -\def\dochemicalouterarrow#1#2#3% - {\bgroup - \setbox0=\hbox{$\longrightarrow$}% - \setbox2=\hbox{$\@@dochemicalstyle{\scriptstyle\quad#2\quad}$}% - \setbox4=\hbox{$\@@dochemicalstyle{\scriptstyle\quad#3\quad}$}% - \dimen2=\wd0 % \dimen0 is used elsewhere - \ifdim\wd2>\dimen2 \dimen0=\wd2 \fi - \ifdim\wd4>\dimen2 \dimen0=\wd4 \fi - \chemicaloutermolecule - {#1} - {\ifdim\ht2>\!!zeropoint\box2\fi} % expands to \empty in test - {\ifdim\ht4>\!!zeropoint\box4\fi}% % expands to \empty in test - \egroup} - -\def\chemicalsingleouterarrow - {\dochemicalouterarrow - {\hbox to \dimen2{\rightarrowfill}}} - -\def\chemicaldoubleouterarrow - {\dochemicalouterarrow - {\lower.5\ht0\vbox - {\offinterlineskip - \hbox to \dimen2{\rightarrowfill} - \hbox to \dimen2{\leftarrowfill}}}} - -\def\chemicaltwintipouterarrow - {\dochemicalouterarrow - {\hbox - {\hbox to \dimen2{\rightarrowfill}% - \hskip-\dimen2 - \hbox to \dimen2{\leftarrowfill}}}} - -\def\chemicalinnermolecule#1#2#3% no mathop here, can generate space - {\chemicalspace % todo: \@@chemicaltextcolor - \chemicalinnerclip - {\dosetsubscripts - $\@@dochemicalstyle{\@@localchemicalstyle\strut#1}$% - \doresetsubscripts}% - \chemicalspace} - -\def\chemicaloutermolecule#1#2#3% - {\chemicalspace - \bgroup - \@@dochemicalcolor - \setbox0=\hbox % else the font is reset - {\dosetsubscripts - \hbox{$\@@dochemicalstyle{\strut#1}$}% - \doresetsubscripts}% - \mathop{\box0}% - \ifthirdargument - \doifnot{#2}{} - {^{\@@dochemicalstyle{\strut#2}}}% - \doifnot{#3}{} - {_{\@@dochemicalstyle{\strut#3}}}% - \else - \doifnot{#2}{} - {_{\@@dochemicalstyle{\strut#2}}}% - \fi - \egroup - \chemicalspace} - -\def\chemicalsinglepicturearrow#1% - {\lower.5ex\hbox - {\@@dochemicalstyle - $\chemicalspace - \buildrel - \@@dochemicalstyle{\scriptstyle\quad#1\quad}% - \over{\overrightarrow - {\hphantom{\@chemicalstyle{\scriptstyle\quad#1\quad}}}}% - \chemicalspace$}} - -\def\chemicaldoublepicturearrow#1% - {\lower.5ex\hbox - {\@@dochemicalstyle - $\chemicalspace - \buildrel - \@@dochemicalstyle{\scriptstyle\quad#1\quad}% - \over{\overrightarrow{\overleftarrow - {\hphantom{\@@dochemicalstyle{\scriptstyle\quad#1\quad}}}}}% - \chemicalspace$}} - -% Bij de in-line bindingen wordt gebruik gemaakt van -% een \hrule. De maatvoering wordt bepaald door een -% kunstmatige em (\wd0). - -\def\somechemicalbond% - {\hrule width \wd0 height .4pt} - -\def\dochemicalbonds#1#2#3% todo: \@@chemicaltextstyle - {{\setbox0=\hbox - {${\@@localchemicalstyle M}$}% - \vbox to \ht0 - {\@@dochemicalcolor - \hsize\wd0 - \vskip.1\wd0#1\vfill#2\vfill#3\vskip.1\wd0}}} - -\def\singlechemicalbond% - {\dochemicalbonds{}{\somechemicalbond}{}} - -\def\doublechemicalbond% - {\dochemicalbonds{\somechemicalbond}{}{\somechemicalbond}} - -\def\triplechemicalbond% - {\dochemicalbonds{\somechemicalbond}{\somechemicalbond}{\somechemicalbond}} - -% In plaats van \def\naam{\chemie[...]...} kan beter gebruik -% worden gemaakt van het commando -% -% \definieerchemie[naam]{commando's} -% -% De naam krijgt, om problemen met bestaande macro's te -% voorkomen, een prefix. Bij het ophalen van een commando -% worden beide definities afgehandeld. - -\def\dodefinechemical[#1]#2% - {\doifdefined{\??chemical#1} - {\writestatus{ppchtex}{chemical definition #1 is redefined}}% - \setvalue{\??chemical#1}{#2}} - -\def\definechemical% - {\dosingleargument\dodefinechemical} - -\def\getpredefinedchemical#1% - {\doifdefinedelse{\??chemical#1} - {\getvalue{\??chemical#1}} - {\doifdefinedelse{#1} - {\getvalue{#1}} - {\writestatus{ppchtex}{unknown chemical definition #1}}}} - -% Hieronder zijn de definities van de structuren opgenomen. De -% naam van de structuur is als volgt opgebouwd: -% -% \executechemicalNUMBER[#1] -% -% waarbij [#1] betrekking heeft op de tekstelementen van \chemie, -% de [tweede lijst] dus. -% -% De aan \chemie[#1][#2] meegegeven lijst van segmenten wordt -% deels door de in \execute gedefinieerde macro's afgehandeld, -% deels door algemene macro's. Segmenten hebben de vorm: -% -% [+|-|]identifier[X|XYZ|X..Y] -% -% Voorbeelden van segmenten zijn: -% -% R1 -% R1..4 -% R135 -% -R1 -% +R35 - -\setchemicalmaximum 0 - -\def\processchemical[#1]% - {\unknownchemical{#1}} - -\def\setchemicalname#1 % - {\def\chemicalname{#1}} - -\let\chemicalname=\s!unknown - -% Vooruitlopend op een gedetailleerde documentatie, zijn hier -% vast enkele gebruikte afmetingen: -% -% lengte radikalen : 500 -% afstand radikalen : 100 -% afstand dubbele radikalen : 260 -% afstand substituenten : +125 - -\def\executechemicalONE[#1]% - {\setchemicalname ONE - % - \setchemicalmaximum 8 - \setchemicaldistance 0 - \setchemicalsubstitute 625 - \setchemicaldirection 303 - % - \setchemicalrotation 1 1 0 1 0 1 0 1 0 - \setchemicalrotation 2 0.707 -0.707 0.707 -0.707 0.707 -0.707 0.707 -0.707 - \setchemicalrotation 3 0 -1 0 -1 0 -1 0 -1 - \setchemicalrotation 4 -0.707 -0.707 -0.707 -0.707 -0.707 -0.707 -0.707 -0.707 - \setchemicalrotation 5 -1 0 -1 0 -1 0 -1 0 - \setchemicalrotation 6 -0.707 0.707 -0.707 0.707 -0.707 0.707 -0.707 0.707 - \setchemicalrotation 7 0 1 0 1 0 1 0 1 - \setchemicalrotation 8 0.707 0.707 0.707 0.707 0.707 0.707 0.707 0.707 - % - \setchemicalangle 1 0 90 180 270 - \setchemicalangle 2 45 135 225 315 - \setchemicalangle 3 90 180 270 0 - \setchemicalangle 4 135 225 315 45 - \setchemicalangle 5 180 270 0 90 - \setchemicalangle 6 225 315 45 135 - \setchemicalangle 7 270 0 90 180 - \setchemicalangle 8 315 45 135 225 - % - \setchemicaltranslate 1 -1000 0 - \setchemicaltranslate 2 -1000 1000 - \setchemicaltranslate 3 0 1000 - \setchemicaltranslate 4 1000 1000 - \setchemicaltranslate 5 1000 0 - \setchemicaltranslate 6 1000 -1000 - \setchemicaltranslate 7 0 -1000 - \setchemicaltranslate 8 -1000 -1000 - % - \setchemicallinesegment SB 300 0 700 0 - \setchemicallinesegment DB1 300 50 700 50 - \setchemicallinesegment DB2 300 -50 700 -50 - % - %setchemicallinesegment EP 200 125 200 -125 - \setchemicalfactorlinesegment EP 200 125 200 -125 - % - \setchemicaltextelement ES 200 0 - \setchemicaltextelement ED1 200 50 - \setchemicaltextelement ED2 200 -50 - \setchemicaltextelement ET1 200 75 - \setchemicaltextelement ET2 200 0 - \setchemicaltextelement ET3 200 -75 - \setchemicaltextelement HB1 300 0 - \setchemicaltextelement HB2 475 0 - \setchemicaltextelement HB3 650 0 - % - \setchemicaltextelement Z 800 0 - \setchemicaltextelement RZ 950 0 - \setchemicaltextelement ZN 500 0 - \setchemicaltextelement ZTN 500 150 - \setchemicaltextelement ZBN 500 -150 - % - \def\processchemical[##1##2##3##4##5]% - {\doprocesschemical[##1##2##3##4##5] - {\processaction - [##1##2##3##4##5] - [ PB:##4##5=>\beginchemicalpicture{##4##5}, - PE????=>\endchemicalpicture, - SUB##4##5=>\processchemicalsubstitute{##4##5}, - ADJ##4##5=>\processchemicaldistance{##4##5}, - MOV##4##5=>\processchemicaltranslate{##4##5}, - DIR##4##5=>\processchemicaldirection{##4##5}, - OFF##4##5=>\processchemicaloffset{##4##5}, - CCD##4##5=>\processchemicaldottsegment{CC}{##4##5}, - LDD##4##5=>\processchemicaldashedlinesegment{DB1}{##4##5}% - \processchemicallinesegment{DB2}{##4##5}, - RDD##4##5=>\processchemicallinesegment{DB1}{##4##5}% - \processchemicaldashedlinesegment{DB2}{##4##5}, - OF##3:##5=>\processchemicalphantom{##3}{##5}, - OE##3##4##5=>\processchemicalopenend{OE}{##3##4##5}, - EP##3##4##5=>\processchemicallinesegment{EP}{##3##4##5}, - ES##3##4##5=>\processchemicaltextconstant{ES}{##3##4##5}{\hbox{$\cdot$}}{0}, - ED##3##4##5=>\processchemicaltextconstant{ED}{##3##4##5}{\hbox{$\cdot$}}{0}, - ET##3##4##5=>\processchemicaltextconstant{ET}{##3##4##5}{\hbox{$\cdot$}}{0}, - HB##3##4##5=>\processchemicaltextconstant{HB}{##3##4##5}{\hbox{$\cdot$}}{0}, - SB##3##4##5=>\processchemicallinesegment{SB}{##3##4##5}, - DB##3##4##5=>\processchemicallinesegment{DB}{##3##4##5}, - SB##3##4##5=>\processchemicallinesegment{SB}{##3##4##5}, - BB##3##4##5=>\processchemicaldeltalinesegment{SB}{##3##4##5}, - BD##3##4##5=>\processchemicaldasheddeltalinesegment{SB}{##3##4##5}, - BW##3##4##5=>\processchemicalwavylinesegment{SB}{##3##4##5}, - SD##3##4##5=>\processchemicaldashedlinesegment{SB}{##3##4##5}, - TB##3##4##5=>\processchemicallinesegment{SB}{##3##4##5}% - \processchemicallinesegment{DB}{##3##4##5}, - CZ##3##4##5=>\processchemicaltextelement{RZ}{##3##4##5}{#1}{0}{}, - ZTN##4##5=>\processchemicalsmalltextconstant{ZTN}{##4##5}{\chemicaltextelementnumber}{0}, - ZTT##4##5=>\processchemicalsmalltextelement{ZTN}{##4##5}{#1}{0}{}, - ZBN##4##5=>\processchemicalsmalltextconstant{ZBN}{##4##5}{\chemicaltextelementnumber}{0}, - ZBT##4##5=>\processchemicalsmalltextelement{ZBN}{##4##5}{#1}{0}{}, - ZN##3##4##5=>\processchemicaltextconstant{ZN}{##3##4##5}{\chemicaltextelementnumber}{0}, - ZT##3##4##5=>\processchemicaltextelement{ZN}{##3##4##5}{#1}{0}{}, - Z##2##3##4##5=>\processchemicaltextelement{Z}{##2##3##4##5}{#1}{0} - {l,l,t,r,r,r,b,l}, - \s!unknown=>\unknownchemical{##1##2##3##4##5}]}}} - -\def\executechemicalTHREE[#1]% - {\setchemicalname THREE - % - \setchemicalmaximum 3 - \setchemicaldistance 289 - \setchemicalsubstitute 952 - % - \setchemicalrotation 1 1 0 0 -1 -1 0 0 1 - \setchemicalrotation 2 -0.5 -0.866 -0.866 0.5 0.5 0.866 0.866 -0.5 - \setchemicalrotation 3 -0.5 0.866 0.866 0.5 0.5 -0.866 -0.866 -0.5 - % - \setchemicalangle 1 0 90 180 270 - \setchemicalangle 2 120 210 300 30 - \setchemicalangle 3 240 330 60 150 - % - \setchemicaltranslate 1 -1000 0 - \setchemicaltranslate 2 0 1000 - \setchemicaltranslate 3 1000 0 - \setchemicaltranslate 4 0 -1000 - % - \setchemicallinesegment B 577 0 -289 -500 - \setchemicallinesegment SB 352 -130 -64 -370 - \setchemicallinesegment -SB 352 -130 -289 -500 - \setchemicallinesegment +SB 577 0 -64 -370 - \setchemicallinesegment DB1 327 -87 -89 -327 - \setchemicallinesegment DB2 377 -172 -39 -413 - \setchemicallinesegment R 577 0 1077 0 - \setchemicallinesegment -R 577 0 1010 250 - \setchemicallinesegment +R 577 0 1010 -250 - \setchemicallinesegment ER1 577 50 1077 50 - \setchemicallinesegment ER2 577 -50 1077 -50 - \setchemicallinesegment SR 837 0 1077 0 - \setchemicallinesegment -SR 802 130 1010 250 - \setchemicallinesegment +SR 802 -130 1010 -250 - \setchemicallinesegment DR1 837 50 1077 50 - \setchemicallinesegment DR2 837 -50 1077 -50 - % - \setchemicaltextelement Z 577 0 - \setchemicaltextelement RZ 1177 0 - \setchemicaltextelement -RZ 1097 300 - \setchemicaltextelement +RZ 1097 -300 - \setchemicaltextelement CRZ 1077 0 - % - \def\processchemical[##1##2##3##4]% - {\processaction - [##1##2##3##4] - [ ROT##4=>\processchemicalrotation{##4}, - MOV##4=>\processchemicaltranslate{##4}, - SUB##4=>\processchemicalsubstitute{##4}, - ADJ##4=>\processchemicaldistance{##4}, - -RZ##4=>\processchemicaltextelement{-RZ}{##4}{#1}{3} - {l,t,r, l,r,l, r,b,l, r,l,r}, - +RZ##4=>\processchemicaltextelement{+RZ}{##4}{#1}{3} - {l,r,b, r,r,l, r,l,t, l,l,r}, - -SB##4=>\processchemicallinesegment{-SB}{##4}, - +SB##4=>\processchemicallinesegment{+SB}{##4}, - -SR##4=>\processchemicallinesegment{-SR}{##4}, - +SR##4=>\processchemicallinesegment{+SR}{##4}, - CRZ##4=>\processchemicaltextelement{CRZ}{##4}{#1}{0} - {}, - DB##3##4=>\processchemicallinesegment{DB}{##3##4}, - DR##3##4=>\processchemicallinesegment{DR}{##3##4}, - RZ##3##4=>\processchemicaltextelement{RZ}{##3##4}{#1}{3} - {l,r,r, t,r,l, r,l,l, b,l,r}, - ER##3##4=>\processchemicallinesegment{ER}{##3##4}, - SB##3##4=>\processchemicallinesegment{SB}{##3##4}, - SR##3##4=>\processchemicallinesegment{SR}{##3##4}, - -R##3##4=>\processchemicallinesegment{-R}{##3##4}, - +R##3##4=>\processchemicallinesegment{+R}{##3##4}, - B##2##3##4=>\processchemicallinesegment{B}{##2##3##4}, - R##2##3##4=>\processchemicallinesegment{R}{##2##3##4}, - Z##2##3##4=>\processchemicaltextelement{Z}{##2##3##4}{#1}{0}{}, - \s!unknown=>\unknownchemical{##1##2##3##4}]}} - -\def\executechemicalFOUR[#1]% - {\setchemicalname FOUR - % - \setchemicalmaximum 4 - \setchemicaldistance 500 - \setchemicalsubstitute 0 - % - \setchemicalrotation 1 1 0 0 -1 -1 0 0 1 - \setchemicalrotation 2 0 -1 -1 0 0 1 1 0 - \setchemicalrotation 3 -1 0 0 1 1 0 0 -1 - \setchemicalrotation 4 0 1 1 0 0 -1 -1 0 - % - \setchemicalangle 1 0 90 180 270 - \setchemicalangle 2 90 180 270 0 - \setchemicalangle 3 180 270 0 90 - \setchemicalangle 4 270 0 90 180 - % - \setchemicaltranslate 1 -1000 0 - \setchemicaltranslate 2 0 1000 - \setchemicaltranslate 3 1000 0 - \setchemicaltranslate 4 0 -1000 - % - \setchemicallinesegment B 500 500 500 -500 - \setchemicallinesegment SB 500 240 500 -240 - \setchemicallinesegment -SB 500 240 500 -500 - \setchemicallinesegment +SB 500 500 500 -240 - \setchemicallinesegment DB1 450 240 450 -240 - \setchemicallinesegment DB2 550 240 550 -240 - \setchemicallinesegment EB 360 300 360 -300 - \setchemicallinesegment R 500 500 854 854 - \setchemicallinesegment -R 500 500 500 1000 - \setchemicallinesegment +R 500 500 1000 500 - \setchemicallinesegment ER1 465 535 819 889 - \setchemicallinesegment ER2 535 465 889 819 - \setchemicallinesegment SR 684 684 854 854 - \setchemicallinesegment -SR 500 760 500 1000 - \setchemicallinesegment +SR 760 500 1000 500 - \setchemicallinesegment DR1 649 719 819 889 - \setchemicallinesegment DR2 719 649 889 819 - % - \setchemicaltextelement Z 500 500 - \setchemicaltextelement RZ 925 925 - \setchemicaltextelement -RZ 500 1100 - \setchemicaltextelement +RZ 1100 500 - \setchemicaltextelement CRZ 1038 1038 - % - \setchemicaltextelement ZN 350 350 - % - \def\processchemical[##1##2##3##4]% - {\processaction - [##1##2##3##4] - [ PB:##4=>\beginchemicalpicture{##4}, - PE????=>\endchemicalpicture, - ROT##4=>\processchemicalrotation{##4}, - SUB##4=>\processchemicalsubstitute{##4}, - ADJ##4=>\processchemicaldistance{##4}, - MOV##4=>\processchemicaltranslate{##4}, - -RZ##4=>\processchemicaltextelement{-RZ}{##4}{#1}{4} - {b,l,t,r, l,t,r,b, t,r,b,l, r,b,l,t}, - +RZ##4=>\processchemicaltextelement{+RZ}{##4}{#1}{4} - {l,t,r,b, t,r,b,l, r,b,l,t, b,l,t,r}, - -SB##4=>\processchemicallinesegment{-SB}{##4}, - +SB##4=>\processchemicallinesegment{+SB}{##4}, - -SR##4=>\processchemicallinesegment{-SR}{##4}, - +SR##4=>\processchemicallinesegment{+SR}{##4}, - CRZ##4=>\processchemicaltextelement{CRZ}{##4}{#1}{0}{}, - ZN##3##4=>\processchemicaltextconstant{ZN}{##3##4}{\chemicaltextelementnumber}{0}, - ZT##3##4=>\processchemicaltextelement{ZN}{##3##4}{#1}{0}{}, - DB##3##4=>\processchemicallinesegment{DB}{##3##4}, - DR##3##4=>\processchemicallinesegment{DR}{##3##4}, - EB##3##4=>\processchemicallinesegment{EB}{##3##4}, - ER##3##4=>\processchemicallinesegment{ER}{##3##4}, - RZ##3##4=>\processchemicaltextelement{RZ}{##3##4}{#1}{4} - {lb,lt,rt,rb, lt,rt,rb,lb, rt,rb,lb,lt, rb,lb,lt,rt}, - SB##3##4=>\processchemicallinesegment{SB}{##3##4}, - SR##3##4=>\processchemicallinesegment{SR}{##3##4}, - -R##3##4=>\processchemicallinesegment{-R}{##3##4}, - +R##3##4=>\processchemicallinesegment{+R}{##3##4}, - B##2##3##4=>\processchemicallinesegment{B}{##2##3##4}, - R##2##3##4=>\processchemicallinesegment{R}{##2##3##4}, - Z##2##3##4=>\processchemicaltextelement{Z}{##2##3##4}{#1}{0}{}, - \s!unknown=>\unknownchemical{##1##2##3##4}]}} - -\def\executechemicalFIVE[#1]% - {\setchemicalname FIVE - % - \setchemicalmaximum 5 - \setchemicaldistance 688 - \setchemicalsubstitute 1226 - % - \setchemicalrotation 1 1 0 0 -1 -1 0 0 1 - \setchemicalrotation 2 0.309 -0.951 -0.951 -0.309 -0.309 0.940 0.951 0.309 - \setchemicalrotation 3 -0.809 -0.588 -0.588 0.809 0.809 0.588 0.588 -0.809 - \setchemicalrotation 4 -0.809 0.588 0.588 0.809 0.809 -0.588 -0.588 -0.809 - \setchemicalrotation 5 0.309 0.951 0.951 -0.309 -0.309 -0.951 -0.951 0.309 - % - \setchemicalangle 1 0 90 180 270 - \setchemicalangle 2 72 162 252 342 - \setchemicalangle 3 144 234 324 54 - \setchemicalangle 4 216 306 36 126 - \setchemicalangle 5 288 18 108 198 - % - \setchemicaltranslate 1 -1376 0 - \setchemicaltranslate 2 -425 1304 - \setchemicaltranslate 3 1113 809 - \setchemicaltranslate 4 1113 -809 - \setchemicaltranslate 5 -425 -1304 - % - \setchemicallinesegment A 1188 500 1188 -500 - \setchemicallinesegment B 688 500 688 -500 - \setchemicallinesegment S -263 808 688 -500 - \setchemicallinesegment SS -116 606 541 -298 - \setchemicallinesegment -SS -263 808 541 -298 - \setchemicallinesegment +SS -116 606 688 -500 - \setchemicallinesegment SB 688 240 688 -240 - \setchemicallinesegment -SB 688 240 688 -500 - \setchemicallinesegment +SB 688 500 688 -240 - \setchemicallinesegment DB1 638 240 638 -240 - \setchemicallinesegment DB2 738 240 738 -240 - \setchemicallinesegment EB 548 340 548 -340 - \setchemicallinesegment R 688 500 1093 794 - \setchemicallinesegment -R 688 500 688 1000 - \setchemicallinesegment +R 688 500 1163 345 - \setchemicallinesegment ER1 659 540 1064 834 - \setchemicallinesegment ER2 727 460 1122 754 - \setchemicallinesegment SR 898 653 1093 794 - \setchemicallinesegment -SR 688 760 688 1000 - \setchemicallinesegment +SR 935 420 1163 345 - \setchemicallinesegment DR1 869 693 1064 834 - \setchemicallinesegment DR2 927 613 1122 754 - % - \setchemicaltextelement Z 688 500 - \setchemicaltextelement RZ 1188 863 - \setchemicaltextelement -RZ 688 1100 - \setchemicaltextelement +RZ 1258 315 - \setchemicaltextelement CRZ 1323 947 - % - \setchemicalcircsegment C -36 36 590 72 475 -345 - \setchemicalcircsegment CC -72 0 590 72 182 -561 - % - \setchemicaltextelement ZN 468 350 - \setchemicaltextelement RN 860 625 % 1.25 Z - \setchemicaltextelement RTN 785 728 % .12 / 103 75 - \setchemicaltextelement RBN 935 522 - % - \def\processchemical[##1##2##3##4]% - {\processaction - [##1##2##3##4] - [ FRONT????=>{\executechemicalFIVEFRONT[#1]}, - PB:##4=>\beginchemicalpicture{##4}, - PE????=>\endchemicalpicture, - ROT##4=>\processchemicalrotation{##4}, - SUB##4=>\processchemicalsubstitute{##4}, - ADJ##4=>\processchemicaldistance{##4}, - MOV##4=>\processchemicaltranslate{##4}, - -RZ##4=>\processchemicaltextelement{-RZ}{##4}{#1}{5} - {b,l,t,r,r, l,t,r,r,l, t,r,r,l,l, r,b,l,t,r}, - +RZ##4=>\processchemicaltextelement{+RZ}{##4}{#1}{5} - {l,t,r,r,b, t,r,r,l,l, r,r,l,l,r, b,l,l,r,r}, - -SB##4=>\processchemicallinesegment{-SB}{##4}, - +SB##4=>\processchemicallinesegment{+SB}{##4}, - -SR##4=>\processchemicallinesegment{-SR}{##4}, - +SR##4=>\processchemicallinesegment{+SR}{##4}, - -RD##4=>\processchemicaldashedlinesegment{-R}{##4}, - +RD##4=>\processchemicaldashedlinesegment{+R}{##4}, - -RB##4=>\processchemicaldeltalinesegment{-R}{##4}, - +RB##4=>\processchemicaldeltalinesegment{+R}{##4}, - CRZ##4=>\processchemicaltextelement{CRZ}{##4}{#1}{0}{}, - RTN##4=>\processchemicaltextconstant{RTN}{##4}{\chemicaltextelementnumber}{0}, - RTT##4=>\processchemicaltextelement{RTN}{##4}{#1}{0}{}, - RBN##4=>\processchemicaltextconstant{RBN}{##4}{\chemicaltextelementnumber}{0}, - RBT##4=>\processchemicaltextelement{RBN}{##4}{#1}{0}{}, - -SS##4=>\processchemicallinesegment{-SS}{##4}, - +SS##4=>\processchemicallinesegment{+SS}{##4}, - CCD##4=>\processchemicaldottsegment{CC}{##4}, - SS##3##4=>\processchemicallinesegment{SS}{##3##4}, - RD##3##4=>\processchemicaldashedlinesegment{R}{##3##4}, - RB##3##4=>\processchemicaldeltalinesegment{R}{##3##4}, - ZN##3##4=>\processchemicaltextconstant{ZN}{##3##4}{\chemicaltextelementnumber}{0}, - ZT##3##4=>\processchemicaltextelement{ZN}{##3##4}{#1}{0}{}, - RN##3##4=>\processchemicaltextconstant{RN}{##3##4}{\chemicaltextelementnumber}{0}, - RT##3##4=>\processchemicaltextelement{RN}{##3##4}{#1}{0}{}, - AU##3##4=>\processchemicaluparrowsegment{A}{##3##4}, - AD##3##4=>\processchemicaldownarrowsegment{A}{##3##4}, - CC##3##4=>\processchemicalcircsegment{CC}{##3##4}, - CD##3##4=>\processchemicaldottsegment{C}{##3##4}, - DB##3##4=>\processchemicallinesegment{DB}{##3##4}, - DR##3##4=>\processchemicallinesegment{DR}{##3##4}, - EB##3##4=>\processchemicallinesegment{EB}{##3##4}, - ER##3##4=>\processchemicallinesegment{ER}{##3##4}, - RZ##3##4=>\processchemicaltextelement{RZ}{##3##4}{#1}{5} - {l,l,r,r,r, l,r,r,b,l, r,r,b,l,t, r,l,l,t,r}, - SB##3##4=>\processchemicallinesegment{SB}{##3##4}, - SR##3##4=>\processchemicallinesegment{SR}{##3##4}, - -R##3##4=>\processchemicallinesegment{-R}{##3##4}, - +R##3##4=>\processchemicallinesegment{+R}{##3##4}, - B##2##3##4=>\processchemicallinesegment{B}{##2##3##4}, - C##2##3##4=>\processchemicalcircsegment{C}{##2##3##4}, - R##2##3##4=>\processchemicallinesegment{R}{##2##3##4}, - S##2##3##4=>\processchemicallinesegment{S}{##2##3##4}, - Z##2##3##4=>\processchemicaltextelement{Z}{##2##3##4}{#1}{0}{}, - \s!unknown=>\unknownchemical{##1##2##3##4}]}} - -\def\executechemicalSIX[#1]% - {\setchemicalname SIX - % - \setchemicalmaximum 6 - \setchemicalsubstitute 1375 - \setchemicaldistance 866 - % - \setchemicalrotation 1 1 0 0 -1 -1 0 0 1 - \setchemicalrotation 2 0.5 -0.866 -0.866 -0.5 -0.5 0.866 0.866 0.5 - \setchemicalrotation 3 -0.5 -0.866 -0.866 0.5 0.5 0.866 0.866 -0.5 - \setchemicalrotation 4 -1 0 0 1 1 0 0 -1 - \setchemicalrotation 5 -0.5 0.866 0.866 0.5 0.5 -0.866 -0.866 -0.5 - \setchemicalrotation 6 0.5 0.866 0.866 -0.5 -0.5 -0.866 -0.866 0.5 - % - \setchemicalangle 1 0 90 180 270 - \setchemicalangle 2 60 150 240 330 - \setchemicalangle 3 120 210 300 30 - \setchemicalangle 4 180 270 0 90 - \setchemicalangle 5 240 330 60 150 - \setchemicalangle 6 300 30 120 210 - % - \setchemicaltranslate 1 -1732 0 - \setchemicaltranslate 2 -866 1500 - \setchemicaltranslate 3 866 1500 - \setchemicaltranslate 4 1732 0 - \setchemicaltranslate 5 866 -1500 - \setchemicaltranslate 6 -866 -1500 - % - \setchemicallinesegment A 1386 500 1386 -500 - \setchemicallinesegment S 0 1000 866 -500 - \setchemicallinesegment SS 125 783 741 -283 - \setchemicallinesegment -SS 0 1000 741 -283 - \setchemicallinesegment +SS 125 783 866 -500 - \setchemicallinesegment B 866 500 866 -500 - \setchemicallinesegment SB 866 240 866 -240 - \setchemicallinesegment -SB 866 240 866 -500 - \setchemicallinesegment +SB 866 500 866 -240 - \setchemicallinesegment DB1 816 240 816 -240 - \setchemicallinesegment DB2 916 240 916 -240 - \setchemicallinesegment EB 726 340 726 -340 - \setchemicallinesegment R 866 500 1299 750 - \setchemicallinesegment -R 866 500 866 1000 - \setchemicallinesegment +R 866 500 1299 250 - \setchemicallinesegment ER1 841 543 1274 793 - \setchemicallinesegment ER2 891 457 1324 707 - \setchemicallinesegment SR 1091 630 1299 750 - \setchemicallinesegment -SR 866 740 866 1000 - \setchemicallinesegment +SR 1091 370 1299 250 - \setchemicallinesegment DR1 1066 673 1274 793 - \setchemicallinesegment DR2 1116 588 1324 707 - \setchemicallinesegment MID1 0 1000 -150 200 - \setchemicallinesegment MID2 0 -1000 -150 -200 - \setchemicallinesegment MIDS1 0 1000 -180 0 - \setchemicallinesegment MIDS2 0 -1000 -180 0 - % - \setchemicalcircsegment C -30 30 700 60 600 -346 - \setchemicalcircsegment CC -60 0 700 60 350 -606 - % - \setchemicaltextelement Z 866 500 - \setchemicaltextelement RZ 1386 800 - \setchemicaltextelement -RZ 866 1100 - \setchemicaltextelement +RZ 1386 200 - \setchemicaltextelement CRZ 1524 880 - \setchemicaltextelement MIDZ -150 0 - % - \setchemicaltextelement ZN 589 350 - \setchemicaltextelement RN 1083 625 % 1.25 Z - \setchemicaltextelement RTN 1008 755 % .12 / 130 75 - \setchemicaltextelement RBN 1158 495 - % - \def\processchemical[##1##2##3##4##5]% - {\processaction - [##1##2##3##4##5] - [ FRONT????=>{\executechemicalSIXFRONT[#1]}, - MID????=>\processchemicallinesegment{MID}{1????}, - MIDS????=>\processchemicallinesegment{MIDS}{1????}, - MIDZ????=>\processchemicaltextelement{MIDZ}{1????}{#1}{0}{}, - PB:##4##5=>\beginchemicalpicture{##4##5}, - PE????=>\endchemicalpicture, - ROT##4##5=>\processchemicalrotation{##4##5}, - SUB##4##5=>\processchemicalsubstitute{##4##5}, - ADJ##4##5=>\processchemicaldistance{##4##5}, - MOV##4##5=>\processchemicaltranslate{##4##5}, - -RZ##4##5=>\processchemicaltextelement{-RZ}{##4##5}{#1}{6} - {b,l,l,t,r,r, l,l,r,r,r,l, t,r,r,b,l,l, r,r,l,l,l,r}, - +RZ##4##5=>\processchemicaltextelement{+RZ}{##4##5}{#1}{6} - {l,t,r,r,b,l, r,r,r,l,l,l, r,b,l,l,t,r, l,l,l,r,r,r}, - -SB##4##5=>\processchemicallinesegment{-SB}{##4##5}, - +SB##4##5=>\processchemicallinesegment{+SB}{##4##5}, - -SR##4##5=>\processchemicallinesegment{-SR}{##4##5}, - +SR##4##5=>\processchemicallinesegment{+SR}{##4##5}, - -RD##4##5=>\processchemicaldashedlinesegment{-R}{##4##5}, - +RD##4##5=>\processchemicaldashedlinesegment{+R}{##4##5}, - -RB##4##5=>\processchemicaldeltalinesegment{-R}{##4##5}, - +RB##4##5=>\processchemicaldeltalinesegment{+R}{##4##5}, - CRZ##4##5=>\processchemicaltextelement{CRZ}{##4##5}{#1}{0}{}, - -SS##4##5=>\processchemicallinesegment{-SS}{##4##5}, - +SS##4##5=>\processchemicallinesegment{+SS}{##4##5}, - CCD##4##5=>\processchemicaldottsegment{CC}{##4##5}, -RTN##4##5=>\processchemicaltextconstant{RTN}{##4##5}{\chemicaltextelementnumber}{0}, -RTT##4##5=>\processchemicaltextelement{RTN}{##4##5}{#1}{0}{}, -RBN##4##5=>\processchemicaltextconstant{RBN}{##4##5}{\chemicaltextelementnumber}{0}, -RBT##4##5=>\processchemicaltextelement{RBN}{##4##5}{#1}{0}{}, - SS##3##4##5=>\processchemicallinesegment{SS}{##3##4##5}, - RD##3##4##5=>\processchemicaldashedlinesegment{R}{##3##4##5}, - RB##3##4##5=>\processchemicaldeltalinesegment{R}{##3##4##5}, - ZN##3##4##5=>\processchemicaltextconstant{ZN}{##3##4##5}{\chemicaltextelementnumber}{0}, - ZT##3##4##5=>\processchemicaltextelement{ZN}{##3##4##5}{#1}{0}{}, -RN##3##4##5=>\processchemicaltextconstant{RN}{##3##4##5}{\chemicaltextelementnumber}{0}, -RT##3##4##5=>\processchemicaltextelement{RN}{##3##4##5}{#1}{0}{}, - AU##3##4##5=>\processchemicaluparrowsegment{A}{##3##4##5}, - AD##3##4##5=>\processchemicaldownarrowsegment{A}{##3##4##5}, - CD##3##4##5=>\processchemicaldottsegment{C}{##3##4##5}, - CC##3##4##5=>\processchemicalcircsegment{CC}{##3##4##5}, - DB##3##4##5=>\processchemicallinesegment{DB}{##3##4##5}, - EB##3##4##5=>\processchemicallinesegment{EB}{##3##4##5}, - ER##3##4##5=>\processchemicallinesegment{ER}{##3##4##5}, - RZ##3##4##5=>\processchemicaltextelement{RZ}{##3##4##5}{#1}{6} - {l,l,t,r,r,b, l,r,r,r,l,l, r,r,b,l,l,t, r,l,l,l,r,r}, - SB##3##4##5=>\processchemicallinesegment{SB}{##3##4##5}, - SR##3##4##5=>\processchemicallinesegment{SR}{##3##4##5}, - DR##3##4##5=>\processchemicallinesegment{DR}{##3##4##5}, - -R##3##4##5=>\processchemicallinesegment{-R}{##3##4##5}, - +R##3##4##5=>\processchemicallinesegment{+R}{##3##4##5}, - B##2##3##4##5=>\processchemicallinesegment{B}{##2##3##4##5}, - C##2##3##4##5=>\processchemicalcircsegment{C}{##2##3##4##5}, - R##2##3##4##5=>\processchemicallinesegment{R}{##2##3##4##5}, - S##2##3##4##5=>\processchemicallinesegment{S}{##2##3##4##5}, - Z##2##3##4##5=>\processchemicaltextelement{Z}{##2##3##4##5}{#1}{0}{}, - \s!unknown=>\unknownchemical{##1##2##3##4##5}]}} - -\def\executechemicalSEVEN[#1]% incomplete ! - {\setchemicalname SEVEN - % - \setchemicalmaximum 7 - \setchemicalsubstitute - - \setchemicaldistance 1038 - % - \setchemicalrotation 1 .623 .782 - - - - - - - \setchemicalrotation 2 -.223 .975 - - - - - - - \setchemicalrotation 3 -.901 .434 - - - - - - - \setchemicalrotation 4 -.901 -.434 - - - - - - - \setchemicalrotation 5 -.223 -.975 - - - - - - - \setchemicalrotation 6 .623 -.782 - - - - - - - \setchemicalrotation 7 1 0 - - - - - - - % - \setchemicalangle 1 0 - - - - \setchemicalangle 2 51.429 - - - - \setchemicalangle 3 102.857 - - - - \setchemicalangle 4 154.286 - - - - \setchemicalangle 5 205.714 - - - - \setchemicalangle 6 257.143 - - - - \setchemicalangle 7 308.571 - - - - % - \setchemicaltranslate 1 - - - \setchemicaltranslate 2 - - - \setchemicaltranslate 3 - - - \setchemicaltranslate 4 - - - \setchemicaltranslate 5 - - - \setchemicaltranslate 6 - - - \setchemicaltranslate 7 - - - % - \setchemicallinesegment B 1038 500 1038 -500 - \setchemicallinesegment SB 1038 240 1038 -240 - \setchemicallinesegment -SB 1038 240 1038 -500 - \setchemicallinesegment +SB 1038 500 1038 -240 - % - \setchemicaltextelement Z 1038 500 - % - \def\processchemical[##1##2##3##4##5]% - {\processaction - [##1##2##3##4##5] - [ PB:##4##5=>\beginchemicalpicture{##4##5}, - PE????=>\endchemicalpicture, - %ROT##4##5=>\processchemicalrotation{##4}, - %SUB##4##5=>\processchemicalsubstitute{##4##5}, - %ADJ##4##5=>\processchemicaldistance{##4##5}, - %MOV##4##5=>\processchemicaltranslate{##4##5}, - -SB##4##5=>\processchemicallinesegment{-SB}{##4##5}, - +SB##4##5=>\processchemicallinesegment{+SB}{##4##5}, - SB##3##4##5=>\processchemicallinesegment{SB}{##3##4##5}, - B##2##3##4##5=>\processchemicallinesegment{B}{##2##3##4##5}, - Z##2##3##4##5=>\processchemicaltextelement{Z}{##2##3##4##5}{#1}{0}{}, - \s!unknown=>\unknownchemical{##1##2##3##4##5}]}} - -\def\executechemicalEIGHT[#1]% incomplete ! - {\setchemicalname EIGHT - % - \setchemicalmaximum 8 - %\setchemicalsubstitute 1307 - \setchemicaldistance 1207 - % - \setchemicalrotation 1 .707 .707 - - - - - - - \setchemicalrotation 2 0 1 - - - - - - - \setchemicalrotation 3 -.707 .707 - - - - - - - \setchemicalrotation 4 -1 0 - - - - - - - \setchemicalrotation 5 -.707 -.707 - - - - - - - \setchemicalrotation 6 0 -1 - - - - - - - \setchemicalrotation 7 .707 -.707 - - - - - - - \setchemicalrotation 8 1 0 - - - - - - - % - \setchemicalangle 1 45 - - - - \setchemicalangle 2 90 - - - - \setchemicalangle 3 135 - - - - \setchemicalangle 4 180 - - - - \setchemicalangle 5 225 - - - - \setchemicalangle 6 270 - - - - \setchemicalangle 7 315 - - - - \setchemicalangle 8 0 - - - - % - \setchemicaltranslate 1 -2414 0 - \setchemicaltranslate 2 -1706 1706 - \setchemicaltranslate 3 0 2414 - \setchemicaltranslate 4 1706 1706 - \setchemicaltranslate 5 2414 0 - \setchemicaltranslate 6 1706 -1706 - \setchemicaltranslate 7 0 -2414 - \setchemicaltranslate 8 -1706 -1706 - % - \setchemicallinesegment B 1207 500 1207 -500 - \setchemicallinesegment SB 1207 240 1207 -240 - \setchemicallinesegment -SB 1207 240 1207 -500 - \setchemicallinesegment +SB 1207 500 1207 -240 - % - \setchemicaltextelement Z 1207 500 - % - \def\processchemical[##1##2##3##4##5]% - {\processaction - [##1##2##3##4##5] - [ PB:##4##5=>\beginchemicalpicture{##4##5}, - PE????=>\endchemicalpicture, - %SUB##4##5=>\processchemicalsubstitute{##4##5}, - ADJ##4##5=>\processchemicaldistance{##4##5}, - MOV##4##5=>\processchemicaltranslate{##4##5}, - -SB##4##5=>\processchemicallinesegment{-SB}{##4##5}, - +SB##4##5=>\processchemicallinesegment{+SB}{##4##5}, - SB##3##4##5=>\processchemicallinesegment{SB}{##3##4##5}, - B##2##3##4##5=>\processchemicallinesegment{B}{##2##3##4##5}, - Z##2##3##4##5=>\processchemicaltextelement{Z}{##2##3##4##5}{#1}{0}{}, - \s!unknown=>\unknownchemical{##1##2##3##4##5}]}} - -\def\executechemicalFIVEFRONT[#1]% - {\executechemicalFIVE[]% - % - \setchemicalname FIVEFRONT - % - \setchemicallinesegment -R 688 500 688 100 - \setchemicallinesegment +R 688 500 688 900 - % - \setchemicaltextelement -RZ 0 -1300 - \setchemicaltextelement +RZ 0 1300 - % - \def\processchemical[##1##2##3##4]% - {\def\chemicalrotation{2}% - \processaction - [##1##2##3##4] - [ -RZ##4=>\processchemicalunrotatedtextelement{Z}{-RZ}{##4}{#1}{5} - {,,,,, t,t,t,t,t}, - +RZ##4=>\processchemicalunrotatedtextelement{Z}{+RZ}{##4}{#1}{5} - {,,,,, b,b,b,b,b}, - -SB##4=>\processchemicallinesegment{-SB}{##4}, - +SB##4=>\processchemicallinesegment{+SB}{##4}, - SB##3##4=>\processchemicallinesegment{SB}{##3##4}, - -R##3##4=>\processchemicalunrotatedlinesegment{t}{-R}{##3##4}, - +R##3##4=>\processchemicalunrotatedlinesegment{b}{+R}{##3##4}, - BB##3##4=>\processchemicalzlinesegment{B}{##3##4}, - R##2##3##4=>\processchemicalunrotatedlinesegment{t}{-R}{##2##3##4}% - \processchemicalunrotatedlinesegment{b}{+R}{##2##3##4}, - B##2##3##4=>\processchemicallinesegment{B}{##2##3##4}, - Z##2##3##4=>\processchemicaltextelement{Z}{##2##3##4}{#1}{0}{}, - \s!unknown=>\unknownchemical{##1##2##3##4}]}} - -\def\executechemicalSIXFRONT[#1]% - {\executechemicalSIX[]% - % - \setchemicalname SIXFRONT - % - \setchemicallinesegment -R 866 500 866 100 - \setchemicallinesegment +R 866 500 866 900 - % - \setchemicaltextelement -RZ 0 -1300 - \setchemicaltextelement +RZ 0 1300 - % - \def\processchemical[##1##2##3##4]% - {\def\chemicalrotation{2}% - \processaction - [##1##2##3##4] - [ -RZ##4=>\processchemicalunrotatedtextelement{Z}{-RZ}{##4}{#1}{6} - {,,,,,, t,t,t,t,t,t}, - +RZ##4=>\processchemicalunrotatedtextelement{Z}{+RZ}{##4}{#1}{6} - {,,,,,, b,b,b,b,b,b}, - -SB##4=>\processchemicallinesegment{-SB}{##4}, - +SB##4=>\processchemicallinesegment{+SB}{##4}, - SB##3##4=>\processchemicallinesegment{SB}{##3##4}, - -R##3##4=>\processchemicalunrotatedlinesegment{t}{-R}{##3##4}, - +R##3##4=>\processchemicalunrotatedlinesegment{b}{+R}{##3##4}, - BB##3##4=>\processchemicalzlinesegment{B}{##3##4}, - R##2##3##4=>\processchemicalunrotatedlinesegment{t}{-R}{##2##3##4}% - \processchemicalunrotatedlinesegment{b}{+R}{##2##3##4}, - B##2##3##4=>\processchemicallinesegment{B}{##2##3##4}, - Z##2##3##4=>\processchemicaltextelement{Z}{##2##3##4}{#1}{0}{}, - \s!unknown=>\unknownchemical{##1##2##3##4}]}} - -% 1 : 0 -% 2 : -115 -% 3* : -195 -% 3 : -165 -% 4 : -245 - -\def\executechemicalCARBON[#1]% - {\setchemicalname CARBON - % - \setchemicalmaximum 4 - \setchemicaldistance 0 - \setchemicalsubstitute 0 - % - \setchemicalrotation 1 1 0 0 -1 -1 0 0 1 - \setchemicalrotation 2 -0.423 -0.906 -0.906 0.423 0.423 0.906 0.906 -0.423 - \setchemicalrotation 3 -0.966 -0.259 -0.259 0.966 0.966 0.259 0.259 -0.966 - \setchemicalrotation 3* -0.966 0.259 0.259 0.966 0.966 -0.259 -0.259 -0.966 - \setchemicalrotation 4 -0.423 0.906 0.906 0.423 0.423 -0.906 -0.906 -0.423 - % - \setchemicalangle 1 0 90 180 270 - \setchemicalangle 2 115 205 295 25 - \setchemicalangle 3 165 255 345 75 - \setchemicalangle 3* 195 285 15 105 - \setchemicalangle 4 245 335 65 155 - % - \setchemicaltranslate 1 -1500 0 - \setchemicaltranslate 2 0 1500 - \setchemicaltranslate 3 1500 0 - \setchemicaltranslate 4 0 -1500 - % - \setchemicallinesegment B1 500 0 1000 0 - \setchemicallinesegment B2 300 0 1000 0 - \setchemicallinesegment B3 500 0 1000 0 - \setchemicallinesegment B4 300 0 1000 0 - % - \setchemicaltextelement Z 1100 0 - % - \setchemicalcircsegment C 0 360 500 360 0 -500 - % - \def\processchemical[##1##2##3##4##5]% - {\processaction - [##1##2##3##4##5] - [ MIR????=>\setchemicalmirror{3}, - -MIR????=>\resetchemicalmirror{3}, - *MIR????=>\togglechemicalmirror{3}, - CB????=>\processlocalchemicals{B,C,Z}, - C????=>\processchemicalcircsegment{C}{1????}, - -ROT##5=>\reversechemical{ROT}{##5}{3,4,1,2}, - ROT##4##5=>\processchemicalrotation{##4##5}, - MOV##4##5=>\processchemicaltranslate{##4##5}, - CB##3##4##5=>\processlocalchemicals - {ROT##3,C,B,Z2..4, - MOV##3,*MIR,-ROT##3,C,B,Z2..4}, - B##2##3##4##5=>\processprivatechemicallinesegment{B}{##2##3##4##5}, - Z##2##3##4##5=>\processchemicaltextelement{Z}{##2##3##4##5}{#1}{4} - {l,t,r,b, t,r,b,l, r,b,l,t, b,l,t,r}, - \s!unknown=>\unknownchemical{##1##2##3##4##5}]}} - -% 1: 45 2: -90 3: -225 -% 4: -45 5: -135 6: -270 - -\newif\ifNEWMANstagger \NEWMANstaggertrue - -\def\executechemicalNEWMANSTAGGER% - {\NEWMANstaggertrue\executechemicalNEWMAN} - -\def\executechemicalNEWMANECLIPSE% - {\NEWMANstaggerfalse\executechemicalNEWMAN} - -\def\executechemicalNEWMAN[#1]% - {\setchemicalname NEWMAN - % - \setchemicalmaximum 6 - \setchemicaldistance 0 - \setchemicalsubstitute 0 - % - \ifNEWMANstagger - \setchemicalrotation 1 0.707 0.707 0.707 -0.707 -0.707 -0.707 -0.707 0.707 - \setchemicalrotation 2 0 -1 -1 0 0 1 1 0 - \setchemicalrotation 3 -0.707 0.707 0.707 0.707 0.707 -0.707 -0.707 -0.707 - \else - \setchemicalrotation 1 .866 -.5 -.5 -.866 -.866 .5 .5 .866 - \setchemicalrotation 2 -.259 .966 .966 .259 .259 -.966 -.966 -.259 - \setchemicalrotation 3 -.5 -.866 -.866 .5 .5 .866 .866 -.5 - \fi - \setchemicalrotation 4 0.707 -0.707 -0.707 -0.707 -0.707 0.707 0.707 0.707 - \setchemicalrotation 5 -0.707 -0.707 -0.707 0.707 0.707 0.707 0.707 -0.707 - \setchemicalrotation 6 0 1 1 0 0 -1 -1 0 - % - \ifNEWMANstagger - \setchemicalangle 1 315 45 135 225 - \setchemicalangle 2 90 180 270 0 - \setchemicalangle 3 225 315 45 135 - \else - \setchemicalangle 1 30 120 210 300 - \setchemicalangle 2 255 345 75 165 - \setchemicalangle 3 120 210 300 30 - \fi - \setchemicalangle 4 45 135 225 315 - \setchemicalangle 5 135 225 315 45 - \setchemicalangle 6 270 0 90 180 - % - \setchemicaltranslate 1 -1500 0 - \setchemicaltranslate 2 0 1500 - \setchemicaltranslate 3 1500 0 - \setchemicaltranslate 4 0 -1500 - % - \setchemicallinesegment B1 0 0 1000 0 - \setchemicallinesegment B2 0 0 1000 0 - \setchemicallinesegment B3 0 0 1000 0 - \setchemicallinesegment B4 500 0 1000 0 - \setchemicallinesegment B5 500 0 1000 0 - \setchemicallinesegment B6 500 0 1000 0 - % - \setchemicaltextelement Z 1100 0 - % - \setchemicalcircsegment C 0 360 500 360 0 -500 - % - \def\processchemical[##1##2##3##4]% - {\processaction - [##1##2##3##4] - [STAGGER????=>{\executechemicalNEWMANSTAGGER[#1]}, - ECLIPSE????=>{\executechemicalNEWMANECLIPSE[#1]}, - B????=>\processlocalchemicals{B1..6}, - CB????=>\processlocalchemicals{B1..6,C,Z1..6}, - C????=>\processchemicalcircsegment{C}{1????}, - ROT##4=>\processchemicalrotation{##4}, - MOV##4=>\processchemicaltranslate{##4}, - B##2##3##4=>\processprivatechemicallinesegment{B}{##2##3##4}, - Z##2##3##4=>\ifNEWMANstagger - \processchemicaltextelement{Z}{##2##3##4}{#1}{6} - {l,t,r,l,r,b, l,r,l,r,r,l, r,b,l,r,l,t, r,l,r,l,l,r}% - \else - \processchemicaltextelement{Z}{##2##3##4}{#1}{6} - {l,r,t,t,r,b, t,b,r,r,b,l, r,l,b,b,l,t, b,t,l,l,t,r}% - \fi, - \s!unknown=>\unknownchemical{##1##2##3##4}]}} - -\def\executechemicalCHAIR[#1]% smaller - {\setchemicalname CHAIR - % - \setchemicalmaximum 6 - % - \setchemicallinesegment B1 1600 800 2800 -800 - \setchemicallinesegment B2 2800 -800 800 0 - \setchemicallinesegment B3 800 0 -1600 -800 - \setchemicallinesegment B4 -1600 -800 -2800 800 - \setchemicallinesegment B5 -2800 800 -800 0 - \setchemicallinesegment B6 -800 0 1600 800 - % - \setchemicallinesegment +R1 1600 800 1600 1600 - \setchemicallinesegment +R2 2800 -800 2800 -1600 - \setchemicallinesegment +R3 800 0 800 800 - \setchemicallinesegment +R4 -1600 -800 -1600 -1600 - \setchemicallinesegment +R5 -2800 800 -2800 1600 - \setchemicallinesegment +R6 -800 0 -800 -800 - % - \setchemicallinesegment -R1 1600 800 2350 522 % 750 278 - \setchemicallinesegment -R2 2800 -800 3493 -400 - \setchemicallinesegment -R3 800 0 1329 -600 % 528 600 - \setchemicallinesegment -R4 -1600 -800 -2350 -522 % 750 278 - \setchemicallinesegment -R5 -2800 800 -3493 400 - \setchemicallinesegment -R6 -800 0 -1329 600 % 528 600 - % - \setchemicaltextelement +RZ1 1600 1800 - \setchemicaltextelement +RZ2 2800 -1800 - \setchemicaltextelement +RZ3 800 1000 - \setchemicaltextelement +RZ4 -1600 -1800 - \setchemicaltextelement +RZ5 -2800 1800 - \setchemicaltextelement +RZ6 -800 -1000 - % - \setchemicaltextelement -RZ1 2538 453 % 200 lang - \setchemicaltextelement -RZ2 3666 -300 - \setchemicaltextelement -RZ3 1460 -750 - \setchemicaltextelement -RZ4 -2538 -453 - \setchemicaltextelement -RZ5 -3666 300 - \setchemicaltextelement -RZ6 -1460 750 - % - \def\processchemical[##1##2##3##4##5]% - {\def\chemicalrotation{1}% - \processaction - [##1##2##3##4##5] - [ B????=>\processlocalchemicals{B1,B2,B3,B4,B5,B6}, - -R????=>\processlocalchemicals{-R1,-R2,-R3,-R4,-R5,-R6}, - +R????=>\processlocalchemicals{+R1,+R2,+R3,+R4,+R5,+R6}, - B##2????=>{\getchemicallinesegment[0][B##2]}, - -RZ##4????=>{\getchemicalfixedtextelement[-RZ##4][1][##4][l,l,tc,r,r,bc][#1]}, - +RZ##4????=>{\getchemicalfixedtextelement[+RZ##4][1][##4][c][#1]}, - -R##3????=>{\getchemicallinesegment[0][-R##3]}, - +R##3????=>{\getchemicallinesegment[0][+R##3]}, - \s!unknown=>\unknownchemical{##1##2##3##4##5}]}} - -\def\executechemicalarrow#1#2[#3]% - {\dogetcommalistelement1\from#3\to\toptext - \dogetcommalistelement2\from#3\to\bottext - \def\dochemicaltext##1% - {\dosetsubscripts% - $\@@dochemicalstyle{\@@localchemicalformat\strut##1}$% - \doresetsubscripts}% - \doifelse\@@chemicallocation\v!intext - {#1{\dochemicaltext\toptext}}% - {\setbox\chemicalsymbols=\hbox - {\box\chemicalsymbols - \vbox{\halign{##\cr - \hbox to 3em{\hss\dochemicaltext{\toptext}\hss}\cr - #2% - \hbox to 3em{\hss\dochemicaltext{\bottext}\hss}\cr}}}}} - -\def\executechemicalGIVES - {\executechemicalarrow - {\chemicalsinglepicturearrow}% nodig - {\rightarrowfill\cr}} - -\def\executechemicalEQUILIBRIUM - {\executechemicalarrow - {\chemicaldoublepicturearrow}% nodig - {\rightarrowfill\cr\leftarrowfill\cr}} - -\def\executechemicalMESOMERIC - {\executechemicalarrow - {\chemicalsinglepicturearrow}% nodig - {$\leftarrow\hskip-1em$\rightarrowfill\cr}} - -\def\executechemicalsign#1[#2]% - {\doifelse\@@chemicallocation\v!intext - {\dosetsubscripts - $\@@dochemicalstyle{\@@localchemicalformat#1}$% - \doresetsubscripts} - {\setbox\chemicalsymbols\hbox - {\box\chemicalsymbols - \dosetsubscripts - $\@@dochemicalstyle{\@@localchemicalformat#1}$% - \doresetsubscripts}}} - -\def\executechemicalPLUS - {\executechemicalsign{+}} - -\def\executechemicalMINUS - {\executechemicalsign{-}} - -\def\executechemicalEQUAL - {\executechemicalsign{=}} - -\def\executechemicalSPACE[#1]% - {\doifnot\@@chemicallocation\v!intext - {\setbox\chemicalsymbols\hbox - {\box\chemicalsymbols - \quad}}} - -\def\executechemicalCHEM[#1]% - {\doifnot\@@chemicallocation\v!intext - {\setbox\chemicalsymbols\hbox - {\box\chemicalsymbols - $\@@dochemicalstyle{\@@localchemicalformat#1}$}}} - -\def\executechemicalTEXT[#1]% - {\doifnot\@@chemicallocation\v!intext - {\setbox\chemicalsymbols\hbox - {\box\chemicalsymbols#1}}} - -%\def\executechemicalLOW[#1]% -% {\setlowsubscripts} -% -%\def\executechemicalHIGH[#1]% -% {\sethighsubscripts} - -\def\putchemicalrule#1#2#3#4% - {\ifcase\chemicaldrawingmode - \putrule from {#1} {#2} to {#3} {#4} - \or - \psline(#1,#2)(#3,#4)% - \or - \bgroup - \!!counta=#1\!!countb=#2\!!countc=#3\!!countd=#4\relax - \global\MPdrawingdonetrue - \setchemicalattributes - \startMPdrawing - x1 := \MPdivten[\the\!!counta]u ; - y1 := \MPdivten[\the\!!countb]u ; - x2 := \MPdivten[\the\!!countc]u ; - y2 := \MPdivten[\the\!!countd]u ; - draw z1--z2 ; - \stopMPdrawing - \egroup - \fi} - -\def\executechemicalcomplex#1% - {\bgroup - \putchemicalrule {0} {-\@@chemicalbottom} {0} {\@@chemicaltop}% - \putchemicalrule {0} {\@@chemicaltop} {#1150} {\@@chemicaltop}% - \putchemicalrule {0} {-\@@chemicalbottom} {#1150} {-\@@chemicalbottom}% - \egroup} - -\def\executechemicalOPENCOMPLEX[#1]% - {\executechemicalcomplex+\ignorespaces - \executechemicalSPACE[]} - -\def\executechemicalCLOSECOMPLEX[#1]% - {\executechemicalSPACE[]% - \executechemicalcomplex-\ignorespaces} - -% nog niet door midden as! - -\def\executechemicalverticalsymbol#1#2% - {\executechemicalTEXT - [$\left#1\relax - \dimen0=\@@chemicalunit - \scratchcounter=\@@chemicaltop - \advance\scratchcounter by \@@chemicalbottom - \dimen0=\scratchcounter\dimen0 - \vcenter to \dimen0{} - \dimen2=\@@chemicalunit - \dimen2=\@@chemicalright\dimen0 - \vcenter{\leftskip1em\hsize\dimen2\relax\strut#2\strut}% - \right.$]}% - -\def\executechemicalUPARROW[#1]% - {\executechemicalverticalsymbol\uparrow{#1}} - -\def\executechemicalDOWNARROW[#1]% - {\executechemicalverticalsymbol\downarrow{#1}} - -\def\executechemicalUPDOWNARROW[#1]% - {\executechemicalverticalsymbol\updownarrow{#1}} - -\let\setchemicalattributes\relax - -\setupchemical - [\c!width=0, - \c!height=0, - \c!left=0, - \c!right=0, - \c!top=0, - \c!bottom=0, - \c!bodyfont=\the\bodyfontsize, - \c!resolution=\outputresolution, - \c!scale=\v!medium, - \c!size=\v!medium, - \c!textsize=\v!big, - \c!frame=\v!off, - \c!axis=\v!off, - \c!state=\v!start, - \c!style=\rm, - \c!location=, - \c!option=, - \c!offset=LOW, - \c!alternative=1, - \c!color=, - \c!rulethickness=, - \c!rulecolor=, - \c!factor=1] - -% Tijdelijk plaatsen we deze extra macro's hier. -% -% mathontop: \mtop {} {} -% textontop: \ttop {} {} - -\def\putontop#1#2% - {\vbox - {\halign - {\strut\hss##\hss\cr - #1\cr - #2\cr}}} - -\def\ttop#1#2% - {\putontop{\tx#1}{#2}} - -\def\mtop#1#2% - {\vbox - {\offinterlineskip - \halign - {\hss##\hss\cr - $\scriptscriptstyle#1$\cr - \noalign{\vskip.5ex}% - $#2$\cr}}} - -\def\ctop#1#2% - {\vbox - {\offinterlineskip - \halign - {\hss##\hss\cr - $\@@dochemicalstyle{\@@localchemicalformat\scriptscriptstyle#1}$\cr - \noalign{\vskip.5ex}% - $\@@dochemicalstyle{\@@localchemicalformat#2}$\cr}}} - -%D Here are a couple of \CONTEXT\ goodies: -%D -%D \startitemize -%D \item styles hooked into \CONTEXT\ style mechanism -%D \item support for color and rulethickness (mp mode only) -%D \item position tracking -%D \stopitemize - -\ifCONTEXT \else \protect \endinput \fi - -\let\@@chemicalrulecolor\empty -\let\@@chemicalcolor \empty - -% \def\setchemicalattributes -% {\scratchdimen\@@chemicalchemicalrulethickness -% \def\chemicalattributes -% {withpen pencircle scaled \the\scratchdimen\space -% withcolor }% -% \doifelsenothing\@@chemicalchemicalrulecolor -% {\edef\chemicalattributes{\chemicalattributes black}} -% {\edef\chemicalattributes{\chemicalattributes \MPcolor{\@@chemicalchemicalrulecolor}}}% -% \startMPdrawing -% drawoptions (\chemicalattributes) ; -% \stopMPdrawing} - -\def\setchemicalattributes - {\scratchdimen\@@chemicalrulethickness - \def\chemicalattributes - {withpen pencircle scaled \the\scratchdimen\space - withcolor }% - \doifelsenothing\@@chemicalrulecolor - {\edef\chemicalattributes{\chemicalattributes black}} - {\edef\chemicalattributes{\chemicalattributes \MPcolor{\@@chemicalrulecolor}}}% - \startMPdrawing - drawoptions (\chemicalattributes) ; - \stopMPdrawing} - -\def\@@dochemicalcolor - {\doifsomething\@@chemicalcolor{\color[\@@chemicalcolor]}} - -\def\@@dochemicalstyle - {\doconvertfont\@@chemicalstyle} - -\setupchemical - [\c!rulethickness=\linewidth, - \c!rulecolor=, - \c!color=] - -\def\cpos#1#2% - {\iftrialtypesetting - #2% - \else - \bgroup - \globalpushmacro\dowithchemical - \gdef\dowithchemical##1{\hpos{#1}{##1}\globalpopmacro\dowithchemical}% - #2% - \egroup - \fi} - -\protect \endinput - -% \startchemical[axis=on,frame=yes] -% \chemical[SIX,ROT2,B,R36,RZ6][CH_3] -% \chemical[PB:RZ3,ONE,Z05,SB5,EP37,PE][O,H] -% \stopchemical - -% \startchemical[size=big,scale=small,axis=on,frame=yes,factor=1.5] -% \chemical[SIX,ROT2,B,R36,RZ6][CH_3] -% \chemical[PB:RZ3,ONE,Z05,SB5,EP37,PE][O,H] -% \stopchemical - -% \startchemical[size=big,scale=medium,axis=on,frame=yes,factor=1.5] -% \chemical[SIX,ROT2,B,R36,RZ6][CH_3] -% \chemical[PB:RZ3,ONE,Z05,SB5,EP37,PE][O,H] -% \stopchemical - -% \startchemical[size=big,scale=big,axis=on,frame=yes,factor=1.5] -% \chemical[SIX,ROT2,B,R36,RZ6][CH_3] -% \chemical[PB:RZ3,ONE,Z05,SB5,EP37,PE][O,H] -% \stopchemical - |