summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/xymtex/aliphat.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/xymtex/aliphat.dtx')
-rw-r--r--Master/texmf-dist/source/latex/xymtex/aliphat.dtx3193
1 files changed, 3193 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/xymtex/aliphat.dtx b/Master/texmf-dist/source/latex/xymtex/aliphat.dtx
new file mode 100644
index 00000000000..4f1367d15ce
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/aliphat.dtx
@@ -0,0 +1,3193 @@
+% \iffalse meta-comment
+%% File: aliphat.dtx
+%
+% Copyright 1993,1996,1998 by Shinsaku Fujita
+%
+% This file is part of XyMTeX system.
+% -------------------------------------
+%
+% This file is a successor to:
+%
+% aliphat.sty
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 1.00}
+% \typeout{ -- Released December 1, 1993 by Shinsaku Fujita}
+% Copyright (C) 1993 by Shinsaku Fujita, all rights reserved.
+%
+% This file is a part of the macro package ``XyMTeX'' which has been
+% designed for typesetting chemical structural formulas.
+%
+% This file is to be contained in the ``xymtex'' directory which is
+% an input directory for TeX. It is a LaTeX optional style file and
+% should be used only within LaTeX, because several macros of the file
+% are based on LaTeX commands.
+%
+% For the review of XyMTeX, see
+% (1) Shinsaku Fujita, ``Typesetting structural formulas with the text
+% formatter TeX/LaTeX'', Computers and Chemistry, in press.
+% The following book deals with an application of TeX/LaTeX to
+% preparation of manuscripts of chemical fields:
+% (2) Shinsaku Fujita, ``LaTeX for Chemists and Biochemists''
+% Tokyo Kagaku Dozin, Tokyo (1993) [in Japanese].
+%
+% Copying of this file is authorized only if either
+% (1) you make absolutely no changes to your copy, including name and
+% directory name; or
+% (2) if you do make changes,
+% (a) you name it something other than the names included in the
+% ``xymtex'' directory and
+% (b) you are requested to leave this notice intact.
+% This restriction ensures that all standard styles are identical.
+%
+% Please report any bugs, comments, suggestions, etc. to:
+% Shinsaku Fujita,
+% Ashigara Research Laboratories, Fuji Photo Film Co., Ltd.,
+% Minami-Ashigara, Kanagawa-ken, 250-01, Japan.
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{aliphat}
+% \def\versi@ndate{December 01, 1993}
+% \def\versi@nno{ver1.00}
+% \def\copyrighth@lder{SF}% Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{aliphat}
+% \def\versi@ndate{August 16, 1996}
+% \def\versi@nno{ver1.01}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{aliphat}
+% \def\versi@ndate{October 31, 1998}
+% \def\versi@nno{ver1.02}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \fi
+%
+% \CheckSum{3929}
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%
+% \setcounter{StandardModuleDepth}{1}
+%
+% \StopEventually{}
+% \MakeShortVerb{\|}
+%
+% \iffalse
+% \changes{v1.01}{1996/06/26}{first edition for LaTeX2e}
+% \changes{v1.02}{1998/10/31}{revised edition for LaTeX2e}
+% \changes{v2.00}{1998/12/25}{enhanced edition for LaTeX2e}
+% \fi
+%
+% \iffalse
+%<*driver>
+\NeedsTeXFormat{pLaTeX2e}
+% \fi
+\ProvidesFile{aliphat.dtx}[1998/12/25 v2.00 XyMTeX{} package file]
+% \iffalse
+\documentclass{ltxdoc}
+\GetFileInfo{aliphat.dtx}
+%
+% %%XyMTeX Logo: Definition 2%%%
+\def\UPSILON{\char'7}
+\def\XyM{X\kern-.30em\smash{%
+\raise.50ex\hbox{\UPSILON}}\kern-.30em{M}}
+\def\XyMTeX{\XyM\kern-.1em\TeX}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\title{Aliphatic compounds by {\sffamily aliphat.sty}
+(\fileversion) of \XyMTeX{}}
+\author{Shinsaku Fujita \\
+Department of Chemistry and Materials Technology, \\
+Kyoto Institute of Technology, \\
+Matsugasaki, Sakyoku, Kyoto, 606 Japan
+% % (old address)
+% % Ashigara Research Laboratories,
+% % Fuji Photo Film Co., Ltd., \\
+% % Minami-Ashigara, Kanagawa, 250-01 Japan
+}
+\date{\filedate}
+%
+\begin{document}
+ \maketitle
+ \DocInput{aliphat.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \section{Introduction}\label{aliphat:intro}
+%
+% \subsection{Options for {\sffamily docstrip}}
+%
+% \DeleteShortVerb{\|}
+% \begin{center}
+% \begin{tabular}{|l|l|}
+% \hline
+% \emph{option} & \emph{function}\\ \hline
+% aliphat & aliphat.sty \\
+% driver & driver for this dtx file \\
+% \hline
+% \end{tabular}
+% \end{center}
+% \MakeShortVerb{\|}
+%
+% \subsection{Version Information}
+%
+% \begin{macrocode}
+%<*aliphat>
+\typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 2.00}
+\typeout{ -- Released December 25, 1998 by Shinsaku Fujita}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\j@urnalname{aliphat}
+\def\versi@ndate{December 25, 1998}
+\def\versi@nno{ver2.00}
+\def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\typeout{XyMTeX Macro File `\j@urnalname' (\versi@nno) <\versi@ndate>%
+\space[\copyrighth@lder]}
+% \end{macrocode}
+%
+% \section{List of commands for aliphat.sty}
+%
+% \begin{verbatim}
+% *********************************
+% * aliphat.sty: list of commands *
+% *********************************
+%
+% <Conventions for bond-setting>
+%
+% \Northbond
+% \Eastbond
+% \Southbond
+% \Westbond
+% \NEBond
+% \NEbond
+% \SEBond
+% \SEbond
+% \NWBond
+% \NWbond
+% \SWBond
+% \SWbond
+%
+% \NEBOND
+% \NWBOND
+% \SEBOND
+% \SWBOND
+%
+% <Macros for position adjustment>
+% \ylrtrigonalposition
+% \ylRtrigonalposition
+% \ylltrigonalposition
+% \ylLtrigonalposition
+% \ylutrigonalposition
+% \ylUtrigonalposition
+% \yldtrigonalposition
+% \ylDtrigonalposition
+%
+% \yltethedralposition
+% \ylsquareposition
+%
+% \ylethylenepositiona
+% \ylethylenepositionb
+% \ylethylenevpositiona
+% \ylethylenevpositionb
+%
+% <Macros for tetravalent atoms>
+%
+% \tetrahedral \@tetrahedral
+% \square \@square
+%
+% <Macros for trivalent atoms>
+%
+% \rtrigonal \@rtrigonal
+% \Rtrigonal \@Rtrigonal
+% \ltrigonal \@ltrigonal
+% \Ltrigonal \@Ltrigonal
+% \utrigonal \@utrigonal
+% \Utrigonal \@Utrigonal
+% \dtrigonal \@dtrigonal
+% \Dtrigonal \@Dtrigonal
+%
+% <Macros for two-carbon compounds>
+%
+% \ethylene \@ethylene
+% \Ethylene \@Ethylene
+% \ethylenev \@ethylenev
+% \Ethylenev \@Ethylenev
+%
+% <Macros for stereo-projection>
+%
+% \tetrastereo \@tetrastereo
+% \dtetrastereo \@dtetrastereo
+% \ethanestereo \@ethanestereo
+% \end{verbatim}
+%
+% \section{Input of basic macros}
+%
+% To assure the compatibility to \LaTeX{}2.09 (the native mode),
+% the commands added by \LaTeXe{} have not been used in the resulting sty
+% files ({\sf aliphat.sty} for the present case). Hence, the combination
+% of |\input| and |\@ifundefined| is used to crossload sty
+% files ({\sf chemstr.sty} for the present case) in place of the
+% |\RequirePackage| command of \LaTeXe{}.
+%
+% \begin{macrocode}
+% *************************
+% * input of basic macros *
+% *************************
+\@ifundefined{setsixringv}{\input chemstr.sty\relax}{}
+\unitlength=0.1pt
+% \end{macrocode}
+%
+% \section{Macros for bond-setting}
+%
+% Single, double and triple bonds of aliphatic compounds are represented
+% by horizontal, vertical or sloped lines,
+% which can be drawn by such commands as |\Eastbond|,
+% |\Northbond| and |\SEbond|.
+% \changes{v1.02}{1998/10/20}{Adding \cs{NEBOND}, \cs{SEBOND}, \cs{NWBOND},
+% and \cs{SWBOND}}
+%
+% \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+%
+% \begin{macro}{\Northbond}
+% \begin{macrocode}
+% ********************************
+% * Conventions for bond-setting *
+% ********************************
+\def\Northbond{%
+\yl@xdiff=40
+\yl@ydiff=-15
+\begin{picture}(100,200)(0,0)
+ \if\@tmpb D\relax%
+ \multiput(-13,52)(26,0){2}{\line(0,1){100}}% double bond up
+ \else\if\@tmpb T\relax%
+ \multiput(-20,52)(20,0){3}{\line(0,1){100}}% triple bond up
+ \else\if\@tmpb A%(A) alpha
+ {\thicklines\put(-8,52){\line(0,1){100}}}% single bond (alpha)
+ \else\if\@tmpb B%(B) beta
+ \@ifundefined{dottedline}{\put(0,52){\line(0,1){100}}}%
+ {{\thicklines \dottedline{20}(0,52)(0,152)}}%
+ \else\if\@tmpb S%
+ \put(0,52){\line(0,1){100}}%
+ \else \put(0,52){\line(0,1){100}}%
+ \fi\fi\fi\fi\fi%
+ \putlratom{-40}{167}{\@memberb}%==1 upper substituent
+\end{picture}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+%
+% \begin{macro}{\Eastbond}
+% \begin{macrocode}
+\def\Eastbond{%
+\yl@xdiff=-10
+\yl@ydiff=33
+\begin{picture}(200,200)(0,0)
+ \if\@tmpb D\relax%
+ \multiput(50,-13)(0,26){2}{\line(1,0){140}}% double bond right
+ \else\if\@tmpb T\relax%
+ \multiput(50,-20)(0,20){3}{\line(1,0){140}}% double bond right
+ \else\if\@tmpb A%(A) alpha
+ {\thicklines\put(50,0){\line(1,0){140}}}% single bond (alpha)
+ \else\if\@tmpb B%(B) beta
+ \@ifundefined{dottedline}{\put(50,0){\line(1,0){140}}}%
+ {{\thicklines \dottedline{20}(50,0)(203,0)}}%
+ \else\if\@tmpb S%
+ \put(50,0){\line(1,0){140}}%
+ \else \put(50,0){\line(1,0){140}}%
+ \fi\fi\fi\fi\fi%
+ \putratom{200}{-33}{\@memberb}%==2 right substituent
+\end{picture}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+%
+% \begin{macro}{\Southbond}
+% \begin{macrocode}
+\def\Southbond{%
+\yl@xdiff=40
+\yl@ydiff=95
+\begin{picture}(100,300)(0,0)
+ \if\@tmpb D\relax%
+ \multiput(-13,-48)(26,0){2}{\line(0,-1){100}}% double bond down
+ \else\if\@tmpb T\relax%
+ \multiput(-20,-48)(20,0){3}{\line(0,-1){100}}% double bond down
+ \else\if\@tmpb A%(A) alpha
+ {\thicklines\put(-8,-48){\line(0,-1){100}}}% single bond (alpha)
+ \else\if\@tmpb B%(B) beta
+ \@ifundefined{dottedline}{\put(0,-48){\line(0,-1){100}}}%
+ {{\thicklines \dottedline{20}(0,-48)(0,-148)}}%
+ \else\if\@tmpb S%
+ \put(0,-48){\line(0,-1){100}}%
+ \else \put(0,-48){\line(0,-1){100}}%
+ \fi\fi\fi\fi\fi%
+ \putlratom{-40}{-243}{\@memberb}%==3 down substituent
+\end{picture}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+%
+% \begin{macro}{\Westbond}
+% \begin{macrocode}
+\def\Westbond{%
+\yl@xdiff=10
+\yl@ydiff=33
+\begin{picture}(100,300)(0,0)
+ \if\@tmpb D\relax%
+ \multiput(-190,-13)(0,26){2}{\line(1,0){140}}% double bond left
+ \else\if\@tmpb T\relax%
+ \multiput(-190,-20)(0,20){3}{\line(1,0){140}}% double bond left
+ \else\if\@tmpb A%(A) alpha
+ {\thicklines\put(-190,0){\line(1,0){140}}}% single bond (alpha)
+ \else\if\@tmpb B%(B) beta
+ \@ifundefined{dottedline}{\put(-190,0){\line(1,0){140}}}%
+ {{\thicklines \dottedline{20}(-190,0)(-40,0)}}%
+ \else\if\@tmpb S%
+ \put(-190,0){\line(1,0){140}}%
+ \else \put(-190,0){\line(1,0){140}}%
+ \fi\fi\fi\fi\fi%
+ \putlatom{-200}{-33}{\@memberb}%==4 left substituent
+\end{picture}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+%
+% \begin{macro}{\NEBond}
+% \begin{macrocode}
+\def\NEBond{%degree 120
+\yl@xdiff=-9
+\yl@ydiff=13
+\begin{picture}(100,300)(0,0)
+ \if\@tmpb D\relax%
+ \put(33,48){\line(5,3){121}}%
+ \put(47,26){\line(5,3){121}}%northeast double bond
+ \else\if\@tmpb T\relax%
+ \put(31,52){\line(5,3){121}}%
+ \put(40,37){\line(5,3){121}}%
+ \put(49,22){\line(5,3){121}}%northeast triple bond
+ \else\if\@tmpb A%(A) alpha
+ {\thicklines\put(40,47){\line(5,3){121}}}% single bond (alpha)
+ \else\if\@tmpb B%(B) beta
+ \@ifundefined{dottedline}{\put(40,47){\line(5,3){121}}}%
+ {{\thicklines \dottedline{20}(40,47)(161,120)}}%
+ \else\if\@tmpb S%
+ \put(40,47){\line(5,3){121}}%
+ \else \put(40,47){\line(5,3){121}}%
+ \fi\fi\fi\fi\fi%
+ \putratom{170}{107}{\@memberb}%==2 (northeast substituent)
+\end{picture}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+%
+% \begin{macro}{\NEbond}
+% \begin{macrocode}
+\def\NEbond{%degree 90
+\yl@xdiff=-5
+\yl@ydiff=10
+\begin{picture}(100,300)(0,0)
+ \if\@tmpb D\relax%
+ \put(31,46){\line(1,1){100}}%
+ \put(49,28){\line(1,1){100}}%northeast double bond
+ \else\if\@tmpb T\relax%
+ \put(27,50){\line(1,1){100}}%
+ \put(40,37){\line(1,1){100}}%
+ \put(53,24){\line(1,1){100}}%northeast triple bond
+ \else\if\@tmpb A%(A) alpha
+ {\thicklines\put(40,47){\line(1,1){100}}}% single bond (alpha)
+ \else\if\@tmpb B%(B) beta
+ \@ifundefined{dottedline}{\put(40,47){\line(1,1){100}}}%
+ {{\thicklines \dottedline{20}(40,47)(140,147)}}%
+ \else\if\@tmpb S%
+ \put(40,47){\line(1,1){100}}%
+ \else \put(40,47){\line(1,1){100}}%
+ \fi\fi\fi\fi\fi%
+ \putratom{145}{137}{\@memberb}%==2 (northeast substituent)
+\end{picture}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+%
+% \begin{macro}{\SEBond}
+% \begin{macrocode}
+\def\SEBond{%degree 120
+\yl@xdiff=-9
+\yl@ydiff=67
+\begin{picture}(100,300)(0,0)
+ \if\@tmpb D\relax%
+ \put(33,-48){\line(5,-3){121}}%
+ \put(47,-26){\line(5,-3){121}}%southeast double bond
+ \else\if\@tmpb T\relax%
+ \put(31,-52){\line(5,-3){121}}%
+ \put(40,-37){\line(5,-3){121}}%
+ \put(49,-22){\line(5,-3){121}}%southeast triple bond
+ \else\if\@tmpb A%(A) alpha
+ {\thicklines\put(40,-47){\line(5,-3){121}}}% single bond (alpha)
+ \else\if\@tmpb B%(B) beta
+ \@ifundefined{dottedline}{\put(40,-47){\line(5,-3){121}}}%
+ {{\thicklines \dottedline{20}(40,-47)(161,-120)}}%
+ \else\if\@tmpb S%
+ \put(40,-47){\line(5,-3){121}}%
+ \else \put(40,-47){\line(5,-3){121}}%
+ \fi\fi\fi\fi\fi%
+ \putratom{170}{-187}{\@memberb}%==2 (southeast substituent)
+\end{picture}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+%
+% \begin{macro}{\SEbond}
+% \begin{macrocode}
+\def\SEbond{%degree 90
+\yl@xdiff=-5
+\yl@ydiff=56
+\begin{picture}(100,300)(0,0)
+ \if\@tmpb D\relax%
+ \put(31,-46){\line(1,-1){100}}%
+ \put(49,-28){\line(1,-1){100}}%southeast double bond
+ \else\if\@tmpb T\relax%
+ \put(27,-50){\line(1,-1){100}}%
+ \put(40,-37){\line(1,-1){100}}%
+ \put(53,-24){\line(1,-1){100}}%southeast triple bond
+ \else\if\@tmpb A%(A) alpha
+ {\thicklines\put(53,-47){\line(1,-1){100}}}% single bond (alpha)
+ \else\if\@tmpb B%(B) beta
+ \@ifundefined{dottedline}{\put(40,-47){\line(1,-1){100}}}%
+ {{\thicklines \dottedline{20}(40,-47)(140,-147)}}%
+ \else\if\@tmpb S%
+ \put(40,-47){\line(1,-1){100}}%
+ \else \put(40,-47){\line(1,-1){100}}%
+ \fi\fi\fi\fi\fi%
+ \putratom{145}{-203}{\@memberb}%==3 (southeast substituent)
+\end{picture}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+%
+% \begin{macro}{\NWBbond}
+% \begin{macrocode}
+\def\NWBond{%
+\begin{picture}(100,300)(0,0)
+\yl@xdiff=9
+\yl@ydiff=13
+ \if\@tmpb D\relax%
+ \put(-59,48){\line(-5,3){121}}%
+ \put(-73,26){\line(-5,3){121}}%northwest double bond
+ \else\if\@tmpb T\relax%
+ \put(-57,52){\line(-5,3){121}}%
+ \put(-66,37){\line(-5,3){121}}%
+ \put(-75,22){\line(-5,3){121}}%northwest triple bond
+ \else\if\@tmpb A%(A) alpha
+ {\thicklines\put(-66,47){\line(-5,3){121}}}% single bond (alpha)
+ \else\if\@tmpb B%(B) beta
+ \@ifundefined{dottedline}{\put(-66,47){\line(-5,3){121}}}%
+ {{\thicklines \dottedline{20}(-66,47)(-187,120)}}%
+ \else\if\@tmpb S%
+ \put(-66,47){\line(-5,3){121}}%
+ \else \put(-66,47){\line(-5,3){121}}%
+ \fi\fi\fi\fi\fi%
+ \putlatom{-196}{107}{\@memberb}%==2 (northwest substituent)
+\end{picture}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+%
+% \begin{macro}{\NWbond}
+% \begin{macrocode}
+\def\NWbond{%
+\begin{picture}(100,300)(0,0)
+\yl@xdiff=13
+\yl@ydiff=10
+ \if\@tmpb D\relax%
+ \put(-41,46){\line(-1,1){100}}%
+ \put(-59,28){\line(-1,1){100}}%northwest double bond
+ \else\if\@tmpb T\relax%
+ \put(-37,50){\line(-1,1){100}}%
+ \put(-50,37){\line(-1,1){100}}%
+ \put(-63,24){\line(-1,1){100}}%northwest triple bond
+ \else\if\@tmpb A%(A) alpha
+ {\thicklines\put(-50,47){\line(-1,1){100}}}% single bond (alpha)
+ \else\if\@tmpb B%(B) beta
+ \@ifundefined{dottedline}{\put(-50,47){\line(-1,1){100}}}%
+ {{\thicklines \dottedline{20}(-50,47)(-137,147)}}%
+ \else\if\@tmpb S%
+ \put(-50,47){\line(-1,1){100}}%
+ \else \put(-50,47){\line(-1,1){100}}%
+ \fi\fi\fi\fi\fi%
+ \putlatom{-163}{137}{\@memberb}%==2 (northwest substituent)
+\end{picture}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+%
+% \begin{macro}{\SWBond}
+% \begin{macrocode}
+\def\SWBond{%
+\yl@xdiff=9
+\yl@ydiff=67
+\begin{picture}(100,300)(0,0)
+ \if\@tmpb D\relax%
+ \put(-59,-48){\line(-5,-3){121}}%
+ \put(-73,-26){\line(-5,-3){121}}%southwest double bond
+ \else\if\@tmpb T\relax%
+ \put(-57,-52){\line(-5,-3){121}}%
+ \put(-66,-37){\line(-5,-3){121}}%
+ \put(-75,-22){\line(-5,-3){121}}%southwest triple bond
+ \else\if\@tmpb A%(A) alpha
+ {\thicklines\put(-66,-47){\line(-5,-3){121}}}% single bond (alpha)
+ \else\if\@tmpb B%(B) beta
+ \@ifundefined{dottedline}{\put(-66,-47){\line(-5,-3){121}}}%
+ {{\thicklines \dottedline{20}(-66,-47)(-187,-120)}}%
+ \else\if\@tmpb S%
+ \put(-66,-47){\line(-5,-3){121}}%
+ \else \put(-66,-47){\line(-5,-3){121}}%
+ \fi\fi\fi\fi\fi%
+ \putlatom{-196}{-187}{\@memberb}%==2 (southwest substituent)
+\end{picture}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+%
+% \begin{macro}{\SWbond}
+% \begin{macrocode}
+\def\SWbond{%
+\yl@xdiff=13
+\yl@ydiff=56
+\begin{picture}(100,300)(0,0)
+ \if\@tmpb D\relax%
+ \put(-41,-46){\line(-1,-1){100}}%
+ \put(-59,-28){\line(-1,-1){100}}%southwest double bond
+ \else\if\@tmpb T\relax%
+ \put(-37,-50){\line(-1,-1){100}}%
+ \put(-50,-37){\line(-1,-1){100}}%
+ \put(-63,-24){\line(-1,-1){100}}%southwest triple bond
+ \else\if\@tmpb A%(A) alpha
+ {\thicklines\put(-50,-47){\line(-1,-1){100}}}% single bond (alpha)
+ \else\if\@tmpb B%(B) beta
+ \@ifundefined{dottedline}{\put(-50,-47){\line(-1,-1){100}}}%
+ {{\thicklines \dottedline{20}(-50,-47)(-137,-147)}}%
+ \else\if\@tmpb S%
+ \put(-50,-47){\line(-1,-1){100}}%
+ \else \put(-50,-47){\line(-1,-1){100}}%
+ \fi\fi\fi\fi\fi%
+ \putlatom{-163}{-203}{\@memberb}%==3 (southwest substituent)
+\end{picture}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v1.02}{1998/10/20}{New command: \cs{NEBOND}}
+% \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+%
+% \begin{macro}{\NEBOND}
+% \begin{macrocode}
+\def\NEBOND{%degree 120
+\yl@xdiff=-1
+\yl@ydiff=-10
+\begin{picture}(100,300)(0,0)
+ \if\@tmpb D\relax%
+ \put(48,33){\line(3,5){72}}%
+ \put(26,47){\line(3,5){72}}%northeast double bond
+ \else\if\@tmpb T\relax%
+ \put(52,31){\line(3,5){72}}%
+ \put(37,40){\line(3,5){72}}%
+ \put(22,49){\line(3,5){72}}%northeast triple bond
+ \else\if\@tmpb A%(A) alpha
+ {\thicklines\put(40,47){\line(3,5){72}}}% single bond (alpha)
+ \else\if\@tmpb B%(B) beta
+ \@ifundefined{dottedline}{\put(47,40){\line(3,5){72}}}%
+ {{\thicklines \dottedline{20}(47,40)(120,161)}}%
+ \else\if\@tmpb S%
+ \put(47,40){\line(3,5){72}}%
+ \else \put(47,40){\line(3,5){72}}%
+ \fi\fi\fi\fi\fi%
+ \putratom{120}{170}{\@memberb}%==2 (northeast substituent)
+\end{picture}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v1.02}{1998/10/20}{New command: \cs{SEBOND}}
+% \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+%
+% \begin{macro}{\SEBOND}
+% \begin{macrocode}
+\def\SEBOND{%degree 120
+\yl@xdiff=-1
+\yl@ydiff=70
+\begin{picture}(100,300)(0,0)
+ \if\@tmpb D\relax%
+ \put(48,-33){\line(3,-5){72}}%
+ \put(26,-47){\line(3,-5){72}}%southeast double bond
+ \else\if\@tmpb T\relax%
+ \put(52,-31){\line(3,-5){72}}%
+ \put(37,-40){\line(3,-5){72}}%
+ \put(22,-49){\line(3,-5){72}}%southeast triple bond
+ \else\if\@tmpb A%(A) alpha
+ {\thicklines\put(47,-40){\line(3,-5){72}}}% single bond (alpha)
+ \else\if\@tmpb B%(B) beta
+ \@ifundefined{dottedline}{\put(47,-40){\line(3,-5){72}}}%
+ {{\thicklines \dottedline{20}(47,-40)(120,-161)}}%
+ \else\if\@tmpb S%
+ \put(47,-40){\line(3,-5){72}}%
+ \else \put(47,-40){\line(3,-5){72}}%
+ \fi\fi\fi\fi\fi%
+ \putratom{120}{-230}{\@memberb}%==2 (southeast substituent)
+\end{picture}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v1.02}{1998/10/20}{New command: \cs{NWBOND}}
+% \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+%
+% \begin{macro}{\NWBOND}
+% \begin{macrocode}
+\def\NWBOND{%
+\yl@xdiff=1
+\yl@ydiff=-10
+\begin{picture}(100,300)(0,0)
+ \if\@tmpb D\relax%
+ \put(-48,33){\line(-3,5){72}}%
+ \put(-26,47){\line(-3,5){72}}%northwest double bond
+ \else\if\@tmpb T\relax%
+ \put(-52,31){\line(-3,5){72}}%
+ \put(-37,40){\line(-3,5){72}}%
+ \put(-22,49){\line(-3,5){72}}%northwest triple bond
+ \else\if\@tmpb A%(A) alpha
+ {\thicklines\put(-40,47){\line(-3,5){72}}}% single bond (alpha)
+ \else\if\@tmpb B%(B) beta
+ \@ifundefined{dottedline}{\put(-47,40){\line(-3,5){72}}}%
+ {{\thicklines \dottedline{20}(-47,40)(-120,161)}}%
+ \else\if\@tmpb S%
+ \put(-47,40){\line(-3,5){72}}%
+ \else \put(-47,40){\line(-3,5){72}}%
+ \fi\fi\fi\fi\fi%
+ \putlatom{-120}{170}{\@memberb}%==2 (northwest substituent)
+%\yl@xdiff=11
+%\yl@ydiff=-14
+% \if\@tmpb D\relax%
+% \put(-48,59){\line(-3,5){72}}%
+% \put(-26,73){\line(-3,5){72}}%northwest double bond
+% \else\if\@tmpb T\relax%
+% \put(-52,57){\line(-3,5){72}}%
+% \put(-37,66){\line(-3,5){72}}%
+% \put(-22,75){\line(-3,5){72}}%northwest triple bond
+% \else\if\@tmpb A%(A) alpha
+% {\thicklines\put(-47,66){\line(-3,5){72}}}% single bond (alpha)
+% \else\if\@tmpb B%(B) beta
+% \@ifundefined{dottedline}{\put(-47,66){\line(-3,5){72}}}%
+% {{\thicklines \dottedline{20}(-47,66)(-120,187)}}%
+% \else\if\@tmpb S%
+% \put(-47,66){\line(-3,5){72}}%
+% \else \put(-47,66){\line(-3,5){72}}%
+% \fi\fi\fi\fi\fi%
+% \putlatom{-130}{200}{\@memberb}%==2 (northwest substituent)
+%% \putlatom{-120}{170}{\@memberb}%==2 (northwest substituent)
+\end{picture}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v1.02}{1998/10/20}{New command: \cs{SWBOND}}
+% \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+%
+% \begin{macro}{\SWBOND}
+% \begin{macrocode}
+\def\SWBOND{%
+\yl@xdiff=1
+\yl@ydiff=70
+\begin{picture}(100,300)(0,0)
+ \if\@tmpb D\relax%
+ \put(-48,-33){\line(-3,-5){72}}%
+ \put(-26,-47){\line(-3,-5){72}}%southwest double bond
+ \else\if\@tmpb T\relax%
+ \put(-52,-31){\line(-3,-5){72}}%
+ \put(-37,-40){\line(-3,-5){72}}%
+ \put(-22,-49){\line(-3,-5){72}}%southwest triple bond
+ \else\if\@tmpb A%(A) alpha
+ {\thicklines\put(-47,-40){\line(-3,-5){72}}}% single bond (alpha)
+ \else\if\@tmpb B%(B) beta
+ \@ifundefined{dottedline}{\put(-47,-40){\line(-3,-5){72}}}%
+ {{\thicklines \dottedline{20}(-47,-40)(-120,-161)}}%
+ \else\if\@tmpb S%
+ \put(-47,-40){\line(-3,-5){72}}%
+ \else \put(-47,-40){\line(-3,-5){72}}%
+ \fi\fi\fi\fi\fi%
+ \putlatom{-120}{-230}{\@memberb}%==2 (southwest substituent)
+\end{picture}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Tetrahedral unit}
+%
+% The macro |\tetrahedral| typesets a compound of tetravalency.
+% The following numbering is adopted in this macro.
+%
+% \begin{verbatim}
+% ********************
+% * tetrahedral unit *
+% ********************
+%
+% 1
+%
+% |
+% 2 -- 0 -- 4 0 <== the original point
+% |
+%
+% 3
+% \end{verbatim}
+%
+% This macro has an argument |SUBSLIST| as well as an optional
+% argument |AUXLIST|.
+%
+% \begin{verbatim}
+% \tetrahedral[AUXLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The arugument |AUXLIST| designates an character on the central
+% atom of the formula drawn by this macro. It can be used a plus
+% or minus charge on the center.
+%
+% \begin{verbatim}
+% AUXLIST =
+%
+% {0+} : + charge (or another one chararacter) on the center
+% \end{verbatim}
+%
+% The arugument |SUBLIST| designates a set of substitutients.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 4
+%
+% nT : triple bond at n-atom
+% nD : double bond at n-atom
+% n or nS : single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+%
+% for 0 : cetral atom (e.g. 0==C)
+% \end{verbatim}
+%
+% \begin{verbatim}
+% e.g.
+%
+% \tetrahedral{1==Cl;2==F}
+% \tetrahedral{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yltetrahedralposition},
+% \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+%
+% \begin{macro}{\tetrahedral}
+% \begin{macro}{\@tetrahedral}
+% \begin{macrocode}
+\def\tetrahedral{\@ifnextchar[{\@tetrahedral[r}{\@tetrahedral[r]}}
+\def\@tetrahedral#1]#2{%
+%\def\tetrahedral{\@ifnextchar[{\@tetrahedral}{\@tetrahedral[]}}
+%\def\@tetrahedral[#1]#2{%
+\@reset@ylsw%
+\yltetrahedralposition{#2}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\fi
+\if@ylsw
+ \yl@shiftii=\@ylii
+ \yl@shifti=\@yli
+ \advance\yl@shiftii\@@ylii
+ \advance\yl@shifti\@@yli
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+ \begin{picture}(600,600)(-300,-300)%
+ \iforigpt \put(-300,-300){\circle*{50}}%
+ \put(-\noshift,-\noshift){\circle{50}}%
+ \typeout{command `tetrahedral' origin: %
+ (\the\noshift,\the\noshift) ---> (300,300)}\fi%
+\fi
+\@tfor\member:=#1\do{%
+ \expandafter\twoch@@r\member{}{}%
+ \if\@@tmpa 0\relax {\putratom{47}{50}{\scriptsize\@@tmpb}}\fi}%
+\@forsemicol\member:=#2\do{
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifx\@memberb\@yl\else
+\ifcase\@tmpa
+{\putlratom{-40}{-33}{\hbox to.72em{\hss\@memberb\hss}}}%central atom
+\or\put(0,0){\Northbond}%
+\or\put(0,0){\Westbond}%
+\or\put(0,0){\Southbond}%
+\or\put(0,0){\Eastbond}\fi%end of ifcase
+\fi\fi}%
+\end{picture}}%end of macro tetrahedral
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The command |\yltetrahedralposition| is used in
+% |\tetrahedral| to adjust a substitution position.
+% \changes{v1.02}{1998/10/20}{Newly added command:
+% \cs{yltetrahedralposition}}
+%
+% \begin{macro}{\yltetrahedralposition}
+% \begin{macrocode}
+\def\yltetrahedralposition#1{%
+\@@ylswfalse%%%\@reset@ylsw
+\@forsemicol\member:=#1\do{%
+\if@@ylsw\else
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax
+\expandafter\threech@r\@membera{}{}\relax
+\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi
+\if@@ylsw
+\ifcase\@tmpa
+ \or \gdef\@ylii{0}\gdef\@yli{-52}\global\@ylswtrue%N subst. on 1
+ \or \gdef\@ylii{52}\gdef\@yli{0}\global\@ylswtrue%W subst. on 1
+ \or \gdef\@ylii{0}\gdef\@yli{52}\global\@ylswtrue%S subst. on 1
+ \or \gdef\@ylii{-52}\gdef\@yli{0}\global\@ylswtrue%E subst. on 1
+\fi%end of ifcase
+\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+
+% \section{Divalenth unit}
+%
+% The command |\divalenth| produces a length-variable divalent unit.
+% \changes{v2.00}{1998/12/14}{New command: \cs{divalenth}}
+%
+% \begin{verbatim}
+% ******************
+% * Divalenth unit *
+% ******************
+%
+%
+%
+% 1 -- (group) -- 2 0 <== the original point
+%
+% \end{verbatim}
+%
+% This macro has an argument |SUBSLIST| as well as an optional
+% argument |GROUP|.
+%
+% \begin{verbatim}
+% \divalenth{GROUP}{SUBSLIST}
+% \end{verbatim}
+%
+% The arugument |GROUP| designates a character strings representing
+% a divalent group. The locant number is fixed to be zero.
+%
+% The arugument |SUBLIST| designates a set of substitutients.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 4
+%
+% nT : triple bond at n-atom
+% nD : double bond at n-atom
+% n or nS : single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+%
+% for 0 : cetral atom (e.g. 0==C)
+% \end{verbatim}
+%
+%
+% \begin{macro}{\divalenth}
+% \begin{macrocode}
+\def\divalenth#1#2{%
+\@reset@ylsw%
+\yldivalenthposition{#1}{#2}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\fi
+\if@ylsw
+ \yl@shiftii=\@ylii
+ \yl@shifti=\@yli
+ \advance\yl@shiftii\@@ylii
+ \advance\yl@shifti\@@yli
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+ \begin{picture}(600,400)(-300,-200)%
+ \iforigpt \put(-300,-200){\circle*{50}}%
+ \put(-\noshift,-\noshift){\circle{50}}%
+ \typeout{command `tetrahedral' origin: %
+ (\the\noshift,\the\noshift) ---> (300,200)}\fi%
+\fi
+{\expandafter\@m@mb@r#1;\relax
+ \putratom{-30}{-33}{\@memberb}}%
+\@forsemicol\member:=#2\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifx\@memberb\@yl\else
+\ifcase\@tmpa
+\or\put(0,0){\Westbond}%
+\or\put(\the\@tempcnta,0){\Eastbond}\fi%end of ifcase
+\fi\fi}%
+\end{picture}}%end of macro tetrahedral
+% \end{macrocode}
+% \end{macro}
+%
+% The command |\yldivalenthposition| is used in
+% |\tetrahedral| to adjust a substitution position.
+% \changes{v2.00}{1998/12/14}{Newly added command:
+% \cs{yldivalenthposition}}
+%
+% \begin{macro}{\yldivalenthposition}
+% \begin{macrocode}
+\def\yldivalenthposition#1#2{%
+{\expandafter\@m@mb@r#1;\relax
+ \setbox0=\hbox{\@memberb}%
+ \@tempcnta=\wd0
+ \@tempcntb=\unitlength
+ \divide\@tempcnta by\@tempcntb
+ \global\advance\@tempcnta by-62%
+ \@tempcntb=\@tempcnta \global\advance\@tempcntb by50\relax
+ }%
+\@@ylswfalse%
+\@forsemicol\member:=#2\do{%
+\if@@ylsw\else
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax
+\expandafter\threech@r\@membera{}{}\relax
+\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi
+\if@@ylsw
+\ifcase\@tmpa
+ \or \gdef\@ylii{50}\gdef\@yli{0}\global\@ylswtrue%W subst. on 1
+ \or \edef\@ylii{-\the\@tempcntb}\gdef\@yli{0}\global\@ylswtrue%E subst. on 1
+\fi%end of ifcase
+\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Trigonal unit}
+% \subsection{Right-hand trigonal unit (narrow type)}
+%
+% The macro |\rtrigonal| typesets a compound of trivalency.
+% The following numbering is adopted in this macro.
+% The two right-hand bonds form an angle of 90$^{\circ}$ (narrow type),
+% while the left-hand bond is typeset horizontally.
+%
+% \begin{verbatim}
+% *************************
+% * trigonal unit (right) *
+% *************************
+%
+% 3
+% /
+% /
+% 1 --- 0 90 0 <== the original point
+% `
+% `
+% 2
+% \end{verbatim}
+%
+% This macro has an argument |SUBSLIST| as well as an optional
+% argument |AUXLIST|.
+%
+% \begin{verbatim}
+% \rtrigonal[AUXLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The arugument |AUXLIST| designates an character on the central
+% atom of the formula drawn by this macro. It can be used a plus
+% or minus charge on the center.
+%
+% \begin{verbatim}
+% AUXLIST =
+%
+% {0+}: + charge (or another one chararacter) on the center
+% \end{verbatim}
+%
+% The arugument |SUBLIST| designates a set of substitutients.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 3
+%
+% nT : triple bond at n-atom
+% nD : double bond at n-atom
+% n or nS : single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+%
+% for 0 : cetral atom (e.g. 0==C)
+% \end{verbatim}
+%
+% \begin{verbatim}
+% e.g.
+%
+% \rtrigonal{1==Cl;2==F}
+% \rtrigonal{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+%
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylrtrigonalposition},
+% \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+%
+% \begin{macro}{\rtrigonal}
+% \begin{macro}{\@rtrigonal}
+% \begin{macrocode}
+\def\rtrigonal{\@ifnextchar[{\@rtrigonal[r}{\@rtrigonal[r]}}
+\def\@rtrigonal#1]#2{%
+\@reset@ylsw%
+\ylrtrigonalposition{#2}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\fi
+\if@ylsw
+ \yl@shiftii=\@ylii
+ \yl@shifti=\@yli
+ \advance\yl@shiftii\@@ylii
+ \advance\yl@shifti\@@yli
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+\begin{picture}(600,600)(-300,-300)%
+ \iforigpt \put(-300,-300){\circle*{50}}%
+ \put(-\noshift,-\noshift){\circle{50}}%
+ \typeout{command `rtrigonal' origin: %
+ (\the\noshift,\the\noshift) ---> (300,300)}\fi%
+\fi
+\@tfor\member:=#1\do{%
+ \expandafter\twoch@@r\member{}{}%
+ \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}%
+\@forsemicol\member:=#2\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifx\@memberb\@yl\else
+\ifcase\@tmpa {\putlratom{-40}{-33}{\@memberb}}%central atom
+\or\put(0,0){\Westbond}%
+\or\put(0,0){\SEbond}%
+\or\put(0,0){\NEbond}%
+\fi%end of ifcase
+\fi\fi}%
+\end{picture}}%end of macro rtrigonal
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The command |\ylrtrigonalposition| is used in
+% |\rtrigonal| to adjust a substitution position.
+% \changes{v1.02}{1998/10/20}{Newly added command:
+% \cs{ylrtrigonalposition}}
+%
+% \begin{macro}{\ylrtrigonalposition}
+% \begin{macrocode}
+\def\ylrtrigonalposition#1{%
+\@@ylswfalse%%%\@reset@ylsw
+\@forsemicol\member:=#1\do{%
+\if@@ylsw\else
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax
+\expandafter\threech@r\@membera{}{}\relax
+\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi
+\if@@ylsw
+\ifcase\@tmpa
+ \or \gdef\@ylii{52}\gdef\@yli{0}\global\@ylswtrue% W subst. on 1
+ \or \gdef\@ylii{-40}\gdef\@yli{47}\global\@ylswtrue% SE subst. on 1
+ \or \gdef\@ylii{-40}\gdef\@yli{-47}\global\@ylswtrue% NE subst. on 1
+\fi%end of ifcase
+\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Right-hand trigonal unit (broad type)}
+%
+% The macro |\Rtrigonal| typesets a compound of trivalency.
+% The following numbering is adopted in this macro.
+% The two right-hand bonds form an angle of 120$^{\circ}$ (broad type),
+% while the left-hand bond is typeset horizontally.
+% \changes{v1.02}{1998/10/20}{New command: \cs{Rtrigonal}}
+%
+% \begin{verbatim}
+% *************************
+% * trigonal unit (right) *
+% *************************
+%
+% 3
+% /
+% /
+% 1 --- 0 120 0 <== the original point
+% `
+% `
+% 2
+% \end{verbatim}
+%
+% This macro has an argument |SUBSLIST| as well as an optional
+% argument |AUXLIST|.
+%
+% \begin{verbatim}
+% \rtrigonal[AUXLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The arugument |AUXLIST| designates an character on the central
+% atom of the formula drawn by this macro. It can be used a plus
+% or minus charge on the center.
+%
+% \begin{verbatim}
+% AUXLIST =
+%
+% {0+}: + charge (or another one chararacter) on the center
+% \end{verbatim}
+%
+% The arugument |SUBLIST| designates a set of substitutients.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 3
+%
+% nT : triple bond at n-atom
+% nD : double bond at n-atom
+% n or nS : single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+%
+% for 0 : cetral atom (e.g. 0==C)
+% \end{verbatim}
+%
+% \begin{verbatim}
+% e.g.
+%
+% \rtrigonal{1==Cl;2==F}
+% \rtrigonal{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+%
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylRtrigonalposition},
+% \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+%
+% \begin{macro}{\Rtrigonal}
+% \begin{macro}{\@Rtrigonal}
+% \begin{macrocode}
+\def\Rtrigonal{\@ifnextchar[{\@Rtrigonal[r}{\@Rtrigonal[r]}}
+\def\@Rtrigonal#1]#2{%
+\@reset@ylsw%
+\ylRtrigonalposition{#2}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\fi
+\if@ylsw
+ \yl@shiftii=\@ylii
+ \yl@shifti=\@yli
+ \advance\yl@shiftii\@@ylii
+ \advance\yl@shifti\@@yli
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+\begin{picture}(600,600)(-300,-300)%
+ \iforigpt \put(-300,-300){\circle*{50}}%
+ \put(-\noshift,-\noshift){\circle{50}}%
+ \typeout{command `Rtrigonal' origin: %
+ (\the\noshift,\the\noshift) ---> (300,300)}\fi%
+\fi
+\@tfor\member:=#1\do{%
+ \expandafter\twoch@@r\member{}{}%
+ \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}%
+\@forsemicol\member:=#2\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifx\@memberb\@yl\else
+\ifcase\@tmpa {\putlratom{-40}{-33}{\@memberb}}%central atom
+\or\put(0,0){\Westbond}%
+\or\put(0,0){\SEBOND}%
+\or\put(0,0){\NEBOND}%
+\fi%end of ifcase
+\fi\fi}%
+\end{picture}}%end of macro Rtrigonal
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The command |\ylRtrigonalposition| is used in
+% |\Rtrigonal| to adjust a substitution position.
+% \changes{v1.02}{1998/10/20}{Newly added command:
+% \cs{ylRtrigonalposition}}
+%
+% \begin{macro}{\ylRtrigonalposition}
+% \begin{macrocode}
+\def\ylRtrigonalposition#1{%
+\@@ylswfalse%%%\@reset@ylsw
+\@forsemicol\member:=#1\do{%
+\if@@ylsw\else
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax
+\expandafter\threech@r\@membera{}{}\relax
+\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi
+\if@@ylsw
+\ifcase\@tmpa
+ \or \gdef\@ylii{52}\gdef\@yli{0}\global\@ylswtrue% W subst. on 1
+ \or \gdef\@ylii{-47}\gdef\@yli{40}\global\@ylswtrue% SE subst. on 1
+ \or \gdef\@ylii{-47}\gdef\@yli{-40}\global\@ylswtrue% NE subst. on 1
+\fi%end of ifcase
+\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Left-hand trigonal unit (narrow type)}
+%
+% The macro |\ltrigonal| typesets a compound of trivalency.
+% The following numbering is adopted in this macro.
+% The two left-hand bonds form an angle of 90$^{\circ}$ (narrow type),
+% while the right-hand bond is typeset horizontally.
+%
+% \begin{verbatim}
+% ************************
+% * trigonal unit (left) *
+% ************************
+%
+% 2
+% `
+% `
+% 90 0 --- 1 0 <== the original point
+% /
+% /
+% 3
+% \end{verbatim}
+%
+% This macro has an argument |SUBSLIST| as well as an optional
+% argument |AUXLIST|.
+%
+% \begin{verbatim}
+% \ltrigonal[AUXLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The arugument |AUXLIST| designates an character on the central
+% atom of the formula drawn by this macro. It can be used a plus
+% or minus charge on the center.
+%
+% \begin{verbatim}
+% AUXLIST =
+%
+% {0+} : + charge (or another one chararacter) on the center
+% \end{verbatim}
+%
+% The arugument |SUBLIST| designates a set of substitutients.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 3
+%
+% nT : triple bond at n-atom
+% nD : double bond at n-atom
+% n or nS : single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+%
+% for 0 : cetral atom (e.g. 0==C)
+% \end{verbatim}
+%
+% \begin{verbatim}
+% e.g.
+%
+% \ltrigonal{1==Cl;2==F}
+% \ltrigonal{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylltrigonalposition},
+% \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+%
+% \begin{macro}{\ltrigonal}
+% \begin{macro}{\@ltrigonal}
+% \begin{macrocode}
+\def\ltrigonal{\@ifnextchar[{\@ltrigonal[r}{\@ltrigonal[r]}}
+\def\@ltrigonal#1]#2{%
+\@reset@ylsw%
+\ylltrigonalposition{#2}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\fi
+\if@ylsw
+ \yl@shiftii=\@ylii
+ \yl@shifti=\@yli
+ \advance\yl@shiftii\@@ylii
+ \advance\yl@shifti\@@yli
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+ \begin{picture}(600,600)(-300,-300)%
+ \iforigpt \put(-300,-300){\circle*{50}}%
+ \put(-\noshift,-\noshift){\circle{50}}%
+ \typeout{command `ltrigonal' origin: %
+ (\the\noshift,\the\noshift) ---> (300,300)}\fi%
+\fi
+\@tfor\member:=#1\do{%
+ \expandafter\twoch@@r\member{}{}%
+ \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}%
+\@forsemicol\member:=#2\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifx\@memberb\@yl\else
+\ifcase\@tmpa
+{\putlratom{-40}{-33}{\@memberb}}%central atom
+\or\put(0,0){\Eastbond}%
+\or\put(0,0){\NWbond}%
+\or\put(0,0){\SWbond}%
+\fi%end of ifcase
+\fi\fi}%
+\end{picture}}%end of macro ltrigonal
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The command |\ylltrigonalposition| is used in
+% |\ltrigonal| to adjust a substitution position.
+% \changes{v1.02}{1998/10/20}{Newly added command:
+% \cs{ylltrigonalposition}}
+%
+% \begin{macro}{\ylltrigonalposition}
+% \begin{macrocode}
+\def\ylltrigonalposition#1{%
+\@@ylswfalse%%%\@reset@ylsw
+\@forsemicol\member:=#1\do{%
+\if@@ylsw\else
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax
+\expandafter\threech@r\@membera{}{}\relax
+\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi
+\if@@ylsw
+\ifcase\@tmpa
+ \or \gdef\@ylii{-52}\gdef\@yli{0}\global\@ylswtrue% W subst. on 1
+ \or \gdef\@ylii{50}\gdef\@yli{-47}\global\@ylswtrue% NW subst. on 1
+ \or \gdef\@ylii{50}\gdef\@yli{47}\global\@ylswtrue% SW subst. on 1
+\fi%end of ifcase
+\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Left-hand trigonal unit (broad type)}
+%
+% The macro |\Ltrigonal| typesets a compound of trivalency.
+% The following numbering is adopted in this macro.
+% The two left-hand bonds form an angle of 120$^{\circ}$ (broad type),
+% while the right-hand bond is typeset horizontally.
+% \changes{v1.02}{1998/10/20}{New command: \cs{Ltrigonal}}
+%
+% \begin{verbatim}
+% ************************
+% * trigonal unit (left) *
+% ************************
+%
+% 2
+% `
+% `
+% 120 0 --- 1 0 <== the original point
+% /
+% /
+% 3
+% \end{verbatim}
+%
+% This macro has an argument |SUBSLIST| as well as an optional
+% argument |AUXLIST|.
+%
+% \begin{verbatim}
+% \ltrigonal[AUXLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The arugument |AUXLIST| designates an character on the central
+% atom of the formula drawn by this macro. It can be used a plus
+% or minus charge on the center.
+%
+% \begin{verbatim}
+% AUXLIST =
+%
+% {0+} : + charge (or another one chararacter) on the center
+% \end{verbatim}
+%
+% The arugument |SUBLIST| designates a set of substitutients.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 3
+%
+% nT : triple bond at n-atom
+% nD : double bond at n-atom
+% n or nS : single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+%
+% for 0 : cetral atom (e.g. 0==C)
+% \end{verbatim}
+%
+% \begin{verbatim}
+% e.g.
+%
+% \Ltrigonal{1==Cl;2==F}
+% \Ltrigonal{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylLtrigonalposition},
+% \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+%
+% \begin{macro}{\Ltrigonal}
+% \begin{macro}{\@Ltrigonal}
+% \begin{macrocode}
+\def\Ltrigonal{\@ifnextchar[{\@Ltrigonal[r}{\@Ltrigonal[r]}}
+\def\@Ltrigonal#1]#2{%
+\@reset@ylsw%
+\ylLtrigonalposition{#2}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\fi
+\if@ylsw
+ \yl@shiftii=\@ylii
+ \yl@shifti=\@yli
+ \advance\yl@shiftii\@@ylii
+ \advance\yl@shifti\@@yli
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+ \begin{picture}(600,600)(-300,-300)%
+ \iforigpt \put(-300,-300){\circle*{50}}%
+ \put(-\noshift,-\noshift){\circle{50}}%
+ \typeout{command `Ltrigonal' origin: %
+ (\the\noshift,\the\noshift) ---> (300,300)}\fi%
+\fi
+\@tfor\member:=#1\do{%
+ \expandafter\twoch@@r\member{}{}%
+ \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}%
+\@forsemicol\member:=#2\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifx\@memberb\@yl\else
+\ifcase\@tmpa
+{\putlratom{-40}{-33}{\@memberb}}%central atom
+\or\put(0,0){\Eastbond}%
+\or\put(0,0){\NWBOND}%
+\or\put(0,0){\SWBOND}%
+\fi%end of ifcase
+\fi\fi}%
+\end{picture}}%end of macro Ltrigonal
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The command |\ylLtrigonalposition| is used in
+% |\Ltrigonal| to adjust a substitution position.
+% \changes{v1.02}{1998/10/20}{Newly added command:
+% \cs{ylLtrigonalposition}}
+%
+% \begin{macro}{\ylLtrigonalposition}
+% \begin{macrocode}
+\def\ylLtrigonalposition#1{%
+\@@ylswfalse%%%\@reset@ylsw
+\@forsemicol\member:=#1\do{%
+\if@@ylsw\else
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax
+\expandafter\threech@r\@membera{}{}\relax
+\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi
+\if@@ylsw
+\ifcase\@tmpa
+ \or \gdef\@ylii{-52}\gdef\@yli{0}\global\@ylswtrue% W subst. on 1
+ \or \gdef\@ylii{47}\gdef\@yli{-40}\global\@ylswtrue% NWB subst. on 1
+% \or \gdef\@ylii{47}\gdef\@yli{-66}\global\@ylswtrue% NWB subst. on 1
+ \or \gdef\@ylii{47}\gdef\@yli{40}\global\@ylswtrue% SWB subst. on 1
+% \or \gdef\@ylii{47}\gdef\@yli{66}\global\@ylswtrue% SWB subst. on 1
+\fi%end of ifcase
+\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Upward trigonal unit (narrow type)}
+%
+% The macro |\utrigonal| typesets a compound of trivalency.
+% The two upward bonds form an angle of 90$^{\circ}$ (narrow type),
+% while the downward bond is typeset vertically.
+% The following numbering is adopted in this macro.
+%
+% \begin{verbatim}
+% **********************
+% * trigonal unit (up) *
+% **********************
+%
+% The following numbering is adopted in this macro.
+%
+% 3 . 2
+% ` 90 /
+% ` /
+% 0 0 <== the original point
+% |
+% |
+% 1
+%
+% \end{verbatim}
+%
+% This macro has an argument |SUBSLIST| as well as an optional
+% argument |AUXLIST|.
+%
+% \begin{verbatim}
+% \utrigonal[AUXLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The arugument |AUXLIST| designates an character on the central
+% atom of the formula drawn by this macro. It can be used a plus
+% or minus charge on the center.
+%
+% \begin{verbatim}
+% AUXLIST =
+%
+% {0+}: + charge (or another one chararacter) on the center
+% \end{verbatim}
+%
+% The arugument |SUBLIST| designates a set of substitutients.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 3
+%
+% nT : triple bond at n-atom
+% nD : double bond at n-atom
+% n or nS : single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+%
+% for 0 : cetral atom (e.g. 0==C)
+% \end{verbatim}
+%
+% \begin{verbatim}
+% e.g.
+%
+% \utrigonal{1==Cl;2==F}
+% \utrigonal{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylutrigonalposition},
+% \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+%
+% \begin{macro}{\utrigonal}
+% \begin{macro}{\@utrigonal}
+% \begin{macrocode}
+\def\utrigonal{\@ifnextchar[{\@utrigonal[r}{\@utrigonal[r]}}
+\def\@utrigonal#1]#2{%
+\@reset@ylsw%
+\ylutrigonalposition{#2}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\fi
+\if@ylsw
+ \yl@shiftii=\@ylii
+ \yl@shifti=\@yli
+ \advance\yl@shiftii\@@ylii
+ \advance\yl@shifti\@@yli
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+ \begin{picture}(600,600)(-300,-300)%
+ \iforigpt \put(-300,-300){\circle*{50}}%
+ \put(-\noshift,-\noshift){\circle{50}}%
+ \typeout{command `utrigonal' origin: %
+ (\the\noshift,\the\noshift) ---> (300,300)}\fi%
+\fi
+\@tfor\member:=#1\do{%
+ \expandafter\twoch@@r\member{}{}%
+ \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}%
+\@forsemicol\member:=#2\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifx\@memberb\@yl\else
+\ifcase\@tmpa
+{\putlratom{-40}{-33}{\@memberb}}%central atom
+\or\put(0,0){\Southbond}%
+\or\put(0,0){\NEbond}%
+\or\put(0,0){\NWbond}%
+\fi%end of ifcase
+\fi\fi}%
+\end{picture}}%end of macro utrigonal
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The command |\ylutrigonalposition| is used in
+% |\utrigonal| to adjust a substitution position.
+% \changes{v1.02}{1998/10/20}{Newly added command:
+% \cs{ylutrigonalposition}}
+%
+% \begin{macro}{\ylutrigonalposition}
+% \begin{macrocode}
+\def\ylutrigonalposition#1{%
+\@@ylswfalse%%%\@reset@ylsw
+\@forsemicol\member:=#1\do{%
+\if@@ylsw\else
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax
+\expandafter\threech@r\@membera{}{}\relax
+\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi
+\if@@ylsw
+\ifcase\@tmpa
+ \or \gdef\@ylii{0}\gdef\@yli{52}\global\@ylswtrue%S subst. on 1
+ \or \gdef\@ylii{-40}\gdef\@yli{-47}\global\@ylswtrue% NE subst. on 1
+ \or \gdef\@ylii{50}\gdef\@yli{-47}\global\@ylswtrue% NW subst. on 1
+\fi%end of ifcase
+\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Upward trigonal unit (broad type)}
+%
+% The macro |\Utrigonal| typesets a compound of trivalency.
+% The two upward bonds form an angle of 120$^{\circ}$ (broad type),
+% while the downward bond is typeset vertically.
+% The following numbering is adopted in this macro.
+%
+% \begin{verbatim}
+% **********************
+% * trigonal unit (up) *
+% **********************
+%
+% 3 2
+% ` 120 /
+% ` /
+% 0 0 <== the original point
+% |
+% |
+% 1
+%
+% \end{verbatim}
+%
+% This macro has an argument |SUBSLIST| as well as an optional
+% argument |AUXLIST|.
+%
+% \begin{verbatim}
+% \Utrigonal[AUXLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The arugument |AUXLIST| designates an character on the central
+% atom of the formula drawn by this macro. It can be used a plus
+% or minus charge on the center.
+%
+% \begin{verbatim}
+% AUXLIST =
+%
+% {0+}: + charge (or another one chararacter) on the center
+% \end{verbatim}
+%
+% The arugument |SUBLIST| designates a set of substitutients.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 3
+%
+% nT : triple bond at n-atom
+% nD : double bond at n-atom
+% n or nS : single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+%
+% for 0 : cetral atom (e.g. 0==C)
+% \end{verbatim}
+%
+% \begin{verbatim}
+% e.g.
+%
+% \Utrigonal{1==Cl;2==F}
+% \Utrigonal{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylutrigonalposition},
+% \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+%
+% \begin{macro}{\Utrigonal}
+% \begin{macro}{\@Utrigonal}
+% \begin{macrocode}
+\def\Utrigonal{\@ifnextchar[{\@Utrigonal[r}{\@Utrigonal[r]}}
+\def\@Utrigonal#1]#2{%
+\@reset@ylsw%
+\ylUtrigonalposition{#2}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\fi
+\if@ylsw
+ \yl@shiftii=\@ylii
+ \yl@shifti=\@yli
+ \advance\yl@shiftii\@@ylii
+ \advance\yl@shifti\@@yli
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+ \begin{picture}(600,600)(-300,-300)%
+ \iforigpt \put(-300,-300){\circle*{50}}%
+ \put(-\noshift,-\noshift){\circle{50}}%
+ \typeout{command `Utrigonal' origin: %
+ (\the\noshift,\the\noshift) ---> (300,300)}\fi%
+\fi
+\@tfor\member:=#1\do{%
+ \expandafter\twoch@@r\member{}{}%
+ \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}%
+\@forsemicol\member:=#2\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifx\@memberb\@yl\else
+\ifcase\@tmpa
+{\putlratom{-40}{-33}{\@memberb}}%central atom
+\or\put(0,0){\Southbond}%
+\or\put(0,0){\NEBond}%
+\or\put(0,0){\NWBond}%
+\fi%end of ifcase
+\fi\fi}%
+\end{picture}}%end of macro Utrigonal
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The command |\ylUtrigonalposition| is used in
+% |\Utrigonal| to adjust a substitution position.
+% \changes{v1.02}{1998/10/20}{Newly added command:
+% \cs{ylUtrigonalposition}}
+%
+% \begin{macro}{\ylUtrigonalposition}
+% \begin{macrocode}
+\def\ylUtrigonalposition#1{%
+\@@ylswfalse%%%\@reset@ylsw
+\@forsemicol\member:=#1\do{%
+\if@@ylsw\else
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax
+\expandafter\threech@r\@membera{}{}\relax
+\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi
+\if@@ylsw
+\ifcase\@tmpa
+ \or \gdef\@ylii{0}\gdef\@yli{52}\global\@ylswtrue%S subst. on 1
+ \or \gdef\@ylii{-40}\gdef\@yli{-47}\global\@ylswtrue% NEB subst. on 1
+ \or \gdef\@ylii{66}\gdef\@yli{-47}\global\@ylswtrue% NWB subst. on 1
+\fi%end of ifcase
+\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Downward trigonal unit (narrow type)}
+%
+% The macro |\dtrigonal| typesets a compound of trivalency.
+% The upward bond is typeset vertically.
+% The following numbering is adopted in this macro.
+%
+% \begin{verbatim}
+% ************************
+% * trigonal unit (down) *
+% ************************
+%
+% The following numbering is adopted in this macro.
+%
+% 1
+% |
+% |
+% 0 0 <== the original point
+% / `
+% / 90 `
+% 2 3
+%
+% \end{verbatim}
+%
+% This macro has an argument |SUBSLIST| as well as an optional
+% argument |AUXLIST|.
+%
+% \begin{verbatim}
+% \dtrigonal[AUXLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The arugument |AUXLIST| designates an character on the central
+% atom of the formula drawn by this macro. It can be used a plus
+% or minus charge on the center.
+%
+% \begin{verbatim}
+% AUXLIST =
+%
+% {0+} : + charge (or another one chararacter) on the center
+% \end{verbatim}
+%
+% The arugument |SUBLIST| designates a set of substitutients.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 3
+%
+% nT : triple bond at n-atom
+% nD : double bond at n-atom
+% n or nS : single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+%
+% for 0 : cetral atom (e.g. 0==C)
+% \end{verbatim}
+%
+% \begin{verbatim}
+% e.g.
+%
+% \dtrigonal{1==Cl;2==F}
+% \dtrigonal{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yldtrigonalposition},
+% \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+%
+% \begin{macro}{\dtrigonal}
+% \begin{macro}{\@dtrigonal}
+% \begin{macrocode}
+\def\dtrigonal{\@ifnextchar[{\@dtrigonal[r}{\@dtrigonal[r]}}
+\def\@dtrigonal#1]#2{%
+\@reset@ylsw%
+\yldtrigonalposition{#2}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\fi
+\if@ylsw
+ \yl@shiftii=\@ylii
+ \yl@shifti=\@yli
+ \advance\yl@shiftii\@@ylii
+ \advance\yl@shifti\@@yli
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+ \begin{picture}(600,600)(-300,-300)
+ \iforigpt \put(-300,-300){\circle*{50}}%
+ \put(-\noshift,-\noshift){\circle{50}}%
+ \typeout{command `dtrigonal' origin: %
+ (\the\noshift,\the\noshift) ---> (300,300)}\fi%
+\fi
+\@tfor\member:=#1\do{%
+ \expandafter\twoch@@r\member{}{}%
+ \if\@@tmpa 0\relax {\putratom{37}{50}{\scriptsize\@@tmpb}}\fi}%
+\@forsemicol\member:=#2\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifx\@memberb\@yl\else
+\ifcase\@tmpa
+{\putlratom{-40}{-33}{\@memberb}}%central atom
+\or\put(0,0){\Northbond}%
+\or\put(0,0){\SEbond}%
+\or\put(0,0){\SWbond}%
+\fi%end of ifcase
+\fi\fi}%
+\end{picture}}%end of macro dtrigonal
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The command |\yldtrigonalposition| is used in
+% |\dtrigonal| to adjust a substitution position.
+% \changes{v1.02}{1998/10/20}{Newly added command:
+% \cs{yldtrigonalposition}}
+%
+% \begin{macro}{\yldtrigonalposition}
+% \begin{macrocode}
+\def\yldtrigonalposition#1{%
+\@@ylswfalse%%%\@reset@ylsw
+\@forsemicol\member:=#1\do{%
+\if@@ylsw\else
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax
+\expandafter\threech@r\@membera{}{}\relax
+\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi
+\if@@ylsw
+\ifcase\@tmpa
+ \or \gdef\@ylii{0}\gdef\@yli{-52}\global\@ylswtrue%N subst. on 1
+ \or \gdef\@ylii{-40}\gdef\@yli{47}\global\@ylswtrue% SE subst. on 1
+ \or \gdef\@ylii{50}\gdef\@yli{47}\global\@ylswtrue% SW subst. on 1
+\fi%end of ifcase
+\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Downward trigonal unit (broad type)}
+%
+% The macro |\Dtrigonal| typesets a compound of trivalency.
+% The upward bond is typeset vertically.
+% The following numbering is adopted in this macro.
+%
+% \begin{verbatim}
+% ************************
+% * trigonal unit (down) *
+% ************************
+%
+% The following numbering is adopted in this macro.
+%
+% 1
+% |
+% |
+% 0 0 <== the original point
+% / `
+% / 120 `
+% 2 3
+%
+% \end{verbatim}
+%
+% This macro has an argument |SUBSLIST| as well as an optional
+% argument |AUXLIST|.
+%
+% \begin{verbatim}
+% \Dtrigonal[AUXLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The arugument |AUXLIST| designates an character on the central
+% atom of the formula drawn by this macro. It can be used a plus
+% or minus charge on the center.
+%
+% \begin{verbatim}
+% AUXLIST =
+%
+% {0+}: + charge (or another one chararacter) on the center
+% \end{verbatim}
+%
+% The arugument |SUBLIST| designates a set of substitutients.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 3
+%
+% nT : triple bond at n-atom
+% nD : double bond at n-atom
+% n or nS : single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+%
+% for 0 : cetral atom (e.g. 0==C)
+% \end{verbatim}
+%
+% \begin{verbatim}
+% e.g.
+%
+% \Dtrigonal{1==Cl;2==F}
+% \Dtrigonal{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylDtrigonalposition},
+% \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+%
+% \begin{macro}{\Dtrigonal}
+% \begin{macro}{\@Dtrigonal}
+% \begin{macrocode}
+\def\Dtrigonal{\@ifnextchar[{\@Dtrigonal[r}{\@Dtrigonal[r]}}
+\def\@Dtrigonal#1]#2{%
+\@reset@ylsw%
+\ylDtrigonalposition{#2}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\fi
+\if@ylsw
+ \yl@shiftii=\@ylii
+ \yl@shifti=\@yli
+ \advance\yl@shiftii\@@ylii
+ \advance\yl@shifti\@@yli
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+ \begin{picture}(600,600)(-300,-300)
+ \iforigpt \put(-300,-300){\circle*{50}}%
+ \put(-\noshift,-\noshift){\circle{50}}%
+ \typeout{command `Dtrigonal' origin: %
+ (\the\noshift,\the\noshift) ---> (300,300)}\fi%
+\fi
+\@tfor\member:=#1\do{%
+ \expandafter\twoch@@r\member{}{}%
+ \if\@@tmpa 0\relax {\putratom{37}{50}{\scriptsize\@@tmpb}}\fi}%
+\@forsemicol\member:=#2\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifx\@memberb\@yl\else
+\ifcase\@tmpa
+{\putlratom{-40}{-33}{\@memberb}}%central atom
+\or\put(0,0){\Northbond}%
+\or\put(0,0){\SEBond}%
+\or\put(0,0){\SWBond}%
+\fi%end of ifcase
+\fi\fi}%
+\end{picture}}%end of macro Dtrigonal
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The command |\ylDtrigonalposition| is used in
+% |\Dtrigonal| to adjust a substitution position.
+% \changes{v1.02}{1998/10/20}{Newly added command:
+% \cs{ylDtrigonalposition}}
+%
+% \begin{macro}{\ylDtrigonalposition}
+% \begin{macrocode}
+\def\ylDtrigonalposition#1{%
+\@@ylswfalse%%%\@reset@ylsw
+\@forsemicol\member:=#1\do{%
+\if@@ylsw\else
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax
+\expandafter\threech@r\@membera{}{}\relax
+\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi
+\if@@ylsw
+\ifcase\@tmpa
+ \or \gdef\@ylii{0}\gdef\@yli{-52}\global\@ylswtrue%N subst. on 1
+ \or \gdef\@ylii{-40}\gdef\@yli{47}\global\@ylswtrue% SEB subst. on 1
+ \or \gdef\@ylii{66}\gdef\@yli{47}\global\@ylswtrue% SWB subst. on 1
+\fi%end of ifcase
+\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Ethylene derivative}
+% \subsection{Horizontal ethylene unit (narrow type)}
+%
+% The macro |\ethylene| typesets ethylene derivatives.
+% The following numbering is adopted in this macro.
+%
+% \begin{verbatim}
+% *****************
+% * ethylene unit *
+% *****************
+%
+% 1 4
+% ` /
+% ` /
+% 90 (1)===(2) 90 (1) <== the original point
+% / `
+% / `
+% 2 3
+% \end{verbatim}
+%
+% \begin{verbatim}
+% \ethylene[BONDLIST]{ATOMLIST}{SUBSLIST}
+% \end{verbatim}
+%
+% The arugument |BONDLIST| designates the bond between atom (1) and
+% atom (2) as well as charges on these centeral atoms.
+%
+% \begin{verbatim}
+% BONDLIST: list of inner bonds and charges
+%
+% {n+} : + charge (or another one chararacter) on n-atom
+% d : inner double bond (between (1) and (2))
+% t : inner triple bond (between (1) and (2))
+% \end{verbatim}
+%
+% The arugument |SUBLIST| designates a set of substitutients.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 4
+%
+% nT : triple bond at n-atom
+% nD : double bond at n-atom
+% n or nS : single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% \end{verbatim}
+%
+% The arugument |ATOMLIST| designates the list of central atoms.
+%
+% \begin{verbatim}
+% ATOMLIST: list of central atoms
+% n : atom for n-position (e.g. 1==C)
+% \end{verbatim}
+%
+% \begin{verbatim}
+% e.g.
+%
+% \ethylene{}{1==Cl;2==F}
+% \ethylene{}{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylethylenepositiona},
+% \cs{ylethylenepositionb},
+% \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+%
+% \begin{macro}{\ethylene}
+% \begin{macro}{\@ethylene}
+% \begin{macrocode}
+\def\ethylene{\@ifnextchar[{\@ethylene}{\@ethylene[]}}
+\def\@ethylene[#1]#2#3{%
+\@reset@ylsw%
+\ylethylenepositiona{#3}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\else
+\ylethylenepositionb{#3}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-230}\def\@@yli{0}\fi
+\fi
+\if@ylsw
+ \yl@shiftii=\@ylii
+ \yl@shifti=\@yli
+ \advance\yl@shiftii\@@ylii
+ \advance\yl@shifti\@@yli
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+\begin{picture}(800,600)(-300,-300)
+ \iforigpt \put(-300,-300){\circle*{50}}%
+ \put(-\noshift,-\noshift){\circle{50}}%
+ \typeout{command `ethylene' origin: %
+ (\the\noshift,\the\noshift) ---> (300,300)}\fi%
+\fi
+{\def\aaa{#1}\ifx\aaa\empty%
+ \multiput(42,-13)(0,25){2}{\line(1,0){140}}\fi% double bond
+}%
+\@tfor\member:=#1\do{%
+ \expandafter\twoch@@r\member{}{}%
+ \if\@@tmpa 1\relax {\putratom{-27}{60}{\scriptsize\@@tmpb}}%
+ \else\if\@@tmpa 2\relax {\putratom{203}{60}{\scriptsize\@@tmpb}}%
+ \else\if\@@tmpa d\relax%
+ {\multiput(42,-13)(0,25){2}{\line(1,0){140}}}% double bond
+ \else\if\@@tmpa t\relax%
+ {\multiput(42,-20)(0,20){3}{\line(1,0){140}}}% triple bond right
+ \fi\fi\fi\fi}%
+{\def\aaa{#2}%
+\ifx\aaa\empty%
+\putratom{-40}{-33}{C}%central atom
+\putratom{190}{-33}{C}%central atom
+\else%
+\@forsemicol\member:=#2\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifcase\@tmpa%
+\or\putratom{-40}{-33}{\@memberb}%central atom
+\or\putratom{190}{-33}{\@memberb}%central atom
+\fi\fi}%end of ifcase
+\fi%
+}%
+\@forsemicol\member:=#3\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifx\@memberb\@yl\else
+\ifcase\@tmpa%
+\or\put(0,0){\NWbond}%
+\or\put(0,0){\SWbond}%
+\or\put(230,0){\SEbond}%
+\or\put(230,0){\NEbond}%
+\fi%end of ifcase
+\fi\fi}%
+\end{picture}}%end of macro ethylene
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ethyleneh}
+% \begin{macrocode}
+\let\ethyleneh=\ethylene
+% \end{macrocode}
+% \end{macro}
+%
+% The commands |\ylethylenepositiona| and |\ylethylenepositiona|
+% are used in |\ethylene| to adjust a substitution position.
+% \changes{v1.02}{1998/10/20}{Newly added command:
+% \cs{ylethylenepositiona} and \cs{ylethylenepositionb}}
+%
+% \begin{macro}{\ylethylenepositiona}
+% \begin{macro}{\ylethylenepositionb}
+% \begin{macrocode}
+\def\ylethylenepositiona#1{%
+\@@ylswfalse%%%\@reset@ylsw
+\@forsemicol\member:=#1\do{%
+\if@@ylsw\else
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax
+\expandafter\threech@r\@membera{}{}\relax
+\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi
+\if@@ylsw
+\ifcase\@tmpa
+ \or \gdef\@ylii{50}\gdef\@yli{-47}\global\@ylswtrue% NW subst. on 1
+ \or \gdef\@ylii{50}\gdef\@yli{47}\global\@ylswtrue% SW subst. on 1
+\fi%end of ifcase
+\fi\fi\fi}}%
+\def\ylethylenepositionb#1{%
+\@@ylswfalse%%%\@reset@ylsw
+\@forsemicol\member:=#1\do{%
+\if@@ylsw\else
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax
+\expandafter\threech@r\@membera{}{}\relax
+\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi
+\if@@ylsw
+\ifcase\@tmpa
+ \or%omit
+ \or%omit
+ \or \gdef\@ylii{-40}\gdef\@yli{47}\global\@ylswtrue% SE subst. on 1
+ \or \gdef\@ylii{-40}\gdef\@yli{-47}\global\@ylswtrue% NE subst. on 1
+\fi%end of ifcase
+\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Horizontal ethylene unit (broad type)}
+%
+% The macro |\Ethylene| typesets ethylene derivatives.
+% The following numbering is adopted in this macro.
+% \changes{v1.02}{1998/10/20}{New command: \cs{Ethylene}}
+%
+% \begin{verbatim}
+% *****************
+% * ethylene unit *
+% *****************
+%
+% 1 4
+% ` /
+% ` /
+% 120 (1)===(2) 120 (1) <== the original point
+% / `
+% / `
+% 2 3
+% \end{verbatim}
+%
+% \begin{verbatim}
+% \Ethylene[BONDLIST]{ATOMLIST}{SUBSLIST}
+% \end{verbatim}
+%
+% The arugument |BONDLIST| designates the bond between atom (1) and
+% atom (2) as well as charges on these centeral atoms.
+%
+% \begin{verbatim}
+% BONDLIST: list of inner bonds and charges
+%
+% {n+} : + charge (or another one chararacter) on n-atom
+% d : inner double bond (between (1) and (2))
+% t : inner triple bond (between (1) and (2))
+% \end{verbatim}
+%
+% The arugument |SUBLIST| designates a set of substitutients.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 4
+%
+% nT : triple bond at n-atom
+% nD : double bond at n-atom
+% n or nS : single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% \end{verbatim}
+%
+% The arugument |ATOMLIST| designates the list of central atoms.
+%
+% \begin{verbatim}
+% ATOMLIST: list of central atoms
+% n : atom for n-position (e.g. 1==C)
+% \end{verbatim}
+%
+% \begin{verbatim}
+% e.g.
+%
+% \Ethylene{}{1==Cl;2==F}
+% \Ethylene{}{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylethylenepositiona},
+% \cs{ylethylenepositionb},
+% \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+%
+% \begin{macro}{\Ethylene}
+% \begin{macro}{\@Ethylene}
+% \begin{macrocode}
+\def\Ethylene{\@ifnextchar[{\@ethylene}{\@ethylene[]}}
+\def\@ethylene[#1]#2#3{%
+\@reset@ylsw%
+\ylethylenepositiona{#3}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\else
+\ylethylenepositionb{#3}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-230}\def\@@yli{0}\fi
+\fi
+\if@ylsw
+ \yl@shiftii=\@ylii
+ \yl@shifti=\@yli
+ \advance\yl@shiftii\@@ylii
+ \advance\yl@shifti\@@yli
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+\begin{picture}(800,600)(-300,-300)
+ \iforigpt \put(-300,-300){\circle*{50}}%
+ \put(-\noshift,-\noshift){\circle{50}}%
+ \typeout{command `ethylene' origin: %
+ (\the\noshift,\the\noshift) ---> (300,300)}\fi%
+\fi
+{\def\aaa{#1}\ifx\aaa\empty%
+ \multiput(42,-13)(0,25){2}{\line(1,0){140}}\fi% double bond
+}%
+\@tfor\member:=#1\do{%
+ \expandafter\twoch@@r\member{}{}%
+ \if\@@tmpa 1\relax {\putratom{-27}{60}{\scriptsize\@@tmpb}}%
+ \else\if\@@tmpa 2\relax {\putratom{203}{60}{\scriptsize\@@tmpb}}%
+ \else\if\@@tmpa d\relax%
+ {\multiput(42,-13)(0,25){2}{\line(1,0){140}}}% double bond
+ \else\if\@@tmpa t\relax%
+ {\multiput(42,-20)(0,20){3}{\line(1,0){140}}}% triple bond right
+ \fi\fi\fi\fi}%
+{\def\aaa{#2}%
+\ifx\aaa\empty%
+\putratom{-40}{-33}{C}%central atom
+\putratom{190}{-33}{C}%central atom
+\else%
+\@forsemicol\member:=#2\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifcase\@tmpa%
+\or\putratom{-40}{-33}{\@memberb}%central atom
+\or\putratom{190}{-33}{\@memberb}%central atom
+\fi\fi}%end of ifcase
+\fi%
+}%
+\@forsemicol\member:=#3\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifx\@memberb\@yl\else
+\ifcase\@tmpa%
+\or\put(0,0){\NWBOND}%
+\or\put(0,0){\SWBOND}%
+\or\put(230,0){\SEBOND}%
+\or\put(230,0){\NEBOND}%
+\fi%end of ifcase
+\fi\fi}%
+\end{picture}}%end of macro Ethylene
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\Ethyleneh}
+% \begin{macrocode}
+\let\Ethyleneh=\Ethylene
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Vertical ethylene unit (narrow type)}
+%
+% The macro |\ethylenev| typesets ethylene derivatives in a
+% vatical manner.
+% The following numbering is adopted in this macro.
+%
+% \begin{verbatim}
+% ****************************
+% * ethylene unit (vertical) *
+% ****************************
+%
+% The following numbering is adopted in this macro.
+%
+% 4 3
+% ` 90 /
+% ` /
+% (2)
+% ||
+% ||
+% (1) <== the original point
+% / `
+% / 90 `
+% 1 2
+%
+% \end{verbatim}
+%
+% \begin{verbatim}
+% \ethylenev[BONDLIST]{ATOMLIST}{SUBSLIST}
+% \end{verbatim}
+%
+% \begin{verbatim}
+% BONDLIST: list of inner bonds and charges
+%
+% {n+} : + charge (or another one chararacter) on n-atom
+% d : inner double bond (between (1) and (2))
+% t : inner triple bond (between (1) and (2))
+% \end{verbatim}
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 4
+%
+% nT : triple bond at n-atom
+% nD : double bond at n-atom
+% n or nS : single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% \end{verbatim}
+%
+% \begin{verbatim}
+% ATOMLIST: list of central atoms
+% n : atom for n-position (e.g. 1==C)
+% \end{verbatim}
+%
+% \begin{verbatim}
+% e.g.
+%
+% \ethylenev{1==Cl;2==F}
+% \ethylenev{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylethylenevpositiona},
+% \cs{ylethylenevpositionb},
+% \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+%
+% \begin{macro}{\ethylenev}
+% \begin{macro}{\@ethylenev}
+% \begin{macrocode}
+\def\ethylenev{\@ifnextchar[{\@ethylenev}{\@ethylenev[]}}
+\def\@ethylenev[#1]#2#3{%
+\@reset@ylsw%
+\ylethylenevpositiona{#3}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\else
+\ylethylenevpositionb{#3}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{-230}\fi
+\fi
+\if@ylsw
+ \yl@shiftii=\@ylii
+ \yl@shifti=\@yli
+ \advance\yl@shiftii\@@ylii
+ \advance\yl@shifti\@@yli
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+\begin{picture}(600,800)(-300,-300)
+ \iforigpt \put(-300,-300){\circle*{50}}%
+ \put(-\noshift,-\noshift){\circle{50}}%
+ \typeout{command `ethylenev' origin: %
+ (\the\noshift,\the\noshift) ---> (300,300)}\fi%
+\fi
+\def\aaa{#1}\ifx\aaa\empty%
+ \put(-20,47){\line(0,1){140}}% vertical
+ \put(6,47){\line(0,1){140}}\fi% double bond
+\@tfor\member:=#1\do{%
+ \expandafter\twoch@@r\member{}{}%
+ \if\@@tmpa 1\relax \putratom{37}{0}{\scriptsize\@@tmpb}
+ \else\if\@@tmpa 2\relax \putratom{37}{216}{\scriptsize\@@tmpb}
+ \else\if\@@tmpa d\relax%
+ \put(-13,47){\line(0,1){140}}% vertical
+ \put(13,47){\line(0,1){140}}% double bond
+ \else\if\@@tmpa t\relax%
+ \put(-20,47){\line(0,1){140}}% vertical
+ \put(-0,47){\line(0,1){140}}% triple bond
+ \put(20,47){\line(0,1){140}}%
+ \fi\fi\fi\fi}%
+\def\aaa{#2}%
+\ifx\aaa\empty%
+\putratom{-40}{-33}{C}%central atom
+\putratom{-40}{197}{C}%central atom
+\else%
+\@forsemicol\member:=#2\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifcase\@tmpa%
+\or\putratom{-40}{-33}{\@memberb}%central atom
+\or\putratom{-40}{197}{\@memberb}%central atom
+\fi\fi}%end of ifcase
+\fi%
+\@forsemicol\member:=#3\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifx\@memberb\@yl\else
+\ifcase\@tmpa%
+\or\put(0,0){\SWbond}%
+\or\put(0,0){\SEbond}%
+\or\put(0,230){\NEbond}%
+\or\put(0,230){\NWbond}%
+\fi%end of ifcase
+\fi\fi}%
+\end{picture}}%end of macro ethylenev
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The commands |\ylethylenevpositiona| and |\ylethylenevpositiona|
+% are used in |\ethylenev| to adjust a substitution position.
+% \changes{v1.02}{1998/10/20}{Newly added command:
+% \cs{ylethylenevpositiona} and \cs{ylethylenevpositionb}}
+%
+% \begin{macro}{\ylethylenepositiona}
+% \begin{macro}{\ylethylenepositionb}
+% \begin{macrocode}
+\def\ylethylenevpositiona#1{%
+\@@ylswfalse%%%\@reset@ylsw
+\@forsemicol\member:=#1\do{%
+\if@@ylsw\else
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax
+\expandafter\threech@r\@membera{}{}\relax
+\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi
+\if@@ylsw
+\ifcase\@tmpa
+ \or \gdef\@ylii{50}\gdef\@yli{47}\global\@ylswtrue% SW subst. on 1
+ \or \gdef\@ylii{-40}\gdef\@yli{47}\global\@ylswtrue% SE subst. on 1
+\fi%end of ifcase
+\fi\fi\fi}}%
+\def\ylethylenevpositionb#1{%
+\@@ylswfalse%%%\@reset@ylsw
+\@forsemicol\member:=#1\do{%
+\if@@ylsw\else
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax
+\expandafter\threech@r\@membera{}{}\relax
+\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi
+\if@@ylsw
+\ifcase\@tmpa
+ \or%omit
+ \or%omit
+ \or \gdef\@ylii{-40}\gdef\@yli{-47}\global\@ylswtrue% NE subst. on 1
+ \or \gdef\@ylii{50}\gdef\@yli{-47}\global\@ylswtrue% NW subst. on 1
+\fi%end of ifcase
+\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Vertical ethylene unit (broad type)}
+%
+% The macro |\Ethylenev| typesets ethylene derivatives in a
+% vatical manner.
+% The following numbering is adopted in this macro.
+%
+% \begin{verbatim}
+% ****************************
+% * ethylene unit (vertical) *
+% ****************************
+%
+% 4 3
+% ` 120 /
+% ` /
+% (2)
+% ||
+% ||
+% (1) <== the original point
+% / `
+% / 120 `
+% 1 2
+% \end{verbatim}
+%
+% \begin{verbatim}
+% \Ethylenev[BONDLIST]{ATOMLIST}{SUBSLIST}
+% \end{verbatim}
+%
+% \begin{verbatim}
+% BONDLIST: list of inner bonds and charges
+%
+% {n+} : + charge (or another one chararacter) on n-atom
+% d : inner double bond (between (1) and (2))
+% t : inner triple bond (between (1) and (2))
+% \end{verbatim}
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 4
+%
+% nT : triple bond at n-atom
+% nD : double bond at n-atom
+% n or nS : single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% \end{verbatim}
+%
+% \begin{verbatim}
+% ATOMLIST: list of central atoms
+% n : atom for n-position (e.g. 1==C)
+% \end{verbatim}
+%
+% \begin{verbatim}
+% e.g.
+%
+% \Ethylenev{1==Cl;2==F}
+% \Ethylenev{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylethylenevpositiona},
+% \cs{ylethylenevpositionb},
+% \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+%
+% \begin{macro}{\Ethylenev}
+% \begin{macro}{\@Ethylenev}
+% \begin{macrocode}
+\def\Ethylenev{\@ifnextchar[{\@Ethylenev}{\@Ethylenev[]}}
+\def\@Ethylenev[#1]#2#3{%
+\@reset@ylsw%
+\ylethylenevpositiona{#3}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\else
+\ylethylenevpositionb{#3}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{-230}\fi
+\fi
+\if@ylsw
+ \yl@shiftii=\@ylii
+ \yl@shifti=\@yli
+ \advance\yl@shiftii\@@ylii
+ \advance\yl@shifti\@@yli
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+\begin{picture}(600,800)(-300,-300)
+ \iforigpt \put(-300,-300){\circle*{50}}%
+ \put(-\noshift,-\noshift){\circle{50}}%
+ \typeout{command `Ethylenev' origin: %
+ (\the\noshift,\the\noshift) ---> (300,300)}\fi%
+\fi
+\def\aaa{#1}\ifx\aaa\empty%
+ \put(-20,47){\line(0,1){140}}% vertical
+ \put(6,47){\line(0,1){140}}\fi% double bond
+\@tfor\member:=#1\do{%
+ \expandafter\twoch@@r\member{}{}%
+ \if\@@tmpa 1\relax \putratom{37}{0}{\scriptsize\@@tmpb}
+ \else\if\@@tmpa 2\relax \putratom{37}{216}{\scriptsize\@@tmpb}
+ \else\if\@@tmpa d\relax%
+ \put(-13,47){\line(0,1){140}}% vertical
+ \put(13,47){\line(0,1){140}}% double bond
+ \else\if\@@tmpa t\relax%
+ \put(-20,47){\line(0,1){140}}% vertical
+ \put(-0,47){\line(0,1){140}}% triple bond
+ \put(20,47){\line(0,1){140}}%
+ \fi\fi\fi\fi}%
+\def\aaa{#2}%
+\ifx\aaa\empty%
+\putratom{-40}{-33}{C}%central atom
+\putratom{-40}{197}{C}%central atom
+\else%
+\@forsemicol\member:=#2\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifcase\@tmpa%
+\or\putratom{-40}{-33}{\@memberb}%central atom
+\or\putratom{-40}{197}{\@memberb}%central atom
+\fi\fi}%end of ifcase
+\fi%
+\@forsemicol\member:=#3\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifx\@memberb\@yl\else
+\ifcase\@tmpa%
+\or\put(0,0){\SWBond}%
+\or\put(0,0){\SEBond}%
+\or\put(0,230){\NEBond}%
+\or\put(0,230){\NWBond}%
+\fi%end of ifcase
+\fi\fi}%
+\end{picture}}%end of macro Ethylenev
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \section{Square unit}
+%
+% The macro |\square| typesets a compound of tetravalency.
+% The following numbering is adopted in this macro.
+%
+% \begin{verbatim}
+% ***************
+% * square unit *
+% ***************
+%
+% The following numbering is adopted in this macro.
+%
+% 4 1
+% ` /
+% ` /
+% (0) <== the original point
+% / `
+% / `
+% 3 2
+%
+% \end{verbatim}
+%
+% This macro has an argument |SUBSLIST| as well as an optional
+% argument |AUXLIST|.
+%
+% \begin{verbatim}
+% \square[AUXLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The arugument |AUXLIST| designates an character on the central
+% atom of the formula drawn by this macro. It can be used a plus
+% or minus charge on the center.
+%
+% \begin{verbatim}
+% AUXLIST =
+%
+% {0+}: + charge (or another one chararacter) on the center
+% \end{verbatim}
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 4
+%
+% nT : triple bond at n-atom
+% nD : double bond at n-atom
+% n or nS : single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+%
+% for 0 : cetral atom (e.g. 0==C)
+% \end{verbatim}
+%
+% \begin{verbatim}
+% e.g.
+%
+% \square{0==C;1==Cl;2==F}
+% \square{0==C;1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylsquareposition},
+% \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+%
+% \begin{macro}{\square}
+% \begin{macro}{\@square}
+% \begin{macrocode}
+\def\square{\@ifnextchar[{\@square[r}{\@square[r]}}
+\def\@square#1]#2{%
+\@reset@ylsw%
+\ylsquareposition{#2}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\fi
+\if@ylsw
+ \yl@shiftii=\@ylii
+ \yl@shifti=\@yli
+ \advance\yl@shiftii\@@ylii
+ \advance\yl@shifti\@@yli
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+ \begin{picture}(600,600)(-300,-300)
+ \iforigpt \put(-300,-300){\circle*{50}}%
+ \put(-\noshift,-\noshift){\circle{50}}%
+ \typeout{command `square' origin: %
+ (\the\noshift,\the\noshift) ---> (300,300)}\fi%
+\fi
+\@tfor\member:=#1\do{%
+ \expandafter\twoch@@r\member{}{}%
+ \if\@@tmpa 0\relax {\putratom{37}{0}{\scriptsize\@@tmpb}}\fi}%
+\@forsemicol\member:=#2\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifx\@memberb\@yl\else
+\ifcase\@tmpa {\putlratom{-40}{-33}{\@memberb}}%central atom
+\or\put(0,0){\NEbond}%
+\or\put(0,0){\SEbond}%
+\or\put(0,0){\SWbond}%
+\or\put(0,0){\NWbond}%
+\fi%end of ifcase
+\fi\fi}%
+\end{picture}}%end of macro square
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The commands |\ylsquarepositiona| and |\ylsquarepositiona|
+% are used in |\square| to adjust a substitution position.
+% \changes{v1.02}{1998/10/20}{Newly added command: \cs{ylsquareposition}}
+%
+% \begin{macro}{\ylsquareposition}
+% \begin{macrocode}
+\def\ylsquareposition#1{%
+\@@ylswfalse%%%\@reset@ylsw
+\@forsemicol\member:=#1\do{%
+\if@@ylsw\else
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax
+\expandafter\threech@r\@membera{}{}\relax
+\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi
+\if@@ylsw
+\ifcase\@tmpa
+ \or \gdef\@ylii{-40}\gdef\@yli{-47}\global\@ylswtrue% NE subst. on 1
+ \or \gdef\@ylii{-40}\gdef\@yli{47}\global\@ylswtrue% SE subst. on 1
+ \or \gdef\@ylii{50}\gdef\@yli{47}\global\@ylswtrue% SW subst. on 1
+ \or \gdef\@ylii{50}\gdef\@yli{-47}\global\@ylswtrue% NW subst. on 1
+\fi%end of ifcase
+\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Ball-stick models}
+% \subsection{Tetrahedral unit of stereo type}
+%
+% The macro |\tetrastereo| typesets a tetrahedral unit in a
+% ball-stick fashion.
+% The following numbering is adopted in this macro.
+%
+% \begin{verbatim}
+% *****************************
+% * tetrahedral unit (stereo) *
+% *****************************
+%
+% The following numbering is adopted in this macro.
+%
+% 1
+%
+% |
+% 2 -- 0 -- 4 0 <== the original point
+% |
+%
+% 3
+% \end{verbatim}
+%
+% This macro has an argument |SUBSLIST| as well as an optional
+% argument |AUXLIST|.
+%
+% \begin{verbatim}
+% \tetrastereo[AUXLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The arugument |AUXLIST| designates an character on the central
+% atom of the formula drawn by this macro. It can be used a plus
+% or minus charge on the center.
+%
+% \begin{verbatim}
+% AUXLIST =
+%
+% {0+} : + charge (or another one chararacter) on the center
+% \end{verbatim}
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 4
+%
+% n : single bond at n-atom
+%
+% for 0 : cetral atom (e.g. 0==C)
+% \end{verbatim}
+%
+% \begin{verbatim}
+% e.g.
+%
+% \tetrastereo{1==Cl;2==F}
+% \tetrastereo{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+%
+% \begin{macro}{\tetrastereo}
+% \begin{macro}{\@tetrastero}
+% \begin{macrocode}
+\def\tetrastereo{\@ifnextchar[{\@tetrastereo[r}{\@tetrastereo[r]}}
+\def\@tetrastereo#1]#2{%
+\begin{picture}(600,600)(-300,-300)
+ \iforigpt \put(-300,-300){\circle*{50}}%
+ \put(-\noshift,-\noshift){\circle{50}}%
+ \typeout{command `tetrastero' origin: %
+ (\the\noshift,\the\noshift) ---> (300,300)}\fi%
+\put(0,0){\circle{200}}%
+\@tfor\member:=#1\do{%
+ \expandafter\twoch@@r\member{}{}%
+ \if\@@tmpa 0\relax \putratom{87}{90}{\scriptsize\@@tmpb}\fi}%
+\@forsemicol\member:=#2\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifcase\@tmpa \putlratom{-40}{-33}{\@memberb}%central atom
+\or%
+ \put(0,100){\line(0,1){70}}% behind
+ \putlratom{-30}{180}{\@memberb}% and up
+\or%
+ {\thicklines%
+ \put(-60,10){\line(-5,2){140}}% in front
+ \putlatom{-205}{30}{\@memberb}}% and left
+\or%
+ \put(0,-100){\line(0,-1){90}}% behind and
+ \putlratom{-30}{-260}{\@memberb}% down
+\or%
+ {\thicklines%
+ \put(60,10){\line(5,2){140}}% in front
+ \putratom{210}{30}{\@memberb}}% and right
+\fi\fi}%end of ifcase
+\end{picture}}%end of macro tetrastereo
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Tetrahedral unit of inverse stereo type}
+%
+% The macro |\dtetrastereo| typesets another tetrahedral unit in a
+% ball-stick fashion.
+% The following numbering is adopted in this macro.
+%
+% \begin{verbatim}
+% *****************************
+% * tetrahedral unit (stereo) *
+% *****************************
+%
+% The following numbering is adopted in this macro.
+%
+% 1
+%
+% |
+% 2 -- 0 -- 4 0 <== the original point
+% |
+%
+% 3
+% \end{verbatim}
+%
+% This macro has an argument |SUBSLIST| as well as an optional
+% argument |AUXLIST|.
+%
+% \begin{verbatim}
+% \dtetrastereo[AUXLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The arugument |AUXLIST| designates an character on the central
+% atom of the formula drawn by this macro. It can be used a plus
+% or minus charge on the center.
+%
+% \begin{verbatim}
+% AUXLIST =
+%
+% {0+} : + charge (or another one chararacter) on the center
+% \end{verbatim}
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 4
+%
+% n : single bond at n-atom
+%
+% for 0 : cetral atom (e.g. 0==C)
+% \end{verbatim}
+%
+% \begin{verbatim}
+% e.g.
+%
+% \dtetrastereo{1==Cl;2==F}
+% \dtetrastereo{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+%
+% \begin{macro}{\dtetrastereo}
+% \begin{macro}{\@dtetrastereo}
+% \begin{macrocode}
+\def\dtetrastereo{\@ifnextchar[{\@dtetrastereo[r}{\@dtetrastereo[r]}}
+\def\@dtetrastereo#1]#2{%
+\begin{picture}(600,600)(-300,-300)
+ \iforigpt \put(-300,-300){\circle*{50}}%
+ \put(-\noshift,-\noshift){\circle{50}}%
+ \typeout{command `dtetrastero' origin: %
+ (\the\noshift,\the\noshift) ---> (300,300)}\fi%
+\put(0,0){\circle{200}}%
+\@tfor\member:=#1\do{%
+ \expandafter\twoch@@r\member{}{}%
+ \if\@@tmpa 0\relax \putratom{87}{90}{\scriptsize\@@tmpb}\fi}%
+\@forsemicol\member:=#2\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifcase\@tmpa \putlratom{-40}{-33}{\@memberb}%central atom
+\or%
+ \put(0,100){\line(0,1){70}}% behind
+ \putlratom{-30}{180}{\@memberb}% and up
+\or%
+ \put(-94,-10){\line(-5,-2){108}}% in back
+ \putlatom{-205}{-110}{\@memberb}% and left
+\or%
+ {\thicklines%
+ \put(0,-50){\line(0,-1){150}}% behind and
+ \putlratom{-30}{-260}{\@memberb}}% down
+\or%
+ \put(94,-10){\line(5,-2){108}}% in back
+ \putratom{210}{-110}{\@memberb}% and right
+\fi\fi}%end of ifcase
+\end{picture}}%end of macro dtetrastereo
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Ethane unit of stereo type}
+%
+% The macro |\ethanestereo| typesets an ethane molecule in a
+% ball-stick fashion.
+% The following numbering is adopted in this macro.
+%
+% \begin{verbatim}
+% **************************
+% * ethane unit (vertical) *
+% **************************
+%
+% 5
+% |
+% 6 -- (2) -- 4
+% |
+% |
+% 1 -- (1) -- 3 <== the original point
+% |
+% 2
+% \end{verbatim}
+%
+% This macro has an argument |SUBSLIST| as well as an optional
+% argument |AUXLIST|.
+%
+% \begin{verbatim}
+% \ethanestereo[AUXLIST]{ATOMLIST}{SUBSLIST}
+% \end{verbatim}
+%
+% \begin{verbatim}
+% AUXLIST: list of charges
+%
+% {n+} : + charge (or another one chararacter) on n-atom
+% \end{verbatim}
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 6
+%
+% n : single bond at n-atom
+%
+% \end{verbatim}
+%
+% \begin{verbatim}
+% ATOMLIST: list of central atoms
+%
+% n : atom for n-position (e.g. 1==C)
+%
+% \end{verbatim}
+%
+% \begin{verbatim}
+% e.g.
+%
+% \ethanestereo{1==Cl;2==F}
+% \ethanestereo{1==C;2==C}{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+%
+% \begin{macro}{\ethanestereo}
+% \begin{macro}{\@ethanestereo}
+% \begin{macrocode}
+\def\ethanestereo{\@ifnextchar[{\@ethanestereo}{\@ethanestereo[]}}
+\def\@ethanestereo[#1]#2#3{%
+\begin{picture}(600,800)(-300,-300)
+ \iforigpt \put(-300,-300){\circle*{50}}%
+ \put(-\noshift,-\noshift){\circle{50}}%
+ \typeout{command `ethanestereo' origin: %
+ (\the\noshift,\the\noshift) ---> (300,300)}\fi%
+\put(0,0){\circle{200}}%
+\put(0,270){\circle{200}}%
+\put(0,100){\line(0,1){70}}% central bond
+\@tfor\member:=#1\do{%
+ \expandafter\twoch@@r\member{}{}%
+ \if\@@tmpa 1\relax \putratom{87}{90}{\scriptsize\@@tmpb}
+ \else\if\@@tmpa 2\relax \putratom{87}{360}{\scriptsize\@@tmpb}
+ \fi\fi}%
+\def\aaa{#2}%
+\ifx\aaa\empty\else%
+\@forsemicol\member:=#2\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifcase\@tmpa%
+\or\putratom{-40}{-33}{\@memberb}%central atom
+\or\putratom{-40}{237}{\@memberb}%central atom
+\fi\fi}%end of ifcase
+\fi%
+\@forsemicol\member:=#3\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifcase\@tmpa \putlratom{-40}{-33}{\@memberb}%central atom
+\or%
+ \put(-94,-10){\line(-5,-2){108}}% in back
+ \putlatom{-205}{-110}{\@memberb}% and left
+\or%
+ {\thicklines%
+ \put(0,-50){\line(0,-1){150}}% behind and
+ \putlratom{-30}{-260}{\@memberb}}% down
+\or%
+ \put(94,-10){\line(5,-2){108}}% in back
+ \putratom{210}{-110}{\@memberb}% and right
+% %%%%%%%%
+\or%
+ {\thicklines%
+ \put(60,280){\line(5,2){140}}% in front
+ \putratom{210}{300}{\@memberb}}% and right
+\or%
+ \put(0,370){\line(0,1){70}}% behind
+ \putlratom{-30}{450}{\@memberb}% and up
+\or%
+ {\thicklines%
+ \put(-60,280){\line(-5,2){140}}% in front
+ \putlatom{-205}{300}{\@memberb}}% and left
+\fi\fi}%end of ifcase
+\end{picture}}%end of macro ethanestereo
+%</aliphat>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \Finale
+%
+\endinput
+ \ No newline at end of file