summaryrefslogtreecommitdiff
path: root/tex/context/base/ppchtex.mkii
diff options
context:
space:
mode:
authorContext Git Mirror Bot <phg42.2a@gmail.com>2016-05-17 19:31:15 +0200
committerContext Git Mirror Bot <phg42.2a@gmail.com>2016-05-17 19:31:15 +0200
commit2017d30b4ca772c8eeac4fc0eb9b54e547a9a1d8 (patch)
treed96df31f305a095c078ea5fb9f639ca34ac36c12 /tex/context/base/ppchtex.mkii
parent53ff76b73cd1f373ecdfb0f7f17df6f352621d6e (diff)
downloadcontext-2017d30b4ca772c8eeac4fc0eb9b54e547a9a1d8.tar.gz
2016-05-17 19:25:00
Diffstat (limited to 'tex/context/base/ppchtex.mkii')
-rw-r--r--tex/context/base/ppchtex.mkii3555
1 files changed, 0 insertions, 3555 deletions
diff --git a/tex/context/base/ppchtex.mkii b/tex/context/base/ppchtex.mkii
deleted file mode 100644
index 07ca9789a..000000000
--- a/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
-