% \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
