summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/xymtex/base
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2013-11-19 00:56:32 +0000
committerKarl Berry <karl@freefriends.org>2013-11-19 00:56:32 +0000
commit0c16ddd29d43c785b867739f9b8fad8885ee548b (patch)
tree7402f2695ae367f7c96dba3224b4f1158900f077 /Master/texmf-dist/source/latex/xymtex/base
parent717e7ac16b923e6683f358eab146a2a96a46d7e4 (diff)
xymtex (now lppl, minus manuals without sources)
git-svn-id: svn://tug.org/texlive/trunk@32182 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/xymtex/base')
-rw-r--r--Master/texmf-dist/source/latex/xymtex/base/aliphat.dtx4767
-rw-r--r--Master/texmf-dist/source/latex/xymtex/base/aliphat.ins61
-rw-r--r--Master/texmf-dist/source/latex/xymtex/base/assurelatexmode.dtx340
-rw-r--r--Master/texmf-dist/source/latex/xymtex/base/assurelatexmode.ins45
-rw-r--r--Master/texmf-dist/source/latex/xymtex/base/bondcolor.dtx738
-rw-r--r--Master/texmf-dist/source/latex/xymtex/base/bondcolor.ins43
-rw-r--r--Master/texmf-dist/source/latex/xymtex/base/carom.dtx4172
-rw-r--r--Master/texmf-dist/source/latex/xymtex/base/carom.ins55
-rw-r--r--Master/texmf-dist/source/latex/xymtex/base/ccycle.dtx3481
-rw-r--r--Master/texmf-dist/source/latex/xymtex/base/ccycle.ins59
-rw-r--r--Master/texmf-dist/source/latex/xymtex/base/chemstr.dtx9531
-rw-r--r--Master/texmf-dist/source/latex/xymtex/base/chemstr.ins62
-rwxr-xr-xMaster/texmf-dist/source/latex/xymtex/base/doins.bat14
-rw-r--r--Master/texmf-dist/source/latex/xymtex/base/fusering.dtx4597
-rw-r--r--Master/texmf-dist/source/latex/xymtex/base/fusering.ins53
-rw-r--r--Master/texmf-dist/source/latex/xymtex/base/hcycle.dtx3897
-rw-r--r--Master/texmf-dist/source/latex/xymtex/base/hcycle.ins55
-rw-r--r--Master/texmf-dist/source/latex/xymtex/base/hetarom.dtx8620
-rw-r--r--Master/texmf-dist/source/latex/xymtex/base/hetarom.ins58
-rw-r--r--Master/texmf-dist/source/latex/xymtex/base/hetaromh.dtx6287
-rw-r--r--Master/texmf-dist/source/latex/xymtex/base/hetaromh.ins58
-rw-r--r--Master/texmf-dist/source/latex/xymtex/base/lewisstruc.dtx1242
-rw-r--r--Master/texmf-dist/source/latex/xymtex/base/lewisstruc.ins48
-rw-r--r--Master/texmf-dist/source/latex/xymtex/base/locant.dtx343
-rw-r--r--Master/texmf-dist/source/latex/xymtex/base/locant.ins52
-rw-r--r--Master/texmf-dist/source/latex/xymtex/base/lowcycle.dtx892
-rw-r--r--Master/texmf-dist/source/latex/xymtex/base/lowcycle.ins53
-rw-r--r--Master/texmf-dist/source/latex/xymtex/base/methylen.dtx6419
-rw-r--r--Master/texmf-dist/source/latex/xymtex/base/methylen.ins57
-rw-r--r--Master/texmf-dist/source/latex/xymtex/base/polymers.dtx750
-rw-r--r--Master/texmf-dist/source/latex/xymtex/base/polymers.ins53
-rw-r--r--Master/texmf-dist/source/latex/xymtex/base/putline.sed10
-rwxr-xr-xMaster/texmf-dist/source/latex/xymtex/base/putput.bat1
-rw-r--r--Master/texmf-dist/source/latex/xymtex/base/sizeredc.dtx351
-rw-r--r--Master/texmf-dist/source/latex/xymtex/base/sizeredc.ins49
-rw-r--r--Master/texmf-dist/source/latex/xymtex/base/steroid.dtx1317
-rw-r--r--Master/texmf-dist/source/latex/xymtex/base/steroid.ins47
-rw-r--r--Master/texmf-dist/source/latex/xymtex/base/xymtex.dtx308
-rw-r--r--Master/texmf-dist/source/latex/xymtex/base/xymtex.ins72
39 files changed, 59057 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/xymtex/base/aliphat.dtx b/Master/texmf-dist/source/latex/xymtex/base/aliphat.dtx
new file mode 100644
index 00000000000..e8c0f377d16
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/aliphat.dtx
@@ -0,0 +1,4767 @@
+% \iffalse meta-comment
+%% File: aliphat.dtx
+%
+% Copyright 1993,1996,1998,2001,2002,2004,2005,2009,2010,2013 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].
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+% The Current Maintainer of this work is Shinsaku Fujita.
+%
+% This work consists of the files aliphat.dtx and aliphat.ins
+% and the derived file aliphat.sty.
+%
+% Please report any bugs, comments, suggestions, etc. to:
+% (Old Address) Shinsaku Fujita,
+% Ashigara Research Laboratories, Fuji Photo Film Co., Ltd.,
+% Minami-Ashigara, Kanagawa-ken, 250-01, Japan.
+% (Present Address) Shinsaku Fujita
+% Shonan Institute of Chemoinformatics and
+% Mathematical Chemistry
+% fujita-sicimc@nifmail.jp
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \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
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{aliphat}
+% \def\versi@ndate{December 25, 1998}
+% \def\versi@nno{ver2.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{aliphat}
+% \def\versi@ndate{June 20, 2001}
+% \def\versi@nno{ver2.01}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{aliphat}
+% \def\versi@ndate{April 30, 2002}
+% \def\versi@nno{ver3.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{aliphat}
+% \def\versi@ndate{May 30, 2002}
+% \def\versi@nno{ver4.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{aliphat}
+% \def\versi@ndate{August 30, 2004}
+% \def\versi@nno{ver4.01}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{aliphat}
+% \def\versi@ndate{December 20, 2004}
+% \def\versi@nno{ver4.02}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{aliphat}
+% \def\versi@ndate{July 20, 2005}
+% \def\versi@nno{ver4.03}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{aliphat}
+% \def\versi@ndate{November 07, 2009}
+% \def\versi@nno{ver4.05}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{aliphat}
+% \def\versi@ndate{October 01, 2010}
+% \def\versi@nno{ver5.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{aliphat}
+% \def\versi@ndate{April 02, 2013}
+% \def\versi@nno{ver5.01b}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \fi
+%
+% \CheckSum{6477}
+%% \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}
+% \changes{v2.01}{2001/06/20}{Size reduction and clipping information}
+% \changes{v2.01}{2001/06/21}{The command \cs{dotorline} is added.}
+% \changes{v3.00}{2002/04/30}{sfpicture environment, etc.}
+% \changes{v4.00}{2002/05/30}{PostScript output and ShiftPicEnv}
+% \changes{v4.01}{2004/08/30}{Variable size of a central atom}
+% \changes{v4.02}{2004/12/20}{Tetrhedral units with wedges bonds}
+% \changes{v4.02a}{2004/12/27}{Bug fix: \cs{square} to \cs{squarecomplex}}
+% \changes{v4.03}{2004/07/20}{Wave bonds}
+% \changes{v4.05}{2009/11/07}{Bug fix: \cs{@tetrahedral} to \cs{@@tetrahedral}}
+% \changes{v5.00}{2010/10/01}{Bond Coloring and the LaTeX Project Public License;
+% \cs{square} renamed into \cs{squareplanar}}
+% \changes{v5.01b}{2013/04/02}{Bug fix: \cs{Nothbond}, \cs{Southbond}, etc}
+% \changes{v5.01}{2013/07/30}{Bug fix: \cs{yltetrahedralposition}, etc}
+% \fi
+%
+% \iffalse
+%<*driver>
+\NeedsTeXFormat{pLaTeX2e}
+% \fi
+\ProvidesFile{aliphat.dtx}[2013/07/30 v5.01 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 \\
+Shonan Institute of Chemoinformatics and Mathematical Chemistry, \\
+Kanagawa, 258-0019, Japan
+% Department of Chemistry and Materials Technology, \\
+% Kyoto Institute of Technology, \\
+% Matsugasaki, Sakyoku, Kyoto, 606-8585 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 5.01}
+\typeout{ -- Released July 20, 2013 by Shinsaku Fujita}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\j@urnalname{aliphat}
+\def\versi@ndate{July 20, 2013}
+\def\versi@nno{ver5.01}
+\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 ---> \squarplanar \@square ---> \@squareplanar
+%
+% <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
+% \ethyleneh
+% \Ethylene \@Ethylene
+% \Ethyleneh
+% \ethylenev \@ethylenev
+% \Ethylenev \@Ethylenev
+%
+% <Macros for stereo-projection>
+%
+% \tetrastereo \@tetrastereo
+% \dtetrastereo \@dtetrastereo
+% \ethanestereo \@ethanestereo
+%
+% <Macros for tetrahedral units with wedged bonds>
+%
+% \rtetrahedralS \RtetrahedralS
+% \ltetrahedralS \LtetrahedralS
+% \utetrahedralS \UtetrahedralS
+% \dtetrahedralS \DtetrahedralS
+% \htetrahedralS
+%
+% <Macros for trigonal bipyramidal intermediates>
+%
+% \utrigpyramid \dtrigpyramid
+% \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{}.
+%
+% \changes{v4.01}{2004/8/30}{Adding \cs{ifno@centeratom}}
+% \begin{macrocode}
+% *************************
+% * input of basic macros *
+% *************************
+\@ifundefined{setsixringv}{\input chemstr.sty\relax}{}
+\unitlength=0.1pt
+\newif\ifno@centeratom \no@centeratomfalse
+% \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}}
+% \changes{v2.01}{2001/06/21}{The command \cs{dotorline} is added.}
+% \changes{v4.00}{2002/06/13}{Bug fix: Northbond etc. A and B inversed}
+% \changes{v4.01}{2004/8/30}{Variable bond length.}
+% \changes{v5.01}{2013/04/02}{Bug fix}
+%
+% \begin{macro}{\Northbond}
+% \begin{macrocode}
+% ********************************
+% * Conventions for bond-setting *
+% ********************************
+\def\Northbond{%
+\@ifnextchar[{\N@rthbond}{\N@rthbond[]}}
+\def\N@rthbond[#1]{%
+\yl@xdiff=40
+\yl@ydiff=-15
+\def\@tempXX{#1}%
+\ifx\@tempXX\empty
+\@tempcnta=100\relax
+\@tempcntb=100\relax
+\else
+\@tempcnta=#1\relax
+\@tempcntb=#1\relax
+\fi
+\ifno@centeratom
+\advance\@tempcnta by52\relax
+\advance\@tempcntb by52\relax
+\fi
+\edef\@tempcntavaluea{\the\@tempcnta}%
+\@tempcnta=\@tempcntb
+\ifno@centeratom\else%%added2013/4/2
+\advance\@tempcnta by52\relax
+\fi
+\edef\@tempcntavalueb{\the\@tempcnta}%
+\@tempcnta=\@tempcntb
+\ifno@centeratom
+\advance\@tempcnta by15\relax%%67-52=15added2013/4/2
+\else
+\advance\@tempcnta by67\relax
+\fi
+\edef\@tempcntavaluec{\the\@tempcnta}%
+%\begin{sfpicture}(100,200)(0,0)
+\begin{sfpicture}(0,0)(0,0)
+\ifno@centeratom%
+ \if\@tmpb D\relax%
+% \Multiput@Direct(-13,0)(26,0){2}{\line(0,1){\@tempcntavaluea}}% double bond up
+ \Multiput@Direct(-13,0)(26,0){2}{\Put@Line(0,0)(0,1){\@tempcntavaluea}}%2010/10/01
+ \else\if\@tmpb T\relax%
+% \Multiput@Direct(-20,0)(20,0){3}{\line(0,1){\@tempcntavaluea}}% triple bond up
+ \Multiput@Direct(-20,0)(20,0){3}{\Put@Line(0,0)(0,1){\@tempcntavaluea}}%2010/10/01
+ \else\if\@tmpb B%(B) beta <-- alpha 2002/6/13
+ {\thicklines\Put@Line(-8,0)(0,1){\@tempcntavaluea}}% single bond (alpha)
+ \else\if\@tmpb A%(A) alpha <-- beta 2002/6/13
+ \dotorline(0,0)(0,1){\@tempcntavaluea}/(0,0)(0,\@tempcntavalueb)%
+ \else\if\@tmpb S%
+ \Put@Line(0,0)(0,1){\@tempcntavaluea}%
+ \else\if\@tmpb U% undefined
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(0,1){\@tempcntavaluea}%
+ }%
+ \else \Put@Line(0,0)(0,1){\@tempcntavaluea}%
+ \fi\fi\fi\fi\fi\fi%
+ \else%
+ \if\@tmpb D\relax%
+% \Multiput@Direct(-13,52)(26,0){2}{\line(0,1){\@tempcntavaluea}}% double bond up
+ \Multiput@Direct(-13,52)(26,0){2}{\Put@Line(0,0)(0,1){\@tempcntavaluea}}%2010/10/01
+ \else\if\@tmpb T\relax%
+% \Multiput@Direct(-20,52)(20,0){3}{\line(0,1){\@tempcntavaluea}}% triple bond up
+ \Multiput@Direct(-20,52)(20,0){3}{\Put@Line(0,0)(0,1){\@tempcntavaluea}}%2010/10/01
+ \else\if\@tmpb B%(B) beta <-- alpha 2002/6/13
+ {\thicklines\Put@Line(-8,52)(0,1){\@tempcntavaluea}}% single bond (alpha)
+ \else\if\@tmpb A%(A) alpha <-- beta 2002/6/13
+ \dotorline(0,52)(0,1){\@tempcntavaluea}/(0,52)(0,\@tempcntavalueb)%
+ \else\if\@tmpb S%
+ \Put@Line(0,52)(0,1){\@tempcntavaluea}%
+ \else\if\@tmpb U% undefined
+ {%
+ \WaveBonds%
+ \Put@Line(0,52)(0,1){\@tempcntavaluea}%
+ }%
+ \else \Put@Line(0,52)(0,1){\@tempcntavaluea}%
+ \fi\fi\fi\fi\fi\fi%
+ \fi%
+ \putlratom{-40}{\@tempcntavaluec}{\@memberb}%==1 upper substituent
+\end{sfpicture}}%End of Northbond
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v4.01}{2004/8/30}{Variable bond length.}
+% \changes{v5.01}{2013/04/02}{Bug fix}
+%
+% \begin{macro}{\Eastbond}
+% \begin{macrocode}
+\def\Eastbond{%
+\@ifnextchar[{\E@stbond}{\E@stbond[]}}
+\def\E@stbond[#1]{%
+\yl@xdiff=-10
+\yl@ydiff=33
+\edef\@tempXX{#1}%
+\ifx\@tempXX\empty
+\@tempcnta=140\relax
+\@tempcntb=140\relax
+\else
+\@tempcnta=#1\relax
+\@tempcntb=#1\relax
+\fi
+\ifno@centeratom%
+\advance\@tempcnta by50\relax
+\advance\@tempcntb by50\relax
+\fi
+\edef\@tempcntavaluea{\the\@tempcnta}%
+\@tempcnta=\@tempcntb
+\ifno@centeratom\else%%added 2013/4/2
+\advance\@tempcnta by63\relax
+\fi
+\edef\@tempcntavalueb{\the\@tempcnta}%
+\@tempcnta=\@tempcntb
+\ifno@centeratom
+\advance\@tempcnta by13\relax%%63-50=13added 2013/4/2
+\else
+\advance\@tempcnta by50\relax
+\fi
+\edef\@tempcntavaluec{\the\@tempcnta}%
+%\begin{sfpicture}(200,200)(0,0)
+\begin{sfpicture}(0,0)(0,0)
+ \ifno@centeratom%
+ \if\@tmpb D\relax%
+% \Multiput@Direct(0,-13)(0,26){2}{\line(1,0){\@tempcntavaluea}}% double bond right
+ \Multiput@Direct(0,-13)(0,26){2}{\Put@Line(0,0)(1,0){\@tempcntavaluea}}%2010/10/01
+ \else\if\@tmpb T\relax%
+% \Multiput@Direct(0,-20)(0,20){3}{\line(1,0){\@tempcntavaluea}}% double bond right
+ \Multiput@Direct(0,-20)(0,20){3}{\Put@Line(0,0)(1,0){\@tempcntavaluea}}%2010/10/01
+ \else\if\@tmpb B%(B) beta <-- alpha 2002/6/13
+ {\thicklines\Put@Line(0,0)(1,0){\@tempcntavaluea}}% single bond (alpha)
+ \else\if\@tmpb A%(A) alpha <-- beta 2002/6/13
+ \dotorline(0,0)(1,0){\@tempcntavaluea}/(0,0)(\@tempcntavaluec,0)%
+ \else\if\@tmpb S%
+ \Put@Line(0,0)(1,0){\@tempcntavaluea}%
+ \else\if\@tmpb U% undefined
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(1,0){\@tempcntavaluea}%
+ }%
+ \else \Put@Line(0,0)(1,0){\@tempcntavaluea}%
+ \fi\fi\fi\fi\fi\fi%
+ \else%
+ \if\@tmpb D\relax%
+% \Multiput@Direct(50,-13)(0,26){2}{\line(1,0){\@tempcntavaluea}}% double bond right
+ \Multiput@Direct(50,-13)(0,26){2}{\Put@Line(0,0)(1,0){\@tempcntavaluea}}%2010/10/01
+ \else\if\@tmpb T\relax%
+% \Multiput@Direct(50,-20)(0,20){3}{\line(1,0){\@tempcntavaluea}}% double bond right
+ \Multiput@Direct(50,-20)(0,20){3}{\Put@Line(0,0)(1,0){\@tempcntavaluea}}%2010/10/01
+ \else\if\@tmpb B%(B) beta <-- alpha 2002/6/13
+ {\thicklines\Put@Line(50,0)(1,0){\@tempcntavaluea}}% single bond (alpha)
+ \else\if\@tmpb A%(A) alpha <-- beta 2002/6/13
+ \dotorline(50,0)(1,0){\@tempcntavaluea}/(50,0)(\@tempcntavaluec,0)%
+ \else\if\@tmpb S%
+ \Put@Line(50,0)(1,0){\@tempcntavaluea}%
+ \else\if\@tmpb U% undefined
+ {%
+ \WaveBonds%
+ \Put@Line(50,0)(1,0){\@tempcntavaluea}%
+ }%
+ \else \Put@Line(50,0)(1,0){\@tempcntavaluea}%
+ \fi\fi\fi\fi\fi\fi%
+ \fi%
+ \putratom{\@tempcntavalueb}{-33}{\@memberb}%==2 right substituent
+\end{sfpicture}}%End of Eastbond
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v4.01}{2004/8/30}{Variable bond length.}
+% \changes{v5.01}{2013/04/02}{Bug fix}
+%
+% \begin{macro}{\Southbond}
+% \begin{macrocode}
+\def\Southbond{%
+\@ifnextchar[{\S@uthbond}{\S@uthbond[]}}
+\def\S@uthbond[#1]{%
+\yl@xdiff=40
+\yl@ydiff=95
+\def\@tempXX{#1}%
+\ifx\@tempXX\empty
+\@tempcnta=100\relax
+\@tempcntb=100\relax
+\else
+\@tempcnta=#1\relax
+\@tempcntb=#1\relax
+\fi
+\ifno@centeratom
+\advance\@tempcnta by48\relax
+\advance\@tempcntb by48\relax
+\fi
+\edef\@tempcntavaluea{\the\@tempcnta}%
+\@tempcnta=-\@tempcntb
+\ifno@centeratom\else%%added2013/4/2
+\advance\@tempcnta by-48\relax
+\fi
+\edef\@tempcntavalueb{\the\@tempcnta}%
+\@tempcnta=-\@tempcntb
+\ifno@centeratom
+\advance\@tempcnta by-90\relax%%143-48=98 (-8) added2013/4/2
+\else
+\advance\@tempcnta by-143\relax
+\fi
+\edef\@tempcntavaluec{\the\@tempcnta}%
+%\begin{sfpicture}(100,300)(0,0)
+\begin{sfpicture}(0,0)(0,0)
+ \ifno@centeratom%
+ \if\@tmpb D\relax%
+% \Multiput@Direct(-13,0)(26,0){2}{\line(0,-1){\@tempcntavaluea}}% double bond down
+ \Multiput@Direct(-13,0)(26,0){2}{\Put@Line(0,0)(0,-1){\@tempcntavaluea}}%2010/10/01
+ \else\if\@tmpb T\relax%
+% \Multiput@Direct(-20,0)(20,0){3}{\line(0,-1){\@tempcntavaluea}}% double bond down
+ \Multiput@Direct(-20,0)(20,0){3}{\Put@Line(0,0)(0,-1){\@tempcntavaluea}}%2010/10/01
+ \else\if\@tmpb B%(B) beta <-- alpha 2002/6/13
+ {\thicklines\Put@Line(-8,0)(0,-1){\@tempcntavaluea}}% single bond (alpha)
+ \else\if\@tmpb A%(A) alpha <-- beta 2002/6/13
+ \dotorline(0,0)(0,-1){\@tempcntavaluea}/(0,0)(0,\@tempcntavalueb)%
+ \else\if\@tmpb S%
+ \Put@Line(0,-0)(0,-1){\@tempcntavaluea}%
+ \else\if\@tmpb U% undefined
+ {%
+ \WaveBonds%
+ \Put@Line(0,-0)(0,-1){\@tempcntavaluea}%
+ }%
+ \else \Put@Line(0,0)(0,-1){\@tempcntavaluea}%
+ \fi\fi\fi\fi\fi\fi%
+ \else%
+ \if\@tmpb D\relax%
+% \Multiput@Direct(-13,-48)(26,0){2}{\line(0,-1){\@tempcntavaluea}}% double bond down
+ \Multiput@Direct(-13,-48)(26,0){2}{\Put@Line(0,0)(0,-1){\@tempcntavaluea}}%2010/10/01
+ \else\if\@tmpb T\relax%
+% \Multiput@Direct(-20,-48)(20,0){3}{\line(0,-1){\@tempcntavaluea}}% double bond down
+ \Multiput@Direct(-20,-48)(20,0){3}{\Put@Line(0,0)(0,-1){\@tempcntavaluea}}%2010/10/01
+ \else\if\@tmpb B%(B) beta <-- alpha 2002/6/13
+ {\thicklines\Put@Line(-8,-48)(0,-1){\@tempcntavaluea}}% single bond (alpha)
+ \else\if\@tmpb A%(A) alpha <-- beta 2002/6/13
+ \dotorline(0,-48)(0,-1){\@tempcntavaluea}/(0,-48)(0,\@tempcntavalueb)%
+ \else\if\@tmpb S%
+ \Put@Line(0,-48)(0,-1){\@tempcntavaluea}%
+ \else\if\@tmpb U% undefined
+ {%
+ \WaveBonds%
+ \Put@Line(0,-48)(0,-1){\@tempcntavaluea}%
+ }%
+ \else \Put@Line(0,-48)(0,-1){\@tempcntavaluea}%
+ \fi\fi\fi\fi\fi\fi%
+ \fi%
+ \putlratom{-40}{\@tempcntavaluec}{\@memberb}%==3 down substituent
+\end{sfpicture}}%End of Southbond
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v4.01}{2004/8/30}{Variable bond length.}
+% \changes{v5.01}{2013/04/02}{Bug fix}
+%
+
+% \begin{macro}{\Westbond}
+% \begin{macrocode}
+\def\Westbond{%
+\@ifnextchar[{\W@stbond}{\W@stbond[]}}
+\def\W@stbond[#1]{%
+\yl@xdiff=10
+\yl@ydiff=33
+\def\@tempXX{#1}%
+\ifx\@tempXX\empty
+\@tempcnta=140\relax
+\@tempcntb=140\relax
+\else
+\@tempcnta=#1\relax
+\@tempcntb=#1\relax
+\fi
+\ifno@centeratom
+\advance\@tempcnta by50\relax
+\advance\@tempcntb by50\relax
+\fi
+\edef\@tempcntavaluea{\the\@tempcnta}%
+\@tempcnta=-\@tempcntb
+\ifno@centeratom\else%%added 2013/4/2
+\advance\@tempcnta by-63\relax
+\fi
+\edef\@tempcntavalueb{\the\@tempcnta}%
+\@tempcnta=\@tempcntb
+\ifno@centeratom
+\advance\@tempcnta by-13\relax%%63-50=13 added 2013/4/2
+\else%
+\advance\@tempcnta by50\relax
+\fi
+\edef\@tempcntavaluec{\the\@tempcnta}%
+%\begin{sfpicture}(100,300)(0,0)
+\begin{sfpicture}(0,0)(0,0)
+ \ifno@centeratom%
+ \if\@tmpb D\relax%
+% \Multiput@Direct(0,-13)(0,26){2}{\line(-1,0){\@tempcntavaluea}}% double bond left
+ \Multiput@Direct(0,-13)(0,26){2}{\Put@Line(0,0)(-1,0){\@tempcntavaluea}}%2010/10/01
+ \else\if\@tmpb T\relax%
+% \Multiput@Direct(0,-20)(0,20){3}{\line(-1,0){\@tempcntavaluea}}% double bond left
+ \Multiput@Direct(0,-20)(0,20){3}{\Put@Line(0,0)(-1,0){\@tempcntavaluea}}%2010/10/01
+ \else\if\@tmpb B%(B) beta <-- alpha 2002/6/13
+ {\thicklines\Put@Line(0,0)(-1,0){\@tempcntavaluea}}% single bond (alpha)
+ \else\if\@tmpb A%(A) alpha <-- beta 2002/6/13
+%% \dotorline(0,0)(-1,0){\@tempcntavaluea}/(\@tempcntavalueb,0)(-40,0)%
+ \dotorline(0,0)(-1,0){\@tempcntavaluea}/(0,0)(\@tempcntavalueb,0)%2013/04/02
+ \else\if\@tmpb S%
+ \Put@Line(0,0)(-1,0){\@tempcntavaluea}%
+ \else\if\@tmpb U% undefine
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(-1,0){\@tempcntavaluea}%
+ }%
+ \else \Put@Line(0,0)(-1,0){\@tempcntavaluea}%
+ \fi\fi\fi\fi\fi\fi%
+ \else%
+ \if\@tmpb D\relax%
+% \Multiput@Direct(-50,-13)(0,26){2}{\line(-1,0){\@tempcntavaluea}}% double bond left
+ \Multiput@Direct(-50,-13)(0,26){2}{\Put@Line(0,0)(-1,0){\@tempcntavaluea}}%2010/10/01
+ \else\if\@tmpb T\relax%
+% \Multiput@Direct(-50,-20)(0,20){3}{\line(-1,0){\@tempcntavaluea}}% double bond left
+ \Multiput@Direct(-50,-20)(0,20){3}{\Put@Line(0,0)(-1,0){\@tempcntavaluea}}%2010/10/01
+ \else\if\@tmpb B%(B) beta <-- alpha 2002/6/13
+ {\thicklines\Put@Line(-50,0)(-1,0){\@tempcntavaluea}}% single bond (alpha)
+ \else\if\@tmpb A%(A) alpha <-- beta 2002/6/13
+%% \dotorline(-50,0)(-1,0){\@tempcntavaluea}/(\@tempcntavalueb,0)(-40,0)%
+% \dotorline(-50,0)(-1,0){\@tempcntavaluea}/(0,0)(\@tempcntavalueb,0)%%2013/04/02
+ \dotorline(-50,0)(-1,0){\@tempcntavaluea}/(-40,0)(\@tempcntavalueb,0)%%2013/06/16
+ \else\if\@tmpb S%
+ \Put@Line(-50,0)(-1,0){\@tempcntavaluea}%
+ \else\if\@tmpb U% undefined
+ {%
+ \WaveBonds%
+ \Put@Line(-50,0)(-1,0){\@tempcntavaluea}%
+ }%
+ \else \Put@Line(-50,0)(-1,0){\@tempcntavaluea}%
+ \fi\fi\fi\fi\fi\fi%
+ \fi%
+ \putlatom{\@tempcntavalueb}{-33}{\@memberb}%==4 left substituent
+\end{sfpicture}}%End of Westbond
+% \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{sfpicture}(100,300)(0,0)
+ \if\@tmpb D\relax%
+ \Put@Line(33,48)(5,3){121}%
+ \Put@Line(47,26)(5,3){121}%northeast double bond
+ \else\if\@tmpb T\relax%
+ \Put@Line(31,52)(5,3){121}%
+ \Put@Line(40,37)(5,3){121}%
+ \Put@Line(49,22)(5,3){121}%northeast triple bond
+% \else\if\@tmpb A%(A) alpha
+ \else\if\@tmpb B%(B) beta
+ {\thicklines\Put@Line(40,47)(5,3){121}}% single bond (alpha)
+% \else\if\@tmpb B%(B) beta
+ \else\if\@tmpb A%(A) alpha
+ \dotorline(40,47)(5,3){121}/(40,47)(161,120)%
+ \else\if\@tmpb S%
+ \Put@Line(40,47)(5,3){121}%
+ \else\if\@tmpb U% undefined
+ {%
+ \WaveBonds%
+ \Put@Line(40,47)(5,3){121}%
+ }%
+ \else \Put@Line(40,47)(5,3){121}%
+ \fi\fi\fi\fi\fi\fi%
+ \putratom{170}{107}{\@memberb}%==2 (northeast substituent)
+\end{sfpicture}}%
+% \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{sfpicture}(100,300)(0,0)
+ \if\@tmpb D\relax%
+ \Put@Line(31,46)(1,1){100}%
+ \Put@Line(49,28)(1,1){100}%northeast double bond
+ \else\if\@tmpb T\relax%
+ \Put@Line(27,50)(1,1){100}%
+ \Put@Line(40,37)(1,1){100}%
+ \Put@Line(53,24)(1,1){100}%northeast triple bond
+ \else\if\@tmpb B%(B) beta
+ {\thicklines\Put@Line(40,47)(1,1){100}}% single bond (alpha)
+ \else\if\@tmpb A%(A) alpha
+ \dotorline(40,47)(1,1){100}/(40,47)(140,147)%
+ \else\if\@tmpb S%
+ \Put@Line(40,47)(1,1){100}%
+ \else\if\@tmpb U% undefined
+ {%
+ \WaveBonds%
+ \Put@Line(40,47)(1,1){100}%
+ }%
+ \else \Put@Line(40,47)(1,1){100}%
+ \fi\fi\fi\fi\fi\fi%
+ \putratom{145}{137}{\@memberb}%==2 (northeast substituent)
+\end{sfpicture}}%
+% \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{sfpicture}(100,300)(0,0)
+ \if\@tmpb D\relax%
+ \Put@Line(33,-48)(5,-3){121}%
+ \Put@Line(47,-26)(5,-3){121}%southeast double bond
+ \else\if\@tmpb T\relax%
+ \Put@Line(31,-52)(5,-3){121}%
+ \Put@Line(40,-37)(5,-3){121}%
+ \Put@Line(49,-22)(5,-3){121}%southeast triple bond
+ \else\if\@tmpb B%(B) beta
+ {\thicklines\Put@Line(40,-47)(5,-3){121}}% single bond (alpha)
+ \else\if\@tmpb A%(A) alpha
+ \dotorline(40,-47)(5,-3){121}/(40,-47)(161,-120)%
+ \else\if\@tmpb S%
+ \Put@Line(40,-47)(5,-3){121}%
+ \else\if\@tmpb U% undefined
+ {%
+ \WaveBonds%
+ \Put@Line(40,-47)(5,-3){121}%
+ }%
+ \else \Put@Line(40,-47)(5,-3){121}%
+ \fi\fi\fi\fi\fi\fi%
+ \putratom{170}{-187}{\@memberb}%==2 (southeast substituent)
+\end{sfpicture}}%
+% \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{sfpicture}(100,300)(0,0)
+ \if\@tmpb D\relax%
+ \Put@Line(31,-46)(1,-1){100}%
+ \Put@Line(49,-28)(1,-1){100}%southeast double bond
+ \else\if\@tmpb T\relax%
+ \Put@Line(27,-50)(1,-1){100}%
+ \Put@Line(40,-37)(1,-1){100}%
+ \Put@Line(53,-24)(1,-1){100}%southeast triple bond
+ \else\if\@tmpb B%(B) beta
+ {\thicklines\Put@Line(53,-47)(1,-1){100}}% single bond (alpha)
+ \else\if\@tmpb A%(A) alpha
+ \dotorline(40,-47)(1,-1){100}/(40,-47)(140,-147)%
+ \else\if\@tmpb S%
+ \Put@Line(40,-47)(1,-1){100}%
+ \else\if\@tmpb U% undefined
+ {%
+ \WaveBonds%
+ \Put@Line(40,-47)(1,-1){100}%
+ }%
+ \else \Put@Line(40,-47)(1,-1){100}%
+ \fi\fi\fi\fi\fi\fi%
+ \putratom{145}{-203}{\@memberb}%==3 (southeast substituent)
+\end{sfpicture}}%
+% \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{sfpicture}(100,300)(0,0)
+\yl@xdiff=9
+\yl@ydiff=13
+ \if\@tmpb D\relax%
+ \Put@Line(-59,48)(-5,3){121}%
+ \Put@Line(-73,26)(-5,3){121}%northwest double bond
+ \else\if\@tmpb T\relax%
+ \Put@Line(-57,52)(-5,3){121}%
+ \Put@Line(-66,37)(-5,3){121}%
+ \Put@Line(-75,22)(-5,3){121}%northwest triple bond
+ \else\if\@tmpb B%(B) beta
+ {\thicklines\Put@Line(-66,47)(-5,3){121}}% single bond (alpha)
+ \else\if\@tmpb A%(A) alpha
+ \dotorline(-66,47)(-5,3){121}/(-66,47)(-187,120)%
+ \else\if\@tmpb S%
+ \Put@Line(-66,47)(-5,3){121}%
+ \else\if\@tmpb U% undefined
+ {%
+ \WaveBonds%
+ \Put@Line(-66,47)(-5,3){121}%
+ }%
+ \else \Put@Line(-66,47)(-5,3){121}%
+ \fi\fi\fi\fi\fi\fi%
+ \putlatom{-196}{107}{\@memberb}%==2 (northwest substituent)
+\end{sfpicture}}%
+% \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{sfpicture}(100,300)(0,0)
+\yl@xdiff=13
+\yl@ydiff=10
+ \if\@tmpb D\relax%
+ \Put@Line(-41,46)(-1,1){100}%
+ \Put@Line(-59,28)(-1,1){100}%northwest double bond
+ \else\if\@tmpb T\relax%
+ \Put@Line(-37,50)(-1,1){100}%
+ \Put@Line(-50,37)(-1,1){100}%
+ \Put@Line(-63,24)(-1,1){100}%northwest triple bond
+ \else\if\@tmpb B%(B) beta
+ {\thicklines\Put@Line(-50,47)(-1,1){100}}% single bond (alpha)
+ \else\if\@tmpb A%(A) alpha
+ \dotorline(-50,47)(-1,1){100}/(-50,47)(-137,147)%
+ \else\if\@tmpb S%
+ \Put@Line(-50,47)(-1,1){100}%
+ \else\if\@tmpb U% undefined
+ {%
+ \WaveBonds%
+ \Put@Line(-50,47)(-1,1){100}%
+ }%
+ \else \Put@Line(-50,47)(-1,1){100}%
+ \fi\fi\fi\fi\fi\fi%
+ \putlatom{-163}{137}{\@memberb}%==2 (northwest substituent)
+\end{sfpicture}}%
+% \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{sfpicture}(100,300)(0,0)
+ \if\@tmpb D\relax%
+ \Put@Line(-59,-48)(-5,-3){121}%
+ \Put@Line(-73,-26)(-5,-3){121}%southwest double bond
+ \else\if\@tmpb T\relax%
+ \Put@Line(-57,-52)(-5,-3){121}%
+ \Put@Line(-66,-37)(-5,-3){121}%
+ \else\if\@tmpb B%(B) beta
+ \Put@Line(-75,-22)(-5,-3){121}%southwest triple bond
+ {\thicklines\Put@Line(-66,-47)(-5,-3){121}}% single bond (alpha)
+ \else\if\@tmpb A%(A) alpha
+ \dotorline(-66,-47)(-5,-3){121}/(-66,-47)(-187,-120)%
+ \else\if\@tmpb S%
+ \Put@Line(-66,-47)(-5,-3){121}%
+ \else\if\@tmpb U% undefined
+ {%
+ \WaveBonds%
+ \Put@Line(-66,-47)(-5,-3){121}%
+ }%
+ \else \Put@Line(-66,-47)(-5,-3){121}%
+ \fi\fi\fi\fi\fi\fi%
+ \putlatom{-196}{-187}{\@memberb}%==2 (southwest substituent)
+\end{sfpicture}}%
+% \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{sfpicture}(100,300)(0,0)
+ \if\@tmpb D\relax%
+ \Put@Line(-41,-46)(-1,-1){100}%
+ \Put@Line(-59,-28)(-1,-1){100}%southwest double bond
+ \else\if\@tmpb T\relax%
+ \Put@Line(-37,-50)(-1,-1){100}%
+ \Put@Line(-50,-37)(-1,-1){100}%
+ \Put@Line(-63,-24)(-1,-1){100}%southwest triple bond
+ \else\if\@tmpb B%(B) beta
+ {\thicklines\Put@Line(-50,-47)(-1,-1){100}}% single bond (alpha)
+ \else\if\@tmpb A%(A) alpha
+ \dotorline(-50,-47)(-1,-1){100}/(-50,-47)(-137,-147)%
+ \else\if\@tmpb S%
+ \Put@Line(-50,-47)(-1,-1){100}%
+ \else\if\@tmpb U% undefined
+ {%
+ \WaveBonds%
+ \Put@Line(-50,-47)(-1,-1){100}%
+ }%
+ \else \Put@Line(-50,-47)(-1,-1){100}%
+ \fi\fi\fi\fi\fi\fi%
+ \putlatom{-163}{-203}{\@memberb}%==3 (southwest substituent)
+\end{sfpicture}}%
+% \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{sfpicture}(100,300)(0,0)
+ \if\@tmpb D\relax%
+ \Put@Line(48,33)(3,5){72}%
+ \Put@Line(26,47)(3,5){72}%northeast double bond
+ \else\if\@tmpb T\relax%
+ \Put@Line(52,31)(3,5){72}%
+ \Put@Line(37,40)(3,5){72}%
+ \Put@Line(22,49)(3,5){72}%northeast triple bond
+ \else\if\@tmpb B%(B) beta
+ {\thicklines\Put@Line(40,47)(3,5){72}}% single bond (alpha)
+ \else\if\@tmpb A%(A) alpha
+ \dotorline(47,40)(3,5){72}/(47,40)(120,161)%
+ \else\if\@tmpb S%
+ \Put@Line(47,40)(3,5){72}%
+ \else\if\@tmpb U% undefined
+ {%
+ \WaveBonds%
+ \Put@Line(47,40)(3,5){72}%
+ }%
+ \else \Put@Line(47,40)(3,5){72}%
+ \fi\fi\fi\fi\fi\fi%
+ \putratom{120}{170}{\@memberb}%==2 (northeast substituent)
+\end{sfpicture}}%
+% \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{sfpicture}(100,300)(0,0)
+ \if\@tmpb D\relax%
+ \Put@Line(48,-33)(3,-5){72}%
+ \Put@Line(26,-47)(3,-5){72}%southeast double bond
+ \else\if\@tmpb T\relax%
+ \Put@Line(52,-31)(3,-5){72}%
+ \Put@Line(37,-40)(3,-5){72}%
+ \Put@Line(22,-49)(3,-5){72}%southeast triple bond
+ \else\if\@tmpb B%(B) beta
+ {\thicklines\Put@Line(47,-40)(3,-5){72}}% single bond (alpha)
+ \else\if\@tmpb A%(A) alpha
+ \dotorline(47,-40)(3,-5){72}/(47,-40)(120,-161)%
+ \else\if\@tmpb S%
+ \Put@Line(47,-40)(3,-5){72}%
+ \else\if\@tmpb U% undefined
+ {%
+ \WaveBonds%
+ \Put@Line(47,-40)(3,-5){72}%
+ }%
+ \else \Put@Line(47,-40)(3,-5){72}%
+ \fi\fi\fi\fi\fi\fi%
+ \putratom{120}{-230}{\@memberb}%==2 (southeast substituent)
+\end{sfpicture}}%
+% \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{sfpicture}(100,300)(0,0)
+ \if\@tmpb D\relax%
+ \Put@Line(-48,33)(-3,5){72}%
+ \Put@Line(-26,47)(-3,5){72}%northwest double bond
+ \else\if\@tmpb T\relax%
+ \Put@Line(-52,31)(-3,5){72}%
+ \Put@Line(-37,40)(-3,5){72}%
+ \Put@Line(-22,49)(-3,5){72}%northwest triple bond
+ \else\if\@tmpb B%(B) beta
+ {\thicklines\Put@Line(-40,47)(-3,5){72}}% single bond (alpha)
+ \else\if\@tmpb A%(A) alpha
+ \dotorline(-47,40)(-3,5){72}/(-47,40)(-120,161)%
+ \else\if\@tmpb S%
+ \Put@Line(-47,40)(-3,5){72}%
+ \else\if\@tmpb U% undefined
+ {%
+ \WaveBonds%
+ \Put@Line(-47,40)(-3,5){72}%
+ }%
+ \else \Put@Line(-47,40)(-3,5){72}%
+ \fi\fi\fi\fi\fi\fi%
+ \putlatom{-120}{170}{\@memberb}%==2 (northwest substituent)
+\end{sfpicture}}%
+% \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{sfpicture}(100,300)(0,0)
+ \if\@tmpb D\relax%
+ \Put@Line(-48,-33)(-3,-5){72}%
+ \Put@Line(-26,-47)(-3,-5){72}%southwest double bond
+ \else\if\@tmpb T\relax%
+ \Put@Line(-52,-31)(-3,-5){72}%
+ \Put@Line(-37,-40)(-3,-5){72}%
+ \Put@Line(-22,-49)(-3,-5){72}%southwest triple bond
+ \else\if\@tmpb B%(B) beta
+ {\thicklines\Put@Line(-47,-40)(-3,-5){72}}% single bond (alpha)
+ \else\if\@tmpb A%(A) alpha
+ \dotorline(-47,-40)(-3,-5){72}/(-47,-40)(-120,-161)%
+ \else\if\@tmpb S%
+ \Put@Line(-47,-40)(-3,-5){72}%
+ \else\if\@tmpb U% undefined
+ {%
+ \WaveBonds%
+ \Put@Line(-47,-40)(-3,-5){72}%
+ }%
+ \else \Put@Line(-47,-40)(-3,-5){72}%
+ \fi\fi\fi\fi\fi\fi%
+ \putlatom{-120}{-230}{\@memberb}%==2 (southwest substituent)
+\end{sfpicture}}%
+% \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}<L1,L2,L3,L4>
+% \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}
+%
+%
+% The arguments |Ln| (n = 1, 2, 3, 4) represents the bond length
+% of the bond 0--n (n = 1, 2, 3, 4). This is used to realize variable
+% bond lengths. The vacant for the |Ln| depicts a bond of the standard
+% bond length.
+% \changes{v4.01}{2004/8/30}{Variable bond length.}
+%
+%
+% \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}}
+%
+% \changes{v4.01}{2004/8/30}{Variable sized central atoms}
+% \changes{v4.05}{2009/11/07}{bug fix: @tetrahedral to @@tetrahedral}
+% \changes{v5.00}{2010/10/01}{for bond coloring}
+%
+% \begin{macro}{\tetrahedral}
+% \begin{macro}{\@tetrahedral}
+% \begin{macrocode}
+\def\tetrahedral{\@ifnextchar[{\@tetrahedral[r}{\@tetrahedral[r]}}
+\def\@tetrahedral#1]#2{%
+\@ifnextchar<{\@@tetrahedral#1]{#2}}{\@@tetrahedral#1]{#2}<,,,>}}%bug @ added 2009/11/07
+\def\@@tetrahedral#1]#2<#3,#4,#5,#6>{%
+\@reset@ylsw%
+\West@bondfalse
+\East@bondfalse
+\centralatomcheck{#2}%
+\yltetrahedralposition{#2}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(600,600)(-300,-300){tetrahedral}%2002/4/30 by S. Fujita
+(300,300)%
+\@tfor\member:=#1\do{%
+ \expandafter\twoch@@r\member{}{}%
+ \if\@@tmpa 0\relax {\putratom{47}{50}{\scriptsize\@@tmpb}}\fi}%
+%%%%%%%%%%%%%%%%%%%%%%
+%setting central atom%
+%%%%%%%%%%%%%%%%%%%%%%
+\@tempdima=0pt
+\@forsemicol\member:=#2\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifx\@memberb\@yl\else
+\ifcase\@tmpa%central atom
+\setbox9=\hbox{\@memberb}%
+\ifdim\wd9<0.72em
+\@tempdima=0.72em
+{\putlratom{-40}{-33}{\hbox to.72em{\hss\@memberb\hss}}}%
+\else
+\ifWest@bond
+\@tempdima=\wd9
+{\putlratom{-40}{-33}{\hbox to.72em{\hss\@memberb}}}%central atom
+%%%\global\West@bondfalse
+\else
+\@tempdima=\wd9
+{\putlratom{-40}{-33}{\hbox to.72em{\@memberb\hss}}}%central atom
+\fi\fi
+\else%%no action
+\fi%end of ifcase%
+\fi\fi}%
+%%%%%%%%%%%%%%%%%%%%%%
+%%setting four bonds%%
+%%%%%%%%%%%%%%%%%%%%%%
+\@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
+\ifWest@bond
+\setBScolor{\Put@Direct(0,0){\kern-\@tempdima\kern0.72em\Northbond[#3]}}%
+%\Put@Direct(0,0){\kern-\@tempdima\kern0.72em\Northbond[#3]}%
+\else
+\setBScolor{\Put@Direct(0,0){\Northbond[#3]}}%
+%\Put@Direct(0,0){\Northbond[#3]}%
+\fi
+\or{%
+\ifWest@bond
+\setBScolor{\Put@Direct(0,0){\kern-\@tempdima\kern0.72em\Westbond[#4]}}%
+%\Put@Direct(0,0){\kern-\@tempdima\kern0.72em\Westbond[#4]}%
+\else
+\setBScolor{\Put@Direct(0,0){\Westbond[#4]}}%
+%\Put@Direct(0,0){\Westbond[#4]}%
+\fi
+}%
+\or
+\ifWest@bond
+\setBScolor{\Put@Direct(0,0){\kern-\@tempdima\kern0.72em\Southbond[#5]}}%
+%\Put@Direct(0,0){\kern-\@tempdima\kern0.72em\Southbond[#5]}%
+\else
+\setBScolor{\Put@Direct(0,0){\Southbond[#5]}}%
+%\Put@Direct(0,0){\Southbond[#5]}%
+\fi
+\or{%
+\ifno@centeratom%
+\setBScolor{\Put@Direct(0,0){\Eastbond[#6]}}%
+%\Put@Direct(0,0){\Eastbond[#6]}%
+\else%
+%\advance\@tempdima by-0.72em
+%\Put@Direct(0,0){\kern\@tempdima\Eastbond[#6]}%
+\setBScolor{\Put@Direct(0,0){\kern\@tempdima\kern-0.72em\Eastbond[#6]}}%
+%\Put@Direct(0,0){\kern\@tempdima\kern-0.72em\Eastbond[#6]}%
+\fi}%
+\fi%end of ifcase
+\fi\fi}%
+\end{ShiftPicEnvB}%
+\West@bondfalse
+\East@bondfalse
+}%end of macro tetrahedral
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \changes{v4.01}{2004/8/30}{Newly added macro:
+% \cs{centralatomcheck}}
+%
+% \begin{macro}{\centralatomcheck}
+% \begin{macrocode}
+\def\centralatomcheck#1{%
+\no@centeratomtrue%
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax
+\expandafter\threech@r\@membera{}{}\relax
+\ifcase\@tmpa\relax%
+\no@centeratomfalse%
+\else%no action
+\fi\fi%
+}}
+% \end{macrocode}
+% \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}}
+% \changes{v4.01}{2004/8/30}{Newly added switches:
+% \cs{ifEast@bond} and \cs{ifWest@bond}}
+% \changes{v5.01}{2013/7/30}{Bug fix}
+%
+% \begin{macro}{\yltetrahedralposition}
+% \begin{macrocode}
+\newif\ifEast@bond
+\newif\ifWest@bond
+\def\yltetrahedralposition#1{%
+\@@ylswfalse%%%\@reset@ylsw
+\reset@@yl%%2013/07/30bug fix
+\West@bondfalse
+\East@bondfalse
+\@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%
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%N subst. on 1
+ \else%
+ \gdef\@ylii{0}\gdef\@yli{-52}\global\@ylswtrue%N subst. on 1
+ \fi%
+ \or%
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%
+ \else%
+ \gdef\@ylii{52}\gdef\@yli{0}\global\@ylswtrue%
+ \fi%
+ \East@bondtrue%W subst. on 1
+ \or%
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%S subst. on 1
+ \else%
+ \gdef\@ylii{0}\gdef\@yli{52}\global\@ylswtrue%S subst. on 1
+ \fi%
+ \or%
+ \ifno@centeratom%
+% \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%??????
+ \gdef\@ylii{-72}\gdef\@yli{0}\global\@ylswtrue%??????
+ \else%
+ \gdef\@ylii{-52}\gdef\@yli{0}\global\@ylswtrue%
+ \fi%
+ \West@bondtrue%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}}
+% \changes{v5.00}{2010/10/01}{for bond coloring}
+%
+% \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
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(600,400)(-300,-200){\divalenth}%2002/4/30 by S. Fujita
+(300,200)%
+{\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\setBScolor{\Put@Direct(0,0){\Westbond}}%
+%\Put@Direct(0,0){\Westbond}%
+\or\setBScolor{\Put@Direct(\the\@tempcnta,0){\Eastbond}}%
+%\Put@Direct(\the\@tempcnta,0){\Eastbond}%
+\fi%end of ifcase
+\fi\fi}%
+\end{ShiftPicEnvB}%
+}%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}}
+% \changes{v5.00}{2010/10/01}{for bond coloring}
+%
+% \begin{macro}{\rtrigonal}
+% \begin{macro}{\@rtrigonal}
+% \begin{macrocode}
+\def\rtrigonal{\@ifnextchar[{\@rtrigonal[r}{\@rtrigonal[r]}}
+\def\@rtrigonal#1]#2{%
+\begingroup
+\@reset@ylsw%
+\West@bondfalse
+\East@bondfalse
+\ylrtrigonalposition{#2}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(600,600)(-300,-300){rtrigonal}%2002/4/30 by S. Fujita
+(300,300)%
+\@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\setBScolor{\Put@Direct(0,0){\Westbond}}%
+%\Put@Direct(0,0){\Westbond}%
+\or\setBScolor{\Put@Direct(0,0){\SEbond}}%
+%\Put@Direct(0,0){\SEbond}%
+\or\setBScolor{\Put@Direct(0,0){\NEbond}}%
+%\Put@Direct(0,0){\NEbond}%
+\fi%end of ifcase
+\fi\fi}%
+\end{ShiftPicEnvB}%
+\endgroup}%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}}
+% \changes{v5.00}{2010/10/01}{for bond coloring}
+%
+% \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{%
+\begingroup
+\@reset@ylsw%
+\West@bondfalse
+\East@bondfalse
+\ylRtrigonalposition{#2}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(600,600)(-300,-300){Rtrigonal}%2002/4/30 by S. Fujita
+(300,300)%
+\@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\setBScolor{\Put@Direct(0,0){\Westbond}}%
+%\Put@Direct(0,0){\Westbond}%
+\or\setBScolor{\Put@Direct(0,0){\SEBOND}}%
+%\Put@Direct(0,0){\SEBOND}%
+\or\setBScolor{\Put@Direct(0,0){\NEBOND}}%
+%\Put@Direct(0,0){\NEBOND}%
+\fi%end of ifcase
+\fi\fi}%
+\end{ShiftPicEnvB}%
+\endgroup}%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.
+% \changes{v5.00}{2010/10/01}{for bond coloring}
+%
+% \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{0==C;1==Cl;2==F;3==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}}
+% \changes{v4.01}{2004/8/30}{Variable sized central atoms}
+% \changes{v5.00}{2010/10/01}{for bond coloring}
+%
+% \begin{macro}{\ltrigonal}
+% \begin{macro}{\@ltrigonal}
+% \begin{macrocode}
+\def\ltrigonal{\@ifnextchar[{\@ltrigonal[r}{\@ltrigonal[r]}}
+\def\@ltrigonal#1]#2{%
+\begingroup
+\@reset@ylsw%
+\West@bondfalse
+\East@bondfalse
+\ylltrigonalposition{#2}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(600,600)(-300,-300){ltrigonal}%2002/4/30 by S. Fujita
+(300,300)%
+\@tfor\member:=#1\do{%
+ \expandafter\twoch@@r\member{}{}%
+ \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}%
+\@tempdima=0pt
+\@forsemicol\member:=#2\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifx\@memberb\@yl\else
+\ifcase\@tmpa
+\setbox9=\hbox{\@memberb}%
+\ifdim\wd9<0.72em
+\@tempdima=0.72em
+{\putlratom{-40}{-33}{\hbox to.72em{\hss\@memberb\hss}}}%central atom
+\else
+\ifWest@bond
+\@tempdima=\wd9
+{\putlratom{-40}{-33}{\hbox to.72em{\hss\@memberb}}}%central atom
+\else
+\@tempdima=\wd9
+{\putlratom{-40}{-33}{\hbox to.72em{\@memberb\hss}}}%central atom
+\fi\fi
+\else%%no action
+\fi%end of ifcase
+\fi\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
+\or{%
+\advance\@tempdima by-0.72em
+\setBScolor{\Put@Direct(0,0){\kern\@tempdima\Eastbond}}}%
+%\Put@Direct(0,0){\kern\@tempdima\Eastbond}}%
+\or{%
+\ifWest@bond
+\setBScolor{\Put@Direct(0,0){\kern-\@tempdima\kern0.72em\NWbond}}%
+%\Put@Direct(0,0){\kern-\@tempdima\kern0.72em\NWbond}%
+\else
+\setBScolor{\Put@Direct(0,0){\NWbond}}%
+%\Put@Direct(0,0){\NWbond}%
+\fi
+}%
+\or{%
+\ifWest@bond
+\setBScolor{\Put@Direct(0,0){\kern-\@tempdima\kern0.72em\SWbond}}%
+%\Put@Direct(0,0){\kern-\@tempdima\kern0.72em\SWbond}%
+\else
+\setBScolor{\Put@Direct(0,0){\SWbond}}%
+%\Put@Direct(0,0){\SWbond}%
+\fi
+}%
+\fi%end of ifcase
+\fi\fi}%
+\end{ShiftPicEnvB}%
+\West@bondfalse
+\East@bondfalse
+\endgroup}%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}}
+% \changes{v4.01}{2004/8/30}{Newly added switch:
+% \cs{ifWest@bond}}
+%
+% \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% E subst. on 1
+ \West@bondtrue%
+ \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}}
+% \changes{v4.01}{2004/8/30}{Variable sized central atoms}
+% \changes{v4.01}{2004/8/30}{Newly added switch:
+% \cs{ifWest@bond}}
+% \changes{v5.00}{2010/10/01}{for bond coloring}
+%
+% \begin{macro}{\Ltrigonal}
+% \begin{macro}{\@Ltrigonal}
+% \begin{macrocode}
+\def\Ltrigonal{\@ifnextchar[{\@Ltrigonal[r}{\@Ltrigonal[r]}}
+\def\@Ltrigonal#1]#2{%
+\begingroup
+\@reset@ylsw%
+\West@bondfalse
+\East@bondfalse
+\ylLtrigonalposition{#2}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(600,600)(-300,-300){Ltrigonal}%2002/4/30 by S. Fujita
+(300,300)%
+\@tfor\member:=#1\do{%
+ \expandafter\twoch@@r\member{}{}%
+ \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}%
+\@tempdima=0pt
+\@forsemicol\member:=#2\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifx\@memberb\@yl\else
+\ifcase\@tmpa
+\setbox9=\hbox{\@memberb}%
+\ifdim\wd9<0.72em
+\@tempdima=0.72em
+{\putlratom{-40}{-33}{\hbox to.72em{\hss\@memberb\hss}}}%central atom
+\else
+\ifWest@bond
+\@tempdima=\wd9
+{\putlratom{-40}{-33}{\hbox to.72em{\hss\@memberb}}}%central atom
+%%%%\global\West@bondfalse
+\else
+\@tempdima=\wd9
+{\putlratom{-40}{-33}{\hbox to.72em{\@memberb\hss}}}%central atom
+\fi\fi
+\else%%no action
+\fi%end of ifcase
+\fi\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
+\or{%
+\advance\@tempdima by-0.72em
+\setBScolor{\Put@Direct(0,0){\kern\@tempdima\Eastbond}}}%
+%\Put@Direct(0,0){\kern\@tempdima\Eastbond}}%
+\or{%
+\ifWest@bond
+\setBScolor{\Put@Direct(0,0){\kern-\@tempdima\kern0.72em\NWBOND}}%
+%\Put@Direct(0,0){\kern-\@tempdima\kern0.72em\NWBOND}%
+\else
+\setBScolor{\Put@Direct(0,0){\NWBOND}}%
+%\Put@Direct(0,0){\NWBOND}%
+\fi
+}%
+\or{%
+\ifWest@bond
+\setBScolor{\Put@Direct(0,0){\kern-\@tempdima\kern0.72em\SWBOND}}%
+%\Put@Direct(0,0){\kern-\@tempdima\kern0.72em\SWBOND}%
+\else
+\setBScolor{\Put@Direct(0,0){\SWBOND}}%
+%\Put@Direct(0,0){\SWBOND}%
+\fi
+}%
+\fi%end of ifcase
+\fi\fi}%
+\end{ShiftPicEnvB}%
+\West@bondfalse
+\East@bondfalse
+\endgroup}%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% E subst. on 1
+ \West@bondtrue%
+ \or \gdef\@ylii{47}\gdef\@yli{-40}\global\@ylswtrue% NWB subst. on 1
+ \or \gdef\@ylii{47}\gdef\@yli{40}\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}}
+% \changes{v5.00}{2010/10/01}{for bond coloring}
+%
+% \begin{macro}{\utrigonal}
+% \begin{macro}{\@utrigonal}
+% \begin{macrocode}
+\def\utrigonal{\@ifnextchar[{\@utrigonal[r}{\@utrigonal[r]}}
+\def\@utrigonal#1]#2{%
+\begingroup
+\@reset@ylsw%
+\centralatomcheck{#2}%2013/04/01 added
+\ylutrigonalposition{#2}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(600,600)(-300,-300){utrigonal}%2002/4/30 by S. Fujita
+(300,300)%
+\@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\setBScolor{\Put@Direct(0,0){\Southbond}}%
+%\Put@Direct(0,0){\Southbond}%
+\or\setBScolor{\Put@Direct(0,0){\NEbond}}%
+%\Put@Direct(0,0){\NEbond}%
+\or\setBScolor{\Put@Direct(0,0){\NWbond}}%
+%\Put@Direct(0,0){\NWbond}%
+\fi%end of ifcase
+\fi\fi}%
+\end{ShiftPicEnvB}%
+\endgroup}%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}}
+% \changes{v5.00}{2010/10/01}{for bond coloring}
+%
+% \begin{macro}{\Utrigonal}
+% \begin{macro}{\@Utrigonal}
+% \begin{macrocode}
+\def\Utrigonal{\@ifnextchar[{\@Utrigonal[r}{\@Utrigonal[r]}}
+\def\@Utrigonal#1]#2{%
+\begingroup
+\@reset@ylsw%
+\ylUtrigonalposition{#2}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(600,600)(-300,-300){Utrigonal}%2002/4/30 by S. Fujita
+(300,300)%
+\@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\setBScolor{\Put@Direct(0,0){\Southbond}}%
+%\Put@Direct(0,0){\Southbond}%
+\or\setBScolor{\Put@Direct(0,0){\NEBond}}%
+%\Put@Direct(0,0){\NEBond}%
+\or\setBScolor{\Put@Direct(0,0){\NWBond}}%
+%\Put@Direct(0,0){\NWBond}%
+\fi%end of ifcase
+\fi\fi}%
+\end{ShiftPicEnvB}%
+\endgroup}%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}}
+% \changes{v5.00}{2010/10/01}{for bond coloring}
+%
+% \begin{macro}{\dtrigonal}
+% \begin{macro}{\@dtrigonal}
+% \begin{macrocode}
+\def\dtrigonal{\@ifnextchar[{\@dtrigonal[r}{\@dtrigonal[r]}}
+\def\@dtrigonal#1]#2{%
+\begingroup
+\@reset@ylsw%
+\yldtrigonalposition{#2}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(600,600)(-300,-300){dtrigonal}%2002/4/30 by S. Fujita
+(300,300)%
+\@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\setBScolor{\Put@Direct(0,0){\Northbond}}%
+%\Put@Direct(0,0){\Northbond}%
+\or\setBScolor{\Put@Direct(0,0){\SEbond}}%
+%\Put@Direct(0,0){\SEbond}%
+\or\setBScolor{\Put@Direct(0,0){\SWbond}}%
+%\Put@Direct(0,0){\SWbond}%
+\fi%end of ifcase
+\fi\fi}%
+\end{ShiftPicEnvB}%
+\endgroup}%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}}
+% \changes{v5.00}{2010/10/01}{for bond coloring}
+%
+% \begin{macro}{\Dtrigonal}
+% \begin{macro}{\@Dtrigonal}
+% \begin{macrocode}
+\def\Dtrigonal{\@ifnextchar[{\@Dtrigonal[r}{\@Dtrigonal[r]}}
+\def\@Dtrigonal#1]#2{%
+\begingroup
+\@reset@ylsw%
+\ylDtrigonalposition{#2}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(600,600)(-300,-300){Dtrigonal}%2002/4/30 by S. Fujita
+(300,300)%
+\@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\setBScolor{\Put@Direct(0,0){\Northbond}}%
+%\Put@Direct(0,0){\Northbond}%
+\or\setBScolor{\Put@Direct(0,0){\SEBond}}%
+%\Put@Direct(0,0){\SEBond}%
+\or\setBScolor{\Put@Direct(0,0){\SWBond}}%
+%\Put@Direct(0,0){\SWBond}%
+\fi%end of ifcase
+\fi\fi}%
+\end{ShiftPicEnvB}%
+\endgroup}%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}}
+% \changes{v5.00}{2010/10/01}{for bond coloring}
+%
+% \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
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(800,600)(-300,-300){ethylene}%2002/4/30 by S. Fujita
+(300,300)%
+{\def\aaa{#1}\ifx\aaa\empty%
+% \Multiput@Direct(42,-13)(0,25){2}{\line(1,0){140}}\fi% double bond
+ \Multiput@Direct(42,-13)(0,25){2}{\Put@Line(0,0)(1,0){140}}\fi%2010/10/01
+}%
+\@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@Direct(42,-13)(0,25){2}{\line(1,0){140}}}% double bond
+ {\Multiput@Direct(42,-13)(0,25){2}{\Put@Line(0,0)(1,0){140}}}%2010/10/01
+ \else\if\@@tmpa t\relax%
+% {\Multiput@Direct(42,-20)(0,20){3}{\line(1,0){140}}}% triple bond right
+ {\Multiput@Direct(42,-20)(0,20){3}{\Put@Line(0,0)(1,0){140}}}%2010/10/01
+ \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\setBScolor{\Put@Direct(0,0){\NWbond}}%
+%\Put@Direct(0,0){\NWbond}%
+\or\setBScolor{\Put@Direct(0,0){\SWbond}}%
+%\Put@Direct(0,0){\SWbond}%
+\or\setBScolor{\Put@Direct(230,0){\SEbond}}%
+%\Put@Direct(230,0){\SEbond}%
+\or\setBScolor{\Put@Direct(230,0){\NEbond}}%
+%\Put@Direct(230,0){\NEbond}%
+\fi%end of ifcase
+\fi\fi}%
+\end{ShiftPicEnvB}%
+}%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}}
+% \changes{v5.00}{2010/10/01}{for bond coloring}
+%
+% \begin{macro}{\Ethylene}
+% \begin{macro}{\@Ethylene}
+% \begin{macrocode}
+\def\Ethylene{\@ifnextchar[{\@Ethylene}{\@Ethylene[]}}%bug \@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
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(800,600)(-300,-300){Ethylene}%2002/4/30 by S. Fujita
+(300,300)%
+{\def\aaa{#1}\ifx\aaa\empty%
+% \Multiput@Direct(42,-13)(0,25){2}{\line(1,0){140}}\fi% double bond
+ \Multiput@Direct(42,-13)(0,25){2}{\Put@Line(0,0)(1,0){140}}\fi%2010/10/01
+}%
+\@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@Direct(42,-13)(0,25){2}{\line(1,0){140}}}% double bond
+ {\Multiput@Direct(42,-13)(0,25){2}{\Put@Line(0,0)(1,0){140}}}%2010/10/01
+ \else\if\@@tmpa t\relax%
+% {\Multiput@Direct(42,-20)(0,20){3}{\line(1,0){140}}}% triple bond right
+ {\Multiput@Direct(42,-20)(0,20){3}{\Put@Line(0,0)(1,0){140}}}%2010/10/01
+ \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\setBScolor{\Put@Direct(0,0){\NWBOND}}%
+%\Put@Direct(0,0){\NWBOND}%
+\or\setBScolor{\Put@Direct(0,0){\SWBOND}}%
+%\Put@Direct(0,0){\SWBOND}%
+\or\setBScolor{\Put@Direct(230,0){\SEBOND}}%
+%\Put@Direct(230,0){\SEBOND}%
+\or\Put@Direct(230,0){\NEBOND}%
+\fi%end of ifcase
+\fi\fi}%
+\end{ShiftPicEnvB}%
+}%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}}
+% \changes{v5.00}{2010/10/01}{for bond coloring}
+%
+% \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
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(600,800)(-300,-300){ethylenev}%2002/4/30 by S. Fujita
+(300,300)%
+\def\aaa{#1}\ifx\aaa\empty%
+ \Put@Line(-20,47)(0,1){140}% vertical
+ \Put@Line(6,47)(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@Line(-13,47)(0,1){140}% vertical
+ \Put@Line(13,47)(0,1){140}% double bond
+ \else\if\@@tmpa t\relax%
+ \Put@Line(-20,47)(0,1){140}% vertical
+ \Put@Line(-0,47)(0,1){140}% triple bond
+ \Put@Line(20,47)(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\setBScolor{\Put@Direct(0,0){\SWbond}}%
+%\Put@Direct(0,0){\SWbond}%
+\or\setBScolor{\Put@Direct(0,0){\SEbond}}%
+%\Put@Direct(0,0){\SEbond}%
+\or\setBScolor{\Put@Direct(0,230){\NEbond}}%
+%\Put@Direct(0,230){\NEbond}%
+\or\setBScolor{\Put@Direct(0,230){\NWbond}}%
+%\Put@Direct(0,230){\NWbond}%
+\fi%end of ifcase
+\fi\fi}%
+\end{ShiftPicEnvB}%
+}%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}}
+% \changes{v5.00}{2010/10/01}{for bond coloring}
+%
+% \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
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(600,800)(-300,-300){Ethylenev}%2002/4/30 by S. Fujita
+(300,300)%
+\def\aaa{#1}\ifx\aaa\empty%
+ \Put@Line(-20,47)(0,1){140}% vertical
+ \Put@Line(6,47)(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@Line(-13,47)(0,1){140}% vertical
+ \Put@Line(13,47)(0,1){140}% double bond
+ \else\if\@@tmpa t\relax%
+ \Put@Line(-20,47)(0,1){140}% vertical
+ \Put@Line(-0,47)(0,1){140}% triple bond
+ \Put@Line(20,47)(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\setBScolor{\Put@Direct(0,0){\SWBond}}%
+%\Put@Direct(0,0){\SWBond}%
+\or\setBScolor{\Put@Direct(0,0){\SEBond}}%
+%\Put@Direct(0,0){\SEBond}%
+\or\setBScolor{\Put@Direct(0,230){\NEBond}}%
+%\Put@Direct(0,230){\NEBond}%
+\or\setBScolor{\Put@Direct(0,230){\NWBond}}%
+%\Put@Direct(0,230){\NWBond}%
+\fi%end of ifcase
+\fi\fi}%
+\end{ShiftPicEnvB}%
+}%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.
+%
+% Because |\square| is defined in the present LaTeX2e,
+% the command |\squarecomplex| is newly defined.
+%
+% \changes{v4.02a}{2004/12/27}{Bug fix: \cs{square} to \cs{squarecomplex}}
+%
+% The command |\square| is renamed to be |\squareplanar|. The code is entirely replaced.
+%
+% \changes{v4.05}{2009/11/08}{Bug fix: \cs{square} to \cs{squareplanar}}
+%
+% \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}
+% \squareplanar[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.
+%
+% \squareplanar{0==C;1==Cl;2==F}
+% \squareplanar{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}}
+% \changes{v5.00}{2010/10/01}{for bond coloring}
+%
+% \begin{macro}{\squareplanar}
+% \begin{macro}{\@squareplanar}
+% \begin{macrocode}
+\def\squareplanar{\@ifnextchar[{\@squareplanar[r}{\@squareplanar[r]}}
+\def\@squareplanar#1]#2{%
+\@reset@ylsw%
+\ylsquareposition{#2}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(600,600)(-300,-300){square}%2002/4/30 by S. Fujita
+(300,300)%
+\@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\setBScolor{\Put@Direct(0,0){\NEbond}}%
+%\Put@Direct(0,0){\NEbond}%
+\or\setBScolor{\Put@Direct(0,0){\SEbond}}%
+%\Put@Direct(0,0){\SEbond}%
+\or\setBScolor{\Put@Direct(0,0){\SWbond}}%
+%\Put@Direct(0,0){\SWbond}%
+\or\setBScolor{\Put@Direct(0,0){\NWbond}}%
+%\Put@Direct(0,0){\NWbond}%
+\fi%end of ifcase
+\fi\fi}%
+\end{ShiftPicEnvB}%
+}%end of macro squareplanar
+\let\squarecomplex=\squareplanar
+\let\square=\squarplanar%combatible to the old version (<4.04)
+% \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}}
+% \changes{v5.01}{2013/07/30}{Bug fix}
+%
+% \begin{macro}{\ylsquareposition}
+% \begin{macrocode}
+\def\ylsquareposition#1{%
+\@@ylswfalse%%%\@reset@ylsw
+\reset@@yl%%2013/07/30bug fix
+\@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}
+% \changes{v5.00}{2010/10/01}{for bond coloring}
+%
+% \begin{macro}{\tetrastereo}
+% \begin{macro}{\@tetrastero}
+% \begin{macrocode}
+\def\tetrastereo{\@ifnextchar[{\@tetrastereo[r}{\@tetrastereo[r]}}
+\def\@tetrastereo#1]#2{%
+\begin{sfpicture}(600,600)(-300,-300)
+ \OrigptOutput(300,300){tetrastereo}
+\Put@oCircle(0,0){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%
+ \setBScolor{\Put@Line(0,100)(0,1){70}}% behind
+% \Put@Line(0,100)(0,1){70}% behind
+ \putlratom{-30}{180}{\@memberb}% and up
+\or%
+ {\thicklines%
+ \setBScolor{\Put@Line(-60,10)(-5,2){140}}% in front
+% \Put@Line(-60,10)(-5,2){140}% in front
+ \putlatom{-205}{30}{\@memberb}}% and left
+\or%
+ \setBScolor{\Put@Line(0,-100)(0,-1){90}}% behind and
+% \Put@Line(0,-100)(0,-1){90}% behind and
+ \putlratom{-30}{-260}{\@memberb}% down
+\or%
+ {\thicklines%
+ \setBScolor{\Put@Line(60,10)(5,2){140}}% in front
+% \Put@Line(60,10)(5,2){140}% in front
+ \putratom{210}{30}{\@memberb}}% and right
+\fi\fi}%end of ifcase
+\end{sfpicture}}%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}
+% \changes{v5.00}{2010/10/01}{for bond coloring}
+%
+% \begin{macro}{\dtetrastereo}
+% \begin{macro}{\@dtetrastereo}
+% \begin{macrocode}
+\def\dtetrastereo{\@ifnextchar[{\@dtetrastereo[r}{\@dtetrastereo[r]}}
+\def\@dtetrastereo#1]#2{%
+\begin{sfpicture}(600,600)(-300,-300)
+ \OrigptOutput(300,300){dtetrastereo}
+\Put@oCircle(0,0){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%
+ \setBScolor{\Put@Line(0,100)(0,1){70}}% behind
+% \Put@Line(0,100)(0,1){70}% behind
+ \putlratom{-30}{180}{\@memberb}% and up
+\or%
+ \setBScolor{\Put@Line(-94,-10)(-5,-2){108}}% in back
+% \Put@Line(-94,-10)(-5,-2){108}% in back
+ \putlatom{-205}{-110}{\@memberb}% and left
+\or%
+ {\thicklines%
+ \setBScolor{\Put@Line(0,-50)(0,-1){150}}% behind and
+% \Put@Line(0,-50)(0,-1){150}% behind and
+ \putlratom{-30}{-260}{\@memberb}}% down
+\or%
+ \setBScolor{\Put@Line(94,-10)(5,-2){108}}% in back
+% \Put@Line(94,-10)(5,-2){108}% in back
+ \putratom{210}{-110}{\@memberb}% and right
+\fi\fi}%end of ifcase
+\end{sfpicture}}%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}
+% \changes{v5.00}{2010/10/01}{for bond coloring}
+%
+% \begin{macro}{\ethanestereo}
+% \begin{macro}{\@ethanestereo}
+% \begin{macrocode}
+\def\ethanestereo{\@ifnextchar[{\@ethanestereo}{\@ethanestereo[]}}
+\def\@ethanestereo[#1]#2#3{%
+\begin{sfpicture}(600,800)(-300,-300)
+ \OrigptOutput(300,300){ethanestereo}
+\Put@oCircle(0,0){200}%
+\Put@oCircle(0,270){200}%
+\Put@Line(0,100)(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%
+ \setBScolor{\Put@Line(-94,-10)(-5,-2){108}}% in back
+% \Put@Line(-94,-10)(-5,-2){108}% in back
+ \putlatom{-205}{-110}{\@memberb}% and left
+\or%
+ {\thicklines%
+ \setBScolor{\Put@Line(0,-50)(0,-1){150}}% behind and
+% \Put@Line(0,-50)(0,-1){150}% behind and
+ \putlratom{-30}{-260}{\@memberb}}% down
+\or%
+ \setBScolor{\Put@Line(94,-10)(5,-2){108}}% in back
+% \Put@Line(94,-10)(5,-2){108}% in back
+ \putratom{210}{-110}{\@memberb}% and right
+% %%%%%%%%
+\or%
+ {\thicklines%
+ \setBScolor{\Put@Line(60,280)(5,2){140}}% in front
+% \Put@Line(60,280)(5,2){140}% in front
+ \putratom{210}{300}{\@memberb}}% and right
+\or%
+ \setBScolor{\Put@Line(0,370)(0,1){70}}% behind
+% \Put@Line(0,370)(0,1){70}% behind
+ \putlratom{-30}{450}{\@memberb}% and up
+\or%
+ {\thicklines%
+ \setBScolor{\Put@Line(-60,280)(-5,2){140}}% in front
+% \Put@Line(-60,280)(-5,2){140}% in front
+ \putlatom{-205}{300}{\@memberb}}% and left
+\fi\fi}%end of ifcase
+\end{sfpicture}}%end of macro ethanestereo
+%</aliphat>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+%<*aliphat>
+% \section{Wedged bonds for stereochemistry}
+% \subsection{Various tetrahedral units with wedged bonds}
+%
+% The macros |\rtetrahedralS| etc. typesets tetrahedral units weith bold wedged
+% bonds. The following modes of numbering are adopted in these macro.
+%
+% \begin{verbatim}
+% **************************************
+% * tetrahedral units with wedged bonds *
+% **************************************
+%
+%
+% 2
+%
+% /
+% 1 -- 0 0 <== the original point
+% | |
+% 3 4
+% 1,2,3,4 <== substituents
+% \end{verbatim}
+%
+% This macro has an argument |SUBSLIST| as well as an optional
+% argument |AUXLIST|.
+%
+% \begin{verbatim}
+% \rtetrahedralS[AUXLIST]{SUBSLIST}
+% \RtetrahedralS[AUXLIST]{SUBSLIST}
+% \ltetrahedralS[AUXLIST]{SUBSLIST}
+% \LtetrahedralS[AUXLIST]{SUBSLIST}
+% \utetrahedralS[AUXLIST]{SUBSLIST}
+% \UtetrahedralS[AUXLIST]{SUBSLIST}
+% \dtetrahedralS[AUXLIST]{SUBSLIST}
+% \DtetrahedralS[AUXLIST]{SUBSLIST}
+% \htetrahedralS[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}
+% \changes{v5.00}{2010/10/01}{for bond coloring}
+%
+% \begin{macro}{\rtetrahedralS}
+% \begin{macro}{\@rtetrahedralS}
+% \begin{macrocode}
+\def\rtetrahedralS{\@ifnextchar[{\@rtetrahedralS[r}{\@rtetrahedralS[r]}}
+\def\@rtetrahedralS#1]#2{%
+\begingroup
+\@reset@ylsw%
+\centralatomcheck{#2}%
+\ifno@centeratom\relax\@clipfusefalse\else\@clipfusetrue\fi%
+\ylrtetrahedralSposition{#2}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(600,600)(-300,-300){rtetrahedralS}%2002/4/30 by S. Fujita
+(300,300)%
+\@tfor\member:=#1\do{%
+ \expandafter\twoch@@r\member{}{}%
+ \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}%
+%set of bond and atoms
+\@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\setBScolor{\setatombondh}%1 (-1,0)
+%\setatombondh%1 (-1,0)
+\or\setBScolor{\setatombondF}%2 (3,5)
+%\setatombondF%2 (3,5)
+\or\setBScolor{\setatombonde}%3 (5,-3)
+%\setatombonde%3 (5,-3)
+\or\setBScolor{\setatombondE}%4 (3,-5)
+%\setatombondE%4 (3,-5)
+\fi%end of ifcase
+\fi\fi}%
+%\@clipfusefalse%
+\end{ShiftPicEnvB}%
+\endgroup}%end of macro rtetrahedralS
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% The command |\ylrtetrahedralSposition| is used in
+% |\rtetrahedralS| to adjust a substitution position.
+% \changes{v4.02}{2004/12/20}{Newly added command:
+% \cs{ylrtetrahedralSposition}}
+%
+% \begin{macro}{\ylrtetrahedralSposition}
+% \begin{macrocode}
+\def\ylrtetrahedralSposition#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\relax
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%W subst. on 1
+ \else
+ \gdef\@ylii{52}\gdef\@yli{0}\global\@ylswtrue%W subst. on 1
+ \fi
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%N subst. on 2
+ \else
+ \gdef\@ylii{-40}\gdef\@yli{-47}\global\@ylswtrue%N subst. on 2
+ \fi
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3
+ \else
+ \gdef\@ylii{-40}\gdef\@yli{20}\global\@ylswtrue%SE subst. on 3
+ \fi
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3
+ \else
+ \gdef\@ylii{-20}\gdef\@yli{47}\global\@ylswtrue%SE subst. on 3
+ \fi%
+\fi%end of ifcase
+\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v5.00}{2010/10/01}{for bond coloring}
+% \begin{macro}{\ltetrahedralS}
+% \begin{macro}{\@ltetrahedralS}
+% \begin{macrocode}
+\def\ltetrahedralS{\@ifnextchar[{\@ltetrahedralS[r}{\@ltetrahedralS[r]}}
+\def\@ltetrahedralS#1]#2{%
+\begingroup
+\@reset@ylsw%
+\centralatomcheck{#2}%
+\ifno@centeratom\relax\@clipfusefalse\else\@clipfusetrue\fi%
+\ylltetrahedralSposition{#2}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(600,600)(-300,-300){ltetrahedralS}%2002/4/30 by S. Fujita
+(300,300)%
+\@tfor\member:=#1\do{%
+ \expandafter\twoch@@r\member{}{}%
+ \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}%
+%set of bond and atoms
+\@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\setBScolor{\setatombondb}%1 (1,0)
+%\setatombondb%1 (1,0)
+\or\setBScolor{\setatombondD}%2 (-3,5)
+%\setatombondD%2 (-3,5)
+\or\setBScolor{\setatombondg}%3 (-5,-3)
+%\setatombondg%3 (-5,-3)
+\or\setBScolor{\setatombondG}%4 (-3,-5)
+%\setatombondG%4 (-3,-5)
+\fi%end of ifcase
+\fi\fi}%
+%\@clipfusefalse%
+\end{ShiftPicEnvB}%
+\endgroup}%end of macro ltetrahedralS
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% The command |\ylltetrahedralSposition| is used in
+% |\ltetrahedralS| to adjust a substitution position.
+% \changes{v4.02}{2004/12/20}{Newly added command:
+% \cs{ylltetrahedralSposition}}
+%
+% \begin{macro}{\ylltetrahedralSposition}
+% \begin{macrocode}
+\def\ylltetrahedralSposition#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\relax
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%W subst. on 1
+ \else
+ \gdef\@ylii{-52}\gdef\@yli{0}\global\@ylswtrue%W subst. on 1
+ \fi
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%N subst. on 2
+ \else
+ \gdef\@ylii{40}\gdef\@yli{-47}\global\@ylswtrue%N subst. on 2
+ \fi
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3
+ \else
+ \gdef\@ylii{40}\gdef\@yli{20}\global\@ylswtrue%SE subst. on 3
+ \fi
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3
+ \else
+ \gdef\@ylii{20}\gdef\@yli{47}\global\@ylswtrue%SE subst. on 3
+ \fi%
+\fi%end of ifcase
+\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v5.00}{2010/10/01}{for bond coloring}
+% \begin{macro}{\dtetrahedralS}
+% \begin{macro}{\@dtetrahedralS}
+% \begin{macrocode}
+\def\dtetrahedralS{\@ifnextchar[{\@dtetrahedralS[r}{\@dtetrahedralS[r]}}
+\def\@dtetrahedralS#1]#2{%
+\begingroup
+\@reset@ylsw%
+\centralatomcheck{#2}%
+\ifno@centeratom\relax\@clipfusefalse\else\@clipfusetrue\fi%
+\yldtetrahedralSposition{#2}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(600,600)(-300,-300){dtetrahedralS}%2002/4/30 by S. Fujita
+(300,300)%
+\@tfor\member:=#1\do{%
+ \expandafter\twoch@@r\member{}{}%
+ \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}%
+%set of bond and atoms
+\@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\setBScolor{\setatombonda}%1 (0,1)
+%\setatombonda%1 (0,1)
+\or\setBScolor{\setatombonde}%5 (5,-3)
+%\setatombonde%5 (5,-3)
+\or\setBScolor{\setatombondg}%3 (-5,-3)
+%\setatombondg%3 (-5,-3)
+\or\setBScolor{\setatombondG}%4 (-3,-5)
+%\setatombondG%4 (-3,-5)
+\fi%end of ifcase
+\fi\fi}%
+%\@clipfusefalse%
+\end{ShiftPicEnvB}%
+\endgroup}%end of macro dtetrahedralS
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The command |\yldtetrahedralSposition| is used in
+% |\dtetrahedralS| to adjust a substitution position.
+% \changes{v4.02}{2004/12/20}{Newly added command:
+% \cs{yldtetrahedralSposition}}
+%
+% \begin{macro}{\yldtetrahedralSposition}
+% \begin{macrocode}
+\def\yldtetrahedralSposition#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\relax
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%N subst. on 1
+ \else
+ \gdef\@ylii{0}\gdef\@yli{-47}\global\@ylswtrue%N subst. on 1
+ \fi
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%W subst. on 2
+ \else
+% \gdef\@ylii{-52}\gdef\@yli{0}\global\@ylswtrue%W subst. on 2
+ \gdef\@ylii{-42}\gdef\@yli{20}\global\@ylswtrue%W subst. on 2
+ \fi
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3
+ \else
+ \gdef\@ylii{40}\gdef\@yli{20}\global\@ylswtrue%SE subst. on 3
+ \fi
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3
+ \else
+ \gdef\@ylii{20}\gdef\@yli{47}\global\@ylswtrue%SE subst. on 3
+ \fi%
+\fi%end of ifcase
+\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v5.00}{2010/10/01}{for bond coloring}
+% \begin{macro}{\DtetrahedralS}
+% \begin{macro}{\@DtetrahedralS}
+% \begin{macrocode}
+\def\DtetrahedralS{\@ifnextchar[{\@DtetrahedralS[r}{\@DtetrahedralS[r]}}
+\def\@DtetrahedralS#1]#2{%
+\begingroup
+\@reset@ylsw%
+\centralatomcheck{#2}%
+\ifno@centeratom\relax\@clipfusefalse\else\@clipfusetrue\fi%
+\ylDtetrahedralSposition{#2}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(600,600)(-300,-300){DtetrahedralS}%2002/4/30 by S. Fujita
+(300,300)%
+\@tfor\member:=#1\do{%
+ \expandafter\twoch@@r\member{}{}%
+ \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}%
+%set of bond and atoms
+\@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\setBScolor{\setatombonda}%1 (0,1)
+%\setatombonda%1 (0,1)
+\or\setBScolor{\setatombondg}%5 (-5,-3)
+%\setatombondg%5 (-5,-3)
+\or\setBScolor{\setatombonde}%3 (5,-3)
+%\setatombonde%3 (5,-3)
+\or\setBScolor{\setatombondE}%4 (3,-5)
+%\setatombondE%4 (3,-5)
+\fi%end of ifcase
+\fi\fi}%
+%\@clipfusefalse%
+\end{ShiftPicEnvB}%
+\endgroup}%end of macro DtetrahedralS
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The command |\ylDtetrahedralSposition| is used in
+% |\DtetrahedralS| to adjust a substitution position.
+% \changes{v4.02}{2004/12/20}{Newly added command:
+% \cs{ylDtetrahedralSposition}}
+%
+% \begin{macro}{\ylDtetrahedralSposition}
+% \begin{macrocode}
+\def\ylDtetrahedralSposition#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\relax
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%W subst. on 1
+ \else
+ \gdef\@ylii{0}\gdef\@yli{-47}\global\@ylswtrue%W subst. on 1
+ \fi
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%N subst. on 2
+ \else
+ \gdef\@ylii{40}\gdef\@yli{20}\global\@ylswtrue%N subst. on 2
+ \fi
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3
+ \else
+ \gdef\@ylii{-40}\gdef\@yli{20}\global\@ylswtrue%SE subst. on 3
+ \fi
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3
+ \else
+ \gdef\@ylii{-20}\gdef\@yli{47}\global\@ylswtrue%SE subst. on 3
+ \fi%
+\fi%end of ifcase
+\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v5.00}{2010/10/01}{for bond coloring}
+% \begin{macro}{\utetrahedralS}
+% \begin{macro}{\@utetrahedralS}
+% \begin{macrocode}
+\def\utetrahedralS{\@ifnextchar[{\@utetrahedralS[r}{\@utetrahedralS[r]}}
+\def\@utetrahedralS#1]#2{%
+\begingroup
+\@reset@ylsw%
+\centralatomcheck{#2}%
+\ifno@centeratom\relax\@clipfusefalse\else\@clipfusetrue\fi%
+\ylutetrahedralSposition{#2}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(600,600)(-300,-300){utetrahedralS}%2002/4/30 by S. Fujita
+(300,300)%
+\@tfor\member:=#1\do{%
+ \expandafter\twoch@@r\member{}{}%
+ \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}%
+%set of bond and atoms
+\@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\setBScolor{\setatombondc}%8 (0,-1)
+%\setatombondc%8 (0,-1)
+\or\setBScolor{\setatombondf}%3 (5,3)
+%\setatombondf%3 (5,3)
+\or\setBScolor{\setatombondD}%1 (-3,5)
+%\setatombondD%1 (-3,5)
+\or\setBScolor{\setatombondd}%3 (-5,3)
+%\setatombondd%3 (-5,3)
+\fi%end of ifcase
+\fi\fi}%
+%\@clipfusefalse%
+\end{ShiftPicEnvB}%
+\endgroup}%end of macro utetrahedralS
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The command |\ylutetrahedralSposition| is used in
+% |\utetrahedralS| to adjust a substitution position.
+% \changes{v4.02}{2004/12/20}{Newly added command:
+% \cs{ylutetrahedralSposition}}
+%
+% \begin{macro}{\ylutetrahedralSposition}
+% \begin{macrocode}
+\def\ylutetrahedralSposition#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\relax
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%N subst. on 1
+ \else
+ \gdef\@ylii{0}\gdef\@yli{47}\global\@ylswtrue%N subst. on 1
+ \fi
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%W subst. on 2
+ \else
+ \gdef\@ylii{-42}\gdef\@yli{-20}\global\@ylswtrue%W subst. on 2
+ \fi
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3
+ \else
+ \gdef\@ylii{20}\gdef\@yli{-47}\global\@ylswtrue%SE subst. on 3
+ \fi%
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3
+ \else
+ \gdef\@ylii{40}\gdef\@yli{-20}\global\@ylswtrue%SE subst. on 3
+ \fi
+\fi%end of ifcase
+\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v5.00}{2010/10/01}{for bond coloring}
+% \begin{macro}{\UtetrahedralS}
+% \begin{macro}{\@UtetrahedralS}
+% \begin{macrocode}
+\def\UtetrahedralS{\@ifnextchar[{\@UtetrahedralS[r}{\@UtetrahedralS[r]}}
+\def\@UtetrahedralS#1]#2{%
+\begingroup
+\@reset@ylsw%
+\centralatomcheck{#2}%
+\ifno@centeratom\relax\@clipfusefalse\else\@clipfusetrue\fi%
+\ylUtetrahedralSposition{#2}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(600,600)(-300,-300){UtetrahedralS}%2002/4/30 by S. Fujita
+(300,300)%
+\@tfor\member:=#1\do{%
+ \expandafter\twoch@@r\member{}{}%
+ \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}%
+%set of bond and atoms
+\@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\setBScolor{\setatombondc}%1 (0,-1)
+%\setatombondc%1 (0,-1)
+\or\setBScolor{\setatombondd}%2 (-5,3)
+%\setatombondd%2 (-5,3)
+\or\setBScolor{\setatombondF}%3 (3,5)
+%\setatombondF%3 (3,5)
+\or\setBScolor{\setatombondf}%4 (5,3)
+%\setatombondf%4 (5,3)
+\fi%end of ifcase
+\fi\fi}%
+%\@clipfusefalse%
+\end{ShiftPicEnvB}%
+\endgroup}%end of macro UtetrahedralS
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% The command |\ylUtetrahedralSposition| is used in
+% |\UtetrahedralS| to adjust a substitution position.
+% \changes{v4.02}{2004/12/20}{Newly added command:
+% \cs{ylUtetrahedralSposition}}
+%
+% \begin{macro}{\ylUtetrahedralSposition}
+% \begin{macrocode}
+\def\ylUtetrahedralSposition#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\relax
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%W subst. on 1
+ \else
+ \gdef\@ylii{0}\gdef\@yli{47}\global\@ylswtrue%W subst. on 1
+ \fi
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%N subst. on 2
+ \else
+ \gdef\@ylii{40}\gdef\@yli{-20}\global\@ylswtrue%N subst. on 2
+ \fi
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3
+ \else
+ \gdef\@ylii{-20}\gdef\@yli{-47}\global\@ylswtrue%SE subst. on 3
+ \fi%
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3
+ \else
+ \gdef\@ylii{-40}\gdef\@yli{-20}\global\@ylswtrue%SE subst. on 3
+ \fi
+\fi%end of ifcase
+\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v5.00}{2010/10/01}{for bond coloring}
+% \begin{macro}{\htetrahedralS}
+% \begin{macro}{\@htetrahedralS}
+% \begin{macrocode}
+\def\htetrahedralS{\@ifnextchar[{\@htetrahedralS[r}{\@htetrahedralS[r]}}
+\def\@htetrahedralS#1]#2{%
+\begingroup
+\@reset@ylsw%
+\centralatomcheck{#2}%
+\ifno@centeratom\relax\@clipfusefalse\else\@clipfusetrue\fi%
+\ylhtetrahedralSposition{#2}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(600,600)(-300,-300){htetrahedralS}%2002/4/30 by S. Fujita
+(300,300)%
+\@tfor\member:=#1\do{%
+ \expandafter\twoch@@r\member{}{}%
+ \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}%
+%set of bond and atoms
+\@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\setBScolor{\setatombondg}%5 (-5,-3)
+%\setatombondg%5 (-5,-3)
+\or\setBScolor{\setatombonde}%5 (5,-3)
+%\setatombonde%5 (5,-3)
+\or\setBScolor{\setatombondF}%1 (3,5)
+%\setatombondF%1 (3,5)
+\or\setBScolor{\setatombondD}%1 (-3,5)
+%\setatombondD%1 (-3,5)
+\fi%end of ifcase
+\fi\fi}%
+%\@clipfusefalse%
+\end{ShiftPicEnvB}%
+\endgroup}%end of macro htetrahedralS
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% The command |\ylhtetrahedralSposition| is used in
+% |\htetrahedralS| to adjust a substitution position.
+% \changes{v4.02}{2004/12/20}{Newly added command:
+% \cs{ylhtetrahedralSposition}}
+%
+% \begin{macro}{\ylhtetrahedralSposition}
+% \begin{macrocode}
+\def\ylhtetrahedralSposition#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\relax
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%W subst. on 1
+ \else
+ \gdef\@ylii{40}\gdef\@yli{30}\global\@ylswtrue%W subst. on 1
+ \fi
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%N subst. on 2
+ \else
+ \gdef\@ylii{-40}\gdef\@yli{30}\global\@ylswtrue%N subst. on 2
+ \fi
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3
+ \else
+ \gdef\@ylii{-20}\gdef\@yli{-47}\global\@ylswtrue%SE subst. on 3
+ \fi%
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3
+ \else
+ \gdef\@ylii{40}\gdef\@yli{-47}\global\@ylswtrue%SE subst. on 3
+ \fi
+\fi%end of ifcase
+\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v5.00}{2010/10/01}{for bond coloring}
+% \begin{macro}{\RtetrahedralS}
+% \begin{macro}{\@RtetrahedralS}
+% \begin{macrocode}
+\def\RtetrahedralS{\@ifnextchar[{\@RtetrahedralS[r}{\@RtetrahedralS[r]}}
+\def\@RtetrahedralS#1]#2{%
+\begingroup
+\@reset@ylsw%
+\centralatomcheck{#2}%
+\ifno@centeratom\relax\@clipfusefalse\else\@clipfusetrue\fi%
+\ylRtetrahedralSposition{#2}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(600,600)(-300,-300){RtetrahedralS}%2002/4/30 by S. Fujita
+(300,300)%
+\@tfor\member:=#1\do{%
+ \expandafter\twoch@@r\member{}{}%
+ \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}%
+%set of bond and atoms
+\@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
+\setBScolor{\setatombondh}%1 (-1,0)
+%\setatombondh%1 (-1,0)
+\or\setBScolor{\setatombondE}%7 (3,-5)
+%\setatombondE%7 (3,-5)
+\or\setBScolor{\setatombondF}%2 (3,5)
+%\setatombondF%2 (3,5)
+\or\setBScolor{\setatombondf}%3 (5,3)
+%\setatombondf%3 (5,3)
+\fi%end of ifcase
+\fi\fi}%
+%\@clipfusefalse%
+\end{ShiftPicEnvB}%
+\endgroup}%end of macro RtetrahedralS
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% The command |\ylRtetrahedralSposition| is used in
+% |\RtetrahedralS| to adjust a substitution position.
+% \changes{v4.02}{2004/12/20}{Newly added command:
+% \cs{ylRtetrahedralSposition}}
+%
+% \begin{macro}{\ylRtetrahedralSposition}
+% \begin{macrocode}
+\def\ylRtetrahedralSposition#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\relax
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%W subst. on 1
+ \else
+ \gdef\@ylii{52}\gdef\@yli{0}\global\@ylswtrue%W subst. on 1
+ \fi
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%N subst. on 2
+ \else
+ \gdef\@ylii{-40}\gdef\@yli{47}\global\@ylswtrue%N subst. on 2
+ \fi
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3
+ \else
+ \gdef\@ylii{-40}\gdef\@yli{-47}\global\@ylswtrue%SE subst. on 3
+ \fi
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3
+ \else
+ \gdef\@ylii{-20}\gdef\@yli{-20}\global\@ylswtrue%SE subst. on 3
+ \fi%
+\fi%end of ifcase
+\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v5.00}{2010/10/01}{for bond coloring}
+% \begin{macro}{\LtetrahedralS}
+% \begin{macro}{\@LtetrahedralS}
+% \begin{macrocode}
+\def\LtetrahedralS{\@ifnextchar[{\@LtetrahedralS[r}{\@LtetrahedralS[r]}}
+\def\@LtetrahedralS#1]#2{%
+\begingroup
+\@reset@ylsw%
+\centralatomcheck{#2}%
+\ifno@centeratom\relax\@clipfusefalse\else\@clipfusetrue\fi%
+\ylLtetrahedralSposition{#2}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(600,600)(-300,-300){LtetrahedralS}%2002/4/30 by S. Fujita
+(300,300)%
+\@tfor\member:=#1\do{%
+ \expandafter\twoch@@r\member{}{}%
+ \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}%
+%set of bond and atoms
+\@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
+\setBScolor{\setatombondb}%1 (1,0)
+%\setatombondb%1 (1,0)
+\or\setBScolor{\setatombondG}%2 (-3,-5)
+%\setatombondG%2 (-3,-5)
+\or\setBScolor{\setatombondD}%3 (-3,5)
+%\setatombondD%3 (-3,5)
+\or\setBScolor{\setatombondd}%4 (-5,3)
+%\setatombondd%4 (-5,3)
+\fi%end of ifcase
+\fi\fi}%
+%\@clipfusefalse%
+\end{ShiftPicEnvB}%
+\endgroup}%end of macro LtetrahedralS
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% The command |\ylLtetrahedralSposition| is used in
+% |\LtetrahedralS| to adjust a substitution position.
+% \changes{v4.02}{2004/12/20}{Newly added command:
+% \cs{ylLtetrahedralSposition}}
+%
+% \begin{macro}{\ylLtetrahedralSposition}
+% \begin{macrocode}
+\def\ylLtetrahedralSposition#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\relax
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%W subst. on 1
+ \else
+ \gdef\@ylii{-52}\gdef\@yli{0}\global\@ylswtrue%W subst. on 1
+ \fi
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%N subst. on 2
+ \else
+ \gdef\@ylii{40}\gdef\@yli{47}\global\@ylswtrue%N subst. on 2
+ \fi
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3
+ \else
+ \gdef\@ylii{40}\gdef\@yli{-47}\global\@ylswtrue%SE subst. on 3
+ \fi
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3
+ \else
+ \gdef\@ylii{20}\gdef\@yli{-20}\global\@ylswtrue%SE subst. on 3
+ \fi%
+\fi%end of ifcase
+\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Trigonal bipyramidal uits for transition states}
+%
+% \changes{v5.00}{2010/10/01}{for bond coloring}
+% \begin{macro}{\utrigpyramid}
+% \begin{macro}{\@utrigpyramid}
+% \begin{macrocode}
+\def\utrigpyramid{\@ifnextchar[{\@utrigpyramid[r}{\@utrigpyramid[r]}}
+\def\@utrigpyramid#1]#2{%
+\begingroup
+\@reset@ylsw%
+\centralatomcheck{#2}%
+\ifno@centeratom\relax\@clipfusefalse\else\@clipfusetrue\fi%
+\ylutrigpyramidposition{#2}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(600,600)(-300,-300){utrigpyramid}%2002/4/30 by S. Fujita
+(300,300)%
+\@tfor\member:=#1\do{%
+ \expandafter\twoch@@r\member{}{}%
+ \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}%
+%set of bond and atoms
+\@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\setBScolor{\setatombondc}%1 (0,-1)
+%\setatombondc%1 (0,-1)
+\or\setBScolor{\setatombondF}%2 (3,5)
+%\setatombondF%2 (3,5)
+\or\setBScolor{\setatombondD}%3 (-3,5)
+%\setatombondD%3 (-3,5)
+\or{\let\dotorline=\d@t@rline \setBScolor{\setatombondh}}%4 (-1,0)
+%{\let\dotorline=\d@t@rline \setatombondh}%4 (-1,0)
+\or{\let\dotorline=\d@t@rline \setBScolor{\setatombondb}}%5 (1,0)
+%{\let\dotorline=\d@t@rline \setatombondb}%5 (1,0)
+\fi%end of ifcase
+\fi\fi}%
+%\@clipfusefalse%
+\end{ShiftPicEnvB}%
+\endgroup}%end of macro utrigpyramid
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The command |\ylutrigpyramidposition| is used in
+% |\utrigpyramid| to adjust a substitution position.
+% \changes{v4.02}{2004/12/20}{Newly added command:
+% \cs{ylutrigpyramidposition}}
+%
+% \begin{macro}{\ylutrigpyramidposition}
+% \begin{macrocode}
+\def\ylutrigpyramidposition#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\relax
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%W subst. on 1
+ \else
+ \gdef\@ylii{0}\gdef\@yli{47}\global\@ylswtrue%W subst. on 1
+ \fi
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%N subst. on 2
+ \else
+ \gdef\@ylii{-20}\gdef\@yli{-47}\global\@ylswtrue%N subst. on 2
+ \fi
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3
+ \else
+ \gdef\@ylii{20}\gdef\@yli{-47}\global\@ylswtrue%SE subst. on 3
+ \fi%
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3
+ \else
+ \gdef\@ylii{40}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3
+ \fi
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3
+ \else
+ \gdef\@ylii{-40}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3
+ \fi
+\fi%end of ifcase
+\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v5.00}{2010/10/01}{for bond coloring}
+% \begin{macro}{\dtrigpyramid}
+% \begin{macro}{\@dtrigpyramid}
+% \begin{macrocode}
+\def\dtrigpyramid{\@ifnextchar[{\@dtrigpyramid[r}{\@dtrigpyramid[r]}}
+\def\@dtrigpyramid#1]#2{%
+\begingroup
+\@reset@ylsw%
+\centralatomcheck{#2}%
+\ifno@centeratom\relax\@clipfusefalse\else\@clipfusetrue\fi%
+\yldtrigpyramidposition{#2}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(600,600)(-300,-300){dtrigpyramid}%2002/4/30 by S. Fujita
+(300,300)%
+\@tfor\member:=#1\do{%
+ \expandafter\twoch@@r\member{}{}%
+ \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}%
+%set of bond and atoms
+\@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\setBScolor{\setatombonda}%1 (0,1)
+%\setatombonda%1 (0,1)
+\or\setBScolor{\setatombondE}%2 (3,-5)
+%\setatombondE%2 (3,-5)
+\or\setBScolor{\setatombondG}%3 (-3,-5)
+%\setatombondG%3 (-3,-5)
+\or{\let\dotorline=\d@t@rline \setBScolor{\setatombondh}}%4 (-1,0)
+%{\let\dotorline=\d@t@rline \setatombondh}%4 (-1,0)
+\or{\let\dotorline=\d@t@rline \setBScolor{\setatombondb}}%5 (1,0)
+%{\let\dotorline=\d@t@rline \setatombondb}%5 (1,0)
+\fi%end of ifcase
+\fi\fi}%
+%\@clipfusefalse%
+\end{ShiftPicEnvB}%
+\endgroup}%end of macro dtrigpyramid
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% The command |\yldtrigpyramidposition| is used in
+% |\dtrigpyramid| to adjust a substitution position.
+% \changes{v4.02}{2004/12/20}{Newly added command:
+% \cs{yldtrigpyramidposition}}
+%
+% \begin{macro}{\yldtrigpyramidposition}
+% \begin{macrocode}
+\def\yldtrigpyramidposition#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\relax
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%W subst. on 1
+ \else
+ \gdef\@ylii{0}\gdef\@yli{-47}\global\@ylswtrue%W subst. on 1
+ \fi
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%N subst. on 2
+ \else
+ \gdef\@ylii{-20}\gdef\@yli{47}\global\@ylswtrue%N subst. on 2
+ \fi
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3
+ \else
+ \gdef\@ylii{20}\gdef\@yli{47}\global\@ylswtrue%SE subst. on 3
+ \fi%
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3
+ \else
+ \gdef\@ylii{40}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3
+ \fi
+ \or
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3
+ \else
+ \gdef\@ylii{-40}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3
+ \fi
+\fi%end of ifcase
+\fi\fi\fi}}%
+%</aliphat>
+% \end{macrocode}
+% \end{macro}
+%
+% \Finale
+%
+\endinput
diff --git a/Master/texmf-dist/source/latex/xymtex/base/aliphat.ins b/Master/texmf-dist/source/latex/xymtex/base/aliphat.ins
new file mode 100644
index 00000000000..51a8d8c17b2
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/aliphat.ins
@@ -0,0 +1,61 @@
+\def\batchfile{aliphat.ins}
+\input docstrip.tex
+\preamble
+
+This is a generated file.
+
+Copyright 1996, 1998, 2001, 2002, 2004, 2005, 2009, 2010, 2013 by Shinsaku Fujita
+
+This file is part of the XyMTeX system.
+=======================================
+
+Old Versions:
+Version 1.01 Released on August 16, 1996
+Version 1.02 Released on October 31, 1996
+Version 2.00 Released on December 25, 1998
+Version 2.01 Released on June 20, 2001 (private version)
+Version 3.00 Released on April 30, 2002
+Version 4.00 Released on May 30, 2002
+Version 4.01 Released on August 30, 2004
+Version 4.02 Released on December 20, 2004
+Version 4.03 Released on July 20, 2005
+Version 4.05 Released on September 07, 2009
+Version 5.00 Released on October 01, 2010
+Version 5.01b Released on April 02, 2013
+
+The Present Version:
+Version 5.01 Released on July 20, 2013
+
+Copyright (C) 1996, 1998, 2001, 2002, 2004, 2005, 2009, 2010, 2013 by Shinsaku Fujita,
+all rights reserved.
+This style file is created for drawing chemical structural formulas
+This style file is to be contained in the ``xymtex'' directory which
+is an input directory for TeX.
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3
+of this license or (at your option) any later version.
+The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of LaTeX
+version 2005/12/01 or later.
+
+This work has the LPPL maintenance status `maintained'.
+The Current Maintainer of this work is Shinsaku Fujita.
+
+This work consists of the files aliphat.dtx and aliphat.ins
+and the derived file aliphat.sty.
+
+=======================================
+
+\endpreamble
+
+\keepsilent
+
+\generateFile{aliphat.drv}{t}{%
+ \from{aliphat.dtx}{driver}}
+
+\generateFile{aliphat.sty}{t}{%
+ \from{aliphat.dtx}{aliphat}}
+
+\endinput
diff --git a/Master/texmf-dist/source/latex/xymtex/base/assurelatexmode.dtx b/Master/texmf-dist/source/latex/xymtex/base/assurelatexmode.dtx
new file mode 100644
index 00000000000..cc8834aa14a
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/assurelatexmode.dtx
@@ -0,0 +1,340 @@
+% \iffalse meta-comment
+%% File: assurelatexmode.dtx
+%
+% Copyright 2010,2013 by Shinsaku Fujita
+%
+% This file is part of XyMTeX system.
+% -------------------------------------
+%
+% This file (assurelatexmode.sty) is a successor to:
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \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].
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+% The Current Maintainer of this work is Shinsaku Fujita.
+%
+% This work consists of the files assurelatexmode.dtx and assurelatexmode.ins
+% and the derived file lewisstruc.sty.
+%
+% Please report any bugs, comments, suggestions, etc. to:
+% Shinsaku Fujita,
+% Shonan Institute of Chemoinformatics and Mathematical Chemistry
+% Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun, Kanagawa 250-0019 Japan
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{assurelatexmode}
+% \def\versi@ndate{October 01, 2010}
+% \def\versi@nno{ver5.00}
+% \def\copyrighth@lder{SF}% Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \fi
+%
+% \CheckSum{189}
+%% \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{v5.00}{2010/10/01}{First release for XyMTeX5.00}
+% \fi
+%
+% \iffalse
+%<*driver>
+\NeedsTeXFormat{pLaTeX2e}
+% \fi
+\ProvidesFile{assurelatexmode.dtx}[2010/10/01 v5.00 assurelatexmode package file]
+% \iffalse
+\documentclass{ltxdoc}
+\GetFileInfo{lewisstruc.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{Dummy Declarations for assuring the \protect\TeX/\protect\LaTeX{} mode
+by {\sffamily assurelatexmode.sty}
+(\fileversion) of \XyMTeX{}}
+\author{Shinsaku Fujita \\
+Shonan Institute of Chemoinformatics and
+Mathematical Chemistry \\
+Kanagawa, 258-0019 Japan
+}
+\date{\filedate}
+%
+\begin{document}
+ \maketitle
+ \DocInput{assurelatexmode.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \section{Introduction}\label{assurelatexmode:intro}
+%
+% \subsection{Options for {\sffamily docstrip}}
+%
+% \DeleteShortVerb{\|}
+% \begin{center}
+% \begin{tabular}{|l|l|}
+% \hline
+% \emph{option} & \emph{function}\\ \hline
+% assurelatexmode & assurelatexmode.sty \\
+% driver & driver for this dtx file \\
+% \hline
+% \end{tabular}
+% \end{center}
+% \MakeShortVerb{\|}
+%
+% \subsection{Version Information}
+%
+% \begin{macrocode}
+%<*assurelatexmode>
+\typeout{Part of XyMTeX for Drawing Chemical Structural Formulas. Version 5.01}
+\typeout{ -- Released May 27, 2013 by Shinsaku Fujita}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\j@urnalname{assurelatexmode}
+\def\versi@ndate{May 27, 2013}
+\def\versi@nno{ver5.01}
+\def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\typeout{XyMTeX Macro File `\j@urnalname' (\versi@nno) <\versi@ndate>%
+\space[\copyrighth@lder]}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\RequirePackage{chemstr}
+% \end{macrocode}
+%
+% \section{Dummy Declarations}
+% If a document written for the PostScript or PDF mode is processed by the TeX/LaTeX mode,
+% some commands for the PS or PDF mode (defined in the \textsf{xymtx-ps} or \textsf{xymtx-pdf}
+% package) cause errors of non-existence. To avoid these errors,
+% dummy commands are defined as follows. These dummy commands are overwritten or replaced by
+% equivalent commands when processed by the PS or PDF mode.
+%
+% \begin{macro}{changedashtowedge}
+% \begin{macro}{changewedgetodash}
+% \changes{v5.00}{2010/10/01}{TeX/LaTeX, PS, and PDF modes: Switch for wedged bonds}
+% \begin{macrocode}
+\newif\if@wedgesw \@wedgeswtrue
+\newif\if@hasheddashsw \@hasheddashswtrue
+\def\wedgehasheddash{\@wedgeswtrue\@hasheddashswtrue}
+\def\wedgehashedwedge{\@wedgeswtrue\@hasheddashswfalse}
+\def\dashhasheddash{\@wedgeswfalse\@hasheddashswtrue}
+\@ifundefined{ifmolfront}{\newif\ifmolfront \molfrontfalse}{}
+\@ifundefined{if@skbondlist}{\newif\if@skbondlist \@skbondlistfalse}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\if@thicklinesw etc.}
+% \changes{v5.00}{2010/10/01}{TeX/LaTeX mode compatible to PS, and PDF modes}
+% \begin{macrocode}
+\newif\if@thicklinesw \@thicklineswfalse
+\def\Thick@Lines{\@thicklineswtrue}%redefinition
+\def\Thin@Lines{\@thicklineswfalse}%redefinition
+\def\thickLineWidth{1.6pt}
+\def\thinLineWidth{0.4pt}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{WedgeAsSubst}
+% \changes{v5.00}{2010/10/01}{TeX/LaTeX mode compatible to PS, and PDF modes}
+% \begin{macrocode}
+\def\WedgeAsSubstTeXLaTeX(#1,#2)(#3,#4)#5{%
+\begingroup
+\@thicklineswtrue \@wedgeswtrue
+\molfrontfalse \@skbondlistfalse
+\leavevmode
+\Put@@Line(#1,#2)(#3,#4){#5}%
+\endgroup}
+\let\WedgeAsSubst=\WedgeAsSubstTeXLaTeX%for compatibility to PS/PDF mode
+% \end{macrocode}
+% \end{macro}
+%
+% The macro |\WedgeAsSubstX| has a starting point,
+% an endpoint, and the width of a wedge as its arguments.
+% Compare this command with |\WedgeAsSubst|, which has
+% a starting point, a slope, and the width of a wedge
+% as its arguments.
+%
+% \begin{macro}{WedgeAsSubstX}
+% \changes{v5.01}{2013/05/27}{TeX/LaTeX mode compatible to PS, and PDF modes}
+% \begin{macrocode}
+\def\WedgeAsSubstXTeXLaTeX(#1,#2)(#3,#4){%
+\@ifnextchar[{\Wedge@AsSubstXTeXLaTeX(#1,#2)(#3,#4)}%
+{\Wedge@AsSubstXTeXLaTeX(#1,#2)(#3,#4)[10]}}
+\def\Wedge@AsSubstXTeXLaTeX(#1,#2)(#3,#4)[#5]{%
+\begingroup
+%#5 not used
+\leavevmode \thicklines
+\drawline(#1,#2)(#3,#4)%
+\endgroup}
+\let\WedgeAsSubstX=\WedgeAsSubstXTeXLaTeX%for compatibility to PS/PDF mode
+% \end{macrocode}
+% \end{macro}
+%
+% The macro |\PUT@@bondLINE| is used in the macro |\Put@@Line|,
+% which draws a bond line.
+%
+% \begin{macro}{\PUT@@bondLINE}
+% \begin{macro}{\PutTeXLaTeXLine}
+% \begin{macro}{\PutBondLine}
+% \changes{v5.00}{2010/10/01}{TeX/LaTeX mode compatible to PS, and PDF modes}
+% \begin{macrocode}
+\def\PUT@@bondLINE(#1,#2)(#3,#4)#5{\begingroup%
+\linethickness{#5}\drawline(#1,#2)(#3,#4)%
+\endgroup}
+\let\PutTeXLaTeXLine=\PUT@@bondLINE%for user's use
+\let\PutBondLine=\PUT@@bondLINE%for user's use
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The macro |\PUT@@dashedLINE| is used to draw a dashed bond line,
+% which usually links two non-adjacent atoms of a cyclic compound.
+%
+% \begin{macro}{\PUT@@dashedLINE}
+% \begin{macro}{\PutTeXLaTeXdashed}
+% \begin{macro}{\PutDashedBond}
+% \changes{v5.00}{2010/10/01}{TeX/LaTeX mode compatible to PS, and PDF modes}
+% \begin{macrocode}
+\def\PUT@@dashedLINE(#1,#2)(#3,#4)#5{%
+\begingroup
+\ifdim\unitlength>0.08pt
+\linethickness{#5}\dottedline{20}(#1,#2)(#3,#4)%
+%\dashline{2}[2](#1,#2)(#3,#4)%
+\else
+\linethickness{#5}\dottedline{20}(#1,#2)(#3,#4)
+%\dashline{1.8}[1.8](#1,#2)(#3,#4)%
+\fi
+\endgroup
+}
+\let\PutTeXLaTeXdashed=\PUT@@dashedLINE%for user's use
+\let\PutDashedBond=\PUT@@dashedLINE%for compatibility to PS and PDF mode
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\HashWedgeAsSubst}
+% \changes{v5.01}{2010/05/27}{TeX/LaTeX mode compatible to PS, and PDF modes}
+% \begin{macrocode}
+\def\HashWedgeAsSubstTeXLaTeX(#1,#2)(#3,#4)#5{%
+\begingroup
+\SlopetoXY(#1,#2)(#3,#4){#5}%%replaced (code from chemstr.sty)
+\leavevmode
+\linethickness{1pt}\dottedline{20}(#1,#2)(\the\@tempcntXa,\the\@tempcntYa)%
+\endgroup}
+\let\HashWedgeAsSubst=\HashWedgeAsSubstTeXLaTeX%for compatibility to PS and PDF mode
+% \end{macrocode}
+% \end{macro}
+%
+% The macro |\HashWedgeAsSubstX| has a starting point,
+% an endpoint, and the width of a wedge as its arguments.
+% Compare this command with |\HashWedgeAsSubst|, which has
+% a starting point, a slope, and the width of a wedge
+% as its arguments.
+%
+% \begin{macro}{\HashWedgeAsSubstX}
+% \changes{v5.01}{2010/05/27}{TeX/LaTeX mode compatible to PS, and PDF modes}
+% \begin{macrocode}
+\def\HashWedgeAsSubstXTeXLaTeX(#1,#2)(#3,#4){%
+\@ifnextchar[{\HashWedge@AsSubstXTeXLaTeX(#1,#2)(#3,#4)}%
+{\HashWedge@AsSubstXTeXLaTeX(#1,#2)(#3,#4)[10]}}
+\def\HashWedge@AsSubstXTeXLaTeX(#1,#2)(#3,#4)[#5]{%
+\begingroup
+\leavevmode\@tempdima=#5\unitlength
+\linethickness{\@tempdima}\dottedline{20}(#1,#2)(#3,#4)
+\endgroup}
+\let\HashWedgeAsSubstX=\HashWedgeAsSubstXTeXLaTeX%for compatibility to PS and PDF mode
+% \end{macrocode}
+% \end{macro}
+%
+% The macro |\putRoundArrowTeXLaTeX| throws its main task to its inner
+% macro |\putRound@rrowTeXLaTeX|, which is incapable of treating
+% an optional argument for specifying the direction of an arrow head.
+% The macro |\putRoundArrow| is defined as a user command to
+% assure the compatibility to the PostScript and the PDF mode.
+% This command should be used in the PostScript or the PDF mode!
+%
+% \begin{macro}{\putRoundArrowTeXLaTeX}
+% \begin{macro}{\putRound@rrowTeXLaTeX}
+% \begin{macro}{\putRoundArrow}
+% \changes{v5.00}{2010/10/01}{For TeXLaTeX mode}
+% \begin{macrocode}
+\def\putRoundArrowTeXLaTeX{%
+\@ifnextchar[{\putRound@rrowTeXLaTeX}{\putRound@rrowTeXLaTeX[->]}}
+\def\putRound@rrowTeXLaTeX[#1]#2{\drawline#2%
+ \XyMTeXWarning{The command
+ \string\putRoundArrow\space is unavailable in TeX/LaTeX mode. ^^J
+ Please try the PostScript or PDF mode}}
+\let\putRoundArrow=\putRoundArrowTeXLaTeX%for the compatibility to PDF and PS mode
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\thinlines}
+% \begin{macro}{\thicklines}
+% \changes{v5.00}{2010/10/01}{TeX/LaTeX mode compatible to PS, and PDF modes}
+% \begin{macrocode}
+\gdef\thinlines{\let\@linefnt\tenln \let\@circlefnt\tencirc
+ \@wholewidth=\thinLineWidth \@halfwidth .5\@wholewidth}
+\gdef\thicklines{\let\@linefnt\tenlnw \let\@circlefnt\tencircw
+ \@wholewidth=\thickLineWidth \@halfwidth .5\@wholewidth}
+\endinput
+%</assurelatexmode>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \Finale
+%
+\endinput
diff --git a/Master/texmf-dist/source/latex/xymtex/base/assurelatexmode.ins b/Master/texmf-dist/source/latex/xymtex/base/assurelatexmode.ins
new file mode 100644
index 00000000000..3f9e3466672
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/assurelatexmode.ins
@@ -0,0 +1,45 @@
+\def\batchfile{assurelatexmode.ins}
+\input docstrip.tex
+\preamble
+
+This is a generated file.
+
+Copyright 2010,2013 by Shinsaku Fujita
+all rights reserved.
+This style file is created for drawing chemical structural formulas
+This style file is to be contained in the ``xymtex'' directory which
+is an input directory for TeX.
+
+This file is part of the XyMTeX system.
+=======================================
+old Version 5.00 Released on October 01, 2010
+=======================================
+Version 5.01 Released on May 27, 2013
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3
+of this license or (at your option) any later version.
+The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of LaTeX
+version 2005/12/01 or later.
+
+This work has the LPPL maintenance status `maintained'.
+The Current Maintainer of this work is Shinsaku Fujita.
+
+This work consists of the files assurelatexmode.dtx and assurelatexmode.ins
+and the derived file assurelatexmode.sty.
+
+=======================================
+
+\endpreamble
+
+\keepsilent
+
+\generateFile{assurelatexmode.drv}{t}{%
+ \from{assurelatexmode.dtx}{driver}}
+
+\generateFile{assurelatexmode.sty}{t}{%
+ \from{assurelatexmode.dtx}{assurelatexmode}}
+
+\endinput
diff --git a/Master/texmf-dist/source/latex/xymtex/base/bondcolor.dtx b/Master/texmf-dist/source/latex/xymtex/base/bondcolor.dtx
new file mode 100644
index 00000000000..fc86de1cec7
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/bondcolor.dtx
@@ -0,0 +1,738 @@
+% \iffalse meta-comment
+%% File: bondcolor.dtx
+%
+% Copyright 2010 by Shinsaku Fujita
+%
+% This file is part of XyMTeX system.
+% -------------------------------------
+%
+% This file (bondcolor.sty) is a successor to:
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \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].
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+% The Current Maintainer of this work is Shinsaku Fujita.
+%
+% This work consists of the files bondcolor.dtx and bondcolor.ins
+% and the derived file lewisstruc.sty.
+%
+% Please report any bugs, comments, suggestions, etc. to:
+% Shinsaku Fujita,
+% Shonan Institute of Chemoinformatics and Mathematical Chemistry
+% Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun, Kanagawa 250-0019 Japan
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{bondcolor}
+% \def\versi@ndate{October 01, 2010}
+% \def\versi@nno{ver5.00}
+% \def\copyrighth@lder{SF}% Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \fi
+%
+% \CheckSum{960}
+%% \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{v5.00}{2010/10/01}{First release for XyMTeX5.00}
+% \fi
+%
+% \iffalse
+%<*driver>
+\NeedsTeXFormat{pLaTeX2e}
+% \fi
+\ProvidesFile{bondcolor.dtx}[2010/10/01 v5.00 bondcolor package file]
+% \iffalse
+\documentclass{ltxdoc}
+\GetFileInfo{lewisstruc.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{Bond Coloring by {\sffamily bondcolor.sty}
+(\fileversion) of \XyMTeX{}}
+\author{Shinsaku Fujita \\
+Shonan Institute of Chemoinformatics and
+Mathematical Chemistry \\
+Kanagawa, 258-0019 Japan
+}
+\date{\filedate}
+%
+\begin{document}
+ \maketitle
+ \DocInput{bondcolor.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \section{Introduction}\label{bondcolor:intro}
+%
+% \subsection{Options for {\sffamily docstrip}}
+%
+% \DeleteShortVerb{\|}
+% \begin{center}
+% \begin{tabular}{|l|l|}
+% \hline
+% \emph{option} & \emph{function}\\ \hline
+% bondcolor & bondcolor.sty \\
+% driver & driver for this dtx file \\
+% \hline
+% \end{tabular}
+% \end{center}
+% \MakeShortVerb{\|}
+%
+% \subsection{Version Information}
+%
+% \begin{macrocode}
+%<*bondcolor>
+\typeout{Part of XyMTeX for Drawing Chemical Structural Formulas. Version 5.00}
+\typeout{ -- Released October 01, 2010 by Shinsaku Fujita}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\j@urnalname{bondcolor}
+\def\versi@ndate{October 01, 2010}
+\def\versi@nno{ver5.00}
+\def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\typeout{XyMTeX Macro File `\j@urnalname' (\versi@nno) <\versi@ndate>%
+\space[\copyrighth@lder]}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\RequirePackage{chemstr}
+\RequirePackage{hetarom}
+\RequirePackage{hetaromh}
+\RequirePackage{methylen}
+% \end{macrocode}
+%
+% \section{Substitution Bond Coloring}
+%
+% \begin{macro}{\ifcolorBLsw}
+% A switch |\ifcolorBLsw| is introduced to judging whether the present process
+% is in BONDLIST or in ATOMLIST.
+%
+% \begin{macrocode}
+\newif\ifcolorBLsw \colorBLswfalse
+% \end{macrocode}
+% \end{macro}
+%
+% The macro |\RightAtomBond| is defined to color substitution bonds (and substituents),
+% when it is to be designated in ATOMLIST or in BONDLIST of a command for drawing
+% a structural formula.
+%
+% \begin{verbatim}
+% \RightAtomBond(x,y)[COLOR]<CLIPPING>{SUBSTLIST}
+% \end{verbatim}
+%
+% The first optional argument (x,y) represents increments of x-, and y-coordinates,
+% which may be added if adjustment is necessary. The default value is (0,0).
+% The second optional argument [COLOR] is a command of coloring (e.g., |\red|).
+% The default value is |\black|.
+% The third optional argument <CLIPPING> accomodates \verb/<s>/ for non-clipping and
+% a vacant or omitted argument represents a clipping of a corner.
+% The defalt value is a vacant value.
+% The fourth argument is a SUBSLIST, in which a substitution number 1--8 represents
+% a bond slope to be drawn. Slopes to cover a right-handed half circle are numbered
+% on a similar line to those of the |\ryl| macro, as follows:
+% \begin{verbatim}
+% SLOPE
+%
+% 1 : (0,1)
+% 2 : (3,5)
+% 3 : (1,1)
+% 4 : (1,0)
+% 5 : (5,-3)
+% 6 : (1,-1)
+% 7 : (3,-5)
+% 8 : (0,-1)
+% \end{verbatim}
+% As for the format of the SUBSLIST, see the specification of the |\ryl| command.
+%
+% \begin{macro}{\RightAtomBond}
+% \begin{macro}{\Right@tomBond}
+% \begin{macro}{\Right@tomB@nd}
+% \begin{macro}{\Right@t@mB@nd}
+% \begin{macrocode}
+\def\RightAtomBond{%
+\@ifnextchar({\Right@tomBond}{\Right@tomBond(0,0)}}
+\def\Right@tomBond(#1,#2){%
+\@ifnextchar[{\Right@tomB@nd(#1,#2)}{\Right@tomB@nd(#1,#2)[\black]}}
+\def\Right@tomB@nd(#1,#2)[#3]{%
+\@ifnextchar<{\Right@t@mB@nd(#1,#2)[#3]}{\Right@t@mB@nd(#1,#2)[#3]<>}}
+\def\Right@t@mB@nd(#1,#2)[#3]<#4>#5{%
+\begingroup
+\global\let\FuseWarning=\futileFuseWarning
+\let\setbscolor=#3\relax
+\@ifundefined{@tmpb}{\edef\@tmpb{0}}{}%dummy
+\@ifundefined{@@tmpa}{\colorBLswfalse}{\if\@@tmpa @\relax\else
+\edef\@@tmpa{a}\colorBLswtrue\fi}%enforced setting
+%\@tempcntXa=\z@ \@tempcntYa=\z@
+\@tempcntXa=#1\relax \@tempcntYa=#2\relax
+\if\@tmpb s\relax
+ \@clipfusefalse
+\else
+ \if#4s\relax
+ \@clipfusefalse
+ \else
+ \ifcolorBLsw
+ \@clipfusetrue
+ \advance\@tempcntXa by5\relax%tentative value
+ \advance\@tempcntYa by-15\relax%tentative value
+ \colorBLswfalse
+ \else
+ \@clipfusetrue
+ \advance\@tempcntXa by40\relax%tentative value
+ \advance\@tempcntYa by38\relax%tentative value
+\fi\fi\fi
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\@forsemicol\member:=#5\do{%
+\ifx\member\empty\else%
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\let\local@tmpa=\@tmpa%global to local 2002/5/30 by SF
+\ifcase\local@tmpa%
+\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)%
+{{\setbscolor\setatombonda}\addbscolor{}{}}%2010/10/01% 0 (upward) (0,1)
+\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)%
+{\setatombondF}\addbscolor{}{}}%2010/10/01%%1 (3,5)
+\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)%
+{\setatombondA}\addbscolor{}{}}%2010/10/01%%2 (1,1)
+\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)%
+{\setatombondf}\addbscolor{}{}}%2010/10/01%%3 (5,3)
+\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)%
+{\setatombondb}\addbscolor{}{}}%2010/10/01%%4 (1,0)
+\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)%
+{\setatombonde}\addbscolor{}{}}%2010/10/01%%5 (5,-3)
+\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)%
+{\setatombondB}\addbscolor{}{}}%2010/10/01%\or%6 (1,-1)
+\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)%
+{\setatombondE}\addbscolor{}{}}%2010/10/01%%7 (3,-5)
+\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)%
+{\setatombondc}\addbscolor{}{}}%2010/10/01%%8 (0,-1)
+\fi%end of ifcase
+\fi}\endgroup}%end of definition of \RightAtomBond
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The macro |\LeftAtomBond| is defined to color substitution bonds (and substituents),
+% when it is to be designated in ATOMLIST or in BONDLIST of a command for drawing
+% a structural formula.
+%
+% \begin{verbatim}
+% \LeftAtomBond(x,y)[COLOR]<CLIPPING>{SUBSTLIST}
+% \end{verbatim}
+%
+% The first optional argument (x,y) represents increments of x-, and y-coordinates,
+% which may be added if adjustment is necessary. The default value is (0,0).
+% The second optional argument [COLOR] is a command of coloring (e.g., |\red|).
+% The default value is |\black|.
+% The third optional argument <CLIPPING> accomodates \verb/<s>/ for non-clipping and
+% a vacant or omitted argument represents a clipping of a corner.
+% The defalt value is a vacant value.
+% The fourth argument is a SUBSLIST, in which a substitution number 1--8 represents
+% a bond slope to be drawn. Slopes to cover a left-handed half circle are numbered
+% on a similar line to those of the |\lyl| macro, as follows:
+%
+% \begin{verbatim}
+% SLOPE
+% 1 : (0,1)
+% 2 : (-3,5)
+% 3 : (-1,1)
+% 4 : (-1,0)
+% 5 : (-5,-3)
+% 6 : (-1,-1)
+% 7 : (-3,-5)
+% 8 : (0,-1)
+% \end{verbatim}
+% As for the format of the SUBSLIST, see the specification of the |\lyl| command.
+%
+% \begin{macro}{\LeftAtomBond}
+% \begin{macro}{\Left@tomBond}
+% \begin{macro}{\Left@tomB@nd}
+% \begin{macro}{\Left@t@mB@nd}
+% \begin{macrocode}
+\def\LeftAtomBond{%
+\@ifnextchar({\Left@tomBond}{\Left@tomBond(0,0)}}
+\def\Left@tomBond(#1,#2){%
+\@ifnextchar[{\Left@tomB@nd(#1,#2)}{\Left@tomB@nd(#1,#2)[\black]}}
+\def\Left@tomB@nd(#1,#2)[#3]{%
+\@ifnextchar<{\Left@t@mB@nd(#1,#2)[#3]}{\Left@t@mB@nd(#1,#2)[#3]<>}}
+\def\Left@t@mB@nd(#1,#2)[#3]<#4>#5{%
+\begingroup
+\global\let\FuseWarning=\futileFuseWarning
+\let\setbscolor=#3\relax
+\@ifundefined{@tmpb}{\edef\@tmpb{0}}{}%dummy
+\@ifundefined{@@tmpa}{\colorBLswfalse}{\if\@@tmpa @\relax\else
+\edef\@@tmpa{a}\colorBLswtrue\fi}%enforced setting
+%\@tempcntXa=\z@ \@tempcntYa=\z@
+\@tempcntXa=#1\relax \@tempcntYa=#2\relax
+\if\@tmpb s\relax
+ \@clipfusefalse
+\else
+ \if#4s\relax
+ \@clipfusefalse
+ \else
+ \ifcolorBLsw
+ \@clipfusetrue
+ \advance\@tempcntXa by5\relax%tentative value
+ \advance\@tempcntYa by-15\relax%tentative value
+ \colorBLswfalse
+ \else
+ \@clipfusetrue
+ \advance\@tempcntXa by40\relax%tentative value
+ \advance\@tempcntYa by38\relax%tentative value
+\fi\fi\fi
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\@forsemicol\member:=#5\do{%
+\ifx\member\empty\else%
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\let\local@tmpa=\@tmpa%global to local 2002/5/30 by SF
+\ifcase\local@tmpa%
+\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)%
+{{\setbscolor\setatombonda}\addbscolor{}{}}%2010/10/01% 0 (upward) (0,1)
+\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)%
+{\setatombondD}\addbscolor{}{}}%2010/10/01%%1 (-3,5)
+\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)%
+{\setatombondH}\addbscolor{}{}}%2010/10/01%%2 (-1,1)
+\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)%
+{\setatombondd}\addbscolor{}{}}%2010/10/01%%3 (-5,3)
+\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)%
+{\setatombondh}\addbscolor{}{}}%2010/10/01%%4 (-1,0)
+\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)%
+{\setatombondg}\addbscolor{}{}}%2010/10/01%%5 (-5,-3)
+\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)%
+{\setatombondC}\addbscolor{}{}}%2010/10/01%%6 (-1,-1)
+\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)%
+{\setatombondG}\addbscolor{}{}}%2010/10/01%%7 (-3,-5)
+\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)%
+{\setatombondc}\addbscolor{}{}}%2010/10/01%%8 (0,-1)
+\fi%end of ifcase
+\fi}\endgroup}%end of definition of \LeftAtomBond
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \section{Double Bond Coloring}
+%
+% \begin{macro}{\addvbonda etc.}
+% Basic commands \verb/\addvbonda/ etc. are used to add
+% colored double bonds in commands of
+% drawing six-membered vertical-type structural formulas, where
+% the letter \texttt{v} of \texttt{add--v--bond--a} means a vertical type.
+% The suffix \texttt{a} is a bond specifier.
+% \begin{macrocode}
+\def\addvbonda{\put(0,-406){\bonda}}
+\def\addvbondb{\put(-171,-303){\bondb}}
+\def\addvbondc{\put(-171,-103){\bondc}}
+\def\addvbondd{\put(0,0){\bondd}}
+\def\addvbonde{\put(171,-103){\bonde}}
+\def\addvbondf{\put(171,-303){\bondf}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\addvibonda etc.}
+% Basic commands \verb/\addvibonda/ etc. are used to add
+% colored double bonds in commands of
+% drawing six-membered inverse-vertical-type structural formulas,
+% where the letter \texttt{vi}
+% of \texttt{add--vi--bond--a} means an inverse vertical type.
+% The suffix \texttt{a} is a bond specifier.
+% \begin{macrocode}
+\def\addvibonda{\put(0,0){\bondc}}
+\def\addvibondb{\put(-171,-103){\bondb}}
+\def\addvibondc{\put(-171,-303){\bonda}}
+\def\addvibondd{\put(0,-406){\bondf}}
+\def\addvibonde{\put(171,-303){\bonde}}
+\def\addvibondf{\put(171,-103){\bondd}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\addhbonda etc.}
+% Basic commands \verb/\addhbonda/ etc. are used to add
+% colored double bonds in commands of
+% drawing six-membered horizontal-type structural formulas,
+% where the letter \texttt{h}
+% of \texttt{add--h--bond--a} means a horizontal type.
+% The suffix \texttt{a} is a bond specifier.
+% \begin{macrocode}
+\def\addhbonda{\put(0,0){\hbonda}}
+\def\addhbondb{\put(-103,-171){\hbondb}}
+\def\addhbondc{\put(-303,-171){\hbondc}}
+\def\addhbondd{\put(-406,0){\hbondd}}
+\def\addhbonde{\put(-303,171){\hbonde}}
+\def\addhbondf{\put(-103,171){\hbondf}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\addhibonda etc.}
+% Basic commands \verb/\addhibonda/ etc. are used to add
+% colored double bonds in commands of
+% drawing six-membered inverse horizontal-type structural formulas,
+% where the letter \texttt{hi}
+% of \texttt{add--hi--bond--a} means an inverse horizontal type.
+% The suffix \texttt{a} is a bond specifier.
+% \begin{macrocode}
+\def\addhibonda{\put(-403,0){\hbondc}}
+\def\addhibondb{\put(-303,-171){\hbondb}}
+\def\addhibondc{\put(-103,-171){\hbonda}}
+\def\addhibondd{\put(0,0){\hbondf}}
+\def\addhibonde{\put(-103,171){\hbonde}}
+\def\addhibondf{\put(-303,171){\hbondd}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\addvvbonda etc.}
+% Basic commands \verb/\addvvbonda/ etc. are used to add
+% colored double bonds in commands of
+% drawing five-membered vertical-type structural formulas, where
+% the first letter \texttt{v} of \texttt{add--v--v--bond--a} means
+% a five-membered ring (roman numeral) and the latter \texttt{v}
+% means a vertical type.
+% The suffix \texttt{a} is a bond specifier.
+% \begin{macrocode}
+\def\addvvbonda{\put(0,0){\bondc}}
+\def\addvvbondb{\put(-171,-103){\bondb}}
+\def\addvvbondc{\put(-171,-103){\bondhoriz}}
+\def\addvvbondd{\put(171,-303){\bonde}}
+\def\addvvbonde{\put(171,-103){\bondd}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\addvvibonda etc.}
+% Basic commands \verb/\addvvibonda/ etc. are used to add
+% colored double bonds in commands of
+% drawing five-membered inverse vertical-type structural formulas, where
+% the first letter \texttt{v} of \texttt{add--v--vi--bond--a} means
+% a five-membered ring (roman numeral) and the latter \texttt{vi}
+% means an inverse vertical type. The suffix \texttt{a} is a bond specifier.
+% \begin{macrocode}
+\def\addvvibonda{\put(0,-406){\bonda}}
+\def\addvvibondb{\put(-171,-303){\bondb}}
+\def\addvvibondc{\put(-171,-103){\bondhorizi}}
+\def\addvvibondd{\put(171,-103){\bonde}}
+\def\addvvibonde{\put(171,-303){\bondf}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\addvhbonda etc.}
+% Basic commands \verb/\addvhbonda/ etc. are used to add
+% colored double bonds in commands of
+% drawing five-membered horizontal-type structural formulas, where
+% the first letter \texttt{v} of \texttt{add--v--h--bond--a} means
+% a five-membered ring (roman numeral) and the latter \texttt{h}
+% means a horizontal type.
+% The suffix \texttt{a} is a bond specifier.
+% \begin{macrocode}
+\def\addvhbonda{\put(-403,0){\hbondc}}
+\def\addvhbondb{\put(-303,-171){\hbondb}}
+\def\addvhbondc{\put(-303,-171){\hbondvert}}
+%\def\addvhbondd{\put(0,0){\hbondf}}
+\def\addvhbondd{\put(-103,171){\hbonde}}
+\def\addvhbonde{\put(-303,171){\hbondd}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\addvhibonda etc.}
+% Basic commands \verb/\addvhibonda/ etc. are used to add
+% colored double bonds in commands of
+% drawing five-membered inverse horizontal-type structural formulas, where
+% the first letter \texttt{v} of \texttt{add--v--hi--bond--a} means
+% a five-membered ring (roman numeral) and the latter \texttt{hi}
+% means an inverse horizontal type. The suffix \texttt{a} is a bond specifier.
+% \begin{macrocode}
+\def\addvhibonda{\put(0,0){\hbonda}}
+\def\addvhibondb{\put(-103,-171){\hbondb}}
+\def\addvhibondc{\put(-303,-171){\hbondverti}}
+%\def\addvhibondd{\put(-406,0){\hbondd}}
+\def\addvhibondd{\put(-303,171){\hbonde}}
+\def\addvhibonde{\put(-103,171){\hbondf}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\MethyleneBonda etc.}
+% Basic commands \verb/\MethyleneBonda/ etc. are used to add
+% colored double bonds in commands of drawing dimethylene to decamethylene units
+% of normal type, where the suffix \texttt{a}, etc. are bond specifiers.
+% \begin{macrocode}
+\def\MethyleneBonda{\Put@Direct(171,-303){\bondA}}
+\def\MethyleneBondb{\Put@Direct(0,-406){\bondB}}
+\def\MethyleneBondc{\Put@Direct(171,-303){\bondA}}
+\def\MethyleneBondd{\Put@Direct(0,-406){\bondB}}
+\def\MethyleneBonde{\Put@Direct(171,-303){\bondA}}
+\def\MethyleneBondf{\Put@Direct(0,-406){\bondB}}
+\def\MethyleneBondg{\Put@Direct(171,-303){\bondA}}
+\def\MethyleneBondh{\Put@Direct(0,-406){\bondB}}
+\def\MethyleneBondi{\Put@Direct(171,-303){\bondA}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\MethyleneBondA etc.}
+% Basic commands \verb/\MethyleneBondA/ etc. are used to add
+% colored double bonds in commands of drawing dimethylene to decamethylene units
+% of normal type, where the suffix \texttt{A}, etc. are bond specifiers.
+% A double bond corresponding to the suffix \texttt{A} appears an alternate side
+% the counterpart due to the suffix \texttt{a}.
+% \begin{macrocode}
+\def\MethyleneBondA{\Put@Direct(0,-406){\bondAA}}
+\def\MethyleneBondB{\Put@Direct(-171,-303){\bondBB}}
+\def\MethyleneBondC{\Put@Direct(0,-406){\bondAA}}
+\def\MethyleneBondD{\Put@Direct(-171,-303){\bondBB}}
+\def\MethyleneBondE{\Put@Direct(0,-406){\bondAA}}
+\def\MethyleneBondF{\Put@Direct(-171,-303){\bondBB}}
+\def\MethyleneBondG{\Put@Direct(0,-406){\bondAA}}
+\def\MethyleneBondH{\Put@Direct(-171,-303){\bondBB}}
+\def\MethyleneBondI{\Put@Direct(0,-406){\bondAA}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\MethyleneiBonda etc.}
+% Basic commands \verb/\MethyleneiBonda/ etc. are used to add
+% colored double bonds in commands of drawing dimethylene to decamethylene units
+% of inverse type, where the suffix \texttt{a}, etc. are bond specifiers.
+% \begin{macrocode}
+\def\MethyleneiBonda{\Put@Direct(171,-103){\bondAi}}
+\def\MethyleneiBondb{\Put@Direct(0,0){\bondBi}}
+\def\MethyleneiBondc{\Put@Direct(171,-103){\bondAi}}
+\def\MethyleneiBondd{\Put@Direct(0,0){\bondBi}}
+\def\MethyleneiBonde{\Put@Direct(171,-103){\bondAi}}
+\def\MethyleneiBondf{\Put@Direct(0,0){\bondBi}}
+\def\MethyleneiBondg{\Put@Direct(171,-103){\bondAi}}
+\def\MethyleneiBondh{\Put@Direct(0,0){\bondBi}}
+\def\MethyleneiBondi{\Put@Direct(171,-103){\bondAi}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\MethyleneiBondA etc.}
+% Basic commands \verb/\MethyleneiBondA/ etc. are used to add
+% colored double bonds in commands of drawing dimethylene to decamethylene units
+% of inverse type, where the suffix \texttt{A}, etc. are bond specifiers.
+% A double bond corresponding to the suffix \texttt{A} appears an alternate side
+% the counterpart due to the suffix \texttt{a}.
+% \begin{macrocode}
+\def\MethyleneiBondA{\Put@Direct(0,0){\bondAAi}}
+\def\MethyleneiBondB{\Put@Direct(-171,-103){\bondBBi}}
+\def\MethyleneiBondC{\Put@Direct(0,0){\bondAAi}}
+\def\MethyleneiBondD{\Put@Direct(-171,-103){\bondBBi}}
+\def\MethyleneiBondE{\Put@Direct(0,0){\bondAAi}}
+\def\MethyleneiBondF{\Put@Direct(-171,-103){\bondBBi}}
+\def\MethyleneiBondG{\Put@Direct(0,0){\bondAAi}}
+\def\MethyleneiBondH{\Put@Direct(-171,-103){\bondBBi}}
+\def\MethyleneiBondI{\Put@Direct(0,0){\bondAAi}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\adddbcolor}
+% The user command \verb/\adddbcolor/ is used to specify a color of
+% a double bond to be changed. The first argument specifies types of
+% structures to be drawn by designating \texttt{v}, \texttt{vi}, etc.
+% The vacant argument and \texttt{i} correspond to polymethylene units
+% defined in \textsf{methylen} package.
+% The second argument specifies a color to be changed.
+% The command \verb/\adddbcolor/ is placed in a bond list.
+% \begin{macrocode}
+\def\adddbcolor#1#2{%
+\global\let\FuseWarning=\futileFuseWarning
+\global\@dbondcolortrue
+\edef\@@tmpBondSp{#1}%
+\edef\@@tmpBondSpi{i}%
+\ifx\@@tmpBondSp\empty\relax%\tetrahemethylene etc.
+{\Put@Direct(0,0){#2\expandafter\csname MethyleneBond\@@tmpa\endcsname}}%
+\else\ifx\@@tmpBondSp\@@tmpBondSpi\relax%\tetramethyleni etc.
+{\Put@Direct(0,0){#2\csname MethyleneiBond\@@tmpa\endcsname}}%
+\else
+{\Put@Direct(0,0){#2\csname add#1bond\@@tmpa\endcsname}}%
+\fi\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Skeletal Bond Coloring}
+%
+% \begin{macro}{\addskbcolor}
+% The user command \verb/\addskbcolor/ is used to specify a color of
+% a skeletal bond to be changed. The first argument specifies types of
+% structures to be drawn by designating \texttt{v}, \texttt{h}, etc.
+% The second argument specifies a color to be changed.
+% The command \verb/\addskbcolor/ is placed in a skeletal bond list.
+% \begin{macrocode}
+\def\addskbcolor#1#2{%
+\iflongskbond
+{#2\expandafter\csname\skbondreplace\endcsname}%
+\else
+\if#1\empty\relax
+{#2\expandafter\csname skbond\skbondreplace\endcsname}%
+\else\if#1v\relax
+{#2\expandafter\csname skbond\skbondreplace\endcsname}%
+\else
+{#2\expandafter\csname #1skbond\skbondreplace\endcsname}%
+\fi\fi\fi%
+\global\let\FuseWarning=\futileFuseWarning%for methylen package
+\global\@dbondcolortrue%for heterarom and heteraromh packages
+}
+%
+%\def\addskbcolor#1#2{%
+% \edef\@@tmpsBondSp{#1}%
+% \edef\@@tmpsBondSpv{v}%
+%\iflongskbond
+%{#2\expandafter\csname\skbondreplace\endcsname}%
+%\else
+%\ifx\@@tmpsBondSp\empty\relax
+%{#2\expandafter\csname skbond\skbondreplace\endcsname}%
+%\else\ifx\@@tmpsBondSp\@@tmpsBondSpv\relax
+%{#2\expandafter\csname skbond\skbondreplace\endcsname}%
+%\else
+%{#2\expandafter\csname #1skbond\skbondreplace\endcsname}%
+%\fi\fi\fi%
+%\global\let\FuseWarning=\futileFuseWarning%for methylen package
+%\global\@dbondcolortrue%for heterarom and heteraromh packages
+%}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\red etc.}
+% \changes{v5.00}{2010/10/01}{Colors for TeX/LaTeX mode}
+% \begin{macrocode}
+\def\red{\color{red}}
+\def\blue{\color{blue}}
+\def\green{\color{green}}
+\def\black{\color{black}}
+\def\cyan{\color{cyan}}
+\def\yellow{\color{yellow}}
+\def\magenta{\color{magenta}}
+\def\white{\color{white}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\xymcolor}
+% \begin{macro}{\red etc.}
+% These macros are defined to avoid \texttt{**Warning** color stack underflow}
+% during processing by the dvipdfmx converter.
+% \changes{v5.00}{2010/10/01}{Added: Colors for TeX/LaTeX mode}
+% \begin{macrocode}
+\def\xymcolor#1#2{\mbox{\color{#1}#2}}
+\def\redx#1{\xymcolor{red}{#1}}
+\def\bluex#1{\xymcolor{blue}{#1}}
+\def\greenx#1{\xymcolor{green}{#1}}
+\def\blackx#1{\xymcolor{black}{#1}}
+\def\cyanx#1{\xymcolor{cyan}{#1}}
+\def\yellowx#1{\xymcolor{yellow}{#1}}
+\def\magentax#1{\xymcolor{magenta}{#1}}
+\def\whitex#1{\xymcolor{white}{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\Color@@Line}
+% \begin{macro}{\Color@Line}
+% \changes{v5.00}{2010/10/01}{Colors for TeX/LaTeX mode}
+% The |\Color@Line| macro is used to erase an old line by setting color to be white.
+% \begin{macrocode}
+\def\Color@@Line{%
+\@ifnextchar[{\C@lor@@Line}{\C@lor@@Line[0.4pt]}}
+\def\C@lor@@Line[#1](#2,#3)(#4,#5)#6#7{%
+\begingroup
+\@tempdima=#1\relax
+\ifdim\@tempdima=0.4pt\else
+\XyMTeXWarning{The line width is ineffective for TeX/LaTeX mode}%
+\fi
+\put(0,0){\csname #7\endcsname \Put@Line(#2,#3)(#4,#5){#6}}%
+\endgroup}%end of \Color@@Line
+\let\Color@Line=\Color@@Line%for TeX/LaTeX mode
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\replaceSKbond}
+% The user command \verb/\replaceSKbond/ is used to specify a color of
+% a skeletal bond to be changed. The first optional argument specifies
+% the bond width to be changed if necessary.
+% The arguments in the first pair of parentheses specify the original point.
+% The arguments in the second pair of parentheses specify the slope e.g., (5,3).
+% The next argument indicates the projection length to the x-axis.
+% The last argument indicates a color to be applied.
+% The command \verb/\replaceSKbond/ is placed in a bond list.
+% \begin{macrocode}
+\def\replaceSKbond{%
+\@ifnextchar[{\repl@ceSKbond}{\repl@ceSKbond[0.4pt]}}
+\def\repl@ceSKbond[#1](#2,#3)(#4,#5)#6#7{\begingroup%
+\global\let\FuseWarning=\futileFuseWarning
+\global\@dbondcolortrue
+\def\thinLineWidth{#1}%
+\@tempdima=#1 \advance\@tempdima by1.2pt
+\put(0,0){\Color@Line[\the\@tempdima](#2,#3)(#4,#5){#6}{white}}%
+\put(0,0){#7\Put@Line(#2,#3)(#4,#5){#6}}\endgroup}%
+%
+%\def\replaceSKbond{%
+%\@ifnextchar[{\repl@ceSKbond}{\repl@ceSKbond[0.4pt]}}
+%\def\repl@ceSKbond[#1](#2,#3)(#4,#5)#6#7{\begingroup%
+%\global\let\FuseWarning=\futileFuseWarning
+%\global\@dbondcolortrue
+%\def\thinLineWidth{#1}%
+%\@tempdima=#1 \advance\@tempdima by1.2pt
+%\put(0,0){\edef\thinLineWidth{\the\@tempdima}\white\Put@Line(#2,#3)(#4,#5){#6}}%
+%\put(0,0){#7\Put@Line(#2,#3)(#4,#5){#6}}\endgroup}%
+%
+\endinput
+%</bondcolor>
+% \end{macrocode}
+% \end{macro}
+%
+% \Finale
+%
+\endinput
diff --git a/Master/texmf-dist/source/latex/xymtex/base/bondcolor.ins b/Master/texmf-dist/source/latex/xymtex/base/bondcolor.ins
new file mode 100644
index 00000000000..27b9ef956ba
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/bondcolor.ins
@@ -0,0 +1,43 @@
+\def\batchfile{bondcolor.ins}
+\input docstrip.tex
+\preamble
+
+This is a generated file.
+
+Copyright 2010 by Shinsaku Fujita
+all rights reserved.
+This style file is created for drawing chemical structural formulas
+This style file is to be contained in the ``xymtex'' directory which
+is an input directory for TeX.
+
+This file is part of the XyMTeX system.
+=======================================
+Version 5.00 Released on October 01, 2010
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3
+of this license or (at your option) any later version.
+The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of LaTeX
+version 2005/12/01 or later.
+
+This work has the LPPL maintenance status `maintained'.
+The Current Maintainer of this work is Shinsaku Fujita.
+
+This work consists of the files bondcolor.dtx and bondcolor.ins
+and the derived file bondcolor.sty.
+
+=======================================
+
+\endpreamble
+
+\keepsilent
+
+\generateFile{bondcolor.drv}{t}{%
+ \from{bondcolor.dtx}{driver}}
+
+\generateFile{bondcolor.sty}{t}{%
+ \from{bondcolor.dtx}{bondcolor}}
+
+\endinput
diff --git a/Master/texmf-dist/source/latex/xymtex/base/carom.dtx b/Master/texmf-dist/source/latex/xymtex/base/carom.dtx
new file mode 100644
index 00000000000..e85f329f8cf
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/carom.dtx
@@ -0,0 +1,4172 @@
+% \iffalse meta-comment
+%% File: carom.dtx
+%
+% Copyright 1993,1996,1998,2000,2001,2002, 2004 by Shinsaku Fujita
+%
+% This file is part of XyMTeX system.
+% -------------------------------------
+%
+% This file is a successor to:
+%
+% carom.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].
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+% The Current Maintainer of this work is Shinsaku Fujita.
+%
+% This work consists of the files xymtx-pdf.dtx and xymtx-pdf.ins
+% and the derived file xymtx-pdf.sty.
+%
+% Please report any bugs, comments, suggestions, etc. to:
+% Shinsaku Fujita,
+% Department of Chemistry and Materials Technology,
+% Kyoto Institute of Technology,
+% Matsugasaki, Sakyoku, Kyoto, 606, Japan
+%
+% New address:
+% Shinsaku Fujita,
+% Department of Chemistry and Materials Technology,
+% Kyoto Institute of Technology, \\
+% Matsugasaki, Sakyoku, Kyoto, 606 Japan
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{carom}
+% \def\versi@ndate{August 16, 1996}
+% \def\versi@nno{ver1.01}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{carom}
+% \def\versi@ndate{December 01, 1993}
+% \def\versi@nno{ver1.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{carom}
+% \def\versi@ndate{August 16, 1996}
+% \def\versi@nno{ver1.01}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{carom}
+% \def\versi@ndate{October 31, 1998}
+% \def\versi@nno{ver1.02}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{carom}
+% \def\versi@ndate{December 25, 1998}
+% \def\versi@nno{ver2.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{carom}
+% \def\versi@ndate{June 14, 2000}
+% \def\versi@nno{ver2.00a}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{carom}
+% \def\versi@ndate{June 20, 2001}
+% \def\versi@nno{ver2.01}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{carom}
+% \def\versi@ndate{April 30, 2002}
+% \def\versi@nno{ver3.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{carom}
+% \def\versi@ndate{May 30, 2002}
+% \def\versi@nno{ver4.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{carom}
+% \def\versi@ndate{August 30, 2004}
+% \def\versi@nno{ver4.01}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \fi
+%
+% \CheckSum{2982}
+%% \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/08/16}{first edition for LaTeX2e}
+% \changes{v1.02}{1998/10/31}{revised edition for LaTeX2e}
+% \changes{v2.00}{1998/12/25}{enhanced edition for LaTeX2e}
+% \changes{v2.00a}{2000/06/14}{bug fix}
+% \changes{v2.01}{2001/06/30}{Size reduction}
+% \changes{v3.00}{2002/04/30}{sfpicture enviromnent etc.}
+% \changes{v4.00}{2002/05/30}{PostScript output and ShiftPicEnv}
+% \changes{v4.01}{2002/08/30}{Minor additions}
+% \changes{v5.00}{2010/10/01}{the LaTeX Project Public License}
+% \fi
+%
+% \iffalse
+%<*driver>
+\NeedsTeXFormat{pLaTeX2e}
+% \fi
+\ProvidesFile{carom.dtx}[2010/10/01 v5.00 XyMTeX{} package file]
+% \iffalse
+\documentclass{ltxdoc}
+\GetFileInfo{carom.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{Drawing carbocyclic compounds by {\sffamily carom.sty}
+(\fileversion) of \XyMTeX{}}
+\author{Shinsaku Fujita \\
+Shonan Institute of Chemoinformatics Mathematical Chemistry, \\
+Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun,
+Kanagawa-Ken, 258-0019 Japan
+% % (old address)
+% %Department of Chemistry and Materials Technology, \\
+% %Kyoto Institute of Technology, \\
+% %Matsugasaki, Sakyoku, Kyoto, 606-8585 Japan
+% % (old address)
+% % Ashigara Research Laboratories,
+% % Fuji Photo Film Co., Ltd., \\
+% % Minami-Ashigara, Kanagawa, 250-01 Japan
+}
+\date{\filedate}
+%
+\begin{document}
+ \maketitle
+ \DocInput{carom.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \section{Introduction}\label{carom:intro}
+%
+% \subsection{Options for {\sffamily docstrip}}
+%
+% \DeleteShortVerb{\|}
+% \begin{center}
+% \begin{tabular}{|l|l|}
+% \hline
+% \emph{option} & \emph{function}\\ \hline
+% carom & carom.sty \\
+% driver & driver for this dtx file \\
+% \hline
+% \end{tabular}
+% \end{center}
+% \MakeShortVerb{\|}
+%
+% \subsection{Version Information}
+%
+% \begin{macrocode}
+%<*carom>
+\typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 5.00}
+\typeout{ -- Released October 01, 2010 by Shinsaku Fujita}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\j@urnalname{carom}
+\def\versi@ndate{October 01, 2010}
+\def\versi@nno{ver5.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 carom.sty}
+%
+% \begin{verbatim}
+% *******************************
+% * carom.sty: list of commands *
+% *******************************
+%
+% <VERTICAL TYPE>
+%
+% \cyclohexanev \@cyclohexanev
+% \bzdrv \@bzdrv
+% \decalinev \@decalinev
+% \decalinevb \@decalinevb
+% \decalinevt \@decalinevt
+% \naphdrv \@naphdrv
+% \naphdrvb \@naphdrvb
+% \naphdrvt \@naphdrvt
+% \tetralinev \@tetralinev
+% \tetralinevb \@tetralinevb
+% \tetralinevt \@tetralinevt
+% \hanthracenev \@hanthracenev
+% \anthracenev \@anthracenev
+% \hphenanthrenev \@hphenanthrenev
+% \phenanthrenev \@phenanthrenev
+% \steroid \@steroid
+% \steroidchain \@steroidchain
+% \end{verbatim}
+%
+% \begin{verbatim}
+% <HORIZONTAL TYPE>
+%
+% \cyclohexaneh \@cyclohexaneh
+% \bzdrh \@bzdrh
+% \decalineh \@decalineh
+% \naphdrh \@naphdrh
+% \tetralineh \@tetralineh
+%
+% \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 carom.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}{}
+\@ifundefined{decaheterov}{\input hetarom.sty\relax}{}
+\@ifundefined{decaheteroh}{\input hetaromh.sty\relax}{}
+\unitlength=0.1pt
+% \end{macrocode}
+%
+% \section{Cyclohexane derivatives}
+% \subsection{Vertical cyclohexanes}
+%
+% The macro |\cyclohexanev| is used for drawing cyclohexane derivatives
+% of vertical type. The skeleton and endocyclic double bonds are
+% drawn directly, while substituents and exocyclic bonds are placed by
+% useing the inner macro |\setsixringv|.
+%
+% \begin{verbatim}
+% ***************************
+% * cyclohexane derivatives *
+% * (vertical type) *
+% ***************************
+% The following numbering is adopted in this macro.
+%
+% 1
+% *
+% 6 * * 2
+% | |
+% | |
+% 5 * * 3
+% *
+% 4 <===== the original point
+%
+% \end{verbatim}
+%
+% The macro |\cyclohexanev| has an argument |SUBSLIST| as well as an optional
+% argument |BONDLIST|.
+% \begin{verbatim}
+% \cyclohexanev[BONDLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one or more
+% characters selected form a to f as well as A, each of which indicates
+% the presence of an inner (endcyclic) double bond on the corresponding
+% position.
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% none : cyclohexane
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,6-double bond
+% f : 6,1-double bond
+% A : aromatic circle
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 6
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specifed) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% \begin{verbatim}
+% e.g.
+%
+% \cyclohexanev{1==Cl;2==F}
+% \cyclohexanev[c]{1==Cl;4==F;2==CH$_{3}$}
+% \cyclohexanev[eb]{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl}
+% \end{verbatim}
+%
+% \begin{macro}{\cyclohexanev}
+% \begin{macrocode}
+\def\cyclohexanev{\@ifnextchar[{\@cyclohexanev[@}{\@cyclohexanev[@]}}
+\def\@cyclohexanev[#1]#2{\sixheterov[#1]{}{#2}}
+% \end{macrocode}
+% \end{macro}
+%
+% The following definition has been deleted.
+%
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/11/23}{Adding \cs{set@fusionadd@sixv}}
+% \changes{v3.00}{2002/04/30}{\cs{cyclohexanev}: Old definition deleted.}
+%
+% \subsection{Horizontal cyclohexanes}
+%
+% The macro |cyclohexaneh| is used for drawing cyclohexane derivatives
+% of vertical type. The skeleton and endocyclic double bonds are
+% drawn directly, while substituents and exocyclic bonds are placed by
+% useing the inner macro |\setsixringh|.
+%
+% \begin{verbatim}
+% ***************************
+% * cyclohexane derivatives *
+% * (horizontal type) *
+% ***************************
+% The following numbering is adopted in this macro.
+%
+% 2 3
+% -----
+% * *
+% the original point ===> 1 * * 4
+% (0,0) * *
+% -----
+% 6 5
+% \end{verbatim}
+%
+% The macro |\cyclohexaneh| has an argument |SUBSLIST| as well as an optional
+% argument |BONDLIST|.
+%
+% \begin{verbatim}
+% \cyclohexaneh[BONDLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one or more
+% characters selected form a to f as well as A, each of which indicates
+% the presence of an inner (endcyclic) double bond on the corresponding
+% position.
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% none : cyclohexane
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,6-double bond
+% f : 6,1-double bond
+% A : aromatic circle
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 6
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specifed) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% \begin{verbatim}
+% e.g.
+%
+% \cyclohexaneh{1==Cl;2==F}
+% \cyclohexaneh[c]{1==Cl;4==F;2==CH$_{3}$}
+% \cyclohexaneh[eb]{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl}
+% \end{verbatim}
+%
+% \changes{v2.00a}{2000/06/14}{bug fix: changed letter [r] to [@]
+% in \cs{cycohexaneh} for horizontal cyclohexanes}
+%
+% \begin{macro}{\cyclohexaneh}
+% \begin{macrocode}
+\def\cyclohexaneh{\@ifnextchar[{\@cyclohexaneh[@}{\@cyclohexaneh[@]}}
+\def\@cyclohexaneh[#1]#2{\sixheteroh[#1]{}{#2}}
+% \end{macrocode}
+% \end{macro}
+%
+% The following definition has been deleted.
+%
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylpositionh}, \cs{if@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/11/29}{Adding \cs{set@fusionadd@sixv} for
+% fused rings}
+% \changes{v3.00}{2002/04/30}{\cs{cyclohexaneh}: Old definition deleted.}
+%
+% \section{Benzene and benzoquinone derivatives}
+% \subsection{Vertical type}
+%
+% The macro |\bzdrv| (|\benzenev|) is used for drawing benzene derivatives
+% of vertical type as well as benzoquinone derivatives of
+% vertical type. The skeleton and endocyclic double bonds are
+% drawn directly, while substituents and exocyclic bonds are placed by
+% useing the inner macro |\cyclohexanev| defined above.
+%
+% The macro |\bzdrv| has an argument |SUBSLIST| as well as an optional
+% argument |OPT|. The latter designates a bond pattern in place of
+% individual exocyclic bonds.
+%
+% \changes{v3.00}{2002/04/30}{\cs{benzenev} added}
+%
+% \begin{verbatim}
+% ****************************************
+% * benzene and benzoquinone derivatives *
+% * (vertical type) *
+% ****************************************
+%
+% \bzdrv[OPT]{SUBSLIST}
+% \benzenev[OPT]{SUBSLIST}
+% \end{verbatim}
+%
+% The |OPT| argument contains one character (r, l or c) for designate
+% aromatic bond patterns or two characters (p? or o?) for quinone
+% bond patterns.
+%
+% \begin{verbatim}
+%
+% OPT: (bond pattern)
+%
+% none or r : right-handed set of double bonds
+% l : left-handed set of double bonds
+% c : aromatic circle
+%
+% p or pa : p-quinone (A)
+% pb : p-quinone (B)
+% pc : p-quinone (C)
+%
+% o or oa : o-quinone (A)
+% ob : o-quinone (B)
+% oc : o-quinone (C)
+% od : o-quinone (D)
+% oe : o-quinone (E)
+% of : o-quinone (F)
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 6
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% \begin{verbatim}
+% e.g.
+% \bzdrv{1==Cl;2==F}
+% \bzdrv[c]{1==Cl;4==F;2==CH$_{3}$}
+% \bzdrv[pa]{1D==O;4D==O;2==CH$_{3}$}
+% \end{verbatim}
+%
+% \begin{macro}{\bzdrv}
+% \begin{macro}{\benzenev}
+% \begin{macrocode}
+\def\bzdrv{\@ifnextchar[{\@bzdrv}{\@bzdrv[r]}}
+\def\@bzdrv[#1]#2{%
+\iforigpt \typeout{command `bzdrv' is based on `cyclohexanev'.}\fi%
+%\expandafter\twoch@r#1{}%
+\expandafter\twoCH@R#1//%
+\if\@tmpa r% right-handed set of double bonds
+ \ifx\@tmpb\empty
+ \cyclohexanev[bdf]{#2}%
+ \fi
+\else\if\@tmpa l%left-handed set of double bonds
+ \ifx\@tmpb\empty
+ \cyclohexanev[ace]{#2}%
+ \fi
+\else\if\@tmpa c%aromatic circle
+ \ifx\@tmpb\empty
+ \cyclohexanev[A]{#2}%
+ \fi
+\else\if\@tmpa p%p-quinone
+ \if\@tmpb a% (A)
+ \cyclohexanev[be]{#2}%
+ \else\ifx\@tmpb\empty% (A)
+ \cyclohexanev[be]{#2}%
+ \else\if\@tmpb b% (B)
+ \cyclohexanev[cf]{#2}%
+ \else\if\@tmpb c% (C)
+ \cyclohexanev[ad]{#2}%
+ \fi\fi\fi\fi%
+\else\if\@tmpa o%o-quinone
+ \if\@tmpb a% (A)%
+ \cyclohexanev[ce]{#2}%
+ \else\ifx\@tmpb\empty% (A)
+ \cyclohexanev[ce]{#2}%
+ \else\if\@tmpb b%o-quinone (B)
+ \cyclohexanev[df]{#2}%
+ \else\if\@tmpb c%o-quinone (C)
+ \cyclohexanev[ae]{#2}%
+ \else\if\@tmpb d%o-quinone (D)
+ \cyclohexanev[bf]{#2}%
+ \else\if\@tmpb e%o-quinone (E)
+ \cyclohexanev[ac]{#2}%
+ \else\if\@tmpb f%o-quinone (F)
+ \cyclohexanev[bd]{#2}%
+ \fi\fi\fi\fi\fi\fi\fi%
+\else% added 1998/11/15 by S. Fujita
+ \cyclohexanev[@#1]{#2}%
+\fi\fi\fi\fi\fi%
+}% %end of \bzdrv macro
+\let\benzenev=\bzdrv
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Horizontal type}
+%
+% The macro |\bzdrh| (|\benzeneh|) is used for drawing benzene derivatives
+% of vertical type as well as benzoquinone derivatives of
+% vertical type. The skeleton and endocyclic double bonds are
+% drawn directly, while substituents and exocyclic bonds are placed by
+% useing the inner macro |\cyclohexanev| defined above.
+%
+% The macro |\bzdrh| has an argument |SUBSLIST| as well as an optional
+% argument |OPT|. The latter designates a bond pattern in place of
+% individual exocyclic bonds.
+%
+% \changes{v3.00}{2002/04/30}{\cs{benzeneh} added}
+%
+% \begin{verbatim}
+% ****************************************
+% * benzene and benzoquinone derivatives *
+% * (horizontal type) *
+% ****************************************
+%
+% \bzdrh[OPT]{SUBSLIST}
+% \benzeneh[OPT]{SUBSLIST}
+% \end{verbatim}
+%
+% The |OPT| argument contains one character (r, l or c) for designate
+% aromatic bond patterns or two characters (p? or o?) for quinone
+% bond patterns.
+%
+% \begin{verbatim}
+%
+% OPT: (bond pattern)
+%
+% none or r : right-handed set of double bonds
+% l : left-handed set of double bonds
+% c : aromatic circle
+%
+% p or pa : p-quinone (A)
+% pb : p-quinone (B)
+% pc : p-quinone (C)
+%
+% o or oa : o-quinone (A)
+% ob : o-quinone (B)
+% oc : o-quinone (C)
+% od : o-quinone (D)
+% oe : o-quinone (E)
+% of : o-quinone (F)
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 6
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% \begin{verbatim}
+%
+% e.g.
+% \bzdrh{1==Cl;2==F}
+% \bzdrh[c]{1==Cl;4==F;2==CH$_{3}$}
+% \bzdrh[pa]{1D==O;4D==O;2==CH$_{3}$}
+%
+% \end{verbatim}
+%
+% \begin{macro}{\bzdrh}
+% \begin{macro}{\benzeneh}
+% \begin{macrocode}
+\def\bzdrh{\@ifnextchar[{\@bzdrh}{\@bzdrh[r]}}
+\def\@bzdrh[#1]#2{%
+\iforigpt \typeout{command `bzdrh' is based on `cyclohexaneh'.}\fi%
+%\expandafter\twoch@r#1{}%
+\expandafter\twoCH@R#1//%
+%\begin{sfpicture}(800,880)(-\noshift,-\noshift)
+\if\@tmpa r% right-handed set of double bonds
+ \cyclohexaneh[bdf]{#2}%
+\else\if\@tmpa l%left-handed set of double bonds
+ \cyclohexaneh[ace]{#2}%
+\else\if\@tmpa c%aromatic circle
+ \cyclohexaneh[A]{#2}%
+\else\if\@tmpa p%p-quinone
+ \if\@tmpb a% (A)
+ \cyclohexaneh[be]{#2}%
+ \else\ifx\@tmpb\empty% (A)
+ \cyclohexaneh[be]{#2}%
+ \else\if\@tmpb b% (B)
+ \cyclohexaneh[cf]{#2}%
+ \else\if\@tmpb c% (C)
+ \cyclohexaneh[ad]{#2}%
+ \fi\fi\fi\fi%
+\else\if\@tmpa o%o-quinone
+ \if\@tmpb a% (A)%
+ \cyclohexaneh[ce]{#2}%
+ \else\ifx\@tmpb\empty% (A)
+ \cyclohexaneh[ce]{#2}%
+ \else\if\@tmpb b%o-quinone (B)
+ \cyclohexaneh[df]{#2}%
+ \else\if\@tmpb c%o-quinone (C)
+ \cyclohexaneh[ae]{#2}%
+ \else\if\@tmpb d%o-quinone (D)
+ \cyclohexaneh[bf]{#2}%
+ \else\if\@tmpb e%o-quinone (E)
+ \cyclohexaneh[ac]{#2}%
+ \else\if\@tmpb f%o-quinone (F)
+ \cyclohexaneh[bd]{#2}%
+ \fi\fi\fi\fi\fi\fi\fi%
+\else% added 1998/11/15 by S. Fujita
+ \cyclohexaneh[@#1]{#2}%
+\fi\fi\fi\fi\fi%
+%\end{sfpicture}
+}% %end of \bzdrh macro
+\let\benzeneh=\bzdrh
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \section{Decaline derivatives}
+% \subsection{Vertical type}
+%
+% The macro |\decalinev| is used for drawing decaline derivatives
+% of vertical type. The skeleton and endocyclic double bonds are
+% drawn directly, while substituents and exocyclic bonds are placed by
+% useing the inner macro |\setdecaringv|.
+%
+% \begin{verbatim}
+% ************************
+% * decaline derivatives *
+% * (vertical type) *
+% ************************
+% The following numbering is adopted in this macro.
+%
+% 8 (0G)1
+% * 8a *
+% 7 * * * * 2
+% | | |
+% | | |
+% 6 * * * * 3
+% * 4a *
+% 5 (0F)4
+% ^
+% |
+% the original point
+% \end{verbatim}
+%
+% The macro |\decalinev| has an argument |SUBSLIST| as well as an optional
+% argument |BONDLIST|.
+%
+% \begin{verbatim}
+% \decalinev[BONDLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one or more
+% characters selected form a to k, each of which indicates
+% the presence of an inner (endcyclic) double bond on the corresponding
+% position. The character A or B indicates aromatic bond patterns (circles).
+% \changes{v1.02}{1998/10/14}{BONDLIST: k and K at the fused bond}
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% none : decaline
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 3,4-double bond
+% d : 4,4a-double bond
+% e : 5,4a-double bond
+% f : 5,6-double bond
+% g : 6,7-double bond
+% h : 8,7-double bond
+% i : 8,8a-double bond
+% j : 1,8a-double bond
+% k : 4a,8a-double bond
+% K : 4a,8a-double bond in the other ring
+% A : left aromatic circle
+% B : right aromatic circle
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 8
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+%
+% for 0 (fused positions)
+%
+% 0FA : alpha single bond at 8a
+% 0FB : beta single bond at 8a
+% 0FU : unspecified single bond at 8a
+% 0GA : alpha single bond at 4a
+% 0GB : beta single bond at 4a
+% 0GU : unspecified single bond at 4a
+% \end{verbatim}
+%
+% \begin{verbatim}
+%
+% e.g.
+%
+% \decalinev{1==Cl;2==F;0FA==;0GA==}
+% \decalinev[c]{1==Cl;4==F;2==CH$_{3}$}
+% \decalinev[eb]{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl;7==Cl;8==Cl}
+%
+% \end{verbatim}
+%
+% The macro |\decalinev| has been changed into a subsidiary macro
+% of |\decaheterov| (version 2.00).
+%
+% \begin{macro}{\decalinev}
+% \begin{macrocode}
+\def\decalinev{\@ifnextchar[{\@decalinev[@}{\@decalinev[@]}}
+\def\@decalinev[#1]#2{%
+\iforigpt \typeout{command `decalinev' is based on `decaheterov'.}\fi%
+\decaheterov[#1]{}{#2}}
+% \end{macrocode}
+% \end{macro}
+%
+% The following definition has been stopped using.
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw}
+% \cs{ylfusedposition},
+% \cs{yl@shiftii}, \cs{@ylii}, \cs{@@ylii}, \cs{yl@shifti}, \cs{@yli},
+% \cs{@yli}, \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/12/5}{Add: fused rings}
+% \changes{v3.00}{2002/04/30}{\cs{decalinev}: Old definition deleted.}
+%
+% \subsection{Vertical-bottom type}
+%
+% The macro |\decalinevb| is used for drawing decaline derivatives
+% of vertical-bottom type (numbering from the bottom to the left-upper part).
+% The word ``vertical'' means that each benzene ring is a vertical type.
+% The word ``bottom'' means that the benzene ring with young locant numbers
+% is located at the bottom.
+% The skeleton and endocyclic double bonds are drawn directly,
+% while substituents and exocyclic bonds are placed by useing
+% the inner macro |\setsixringv|.
+% \changes{v1.02}{1998/10/13}{Newly added command}
+%
+% \begin{verbatim}
+% ***************************
+% * decaline derivatives *
+% * (vertical bottom type) *
+% ***************************
+% The following numbering is adopted in this macro.
+%
+% 7
+% *
+% 6 * * 8
+% | |
+% | | 0G (4a)
+% 5 * * *
+% 0F(4a) * * 1
+% | |
+% | |
+% 4 * * 2
+% *
+% 3
+% ^
+% |
+% the original point
+% \end{verbatim}
+%
+% The macro |\decalinevb| has an argument |SUBSLIST| as well as an optional
+% argument |BONDLIST|.
+%
+% \begin{verbatim}
+% \decalinevb[BONDLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one or more
+% characters selected form a to k, each of which indicates
+% the presence of an inner (endcyclic) double bond on the corresponding
+% position. The character A or B indicates aromatic bond patterns (circles).
+% \changes{v1.02}{1998/10/14}{BONDLIST: k and K at the fused bond}
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% none : decaline
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 3,4-double bond
+% d : 4,4a-double bond
+% e : 5,4a-double bond
+% f : 5,6-double bond
+% g : 6,7-double bond
+% h : 8,7-double bond
+% i : 8,8a-double bond
+% j : 1,8a-double bond
+% k : 4a,8a-double bond
+% K : 4a,8a-double bond in the other ring
+% A : left aromatic circle
+% B : right aromatic circle
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 8
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+%
+% for 0 (fused positions)
+%
+% 0FA : alpha single bond at 8a
+% 0FB : beta single bond at 8a
+% 0FU : unspecified single bond at 8a
+% 0GA : alpha single bond at 4a
+% 0GB : beta single bond at 4a
+% 0GU : unspecified single bond at 4a
+% \end{verbatim}
+%
+% \begin{verbatim}
+%
+% e.g.
+%
+% \decalinevb{1==Cl;2==F;0FA==;0GA==}
+% \decalinevb[c]{1==Cl;4==F;2==CH$_{3}$}
+% \decalinevb[eb]{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl;7==Cl;8==Cl}
+%
+% \end{verbatim}
+%
+% The macro |\decalinevb| has been changed into a subsidiary macro
+% of |\decaheterovb| (version 2.00).
+%
+% \begin{macro}{\decalinevb}
+% \begin{macrocode}
+\def\decalinevb{\@ifnextchar[{\@decalinevb[@}{\@decalinevb[@]}}
+\def\@decalinevb[#1]#2{%
+\iforigpt \typeout{command `decalinevb' is based on `decaheterovb'.}\fi%
+\decaheterovb[#1]{}{#2}}
+% \end{macrocode}
+% \end{macro}
+%
+% The following old definition has been stopped using.
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw}
+% \cs{ylfusedposition},
+% \cs{yl@shiftii}, \cs{@ylii}, \cs{@@ylii}, \cs{yl@shifti}, \cs{@yli},
+% \cs{@yli}, \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/12/25}{Add: Fused rings}
+% \changes{v3.00}{2002/04/30}{\cs{decalinevb}: Old definition deleted.}
+%
+% \subsection{Vertical-top type}
+%
+% The macro |\decalinevt| is used for drawing decaline derivatives
+% of vertical-bottom type (numbering from the top to the left-down part).
+% The word ``vertical'' means that each benzene ring is a vertical type.
+% The word ``top'' means that the benzene ring with young locant numbers
+% is located at the top.
+% The skeleton and endocyclic double bonds are drawn directly,
+% while substituents and exocyclic bonds are placed by useing
+% the inner macro |\setsixringv|.
+% \changes{v1.02}{1998/10/13}{Newly added command}
+%
+% \begin{verbatim}
+% ************************
+% * decaline derivatives *
+% * (vertical-top type) *
+% ************************
+% The following numbering is adopted in this macro.
+%
+% 2
+% *
+% 1 * * 3
+% | |
+% | |
+% 0G (8a) * * 4
+% 8 * * 0F(4a)
+% | |
+% | |
+% 7 * * 5
+% *
+% 6
+% ^
+% |
+% the original point
+% \end{verbatim}
+%
+% The macro |\decalinevt| has an argument |SUBSLIST| as well as an optional
+% argument |BONDLIST|.
+%
+% \begin{verbatim}
+% \decalinevt[BONDLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one or more
+% characters selected form a to k, each of which indicates
+% the presence of an inner (endcyclic) double bond on the corresponding
+% position. The character A or B indicates aromatic bond patterns (circles).
+% \changes{v1.02}{1998/10/14}{BONDLIST: k and K at the fused bond}
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% none : decaline
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 3,4-double bond
+% d : 4,4a-double bond
+% e : 5,4a-double bond
+% f : 5,6-double bond
+% g : 6,7-double bond
+% h : 8,7-double bond
+% i : 8,8a-double bond
+% j : 1,8a-double bond
+% k : 4a,8a-double bond
+% K : 4a,8a-double bond in the other ring
+% A : left aromatic circle
+% B : right aromatic circle
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 8
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+%
+% for 0 (fused positions)
+%
+% 0FA : alpha single bond at 8a
+% 0FB : beta single bond at 8a
+% 0FU : unspecified single bond at 8a
+% 0GA : alpha single bond at 4a
+% 0GB : beta single bond at 4a
+% 0GU : unspecified single bond at 4a
+% \end{verbatim}
+%
+% \begin{verbatim}
+%
+% e.g.
+%
+% \decalinevt{1==Cl;2==F;0FA==;0GA==}
+% \decalinevt[c]{1==Cl;4==F;2==CH$_{3}$}
+% \decalinevt[eb]{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl;7==Cl;8==Cl}
+%
+% \end{verbatim}
+%
+% The macro |\decalinevt| has been changed into a subsidiary macro
+% of |\decaheterovt| (version 2.00).
+%
+% \begin{macro}{\decalinevt}
+% \begin{macrocode}
+\def\decalinevt{\@ifnextchar[{\@decalinevt[@}{\@decalinevt[@]}}
+\def\@decalinevt[#1]#2{%
+\iforigpt \typeout{command `decalinevt' is based on `decaheterovt'.}\fi%
+\decaheterovt[#1]{}{#2}}
+% \end{macrocode}
+% \end{macro}
+%
+% The following old definition has been stopped using.
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw},
+% \cs{ylfusedposition},
+% \cs{yl@shiftii}, \cs{@ylii}, \cs{@@ylii}, \cs{yl@shifti}, \cs{@yli},
+% \cs{@yli}, \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/12/5}{Add: fused rings}
+% \changes{v3.00}{2002/04/30}{\cs{decalinevt}: Old definition deleted.}
+%
+% \subsection{Horizontal type}
+%
+% The macro |\decalineh| is used for drawing decaline derivatives
+% of vertical type. The skeleton and endocyclic double bonds are
+% drawn directly, while substituents and exocyclic bonds are placed by
+% useing the inner macros |\setsixringh| and |\setfusedbond|.
+%
+% \begin{verbatim}
+% ************************
+% * decaline derivatives *
+% * (horizontal type) *
+% ************************
+% The following numbering is adopted in this macro.
+%
+% 2 3
+% -----
+% * *
+% 1 * * 4
+% * *
+% 8a (0G) ----- 4a (0F)
+% * *
+% the original point ===> 8 * * 5
+% (0,0) * *
+% -----
+% 7 6
+% \end{verbatim}
+%
+% The macro |\decalineh| has an argument |SUBSLIST| as well as an optional
+% argument |BONDLIST|.
+%
+% \begin{verbatim}
+% \decalineh[BONDLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one or more
+% characters selected form a to k, each of which indicates
+% the presence of an inner (endcyclic) double bond on the corresponding
+% position. The character A or B indicates aromatic bond patterns (circles).
+% \changes{v1.02}{1998/10/14}{BONDLIST: k and K at the fused bond}
+%
+% \begin{verbatim}
+%
+% BONDLIST =
+%
+% none : decaline
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 3,4-double bond
+% d : 4,4a-double bond
+% e : 5,4a-double bond
+% f : 5,6-double bond
+% g : 6,7-double bond
+% h : 8,7-double bond
+% i : 8,8a-double bond
+% j : 1,8a-double bond
+% k : 4a,8a-double bond
+% K : 4a,8a-double bond in the other ring
+% A : left aromatic circle
+% B : right aromatic circle
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 8
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+%
+% for 0 (fused positions)
+%
+% 0FA : alpha single bond at 8a
+% 0FB : beta single bond at 8a
+% 0FU : unspecified single bond at 8a
+% 0GA : alpha single bond at 4a
+% 0GB : beta single bond at 4a
+% 0GU : unspecified single bond at 4a
+% \end{verbatim}
+%
+% \begin{verbatim}
+% e.g.
+%
+% \decalineh{1==Cl;2==F;0FA==;0GA==}
+% \decalineh[c]{1==Cl;4==F;2==CH$_{3}$}
+% \decalineh[eb]{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl;7==Cl;8==Cl}
+% \end{verbatim}
+%
+% The macro |\decalineh| has been changed into a subsidiary macro
+% of |\decaheteroh| (version 2.00).
+%
+% \begin{macro}{\decalineh}
+% \begin{macrocode}
+\def\decalineh{\@ifnextchar[{\@decalineh[@}{\@decalineh[@]}}
+\def\@decalineh[#1]#2{%
+\iforigpt \typeout{command `decalineh' is based on `decaheteroh'.}\fi%
+\decaheteroh[#1]{}{#2}}
+% \end{macrocode}
+% \end{macro}
+%
+% The following old definition has been stopped using.
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylpositionh}, \cs{if@ylsw}
+% \cs{ylfusedposition},
+% \cs{yl@shiftii}, \cs{@ylii}, \cs{@@ylii}, \cs{yl@shifti}, \cs{@yli},
+% \cs{@yli}, \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/11/30}{Add: fused rings}
+% \changes{v3.00}{2002/04/30}{\cs{decalineh}: Old definition deleted.}
+%
+% \section{Naphthalene and naphtoquinone derivatives}
+% \subsection{Vertical type}
+%
+% The macro |\naphdrv| (|\naphthalenev|) is used for drawing
+% naphthalene derivatives
+% of vertical type as well as naphthoquinone derivatives of
+% vertical type. The skeleton and endocyclic double bonds are
+% drawn directly, while substituents and exocyclic bonds are placed by
+% useing the inner macro |\decalinev|.
+%
+% The macro |\naphdrv| has an argument |SUBSLIST| as well as an optional
+% argument |OPT|. The latter designates a bond pattern in place of
+% individual exocyclic bonds.
+%
+% \changes{v3.00}{2002/04/30}{\cs{naphthalenev} added}
+%
+% \begin{verbatim}
+% **********************************************
+% * naphthalene and naphthoquinone derivatives *
+% * (vertical type) *
+% **********************************************
+%
+% \naphdrv[OPT]{SUBSLIST}
+% \naphthalenev[OPT]{SUBSLIST}
+% \end{verbatim}
+%
+% The |OPT| argument contains one or two characters.
+%
+% The character `A' is used for designating an aromatic bond pattern, in
+% which each of the six-membered rings has a central circle.
+%
+% \begin{verbatim}
+% OPT (bond pattern)
+%
+% none : naphthalene
+% A : aromatic circle
+% \end{verbatim}
+%
+% One character `p' or two characters (p?) in the |OPT| argument
+% designate a p-quinone nucleus, which is present in the
+% right-hand ring for the case of `p' or `pa' and in the
+% left-hand ring for the case of `pb'.
+%
+% \begin{verbatim}
+% p or pa : 1,4-quinone (A) left aromatic, right quinone
+% pb : 1,4-quinone (B) right aromatic, left quinone
+% \end{verbatim}
+%
+% One character `o' or two characters (o?) in the |OPT| argument
+% designate an o-quinone nucleus in either side of the fused ring.
+% The second character of each argument indicates one of the possible
+% type of bond patterns.
+%
+% \begin{verbatim}
+% o or oa : o-quinone (A)
+% ob : o-quinone (B)
+% oc : o-quinone (C)
+% od : o-quinone (D)
+% oe : o-quinone (E)
+% of : o-quinone (F)
+% \end{verbatim}
+%
+% One character `q' or two characters (q?) in the |OPT| argument
+% designate an 2,6-, 1,5- or 1,7-quinone nucleus.
+% The second character of each argument indicates one of the possible
+% type of bond patterns.
+%
+% \begin{verbatim}
+%
+% q or qa : 2,6-quinone (A)
+% qb : 2,6-quinone (B) 3,7
+% qc : 1,5-quinone (C)
+% qd : 1,5-quinone (D) 4,8
+% qe : 1,7-quinone (E)
+% qf : 1,7-quinone (F) 2,8
+% qg : 1,7-quinone (G) 4,6
+% qh : 1,7-quinone (H) 3,5
+% \end{verbatim}
+%
+% One character `P' or two characters (P?) in the |OPT| argument
+% designate a 1,4,5,8- or 1,2,5,8-quinone nucleus.
+%
+% \begin{verbatim}
+%
+% P or Pa : 1,4,5,8-quinone (A)
+% Pb : 1,2,5,8-quinone (B)
+% \end{verbatim}
+%
+% One character `Q' or `O' or two characters (O?) in the |OPT| argument
+% designate quinone nuclei of remaining types.
+%
+% \begin{verbatim}
+% Q : 1,2,3,4-quinone
+%
+% O or Oa : 1,2,5,6-quinone (A)
+% Ob : 1,2,7,8-quinone (B)
+% Oc : 1,2,3,5-quinone (C)
+% Od : 1,2,3,7-quinone (D)
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 8
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% \begin{verbatim}
+% e.g.
+% \naphdrv{1==Cl;2==F}
+% \naphdrv[A]{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+%
+% \begin{macro}{\naphdrv}
+% \begin{macro}{\naphthalenev}
+% \begin{macrocode}
+\def\naphdrv{\@ifnextchar[{\@naphdrv}{\@naphdrv[r]}}
+\def\@naphdrv[#1]#2{%
+\iforigpt \typeout{command `naphdrv' is based on `decalinev'.}\fi%
+ \expandafter\threech@r#1{}{}%
+\if\@tmpa r% right-handed set of double bonds
+ \decalinev[acfhk]{#2}%
+\else\if\@tmpa A%aromatic circle
+ \decalinev[AB]{#2}%
+%
+\else\if\@tmpa p%p-quinone
+ \if\@tmpb a% (A)
+ \decalinev[bfhk]{#2}%
+ \else\ifx\@tmpb\empty% (A)
+ \decalinev[bfhk]{#2}%
+ \else\if\@tmpb b% (B)
+ \decalinev[acgk]{#2}%
+ \fi\fi\fi%
+\else%
+ \if\@tmpa o%o-quinone
+ \if\@tmpb a% (A)
+ \decalinev[cfhk]{#2}%
+ \else\ifx\@tmpb\empty% (A)
+ \decalinev[cfhk]{#2}%
+ \else\if\@tmpb b%o-quinone (B)
+ \decalinev[dfhj]{#2}%
+ \else\if\@tmpb c%o-quinone (C)
+ \decalinev[afhk]{#2}%
+ \else\if\@tmpb d%o-quinone (D)
+ \decalinev[achk]{#2}%
+ \else\if\@tmpb e%o-quinone (E)
+ \decalinev[acei]{#2}%
+ \else\if\@tmpb f%o-quinone (F)
+ \decalinev[acfk]{#2}%
+ \fi\fi\fi\fi\fi\fi%
+ \fi%
+%%%
+\else\if\@tmpa q%various quinone
+ \if\@tmpb a% (A)2,6-type
+ \decalinev[cehj]{#2}%
+ \else\ifx\@tmpb\empty% (A)2,6-type
+ \decalinev[cehj]{#2}%
+ \else\if\@tmpb b%2,6-quinone (B)
+ \decalinev[adfi]{#2}%
+ \else\if\@tmpb c%1,5-quinone (C)
+ \decalinev[bdgi]{#2}%
+ \else\if\@tmpb d%1,5-quinone (D)
+ \decalinev[begj]{#2}%
+ \else\if\@tmpb e%1,7-quinone (E)
+ \decalinev[bdfi]{#2}%
+ \else\if\@tmpb f%1,7-quinone (F)
+ \decalinev[cegj]{#2}%
+ \else\if\@tmpb g%1,7-quinone (G)
+ \decalinev[behj]{#2}%
+ \else\if\@tmpb h%1,7-quinone (H)
+ \decalinev[adgi]{#2}%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi%
+\else\if\@tmpa P%quinone having 4 carbonyl groups
+ \if\@tmpb a% (A)1,4,5,8-type
+ \decalinev[bgk]{#2}%
+ \else\ifx\@tmpb\empty% (A)1,4,5,8-type
+ \decalinev[bgk]{#2}%
+ \else\if\@tmpb b% (B)1,2,5,8-type
+ \decalinev[cgk]{#2}%
+ \fi\fi\fi%
+\else\if\@tmpa Q%1,2,3,4
+ \decalinev[fhk]{#2}%
+\else\if\@tmpa O%quinone having 4 carbonyl groups
+ \if\@tmpb a% (A)1,2,5,6-type
+ \decalinev[chk]{#2}%
+ \else\ifx\@tmpb\empty% (A)1,2,5,6-type
+ \decalinev[chk]{#2}%
+ \else\if\@tmpb b% (B)1,2,7,8-type
+ \decalinev[cfk]{#2}%
+ \else\if\@tmpb c% (C)1,2,3,5-type
+ \decalinev[dgi]{#2}%
+ \else\if\@tmpb d% (D)1,2,3,7-type
+ \decalinev[dfi]{#2}%
+ \fi\fi\fi\fi\fi%
+\else% added 1998/11/23 by S. Fujita
+ \decalinev[@#1]{#2}%
+\fi\fi\fi\fi\fi\fi\fi\fi%
+}% %end of \naphdrv macro
+\let\naphthalenev=\naphdrv
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Vertical-bottom type}
+%
+% The macro |\naphdrvb| (|\naphthalenevb|) is used for drawing
+% naphthalene derivatives
+% of vertical-bottom type as well as naphthoquinone derivatives of
+% vertical-bottom type. The skeleton and endocyclic double bonds are
+% drawn directly, while substituents and exocyclic bonds are placed by
+% useing the inner macro |\decalinevb|.
+% \changes{v1.02}{1998/10/14}{Newly added command}
+%
+% The macro |\naphdrvb| has an argument |SUBSLIST| as well as an optional
+% argument |OPT|. The latter designates a bond pattern in place of
+% individual exocyclic bonds.
+%
+% \changes{v3.00}{2002/04/30}{\cs{naphthalenevb} added}
+%
+% \begin{verbatim}
+% **********************************************
+% * naphthalene and naphthoquinone derivatives *
+% * (vertical-bottom type) *
+% **********************************************
+%
+% \naphdrvb[OPT]{SUBSLIST}
+% \naphthalenevb[OPT]{SUBSLIST}
+% \end{verbatim}
+%
+% The |OPT| argument contains one or two characters.
+%
+% The character `A' is used for designating an aromatic bond pattern, in
+% which each of the six-membered rings has a central circle.
+%
+% \begin{verbatim}
+% OPT (bond pattern)
+%
+% none : naphthalene
+% A : aromatic circle
+% \end{verbatim}
+%
+% One character `p' or two characters (p?) in the |OPT| argument
+% designate a p-quinone nucleus, which is present in the
+% right-hand ring for the case of `p' or `pa' and in the
+% left-hand ring for the case of `pb'.
+%
+% \begin{verbatim}
+% p or pa : 1,4-quinone (A) left aromatic, right quinone
+% pb : 1,4-quinone (B) right aromatic, left quinone
+% \end{verbatim}
+%
+% One character `o' or two characters (o?) in the |OPT| argument
+% designate an o-quinone nucleus in either side of the fused ring.
+% The second character of each argument indicates one of the possible
+% type of bond patterns.
+%
+% \begin{verbatim}
+% o or oa : o-quinone (A)
+% ob : o-quinone (B)
+% oc : o-quinone (C)
+% od : o-quinone (D)
+% oe : o-quinone (E)
+% of : o-quinone (F)
+% \end{verbatim}
+%
+% One character `q' or two characters (q?) in the |OPT| argument
+% designate an 2,6-, 1,5- or 1,7-quinone nucleus.
+% The second character of each argument indicates one of the possible
+% type of bond patterns.
+%
+% \begin{verbatim}
+%
+% q or qa : 2,6-quinone (A)
+% qb : 2,6-quinone (B) 3,7
+% qc : 1,5-quinone (C)
+% qd : 1,5-quinone (D) 4,8
+% qe : 1,7-quinone (E)
+% qf : 1,7-quinone (F) 2,8
+% qg : 1,7-quinone (G) 4,6
+% qh : 1,7-quinone (H) 3,5
+% \end{verbatim}
+%
+% One character `P' or two characters (P?) in the |OPT| argument
+% designate a 1,4,5,8- or 1,2,5,8-quinone nucleus.
+%
+% \begin{verbatim}
+%
+% P or Pa : 1,4,5,8-quinone (A)
+% Pb : 1,2,5,8-quinone (B)
+% \end{verbatim}
+%
+% One character `Q' or `O' or two characters (O?) in the |OPT| argument
+% designate quinone nuclei of remaining types.
+%
+% \begin{verbatim}
+% Q : 1,2,3,4-quinone
+%
+% O or Oa : 1,2,5,6-quinone (A)
+% Ob : 1,2,7,8-quinone (B)
+% Oc : 1,2,3,5-quinone (C)
+% Od : 1,2,3,7-quinone (D)
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 8
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% \begin{verbatim}
+% e.g.
+% \naphdrvb{1==Cl;2==F}
+% \naphdrvb[A]{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+%
+% \begin{macro}{\naphdrvb}
+% \begin{macro}{\napphathaleneb}
+% \begin{macrocode}
+\def\naphdrvb{\@ifnextchar[{\@naphdrvb}{\@naphdrvb[r]}}
+\def\@naphdrvb[#1]#2{%
+\iforigpt \typeout{command `naphdrvb' is based on `decalinevb'.}\fi%
+ \expandafter\threech@r#1{}{}%
+\if\@tmpa r% right-handed set of double bonds
+ \decalinevb[acfhk]{#2}%
+\else\if\@tmpa A%aromatic circle
+ \decalinevb[AB]{#2}%
+%
+\else\if\@tmpa p%p-quinone
+ \if\@tmpb a% (A)
+ \decalinevb[bfhk]{#2}%
+ \else\ifx\@tmpb\empty% (A)
+ \decalinevb[bfhk]{#2}%
+ \else\if\@tmpb b% (B)
+ \decalinevb[acgk]{#2}%
+ \fi\fi\fi%
+\else%
+ \if\@tmpa o%o-quinone
+ \if\@tmpb a% (A)
+ \decalinevb[cfhk]{#2}%
+ \else\ifx\@tmpb\empty% (A)
+ \decalinevb[cfhk]{#2}%
+ \else\if\@tmpb b%o-quinone (B)
+ \decalinevb[dfhj]{#2}%
+ \else\if\@tmpb c%o-quinone (C)
+ \decalinevb[afhk]{#2}%
+ \else\if\@tmpb d%o-quinone (D)
+ \decalinevb[achk]{#2}%
+ \else\if\@tmpb e%o-quinone (E)
+ \decalinevb[acei]{#2}%
+ \else\if\@tmpb f%o-quinone (F)
+ \decalinevb[acfk]{#2}%
+ \fi\fi\fi\fi\fi\fi%
+ \fi%
+%%%
+\else\if\@tmpa q%various quinone
+ \if\@tmpb a% (A)2,6-type
+ \decalinevb[cehj]{#2}%
+ \else\ifx\@tmpb\empty% (A)2,6-type
+ \decalinevb[cehj]{#2}%
+ \else\if\@tmpb b%2,6-quinone (B)
+ \decalinevb[adfi]{#2}%
+ \else\if\@tmpb c%1,5-quinone (C)
+ \decalinevb[bdgi]{#2}%
+ \else\if\@tmpb d%1,5-quinone (D)
+ \decalinevb[begj]{#2}%
+ \else\if\@tmpb e%1,7-quinone (E)
+ \decalinevb[bdfi]{#2}%
+ \else\if\@tmpb f%1,7-quinone (F)
+ \decalinevb[cegj]{#2}%
+ \else\if\@tmpb g%1,7-quinone (G)
+ \decalinevb[behj]{#2}%
+ \else\if\@tmpb h%1,7-quinone (H)
+ \decalinevb[adgi]{#2}%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi%
+\else\if\@tmpa P%quinone having 4 carbonyl groups
+ \if\@tmpb a% (A)1,4,5,8-type
+ \decalinevb[bgk]{#2}%
+ \else\ifx\@tmpb\empty% (A)1,4,5,8-type
+ \decalinevb[bgk]{#2}%
+ \else\if\@tmpb b% (B)1,2,5,8-type
+ \decalinevb[cgk]{#2}%
+ \fi\fi\fi%
+\else\if\@tmpa Q%1,2,3,4
+ \decalinevb[fhk]{#2}%
+\else\if\@tmpa O%quinone having 4 carbonyl groups
+ \if\@tmpb a% (A)1,2,5,6-type
+ \decalinevb[chk]{#2}%
+ \else\ifx\@tmpb\empty% (A)1,2,5,6-type
+ \decalinevb[chk]{#2}%
+ \else\if\@tmpb b% (B)1,2,7,8-type
+ \decalinevb[cfk]{#2}%
+ \else\if\@tmpb c% (C)1,2,3,5-type
+ \decalinevb[dgi]{#2}%
+ \else\if\@tmpb d% (D)1,2,3,7-type
+ \decalinevb[dfi]{#2}%
+ \fi\fi\fi\fi\fi%
+\else% added 1998/11/23 by S. Fujita
+ \decalinevb[@#1]{#2}%
+\fi\fi\fi\fi\fi\fi\fi\fi%
+}% %end of \naphdrvb macro
+\let\naphthalenevb=\naphdrvb
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Vertical-top type}
+%
+% The macro |\naphdrvt| (|\naphthalenevt|) is used for drawing
+% naphthalene derivatives
+% of vertical-top type as well as naphthoquinone derivatives of
+% vertical-top type. The skeleton and endocyclic double bonds are
+% drawn directly, while substituents and exocyclic bonds are placed by
+% useing the inner macro |\decalinevt|.
+% \changes{v1.02}{1998/10/14}{Newly added command}
+%
+% The macro |\naphdrvt| has an argument |SUBSLIST| as well as an optional
+% argument |OPT|. The latter designates a bond pattern in place of
+% individual exocyclic bonds.
+%
+% \changes{v3.00}{2002/04/30}{\cs{naphthalenevt} added}
+%
+% \begin{verbatim}
+% **********************************************
+% * naphthalene and naphthoquinone derivatives *
+% * (vertical-top type) *
+% **********************************************
+%
+% \naphdrvt[OPT]{SUBSLIST}
+% \naphthalenevt[OPT]{SUBSLIST}
+% \end{verbatim}
+%
+% The |OPT| argument contains one or two characters.
+%
+% The character `A' is used for designating an aromatic bond pattern, in
+% which each of the six-membered rings has a central circle.
+%
+% \begin{verbatim}
+% OPT (bond pattern)
+%
+% none : naphthalene
+% A : aromatic circle
+% \end{verbatim}
+%
+% One character `p' or two characters (p?) in the |OPT| argument
+% designate a p-quinone nucleus, which is present in the
+% right-hand ring for the case of `p' or `pa' and in the
+% left-hand ring for the case of `pb'.
+%
+% \begin{verbatim}
+% p or pa : 1,4-quinone (A) left aromatic, right quinone
+% pb : 1,4-quinone (B) right aromatic, left quinone
+% \end{verbatim}
+%
+% One character `o' or two characters (o?) in the |OPT| argument
+% designate an o-quinone nucleus in either side of the fused ring.
+% The second character of each argument indicates one of the possible
+% type of bond patterns.
+%
+% \begin{verbatim}
+% o or oa : o-quinone (A)
+% ob : o-quinone (B)
+% oc : o-quinone (C)
+% od : o-quinone (D)
+% oe : o-quinone (E)
+% of : o-quinone (F)
+% \end{verbatim}
+%
+% One character `q' or two characters (q?) in the |OPT| argument
+% designate an 2,6-, 1,5- or 1,7-quinone nucleus.
+% The second character of each argument indicates one of the possible
+% type of bond patterns.
+%
+% \begin{verbatim}
+%
+% q or qa : 2,6-quinone (A)
+% qb : 2,6-quinone (B) 3,7
+% qc : 1,5-quinone (C)
+% qd : 1,5-quinone (D) 4,8
+% qe : 1,7-quinone (E)
+% qf : 1,7-quinone (F) 2,8
+% qg : 1,7-quinone (G) 4,6
+% qh : 1,7-quinone (H) 3,5
+% \end{verbatim}
+%
+% One character `P' or two characters (P?) in the |OPT| argument
+% designate a 1,4,5,8- or 1,2,5,8-quinone nucleus.
+%
+% \begin{verbatim}
+%
+% P or Pa : 1,4,5,8-quinone (A)
+% Pb : 1,2,5,8-quinone (B)
+% \end{verbatim}
+%
+% One character `Q' or `O' or two characters (O?) in the |OPT| argument
+% designate quinone nuclei of remaining types.
+%
+% \begin{verbatim}
+% Q : 1,2,3,4-quinone
+%
+% O or Oa : 1,2,5,6-quinone (A)
+% Ob : 1,2,7,8-quinone (B)
+% Oc : 1,2,3,5-quinone (C)
+% Od : 1,2,3,7-quinone (D)
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 8
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% \begin{verbatim}
+% e.g.
+% \naphdrvt{1==Cl;2==F}
+% \naphdrvt[A]{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+%
+% \begin{macro}{\naphdrvt}
+% \begin{macro}{\naphthalenevt}
+% \begin{macrocode}
+\def\naphdrvt{\@ifnextchar[{\@naphdrvt}{\@naphdrvt[r]}}
+\def\@naphdrvt[#1]#2{%
+\iforigpt \typeout{command `naphdrvt' is based on `decalinevt'.}\fi%
+ \expandafter\threech@r#1{}{}%
+\if\@tmpa r% right-handed set of double bonds
+ \decalinevt[acfhk]{#2}%
+\else\if\@tmpa A%aromatic circle
+ \decalinevt[AB]{#2}%
+%
+\else\if\@tmpa p%p-quinone
+ \if\@tmpb a% (A)
+ \decalinevt[bfhk]{#2}%
+ \else\ifx\@tmpb\empty% (A)
+ \decalinevt[bfhk]{#2}%
+ \else\if\@tmpb b% (B)
+ \decalinevt[acgk]{#2}%
+ \fi\fi\fi%
+\else%
+ \if\@tmpa o%o-quinone
+ \if\@tmpb a% (A)
+ \decalinevt[cfhk]{#2}%
+ \else\ifx\@tmpb\empty% (A)
+ \decalinevt[cfhk]{#2}%
+ \else\if\@tmpb b%o-quinone (B)
+ \decalinevt[dfhj]{#2}%
+ \else\if\@tmpb c%o-quinone (C)
+ \decalinevt[afhk]{#2}%
+ \else\if\@tmpb d%o-quinone (D)
+ \decalinevt[achk]{#2}%
+ \else\if\@tmpb e%o-quinone (E)
+ \decalinevt[acei]{#2}%
+ \else\if\@tmpb f%o-quinone (F)
+ \decalinevt[acfk]{#2}%
+ \fi\fi\fi\fi\fi\fi%
+ \fi%
+%%%
+\else\if\@tmpa q%various quinone
+ \if\@tmpb a% (A)2,6-type
+ \decalinevt[cehj]{#2}%
+ \else\ifx\@tmpb\empty% (A)2,6-type
+ \decalinevt[cehj]{#2}%
+ \else\if\@tmpb b%2,6-quinone (B)
+ \decalinevt[adfi]{#2}%
+ \else\if\@tmpb c%1,5-quinone (C)
+ \decalinevt[bdgi]{#2}%
+ \else\if\@tmpb d%1,5-quinone (D)
+ \decalinevt[begj]{#2}%
+ \else\if\@tmpb e%1,7-quinone (E)
+ \decalinevt[bdfi]{#2}%
+ \else\if\@tmpb f%1,7-quinone (F)
+ \decalinevt[cegj]{#2}%
+ \else\if\@tmpb g%1,7-quinone (G)
+ \decalinevt[behj]{#2}%
+ \else\if\@tmpb h%1,7-quinone (H)
+ \decalinevt[adgi]{#2}%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi%
+\else\if\@tmpa P%quinone having 4 carbonyl groups
+ \if\@tmpb a% (A)1,4,5,8-type
+ \decalinevt[bgk]{#2}%
+ \else\ifx\@tmpb\empty% (A)1,4,5,8-type
+ \decalinevt[bgk]{#2}%
+ \else\if\@tmpb b% (B)1,2,5,8-type
+ \decalinevt[cgk]{#2}%
+ \fi\fi\fi%
+\else\if\@tmpa Q%1,2,3,4
+ \decalinevt[fhk]{#2}%
+\else\if\@tmpa O%quinone having 4 carbonyl groups
+ \if\@tmpb a% (A)1,2,5,6-type
+ \decalinevt[chk]{#2}%
+ \else\ifx\@tmpb\empty% (A)1,2,5,6-type
+ \decalinevt[chk]{#2}%
+ \else\if\@tmpb b% (B)1,2,7,8-type
+ \decalinevt[cfk]{#2}%
+ \else\if\@tmpb c% (C)1,2,3,5-type
+ \decalinevt[dgi]{#2}%
+ \else\if\@tmpb d% (D)1,2,3,7-type
+ \decalinevt[dfi]{#2}%
+ \fi\fi\fi\fi\fi%
+\else% added 1998/11/23 by S. Fujita
+ \decalinevt[@#1]{#2}%
+\fi\fi\fi\fi\fi\fi\fi\fi%
+}% %end of \naphdrvt macro
+\let\naphthalenevt=\naphdrvt
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Horizontal type}
+%
+% The macro |\naphdrh| is used for drawing naphthalene derivatives
+% of horizontal type as well as naphtoquinone derivatives of
+% horizontal type. The skeleton and endocyclic double bonds are
+% drawn directly, while substituents and exocyclic bonds are placed by
+% useing the inner macro |\decalineh|.
+%
+% The macro |\naphdrh| has an argument |SUBSLIST| as well as an optional
+% argument |OPT|. The latter designates a bond pattern in place of
+% individual exocyclic bonds.
+%
+% \changes{v3.00}{2002/04/30}{\cs{naphthaleneh} added}
+%
+% \begin{verbatim}
+% **********************************************
+% * naphthalene and naphthoquinone derivatives *
+% * (horizontal type) *
+% **********************************************
+%
+% \naphdrh[OPT]{SUBSLIST}
+% \naphthaleneh[OPT]{SUBSLIST}
+%
+% \end{verbatim}
+%
+% The |OPT| argument contains one or two characters for designate
+% aromatic bond patterns or for naphthoquinone bond patterns.
+% The meaning of these characters is the same as described in
+% the definition of the macro |\naphdrv|.
+%
+% \begin{verbatim}
+% OPT (bond pattern)
+%
+% none : naphthalene
+% A : aromatic circle
+%
+% p or pa : 1,4-quinone (A) left aromatic, right quinone
+% pb : 1,4-quinone (B) right aromatic, left quinone
+%
+% o or oa : o-quinone (A)
+% ob : o-quinone (B)
+% oc : o-quinone (C)
+% od : o-quinone (D)
+% oe : o-quinone (E)
+% of : o-quinone (F)
+%
+% q or qa : 2,6-quinone (A)
+% qb : 2,6-quinone (B) 3,7
+% qc : 1,5-quinone (C)
+% qd : 1,5-quinone (D) 4,8
+% qe : 1,7-quinone (E)
+% qf : 1,7-quinone (F) 2,8
+% qg : 1,7-quinone (G) 4,6
+% qh : 1,7-quinone (H) 3,5
+%
+% P or Pa : 1,4,5,8-quinone (A)
+% Pb : 1,2,5,8-quinone (B)
+%
+% Q : 1,2,3,4-quinone
+%
+% O or Oa : 1,2,5,6-quinone (A)
+% Ob : 1,2,7,8-quinone (B)
+% Oc : 1,2,3,5-quinone (C)
+% Od : 1,2,3,7-quinone (D)
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 8
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+%
+% \end{verbatim}
+%
+% \begin{verbatim}
+% e.g.
+% \naphdrh{1==Cl;2==F}
+% \naphdrh[A]{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+%
+% \begin{macro}{\naphdrh}
+% \begin{macro}{\naphthaleneh}
+% \begin{macrocode}
+\def\naphdrh{\@ifnextchar[{\@naphdrh}{\@naphdrh[r]}}
+\def\@naphdrh[#1]#2{%
+\iforigpt \typeout{command `nathdrh' is based on `decalineh'.}\fi%
+ \expandafter\threech@r#1{}{}%
+\if\@tmpa r% right-handed set of double bonds
+ \decalineh[acfhk]{#2}%
+\else\if\@tmpa A%aromatic circle
+ \decalineh[AB]{#2}%
+%
+\else\if\@tmpa p%p-quinone
+ \if\@tmpb a% (A)
+ \decalineh[bfhk]{#2}%
+ \else\ifx\@tmpb\empty% (A)
+ \decalineh[bfhk]{#2}%
+ \else\if\@tmpb b% (B)
+ \decalineh[acgk]{#2}%
+ \fi\fi\fi%
+\else%
+ \if\@tmpa o%o-quinone
+ \if\@tmpb a% (A)
+ \decalineh[cfhk]{#2}%
+ \else\ifx\@tmpb\empty% (A)
+ \decalineh[cfhk]{#2}%
+ \else\if\@tmpb b%o-quinone (B)
+ \decalineh[dfhj]{#2}%
+ \else\if\@tmpb c%o-quinone (C)
+ \decalineh[afhk]{#2}%
+ \else\if\@tmpb d%o-quinone (D)
+ \decalineh[achk]{#2}%
+ \else\if\@tmpb e%o-quinone (E)
+ \decalineh[acei]{#2}%
+ \else\if\@tmpb f%o-quinone (F)
+ \decalineh[acfk]{#2}%
+ \fi\fi\fi\fi\fi\fi%
+ \fi%
+% %%
+\else\if\@tmpa q%various quinone
+ \if\@tmpb a% (A)2,6-type
+ \decalineh[cehj]{#2}%
+ \else\ifx\@tmpb\empty% (A)2,6-type
+ \decalineh[cehj]{#2}%
+ \else\if\@tmpb b%2,6-quinone (B)
+ \decalineh[adfi]{#2}%
+ \else\if\@tmpb c%1,5-quinone (C)
+ \decalineh[bdgi]{#2}%
+ \else\if\@tmpb d%1,5-quinone (D)
+ \decalineh[begj]{#2}%
+ \else\if\@tmpb e%1,7-quinone (E)
+ \decalineh[bdfi]{#2}%
+ \else\if\@tmpb f%1,7-quinone (F)
+ \decalineh[cegj]{#2}%
+ \else\if\@tmpb g%1,7-quinone (G)
+ \decalineh[behj]{#2}%
+ \else\if\@tmpb h%1,7-quinone (H)
+ \decalineh[adgi]{#2}%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi%
+\else\if\@tmpa P%quinone having 4 carbonyl groups
+ \if\@tmpb a% (A)1,4,5,8-type
+ \decalineh[bgk]{#2}%
+ \else\ifx\@tmpb\empty% (A)1,4,5,8-type
+ \decalineh[bgk]{#2}%
+ \else\if\@tmpb b% (B)1,2,5,8-type
+ \decalineh[cgk]{#2}%
+ \fi\fi\fi%
+\else\if\@tmpa Q%1,2,3,4
+ \decalineh[fhk]{#2}%
+\else\if\@tmpa O%quinone having 4 carbonyl groups
+ \if\@tmpb a% (A)1,2,5,6-type
+ \decalineh[chk]{#2}%
+ \else\ifx\@tmpb\empty% (A)1,2,5,6-type
+ \decalineh[chk]{#2}%
+ \else\if\@tmpb b% (B)1,2,7,8-type
+ \decalineh[cfk]{#2}%
+ \else\if\@tmpb c% (C)1,2,3,5-type
+ \decalineh[dgi]{#2}%
+ \else\if\@tmpb d% (D)1,2,3,7-type
+ \decalineh[dfi]{#2}%
+ \fi\fi\fi\fi\fi%
+\else% added 1998/11/23 by S. Fujita
+ \decalineh[@#1]{#2}%
+\fi\fi\fi\fi\fi\fi\fi\fi%
+}% %end of \naphdrh macro
+\let\naphthaleneh=\naphdrh
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \section{Tetraline derivatives}
+% \subsection{Vertical type}
+%
+% The macro |\tetralinev| is used for drawing naphthalene derivatives
+% of vertical type as well as naphthoquinone derivatives of
+% vertical type. The skeleton and endocyclic double bonds are
+% drawn directly, while substituents and exocyclic bonds are placed by
+% useing the inner macro |\decalinev|.
+%
+% The macro |\tetralinev| has an argument |SUBSLIST| as well as an optional
+% argument |OPT|. The latter designates a bond pattern in place of
+% individual exocyclic bonds.
+%
+% \begin{verbatim}
+% *************************
+% * tetraline derivatives *
+% * (vertical type) *
+% *************************
+%
+% \tetralinev[OPT]{SUBSLIST}
+% \end{verbatim}
+%
+% The |OPT| argument contains one or two characters for designate
+% aromatic bond patterns or for naphthoquinone bond patterns.
+%
+% \begin{verbatim}
+%
+% OPT = none : tetraline
+% A : aromatic circle
+%
+% e or ea : 1,2-double bond
+% eb : 2,3-double bond
+% ec : 3,4-double bond
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 4
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+%
+% for n=5 or 8
+%
+% nSa : bias bond
+% This option can be used to avoid over-crowding
+% betweem 1 and 8 or between 4 and 5.
+% \end{verbatim}
+%
+% \begin{verbatim}
+% e.g.
+%
+% \tetralinev{1==Cl;2==F}
+% \tetralinev[A]{1==Cl;4==F;2==CH$_{3}$}
+% \tetralinev[eb]{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl;7==Cl;8==Cl}
+% \end{verbatim}
+%
+% \begin{macro}{\tetralinev}
+% \begin{macrocode}
+\def\tetralinev{\@ifnextchar[{\@tetralinev}{\@tetralinev[r]}}
+\def\@tetralinev[#1]#2{%
+ \iforigpt \typeout{command `tetralinev' is based on `decalinev'.}\fi%
+ \expandafter\threech@r#1{}{}%
+ \if\@tmpa r% right-handed set of double bonds
+ \decalinev[fhk]{#2}%
+ \else\if\@tmpa A%aromatic circle
+ \decalinev[A]{#2}%
+ \else\if\@tmpa e%inner double bond
+ \if\@tmpb a% (A)%
+ \decalinev[afhk]{#2}%
+ \else\ifx\@tmpb\empty% (A)
+ \decalinev[afhk]{#2}%
+ \else\if\@tmpb b% (B)
+ \decalinev[bfhk]{#2}%
+ \else\if\@tmpb c% (C)
+ \decalinev[cfhk]{#2}%
+ \fi\fi\fi\fi%
+ \else%1998/11/23 by Shinsaku Fujita
+ \decalinev[@#1]{#2}%
+ \fi\fi\fi%
+}% %end of \tetralinev macro
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Vertical-bottom type}
+%
+% The macro |\tetralinevb| is used for drawing naphthalene derivatives
+% of vertical-bottom type as well as naphthoquinone derivatives of
+% vertical type. The skeleton and endocyclic double bonds are
+% drawn directly, while substituents and exocyclic bonds are placed by
+% useing the inner macro |\decalinevb|.
+% \changes{v1.02}{1998/10/14}{Newly added command}
+%
+% The macro |\tetralinevb| has an argument |SUBSLIST| as well as an optional
+% argument |OPT|. The latter designates a bond pattern in place of
+% individual exocyclic bonds.
+%
+% \begin{verbatim}
+% ********************************
+% * tetraline derivatives *
+% * (vertical-bottom type) *
+% ********************************
+%
+% \tetralinevb[OPT]{SUBSLIST}
+% \end{verbatim}
+%
+% The |OPT| argument contains one or two characters for designate
+% aromatic bond patterns or for naphthoquinone bond patterns.
+%
+% \begin{verbatim}
+%
+% OPT = none : tetraline
+% A : aromatic circle
+%
+% e or ea : 1,2-double bond
+% eb : 2,3-double bond
+% ec : 3,4-double bond
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 4
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+%
+% for n=5 or 8
+%
+% nSa : bias bond
+% This option can be used to avoid over-crowding
+% betweem 1 and 8 or between 4 and 5.
+% \end{verbatim}
+%
+% \begin{verbatim}
+% e.g.
+%
+% \tetralinevb{1==Cl;2==F}
+% \tetralinevb[A]{1==Cl;4==F;2==CH$_{3}$}
+% \tetralinevb[eb]{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl;7==Cl;8==Cl}
+% \end{verbatim}
+%
+% \begin{macro}{\tetralinevb}
+% \begin{macrocode}
+\def\tetralinevb{\@ifnextchar[{\@tetralinevb}{\@tetralinevb[r]}}
+\def\@tetralinevb[#1]#2{%
+ \iforigpt \typeout{command `tetralinevb' is based on `decalinevb'.}\fi%
+ \expandafter\threech@r#1{}{}%
+ \if\@tmpa r% right-handed set of double bonds
+ \decalinevb[fhK]{#2}% %[fhK] in place of [fhk]
+ \else\if\@tmpa A%aromatic circle
+ \decalinevb[A]{#2}%
+ \else\if\@tmpa e%inner double bond
+ \if\@tmpb a% (A)%
+ \decalinevb[afhK]{#2}%
+ \else\ifx\@tmpb\empty% (A)
+ \decalinevb[afhK]{#2}%
+ \else\if\@tmpb b% (B)
+ \decalinevb[bfhK]{#2}%
+ \else\if\@tmpb c% (C)
+ \decalinevb[cfhK]{#2}%
+ \fi\fi\fi\fi%
+ \else%1998/11/23 by Shinsaku Fujita
+ \decalinevb[@#1]{#2}%
+ \fi\fi\fi%
+}% %end of \tetralinevb macro
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Vertical-top type}
+%
+% The macro |\tetralinevt| is used for drawing naphthalene derivatives
+% of vertical-top type as well as naphthoquinone derivatives of
+% vertical type. The skeleton and endocyclic double bonds are
+% drawn directly, while substituents and exocyclic bonds are placed by
+% useing the inner macro |\decalinevt|.
+% \changes{v1.02}{1998/10/14}{Newly added command}
+%
+% The macro |\tetralinevt| has an argument |SUBSLIST| as well as an optional
+% argument |OPT|. The latter designates a bond pattern in place of
+% individual exocyclic bonds.
+%
+% \begin{verbatim}
+% ********************************
+% * tetraline derivatives *
+% * (vertical-bottom type) *
+% ********************************
+%
+% \tetralinevt[OPT]{SUBSLIST}
+% \end{verbatim}
+%
+% The |OPT| argument contains one or two characters for designate
+% aromatic bond patterns or for naphthoquinone bond patterns.
+%
+% \begin{verbatim}
+%
+% OPT = none : tetraline
+% A : aromatic circle
+%
+% e or ea : 1,2-double bond
+% eb : 2,3-double bond
+% ec : 3,4-double bond
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 4
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+%
+% for n=5 or 8
+%
+% nSa : bias bond
+% This option can be used to avoid over-crowding
+% betweem 1 and 8 or between 4 and 5.
+% \end{verbatim}
+%
+% \begin{verbatim}
+% e.g.
+%
+% \tetralinevt{1==Cl;2==F}
+% \tetralinevt[A]{1==Cl;4==F;2==CH$_{3}$}
+% \tetralinevt[eb]{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl;7==Cl;8==Cl}
+% \end{verbatim}
+%
+% \begin{macro}{\tetralinevt}
+% \begin{macrocode}
+\def\tetralinevt{\@ifnextchar[{\@tetralinevt}{\@tetralinevt[r]}}
+\def\@tetralinevt[#1]#2{%
+ \iforigpt \typeout{command `tetralinevt' is based on `decalinevt'.}\fi%
+ \expandafter\threech@r#1{}{}%
+ \if\@tmpa r% right-handed set of double bonds
+ \decalinevt[fhk]{#2}%
+ \else\if\@tmpa A%aromatic circle
+ \decalinevt[A]{#2}%
+ \else\if\@tmpa e%inner double bond
+ \if\@tmpb a% (A)%
+ \decalinevt[afhk]{#2}%
+ \else\ifx\@tmpb\empty% (A)
+ \decalinevt[afhk]{#2}%
+ \else\if\@tmpb b% (B)
+ \decalinevt[bfhk]{#2}%
+ \else\if\@tmpb c% (C)
+ \decalinevt[cfhk]{#2}%
+ \fi\fi\fi\fi%
+ \else%1998/11/23 by Shinsaku Fujita
+ \decalinevt[@#1]{#2}%
+ \fi\fi\fi%
+}% %end of \tetralinevt macro
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Horizontal type}
+%
+% The macro |\tetralineh| is used for drawing tetraline derivatives
+% of horizontal type.
+%
+% The macro |\tetralineh| has an argument |SUBSLIST| as well as an optional
+% argument |OPT|. The latter designates a bond pattern in place of
+% individual exocyclic bonds.
+%
+% \begin{verbatim}
+% *************************
+% * tetraline derivatives *
+% * (horizontal type) *
+% *************************
+%
+% \tetralineh[OPT]{SUBSLIST}
+% \end{verbatim}
+%
+% The |OPT| argument contains one or two characters for designate
+% aromatic bond patterns or for naphthoquinone bond patterns.
+%
+% \begin{verbatim}
+% OPT = none : tetraline
+% A : aromatic circle
+%
+% e or ea : 1,2-double bond
+% eb : 2,3-double bond
+% ec : 3,4-double bond
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 4
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+%
+% for n=5 or 8
+%
+% nSa : bias bond
+% This option can be used to avoid over-crowding
+% betweem 1 and 8 or between 4 and 5.
+% \end{verbatim}
+%
+% \begin{verbatim}
+% e.g.
+%
+% \tetralineh{1==Cl;2==F}
+% \tetralineh[A]{1==Cl;4==F;2==CH$_{3}$}
+% \tetralineh[eb]{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl;7==Cl;8==Cl}
+% \end{verbatim}
+%
+% \begin{macro}{\tetralineh}
+% \begin{macrocode}
+\def\tetralineh{\@ifnextchar[{\@tetralineh}{\@tetralineh[r]}}
+\def\@tetralineh[#1]#2{%
+ \iforigpt \typeout{command `tetralineh' is based on `decalineh'.}\fi%
+ \expandafter\threech@r#1{}{}%
+ \if\@tmpa r% right-handed set of double bonds
+ \decalineh[fhk]{#2}%
+ \else\if\@tmpa A%aromatic circle
+ \decalineh[A]{#2}%
+ \else\if\@tmpa e%inner double bond
+ \if\@tmpb a% (A)%
+ \decalineh[afhk]{#2}%
+ \else\ifx\@tmpb\empty% (A)
+ \decalineh[afhk]{#2}%
+ \else\if\@tmpb b% (B)
+ \decalineh[bfhk]{#2}%
+ \else\if\@tmpb c% (C)
+ \decalineh[cfhk]{#2}%
+ \fi\fi\fi\fi%
+\else% added 1998/11/23 by S. Fujita
+ \decalineh[@#1]{#2}%
+ \fi\fi\fi%
+}% %end of \tetralineh macro
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Anthracene derivatives}
+% \subsection{Perhydro-anthracene derivatives of Vertical type}
+%
+% The macro |\hanthracenev| is used for drawing perhydroanthracene
+% derivatives of vertical type.
+%
+% The macro |\hanthracenev| has an argument |SUBSLIST| as well as an optional
+% argument |BONDLIST|.
+%
+% \begin{verbatim}
+% ***********************************
+% * perhydro anthracene derivatives *
+% * (vertical type) *
+% ***********************************
+%
+% \hanthracenev[BONDLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one or more
+% characters selected form a to p, each of which indicates
+% the presence of an inner (endcyclic) double bond on the corresponding
+% position. The character A, B, or C indicates an aromatic bond
+% pattern (circle).
+% \changes{v1.02}{1998/10/14}{BONDLIST: o, O, p and P at the fused bond}
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% none : hanthracene
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 3,4-double bond
+% d : 4,4a-double bond
+% e : 10,4a-double bond
+% f : 10,10a-double bond
+% g : 5,10a-double bond
+% h : 5,6-double bond
+% i : 6,7-double bond
+% j : 8,7-double bond
+% k : 8,8a-double bond
+% l : 9,8a-double bond
+% m : 9,9a-double bond
+% n : 1,9a-double bond
+% o : 4a,9a-double bond
+% O : 4a,9a-double bond in the other ring
+% p : 10a,8a-double bond
+% P : 10a,8a-double bond in the other ring
+% A : right aromatic circle
+% B : central aromatic circle
+% C : left aromatic circle
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 10
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% \begin{verbatim}
+%
+% for 11 (fused positions, 9a and 4a)
+%
+% 11FA : alpha single bond at 9a
+% 11FB : beta single bond at 9a
+% 11FU : unspecified single bond at 9a
+% 11GA : alpha single bond at 4a
+% 11GB : beta single bond at 4a
+% 11GU : unspecified single bond at 4a
+% \end{verbatim}
+%
+% \begin{verbatim}
+%
+% for 12 (fused positions, 8a and 10a)
+%
+% 12FA : alpha single bond at 8a
+% 12FB : beta single bond at 8a
+% 12FU : unspecified single bond at 8a
+% 12GA : alpha single bond at 10a
+% 12GB : beta single bond at 10a
+% 12GU : unspecified single bond at 10a
+% \end{verbatim}
+%
+% \begin{verbatim}
+% e.g.
+%
+% \hanthracenev{1==Cl;2==F;{{10}}==OH}
+% \hanthracenev[c]{1==Cl;4==F;2==CH$_{3}$;
+% {{11}FA}==OH;{{11}FB}==OH}
+% \hanthracenev[eb]{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl;7==Cl;8==Cl}
+% \end{verbatim}
+%
+% \changes{v1.02}{1998/10/31}{The command \cs{setdecaringv} has
+% been stopped to use.}
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylpositionh}, \cs{if@ylsw}
+% \cs{ylfusedposition},
+% \cs{yl@shiftii}, \cs{@ylii}, \cs{@@ylii}, \cs{yl@shifti}, \cs{@yli},
+% \cs{@yli}, \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/12/25}{Added: fused rings}
+%
+% \begin{macro}{\hanthracenev}
+% \begin{macrocode}
+\def\hanthracenev{\@ifnextchar[{\@hanthracenev[@}{\@hanthracenev[r]}}
+\def\@hanthracenev[#1]#2{%
+% bonds for outer skeleton
+\@reset@ylsw\reset@@yl
+\ylposition{#2}{-7}{0}{2}{0}% %for 8 positions
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\else\ylposition{#2}{-1}{3}{7}{0}% for 5 to 7 positions
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi\else
+\ylposition{#2}{0}{0}{5}{0}% for 1 to 4 positions
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-684}\def\@@yli{0}\fi\else
+\ylposition{#2}{-8}{0}{2}{0}%for 9-position
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-342}\def\@@yli{0}\fi\else
+\ylposition{#2}{-6}{3}{5}{0}%for 10-position
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-342}\def\@@yli{0}\fi\else
+\ylfusedposition{#2}{-11}{-1}{1}{0}% for 9a and 4a
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-342}\def\@@yli{0}\fi\else
+\ylfusedposition{#2}{-12}{-1}{1}{0}% for 8a and 10a
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi\fi
+\if@ylsw
+ \yl@shiftii=\@ylii
+ \ifx\@@ylii\empty\else
+ \advance\yl@shiftii\@@ylii\fi
+ \yl@shifti=\@yli
+ \ifx\@@yli\empty\else
+ \advance\yl@shifti\@@yli\fi
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{sfpicture}(0,0)(-\yl@shiftii,-\yl@shifti)%
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+ \begin{sfpicture}(1200,880)(-\shiftii,-\shifti)%
+ \origptoutput{hanthracenev}%
+\fi
+ \Put@Line(0,406)(-5,-3){171}% %bond 8-7
+ \Put@Line(0,406)(5,-3){171}% %bond 8-8a
+ \Put@Line(0,0)(-5,3){171}% %bond 5-6
+ \Put@Line(0,0)(5,3){171}% %bond 5-10a
+ \Put@Line(171,103)(0,1){200}% %bond 10a-8a
+ \Put@Line(-171,103)(0,1){200}% %bond 6-7
+ \Put@Line(342,406)(-5,-3){171}% %bond 9-8a
+ \Put@Line(342,406)(5,-3){171}% %bond 9-9a
+ \Put@Line(342,0)(-5,3){171}% %bond 10-10a
+ \Put@Line(342,0)(5,3){171}% %bond 10-4a
+ \Put@Line(513,103)(0,1){200}% %bond 4a-9a
+ %%%%
+ \Put@Line(684,406)(-5,-3){171}% %bond 1-9a 1-6
+ \Put@Line(684,406)(5,-3){171}% %bond 1-2 1-2
+ \Put@Line(855,103)(0,1){200}% %bond 3-2 3-2
+ \Put@Line(684,0)(5,3){171}% %bond 4-3 4-3
+ \Put@Line(684,0)(-5,3){171}% %bond 4-4a 4-5
+% inner double bonds
+\@tfor\member:=#1\do{%
+\if\member r%no endcyclic double bonds
+\else\if\member a%
+ \Put@Line(690,364)(5,-3){126}% %double bond 1-2
+\else\if\member b%
+ \Put@Line(822,129)(0,1){148}% %double bond 3-2
+\else\if\member c%
+ \Put@Line(690,42)(5,3){126}% %double bond 4-3
+\else\if\member d%
+ \Put@Line(690,42)(-5,3){126}% %double bond 4-4a
+\else\if\member e%
+ \Put@Line(348,42)(5,3){126}% %double bond 10-4a
+\else\if\member f%
+ \Put@Line(348,42)(-5,3){126}% %double bond 10-10a
+\else\if\member g%
+ \Put@Line(6,42)(5,3){126}% %double bond 5-10a
+\else\if\member h%
+ \Put@Line(-6,42)(-5,3){126}% %double bond 5-6
+\else\if\member i%
+ \Put@Line(-138,129)(0,1){148}% %double bond 6-7
+\else\if\member j%
+ \Put@Line(-6,364)(-5,-3){126}% %double bond 8-7
+\else\if\member k%
+ \Put@Line(6,364)(5,-3){126}% %double bond 8-8a
+\else\if\member l%
+ \Put@Line(348,364)(-5,-3){126}% %double bond 9-8a
+\else\if\member m%
+ \Put@Line(348,364)(5,-3){126}% %double bond 9-9a
+\else\if\member n%
+ \Put@Line(690,364)(-5,-3){126}% %double bond 1-9a
+\else\if\member o%
+ \Put@Line(544,129)(0,1){148}% %double bond 4a-9a
+\else\if\member O%
+ \Put@Line(482,129)(0,1){148}% %double bond 4a-9a at the other ring
+\else\if\member p%
+ \Put@Line(138,129)(0,1){148}% %double bond 10a-8a
+\else\if\member P%
+ \Put@Line(204,129)(0,1){148}% %double bond 10a-8a at the other ring
+\else\if\member C%left aromatic circle
+ \Put@oCircle(0,203){240}% %circle
+\else\if\member B%right aromatic circle
+ \Put@oCircle(342,203){240}% %circle
+\else\if\member A%right aromatic circle
+ \Put@oCircle(684,203){240}% %circle
+\else
+%setting fused rings
+ \expandafter\twoCH@R\member//%
+ \set@fusion@hanthrav
+\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}%
+%exocyclic bonds and substituents
+\global\drawsamesubsttrue%2002/05/30 warning on
+\Put@Direct(0,0){\setsixringv{#2}{-7}{0}{2}{0}}% %for 8 positions
+\global\drawsamesubstfalse%2002/05/30 warning off
+\Put@Direct(0,0){\setsixringv{#2}{-1}{3}{7}{0}}% %for 5 to 7 positions
+\Put@Direct(684,0){\setsixringv{#2}{0}{0}{5}{0}}% %for 1 to 4 positions
+\Put@Direct(342,0){\setsixringv{#2}{-8}{0}{2}{0}}%for 9-position
+\Put@Direct(342,0){\setsixringv{#2}{-6}{3}{5}{0}}%for 10-position
+%bonds and substituents for fused positions
+\Put@Direct(0,0){\setfusedbond{#2}{-12}{-1}{1}{0}}% for 8a and 10a
+\Put@Direct(342,0){\setfusedbond{#2}{-11}{-1}{1}{0}}% for 9a and 4a
+\end{sfpicture}}% %end of \hanthracenev macro%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Anthracene and anthraquinone derivatives}
+%
+% The macro |\anthracenev| is used for drawing anthracene derivatives
+% of vertical type.
+%
+% The macro |\anthracenev| has an argument |SUBSLIST| as well as an optional
+% argument |OPT|. The latter designates a bond pattern in place of
+% individual exocyclic bonds.
+%
+% \begin{verbatim}
+% ********************************************
+% * anthracene and anthraquinone derivatives *
+% * (vertical type) *
+% ********************************************
+%
+% \anthracenev[OPT]{SUBSLIST}
+% \end{verbatim}
+%
+% The |OPT| argument contains one or two characters for designate
+% aromatic bond patterns or for naphthoquinone bond patterns.
+%
+% \begin{verbatim}
+% OPT (bond pattern)
+%
+% none or r : right-handed double bonds
+% l : left-handed double bonds
+% A : aromatic circle
+%
+% p or pa : 9,10-anthraquinone (A)
+% pA : 9,10-anthraquinone (circle type)
+%
+% o : 1,2-anthraquinone (A)
+% oa : 1,2-anthraquinone (A')
+% oA : 1,2-anthraquinone (circle type)
+% ob : 2,3-antharquinone (B)
+% oc : 1,2-anthraquinone (C)
+%
+% q : 1,4-anthraquinone (A)
+% qa : 1,4-anthraquinone (A')
+% qA : 1,4-anthraquinone (circle type)
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 10
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% \begin{verbatim}
+% e.g.
+%
+% \anthracenev{1==Cl;2==F;0FA==;0GA==}
+% \anthracenev[A]{1==Cl;4==F;2==CH$_{3}$}
+% \anthracenev[eb]{1D==O;4SA==MeO;4SB==OMe;%
+% 5W==Cl;6==Cl;7==Cl;8==Cl}
+% \end{verbatim}
+%
+% \begin{macro}{\anthracenev}
+% \begin{macrocode}
+\def\anthracenev{\@ifnextchar[{\@anthracenev}{\@anthracenev[r]}}
+\def\@anthracenev[#1]#2{%
+ \iforigpt \typeout{command `anthracenev' is %
+ based on `hanthracenev'.}\fi%
+%% \expandafter\threech@r#1{}{}%error1998/11/23 by Shinsaku Fujita
+ \expandafter\twoCH@R#1//%
+ \if\@tmpa r% right-handed set of double bonds
+ \hanthracenev[acflhjo]{#2}%
+ \else\if\@tmpa l% left-handed set of double bonds
+ \hanthracenev[acehjmp]{#2}%
+ \else\if\@tmpa A%aromatic circle
+ \hanthracenev[ABC]{#2}%
+ \else\if\@tmpa p%9,10-quinone
+ \if\@tmpb a% (A)%
+ \hanthracenev[achjop]{#2}%
+ \else\ifx\@tmpb\empty% (A)
+ \hanthracenev[achjop]{#2}%
+ \else\if\@tmpb A% circle type
+ \hanthracenev[AC]{#2}%
+ \else
+ \hanthracenev[achjop]{#2}%
+ \fi\fi\fi%
+ \else\if\@tmpa o%o-quinone
+ \if\@tmpb a% (A)%
+ \hanthracenev[cfjhlo]{#2}%
+ \else\ifx\@tmpb\empty% (A)
+ \hanthracenev[cehjmp]{#2}%
+ \else\if\@tmpb b% (B)
+ \hanthracenev[dfhjln]{#2}%
+ \else\if\@tmpb c% (C)
+ \hanthracenev[aehjmp]{#2}%
+ \else\if\@tmpb A% cicle type
+ \hanthracenev[cBC]{#2}%
+ \fi\fi\fi\fi\fi%
+ \else\if\@tmpa q%1,4-quinone
+ \if\@tmpb a% (A)%
+ \hanthracenev[bfhjlo]{#2}%
+ \else\ifx\@tmpb\empty% (A)
+ \hanthracenev[behjmp]{#2}%
+ \else\if\@tmpb A% circle type
+ \hanthracenev[bBC]{#2}%
+ \else%
+ \hanthracenev[behjmp]{#2}%
+ \fi\fi\fi%
+ \else
+ \hanthracenev[@#1]{#2}%
+ \fi\fi\fi\fi\fi\fi%
+}% %end of \anthracenev macro%
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Phenanthrene derivatives}
+% \subsection{Perhydro-phenanthrene derivatives of Vertical type}
+%
+% The macro |\hphenanthrenev| is used for drawing perhydrophenanthrene
+% derivatives of vertical type.
+%
+% The macro |\hphenanthrenev| has an argument |SUBSLIST| as well as an
+% optional argument |BONDLIST|.
+%
+% \begin{verbatim}
+% *************************************
+% * perhydro phenanthrene derivatives *
+% * (vertical type) *
+% *************************************
+%
+% \hphenanthrenev[BONDLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one or more
+% characters selected form a to p, each of which indicates
+% the presence of an inner (endcyclic) double bond on the corresponding
+% position. The character A, B, or C indicates an aromatic bond
+% pattern (circle).
+% \changes{v1.02}{1998/10/14}{BONDLIST: o, O, p and P at the fused bond}
+%
+% \begin{verbatim}
+%
+% BONDLIST =
+%
+% none : hphenanthrene
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 3,4-double bond
+% d : 4,4a-double bond
+% e : 4a,4b-double bond
+% f : 4b,5-double bond
+% g : 5,6-double bond
+% h : 6,7-double bond
+% i : 7,8-double bond
+% j : 8,8a-double bond
+% k : 8a,9-double bond
+% l : 9,10-double bond
+% m : 10,10a-double bond
+% n : 1,10a-double bond
+% o : 4a,10a-double bond
+% O : 4a,10a-double bond in the other ring
+% p : 4b,8a-double bond
+% P : 4b,8a-double bond in the other ring
+% A : right aromatic circle
+% B : central aromatic circle
+% C : left aromatic circle
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 10
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+%
+% for 11 (fused positions, 4a and 10a)
+%
+% 11FA : alpha single bond at 4a
+% 11FB : beta single bond at 4a
+% 11FC : alpha single bond (downward) at 4a
+% 11FD : beta single bond (downward) at 4a
+% 11FU : unspecified single bond at 4a
+% 11GA : alpha single bond at 10a
+% 11GB : beta single bond at 10a
+% 11FC : alpha single bond (upward) at 10a
+% 11FD : beta single bond (upward) at 10a
+% 11GU : unspecified single bond at 10a
+%
+% for 12 (fused positions, 4b and 8a)
+%
+% 12FA : alpha single bond at 4b
+% 12FB : beta single bond at 4b
+% 12FU : unspecified single bond at 4b
+% 12GA : alpha single bond at 8a
+% 12GB : beta single bond at 8a
+% 12GU : unspecified single bond at 8a
+% \end{verbatim}
+%
+% \begin{verbatim}
+% e.g.
+%
+% \hphenanthrenev{1==Cl;2==F;{{10}}==OH}
+% \hphenanthrenev[c]{1==Cl;4==F;2==CH$_{3}$;
+% {{11}FA}==OH;{{11}FB}==OH}
+% \hphenanthrenev[eb]{1D==O;4SA==MeO;4SB==OMe;
+% 5W==Cl;6==Cl;7==Cl;8==Cl}
+% \end{verbatim}
+% \changes{v1.02}{1998/10/15}{The command \cs{setdecaringv} has
+% been stopped to use.}
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylpositionh}, \cs{if@ylsw}
+% \cs{ylfusedposition},
+% \cs{yl@shiftii}, \cs{@ylii}, \cs{@@ylii}, \cs{yl@shifti}, \cs{@yli},
+% \cs{@yli}, \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/11/23}{Added: Fused rings}
+%
+% \begin{macro}{\hphenanthrenev}
+% \begin{macrocode}
+\def\hphenanthrenev{%
+ \@ifnextchar[{\@hphenanthrenev[@}{\@hphenanthrenev[r]}}
+\def\@hphenanthrenev[#1]#2{%
+% bonds for outer skeleton
+\@reset@ylsw\reset@@yl
+\ylposition{#2}{-4}{0}{2}{0}% %for 5 position
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\else
+\ylposition{#2}{12}{3}{7}{-1}% %for 6 to 8 positions
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi\else
+\ylposition{#2}{13}{2}{5}{-1}% %for 9 to 10 positions
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-342}\def\@@yli{0}\fi\else
+\ylposition{#2}{4}{0}{4}{-1}% %for 1 to 3 positions
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-513}\def\@@yli{-303}\fi\else
+\ylposition{#2}{2}{5}{7}{0}% %for 4-position
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-513}\def\@@yli{-303}\fi\else
+\ylfusedposition{#2}{-12}{-1}{1}{0}% % for 4b and 8a
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi\else
+\ylfusedposition{#2}{-10}{0}{2}{0}% % for 4a and 10a
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-342}\def\@@yli{0}\fi\fi
+\if@ylsw
+ \yl@shiftii=\@ylii
+ \ifx\@@ylii\empty\else
+ \advance\yl@shiftii\@@ylii\fi
+ \yl@shifti=\@yli
+ \ifx\@@yli\empty\else
+ \advance\yl@shifti\@@yli\fi
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{sfpicture}(0,0)(-\yl@shiftii,-\yl@shifti)
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+ \begin{sfpicture}(1200,1200)(-\shiftii,-\shifti)
+ \origptoutput{hphenanthrenev}%
+\fi
+ \Put@Line(0,406)(-5,-3){171}% %bond 6-5
+ \Put@Line(0,406)(5,-3){171}% %bond 5-4a
+ \Put@Line(0,0)(-5,3){171}% %bond 8-7
+ \Put@Line(0,0)(5,3){171}% %bond 8-8a
+ \Put@Line(171,103)(0,1){200}% %bond 8a-4b
+ \Put@Line(-171,103)(0,1){200}% %bond 7-6
+ \Put@Line(342,406)(-5,-3){171}% %bond 4a-4b
+ \Put@Line(342,406)(5,-3){171}% %bond 4a-10a
+ \Put@Line(342,0)(-5,3){171}% %bond 9-8a
+ \Put@Line(342,0)(5,3){171}% %bond 9-10
+ \Put@Line(513,103)(0,1){200}% %bond 10-10a
+ %%%%
+ \Put@Line(342,406)(0,1){200}% %bond 4a-4
+ \Put@Line(513,709)(-5,-3){171}% %bond 3-4
+ \Put@Line(513,709)(5,-3){171}% %bond 3-2
+ \Put@Line(684,406)(0,1){200}% %bond 1-2
+ \Put@Line(513,303)(5,3){171}% %bond 10a-1
+% inner double bonds
+\@tfor\member:=#1\do{%
+\if\member r%no endcyclic double bonds
+\else\if\member a%
+ \Put@Line(651,432)(0,1){148}% %double bond 1-2
+\else\if\member b%
+ \Put@Line(519,667)(5,-3){126}% %double bond 3-2
+\else\if\member c%
+ \Put@Line(519,667)(-5,-3){126}% %double bond 3-4
+\else\if\member d%
+ \Put@Line(375,432)(0,1){148}% %double bond 4a-4
+\else\if\member e%
+ \Put@Line(348,364)(-5,-3){126}% %double bond 4a-4b
+\else\if\member f%
+ \Put@Line(6,364)(5,-3){126}% %double bond 5-4b
+\else\if\member g%
+ \Put@Line(-6,364)(-5,-3){126}% %double bond 5-6
+\else\if\member h%
+ \Put@Line(-138,129)(0,1){148}% %double bond 6-7
+\else\if\member i%
+ \Put@Line(-6,42)(-5,3){126}% %double bond 8-7
+\else\if\member j%
+ \Put@Line(6,42)(5,3){126}% %double bond 8-8a
+\else\if\member k%
+ \Put@Line(348,42)(-5,3){126}% %double bond 9-8a
+\else\if\member l%
+ \Put@Line(348,42)(5,3){126}% %double bond 9-10
+\else\if\member m%
+ \Put@Line(482,129)(0,1){148}% %double bond 10-10a
+\else\if\member n%
+ \Put@Line(519,345)(5,3){126}% %double bond 10a-1
+\else\if\member o%
+ \Put@Line(507,345)(-5,3){126}% %double bond 10a-4a
+\else\if\member O%
+ \Put@Line(348,364)(5,-3){126}% %double bond 4a-10a
+\else\if\member p%
+ \Put@Line(138,129)(0,1){148}% %double bond 8a-4b
+\else\if\member P%
+ \Put@Line(204,129)(0,1){148}% %double bond 8a-4b
+\else\if\member C%left aromatic circle
+ \Put@oCircle(0,203){240}% %circle
+\else\if\member B%right aromatic circle
+ \Put@oCircle(342,203){240}% %circle
+\else\if\member A%right aromatic circle
+ \Put@oCircle(513,506){240}% %circle
+\else
+% setting fused rings
+ \expandafter\twoCH@R\member//%
+ \set@fusion@hphenanv
+\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}%
+%exocyclic bonds and substituents
+\global\drawsamesubsttrue%2002/05/30 warning on
+\Put@Direct(0,0){\setsixringv{#2}{-4}{0}{2}{0}}% %for 5 position
+\global\drawsamesubstfalse%2002/05/30 warning off
+\Put@Direct(0,0){\setsixringv{#2}{12}{3}{7}{-1}}% %for 6 to 8 positions
+\Put@Direct(342,0){\setsixringv{#2}{13}{2}{5}{-1}}% %for 9 to 10 positions
+\Put@Direct(513,303){\setsixringv{#2}{4}{0}{4}{-1}}% %for 1 to 3 positions
+\Put@Direct(513,303){\setsixringv{#2}{2}{5}{7}{0}}% %for 4-position
+%bonds and substituents for fused positions
+\Put@Direct(0,0){\setfusedbond{#2}{-12}{-1}{1}{0}}% % for 4b and 8a
+\Put@Direct(342,0){\setfusedbond{#2}{-10}{0}{2}{0}}% % for 4a and 10a
+\end{sfpicture}}% %end of \hphenanthrenev macro%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Phenanthrene and phenanthroquinone derivatives}
+%
+% The macro |\phenanthrenev| is used for drawing phenanthrene derivatives
+% of vertical type.
+%
+% The macro |\anthracenev| has an argument |SUBSLIST| as well as an optional
+% argument |OPT|. The latter designates a bond pattern in place of
+% individual exocyclic bonds.
+%
+% \begin{verbatim}
+% *********************************
+% * phenanthrene and derivatives *
+% * (vertical type) *
+% *********************************
+%
+% \phenanthrenev[OPT]{SUBSLIST}
+% \end{verbatim}
+%
+% The |OPT| argument contains one or two characters for designate
+% aromatic bond patterns or for naphthoquinone bond patterns.
+%
+% \begin{verbatim}
+% OPT (bond pattern)
+%
+% none or r : right-handed double bonds
+% A : aromatic circle
+%
+% p or pa : 1,4-quinone (A)
+% pA : 1,4-quinone (circle type)
+%
+% o or oa : 1,2-quinone (A)
+% oA : 1,2-quinone (circle type)
+% ob : 2,3-quinone (B)
+% oc : 3,4-anthraquinone (C)
+%
+% q or qa : 9,10-quinone
+% qA : 9,10-quinone (circle type)
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 10
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% \begin{verbatim}
+% e.g.
+%
+% \phenanthrenev{1==Cl;2==F}
+% \phenanthrenev[A]{1==Cl;4==F;2==CH$_{3}$}
+% \phenanthrenev[eb]{1D==O;4SA==MeO;4SB==OMe;%
+% 5W==Cl;6==Cl;7==Cl;8==Cl}
+% \end{verbatim}
+%
+% \begin{macro}{\phenanthrenev}
+% \begin{macrocode}
+\def\phenanthrenev{\@ifnextchar[{\@phenanthrenev}{\@phenanthrenev[r]}}
+\def\@phenanthrenev[#1]#2{%
+ \iforigpt \typeout{command `phenanthrenev' is %
+ based on `hphenantherenv'.}\fi%
+ \expandafter\threech@r#1{}{}%
+ \if\@tmpa r% right-handed set of double bonds
+ \hphenanthrenev[acgilop]{#2}%
+ \else\if\@tmpa A%aromatic circle
+ \hphenanthrenev[ABC]{#2}%
+ \else\if\@tmpa p%1,4-quinone
+ \if\@tmpb a% (A)%
+ \hphenanthrenev[bgilop]{#2}%
+ \else\ifx\@tmpb\empty% (A)
+ \hphenanthrenev[bgilop]{#2}%
+ \else\if\@tmpb A% circle type
+ \hphenanthrenev[BCb]{#2}%
+ \else
+ \hphenanthrenev[bgilop]{#2}%
+ \fi\fi\fi%
+ \else\if\@tmpa o%o-quinone
+ \if\@tmpb a% (A)%
+ \hphenanthrenev[cgilop]{#2}%
+ \else\ifx\@tmpb\empty% (A)
+ \hphenanthrenev[cgilop]{#2}%
+ \else\if\@tmpb b% (B)
+ \hphenanthrenev[dgilnp]{#2}%
+ \else\if\@tmpb c% (C)
+ \hphenanthrenev[agilop]{#2}%
+ \else\if\@tmpb A% cicle type
+ \hphenanthrenev[cBC]{#2}%
+ \fi\fi\fi\fi\fi%
+ \else\if\@tmpa q%9,10-quinone
+ \if\@tmpb a% (A)%
+ \hphenanthrenev[acgiop]{#2}%
+ \else\ifx\@tmpb\empty% (A)
+ \hphenanthrenev[acgiop]{#2}%
+ \else\if\@tmpb A% circle type
+ \hphenanthrenev[AC]{#2}%
+ \else
+ \hphenanthrenev[acgiop]{#2}%
+ \fi\fi\fi%
+ \else
+ \hphenanthrenev[@#1]{#2}%
+ \fi\fi\fi\fi\fi%
+}% %end of \phenanthrenev macro%
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Steroids}
+% \subsection{Steroids without a chain}
+%
+% The macro |\steroid| is used for drawing steroids.
+%
+% The macro |\steroid| has an argument |SUBSLIST| as well as an
+% optional argument |BONDLIST|.
+%
+% \begin{verbatim}
+% ***********************
+% * steroid derivatives *
+% ***********************
+%
+% \steroid[BONDLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one or more
+% characters selected form a to t, each of which indicates
+% the presence of an inner (endcyclic) double bond on the corresponding
+% position. The character A, B, or C indicates an aromatic bond
+% pattern (circle).
+% \changes{v1.02}{1998/10/15}{BONDLIST: k, K, h, H, o and O
+% at the fused bond}
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% none: steroid skeleton
+% a : 1,2-double bond b : 2,3-double bond
+% c : 3,4-double bond d : 4,5-double bond
+% e : 6,5-double bond f : 6,7-double bond
+% g : 7,8-double bond
+% h : 9,8-double bond
+% h : 9,8-double bond in the other bond
+% i : 9,10-double bond j : 1,10-double bond
+% k : 5,10-double bond
+% K : 5,10-double bond in the other bond
+% l : 9,11-double bond
+% m : 12,11-double bond n : 12,13-double bond
+% o : 14,13-double bond
+% O : 14,13-double bond in the other bond
+% p : 8,14-double bond
+% q : 14,15-double bond r : 15,16-double bond
+% s : 17,16-double bond t : 17,13-double bond
+% A : aromatic A ring B : aromatic B ring
+% C : aromatic C ring
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 17 (execpt fused positions)
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom (boldface)
+% nB : beta single bond at n-atom (dotted line)
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% For numbers larger than 9 (two digits), you should designate
+% the SUBSLIST as
+%
+% \begin{verbatim}
+% {{11}A}==Cl;{{12}SA}==H;{{12}SB}==Cl;
+% \end{verbatim}
+%
+% \begin{verbatim}
+% for n = 5,8,9,10,13 and 14 (fused positions)
+%
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom (boldface)
+% nB : beta single bond at n-atom (dotted line)
+% nU : unspecified single bond at n-atom
+% \end{verbatim}
+%
+% \begin{verbatim}
+% e.g.
+%
+% \steroid{1==Cl;2==F;{{10}}==OH}
+% \steroid[c]{1==Cl;4==F;2==CH$_{3}$;
+% {{11}SA}==OH;{{11}SB}==OH}
+% \steroid[eb]{1D==O;4SA==MeO;4SB==OMe;
+% 5==Cl;6==Cl;7==Cl;8==Cl}
+% \end{verbatim}
+% \changes{v1.02}{1998/10/15}{The command \cs{setdecaringv} has
+% been stopped to use.}
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylpositionh}, \cs{if@ylsw}
+% \cs{ylfusedposition},
+% \cs{yl@shiftii}, \cs{@ylii}, \cs{@@ylii}, \cs{yl@shifti}, \cs{@yli},
+% \cs{@yli}, \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v1.02}{1998/10/31}{Inner commands \cs{yl@steroidposition}
+% and \cs{@steroidskeleton} are separated from the \cs{@steroid} command.}
+% \changes{v2.00}{1998/12/5}{Add: fused rings}
+%
+% \begin{macro}{\steroid}
+% \begin{macro}{\yl@steroidposition}
+% \begin{macro}{\@steroidskeleton}
+% \begin{macrocode}
+\def\steroid{\@ifnextchar[{\@steroid[@}{\@steroid[Z]}}
+\def\@steroid[#1]#2{%
+%initialize bug fix 2010/10/01
+\iniatom\iniflag%initialize
+% bonds for outer skeleton
+\@reset@ylsw\reset@@yl
+\yl@steroidposition{#2}%
+\if@ylsw
+ \yl@shiftii=\@ylii
+ \ifx\@@ylii\empty\else
+ \advance\yl@shiftii\@@ylii\fi
+ \yl@shifti=\@yli
+ \ifx\@@yli\empty\else
+ \advance\yl@shifti\@@yli\fi
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{sfpicture}(0,0)(-\yl@shiftii,-\yl@shifti)
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+ \begin{sfpicture}(1600,1300)(-\shiftii,-\shifti)
+ \origptoutput{steroid}%
+\fi
+ \Put@Direct(0,0){\@steroidskeleton{#1}{#2}}%
+\end{sfpicture}}% %end of \steroid macro%
+% \end{macrocode}
+%
+% The |\yl@steroidposition| is derived from |\ylposition| and
+% |\ylatombondposition| to use in the |\steroid| command as well as
+% in the |\steroidchain| command.
+% \changes{v1.02}{1998/10/31}{Inner commands \cs{yl@steroidposition}
+% and \cs{@steroidskeleton} are separated from the \cs{@steroid} command.}
+%
+% \begin{macrocode}
+\def\yl@steroidposition#1{%
+\ylposition{#1}{0}{0}{2}{0}% %for 1
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\else
+\ylposition{#1}{8}{3}{7}{-1}% %for 2 to 4 positions
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi\else
+\ylposition{#1}{10}{2}{5}{-1}% %for 6 to 7 positions
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-342}\def\@@yli{0}\fi\else
+\ylposition{#1}{-11}{0}{2}{0}%for 12 position
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-513}\def\@@yli{-303}\fi\else
+\ylposition{#1}{-5}{5}{7}{0}% %for 11 position
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-513}\def\@@yli{-303}\fi\else
+\ylposition{#1}{18}{0}{4}{-1}%for 15 to 17 positions
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-855}\def\@@yli{-303}\fi\else
+\ylatombondposition{#1}{-4}{7}% % for 5
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-171}\def\@@yli{-103}\fi\else
+\ylatombondposition{#1}{-9}{1}% % for 10
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-171}\def\@@yli{-303}\fi\else
+\ylatombondposition{#1}{-7}{1}% % for 8
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-513}\def\@@yli{-303}\fi\else
+\ylatombondposition{#1}{-8}{7}% % for 9
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-342}\def\@@yli{-406}\fi\else
+\ylatombondposition{#1}{-13}{7}% % for 14
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-684}\def\@@yli{-406}\fi\else
+\ylatombondposition{#1}{-12}{1}% % for 13
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-684}\def\@@yli{-606}\fi\fi%
+}% end of \yl@steroidposition
+% \end{macrocode}
+%
+% The |\@steroidskeleton| is separated from the definition of |\steroid|
+% so as to be used also in the definition of |\steroidchain|.
+% \changes{v1.02}{1998/10/31}{Inner commands \cs{yl@steroidposition}
+% and \cs{@steroidskeleton} are separated from the \cs{@steroid} command.}
+% \changes{v2.00}{1998/11/23}{Added: fused rings}
+%
+% \begin{macrocode}
+\def\@steroidskeleton#1#2{%
+ \Put@Line(0,406)(-5,-3){171}% %bond 1-2
+ \Put@Line(0,406)(5,-3){171}% %bond 1-10
+ \Put@Line(0,0)(-5,3){171}% %bond 4-3
+ \Put@Line(0,0)(5,3){171}% %bond 4-5
+ \Put@Line(171,103)(0,1){200}% %bond 5-10
+ \Put@Line(-171,103)(0,1){200}% %bond 3-2
+ \Put@Line(342,406)(-5,-3){171}% %bond 9-10
+ \Put@Line(342,406)(5,-3){171}% %bond 9-8
+ \Put@Line(342,0)(-5,3){171}% %bond 6-5
+ \Put@Line(342,0)(5,3){171}% %bond 6-7
+ \Put@Line(513,103)(0,1){200}% %bond 7-8
+ %%%%
+ \Put@Line(342,406)(0,1){200}% %bond 9-11
+ \Put@Line(513,709)(-5,-3){171}% %bond 12-11
+ \Put@Line(513,709)(5,-3){171}% %bond 12-13
+ \Put@Line(684,406)(0,1){200}% %bond 14-13
+ \Put@Line(513,303)(5,3){171}% %bond 8-14
+ %%%%
+ \Put@Line(855,709)(-5,-3){171}% %bond 17-13
+ \Put@Line(855,709)(5,-3){171}% %bond 17-16
+ \Put@Line(1026,406)(0,1){200}% %bond 15-16
+ \Put@Line(684,406)(1,0){342}% %bond 14-15
+% inner double bonds
+\@tfor\member:=#1\do{%
+\if\member Z%no endcyclic double bonds
+\else\if\member a%
+ \Put@Line(-6,364)(-5,-3){126}% %double bond 1-2 5-6
+\else\if\member b%
+ \Put@Line(-138,129)(0,1){148}% %double bond 3-2 6-7
+\else\if\member c%
+ \Put@Line(-6,42)(-5,3){126}% %double bond 4-3 8-7
+\else\if\member d%
+ \Put@Line(6,42)(5,3){126}% %double bond 4-5 8-8a
+\else\if\member e%
+ \Put@Line(348,42)(-5,3){126}% %double bond 6-5 9-8a
+\else\if\member f%
+ \Put@Line(348,42)(5,3){126}% %double bond 6-7 9-10
+\else\if\member g%
+ \Put@Line(482,129)(0,1){148}% %double bond 7-8 10-10a
+\else\if\member h%
+ \Put@Line(507,345)(-5,3){126}% %double bond 8-9 10a-4a
+\else\if\member H%
+ \Put@Line(348,364)(5,-3){126}% %double bond 9-8 4a-10a
+\else\if\member i%
+ \Put@Line(348,364)(-5,-3){126}% %double bond 9-10 4a-4b
+\else\if\member j%
+ \Put@Line(6,364)(5,-3){126}% %double bond 1-10 5-4b
+\else\if\member k%
+ \Put@Line(138,129)(0,1){148}% %double bond 5-10 8a-4b
+\else\if\member K%
+ \Put@Line(204,129)(0,1){148}% %double bond 5-10 8a-4b
+\else\if\member l%
+ \Put@Line(375,432)(0,1){148}% %double bond 9-11 4-5
+\else\if\member m%
+ \Put@Line(519,667)(-5,-3){126}% %double bond 12-11 3-4
+\else\if\member n%
+ \Put@Line(519,667)(5,-3){126}% %double bond 12-13 3-2
+\else\if\member o%
+ \Put@Line(651,432)(0,1){148}% %double bond 13-14 1-2
+\else\if\member O%
+ \Put@Line(717,432)(0,1){148}% %double bond 13-14 1-2
+\else\if\member p%
+ \Put@Line(519,345)(5,3){126}% %double bond 8-14 10a-1
+\else\if\member q%
+ \Put@Line(720,439)(1,0){260}% %double bond 14-15
+\else\if\member r%
+ \Put@Line(993,432)(0,1){148}% %double bond 15-16 1-2
+\else\if\member s%
+ \Put@Line(861,667)(5,-3){126}% %double bond 17-16 3-2
+\else\if\member t%
+ \Put@Line(861,667)(-5,-3){126}% %double bond 17-13 3-4
+\else\if\member A%left aromatic circle
+ \Put@oCircle(0,203){240}% %circle
+\else\if\member B%right aromatic circle
+ \Put@oCircle(342,203){240}% %circle
+\else\if\member C%right aromatic circle
+ \Put@oCircle(513,506){240}% %circle
+\else
+% setting fused rings
+ \expandafter\twoCH@R\member//%
+ \set@fusion@steroid
+\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+\fi\fi\fi\fi\fi\fi\fi\fi\fi}%
+%exocyclic bonds and substituents
+\iniflag
+\global\drawsamesubsttrue%2002/05/30 warning on
+\Put@Direct(0,0){\setsixringv{#2}{0}{0}{2}{0}}% %for 1
+\global\drawsamesubstfalse%2002/05/30 warning off
+\Put@Direct(0,0){\setsixringv{#2}{8}{3}{7}{-1}}% %for 2 to 4 positions
+\Put@Direct(342,0){\setsixringv{#2}{10}{2}{5}{-1}}% %for 6 to 7 positions
+\Put@Direct(513,303){\setsixringv{#2}{-11}{0}{2}{0}}%for 12 position
+\Put@Direct(513,303){\setsixringv{#2}{-5}{5}{7}{0}}% %for 11 position
+\Put@Direct(855,303){\setsixringv{#2}{18}{0}{4}{-1}}%for 15 to 17 positions
+%bonds and substituents for fused positions
+\Put@Direct(171,103){\setatombond{#2}{-4}{7}}% % for 5
+\Put@Direct(171,303){\setatombond{#2}{-9}{1}}% % for 10
+\Put@Direct(513,303){\setatombond{#2}{-7}{1}}% % for 8
+\Put@Direct(342,406){\setatombond{#2}{-8}{7}}% % for 9
+\Put@Direct(684,406){\setatombond{#2}{-13}{7}}% % for 14
+\Put@Direct(684,606){\setatombond{#2}{-12}{1}}% % for 13
+}% end of \@steroidskeleton
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The macro |\set@fusion@steroid| is an inner command contained
+% in the definition of |\steroidskeleton|, where
+% the macro is used for setting an additive
+% or a fused ring at each bond (designated by |\@@tmpa|). The
+% fused ring is typeset by the inner command |\set@fusionadd@sixv|.
+%
+% \begin{macro}{\set@fusion@steroid}
+% \changes{v2.00}{1998/11/23}{New command: \cs{set@fusion@steroid}}
+% \begin{macrocode}
+\def\set@fusion@steroid{%
+ \let\@@tmpa=\@tmpa
+ \let\@@tmpb=\@tmpb
+ \if\@tmpa a%
+ \edef\@@tmpa{f}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa A%
+ \edef\@@tmpa{F}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa b%
+ \edef\@@tmpa{e}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa B%
+ \edef\@@tmpa{E}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa c%
+ \edef\@@tmpa{d}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa C%
+ \edef\@@tmpa{D}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa d%
+ \edef\@@tmpa{c}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Unfavorable Fusion for bond `d'}%
+ \fi
+ \else\if\@tmpa D%
+ \edef\@@tmpa{C}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Unfavorable Fusion for bond `D'}%
+ \fi
+ \else\if\@tmpa e%
+ \edef\@@tmpa{d}%
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Unfavorable Fusion for bond `e'}%
+ \fi
+ \else\if\@tmpa E%
+ \edef\@@tmpa{D}%
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Unfavorable Fusion for bond `E'}%
+ \fi
+ \else\if\@tmpa f%
+ \edef\@@tmpa{c}%
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Unfavorable Fusion for bond `f'}%
+ \fi
+ \else\if\@tmpa F%
+ \edef\@@tmpa{C}%
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Unfavorable Fusion for bond `f'}%
+ \fi
+ \else\if\@tmpa g%
+ \edef\@@tmpa{b}%
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Unfavorable Fusion for bond `g'}%
+ \fi
+ \else\if\@tmpa G%
+ \edef\@@tmpa{B}%
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Unfavorable Fusion for bond `g'}%
+ \fi
+ \else\if\@tmpa h%
+ \edef\@@tmpa{a}%
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Forbidden Fusion for bond `h'}%
+ \fi
+ \else\if\@tmpa H%
+ \edef\@@tmpa{A}%
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Forbidden Fusion for bond `H'}%
+ \fi
+ \else\if\@tmpa i%
+ \edef\@@tmpa{f}%
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Unfavorable Fusion for bond `i'}%
+ \fi
+ \else\if\@tmpa I%
+ \edef\@@tmpa{F}%
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Unfavorable Fusion for bond `I'}%
+ \fi
+ \else\if\@tmpa j%
+ \edef\@@tmpa{a}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Unfavorable Fusion for bond `j'}%
+ \fi
+ \else\if\@tmpa J%
+ \edef\@@tmpa{A}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Unfavorable Fusion for bond `J'}%
+ \fi
+ \else\if\@tmpa k%
+ \edef\@@tmpa{b}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Forbidden Fusion for bond `k'}%
+ \fi
+ \else\if\@tmpa K%
+ \edef\@@tmpa{B}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Forbidden Fusion for bond `K'}%
+ \fi
+ \else\if\@tmpa l%
+ \edef\@@tmpa{e}%
+ \Put@Direct(513,303){\set@fusionadd@sixv}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Unfavorable Fusion for bond `l'}%
+ \fi
+ \else\if\@tmpa L%
+ \edef\@@tmpa{E}%
+ \Put@Direct(513,303){\set@fusionadd@sixv}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Unfavorable Fusion for bond `L'}%
+ \fi
+ \else\if\@tmpa m%
+ \edef\@@tmpa{f}%
+ \Put@Direct(513,303){\set@fusionadd@sixv}%
+ \else\if\@tmpa M%
+ \edef\@@tmpa{F}%
+ \Put@Direct(513,303){\set@fusionadd@sixv}%
+ \else\if\@tmpa n%
+ \edef\@@tmpa{a}%
+ \Put@Direct(513,303){\set@fusionadd@sixv}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Unfavorable Fusion for bond `n'}%
+ \fi
+ \else\if\@tmpa N%
+ \edef\@@tmpa{A}%
+ \Put@Direct(513,303){\set@fusionadd@sixv}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Unfavorable Fusion for bond `N'}%
+ \fi
+ \else\if\@tmpa o%
+ \edef\@@tmpa{b}%
+ \Put@Direct(513,303){\set@fusionadd@sixv}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Forbidden Fusion for bond `o'}%
+ \fi
+ \else\if\@tmpa O%
+ \edef\@@tmpa{B}%
+ \Put@Direct(513,303){\set@fusionadd@sixv}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Forbidden Fusion for bond `O'}%
+ \fi
+ \else\if\@tmpa p%
+ \edef\@@tmpa{c}%
+ \Put@Direct(513,303){\set@fusionadd@sixv}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Unfavorable Fusion for bond `N'}%
+ \fi
+ \else\if\@tmpa P%
+ \edef\@@tmpa{C}%
+ \Put@Direct(513,303){\set@fusionadd@sixv}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Unfavorable Fusion for bond `N'}%
+ \fi
+ \else\if\@tmpa q%
+ \XyMTeXWarning{Mismatched dimension for bond `q'}%
+ \else\if\@tmpa Q%
+ \XyMTeXWarning{Mismatched dimension for bond `Q'}%
+ \else\if\@tmpa r%
+ \edef\@@tmpa{b}%
+ \Put@Direct(855,303){\set@fusionadd@sixv}%
+ \else\if\@tmpa R%
+ \edef\@@tmpa{B}%
+ \Put@Direct(855,303){\set@fusionadd@sixv}%
+ \else\if\@tmpa s%
+ \edef\@@tmpa{a}%
+ \Put@Direct(855,303){\set@fusionadd@sixv}%
+ \else\if\@tmpa S%
+ \edef\@@tmpa{A}%
+ \Put@Direct(855,303){\set@fusionadd@sixv}%
+ \else\if\@tmpa t%
+ \edef\@@tmpa{f}%
+ \Put@Direct(855,303){\set@fusionadd@sixv}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Unfavorable Fusion for bond `t'}%
+ \fi
+ \else\if\@tmpa T%
+ \edef\@@tmpa{F}%
+ \Put@Direct(855,303){\set@fusionadd@sixv}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Unfavorable Fusion for bond `T'}%
+ \fi
+ \fi\fi\fi\fi\fi\fi\fi\fi%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+}% end of the macro \set@fusion@steroid
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Steroids with a chain}
+%
+% The macro |\steroidchain| is used for drawing steroids.
+%
+% The macro |\steroidchain| has an argument |SUBSLIST| as well as an
+% optional argument |BONDLIST|.
+%
+% \begin{verbatim}
+% **************************************
+% * steroid derivatives having a chain *
+% **************************************
+%
+% \steroidchain[BONDLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one or more
+% characters selected form a to t, each of which indicates
+% the presence of an inner (endcyclic) double bond on the corresponding
+% position. The character A, B, or C indicates an aromatic bond
+% pattern (circle). A two-character string `Z?' indicates
+% a double bond in the side-chain.
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% (double bonds for the steroid skeleton)
+% none: no action on the steroid skeleton
+% a : 1,2-double bond b : 2,3-double bond
+% c : 3,4-double bond d : 4,5-double bond
+% e : 6,5-double bond f : 6,7-double bond
+% g : 7,8-double bond h : 9,8-double bond
+% i : 9,10-double bond j : 1,10-double bond
+% k : 5,10-double bond l : 9,11-double bond
+% m : 12,11-double bond n : 12,13-double bond
+% o : 14,13-double bond p : 8,14-double bond
+% q : 14,15-double bond r : 15,16-double bond
+% s : 17,16-double bond t : 17,13-double bond
+% A : aromatic A ring B : aromatic B ring
+% C : aromatic C ring
+% \end{verbatim}
+%
+% \begin{verbatim}
+% (double bonds for the side chain)
+% Z : no action
+% Za : 17,20-double bond Zb : 20,22-double bond
+% Zc : 22,23-double bond Zd : 23,24-double bond
+% Ze : 24,25-double bond Zf : 25,26-double bond
+% Zg : 25,27-double bond
+% \end{verbatim}
+%
+% For a two-character indicator, you should write the BONDLIST
+% as, e.g.
+%
+% \begin{verbatim}
+% [b{Za}{Zc}...]
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 24 (execpt fused positions)
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom (boldface)
+% nB : beta single bond at n-atom (dotted line)
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% For numbers larger than 9 (two digits), you should designate
+% the SUBSLIST as
+%
+% \begin{verbatim}
+% {{11}A}==Cl;{{12}SA}==H;{{12}SB}==Cl; ...
+% \end{verbatim}
+%
+% \begin{verbatim}
+% for n = 5,8,9,10,13,14,and 25 (fused positions etc.)
+%
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom (boldface)
+% nB : beta single bond at n-atom (dotted line)
+% nU : unspecified single bond at n-atom
+% \end{verbatim}
+%
+% \begin{verbatim}
+% e.g.
+%
+% \steroidchain{1==Cl;2==F;{{10}}==OH}
+% \steroidchain[c]{1==Cl;4==F;2==CH$_{3}$;%
+% {{11}SA}==OH;{{11}SB}==OH}
+% \steroidchain[b]{1D==O;4SA==MeO;4SB==OMe;%
+% ;6==Cl;7==Cl;11==Cl}
+% \end{verbatim}
+%
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylpositionh}, \cs{if@ylsw}
+% \cs{ylfusedposition},
+% \cs{yl@shiftii}, \cs{@ylii}, \cs{@@ylii}, \cs{yl@shifti}, \cs{@yli},
+% \cs{@yli}, \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v1.02}{1998/10/31}{The inner commands \cs{yl@steroidposition}
+% is used. The old \cs{steroid} is replaced by \cs{@steroidskeleton}.}
+% \changes{v2.00}{1998/11/31}{Add: fused rings}
+%
+% \begin{macro}{\steroidchain}
+% \begin{macrocode}
+\def\steroidchain{\@ifnextchar[{\@steroidchain[@}{\@steroidchain[Z]}}
+\def\@steroidchain[#1]#2{%
+%shift due to the steroid skeleton
+\@reset@ylsw\reset@@yl
+\yl@steroidposition{#2}%
+%shift due to the side chain
+\ylposition{#2}{-21}{0}{3}{0}%for 22 and 23 positions
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-1026}\def\@@yli{-606}\fi
+\else
+\ylposition{#2}{-14}{5}{7}{0}%for 20 position
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-1026}\def\@@yli{-606}\fi\else
+\ylposition{#2}{-20}{3}{5}{0}%for 24 position
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-1197}\def\@@yli{-709}\fi\else
+\ylatombondposition{#2}{-24}{4}% % for 5
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-1397}\def\@@yli{-709}\fi\fi
+\if@ylsw
+ \yl@shiftii=\@ylii
+ \ifx\@@ylii\empty\else
+ \advance\yl@shiftii\@@ylii\fi
+ \yl@shifti=\@yli
+ \ifx\@@yli\empty\else
+ \advance\yl@shifti\@@yli\fi
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{sfpicture}(0,0)(-\yl@shiftii,-\yl@shifti)%
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+ \begin{sfpicture}(2000,1500)(-\shiftii,-\shifti)%
+ \iforigpt \typeout{command `steroidchain' is based on `steroid'.}\fi%
+\fi
+% steroid skeleton
+ \Put@Direct(0,0){\@steroidskeleton{#1}{#2}}%
+% bonds for the side chain (carbons 20 to 27 (except 21))
+ \Put@Line(855,709)(0,1){200}% %bond 17-20
+ \Put@Line(1026,1012)(-5,-3){171}% %bond 22-20
+ \Put@Line(1026,1012)(5,-3){171}% %bond 22-23
+ \Put@Line(1197,709)(0,1){200}% %bond 24-23
+ \Put@Line(1197,709)(1,0){200}% %bond 24-25
+ \Put@Line(1397,709)(3,5){103}% %bond 25-26
+ \Put@Line(1397,709)(3,-5){103}% %bond 25-27
+% double bonds along the side chain
+\@tfor\member:=#1\do{%
+\expandafter\twoCH@R\member//\relax%
+\if\@tmpa Z\relax%
+ \ifx\@tmpb\empty%no action
+ \else\if\@tmpb a%
+ \Put@Line(888,735)(0,1){148}% %double bond 17-20
+ \else\if\@tmpb b%
+ \Put@Line(1020,970)(-5,-3){126}% %double bond 22-20
+ \else\if\@tmpb c%
+ \Put@Line(1032,970)(5,-3){126}% %double bond 22-23
+ \else\if\@tmpb d%
+ \Put@Line(1164,735)(0,1){148}% %double bond 24-23
+ \else\if\@tmpb e%
+ \Put@Line(1233,742)(1,0){140}% %double bond 24-25
+ \else\if\@tmpb f%
+ \Put@Line(1433,715)(3,5){72}% %double bond 25-26
+ \else\if\@tmpb g%
+ \Put@Line(1433,697)(3,-5){72}% %double bond 25-27
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi}%
+% substitution on the side chain
+%\global\drawsamesubsttrue%2002/05/30 warning on
+\Put@Direct(1026,606){\setsixringv{#2}{-21}{0}{3}{0}}%for 22 and 23 positions
+%\global\drawsamesubstfalse%2002/05/30 warning off
+\Put@Direct(1026,606){\setsixringv{#2}{-14}{5}{7}{0}}%for 20 position
+\Put@Direct(1197,709){\setsixringv{#2}{-20}{3}{5}{0}}%for 24 position
+\Put@Direct(1397,709){\setatombond{#2}{-24}{4}}% % for 5
+\end{sfpicture}}% %end of \steroidchain macro%
+%</carom>
+% \end{macrocode}
+% \end{macro}
+%
+% \Finale
+%
+\endinput
diff --git a/Master/texmf-dist/source/latex/xymtex/base/carom.ins b/Master/texmf-dist/source/latex/xymtex/base/carom.ins
new file mode 100644
index 00000000000..3c10ed92a68
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/carom.ins
@@ -0,0 +1,55 @@
+\def\batchfile{carom.ins}
+\input docstrip.tex
+\preamble
+
+This is a generated file.
+
+Copyright 1996, 1988, 2000, 2001, 2002, 2004, 2010 by Shinsaku Fujita
+all rights reserved.
+This style file is created for drawing chemical structural formulas
+This style file is to be contained in the ``xymtex'' directory which
+is an input directory for TeX.
+
+This file is part of the XyMTeX system.
+=======================================
+
+Old Versions:
+Version 1.01 Released on August 16, 1996
+Version 1.02 Released on October 31, 1998
+Version 2.00 Released on December 25, 1998
+Version 2.00a Released on June 14, 2000
+Version 2.01 Released on June 20, 2001 (private version)
+Version 3.00 Released on April 30, 2002
+Version 4.00 Released on May 30, 2002 (private version)
+Version 4.01 Released on August 30, 2004
+
+The Present Version:
+Version 5.00 Released on October 01, 2010
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3
+of this license or (at your option) any later version.
+The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of LaTeX
+version 2005/12/01 or later.
+
+This work has the LPPL maintenance status `maintained'.
+The Current Maintainer of this work is Shinsaku Fujita.
+
+This work consists of the files carom.dtx and carom.ins
+and the derived file carom.sty.
+
+=======================================
+
+\endpreamble
+
+\keepsilent
+
+\generateFile{carom.drv}{t}{%
+ \from{carom.dtx}{driver}}
+
+\generateFile{carom.sty}{t}{%
+ \from{carom.dtx}{carom}}
+
+\endinput
diff --git a/Master/texmf-dist/source/latex/xymtex/base/ccycle.dtx b/Master/texmf-dist/source/latex/xymtex/base/ccycle.dtx
new file mode 100644
index 00000000000..e059d5564e2
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/ccycle.dtx
@@ -0,0 +1,3481 @@
+% \iffalse meta-comment
+%% File: ccycle.dtx
+%
+% Copyright 1993,1996,1998,2001,2002,2004,2009,2010,2013 by Shinsaku Fujita
+%
+% This file is part of XyMTeX system.
+% -------------------------------------
+%
+% This file is a successor to:
+%
+% ccycle.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].
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+% The Current Maintainer of this work is Shinsaku Fujita.
+%
+% This work consists of the files ccycle.dtx and ccycle.ins
+% and the derived file ccycle.sty.
+%
+% Please report any bugs, comments, suggestions, etc. to:
+% Shinsaku Fujita,
+% Shonan Institute of Chemoinformatics and Mathematical Chemistry
+% Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun, Kanagawa 250-0019 Japan
+% (old address)
+% Ashigara Research Laboratories, Fuji Photo Film Co., Ltd.,
+% Minami-Ashigara, Kanagawa-ken, 250-01, Japan.
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{ccycle}
+% \def\versi@ndate{December 01, 1993}
+% \def\versi@nno{ver1.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{ccycle}
+% \def\versi@ndate{March 05, 1994}
+% \def\versi@nno{ver1.01}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{ccycle}
+% \def\versi@ndate{August 16, 1996}
+% \def\versi@nno{ver1.01a}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{ccycle}
+% \def\versi@ndate{October 31, 1998}
+% \def\versi@nno{ver1.02}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{ccycle}
+% \def\versi@ndate{December 25, 1998}
+% \def\versi@nno{ver2.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{ccycle}
+% \def\versi@ndate{June 20, 2001}
+% \def\versi@nno{ver2.01}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{ccycle}
+% \def\versi@ndate{April 30, 2002}
+% \def\versi@nno{ver3.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{ccycle}
+% \def\versi@ndate{May 30, 2002}
+% \def\versi@nno{ver4.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{ccycle}
+% \def\versi@ndate{August 30, 2004}
+% \def\versi@nno{ver4.01}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{ccycle}
+% \def\versi@ndate{December 20, 2004}
+% \def\versi@nno{ver4.02}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{ccycle}
+% \def\versi@ndate{June 15, 2009}
+% \def\versi@nno{ver4.04}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{ccycle}
+% \def\versi@ndate{October 01, 2010}
+% \def\versi@nno{ver5.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{ccycle}
+% \def\versi@ndate{April 01, 2013}
+% \def\versi@nno{ver5.01b}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{ccycle}
+% \def\versi@ndate{June 26, 2013}
+% \def\versi@nno{ver5.01bb}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \fi
+%
+% \CheckSum{3681}
+%% \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.01a}{1996/06/17}{first edition for LaTeX2e}
+% \changes{v1.02}{1998/10/31}{revised edition for LaTeX2e}
+% \changes{v2.00}{1998/12/25}{enhanced edition for LaTeX2e}
+% \changes{v2.01}{2001/06/20}{Size reduction and Clipping information}
+% \changes{v2.01}{2001/06/21}{The command \cs{dotorline} is added.}
+% \changes{v3.00}{2002/04/30}{sfpicture environment, etc.}
+% \changes{v4.00}{2002/05/30}{PostScript output and ShiftPicEnv}
+% \changes{v4.01}{2004/08/30}{Minor additions}
+% \changes{v4.02}{2004/12/20}{Wedge bonds}
+% \changes{v4.04}{2009/6/15}{Wavy bonds}
+% \changes{v5.00}{2010/10/01}{bond coloring and the LaTeX Project Public License}
+% \changes{v5.01b}{2013/04/01}{Wavy bonds for \cs{bornane}}
+% \changes{v5.01}{2013/06/24}{bornane, adamantane, hadamantane: front-to-back crossing}
+% \changes{v5.01}{2013/06/25}{bornane 7SU and 7SV added, bug fix}
+% \changes{v5.01}{2013/06/26}{bug fix, added 7SA, 7SB, 7Su, 7Sd}
+% \changes{v5.01}{2013/07/23}{background color}
+% \fi
+%
+% \iffalse
+%<*driver>
+\NeedsTeXFormat{pLaTeX2e}
+% \fi
+\ProvidesFile{ccycle.dtx}[2013/07/23 v5.01 XyMTeX{} package file]
+% \iffalse
+\documentclass{ltxdoc}
+\GetFileInfo{ccycle.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{Further Cyclic Compounds by {\sffamily ccycle.sty}
+(\fileversion) of \XyMTeX{}}
+\author{Shinsaku Fujita \\
+Shonan Institute of Chemoinformatics and Mathematical Chemistry, \\
+Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun, Kanagawa 250-0019 Japan
+% % (old address)
+% %Department of Chemistry and Materials Technology, \\
+% %Kyoto Institute of Technology, \\
+% %Matsugasaki, Sakyoku, Kyoto, 606-8585 Japan
+% %% (old address)
+% %% Ashigara Research Laboratories,
+% %% Fuji Photo Film Co., Ltd., \\
+% %% Minami-Ashigara, Kanagawa, 250-01 Japan
+}
+\date{\filedate}
+%
+\begin{document}
+ \maketitle
+ \DocInput{ccycle.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \section{Introduction}\label{ccycle:intro}
+%
+% \subsection{Options for {\sffamily docstrip}}
+%
+% \DeleteShortVerb{\|}
+% \begin{center}
+% \begin{tabular}{|l|l|}
+% \hline
+% \emph{option} & \emph{function}\\ \hline
+% ccycle & ccycle.sty \\
+% driver & driver for this dtx file \\
+% \hline
+% \end{tabular}
+% \end{center}
+% \MakeShortVerb{\|}
+%
+% \subsection{Version Information}
+%
+% \begin{macrocode}
+%<*ccycle>
+\typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 5.01}
+\typeout{ -- Released July 23, 2013 by Shinsaku Fujita}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\j@urnalname{ccycle}
+\def\versi@ndate{July 23, 2013}
+\def\versi@nno{ver5.01}
+\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 ccycle.sty}
+%
+% \begin{verbatim}
+% ********************************
+% * ccycle.sty: list of commands *
+% ********************************
+%
+% Setting of Bonds
+%
+% \@chaira (for cyclohexane chair)
+% \@chairb
+% \@chairc
+% \@chaird
+% \@chaire
+% \@chairf
+%
+% \@borna (for bornanes)
+% \@bornb
+% \@bornc
+% \@bornd
+% \@borne
+% \@bornf
+% \@borng
+%
+% Basic Macros
+%
+% \chair \@chair
+% \bicychepv \@bicychepv
+% \bicycheph \@bicycheph
+% \bornane \@bornane
+% \adamantane \@damantane
+%
+% (Added March 05, 1994 by Shinsaku Fujita)
+% Setting of Bonds
+%
+% \@chairia (for cyclohexane chair inversed)
+% \@chairib \@chairic \@chairid
+% \@chairie \@chairif
+%
+% Basic Macros
+%
+% \chairi \@chairi
+%
+% (Added June 16, 1996 by Shinsaku Fujita)
+% Setting of Bonds
+%
+% \@chairiI (for horizontal-type adamantane)
+% \@chairiII \@chairiIII \@chairiIV
+% \@chairiV \@chairiVI \@chairiVII
+% \@chairiVIII \@chairiIX \@chairiX
+%
+% Basic Macros
+%
+% \hadamantane \@hadamantane
+%
+% Macros for adjusting substitution sites (for Version 1.02)
+%
+% \ylchairposition
+% \ylchairiposition
+% \ylbornaneposition
+% \yladamanposition
+% \ylhadamanposition
+%
+% \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 ccycle.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}
+%
+% \begin{macro}{\ifmolfront}
+% \changes{v4.02}{2004/12/20}{Avoid wedged front bonds}
+% \begin{macrocode}
+\@ifundefined{ifmolfront}{\newif\ifmolfront \molfrontfalse}{}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Chair-form cyclohexanes}
+% \subsection{Macros for setting substituents}
+%
+% Macros |\@chaira| to |\@chairf| are used to set substituents
+% on each position of cyclohexane. Note that comments (conerning locant
+% numbers) on the end of each row have lost the exact meaning,
+% since such a command moiety is used in many macros after copying.
+%
+% \begin{macro}{\@chaira}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v4.04}{2009/06/15}{Adding wavy bonds}
+% \begin{macrocode}
+% **********************************************
+% * treatment of the chair form of cyclohexane *
+% **********************************************
+% %%%%%%%%%%%%%%%
+% % subst. on 1 %
+% %%%%%%%%%%%%%%%
+\def\@chaira{%
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=10
+ \yl@ydiff=10
+ \Put@Line(0,0)(-1,1){120}% single bond at 1
+ \putlatom{-130}{110}{\@memberb}% left type
+ \else\if\@tmpc a%(a) axial
+ \yl@xdiff=42
+ \yl@ydiff=-12
+ \Put@Line(0,0)(0,1){168}% single bond at 1 axial
+ \putlratom{-42}{180}{\@memberb}% left & right type
+ \else\if\@tmpc e%(e) beta
+ \yl@xdiff=16
+ \yl@ydiff=44
+ \Put@Line(0,0)(-5,-3){144}% single bond at 1 equatorial
+ \putlatom{-160}{-130}{\@memberb}% left type
+ \fi\fi\fi%
+%2009/06/15
+ \else\if\@tmpb U%(U) alpha undefined
+ \yl@xdiff=10
+ \yl@ydiff=10
+ \putlatom{-130}{110}{\@memberb}% left type
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(-1,1){120}% single bond at 1
+ }%
+%
+ \else \if\@tmpb D%double bond
+ \yl@xdiff=10
+ \yl@ydiff=10
+ \Put@Line(-10,-10)(-1,1){120}% double bond at 1
+ \Put@Line(10,10)(-1,1){120}% double bond at 1
+ \putlatom{-130}{110}{\@memberb}% left type
+ \else%
+ \yl@xdiff=10
+ \yl@ydiff=10
+ \Put@Line(0,0)(-1,1){120}% single bond at 1
+ \putlatom{-130}{110}{\@memberb}% left type
+ \fi\fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@chairb}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v4.04}{2009/06/15}{Adding wavy bonds}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 2 %
+% %%%%%%%%%%%%%%%
+\def\@chairb{%
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=10
+ \yl@ydiff=70
+ \Put@Line(170,-226)(-1,-1){120}% single bond at 2
+ \putlatom{40}{-416}{\@memberb}% left type
+ \else\if\@tmpc a%(a) axial
+ \yl@xdiff=32
+ \yl@ydiff=92
+ \Put@Line(170,-226)(0,-1){168}% single bond at 2 axial
+ \putlratom{138}{-486}{\@memberb}% left & right type
+ \else\if\@tmpc e%(e) beta
+ \yl@xdiff=16
+ \yl@ydiff=34
+ \Put@Line(170,-226)(-5,3){144}% single bond at 2 equatorial
+ \putlatom{10}{-174}{\@memberb}% left type
+ \fi\fi\fi%
+%2009/06/15
+ \else\if\@tmpb U%(U) alpha undefined
+ \yl@xdiff=10
+ \yl@ydiff=70
+ \putlatom{40}{-416}{\@memberb}% left type
+ {%
+ \WaveBonds%
+ \Put@Line(170,-226)(-1,-1){120}% single bond at 2
+ }%
+%
+ \else \if\@tmpb D%double bond
+ \yl@xdiff=10
+ \yl@ydiff=70
+ \Put@Line(160,-216)(-1,-1){120}% double bond at 2
+ \Put@Line(180,-236)(-1,-1){120}% double bond at 2
+ \putlatom{40}{-416}{\@memberb}% left type
+ \else%
+ \yl@xdiff=10
+ \yl@ydiff=70
+ \Put@Line(170,-226)(-1,-1){120}% single bond at 2
+ \putlatom{40}{-416}{\@memberb}% left type
+ \fi\fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@chairc}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v4.04}{2009/06/15}{Adding wavy bonds}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 3 %
+% %%%%%%%%%%%%%%%
+\def\@chairc{%
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=-10
+ \yl@ydiff=24
+ \Put@Line(573,-91)(5,4){170}% single bond at 3
+ \putratom{753}{21}{\@memberb}% right type
+ \else\if\@tmpc a%(a) axial
+ \yl@xdiff=40
+ \yl@ydiff=-24
+ \Put@Line(573,-91)(0,1){168}% single bond at 3 axial
+ \putlratom{533}{101}{\@memberb}% left type
+ \else\if\@tmpc e%(e) beta
+ \yl@xdiff=-36
+ \yl@ydiff=83
+ \Put@Line(573,-91)(5,-3){144}% single bond at 3 equatorial
+ \putlatom{753}{-260}{\@memberb}% left type
+ \fi\fi\fi%
+%2009/06/15
+ \else\if\@tmpb U%(U) alpha undefined
+ \yl@xdiff=-10
+ \yl@ydiff=24
+ \putratom{753}{21}{\@memberb}% right type
+ {%
+ \WaveBonds%
+ \Put@Line(573,-91)(5,4){170}% single bond at 3
+ }%
+%
+ \else \if\@tmpb D%double bond
+ \yl@xdiff=0
+ \yl@ydiff=0
+ \Put@Line(563,-83)(5,4){170}% double bond at 3
+ \Put@Line(583,-99)(5,4){170}% double bond at 3
+ \putratom{733}{41}{\@memberb}% right type
+ \else%
+ \yl@xdiff=-10
+ \yl@ydiff=24
+ \Put@Line(573,-91)(5,4){170}% single bond at 3
+ \putratom{753}{21}{\@memberb}% right type
+ \fi\fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@chaird}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v4.04}{2009/06/15}{Adding wavy bonds}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 4 %
+% %%%%%%%%%%%%%%%
+\def\@chaird{%
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=10
+ \yl@ydiff=70
+ \Put@Line(843,-181)(1,-1){120}% single bond at 4
+ \putratom{953}{-371}{\@memberb}% right type
+ \else\if\@tmpc a%(a) axial
+ \yl@xdiff=42
+ \yl@ydiff=91
+ \Put@Line(843,-181)(0,-1){168}% single bond at 4 axial
+ \putlratom{801}{-440}{\@memberb}% left & right type
+ \else\if\@tmpc e%(e) beta
+ \yl@xdiff=-16
+ \yl@ydiff=16
+ \Put@Line(843,-181)(5,3){144}% single bond at 4 equatorial
+ \putratom{1003}{-111}{\@memberb}% right type
+ \fi\fi\fi%
+%2009/06/15
+ \else\if\@tmpb U%(U) alpha undefined
+ \yl@xdiff=10
+ \yl@ydiff=70
+ \putratom{953}{-371}{\@memberb}% right type
+ {%
+ \WaveBonds%
+ \Put@Line(843,-181)(1,-1){120}% single bond at 4
+ }%
+%
+ \else \if\@tmpb D%double bond
+ \yl@xdiff=10
+ \yl@ydiff=70
+ \Put@Line(833,-191)(1,-1){120}% double bond at 4
+ \Put@Line(853,-171)(1,-1){120}% double bond at 4
+ \putratom{953}{-371}{\@memberb}% right type
+ \else%
+ \yl@xdiff=10
+ \yl@ydiff=70
+ \Put@Line(843,-181)(1,-1){120}% single bond at 4
+ \putratom{953}{-371}{\@memberb}% right type
+ \fi\fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@chaire}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v4.04}{2009/06/15}{Adding wavy bonds}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 5 %
+% %%%%%%%%%%%%%%%
+\def\@chaire{%
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=-10
+ \yl@ydiff=10
+ \Put@Line(673,46)(1,1){120}% single bond at 5
+ \putratom{803}{158}{\@memberb}% right type
+ \else\if\@tmpc a%(a) axial
+ \yl@xdiff=40
+ \yl@ydiff=-24
+ \Put@Line(673,46)(0,1){168}% single bond at 5 axial
+ \putlratom{633}{238}{\@memberb}% left & right type
+ \else\if\@tmpc e%(e) beta
+ \yl@xdiff=-6
+ \yl@ydiff=63
+ \Put@Line(673,46)(5,-3){144}% single bond at 5 equatorial
+ \putratom{823}{-103}{\@memberb}% right type
+ \fi\fi\fi%
+%2009/06/15
+ \else\if\@tmpb U%(U) alpha undefined
+ \yl@xdiff=-10
+ \yl@ydiff=10
+ \putratom{803}{158}{\@memberb}% right type
+ {%
+ \WaveBonds%
+ \Put@Line(673,46)(1,1){120}% single bond at 5
+ }%
+%
+ \else \if\@tmpb D%double bond
+ \yl@xdiff=-10
+ \yl@ydiff=10
+ \Put@Line(663,53)(1,1){120}% double bond at 5
+ \Put@Line(683,38)(1,1){120}% double bond at 5
+ \putratom{803}{158}{\@memberb}% right type
+ \else%
+ \yl@xdiff=-10
+ \yl@ydiff=24
+ \Put@Line(673,46)(5,4){170}% single bond at 5
+ \putratom{853}{158}{\@memberb}% right type
+ \fi\fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@chairf}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v4.04}{2009/06/15}{Adding wavy bonds}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 6 %
+% %%%%%%%%%%%%%%%
+\def\@chairf{%
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=0
+ \yl@ydiff=54
+ \Put@Line(270,-90)(-5,-4){170}% single bond at 6
+ \putlatom{100}{-280}{\@memberb}% left type
+ \else\if\@tmpc a%(a) axial
+ \yl@xdiff=32
+ \yl@ydiff=92
+ \Put@Line(270,-90)(0,-1){168}% single bond at 6 axial
+ \putlratom{238}{-350}{\@memberb}% left type
+ \else\if\@tmpc e%(e) beta
+ \yl@xdiff=26
+ \yl@ydiff=-14
+ \Put@Line(270,-90)(-5,3){144}% single bond at 6 equatorial
+ \putratom{100}{18}{\@memberb}% left type
+ \fi\fi\fi%
+%2009/06/15
+ \else\if\@tmpb U%(U) alpha undefined
+ \yl@xdiff=0
+ \yl@ydiff=54
+ \putlatom{100}{-280}{\@memberb}% left type
+ {%
+ \WaveBonds%
+ \Put@Line(270,-90)(-5,-4){170}% single bond at 6
+ }%
+%
+ \else \if\@tmpb D%double bond
+ \yl@xdiff=0
+ \yl@ydiff=54
+ \Put@Line(260,-80)(-5,-4){170}% double bond at 2
+ \Put@Line(280,-100)(-5,-4){170}% double bond at 2
+ \putlatom{100}{-280}{\@memberb}% left or right type
+ \else%
+ \yl@xdiff=0
+ \yl@ydiff=54
+ \Put@Line(270,-90)(-5,-4){170}% single bond at 2
+ \putlatom{100}{-280}{\@memberb}% left type
+ \fi\fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Drawing of Chair-form cyclohexanes}
+%
+% The standard skeleton of a chair form of cyclohexane is selected
+% to have the following locant numbers.
+%
+% \begin{verbatim}
+% ***************************
+% * cyclohexane derivatives *
+% * (chair type) *
+% ***************************
+% The following numbering is adopted in this macro.
+%
+% 5
+% / 3 *
+% 1 * 6 / * 4
+% * 2
+%
+% \end{verbatim}
+%
+% The macro |\chair| has an argument |SUBSLIST| as well as an optional
+% argument |BONDLIST|.
+%
+% \begin{verbatim}
+% \chair[BONDLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one or more
+% characters selected from a to f, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% \begin{verbatim}
+%
+% BONDLIST =
+%
+% none : cyclohexane
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,6-double bond
+% f : 6,1-double bond
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents (max 12 substitution positions)
+%
+% for n = 1 to 6
+%
+% nD : exocyclic double bond at n-atom
+% nSa : axial single bond at n-atom
+% nSe : equatorial single bond at n-atom
+%
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+%
+% \begin{verbatim}
+% \chair{1==Cl;2==F}
+% \chair[a]{1==Cl;4==F;2==CH$_{3}$}
+% \chair[eb]{1D==O;4Se==MeO;4Sa==OMe;5==Cl;6==Cl}
+% \end{verbatim}
+%
+% The definition of |\@chair| uses a picture environment, in which
+% bonds are put directly, while subsituents are typset by using
+% the macros |\@chaira| to |\@chairf| described above.
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylchairposition}, \cs{if@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v5.00}{2010/10/01}{For bond coloring}
+%
+% \begin{macro}{\@chair}
+% \begin{macro}{\chair}
+% \begin{macrocode}
+\def\chair{\@ifnextchar[{\@chair}{\@chair[r]}}
+\def\@chair[#1]#2{%
+\@reset@ylsw%
+\ylchairposition{#2}%
+\def\@@ylii{0}\def\@@yli{0}%
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(1600,800)(-400,-500){chair}%
+(400,500)%2002/4/30 by S. Fujita
+%skeletal bonds
+ {\thicklines%
+ \molfronttrue%
+ \Put@Line(0,0)(3,-4){170}% % bond 1 to 2
+ \Put@Line(170,-226)(3,1){403}% % 2 to 3
+ \Put@Line(573,-91)(3,-1){270}% % 3 to 4
+ }%
+ \thinlines%
+ \Put@Line(843,-181)(-3,4){170}% % 4 to 5
+ \Put@Line(673,46)(-3,-1){403}% % 5 to 6
+ \Put@Line(0,0)(3,-1){270}% % 1 to 6
+% inner double bonds
+\@tfor\member:=#1\do{%
+\if\member r%no endcyclic bonds
+\else \if\member a%
+ \Put@Line(76,-42)(3,-4){110}% % double bond 1 to 2
+\else \if\member b%
+ \Put@Line(200,-186)(3,1){343}% % 2 to 3
+\else \if\member c%
+ \Put@Line(603,-70)(3,-1){190}% % 3 to 4
+\else \if\member d%
+ \Put@Line(780,-141)(-3,4){110}% % 4 to 5
+\else \if\member e%
+ \Put@Line(661,6)(-3,-1){343}% % 5 to 6
+\else \if\member f%
+ \Put@Line(75,-50)(3,-1){170}% % 1 to 6
+\fi\fi\fi\fi\fi\fi\fi}%
+% setting substituents
+\@forsemicol\member:=#2\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifx\@memberb\@yl\else
+\ifcase\@tmpa%0 omit
+ \or\setBScolor{\@chaira}% subst. on 1
+% \@chaira% subst. on 1
+ \or\setBScolor{\@chairb}% subst. on 2
+% \@chairb% subst. on 2
+ \or\setBScolor{\@chairc}% subst. on 3
+% \@chairc% subst. on 3
+ \or\setBScolor{\@chaird}% subst. on 4
+% \@chaird% subst. on 4
+ \or\setBScolor{\@chaire}% subst. on 5
+% \@chaire% subst. on 5
+ \or\setBScolor{\@chairf}% subst. on 6
+% \@chairf% subst. on 6
+\fi%end of ifcase
+\fi\fi%
+}%
+\end{ShiftPicEnvB}%
+}% %end of \chair macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The command |\ylchairposition| is to obtain the shift values
+% |\@ylii| and |\@yli| which are used for shifting the standard
+% point of a substituent.
+% \changes{v1.02}{1998/10/23}{New ommands for setting substituents}
+%
+% \begin{macro}{\ylchairposition}
+% \begin{macrocode}
+\def\ylchairposition#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%0 omit
+ \or\gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% subst. on 1
+ \or\gdef\@ylii{-170}\gdef\@yli{226}\global\@ylswtrue% subst. on 2
+ \or\gdef\@ylii{-573}\gdef\@yli{91}\global\@ylswtrue% subst. on 3
+ \or\gdef\@ylii{-843}\gdef\@yli{181}\global\@ylswtrue% subst. on 4
+ \or\gdef\@ylii{-673}\gdef\@yli{-46}\global\@ylswtrue% subst. on 5
+ \or\gdef\@ylii{-270}\gdef\@yli{90}\global\@ylswtrue% subst. on 6
+\fi%end of ifcase
+\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Inverse chair-form cyclohexanes}
+% \subsection{Macros for setting substituents}
+%
+% Macros |\@chairia| to |\@chairif| are used to set substituents
+% on each position of cyclohexane. Note that they corresopond to
+% the counterparts of chair-form cyclohexanes described above.
+%
+% \begin{macro}{\@chairia}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v4.04}{2009/6/15}{Adding wavy bonds}
+% \begin{macrocode}
+% ********************************************************
+% * treatment of the chair form (inverse) of cyclohexane *
+% * added March 05, 1994 by Shinsaku Fujita *
+% ********************************************************
+% %%%%%%%%%%%%%%%
+% % subst. on 1 %
+% %%%%%%%%%%%%%%%
+\def\@chairia{%
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=10
+ \yl@ydiff=90
+ \Put@Line(0,0)(-1,-1){120}% single bond at 1
+ \putlatom{-130}{-210}{\@memberb}% left type
+ \else\if\@tmpc a%(a) axial
+ \yl@xdiff=42
+ \yl@ydiff=92
+ \Put@Line(0,0)(0,-1){168}% single bond at 1 axial
+ \putlratom{-42}{-260}{\@memberb}% left & right type
+ \else\if\@tmpc e%(e) beta
+ \yl@xdiff=16
+ \yl@ydiff=36
+ \Put@Line(0,0)(-5,3){144}% single bond at 1 equatorial
+ \putlatom{-160}{50}{\@memberb}% left type
+ \fi\fi\fi%
+%2009/06/15
+ \else\if\@tmpb U%(U) alpha undefined
+ \yl@xdiff=10\relax
+ \yl@ydiff=90\relax
+ \putlatom{-130}{-210}{\@memberb}% % left type
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(-1,-1){120}% % single bond at 1
+ }%
+%
+ \else \if\@tmpb D%double bond
+ \yl@xdiff=10
+ \yl@ydiff=90
+ \Put@Line(-10,10)(-1,-1){120}% double bond at 1
+ \Put@Line(10,-10)(-1,-1){120}% double bond at 1
+ \putlatom{-130}{-210}{\@memberb}% left type
+ \else%
+ \yl@xdiff=10
+ \yl@ydiff=90
+ \Put@Line(0,0)(-1,-1){120}% single bond at 1
+ \putlatom{-130}{-210}{\@memberb}% left type
+ \fi\fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@chairif}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v4.04}{2009/06/15}{Adding wavy bonds}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 6 %
+% %%%%%%%%%%%%%%%
+\def\@chairif{%
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=10
+ \yl@ydiff=30
+ \Put@Line(170,226)(-1,1){120}% single bond at 6
+ \putratom{40}{316}{\@memberb}% right type
+ \else\if\@tmpc a%(a) axial
+ \yl@xdiff=32
+ \yl@ydiff=-12
+ \Put@Line(170,226)(0,1){168}% single bond at 6 axial
+ \putlratom{138}{406}{\@memberb}% left & right type
+ \else\if\@tmpc e%(e) beta
+ \yl@xdiff=16
+ \yl@ydiff=46
+ \Put@Line(170,226)(-5,-3){144}% single bond at 6 equatorial
+ \putlatom{10}{94}{\@memberb}% left type
+ \fi\fi\fi%
+%2009/06/15
+ \else\if\@tmpb U%(U) alpha undefined
+ \yl@xdiff=10\relax
+ \yl@ydiff=30\relax
+ \putratom{40}{316}{\@memberb}% right type
+ {%
+ \WaveBonds%
+ \Put@Line(170,226)(-1,1){120}% single bond at 6
+ }%
+%
+ \else \if\@tmpb D%double bond
+ \yl@xdiff=10
+ \yl@ydiff=30
+ \Put@Line(160,216)(-1,1){120}% double bond at 6
+ \Put@Line(180,236)(-1,1){120}% double bond at 6
+ \putlatom{40}{316}{\@memberb}% left type
+ \else%
+ \yl@xdiff=10
+ \yl@ydiff=30
+ \Put@Line(170,226)(-1,1){120}% single bond at 6
+ \putlatom{40}{316}{\@memberb}% left type
+ \fi\fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@chairie}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v4.04}{2009/06/15}{Adding wavy bonds}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 5 %
+% %%%%%%%%%%%%%%%
+\def\@chairie{%
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=-10
+ \yl@ydiff=76
+ \Put@Line(573,91)(5,-4){170}% single bond at 5
+ \putratom{753}{-101}{\@memberb}% right type
+ \else\if\@tmpc a%(a) axial
+ \yl@xdiff=40
+ \yl@ydiff=104
+ \Put@Line(573,91)(0,-1){168}% single bond at 5 axial
+ \putlratom{533}{-181}{\@memberb}% left type
+ \else\if\@tmpc e%(e) beta
+ \yl@xdiff=-36
+ \yl@ydiff=3
+ \Put@Line(573,91)(5,3){144}% single bond at 5 equatorial
+ \putlatom{753}{180}{\@memberb}% left type
+ \fi\fi\fi%
+%2009/06/15
+ \else\if\@tmpb U%(U) alpha undefined
+ \yl@xdiff=-10
+ \yl@ydiff=76
+ \putratom{753}{-101}{\@memberb}% right type
+ {%
+ \WaveBonds%
+ \Put@Line(573,91)(5,-4){170}% single bond at 5
+ }%
+%
+ \else \if\@tmpb D%double bond
+ \yl@xdiff=-10
+ \yl@ydiff=96
+ \Put@Line(563,83)(5,-4){170}% double bond at 5
+ \Put@Line(583,99)(5,-4){170}% double bond at 5
+ \putratom{733}{-141}{\@memberb}% right type
+ \else%
+ \yl@xdiff=-10
+ \yl@ydiff=76
+ \Put@Line(573,91)(5,-4){170}% single bond at 5
+ \putratom{753}{-121}{\@memberb}% right type
+ \fi\fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@chairid}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v4.04}{2009/06/15}{Adding wavy bonds}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 4 %
+% %%%%%%%%%%%%%%%
+\def\@chairid{%
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=10
+ \yl@ydiff=30
+ \Put@Line(843,181)(1,1){120}% single bond at 4
+ \putratom{953}{271}{\@memberb}% right type
+ \else\if\@tmpc a%(a) axial
+ \yl@xdiff=42
+ \yl@ydiff=-11
+ \Put@Line(843,181)(0,1){168}% single bond at 4 axial
+ \putlratom{801}{360}{\@memberb}% left & right type
+ \else\if\@tmpc e%(e) beta
+ \yl@xdiff=-16
+ \yl@ydiff=64
+ \Put@Line(843,181)(5,-3){144}% single bond at 4 equatorial
+ \putratom{1003}{31}{\@memberb}% right type
+ \fi\fi\fi%
+%2009/06/15
+ \else\if\@tmpb U%(U) alpha undefined
+ \yl@xdiff=10
+ \yl@ydiff=30
+ \putratom{953}{271}{\@memberb}% right type
+ {%
+ \WaveBonds%
+ \Put@Line(843,181)(1,1){120}% single bond at 4
+ }%
+%
+ \else \if\@tmpb D%double bond
+ \yl@xdiff=10
+ \yl@ydiff=30
+ \Put@Line(833,191)(1,1){120}% double bond at 4
+ \Put@Line(853,171)(1,1){120}% double bond at 4
+ \putratom{953}{271}{\@memberb}% right type
+ \else%
+ \yl@xdiff=10
+ \yl@ydiff=30
+ \Put@Line(843,181)(1,1){120}% single bond at 4
+ \putratom{953}{271}{\@memberb}% right type
+ \fi\fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@chairic}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v4.04}{2009/06/15}{Adding wavy bonds}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 3 %
+% %%%%%%%%%%%%%%%
+\def\@chairic{%
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=-10
+ \yl@ydiff=92
+ \Put@Line(673,-46)(1,-1){120}% single bond at 3
+ \putratom{803}{-258}{\@memberb}% right type
+ \else\if\@tmpc a%(a) axial
+ \yl@xdiff=40
+ \yl@ydiff=110
+ \Put@Line(673,-46)(0,-1){168}% single bond at 3 axial
+ \putlratom{633}{-318}{\@memberb}% left & right type
+ \else\if\@tmpc e%(e) beta
+ \yl@xdiff=-6
+ \yl@ydiff=17
+ \Put@Line(673,-46)(5,3){144}% single bond at 3 equatorial
+ \putratom{823}{23}{\@memberb}% right type
+ \fi\fi\fi%
+%2009/06/15
+ \else\if\@tmpb U%(U) alpha undefined
+ \yl@xdiff=-10
+ \yl@ydiff=92
+ \putratom{803}{-258}{\@memberb}% right type
+ {%
+ \WaveBonds%
+ \Put@Line(673,-46)(1,-1){120}% single bond at 3
+ }%
+%
+ \else \if\@tmpb D%double bond
+ \yl@xdiff=-5
+ \yl@ydiff=96
+ \Put@Line(663,-53)(1,-1){120}% double bond at 3
+ \Put@Line(683,-38)(1,-1){120}% double bond at 3
+ \putratom{803}{-258}{\@memberb}% right type
+ \else%
+ \yl@xdiff=-10
+ \yl@ydiff=76
+ \Put@Line(673,-46)(5,-4){170}% single bond at 3
+ \putratom{853}{-258}{\@memberb}% right type
+ \fi\fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@chairib}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v4.04}{2009/06/15}{Adding wavy bonds}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 2 %
+% %%%%%%%%%%%%%%%
+\def\@chairib{%
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=0
+ \yl@ydiff=46
+ \Put@Line(270,90)(-5,4){170}% single bond at 2
+ \putlatom{100}{180}{\@memberb}% left type
+ \else\if\@tmpc a%(a) axial
+ \yl@xdiff=32
+ \yl@ydiff=-12
+ \Put@Line(270,90)(0,1){168}% single bond at 2 axial
+ \putlratom{238}{270}{\@memberb}% left type
+ \else\if\@tmpc e%(e) beta
+ \yl@xdiff=26
+ \yl@ydiff=94
+ \Put@Line(270,90)(-5,-3){144}% single bond at 2 equatorial
+ \putratom{100}{-98}{\@memberb}% left type
+ \fi\fi\fi%
+%2009/06/15
+ \else\if\@tmpb U%(U) alpha undefined
+ \yl@xdiff=0
+ \yl@ydiff=46
+ \putlatom{100}{180}{\@memberb}% left type
+ {%
+ \WaveBonds%
+ \Put@Line(270,90)(-5,4){170}% single bond at 2
+ }%
+%
+ \else \if\@tmpb D%double bond
+ \yl@xdiff=0
+ \yl@ydiff=26
+ \Put@Line(260,80)(-5,4){170}% double bond at 2
+ \Put@Line(280,100)(-5,4){170}% double bond at 2
+ \putlatom{100}{200}{\@memberb}% left or right type
+ \else%
+ \yl@xdiff=0
+ \yl@ydiff=26
+ \Put@Line(270,90)(-5,4){170}% single bond at 2
+ \putlatom{100}{200}{\@memberb}% left type
+ \fi\fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Drawing of inverse chair-form cyclohexanes}
+%
+% The standard skeleton of an inverse chair form of cyclohexane is selected
+% to have the following locant numbers.
+%
+% \begin{verbatim}
+% ***************************
+% * cyclohexane derivatives *
+% * (inverse chair type) *
+% ***************************
+% The following numbering is adopted in this macro.
+%
+% 6 4
+% * ` 5 *
+% 1 * 2 *
+% ` 3
+%
+% \end{verbatim}
+%
+% The macro |\chairi| has an argument |SUBSLIST| as well as an optional
+% argument |BONDLIST|.
+%
+% \begin{verbatim}
+% \chairi[BONDLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one or more
+% characters selected from a to f, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% \begin{verbatim}
+% BONDLIST =
+%
+% none : cyclohexane
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,6-double bond
+% f : 6,1-double bond
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents (max 8 substitution positions)
+%
+% for n = 1 to 6
+%
+% nD : exocyclic double bond at n-atom
+% nSa : axial single bond at n-atom
+% nSe : equatorial single bond at n-atom
+%
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+%
+% \begin{verbatim}
+% e.g.
+%
+% \chairi[eb]{1D==O;4Se==MeO;4Sa==OMe;5==Cl;6==Cl}
+% \end{verbatim}
+%
+% The definition of |\@chairi| uses a picture environment, in which
+% bonds are put directly, while subsituents are typset by using
+% the macros |\@chairia| to |\@chairif| described above.
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylchairiposition}, \cs{if@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v5.00}{2010/10/01}{For bond coloring}
+%
+% \begin{macro}{\@chairi}
+% \begin{macro}{\chairi}
+% \begin{macrocode}
+\def\chairi{\@ifnextchar[{\@chairi}{\@chairi[r]}}
+\def\@chairi[#1]#2{%
+\@reset@ylsw%
+\ylchairiposition{#2}%
+\def\@@ylii{0}\def\@@yli{0}%
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(1600,800)(-400,-319){chairi}%
+(400,319)%2002/4/30 by S. Fujita
+% skeletal bonds
+ \thinlines%
+ \Put@Line(0,0)(3,4){170}% % bond 1 to 6
+ \Put@Line(170,226)(3,-1){403}% % 6 to 5
+ \Put@Line(573,91)(3,1){270}% % 5 to 4
+ {\thicklines%
+ \molfronttrue%
+ \Put@Line(843,181)(-3,-4){170}% % 4 to 3
+ \Put@Line(673,-46)(-3,1){403}% % 3 to 2
+ \Put@Line(0,0)(3,1){270}% % 1 to 2
+ }%
+ \thinlines%
+% inner double bonds
+\@tfor\member:=#1\do{%
+\if\member r%no endcyclic bonds
+\else \if\member c%%%a%
+ \Put@Line(767,139)(-3,-4){110}% % double bond 3 to 4
+\else \if\member b%%%d%%%b%
+ \Put@Line(640,-5)(-3,1){343}% % 4 to 5
+\else \if\member a%%%e%%%%c%
+ \Put@Line(240,111)(-3,-1){190}% % 5 to 6
+\else \if\member f%%%d%
+ \Put@Line(63,40)(3,4){110}% % 6 to 7
+\else \if\member e%%%l%
+ \Put@Line(182,187)(3,-1){343}% % 7 to 10
+\else \if\member d%%%k%%%f%
+ \Put@Line(768,131)(-3,-1){170}% % 10 to 3
+\fi\fi\fi\fi\fi\fi\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%0 omit
+ \or\setBScolor{\@chairia}% subst. on 1
+% \@chairia% subst. on 1
+ \or\setBScolor{\@chairib}% subst. on 2
+% \@chairib% subst. on 2
+ \or\setBScolor{\@chairic}% subst. on 3
+% \@chairic% subst. on 3
+ \or\setBScolor{\@chairid}% subst. on 4
+% \@chairid% subst. on 4
+ \or\setBScolor{\@chairie}% subst. on 5
+% \@chairie% subst. on 5
+ \or\setBScolor{\@chairif}% subst. on 6
+% \@chairif% subst. on 6
+\fi %end of ifcase
+\fi\fi%
+}\end{ShiftPicEnvB}}% %end of \chairi macro
+% End of addition 1994/03/05 SF
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The command |\ylchairiposition| is to obtain the shift values
+% |\@ylii| and |\@yli| which are used for shifting the standard
+% point of a substituent.
+% \changes{v1.02}{1998/10/23}{New ommands for setting substituents}
+%
+% \begin{macro}{\ylchairiposition}
+% \begin{macrocode}
+\def\ylchairiposition#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%0 omit
+ \or\gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% subst. on 1
+ \or\gdef\@ylii{-270}\gdef\@yli{-90}\global\@ylswtrue% subst. on 2
+ \or\gdef\@ylii{-673}\gdef\@yli{46}\global\@ylswtrue% subst. on 3
+ \or\gdef\@ylii{-843}\gdef\@yli{-181}\global\@ylswtrue% subst. on 4
+ \or\gdef\@ylii{-573}\gdef\@yli{-91}\global\@ylswtrue% subst. on 5
+ \or\gdef\@ylii{-170}\gdef\@yli{-226}\global\@ylswtrue% subst. on 6
+\fi%end of ifcase
+\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Bicycloheptanes}
+% \subsection{Drawing of a flat and vertical type}
+%
+% The flat-and-vertical-type skeleton of bicycloheptanes is selected
+% to have the following locant numbers.
+%
+% \begin{verbatim}
+% *************************************
+% * bicyclo[2.2.1]heptane derivatives *
+% * (flat, vertical type) *
+% *************************************
+% The following numbering is adopted in this macro.
+%
+% 1
+% *
+% 6 * * 2
+% | 7 |
+% | |
+% 5 * * 3
+% *
+% 4 <===== the original point
+% \end{verbatim}
+%
+% The macro |\bicyclohepv| has an argument |SUBSLIST| as well as an optional
+% argument |BONDLIST|.
+%
+% \begin{verbatim}
+% \bicychepv[BONDLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one or more
+% characters selected from a to f, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% In order to put dimethyl subsitutents on the top position (7),
+% the character `7' is used in the |BONDLIST|. The delocalization
+% of $\pi$-electron can be described with the character `A' written in
+% the |BONDLIST|.
+% \begin{verbatim}
+%
+% BONDLIST =
+%
+% none : bicyclo[2.2.1]heptane
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,6-double bond
+% f : 6,1-double bond
+% A : aromatic circle
+% 7 : 7,7-dimethyl
+% \end{verbatim}
+%
+% The |SUBSLIST| argument takes the standard format of \XyMTeX{}, in which
+% more substitution descriptors are separated from each other
+% by a semicolon.
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents (max 12 substitution positions)
+%
+% for n = 1 to 7
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specifed) single bond at n-atom
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+%
+% \begin{verbatim}
+% e.g.
+%
+% \bicychepv{1==Cl;2==F}
+% \bicychepv[c]{1==Cl;4==F;2==CH$_{3}$}
+% \bicychepv[eb]{1D==O;4==Me;5==Cl;6==Cl}
+% \end{verbatim}
+%
+% The definition of |\@bicyclohepv| uses a picture environment, in which
+% bonds are put directly, while subsituents are typset by using
+% the macro |\setsixringv| defined in chemstr.sty of \XyMTeX{} system.
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+%
+% \begin{macro}{\@bicyclohepv}
+% \begin{macro}{\bicyclohepv}
+% \begin{macrocode}
+\def\bicychepv{\@ifnextchar[{\@bicychepv}{\@bicychepv[r]}}
+\def\@bicychepv[#1]#2{%
+\@reset@ylsw%
+\ylposition{#2}{0}{0}{7}{0}%
+\begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(800,880)(-400,-240){bicychepv}%
+(400,240)%2002/4/30 by S. Fujita
+ \Put@Line(0,406)(-5,-3){171}% %bond 1-6
+ \Put@Line(0,406)(5,-3){171}% %bond 1-2
+ \Put@Line(0,0)(-5,3){171}% %bond 4-5
+ \Put@Line(0,0)(5,3){171}% %bond 4-3
+ \Put@Line(171,103)(0,1){200}% %bond 3-2
+ \Put@Line(-171,103)(0,1){200}% %bond 5-6
+{\thicklines%
+ \molfronttrue%
+ \Put@Line(0,0)(1,4){51}% %bond 4-7
+ \Put@Line(0,406)(1,-4){51}}% %bond 1-7
+\@tfor\member:=#1\do{%
+\if\member r%no endcyclic double bonds
+\else \if\member a%
+ \Put@Line(6,364)(5,-3){126}% %double bond 1-2
+\else \if\member b%
+ \Put@Line(138,129)(0,1){148}% %double bond 3-2
+\else \if\member c%
+ \Put@Line(6,42)(5,3){126}% %double bond 4-3
+\else \if\member d%
+ \Put@Line(-6,42)(-5,3){126}% %double bond 4-5
+\else \if\member e%
+ \Put@Line(-138,129)(0,1){148}% %double bond 5-6
+\else \if\member f%
+ \Put@Line(-6,364)(-5,-3){126}% %double bond 1-6
+\else \if\member 7%
+ {\thicklines%
+ \Put@Line(51,204)(-1,0){70}% %7,7-dimethyl
+ \Put@Line(51,204)(1,0){70}}%
+\else \if\member A%aromatic circle
+ \Put@oCircle(0,203){240}% %circle
+\fi\fi\fi\fi\fi\fi\fi\fi\fi}%
+% %
+\setsixringv{#2}{0}{0}{7}{0}%
+\end{ShiftPicEnv}%
+}% %end of \bicychepv macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Drawing of a flat and horizontal type}
+%
+% The flat-and-horizontal-type skeleton of bicycloheptanes is selected
+% to have the following locant numbers.
+%
+% \begin{verbatim}
+% *************************************
+% * bicyclo[2.2.1]heptane derivatives *
+% * (flat, horizontal type) *
+% *************************************
+% The following numbering is adopted in this macro.
+%
+% 2 3
+% -----
+% * *
+% the original point ===> 1 * 7 * 4
+% (0,0) * *
+% -----
+% 6 5
+% \end{verbatim}
+%
+% The macro |\bicycloheph| has an argument |SUBSLIST| as well as an optional
+% argument |BONDLIST|.
+%
+% \begin{verbatim}
+% \bicycheph[BONDLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one or more
+% characters selected from a to f, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% In order to put dimethyl subsitutents on the top position (7),
+% the character `7' is used in the |BONDLIST|. The delocalization
+% of $\pi$-electron can be described with the character `A' written in
+% the |BONDLIST|.
+% \begin{verbatim}
+% BONDLIST =
+%
+% none : bicyclo[2.2.1]heptane
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,6-double bond
+% f : 6,1-double bond
+% A : aromatic circle
+% 7 : 7,7-dimethyl
+% \end{verbatim}
+%
+% The |SUBSLIST| argument takes the standard format of \XyMTeX{}, in which
+% more substitution descriptors are separated from each other
+% by a semicolon.
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents (max 8 substitution positions)
+%
+% for n = 1 to 6
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specifed) single bond at n-atom
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+%
+% \begin{verbatim}
+% e.g.
+%
+% \bicycheph{1==Cl;2==F}
+% \bicycheph[c]{1==Cl;4==F;2==CH$_{3}$}
+% \bicycheph[eb]{1D==O;4==Me;5==Cl;6==Cl}
+% \end{verbatim}
+%
+% The definition of |\@bicycloheph| uses a picture environment, in which
+% bonds are put directly, while subsituents are typset by using
+% the macro |\setsixringh| defined in chemstr.sty of \XyMTeX{} system.
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylpositionh}, \cs{if@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+%
+% \begin{macro}{\@bicycloheph}
+% \begin{macro}{\bicycloheph}
+% \begin{macrocode}
+\def\bicycheph{\@ifnextchar[{\@bicycheph}{\@bicycheph[r]}}
+\def\@bicycheph[#1]#2{%
+\@reset@ylsw%
+\ylpositionh{#2}{0}{0}{7}{0}%
+\begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(880,800)(-240,-400){bicycheph}%
+(240,400)%2002/4/30 by S. Fujita
+ \Put@Line(0,0)(3,5){103}% %bond 1-2
+ \Put@Line(0,0)(3,-5){103}% %bond 1-6
+ \Put@Line(406,0)(-3,5){103}% %bond 4-3
+ \Put@Line(406,0)(-3,-5){103}% %bond 4-3
+ \Put@Line(103,171)(1,0){200}% %bond 2-3
+ \Put@Line(103,-171)(1,0){200}% %bond 6-5
+{\thicklines%
+ \molfronttrue%
+ \Put@Line(0,0)(4,1){203}% %bond 4-7
+ \Put@Line(406,0)(-4,1){203}}% %bond 1-7
+\@tfor\member:=#1\do{%
+\if\member r%no endcyclic double bonds
+\else \if\member a%
+ \Put@Line(42,6)(3,5){78}% %double bond 1-2
+\else \if\member b%
+ \Put@Line(129,138)(1,0){148}% %double bond 2-3
+\else \if\member c%
+ \Put@Line(364,6)(-3,5){78}% %double bond 4-3
+\else \if\member d%
+ \Put@Line(364,-6)(-3,-5){78}% %double bond 4-5
+\else \if\member e%
+ \Put@Line(129,-138)(1,0){148}% %double bond 6-5
+\else \if\member f%
+ \Put@Line(42,-6)(3,-5){78}% %double bond 1-6
+\else \if\member 7%
+ {\thicklines%
+ \Put@Line(204,51)(0,-1){70}% %7,7-dimethyl
+ \Put@Line(204,51)(0,1){70}}%
+\else \if\member A%aromatic circle
+ \Put@oCircle(203,0){240}% %circle
+\fi\fi\fi\fi\fi\fi\fi\fi\fi}%
+% %
+\setsixringh{#2}{0}{0}{7}{0}%
+\end{ShiftPicEnv}%
+}% %end of \bicycheph macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Drawing of a stereo type}
+%
+% \subsubsection{Macros for setting substituents}
+%
+% Macros |\@borna| to |\@borng| are used to set substituents
+% on each position of bornane.
+%
+% \begin{macro}{\@borna}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v5.01}{2013/06/26}{Adding A, B}
+% \begin{macrocode}
+% ***********************************************
+% * setting bonds and substituents for bornanes *
+% * (bicycloe[2.2.1]heptane derivatives) *
+% ***********************************************
+% %%%%%%%%%%%%%%%
+% % subst. on 1 %
+% %%%%%%%%%%%%%%%
+\def\@borna{%
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=8
+ \yl@ydiff=3
+ \Put@Line(318,247)(2,5){40}% % single bond 1
+ \putratom{350}{360}{\@memberb}% % right type
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=8
+ \yl@ydiff=3
+ \Put@Line(318,247)(2,5){40}% % single bond 1
+ \putratom{350}{360}{\@memberb}% % right type
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=8
+ \yl@ydiff=3
+ \Put@Line(318,247)(2,5){40}% % single bond 1
+ \putratom{350}{360}{\@memberb}% % right type
+ \fi\fi\fi%
+%2013/04/01
+ \else\if\@tmpb U%(U) alpha undefined
+ \yl@xdiff=8\relax
+ \yl@ydiff=3\relax
+ {%
+ \WaveBonds%
+ \Put@Line(318,247)(2,5){40}% % wavy bond at 1
+ }%
+ \putratom{350}{360}{\@memberb}% % right type
+%2013/06/26
+ \else\if\@tmpb A%(A) alpha
+ \yl@xdiff=8\relax
+ \yl@ydiff=3\relax
+ \dotorline(318,247)(2,5){40}/(318,247)(358,347)%
+ \putratom{350}{360}{\@memberb}% % right type
+%2013/06/26
+ \else\if\@tmpb B%(B) beta
+ \yl@xdiff=8\relax
+ \yl@ydiff=3\relax
+ {%
+ \thicklines%
+ \Put@Line(318,247)(2,5){40}% % wavy bond at 1
+ }%
+ \putratom{350}{360}{\@memberb}% % right type
+%
+ \else%
+ \yl@xdiff=8
+ \yl@ydiff=3
+ \Put@Line(318,247)(2,5){40}% % single bond 1
+ \putratom{350}{360}{\@memberb}% % right type
+ \fi\fi\fi\fi
+ }%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@bornb}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v5.01}{2013/06/26}{Bug fix exchange A and B}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 2 %
+% %%%%%%%%%%%%%%%
+\def\@bornb{%
+ \begin{sfpicture}(200,200)(0,0)
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=-10
+ \yl@ydiff=20
+ \Put@Line(0,0)(5,2){160}%
+ \putratom{170}{44}{\@memberb}% % left type
+ \else\if\@tmpc B%(B) beta%bug fix 2013/06/26
+ \yl@xdiff=0
+ \yl@ydiff=-5
+ {%
+ \thicklines%
+ \Put@Line(0,0)(4,3){140}% % endo (a)
+ }%
+ \putratom{140}{115}{\@memberb}% % right type
+ \else\if\@tmpc A%(A) alpha%bug fix 2013/06/26
+ \yl@xdiff=10
+ \yl@ydiff=30
+ \dotorline(0,0)(5,-2){140}/(0,0)(140,-56)%
+ \putratom{150}{-86}{\@memberb}% % right type
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=10
+ \yl@ydiff=30
+ \Put@Line(0,0)(5,-2){140}% % endo (a)
+ \putratom{150}{-86}{\@memberb}% % right type
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=0
+ \yl@ydiff=-10
+ \Put@Line(0,0)(4,3){140}% % exo (b)
+ \putratom{140}{115}{\@memberb}% % right type
+ \fi\fi\fi\fi\fi%
+ \else \if\@tmpb D%double bond
+ \yl@xdiff=-10
+ \yl@ydiff=20
+ \Put@Line(-10,-15)(5,2){160}%
+ \Put@Line(-5,15)(5,2){160}%
+ \putratom{170}{44}{\@memberb}% % right type
+ \else \if\@tmpb B%beta single bond%bug fix 2013/06/26
+ \yl@xdiff=-10
+ \yl@ydiff=20
+ {%
+ \thicklines%
+ \Put@Line(0,0)(5,2){160}%
+ }%
+ \putratom{170}{44}{\@memberb}% % right type
+ \else \if\@tmpb A%alpha single bond%bug fix 2013/06/26
+ \yl@xdiff=-10
+ \yl@ydiff=20
+ \dotorline(0,0)(5,2){160}/(0,0)(160,64)%
+ \putratom{170}{44}{\@memberb}% % right type
+%2013/04/01
+ \else\if\@tmpb U%(U) alpha undefined
+ \yl@xdiff=-10\relax
+ \yl@ydiff=20\relax
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(5,2){160}% % wavy bond at 2
+ }%
+ \putratom{170}{44}{\@memberb}% % left type
+%
+ \else%
+ \yl@xdiff=-10
+ \yl@ydiff=20
+ \Put@Line(0,0)(5,2){160}%
+ \putratom{170}{44}{\@memberb}% % right type
+ \fi\fi\fi\fi\fi\end{sfpicture}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@bornc}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v5.01}{2013/06/26}{Bug fix exchange A and B}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 3 %
+% %%%%%%%%%%%%%%%
+\def\@bornc{%
+ \begin{sfpicture}(200,200)(0,0)
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=-10
+ \yl@ydiff=30
+ \Put@Line(0,0)(5,-2){140}%
+ \putratom{150}{-86}{\@memberb}% % right type
+ \else\if\@tmpc B%(B) beta%bug fix 2013/06/26
+ \yl@xdiff=-10
+ \yl@ydiff=30
+ {%
+ \thicklines%
+ \Put@Line(0,0)(5,2){140}% % endo (a)
+ }%
+ \putratom{150}{26}{\@memberb}% % right type
+ \else\if\@tmpc A%(A) alpha%bug fix 2013/06/26
+ \yl@xdiff=0
+ \yl@ydiff=40
+ \dotorline(0,0)(4,-3){140}/(0,0)(140,-105)%% exo (b)
+ \putratom{140}{-145}{\@memberb}% % right type
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=0
+ \yl@ydiff=40
+ \Put@Line(0,0)(4,-3){140}% % endo (a)
+ \putratom{140}{-145}{\@memberb}% % right type
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=-10
+ \yl@ydiff=30
+ \Put@Line(0,0)(5,2){140}% % exo (b)
+ \putratom{150}{26}{\@memberb}% % right type
+ \fi\fi\fi\fi\fi
+ \else \if\@tmpb D%double bond
+ \yl@xdiff=10
+ \yl@ydiff=50
+ \Put@Line(10,15)(5,-2){160}%
+ \Put@Line(5,-15)(5,-2){160}%
+ \putratom{170}{-124}{\@memberb}% % right type
+ \else \if\@tmpb B%beta single bond%bug fix 2013/06/26
+ \yl@xdiff=-10
+ \yl@ydiff=30
+ {%
+ \thicklines%
+ \Put@Line(0,0)(5,-2){140}% % endo (a)
+ }%
+ \putratom{150}{-86}{\@memberb}% % right type
+ \else \if\@tmpb A%alpha single bond%bug fix 2013/06/26
+ \yl@xdiff=-10
+ \yl@ydiff=30
+ \dotorline(0,0)(5,-2){140}/(0,0)(140,-56)% exo (b)
+ \putratom{150}{-86}{\@memberb}% % right type
+%2013/04/01
+ \else\if\@tmpb U%(U) alpha undefined
+ \yl@xdiff=-10\relax
+ \yl@ydiff=20\relax
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(5,2){160}% % wavy bond at 3
+ }%
+ \putratom{170}{44}{\@memberb}% % left type
+%
+ \else%
+ \yl@xdiff=-10
+ \yl@ydiff=20
+ \Put@Line(0,0)(5,2){160}%
+ \putratom{170}{44}{\@memberb}% % right type
+ \fi\fi\fi\fi\fi%
+\end{sfpicture}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@bornd}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v5.01}{2013/06/26}{Adding A, B}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 4 %
+% %%%%%%%%%%%%%%%
+\def\@bornd{%
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=30
+ \yl@ydiff=87
+ \Put@Line(237,47)(-2,-5){40}% % single bond 4
+ \putlratom{167}{-150}{\@memberb}% % left & right type
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=30
+ \yl@ydiff=87
+ \Put@Line(237,47)(-2,-5){40}% % single bond 4
+ \putlratom{167}{-150}{\@memberb}% % left & right type
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=30
+ \yl@ydiff=87
+ \Put@Line(237,47)(-2,-5){40}% % single bond 4
+ \putlratom{167}{-150}{\@memberb}% % left & right type
+ \fi\fi\fi%
+%2013/04/01
+ \else\if\@tmpb U%(U) alpha, beta undefined
+ \yl@xdiff=30\relax
+ \yl@ydiff=87\relax
+ {%
+ \WaveBonds%
+ \Put@Line(237,47)(-2,-5){40}% % single bond 4
+ }%
+ \putlratom{167}{-150}{\@memberb}% % left & right type
+%2013/06/26
+ \else\if\@tmpb A%(A) alpha
+ \yl@xdiff=30\relax
+ \yl@ydiff=87\relax
+ \dotorline(237,47)(-2,-5){40}/(237,47)(197,-53)%
+ \putlratom{167}{-150}{\@memberb}% % left & right type
+%2013/06/26
+ \else\if\@tmpb B%(B) beta
+ \yl@xdiff=30\relax
+ \yl@ydiff=87\relax
+ {%
+ \thicklines%
+ \Put@Line(237,47)(-2,-5){40}% % single bond 4
+ }%
+ \putlratom{167}{-150}{\@memberb}% % left & right type
+%
+ \else%
+ \yl@xdiff=30
+ \yl@ydiff=87
+ \Put@Line(237,47)(-2,-5){40}% % single bond 4
+ \putlratom{167}{-150}{\@memberb}% % left & right type
+ \fi\fi\fi\fi%
+ }%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@borne}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v5.01}{2013/06/26}{Bug fix exchange A and B}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 5 %
+% %%%%%%%%%%%%%%%
+\def\@borne{%
+ \begin{sfpicture}(200,200)(0,0)
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=10
+ \yl@ydiff=30
+ \Put@Line(0,0)(-5,-2){140}%
+ \putlatom{-150}{-86}{\@memberb}% % left type
+ \else\if\@tmpc B%(B) beta%bug fix 2013/06/26
+ \yl@xdiff=10
+ \yl@ydiff=30
+ {%
+ \thicklines%
+ \Put@Line(0,0)(-5,2){140}% % endo (a)
+ }%
+ \putlatom{-150}{26}{\@memberb}% % left type
+ \else\if\@tmpc A%(A) alpha%bug fix 2013/06/26
+ \yl@xdiff=0
+ \yl@ydiff=40
+ \dotorline(0,0)(-4,-3){140}/(0,0)(-140,-105)%% exo (b)
+ \putlatom{-140}{-145}{\@memberb}% % left type
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=0
+ \yl@ydiff=30
+ \Put@Line(0,0)(-4,-3){140}% % endo (a)
+ \putlatom{-140}{-145}{\@memberb}% % left type
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=10
+ \yl@ydiff=30
+ \Put@Line(0,0)(-5,2){140}% % exo (b)
+ \putlatom{-150}{26}{\@memberb}% % left type
+ \fi\fi\fi\fi\fi
+ \else \if\@tmpb D%double bond
+ \yl@xdiff=0
+ \yl@ydiff=64
+ \Put@Line(-10,15)(-5,-2){160}%
+ \Put@Line(-5,-15)(-5,-2){160}%
+ \putlatom{-170}{-124}{\@memberb}% % left type
+ \else \if\@tmpb B%beta single bond%bug fix 2013/06/26
+ \yl@xdiff=10
+ \yl@ydiff=30
+ {%
+ \thicklines%
+ \Put@Line(0,0)(-5,-2){140}% % endo (a)
+ }%
+ \putlatom{-150}{-86}{\@memberb}% % left type
+ \else \if\@tmpb A%alpha single bond%bug fix 2013/06/26
+ \yl@xdiff=10
+ \yl@ydiff=30
+ \dotorline(0,0)(-5,-2){140}/(0,0)(-140,-56)%% exo (b)
+ \putlatom{-150}{-86}{\@memberb}% % left type
+%2013/04/01
+ \else\if\@tmpb U%(U) alpha undefined
+ \yl@xdiff=10\relax
+ \yl@ydiff=20\relax
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(-5,2){160}% wavy bond at 5
+ }%
+ \putlatom{-170}{44}{\@memberb}% % left type
+%
+ \else%
+ \yl@xdiff=10
+ \yl@ydiff=20
+ \Put@Line(0,0)(-5,2){160}%
+ \putlatom{-170}{44}{\@memberb}% % left type
+ \fi\fi\fi\fi\fi%
+\end{sfpicture}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@bornf}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v5.01}{2013/06/26}{Bug fix exchange A and B}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 6 %
+% %%%%%%%%%%%%%%%
+\def\@bornf{%
+ \begin{sfpicture}(200,200)(0,0)
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=10
+ \yl@ydiff=30
+ \Put@Line(0,0)(-5,2){160}%
+ \putlatom{-170}{44}{\@memberb}% % left type
+ \else\if\@tmpc B%(B) beta%bug fix 2013/06/26
+ \yl@xdiff=10
+ \yl@ydiff=-10
+ {%
+ \thicklines%
+ \Put@Line(0,0)(-4,3){140}% % endo (a)
+ }%
+ \putlatom{-140}{115}{\@memberb}% % left type
+ \else\if\@tmpc A%(A) alpha%bug fix 2013/06/26
+ \yl@xdiff=0
+ \yl@ydiff=30
+ \dotorline(0,0)(-5,-2){140}/(0,0)(-140,-56)%% exo (b)
+ \putlatom{-150}{-86}{\@memberb}% % left type
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=10
+ \yl@ydiff=30
+ \Put@Line(0,0)(-5,-2){140}% % endo (a)
+ \putlatom{-150}{-86}{\@memberb}% % left type
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=0
+ \yl@ydiff=-10
+ \Put@Line(0,0)(-4,3){140}% % exo (b)
+ \putlatom{-140}{115}{\@memberb}% % left type
+ \fi\fi\fi\fi\fi%
+ \else \if\@tmpb D%double bond
+ \yl@xdiff=0
+ \yl@ydiff=20
+ \Put@Line(10,-15)(-5,2){160}%
+ \Put@Line(5,15)(-5,2){160}%
+ \putlatom{-170}{44}{\@memberb}% % left type
+ \else \if\@tmpb B%beta single bond%bug fix 2013/06/26
+ \yl@xdiff=10
+ \yl@ydiff=30
+ {%
+ \thicklines%
+ \Put@Line(0,0)(-5,2){160}%
+ }%
+ \putlatom{-170}{44}{\@memberb}% % left type
+ \else \if\@tmpb A%alpha single bond%bug fix 2013/06/26
+ \yl@xdiff=10
+ \yl@ydiff=30
+ \dotorline(0,0)(-5,2){160}/(0,0)(-160,64)%
+ \putlatom{-170}{44}{\@memberb}% % left type
+%2013/04/01
+ \else\if\@tmpb U%(U) alpha undefined
+ \yl@xdiff=10\relax
+ \yl@ydiff=20\relax
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(-5,2){160}% wavy bond at 6
+ }%
+ \putlatom{-170}{44}{\@memberb}% % left type
+%
+ \else%
+ \yl@xdiff=10
+ \yl@ydiff=20
+ \Put@Line(0,0)(-5,2){160}%
+ \putlatom{-170}{44}{\@memberb}% % left type
+ \fi\fi\fi\fi\fi\end{sfpicture}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@borng}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v5.01}{2013/06/26}{Adding SU, SV, SA, SB, Su, Sd}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 7 %
+% %%%%%%%%%%%%%%%
+\def\@borng{%
+ \begin{sfpicture}(200,200)(0,0)
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=40
+ \yl@ydiff=-20
+ \Put@Line(0,0)(0,1){160}%
+ \putlratom{-40}{180}{\@memberb}% % left & right type
+ \else\if\@tmpc a%(a) left
+ \yl@xdiff=0
+ \yl@ydiff=-10
+ \Put@Line(0,0)(-4,3){140}% % left (a)
+ \putlatom{-140}{115}{\@memberb}% % left type
+ \else\if\@tmpc b%(b) right
+ \yl@xdiff=0
+ \yl@ydiff=-10
+ \Put@Line(0,0)(4,3){140}% % right (b)
+ \putratom{140}{115}{\@memberb}% % right type
+%2013/06/25
+ \else\if\@tmpc U%(U) alpha undefined
+ \yl@xdiff=0\relax
+ \yl@ydiff=-10\relax
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(-4,3){140}% % left (U)
+ }%
+ \putlatom{-140}{115}{\@memberb}% % left type
+%2013/06/25
+ \else\if\@tmpc V%(V) beta undefined
+ \yl@xdiff=0\relax
+ \yl@ydiff=-10\relax
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(4,3){140}% % right (V)
+ }%
+ \putratom{140}{115}{\@memberb}% % right type
+%2013/06/26
+ \else\if\@tmpc A%(A) alpha
+ \yl@xdiff=0\relax
+ \yl@ydiff=-10\relax
+ \dotorline(0,0)(-4,3){140}/(0,0)(-140,105)%
+ \putlatom{-140}{115}{\@memberb}% % left type
+%2013/06/26
+ \else\if\@tmpc B%(B) beta
+ \yl@xdiff=0\relax
+ \yl@ydiff=-10\relax
+ {%
+ \thicklines%
+ \Put@Line(0,0)(4,3){140}% %
+ }%
+ \putratom{140}{115}{\@memberb}% % right type
+%2013/06/26
+ \else\if\@tmpc u%(u) beta alternative
+ \yl@xdiff=0\relax
+ \yl@ydiff=-10\relax
+ {%
+ \thicklines%
+ \Put@Line(0,0)(-4,3){140}% %
+ }%
+ \putlatom{-140}{115}{\@memberb}% % left type
+%2013/06/26
+ \else\if\@tmpc d%(d) alpha alternative
+ \yl@xdiff=0\relax
+ \yl@ydiff=-10\relax
+ \dotorline(0,0)(4,3){140}/(0,0)(140,105)%
+ \putratom{140}{115}{\@memberb}% % right type
+%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi
+ %\fi\fi%
+ \else \if\@tmpb D%double bond
+ \yl@xdiff=40
+ \yl@ydiff=-20
+ \Put@Line(-10,0)(0,1){160}%
+ \Put@Line(10,0)(0,1){160}%
+ \putlratom{-40}{180}{\@memberb}% % left & right type
+ \else%
+ \yl@xdiff=40
+ \yl@ydiff=-20
+ \Put@Line(0,0)(0,1){160}%
+ \putlratom{-40}{180}{\@memberb}% % left & right type
+ \fi\fi\end{sfpicture}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Drawing of borane derivatives}
+%
+% The stereo-type skeleton of bicycloheptanes is selected
+% to have the following locant numbers.
+%
+% \begin{verbatim}
+% ***********************************************
+% * bornane derivatives *
+% * (bicycloe[2.2.1]heptane derivatives) *
+% ***********************************************
+% The following numbering is adopted in this macro.
+%
+% 7 g
+% f / `
+% _ / - 1_ a
+% e 6 / h - 2
+% * / *
+% 5 - 4 * b
+% d c` 3
+%
+% \end{verbatim}
+%
+% The macro |\bornane| has an argument |SUBSLIST| as well as an optional
+% argument |BONDLIST|.
+%
+% \begin{verbatim}
+% \bornane[BONDLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one or more
+% characters selected from a to h, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% \begin{verbatim}
+%
+% BONDLIST =
+%
+% none : bicyclo[2.2.1]heptane
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,6-double bond
+% f : 6,1-double bond
+% g : 1,7-double bond
+% h : 4,7-double bond
+% \end{verbatim}
+%
+% The |SUBSLIST| argument takes the standard format of \XyMTeX{}, in which
+% more substitution descriptors are separated from each other
+% by a semicolon.
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents (max 7 substitution positions)
+%
+% for n = 1 to 6
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha single bond at n-atom
+% nSb : beta single bond at n-atom
+% \end{verbatim}
+%
+% The 7-position of a bornane skeleton cannot be specified by
+% capital characters `A' and `B'.
+% \begin{verbatim}
+% for n = 7 (bridge position)
+%
+% nD : exocyclic double bond at 7-atom
+% n or nS : exocyclic single bond at 7-atom
+% nSa : left single bond at 7-atom
+% nSb : right single bond at 7-atom
+%
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+%
+% \begin{verbatim}
+% e.g.
+%
+% \bornane{1==N}{1==Cl;2==F}
+% \bornane[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \bornane[eb]{1==N}{1D==O;4==MeO;5==Cl;6==Cl}
+% \end{verbatim}
+%
+% The definition of |\@bicycloheph| uses a picture environment, in which
+% bonds are put directly, while subsituents are typset by using
+% the macro |\@borna| to |\@borng| defined in chemstr.sty of \XyMTeX{}
+% system.
+%
+% \changes{v1.01b}{1998/10/08}{The drawing are of \cs{bornane}
+% has been changed by SF.}
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylbornaneposition}, \cs{if@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v5.00}{2010/10/01}{For bond coloring}
+% \changes{v5.01}{2013/06/24}{bornane front-to-back crossing}
+%
+% \begin{macro}{\@bornane}
+% \begin{macro}{\iffrontthicktothin}
+% \begin{macro}{\bornane}
+% \begin{macrocode}
+\def\BackGroundColor{\color{white}}%default color for background 2013/07/23
+\newif\iffrontthicktothin \frontthicktothinfalse%default front thickline2013/06/24
+\def\bornane{\@ifnextchar[{\@bornane}{\@bornane[r]}}
+\def\@bornane[#1]#2{%
+\@reset@ylsw%
+\ylbornaneposition{#2}%
+\def\@@ylii{0}\def\@@yli{0}%
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(1000,1000)(-200,-240){bornane}%
+(200,240)%2002/4/30 by S. Fujita
+% skeletal bonds
+ \thinlines%
+ \Put@Line(462,-43)(2,5){80}% % bond 3 to 2 (b)
+ \Put@Line(543,157)(-5,2){225}% % bond 2 to 1 (a)
+ \Put@Line(318,247)(-5,-1){237}% % bond 1 to 6 (f)
+ \Put@Line(80,200)(-2,-5){80}% % bond 6 to 5 (e)
+ \Put@Line(318,247)(-2,5){80}% % back part of bridge (g)
+ {\iffrontthicktothin\thinlines\else\thicklines\fi%2013/06/24
+ \molfronttrue
+ \Put@Line(0,0)(5,1){237}% % bond 5 to 4 (d)
+ \Put@Line(237,47)(5,-2){225}% % bond 4 to 3 (c)
+ {\def\thinLineWidth{5pt}\BackGroundColor% front-to-back crossing2013/06/24-07/23
+ \thinlines% %
+ \Put@Line(237,200)(0,1){80}}% % front-to-back crossing2013/06/24-07/23
+ \Put@Line(237,47)(0,1){400}% % front part of bridge (h)
+ }%
+% inner double bond
+\@tfor\member:=#1\do{%
+\if\member r%no endcyclic bonds
+\else \if\member a%%%%
+ \Put@Line(513,127)(-5,2){180}% % bond 2 to 1
+\else \if\member b%%%%
+ \Put@Line(446,-3)(2,5){60}% % bond 3 to 2
+\else \if\member c%%%%
+ \Put@Line(267,77)(5,-2){180}% % bond 4 to 3
+\else \if\member d%%%%
+ \Put@Line(40,42)(5,1){180}% % double bond 5 to 4
+\else \if\member e%%%
+ \Put@Line(100,180)(-2,-5){60}% % bond 6 to 5
+\else \if\member f%
+ \Put@Line(288,207)(-5,-1){180}% % bond 1 to 6
+\else \if\member g%
+ \Put@Line(288,260)(-2,5){40}% % back part of bridge (g)
+\else \if\member h%
+ \Put@Line(257,77)(0,1){290}% % front part of bridge (h)
+\fi\fi\fi\fi\fi\fi\fi\fi\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%0 omit
+ \or\setBScolor{\@borna}% subst. on 1
+% \@borna% subst. on 1
+ \or\setBScolor{\Put@Direct(543,157){\@bornb}}% subst. on 2
+% \Put@Direct(543,157){\@bornb}% subst. on 2
+ \or\setBScolor{\Put@Direct(462,-43){\@bornc}}% subst. on 3
+% \Put@Direct(462,-43){\@bornc}% subst. on 3
+ \or\setBScolor{\@bornd}% subst. on 4
+% \@bornd% subst. on 4
+ \or\setBScolor{\Put@Direct(0,0){\@borne}}% subst. on 5
+% \Put@Direct(0,0){\@borne}% subst. on 5
+ \or\setBScolor{\Put@Direct(80,200){\@bornf}}% subst. on 6
+% \Put@Direct(80,200){\@bornf}% subst. on 6
+ \or\setBScolor{\Put@Direct(237,440){\@borng}}% subst. on 7
+% \Put@Direct(237,440){\@borng}% subst. on 7
+\fi%end of ifcase
+\fi\fi%
+}%
+\end{ShiftPicEnvB}%
+\iniatom\iniflag}% %end of \bornane macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The command |\ylbornaneposition| is to obtain the shift values
+% |\@ylii| and |\@yli| which are used for shifting the standard
+% point of a substituent.
+% \changes{v1.02}{1998/10/23}{New ommands for setting substituents}
+%
+% \begin{macro}{\ylbornaneposition}
+% \begin{macrocode}
+\def\ylbornaneposition#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%0 omit
+ \or\gdef\@ylii{-318}\gdef\@yli{-247}\global\@ylswtrue% subst. on 1
+ \or\gdef\@ylii{-543}\gdef\@yli{-157}\global\@ylswtrue% subst. on 2
+ \or\gdef\@ylii{-462}\gdef\@yli{43}\global\@ylswtrue% subst. on 3
+ \or\gdef\@ylii{-237}\gdef\@yli{-47}\global\@ylswtrue% subst. on 4
+ \or\gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% subst. on 5
+ \or\gdef\@ylii{-80}\gdef\@yli{-200}\global\@ylswtrue% subst. on 6
+ \or\gdef\@ylii{-237}\gdef\@yli{-440}\global\@ylswtrue% subst. on 7
+\fi%end of ifcase
+\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Adamantanes}
+%
+% \subsection{Vertical drawing}
+%
+% The macros |\@adamanea| to |\@adamanej| are used to
+% set substituents on each edge of an adamantane skeleton
+% drawn by the |\adamantane| commands.
+% \changes{v1.02}{1998/10/24}{The macros \cs{@adamanea} to \cs{@adamanej}
+% are separated from the original definition of \cs{adamantane}.}
+%
+% \begin{macro}{\@adamanea}
+% \begin{macro}{\@adamaneb}
+% \begin{macro}{\@adamanec}
+% \begin{macro}{\@adamaned}
+% \begin{macro}{\@adamanee}
+% \begin{macro}{\@adamanef}
+% \begin{macro}{\@adamaneg}
+% \begin{macro}{\@adamaneh}
+% \begin{macro}{\@adamanei}
+% \begin{macro}{\@adamanej}
+% \changes{v1.02}{1998/10/24}{A new command for setting substituents}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 1 %
+% %%%%%%%%%%%%%%%
+\def\@adamanea{%
+ \yl@xdiff=12
+ \yl@ydiff=21
+ \Put@Direct(-360,720){\hbox to0pt{\hss \@memberb}}% %atom 1
+ \if\@tmpb a%
+ \Put@Line(-240,660)(-4,3){108}% %bond 1
+ \else \ifx\@tmpb\empty%
+ \Put@Line(-240,660)(-4,3){108}% %bond 1
+ \fi\fi}%
+% \end{macrocode}
+%
+% \changes{v1.02}{1998/10/24}{A new command for setting substituents}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 2 %
+% %%%%%%%%%%%%%%%
+\def\@adamaneb{%
+ \if\@tmpb a%
+ \yl@xdiff=6
+ \yl@ydiff=-16
+ \Put@Line(0,780)(1,4){26}% %bond 2-ax
+ \Put@Direct(20,900){\hbox to0pt{\@memberb \hss}}% %atom 2-ax
+ \else \if\@tmpb b%
+ \yl@xdiff=-6
+ \yl@ydiff=-16
+ \Put@Line(0,780)(-1,4){26}% %bond 2-eq
+ \Put@Direct(-20,900){\hbox to0pt{\hss \@memberb}}% %atom 2-eq
+ \else \ifx\@tmpb\empty%
+ \yl@xdiff=42
+ \yl@ydiff=-22
+ \Put@Direct(-42,910){\hbox to0pt{\hss \@memberb}}% %atom 2
+ \Put@Line(0,780)(0,1){108}% %bond 2
+ \else \if\@tmpb D%
+ \yl@xdiff=42
+ \yl@ydiff=-22
+ \putlratom{-42}{910}{\@memberb}% %atom 2
+ \Put@Line(-12,780)(0,1){108}% %double bond 2
+ \Put@Line(12,780)(0,1){108}% %double bond 2
+ \fi\fi\fi\fi}
+% \end{macrocode}
+%
+% \changes{v1.02}{1998/10/24}{A new command for setting substituents}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 3 %
+% %%%%%%%%%%%%%%%
+\def\@adamanec{%
+ \yl@xdiff=-12
+ \yl@ydiff=21
+ \Put@Direct(360,720){\hbox to0pt{\@memberb \hss}}% %atom 3
+% \if\@tmpb S%
+ \if\@tmpb a%1998/10/24 by SF
+ \Put@Line(240,660)(4,3){108}% %bond 3
+ \else \ifx\@tmpb\empty%
+ \Put@Line(240,660)(4,3){108}% %bond 3
+ \fi\fi}
+% \end{macrocode}
+%
+% \changes{v1.02}{1998/10/24}{A new command for setting substituents}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 4 %
+% %%%%%%%%%%%%%%%
+\def\@adamaned{%
+ \if\@tmpb a%
+ \yl@xdiff=-17
+ \yl@ydiff=33
+ \Put@Line(300,420)(4,-3){103}% %bond 4-ax
+ \Put@Direct(420,310){\hbox to0pt{\@memberb \hss}}% %atom 4-ax
+ \else \if\@tmpb b%
+ \yl@xdiff=26
+ \yl@ydiff=-26
+ \Put@Line(300,420)(1,4){26}% %bond 4-eq
+ \Put@Direct(300,540){\hbox to0pt{\@memberb \hss}}% %atom 4-eq
+ \else \ifx\@tmpb\empty%
+ \yl@xdiff=-17
+ \yl@ydiff=33
+ \Put@Line(300,420)(4,-3){103}% %bond 4
+ \Put@Direct(420,310){\hbox to0pt{\@memberb \hss}}% %atom 4
+ \else \if\@tmpb D%
+ \yl@xdiff=-17
+ \yl@ydiff=33
+ \Put@Line(296,432)(5,-3){103}% %double bond 4
+ \Put@Line(292,408)(5,-3){103}% %double bond 4
+ \Put@Direct(420,310){\hbox to0pt{\@memberb \hss}}% %atom 4
+ \fi\fi\fi\fi}
+% \end{macrocode}
+%
+% \changes{v1.02}{1998/10/24}{A new command for setting substituents}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 5 %
+% %%%%%%%%%%%%%%%
+\def\@adamanee{%
+ \yl@xdiff=20
+ \yl@ydiff=110
+% \if\@tmpb S%
+ \if\@tmpb a%1998/10/24 by SF
+ \Put@Line(60,240)(1,-5){30}% %bond 5
+ \Put@Direct(70,-20){\hbox to0pt{\@memberb \hss}}% %atom 5
+ \else \ifx\@tmpb\empty%
+ \Put@Line(60,240)(1,-5){30}% %bond 5
+ \Put@Direct(70,-20){\hbox to0pt{\@memberb \hss}}% %atom 5
+ \fi\fi}
+% \end{macrocode}
+%
+% \changes{v1.02}{1998/10/24}{A new command for setting substituents}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 6 %
+% %%%%%%%%%%%%%%%
+\def\@adamanef{%
+ \if\@tmpb a%
+ \yl@xdiff=33
+ \yl@ydiff=103
+ \Put@Line(0,0)(4,-3){103}% %bond 6-ax
+ \Put@Direct(70,-180){\hbox to0pt{\@memberb \hss}}% %atom 6-ax
+ \else \if\@tmpb b%
+ \yl@xdiff=-33
+ \yl@ydiff=103
+ \Put@Line(0,0)(-4,-3){103}% %bond 6-eq
+ \Put@Direct(-70,-180){\hbox to0pt{\hss \@memberb}}% %atom 6-eq
+ \else \ifx\@tmpb\empty%
+ \yl@xdiff=22
+ \yl@ydiff=94
+ \Put@Line(0,0)(0,-1){108}% %bond 6
+ \Put@Direct(-22,-202){\hbox to0pt{\hss \@memberb}}% %atom 6
+ \else \if\@tmpb D%
+ \yl@xdiff=42
+ \yl@ydiff=94
+ \Put@Line(-12,0)(0,-1){108}% %double bond 6
+ \Put@Line(12,0)(0,-1){108}% %double bond 6
+ \putlratom{-42}{-202}{\@memberb}% %atom 6
+ \fi\fi\fi\fi}
+% \end{macrocode}
+%
+% \changes{v1.02}{1998/10/24}{A new command for setting substituents}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 7 %
+% %%%%%%%%%%%%%%%
+\def\@adamaneg{%
+ \yl@xdiff=-20
+ \yl@ydiff=110
+% \if\@tmpb S%
+ \if\@tmpb a%1998/10/24 by SF
+ \Put@Line(-60,240)(-1,-5){30}% %bond 7
+ \Put@Direct(-70,-20){\hbox to0pt{\hss \@memberb}}% %atom 7
+ \else \ifx\@tmpb\empty%
+ \Put@Line(-60,240)(-1,-5){30}% %bond 7
+ \Put@Direct(-70,-20){\hbox to0pt{\hss \@memberb}}% %atom 7-eq
+ \fi\fi}
+% \end{macrocode}
+%
+% \changes{v1.02}{1998/10/24}{A new command for setting substituents}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 8 %
+% %%%%%%%%%%%%%%%
+\def\@adamaneh{%
+ \if\@tmpb a%
+ \yl@xdiff=17
+ \yl@ydiff=33
+ \Put@Line(-300,420)(-4,-3){103}% %bond 8-ax
+ \Put@Direct(-420,310){\hbox to0pt{\hss \@memberb}}% %atom 8-ax
+ \else \if\@tmpb b%
+ \yl@xdiff=-26
+ \yl@ydiff=-16
+ \Put@Line(-300,420)(-1,4){26}% %bond 8-eq
+ \Put@Direct(-300,540){\hbox to0pt{\hss \@memberb}}% %atom 8-eq
+ \else \ifx\@tmpb\empty%
+ \yl@xdiff=17
+ \yl@ydiff=33
+ \Put@Line(-300,420)(-4,-3){103}% %bond 8
+ \Put@Direct(-420,310){\hbox to0pt{\hss \@memberb}}% %atom 8
+ \else \if\@tmpb D%
+ \yl@xdiff=17
+ \yl@ydiff=50
+ \Put@Line(-300,432)(-5,-3){103}% %double bond 8
+ \Put@Line(-303,408)(-5,-3){103}% %double bond 8
+ \Put@Direct(-420,310){\hbox to0pt{\hss \@memberb}}% %atom 8
+ \fi\fi\fi\fi}
+% \end{macrocode}
+%
+% \changes{v1.02}{1998/10/24}{A new command for setting substituents}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 9 %
+% %%%%%%%%%%%%%%%
+\def\@adamanei{%
+ \if\@tmpb a%
+ \yl@xdiff=-43
+ \yl@ydiff=93
+ \Put@Line(-180,420)(-4,-3){103}% %bond 9-ax
+ \Put@Direct(-240,250){\hbox to0pt{\hss \@memberb}}% %atom 9-ax
+ \else \if\@tmpb b%
+ \yl@xdiff=26
+ \yl@ydiff=-16
+ \Put@Line(-180,420)(1,4){26}% %bond 9-eq
+ \Put@Direct(-180,540){\hbox to0pt{\@memberb \hss}}% %atom 9-eq
+ \else \ifx\@tmpb\empty%
+ \yl@xdiff=17
+ \yl@ydiff=93
+ \Put@Line(-180,420)(-4,-3){103}% %bond 9
+ \Put@Direct(-300,250){\hbox to0pt{\hss \@memberb}}% %atom 9
+ \else \if\@tmpb D%
+ \yl@xdiff=17
+ \yl@ydiff=113
+ \Put@Line(-183,432)(-5,-3){103}% %double bond 9
+ \Put@Line(-180,408)(-5,-3){103}% %double bond 9
+ \Put@Direct(-300,250){\hbox to0pt{\hss \@memberb}}% %atom 9
+ \fi\fi\fi\fi}
+% \end{macrocode}
+%
+% \changes{v1.02}{1998/10/24}{A new command for setting substituents}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%
+% % subst. on 10 %
+% %%%%%%%%%%%%%%%%
+\def\@adamanej{%
+ \if\@tmpb a%
+ \yl@xdiff=43
+ \yl@ydiff=92
+ \Put@Line(180,420)(4,-3){103}% %bond 10-ax
+ \Put@Direct(240,250){\hbox to0pt{\@memberb \hss}}% %atom 10-ax
+ \else \if\@tmpb b%
+ \yl@xdiff=-26
+ \yl@ydiff=-16
+ \Put@Line(180,420)(-1,4){26}% %bond 10-eq
+ \Put@Direct(180,540){\hbox to0pt{\hss \@memberb}}% %atom 10-eq
+ \else \ifx\@tmpb\empty%
+ \yl@xdiff=43
+ \yl@ydiff=92
+ \Put@Line(180,420)(4,-3){103}% %bond 10
+ \Put@Direct(240,250){\hbox to0pt{\@memberb \hss}}% %atom 10
+ \else \if\@tmpb D%
+ \yl@xdiff=3
+ \yl@ydiff=112
+ \Put@Line(176,432)(5,-3){103}% %double bond 10
+ \Put@Line(172,408)(5,-3){103}% %double bond 10
+ \Put@Direct(280,250){\hbox to0pt{\@memberb \hss}}% %atom 10
+ \fi\fi\fi\fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The stereo-type skeleton of adamantane is selected
+% to have the following specification. The |\adamantane|
+% command prints a vertical-type formula in which two bridge carbons
+% are placed at the top and the bottom.
+%
+% \begin{verbatim}
+% *************************************************
+% * For preparing adamantane derivatives *
+% * with 4 substituents on bridgehead positions *
+% * (1, 3, 5 and 7) *
+% * with 12 substituents on bridge positions *
+% * (2, 4, 6, 8, 9, 10) *
+% *************************************************
+% \end{verbatim}
+%
+% The macro |\adamantane| has an argument |SUBSLIST| as well as an optional
+% argument |BONDLIST|.
+%
+% \begin{verbatim}
+% \adamantane[BONDLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The adamantane skeleton scarcely takes an inner (endcyclic) double bond.
+% Hence we have
+% \begin{verbatim}
+% BONDLIST: not effective
+% \end{verbatim}
+%
+% The |SUBSLIST| argument takes the standard format of \XyMTeX{}, in which
+% more substitution descriptors are separated from each other
+% by a semicolon.
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents (max 10 substitution positions)
+%
+% for n = 1, 3, 5, and 7 (bridgeheads)
+%
+% n or na : exocyclic single bond at n-atom
+%
+% for n = 2, 4, 6, 8, 9, and 10 (bridges)
+%
+% na : exocyclic single bond at n-atom (axial)
+% nb : exocyclic single bond at n-atom (equatorial)
+% nD : exocyclic double bond at n-atom (2 and 6)
+%
+% \end{verbatim}
+%
+% For numbers larger than 9 (two digits), you should designate
+% the |SUBSLIST| as, e.g.,
+% \begin{verbatim}
+% {{10}a}==Cl; ...
+% \end{verbatim}
+%
+% The definition of |\@adamantane| uses a picture environment, in which
+% both bonds are substituents are put directly.
+% \changes{v1.02}{1998/10/31}{Adding \cs{yladamanposition}, \cs{if@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v5.00}{2010/10/01}{For bond coloring}
+% \changes{v5.01}{2013/06/24}{adamantane front-to-back crossing}
+%
+% \begin{macro}{\@adamantane}
+% \begin{macro}{\adamantane}
+% \begin{macrocode}
+% \changes{v1.02}{1998/10/24}{The macros \cs{@adamanea} to \cs{@adamanej}
+% are separated from the original definition of \cs{adamantane}.}
+\def\adamantane{\@ifnextchar[{\@mantane}{\@damantane[Z]}}
+\def\@damantane[#1]#2{%
+\@reset@ylsw%
+\yladamanposition{#2}%
+\def\@@ylii{0}\def\@@yli{0}%
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(1100,1300)(-550,-300){adamantane}%
+(550,300)%2002/4/30 by S. Fujita
+%bonds for an adamantane skeleton
+ \Put@Line(0,0)(-1,4){60}% %bond 6-7
+ \Put@Line(0,780)(2,-1){240}% %bond 2-3
+ \Put@Line(0,780)(-2,-1){240}% %bond 2-1
+ \Put@Line(-60,240)(-4,3){240}% %bond 7-8
+ \Put@Line(-300,420)(1,4){60}% %bond 8-1
+ \Put@Line(240,660)(-1,-4){60}% %bond 3-10
+ \Put@Line(-60,240)(4,3){240}% %bond 10-7
+{\iffrontthicktothin\thinlines\else\thicklines\fi%2013/06/24
+ \molfronttrue%added for v4.02 (2004/12/20)
+ \Put@Line(300,420)(-1,4){60}% %bond 4-3
+ \Put@Line(-240,660)(1,-4){60}% %bond 1-9
+ \Put@Line(0,0)(1,4){60}% %bond 6-5
+ \Put@Line(60,240)(4,3){240}% %bond 5-4
+ {\def\thinLineWidth{5pt}\BackGroundColor% % front-to-back crossing2013/06/24-07/23
+ \thinlines% %
+ \Put@Line(40,255)(-4,3){80}}% % front-to-back crossing2013/06/24-07/23
+ \Put@Line(60,240)(-4,3){240}% %bond 5-9
+}%
+%substituents
+\@forsemicol\member:=#2\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}\relax%
+\ifx\@memberb\@yl\else
+\ifcase\@tmpa%0 omit
+\or\setBScolor{\@adamanea}% subst. on 1
+%\@adamanea% subst. on 1
+\or\setBScolor{\@adamaneb}% subst. on 2
+%\@adamaneb% subst. on 2
+\or\setBScolor{\@adamanec}% subst. on 3
+%\@adamanec% subst. on 3
+\or\setBScolor{\@adamaned}% subst. on 4
+%\@adamaned% subst. on 4
+\or\setBScolor{\@adamanee}% subst. on 5
+%\@adamanee% subst. on 5
+\or\setBScolor{\@adamanef}% subst. on 6
+%\@adamanef% subst. on 6
+\or\setBScolor{\@adamaneg}% subst. on 7
+%\@adamaneg% subst. on 7
+\or\setBScolor{\@adamaneh}% subst. on 8
+%\@adamaneh% subst. on 8
+\or\setBScolor{\@adamanei}% subst. on 9
+%\@adamanei% subst. on 9
+\or\setBScolor{\@adamanej}% subst. on 10
+%\@adamanej% subst. on 10
+\fi%the end of ifcase
+\fi\fi}%
+\end{ShiftPicEnvB}%
+}% %end of \adamantane macro%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The command |\yladamanposition| is to obtain the shift values
+% |\@ylii| and |\@yli| which are used for shifting the standard
+% point of a substituent.
+% \changes{v1.02}{1998/10/23}{New commands for setting substituents}
+%
+% \begin{macro}{\yladamanposition}
+% \begin{macrocode}
+\def\yladamanposition#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%0 omit
+ \or\gdef\@ylii{240}\gdef\@yli{-660}\global\@ylswtrue% subst. on 1
+ \or\gdef\@ylii{0}\gdef\@yli{-780}\global\@ylswtrue% subst. on 2
+ \or\gdef\@ylii{-240}\gdef\@yli{-660}\global\@ylswtrue% subst. on 3
+ \or\gdef\@ylii{-300}\gdef\@yli{-420}\global\@ylswtrue% subst. on 4
+ \or\gdef\@ylii{-60}\gdef\@yli{-240}\global\@ylswtrue% subst. on 5
+ \or\gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% subst. on 6
+ \or\gdef\@ylii{60}\gdef\@yli{-240}\global\@ylswtrue% subst. on 7
+ \or\gdef\@ylii{300}\gdef\@yli{-420}\global\@ylswtrue% subst. on 8
+ \or\gdef\@ylii{180}\gdef\@yli{-420}\global\@ylswtrue% subst. on 9
+ \or\gdef\@ylii{-180}\gdef\@yli{-420}\global\@ylswtrue% subst. on 10
+\fi%end of ifcase
+\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Horizontal drawing}
+%
+% The stereo-type skeleton of adamantane is selected
+% to have the following specification. The |\hadamantane|
+% command prints a horizontal-type formula in which one bridge-head carbon
+% is put at the top position and a chair-form cyclohexane moiety is
+% placed at the bottom position.
+%
+% \begin{verbatim}
+% ********************************************
+% * adamantane derivatives (horizontal type) *
+% ********************************************
+% The following numbering is adopted in this macro.
+%
+% 1
+% h // `
+% //i ` a
+% 89 `
+% g|| 2
+% ||j | b
+% f 7| l k 3
+% * | ` 10 *
+% 6 * 5 * c
+% e d` 4
+% \end{verbatim}
+%
+% \begin{verbatim}
+% *************************************************
+% * For preparing adamantane derivatives *
+% * with 4 substituents on bridgehead positions *
+% * (1, 3, 5 and 7) *
+% * with 12 substituents on bridge positions *
+% * (2, 4, 6, 8, 9, 10) *
+% *************************************************
+% \end{verbatim}
+%
+% The macro |\hadamantane| has an argument |SUBSLIST| as well as an optional
+% argument |BONDLIST|.
+%
+% \begin{verbatim}
+% \hadamantane[BONDLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The adamantane skeleton scarcely takes an inner (endcyclic) double bond.
+% However, we can designate |BONDLIST|. (This point is different from the
+% specification of the |\adamantane| command.
+%
+% \begin{verbatim}
+%
+% BONDLIST =
+%
+% none : adamantane skeleton
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 3,4-double bond
+% d : 4,5-double bond
+% e : 5,6-double bond
+% f : 6,7-double bond
+% g : 7,8-double bond
+% h : 8,1-double bond
+% i : 9,1-double bond
+% j : 5,9-double bond
+% k : 3,10-double bond
+% l : 7,10-double bond
+%
+% \end{verbatim}
+%
+% The |SUBSLIST| argument takes the standard format of \XyMTeX{}, in which
+% more substitution descriptors are separated from each other
+% by a semicolon.
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents (max 10 substitution positions)
+%
+% for n = 1, 3, 5, and 7 (bridgeheads)
+%
+% n or na : exocyclic single bond at n-atom
+%
+% for n = 2, 4, 6, 8, 9, and 10 (bridges)
+%
+% na : exocyclic single bond at n-atom (axial)
+% nb : exocyclic single bond at n-atom (equatorial)
+% nD : exocyclic double bond at n-atom (2 and 6)
+%
+% \end{verbatim}
+%
+% Moreover, bond modifieer used for chair-form cyclohexanes
+% such as $n$Sa and $n$Se (see above) can be also used in the |SUBSLIST|
+% of the |\hdadamantane| command.
+%
+% For numbers larger than 9 (two digits), you should designate
+% the |SUBSLIST| as, e.g.,
+% \begin{verbatim}
+% {{10}a}==Cl; ...
+% \end{verbatim}
+%
+% The definition of |\@hadamantane| uses a picture environment, in which
+% bonds are put directly, while subsituents are typset by using
+% the macro |\@chairiI| to |\@chairX| defined below.
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylhadamanposition}, \cs{if@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v5.00}{2010/10/01}{For bond coloring}
+% \changes{v5.01}{2013/06/24}{hadamantane front-to-back crossing}
+%
+% \begin{macro}{\@hadamantane}
+% \begin{macro}{\hadamantane}
+% \begin{macrocode}
+% *************************
+% * input of basic macros *
+% *************************
+\def\hadamantane{\@ifnextchar[{\@hadamantane}{\@hadamantane[H]}}
+\def\@hadamantane[#1]#2{%
+\@reset@ylsw%
+\ylhadamanposition{#2}%
+\def\@@ylii{0}\def\@@yli{0}%
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(1600,1400)(-400,-319){hadamantane}%
+(400,319)%2002/4/30 by S. Fujita
+ \thinlines%
+ \Put@Line(0,0)(3,4){170}% % bond 6 to 7
+ \Put@Line(170,226)(3,-1){403}% % 7 to 10
+ \Put@Line(573,91)(3,1){270}% % 10 to 3
+% %%%
+ \Put@Line(170,226)(0,1){360}% % 7 to 8
+ \Put@Line(170,586)(3,1){270}% % 8 to 1
+ \Put@Line(843,181)(0,1){360}% % 3 to 2
+ \Put@Line(843,541)(-3,1){403}% % 2 to 1
+ {\iffrontthicktothin\thinlines\else\thicklines\fi%2013/06/24
+ \molfronttrue
+ \Put@Line(843,181)(-3,-4){170}% % 3 to 4
+ \Put@Line(673,-46)(-3,1){403}% % 4 to 5
+ \Put@Line(0,0)(3,1){270}% % 6 to 5
+% %%%
+ {\def\thinLineWidth{5pt}\BackGroundColor% front-to-back crossing2013/06/24-07/23
+ \thinlines% %
+ \Put@Line(270,150)(0,1){80}}% % front-to-back crossing2013/06/24-07/23
+ \Put@Line(270,90)(0,1){360}% % 5 to 9
+ \Put@Line(270,450)(3,4){170}% % 9 to 1
+ }%
+ \thinlines%
+% inner double bonds
+\@tfor\member:=#1\do{%
+\if\member r%no endocyclic bonds
+\else \if\member a%
+ \Put@Line(450,636)(3,-1){373}% % double bond 1 to 2
+\else \if\member b%
+ \Put@Line(803,206)(0,1){320}% % 3 to 2
+\else \if\member c%%%a%
+ \Put@Line(767,139)(-3,-4){110}% % 3 to 4
+\else \if\member d%%%b%
+ \Put@Line(640,-5)(-3,1){343}% % 4 to 5
+\else \if\member e%%%%c%
+ \Put@Line(240,111)(-3,-1){190}% % 5 to 6
+\else \if\member f%%%d%
+ \Put@Line(63,40)(3,4){110}% % 6 to 7
+\else \if\member g%
+ \Put@Line(200,246)(0,1){320}% % 7 to 8
+\else \if\member h%
+ \Put@Line(400,626)(-3,-1){190}% % 8 to 1
+\else \if\member i%
+ \Put@Line(450,636)(-3,-4){150}% % 9 to 1
+\else \if\member j%
+ \Put@Line(300,110)(0,1){320}% % 5 to 9
+\else \if\member k%%%f%
+ \Put@Line(768,131)(-3,-1){170}% % 3 to 10
+\else \if\member l%
+ \Put@Line(182,187)(3,-1){343}% % 7 to 10
+\fi\fi\fi\fi\fi\fi%
+\fi\fi\fi\fi\fi\fi\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% %0 omit
+ \or\setBScolor{\Put@Direct(440,676){\@chairiI}}% %subst. on 1%%%9
+% \Put@Direct(440,676){\@chairiI}% %subst. on 1%%%9
+ \or\setBScolor{\Put@Direct(843,541){\@chairiII}}% %subst. on 2%%10
+% \Put@Direct(843,541){\@chairiII}% %subst. on 2%%10
+ \or\setBScolor{\@chairiIII}% %subst. on 3%%%4
+% \@chairiIII% %subst. on 3%%%4
+ \or\setBScolor{\@chairiIV}% %subst. on 4%%%3
+% \@chairiIV% %subst. on 4%%%3
+ \or\setBScolor{\@chairiV}% %subst. on 5%%%2
+% \@chairiV% %subst. on 5%%%2
+ \or
+ \setBScolor{\@chairiVI}% %subst. on 6%%%1
+% \@chairiVI% %subst. on 6%%%1
+ \or\setBScolor{\@chairiVII}% %subst. on 7%%%6
+% \@chairiVII% %subst. on 7%%%6
+ \or\setBScolor{\Put@Direct(170,586){\@chairiVIII}}%subst. on 8%%%8
+% \Put@Direct(170,586){\@chairiVIII}%subst. on 8%%%8
+ \or\setBScolor{\Put@Direct(270,450){\@chairiIX}}% %subst. on 9%%%7
+% \Put@Direct(270,450){\@chairiIX}% %subst. on 9%%%7
+ \or\setBScolor{\@chairiX}% %subst. on 10%%5
+% \@chairiX% %subst. on 10%%5
+\fi %end of ifcase
+\fi\fi%
+}%
+\end{ShiftPicEnvB}%
+}% %end of \hadamantane macro
+% End of addition 1994/03/05 SF
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The command |\ylhadamanposition| is to obtain the shift values
+% |\@ylii| and |\@yli| which are used for shifting the standard
+% point of a substituent.
+% \changes{v1.02}{1998/10/23}{New commands for setting substituents}
+%
+% \begin{macro}{\ylhadamanposition}
+% \begin{macrocode}
+\def\ylhadamanposition#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%0 omit
+ \or\gdef\@ylii{-440}\gdef\@yli{-676}\global\@ylswtrue% subst. on 1
+ \or\gdef\@ylii{-843}\gdef\@yli{-541}\global\@ylswtrue% subst. on 2
+ \or\gdef\@ylii{-843}\gdef\@yli{-181}\global\@ylswtrue% subst. on 3
+ \or\gdef\@ylii{-673}\gdef\@yli{46}\global\@ylswtrue% subst. on 4
+ \or\gdef\@ylii{-270}\gdef\@yli{-90}\global\@ylswtrue% subst. on 5
+ \or\gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% subst. on 6
+ \or\gdef\@ylii{-170}\gdef\@yli{-226}\global\@ylswtrue% subst. on 7
+ \or\gdef\@ylii{-170}\gdef\@yli{-586}\global\@ylswtrue% subst. on 8
+ \or\gdef\@ylii{-270}\gdef\@yli{-450}\global\@ylswtrue% subst. on 9
+ \or\gdef\@ylii{-573}\gdef\@yli{-91}\global\@ylswtrue% subst. on 10
+\fi%end of ifcase
+\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% Hereafter, the definitions of the commands |\@chairiI| to |\@chairiX|
+% are described. Each of the commands can treat $n$a-type bond modifiers
+% as well as $n$Sa-type bond modifiers.
+%
+% \begin{macro}{\@chairiVI}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \begin{macrocode}
+% ********************************************************
+% * treatment of the chair form (inverse) of cyclohexane *
+% * added March 05, 1994 by Shinsaku Fujita *
+% ********************************************************
+% %%%%%%%%%%%%%%%
+% % subst. on 6 %
+% %%%%%%%%%%%%%%%
+\def\@chairiVI{%
+ \if\@tmpb a%single bond
+ \yl@xdiff=42
+ \yl@ydiff=92
+ \Put@Line(0,0)(0,-1){168}% single bond at 6 axial
+ \putlratom{-42}{-260}{\@memberb}% left & right type
+ \else\if\@tmpb b%single bond
+ \yl@xdiff=16
+ \yl@ydiff=36
+ \Put@Line(0,0)(-5,3){144}% single bond at 6 equatorial
+ \putlatom{-160}{50}{\@memberb}% left type
+ \else\if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=10
+ \yl@ydiff=90
+ \Put@Line(0,0)(-1,-1){120}% single bond at 6
+ \putlatom{-130}{-210}{\@memberb}% left type
+ \else\if\@tmpc a%(a) axial
+ \yl@xdiff=42
+ \yl@ydiff=92
+ \Put@Line(0,0)(0,-1){168}% single bond at 6 axial
+ \putlratom{-42}{-260}{\@memberb}% left & right type
+ \else\if\@tmpc e%(e) beta
+ \yl@xdiff=16
+ \yl@ydiff=36
+ \Put@Line(0,0)(-5,3){144}% single bond at 6 equatorial
+ \putlatom{-160}{50}{\@memberb}% left type
+ \fi\fi\fi%
+ \else \if\@tmpb D%double bond
+ \yl@xdiff=10
+ \yl@ydiff=90
+ \putlatom{-130}{-210}{\@memberb}% left type
+ \Put@Line(-10,10)(-1,-1){120}% double bond at 6
+ \Put@Line(10,-10)(-1,-1){120}% double bond at 6
+ \else%
+ \yl@xdiff=10
+ \yl@ydiff=90
+ \putlatom{-130}{-210}{\@memberb}% left type
+ \Put@Line(0,0)(-1,-1){120}% single bond at 6
+ \fi\fi\fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@chairiVII}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 7 %
+% %%%%%%%%%%%%%%%
+\def\@chairiVII{%
+ \if\@tmpb a%single bond
+ \yl@xdiff=26
+ \yl@ydiff=46
+ \Put@Line(170,226)(-5,-3){144}% single bond at 7 equatorial
+ \putlatom{10}{94}{\@memberb}% left type
+ \else\ifx\@tmpb\empty%single bond
+ \yl@xdiff=26
+ \yl@ydiff=46
+ \Put@Line(170,226)(-5,-3){144}% single bond at 7 equatorial
+ \putlatom{10}{94}{\@memberb}% left type
+ \else\if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=10
+ \yl@ydiff=30
+ \Put@Line(170,226)(-1,1){120}% single bond at 7
+ \putratom{40}{316}{\@memberb}% left type
+ \else\if\@tmpc a%(a) axial
+ \yl@xdiff=32
+ \yl@ydiff=12
+ \Put@Line(170,226)(0,1){168}% single bond at 7 axial
+ \putlratom{138}{406}{\@memberb}% left & right type
+ \else\if\@tmpc e%(e) beta
+ \yl@xdiff=26
+ \yl@ydiff=46
+ \Put@Line(170,226)(-5,-3){144}% single bond at 7 equatorial
+ \putlatom{10}{94}{\@memberb}% left type
+ \fi\fi\fi%
+ \else \if\@tmpb D%double bond
+ \yl@xdiff=10
+ \yl@ydiff=30
+ \putlatom{40}{316}{\@memberb}% left type
+ \Put@Line(160,216)(-1,1){120}% double bond at 7
+ \Put@Line(180,236)(-1,1){120}% double bond at 7
+ \else%
+ \yl@xdiff=10
+ \yl@ydiff=30
+ \putlatom{40}{316}{\@memberb}% left type
+ \Put@Line(170,226)(-1,1){120}% single bond at 7
+ \fi\fi\fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@chairiX}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%
+% % subst. on 10 %
+% %%%%%%%%%%%%%%%%
+\def\@chairiX{%
+ \if\@tmpb a%single bond
+ \yl@xdiff=40
+ \yl@ydiff=104
+ \Put@Line(573,91)(0,-1){168}% single bond at 5 axial
+ \putlratom{533}{-181}{\@memberb}% left type
+ \else\if\@tmpb b%single bond
+ \yl@xdiff=-36
+ \yl@ydiff=3
+ \Put@Line(573,91)(5,3){144}% single bond at 5 equatorial
+ \putlatom{753}{180}{\@memberb}% left type
+ \else\if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=-10
+ \yl@ydiff=56
+ \Put@Line(573,91)(5,-4){170}% single bond at 5
+ \putratom{753}{-101}{\@memberb}% right type
+ \else\if\@tmpc a%(a) axial
+ \yl@xdiff=40
+ \yl@ydiff=104
+ \Put@Line(573,91)(0,-1){168}% single bond at 5 axial
+ \putlratom{533}{-181}{\@memberb}% left type
+ \else\if\@tmpc e%(e) beta
+ \yl@xdiff=-36
+ \yl@ydiff=3
+ \Put@Line(573,91)(5,3){144}% single bond at 5 equatorial
+ \putlatom{753}{180}{\@memberb}% left type
+ \fi\fi\fi%
+ \else \if\@tmpb D%double bond
+ \yl@xdiff=10
+ \yl@ydiff=86
+ \putratom{733}{-141}{\@memberb}% right type
+ \Put@Line(563,83)(5,-4){170}% double bond at 5
+ \Put@Line(583,99)(5,-4){170}% double bond at 5
+ \else%
+ \yl@xdiff=-10
+ \yl@ydiff=76
+ \Put@Line(573,91)(5,-4){170}% single bond at 5
+ \putratom{753}{-121}{\@memberb}% right type
+ \fi\fi\fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@chairiIII}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 3 %
+% %%%%%%%%%%%%%%%
+\def\@chairiIII{%
+ \if\@tmpb a%single bond
+ \yl@xdiff=-16
+ \yl@ydiff=64
+ \Put@Line(843,181)(5,-3){144}% single bond at 3 equatorial
+ \putratom{1003}{31}{\@memberb}% right type
+ \else\ifx\@tmpb\empty%single bond
+ \yl@xdiff=-16
+ \yl@ydiff=64
+ \Put@Line(843,181)(5,-3){144}% single bond at 3 equatorial
+ \putratom{1003}{31}{\@memberb}% right type
+ \else\if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=10
+ \yl@ydiff=30
+ \Put@Line(843,181)(1,1){120}% single bond at 3
+ \putratom{953}{271}{\@memberb}% right type
+ \else\if\@tmpc a%(a) axial
+ \yl@xdiff=42
+ \yl@ydiff=11
+ \Put@Line(843,181)(0,1){168}% single bond at 3 axial
+ \putlratom{801}{360}{\@memberb}% left & right type
+ \else\if\@tmpc e%(e) beta
+ \yl@xdiff=-16
+ \yl@ydiff=64
+ \Put@Line(843,181)(5,-3){144}% single bond at 3 equatorial
+ \putratom{1003}{31}{\@memberb}% right type
+ \fi\fi\fi%
+ \else \if\@tmpb D%double bond
+ \yl@xdiff=0
+ \yl@ydiff=30
+ \putratom{953}{271}{\@memberb}% right type
+ \Put@Line(833,191)(1,1){120}% double bond at 3
+ \Put@Line(853,171)(1,1){120}% double bond at 3
+ \else%
+ \yl@xdiff=10
+ \yl@ydiff=30
+ \Put@Line(843,181)(1,1){120}% single bond at 3
+ \putratom{953}{271}{\@memberb}% right type
+ \fi\fi\fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@chairiIV}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 4 %
+% %%%%%%%%%%%%%%%
+\def\@chairiIV{%
+ \if\@tmpb a%single bond
+ \yl@xdiff=40
+ \yl@ydiff=104
+ \Put@Line(673,-46)(0,-1){168}% single bond at 4 axial
+ \putlratom{633}{-318}{\@memberb}% left & right type
+ \else\if\@tmpb b%single bond
+ \yl@xdiff=-6
+ \yl@ydiff=17
+ \Put@Line(673,-46)(5,3){144}% single bond at 4 equatorial
+ \putratom{823}{23}{\@memberb}% right type
+ \else\if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=-10
+ \yl@ydiff=92
+ \Put@Line(673,-46)(1,-1){120}% single bond at 4
+ \putratom{803}{-258}{\@memberb}% right type
+ \else\if\@tmpc a%(a) axial
+ \yl@xdiff=40
+ \yl@ydiff=104
+ \Put@Line(673,-46)(0,-1){168}% single bond at 4 axial
+ \putlratom{633}{-318}{\@memberb}% left & right type
+ \else\if\@tmpc e%(e) beta
+ \yl@xdiff=-6
+ \yl@ydiff=17
+ \Put@Line(673,-46)(5,3){144}% single bond at 4 equatorial
+ \putratom{823}{23}{\@memberb}% right type
+ \fi\fi\fi%
+ \else \if\@tmpb D%double bond
+ \yl@xdiff=-10
+ \yl@ydiff=92
+ \putratom{803}{-258}{\@memberb}% right type
+ \Put@Line(663,-53)(1,-1){120}% double bond at 4
+ \Put@Line(683,-38)(1,-1){120}% double bond at 4
+ \else%
+ \yl@xdiff=-10
+ \yl@ydiff=76
+ \Put@Line(673,-46)(5,-4){170}% single bond at 4
+ \putratom{853}{-258}{\@memberb}% right type
+ \fi\fi\fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@chairiV}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 5 %
+% %%%%%%%%%%%%%%%
+\def\@chairiV{%
+ \if\@tmpb a%single bond
+ \yl@xdiff=26
+ \yl@ydiff=102
+ \Put@Line(270,90)(-5,-3){144}% single bond at 5 equatorial
+ \putratom{100}{-98}{\@memberb}% left type
+ \else\ifx\@tmpb\empty%single bond
+ \yl@xdiff=26
+ \yl@ydiff=102
+ \Put@Line(270,90)(-5,-3){144}% single bond at 5 equatorial
+ \putratom{100}{-98}{\@memberb}% left type
+ \else\if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=0
+ \yl@ydiff=46
+ \Put@Line(270,90)(-5,4){170}% single bond at 5
+ \putlatom{100}{180}{\@memberb}% left type
+ \else\if\@tmpc a%(a) axial
+ \yl@xdiff=32
+ \yl@ydiff=12
+ \Put@Line(270,90)(0,1){168}% single bond at 5 axial
+ \putlratom{238}{270}{\@memberb}% left type
+ \else\if\@tmpc e%(e) beta
+ \yl@xdiff=36
+ \yl@ydiff=102
+ \Put@Line(270,90)(-5,-3){144}% single bond at 5 equatorial
+ \putratom{100}{-98}{\@memberb}% left type
+ \fi\fi\fi%
+ \else \if\@tmpb D%double bond
+ \yl@xdiff=0
+ \yl@ydiff=36
+ \putlatom{100}{200}{\@memberb}% left or right type
+ \Put@Line(260,80)(-5,4){170}% double bond at 5
+ \Put@Line(280,100)(-5,4){170}% double bond at 5
+ \else%
+ \yl@xdiff=0
+ \yl@ydiff=26
+ \putlatom{100}{200}{\@memberb}% left type
+ \Put@Line(270,90)(-5,4){170}% single bond at 5
+ \fi\fi\fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@chairiI}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 1 %
+% %%%%%%%%%%%%%%%
+\def\@chairiI{%
+ \if\@tmpb a%single bond
+ \yl@xdiff=42
+ \yl@ydiff=-10
+ \Put@Line(0,0)(0,1){168}% single bond at 1 axial
+ \putlratom{-42}{178}{\@memberb}% left & right type
+ \else\ifx\@tmpb\empty%
+ \yl@xdiff=42
+ \yl@ydiff=-10
+ \Put@Line(0,0)(0,1){168}% single bond at 1 axial
+ \putlratom{-42}{178}{\@memberb}% left & right type
+ \else\if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=42
+ \yl@ydiff=-10
+ \Put@Line(0,0)(0,1){168}% single bond at 1 axial
+ \putlratom{-42}{178}{\@memberb}% left & right type
+ \else\if\@tmpc a%(a) axial
+ \yl@xdiff=42
+ \yl@ydiff=-10
+ \Put@Line(0,0)(0,1){168}% single bond at 1 axial
+ \putlratom{-42}{178}{\@memberb}% left & right type
+ \else\if\@tmpc e%(e) beta
+ \yl@xdiff=42
+ \yl@ydiff=-10
+ \Put@Line(0,0)(0,1){168}% single bond at 1 axial
+ \putlratom{-42}{178}{\@memberb}% left & right type
+ \fi\fi\fi%
+ \else \if\@tmpb D%double bond
+ \yl@xdiff=42
+ \yl@ydiff=-10
+ \Put@Line(0,0)(0,1){168}% single bond at 1 axial
+ \putlratom{-42}{178}{\@memberb}% left & right type
+ \else%
+ \yl@xdiff=42
+ \yl@ydiff=-10
+ \Put@Line(0,0)(0,1){168}% single bond at 1 axial
+ \putlratom{-42}{178}{\@memberb}% left & right type
+ \fi\fi\fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@chairiII}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%
+% % subst. on 2 %
+% %%%%%%%%%%%%%%%%
+\def\@chairiII{%
+ \if\@tmpb a%single bond
+ \yl@xdiff=-10
+ \yl@ydiff=13
+ \Put@Line(0,0)(3,1){190}% single bond at 6 equatorial
+ \putratom{200}{50}{\@memberb}% right type
+ \else\if\@tmpb b%single bond
+ \yl@xdiff=-10
+ \yl@ydiff=0
+ \Put@Line(0,0)(3,4){120}% % bond 1 to 6
+ \putratom{130}{160}{\@memberb}% left type
+ \else\if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=-10
+ \yl@ydiff=-10
+ \Put@Line(0,0)(1,1){120}% single bond at 1
+ \putratom{130}{130}{\@memberb}% left type
+ \else\if\@tmpc a%(a) axial
+ \yl@xdiff=-10
+ \yl@ydiff=0
+ \Put@Line(0,0)(3,4){120}% % bond 1 to 6
+ \putratom{130}{160}{\@memberb}% left type
+ \else\if\@tmpc e%(e) beta
+ \yl@xdiff=-10
+ \yl@ydiff=13
+ \Put@Line(0,0)(3,1){190}% single bond at 6 equatorial
+ \putratom{200}{50}{\@memberb}% right type
+ \fi\fi\fi%
+ \else \if\@tmpb D%double bond
+ \yl@xdiff=-10
+ \yl@ydiff=-10
+ \putratom{130}{130}{\@memberb}% left type
+ \Put@Line(-10,10)(1,1){120}% double bond at 1
+ \Put@Line(10,-10)(1,1){120}% double bond at 1
+ \else%
+ \yl@xdiff=-10
+ \yl@ydiff=-10
+ \putratom{130}{130}{\@memberb}% left type
+ \Put@Line(0,0)(1,1){120}% single bond at 1
+ \fi\fi\fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@chairigVIII}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 8 %
+% %%%%%%%%%%%%%%%
+\def\@chairiVIII{%
+ \if\@tmpb a%single bond
+ \yl@xdiff=16
+ \yl@ydiff=36
+ \Put@Line(0,0)(-5,3){144}% single bond at 1 equatorial
+ \putlatom{-160}{50}{\@memberb}% left type
+ \else\if\@tmpb b%single bond
+ \yl@xdiff=-10
+ \yl@ydiff=0
+ \Put@Line(0,0)(3,4){120}% % bond 1 to 6
+ \putratom{130}{160}{\@memberb}% left type
+ \else\if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=4
+ \yl@ydiff=36
+ \Put@Line(0,0)(-5,3){144}% single bond at 1 equatorial
+ \putlatom{-140}{50}{\@memberb}% left type
+ \else\if\@tmpc e% right-hand
+ \yl@xdiff=-10
+ \yl@ydiff=0
+ \Put@Line(0,0)(3,4){120}% % bond 1 to 6
+ \putratom{130}{160}{\@memberb}% left type
+ \else\if\@tmpc a% left-hand
+ \yl@xdiff=16
+ \yl@ydiff=36
+ \Put@Line(0,0)(-5,3){144}% single bond at 1 equatorial
+ \putlatom{-160}{50}{\@memberb}% left type
+ \fi\fi\fi%
+ \else \if\@tmpb D%double bond
+ \yl@xdiff=4
+ \yl@ydiff=26
+ \putlatom{-140}{60}{\@memberb}% left type
+ \Put@Line(10,10)(-5,3){144}% single bond at 1 equatorial
+ \Put@Line(0,-10)(-5,3){144}% single bond at 1 equatorial
+ \else%
+ \yl@xdiff=4
+ \yl@ydiff=36
+ \Put@Line(0,0)(-5,3){144}% single bond at 1 equatorial
+ \putlatom{-140}{50}{\@memberb}% left type
+ \fi\fi\fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@chairiIX}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 9 %
+% %%%%%%%%%%%%%%%
+\def\@chairiIX{%
+ \if\@tmpb a%single bond
+ \yl@xdiff=16
+ \yl@ydiff=36
+ \Put@Line(0,0)(-5,3){144}% single bond at 1 equatorial
+ \putlatom{-160}{50}{\@memberb}% left type
+ \else\if\@tmpb b%single bond
+ \yl@xdiff=-16
+ \yl@ydiff=36
+ \Put@Line(0,0)(5,3){144}% single bond at 6 equatorial
+ \putratom{160}{50}{\@memberb}% left type
+ \else\if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=4
+ \yl@ydiff=36
+ \Put@Line(0,0)(-5,3){144}% single bond at 1 equatorial
+ \putlatom{-140}{50}{\@memberb}% left type
+ \else\if\@tmpc e% right-hand
+ \yl@xdiff=-16
+ \yl@ydiff=36
+ \Put@Line(0,0)(5,3){144}% single bond at 6 equatorial
+ \putratom{160}{50}{\@memberb}% left type
+ \else\if\@tmpc a% left-hand
+ \yl@xdiff=16
+ \yl@ydiff=36
+ \Put@Line(0,0)(-5,3){144}% single bond at 1 equatorial
+ \putlatom{-160}{50}{\@memberb}% left type
+ \fi\fi\fi%
+ \else \if\@tmpb D%double bond
+ \yl@xdiff=4
+ \yl@ydiff=36
+ \putlatom{-140}{50}{\@memberb}% left type
+ \Put@Line(10,10)(-5,3){144}% single bond at 1 equatorial
+ \Put@Line(0,-10)(-5,3){144}% single bond at 1 equatorial
+ \else%
+ \yl@xdiff=4
+ \yl@ydiff=36
+ \Put@Line(0,0)(-5,3){144}% single bond at 1 equatorial
+ \putlatom{-140}{50}{\@memberb}% left type
+ \fi\fi\fi\fi}%
+%</ccycle>
+% \end{macrocode}
+% \end{macro}
+%
+% \Finale
+%
+\endinput
diff --git a/Master/texmf-dist/source/latex/xymtex/base/ccycle.ins b/Master/texmf-dist/source/latex/xymtex/base/ccycle.ins
new file mode 100644
index 00000000000..ee9cc619266
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/ccycle.ins
@@ -0,0 +1,59 @@
+\def\batchfile{ccycle.ins}
+\input docstrip.tex
+\preamble
+
+This is a generated file.
+
+Copyright 1996,1998,2001,2002, 2004, 2009, 2010, 2013 by Shinsaku Fujita
+all rights reserved.
+This style file is created for drawing chemical structural formulas
+This style file is to be contained in the ``xymtex'' directory which
+is an input directory for TeX.
+
+This file is part of the XyMTeX system.
+=======================================
+
+Old Versions:
+Version 1.01 Released on August 16, 1996
+Version 1.02 Released on October 31, 1996
+Version 2.00 Released on December 25, 1998
+Version 2.01 Released on June 20, 2001 (private version)
+Version 3.00 Released on April 30, 2002
+Version 4.00 Released on May 30, 2002 (private version)
+Version 4.01 Released on August 30, 2004
+Version 4.02 Released on December 20, 2004
+Version 4.04 Released on June 15, 2009
+Version 5.00 Released on October 01, 2010
+Version 5.01b Released on April 01, 2013
+Version 5.01bb Released on June 26, 2013
+
+The Present Version:
+Version 5.01 Released on July 23, 2013
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3
+of this license or (at your option) any later version.
+The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of LaTeX
+version 2005/12/01 or later.
+
+This work has the LPPL maintenance status `maintained'.
+The Current Maintainer of this work is Shinsaku Fujita.
+
+This work consists of the files ccycle.dtx and ccycle.ins
+and the derived file ccycle.sty.
+
+=======================================
+
+\endpreamble
+
+\keepsilent
+
+\generateFile{ccycle.drv}{t}{%
+ \from{ccycle.dtx}{driver}}
+
+\generateFile{ccycle.sty}{t}{%
+ \from{ccycle.dtx}{ccycle}}
+
+\endinput
diff --git a/Master/texmf-dist/source/latex/xymtex/base/chemstr.dtx b/Master/texmf-dist/source/latex/xymtex/base/chemstr.dtx
new file mode 100644
index 00000000000..6e437826b83
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/chemstr.dtx
@@ -0,0 +1,9531 @@
+% \iffalse meta-comment
+%% File: chemstr.dtx
+%
+% Copyright 1993,1996,1998,2001,2002, 2004, 2005, 2006, 2009, 2010, 2011, 2013 by Shinsaku Fujita
+%
+% This file is part of XyMTeX system.
+% -------------------------------------
+%
+% This file is a successor to:
+%
+% chemstr.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].
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+% The Current Maintainer of this work is Shinsaku Fujita.
+%
+% This work consists of the files chemstr.dtx and chemstr.ins
+% and the derived file chemstr.sty.
+%
+% Please report any bugs, comments, suggestions, etc. to:
+% Shinsaku Fujita,
+% Shonan Institute of Chemoinformatics and Mathematical Chemistry
+% Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun, Kanagawa 250-0019 Japan
+% (old address)
+% Ashigara Research Laboratories, Fuji Photo Film Co., Ltd.,
+% Minami-Ashigara, Kanagawa-ken, 250-01, Japan.
+% (old address)
+% Department of Chemistry and Materials Technology,
+% Kyoto Institute of Technology, \\
+% Matsugasaki, Sakyoku, Kyoto, 606-8585 Japan
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Bug Fix:
+% 1993/11/14 S. Fujita
+% A and B are interchanged.
+% a and b are interchanged.
+%
+% \def\j@urnalname{chemstr}
+% \def\versi@ndate{December 01, 1993}
+% \def\versi@nno{ver1.00}
+% \def\copyrighth@lder{SF}% % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{chemstr}
+% \def\versi@ndate{August 16, 1996}
+% \def\versi@nno{ver1.01}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{chemstr}
+% \def\versi@ndate{October 31, 1998}
+% \def\versi@nno{ver1.02}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{chemstr}
+% \def\versi@ndate{June 20, 2001}
+% \def\versi@nno{ver2.01}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% (No Distribution)
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{chemstr}
+% \def\versi@ndate{April 30, 2002}
+% \def\versi@nno{ver3.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{chemstr}
+% \def\versi@ndate{May 30, 2002}
+% \def\versi@nno{ver4.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{chemstr}
+% \def\versi@ndate{August 30, 2004}
+% \def\versi@nno{ver4.01}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{chemstr}
+% \def\versi@ndate{November 11, 2004}
+% \def\versi@nno{ver4.01a}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{chemstr}
+% \def\versi@ndate{December 20, 2004}
+% \def\versi@nno{ver4.02}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{chemstr}
+% \def\versi@ndate{July 20, 2005}
+% \def\versi@nno{ver4.03}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{chemstr}
+% \def\versi@ndate{September 5, 2006}
+% \def\versi@nno{ver4.03b}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{chemstr}
+% \def\versi@ndate{July 7, 2009}
+% \def\versi@nno{ver4.04a}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{chemstr}
+% \def\versi@ndate{October 25, 2009}
+% \def\versi@nno{ver4.05}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{chemstr}
+% \def\versi@ndate{October 01, 2010}
+% \def\versi@nno{ver5.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{chemstr}
+% \def\versi@ndate{February 24, 2011}
+% \def\versi@nno{ver5.01b}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \fi
+%
+% \CheckSum{14811}
+%% \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}
+% \changes{v2.01}{2001/06/20}{Size reduction}
+% \changes{v2.01}{2001/06/21}{The command \cs{dotorline} is added.}
+% \changes{v3.00}{2002/04/30}{picture to sfpicture, etc.}
+% \changes{v4.00}{2002/05/30}{PostScript output and ShiftPicEnv environment}
+% \changes{v4.01}{2004/08/30}{Minor additions}
+% \changes{v4.01a}{2004/11/11}{Bug fix}
+% \changes{v4.02}{2004/12/20}{Adjustment for \cs{setbondatom..}}
+% \changes{v4.02a}{2004/12/27}{Bug fix: change \cs{ggg} to \cs{gggA}}
+% \changes{v4.03}{2005/07/20}{wave bonds for stereochemistry}
+% \changes{v4.03b}{2006/9/5}{\cs{ggg} to \cs{gggA} in \cs{test@vertix}}
+% \changes{v4.04}{2009/7/7}{Bug fix for the \cs{XyMTeX} logo}
+% \changes{v4.05}{2009/10/25}{Bug fix for the \cs{XyMTeX} logo}
+% \changes{v5.00}{2010/10/01}{bond coloring and the LaTeX Project Public License}
+% \changes{v5.01b}{2011/02/24}{added commands for bond coloring of the PostScript Mode}
+% \changes{v5.01}{2011/03/22}{\cs{SetTwoAtoms} added}
+% \changes{v5.01}{2011/04/06}{bug fix}
+% \changes{v5.01}{2011/06/19}{bug fix: \cs{ylposition}}
+% \fi
+%
+% \iffalse
+%<*driver>
+\NeedsTeXFormat{pLaTeX2e}
+% \fi
+ \ProvidesFile{chemstr.dtx}[2013/03/22 v5.01 XyMTeX{} package file]
+% \iffalse
+\documentclass{ltxdoc}
+\GetFileInfo{chemstr.dtx}
+%
+% %%XyMTeX Logo: Definition 4%%%
+\makeatletter
+\def\select@@Upsionfont{%
+\edef\test@rm{\rmdefault}%
+\edef\test@sf{\sfdefault}%
+\edef\test@tt{\ttdefault}%
+\ifx\f@family \test@rm\relax
+{\expandafter\csname OT1/cmr/\f@series/\f@shape/\f@size%
+\endcsname\char'7}%
+\else\ifx\f@family \test@sf\relax
+{\expandafter\csname OT1/cmss/\f@series/\f@shape/\f@size%
+\endcsname\char'7}%
+\else\ifx\f@family \test@tt\relax
+{\expandafter\csname OT1/cmtt/\f@series/\f@shape/\f@size%
+\endcsname\char'7}%
+\else{\expandafter\csname OT1/cmr/\f@series/\f@shape/\f@size%
+\endcsname
+\char'7}\fi\fi\fi%
+}
+\def\XyM{X\kern-.30em\smash{%
+\raise.50ex\hbox to0.8em{\hss\select@@Upsionfont%
+\hss}}\kern-.30em{M}}
+\def\XyMTeX{\XyM\kern-.1em\TeX}
+\makeatother
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\title{Basic Commands for Drawing Chemical Structures
+by {\sffamily chemstr.sty}
+(\fileversion) of \XyMTeX{}}
+\author{Shinsaku Fujita \\
+Shonan Institute of Chemoinformatics and
+Mathematical Chemistry \\
+Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun, Kanagawa, \\
+258-0019 Japan
+% % (old address)
+% %Department of Chemistry and Materials Technology, \\
+% %Kyoto Institute of Technology, \\
+% %Matsugasaki, Sakyoku, Kyoto, 606-8585 Japan
+% % (old old address)
+% % Ashigara Research Laboratories,
+% % Fuji Photo Film Co., Ltd., \\
+% % Minami-Ashigara, Kanagawa, 250-01 Japan
+}
+\date{\filedate}
+%
+\begin{document}
+ \maketitle
+ \DocInput{chemstr.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \section{Introduction}\label{chemstr:intro}
+%
+% \subsection{Options for {\sffamily docstrip}}
+%
+% \DeleteShortVerb{\|}
+% \begin{center}
+% \begin{tabular}{|l|l|}
+% \hline
+% \emph{option} & \emph{function}\\ \hline
+% chemstr & chemstr.sty \\
+% driver & driver for this dtx file \\
+% \hline
+% \end{tabular}
+% \end{center}
+% \MakeShortVerb{\|}
+%
+% \subsection{Version Information}
+%
+% \begin{macrocode}
+%<*chemstr>
+\typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 5.01}
+\typeout{ -- Released June 19, 2013 by Shinsaku Fujita}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\j@urnalname{chemstr}
+\def\versi@ndate{June 19, 2013}
+\def\versi@nno{ver5.01}
+\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 chemstr.sty}
+%
+% \begin{verbatim}
+% *********************************
+% * chemstr.sty: list of commands *
+% *********************************
+%
+% <For separating an augument list to each argument>
+%
+% \@forsemicol
+% \@forl@@p
+% \@iforl@@p
+% \@m@mb@r
+% \twoch@r
+% \twoCH@R (terminater //)
+% \twoch@@r
+% \twoCH@@R (terminater //)
+% \threech@r
+%
+% <For designating coordinates for drawing round arrows>
+%
+% \@forendparenthesis
+% \end{verbatim}
+%
+% \begin{verbatim}
+% <Convention>
+%
+% \rmoiety
+% \lmoiety
+% \putlatom
+% \putratom
+% \putlratom
+% \Putlratom
+%
+% \dotorline
+%
+% \end{verbatim}
+%
+% \begin{verbatim}
+% <Treatment of substitution positions>
+%
+% \if@clip \@clipfalse \@cliptrue
+% \if@aclip \@aclipfalse \@acliptrue
+% \if@bclip \@bclipfalse \@bcliptrue
+% \if@cclip \@cclipfalse \@ccliptrue
+% \if@eclip \@eclipfalse \@ecliptrue
+% \if@fclip \@fclipfalse \@fcliptrue
+% \iforigpt \origptfalse \origpttrue
+% \@tmpaa (counter)
+%
+% \clipinfo \storeclipinfo \developclipinfo
+%
+% <Structures as substituents>
+% \@yl
+% \yl@xdiff \yl@ydiff
+% \yl@shiftii
+% \yl@shifti
+% \@ylii
+% \@yli
+% \@@ylii
+% \@@yli
+%
+% <Fused positions check>
+% \fuseAx \fuseAy
+% \fuseBx \fuseBy
+%
+% \end{verbatim}
+%
+% \begin{verbatim}
+% <VERTICAL SETTING>
+% Substitution
+%
+% \@substa
+% \@substb
+% \@substc
+% \@substd
+% \@subste
+% \@substf
+%
+% \end{verbatim}
+%
+% \begin{verbatim}
+% Setting of atoms and bonds
+%
+% \setsixringv (on a vertical six-membered ring)
+% \setdecaringv (on a decaline (six-six) ring)
+% \setfusedbond (at fused bond positions)
+% \if@clipfuse \@clipfusefalse \@clipfusetrue
+% \setatombond (at an appropiate position)
+%
+% Placing structures as substituents
+% \ylposition
+% \ylfusedpostion
+% \ylatombondposition
+%
+% \end{verbatim}
+%
+% \begin{verbatim}
+% <HORIZONTAL SETTING>
+% Substitution
+%
+% \@hsubsta
+% \@hsubstb
+% \@hsubstc
+% \@hsubstd
+% \@hsubste
+% \@hsubstf
+%
+% \end{verbatim}
+%
+% \begin{verbatim}
+% Setting of atoms and bonds
+%
+% \setsixringh (on a horizontal six-membered ring)
+%
+% Placing structures as substituents
+%
+% \ylpositionh
+%
+% \end{verbatim}
+%
+% \begin{verbatim}
+% <Linking units>
+%
+% \ryl (right linking unit)
+% \lyl (left linking unit)
+
+
+% <Minor Linking Units>
+%
+% \ayl
+%
+% \upnobond
+% \downnobond
+%
+% \BiFunc
+%
+% <Setting fused rings>
+%
+% \set@fusionadd@sixv \set@fusion@sixv
+% \set@fusionadd@sixvi \set@fusion@sixvi
+% \set@fusionadd@sixh \set@fusion@sixh
+% \set@fusionadd@sixhi \set@fusion@sixhi
+%
+% \set@fusion@decav
+% \set@fusion@decavb
+% \set@fusion@decavt
+% \set@fusion@decah
+%
+% \set@fusion@hanthrav
+% \set@fusion@hphenanv
+%
+% \set@fusionadd@fivev \set@fusion@fivev
+% \set@fusionadd@fivevi \set@fusion@fivevi
+% \set@fusionadd@fiveh \set@fusion@fiveh
+% \set@fusionadd@fivehi \set@fusion@fivehi
+%
+% \set@fusion@nonav \set@fusion@nonavi
+% \set@fusion@nonah \set@fusion@nonahi
+%
+% \end{verbatim}
+%
+% \begin{verbatim}
+% <For PostScript output>
+%
+% \let\Put@Direct=\put
+% \let\Multiput@Direct=\multiput
+% \Put@@@Line
+% \Put@@@sCircle
+% \Put@@@oCircle
+%
+% <ShiftPicEnv environments>
+%
+% ShiftPicEnv
+% ShiftPicEnvB
+% \let\sfpicture=\picture
+% \let\endsfpicture=\endpicture
+%
+% <Wave bonds for stereochemistry>
+% \ifwavebond, \WaveBonds
+%
+% <Bond coloring>
+% \addbscolor,
+% \setbscolor, \setBScolor
+% \bscolorswON, \bscolorswOFF
+% \defineXyMcolor
+% \XyMcolor
+%
+% <Truncation for two or more atoms>
+% \SetTwoAtoms
+% \SetTwoAtomx
+% \end{verbatim}
+%
+% \section{Initialization and conventions}
+% \subsection{Logos}
+%
+% The logo of \XyMTeX{} is defined in two ways. The first definition uses
+% the \verb/\fam/ command, which sometimes shows unusual behavior. The
+% second definition is adopted in the present version of \XyMTeX{}, since
+% this aims at the compatibility to \LaTeXe{}.
+%
+% \begin{macro}{\XyMTeX}
+% \begin{macrocode}
+% ***************
+% * XyMTeX Logo *
+% ***************
+% %%XyMTeX Logo: Definition 1%%%
+% \newcount\TestCount
+% \def\XyM{\ifnum\fam=-1\relax\fam=0\relax\fi\TestCount=\fam%
+% X\kern-.30em\smash{\raise.50ex\hbox{$\fam\TestCount\Upsilon$}}%
+% \kern-.30em{M}}
+% \def\XyMTeX{\XyM\kern-.1em\TeX}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%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}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%XyMTeX Logo: Definition 3%%%2009/07/07
+% \edef\test@it{\itdefault}
+% \edef\test@sf{\sfdefault}
+% \edef\test@tt{\ttdefault}
+% \edef\test@sl{\sldefault}
+% \edef\test@bx{\bfdefault}
+% \def\XyM{X\kern-.30em\smash{%
+% \raise.50ex\hbox to0.8em{\hss%
+% \ifx\f@series \test@bx\relax
+% $\mathbf{\Upsilon}$%
+% \else\ifx\f@shape \test@it\relax
+% $\mathit{\Upsilon}$%
+% \else\ifx\f@family \test@sf\relax
+% $\mathsf{\Upsilon}$%
+% \else\ifx\f@family \test@tt\relax
+% $\mathtt{\Upsilon}$%
+% \else\ifx\f@shape \test@sl\relax
+% $\mathit{\Upsilon}$%
+% \else
+% $\Upsilon$\fi\fi\fi\fi\fi%
+% \hss}}\kern-.30em{M}}
+% \def\XyMTeX{\XyM\kern-.1em\TeX}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % \end{macrocode}
+%
+% \begin{macrocode}
+% %%XyMTeX Logo: Definition 4%%%2009/10/25
+\def\select@@Upsionfont{%
+\edef\test@rm{\rmdefault}%
+\edef\test@sf{\sfdefault}%
+\edef\test@tt{\ttdefault}%
+\ifx\f@family \test@rm\relax
+{\expandafter\csname OT1/cmr/\f@series/\f@shape/\f@size%
+\endcsname\char'7}%
+\else\ifx\f@family \test@sf\relax
+{\expandafter\csname OT1/cmss/\f@series/\f@shape/\f@size%
+\endcsname\char'7}%
+\else\ifx\f@family \test@tt\relax
+{\expandafter\csname OT1/cmtt/\f@series/\f@shape/\f@size%
+\endcsname\char'7}%
+\else{\expandafter\csname OT1/cmr/\f@series/\f@shape/\f@size%
+\endcsname
+\char'7}\fi\fi\fi%
+}
+\def\XyM{X\kern-.30em\smash{%
+\raise.50ex\hbox to0.8em{\hss\select@@Upsionfont%
+\hss}}\kern-.30em{M}}
+\def\XyMTeX{\XyM\kern-.1em\TeX}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Switches for Three Modes}
+%
+% Switches for determining three modes
+% are added in the \XyMTeX{} system (Version 5.00).
+% \changes{v5.00}{2010/10/01}{bond coloring and the LaTeX Project Public License}
+%
+% \begin{macro}{\ifPSmode etc.}
+% \begin{macrocode}
+\newif\ifPSmode \PSmodefalse
+\newif\ifPDFmode \PDFmodefalse
+\newif\ifTeXLaTeXmode \TeXLaTeXmodetrue%default TeX/LaTeX mode.
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Temporary Counters and Dimentions}
+%
+% The following counter registers are used to draw wavy bonds
+% by Bezier technique.
+%
+% \begin{macro}{\@tempcntXa etc.}
+% \begin{macrocode}
+\newcount\@tempcntXa \newcount\@tempcntYa \newcount\@tempcntz
+\newcount\@tempcntXb \newcount\@tempcntYb \newcount\@tempcntzz
+\newcount\@tempcntXc \newcount\@tempcntYc \newcount\@tempcntzzz
+\newcount\@tempcntXd \newcount\@tempcntYd \newcount\@tempcntzzzz
+% \end{macrocode}
+% \end{macro}
+%
+% The following dimension registers can be used temporarily
+% in addition to |\@tempdima| and |\@tempdimb| of LaTeX
+% utility.
+%
+% \begin{macro}{\@dimtempa etc.}
+% \begin{macrocode}
+\newdimen\@dimtempa
+\newdimen\@tempdimd
+\newdimen\@tempdime
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Wavy Bonds}
+%
+% Wavy bonds that represent unspecified stereochemistry are supported by using
+% PostScript technique. To assure compatibility, the non-PostScript mode
+% is revised to support wavy bonds.
+% \changes{v4.03}{2005/07/20}{Wavy Bonds}
+%
+%
+% \begin{macro}{\waveunitA}
+% \begin{macrocode}
+\def\waveunitA(#1,#2)#3{%
+\@tempcntz=#1\relax
+\@tempcntzz=#2\relax
+%%%%%%%%%%%%%%%%%%%%%%%%%
+%middle point parameters%
+%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifnum\@tempcntz=3\relax%
+ \ifnum\@tempcntzz=5\relax%
+ \@tempcntXa=-16 \@tempcntYa=10\relax%
+ \@tempcntXd=16 \@tempcntYd=-10\relax
+ \else\ifnum\@tempcntzz=-5\relax%
+ \@tempcntXa=-16 \@tempcntYa=-10\relax
+ \@tempcntXd=16 \@tempcntYd=10\relax
+ \fi\fi
+\else\ifnum\@tempcntz=-3\relax%
+ \ifnum\@tempcntzz=5\relax%
+ \@tempcntXa=-16 \@tempcntYa=-10\relax%
+ \@tempcntXd=16 \@tempcntYd=10\relax
+ \else\ifnum\@tempcntzz=-5\relax%
+ \@tempcntXa=-16 \@tempcntYa=10\relax
+ \@tempcntXd=16 \@tempcntYd=-10\relax
+ \fi\fi
+\else\ifnum\@tempcntz=5\relax
+ \ifnum\@tempcntzz=3\relax
+ \@tempcntXa=-10 \@tempcntYa=16\relax
+ \@tempcntXd=10 \@tempcntYd=-16\relax
+ \else\ifnum\@tempcntzz=-3\relax
+ \@tempcntXa=-10 \@tempcntYa=-16\relax
+ \@tempcntXd=10 \@tempcntYd=16\relax
+ \fi\fi
+\else\ifnum\@tempcntz=-5\relax
+ \ifnum\@tempcntzz=3\relax
+ \@tempcntXa=10 \@tempcntYa=16\relax
+ \@tempcntXd=10 \@tempcntYd=-16\relax
+ \else\ifnum\@tempcntzz=-3\relax
+ \@tempcntXa=10 \@tempcntYa=-16\relax
+ \@tempcntXd=-10 \@tempcntYd=16\relax
+ \fi\fi
+\else\ifnum\@tempcntz=1\relax
+ \ifnum\@tempcntzz=0\relax
+ \@tempcntXa=0 \@tempcntYa=20\relax
+ \@tempcntXd=0 \@tempcntYd=-20\relax
+ \fi
+\else\ifnum\@tempcntz=-1\relax
+ \ifnum\@tempcntzz=0\relax
+ \@tempcntXa=0 \@tempcntYa=-20\relax
+ \@tempcntXd=0 \@tempcntYd=20\relax
+ \fi
+\else\ifnum\@tempcntz=0\relax
+ \ifnum\@tempcntzz=1\relax
+ \@tempcntXa=-20 \@tempcntYa=0\relax
+ \@tempcntXd=20 \@tempcntYd=0\relax
+ \fi
+\fi\fi\fi\fi\fi\fi\fi
+%%%%%%%%%%%%%%%%%%%%
+% start and ending %
+%%%%%%%%%%%%%%%%%%%%
+\ifnum\@tempcntzz=0\relax%(1,0) (-1,0)
+ \ifnum\@tempcntz>0\relax
+ \@tempcntXb=#3\relax
+ \else
+ \@tempcntXb=-#3\relax
+ \fi
+ \@tempcntYb=0
+ \ifnum\@tempcntz>0\relax
+ \@tempcntXa=#3\relax
+ \else
+ \@tempcntXa=-#3\relax
+ \fi
+ \divide\@tempcntXa by2\relax
+ \@tempcntXd=\@tempcntXa
+\else\ifnum\@tempcntz=0\relax%(0,1) (0,-1)
+ \@tempcntXb=0\relax
+ \ifnum\@tempcntzz>0\relax
+ \@tempcntYb=#3\relax
+ \@tempcntYa=#3\relax
+ \else
+ \@tempcntYb=-#3\relax
+ \@tempcntYa=-#3\relax
+ \fi
+ \divide\@tempcntYa by2\relax
+ \@tempcntYd=\@tempcntYa
+\else
+\ifnum\@tempcntz>0\relax
+\@tempcntXb=#3\relax
+\else
+\@tempcntXb=-#3\relax
+\fi
+\ifnum\@tempcntzz>0\relax
+\@tempcntYb=#3\relax
+\else
+\@tempcntYb=-#3\relax
+\fi
+\ifnum\@tempcntzz>0\relax
+\@tempcntzzzz=#2\relax
+\else
+\@tempcntzzzz=-#2\relax
+\fi
+\multiply\@tempcntYb by10\relax
+\multiply\@tempcntYb by\@tempcntzzzz\relax
+\ifnum\@tempcntz>0\relax
+\@tempcntzzzz=#1\relax
+\else
+\@tempcntzzzz=-#1\relax
+\fi
+\divide\@tempcntYb by\@tempcntzzzz\relax
+\divide\@tempcntYb by10\relax
+\@tempcntzzzz=\@tempcntXb
+\divide\@tempcntzzzz by2\relax
+\advance\@tempcntXa by\@tempcntzzzz
+\advance\@tempcntXd by\@tempcntzzzz
+\@tempcntzzzz=\@tempcntYb
+\divide\@tempcntzzzz by2\relax
+\advance\@tempcntYa by\@tempcntzzzz
+\advance\@tempcntYd by\@tempcntzzzz
+\fi\fi
+%%%%%%%%%%%%%%%%%
+% Bezier curves %
+%%%%%%%%%%%%%%%%%
+\@tempcntXc=\@tempcntXb
+\multiply\@tempcntXc by2\relax
+\@tempcntYc=\@tempcntYb
+\multiply\@tempcntYc by2\relax
+\begin{picture}(0,0)(0,0)%
+\multiput(0,0)(\@tempcntXc,\@tempcntYc){3}{%
+\qbezier(0,0)(\@tempcntXa,\@tempcntYa)(\@tempcntXb,\@tempcntYb)}%
+\multiput(\@tempcntXb,\@tempcntYb)(\@tempcntXc,\@tempcntYc){2}{%
+\qbezier(0,0)(\@tempcntXd,\@tempcntYd)(\@tempcntXb,\@tempcntYb)}%
+\end{picture}%
+}%end of \waveunitA
+% \end{macrocode}
+% \end{macro}
+%
+% A new switch for wave bonds for stereochemistry is
+% added: |\ifwavebond|.
+% \changes{v4.03}{2005/07/20}{New switch: \cs{ifwavebond}}
+%
+% \begin{macro}{\ifwavebond}
+% \begin{macro}{\WaveBonds}
+% \begin{macro}{\NormalBonds}
+% \begin{macrocode}
+\newif\ifwavebond \wavebondfalse
+\def\WaveBonds{\wavebondtrue}
+\def\NormalBonds{\wavebondfalse}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \changes{v4.03}{2005/07/20}{Renewed command: \cs{Put@@Line}}
+% \begin{macro}{\Put@@Line}
+% \begin{macrocode}
+\def\Put@@Line(#1,#2)(#3,#4)#5{\Put@Direct(#1,#2){%
+\ifwavebond \@tempcnta=#5\relax
+\divide\@tempcnta by5\relax
+\waveunitA(#3,#4){\@tempcnta}\else
+\line(#3,#4){#5}\fi}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Conventions for PostScript}
+%
+% The picture environment is switched to be acceptable
+% to another system such as PostScript.
+%
+% \changes{v4.00}{2002/5/30}{New commands: \cs{Put@@Line},
+% \cs{Put@@sCircle}, and \cs{Put@@oCircle}}
+% \begin{macro}{\Put@@Line}
+% \begin{macro}{\Put@@sCircle}
+% \begin{macro}{\Put@@oCircle}
+% \begin{macrocode}
+\global\let\@ldline=\line%store the oridinal line command of picture enviroment
+\global\let\@ldthicklines=\thicklines
+\global\let\@ldthinlines=\thinlines
+%%\def\Put@@Line(#1,#2)(#3,#4)#5{\Put@Direct(#1,#2){\line(#3,#4){#5}}}
+\def\Put@@sCircle(#1,#2)#3{\Put@Direct(#1,#2){\circle*{#3}}}
+\def\Put@@oCircle(#1,#2)#3{\Put@Direct(#1,#2){\circle{#3}}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% The initial setting is the original LaTeX picture environment.
+% To switch the size-reduction meachism and the pstricks mechanism,
+% we can use a switching command such as |\originalpicture|.
+% \changes{v3.00}{2002/4/30}{New environment: sfpicture}
+% \changes{v3.00}{2002/5/30}{New command: \cs{originalpicture}}
+%
+% \begin{macro}{\originalpicture}
+% \begin{macro}{\sfpicture}
+% \begin{macro}{\Put@Direct}
+% \begin{macrocode}
+\newif\ifxymtexpssw\xymtexpsswfalse
+\def\originalpicture{%
+\let\sfpicture=\picture
+\let\endsfpicture=\endpicture
+\let\Put@Direct=\put
+\let\Multiput@Direct=\multiput
+\let\line=\@ldline
+\let\dotorline=\d@t@rline
+\let\thicklines=\@ldthicklines
+\let\thinlines=\@ldthinlines
+\thinlines
+\let\Put@Line=\Put@@Line
+\let\Put@sCircle=\Put@@sCircle
+\let\Put@oCircle=\Put@@oCircle
+\xymtexpsswfalse
+\@ifundefined{@changeunitlength}{}{%
+\let\changeunitlength=\@changeunitlength}%
+\unitlength=0.1pt}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% To switch from XyMTeX to XyMTeX with pstricks, we use the following command:
+% \begin{macro}{\changexymtextops}
+% \begin{macrocode}
+\def\changexymtextops{\xymtexpsswtrue}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\SlopetoXY}
+% \changes{v5.00}{2010/10/01}{New command: \cs{SlopetoXY}}
+% This command is extracted from |\Put@@@Line}| of the \textsf{xymtx-ps} package
+% so as to be a common code for defining |\Put@@@Line}| (\textsf{xymtx-ps} package),
+% |\Color@@@Line| (\textsf{xymtx-ps} package), |\Color@@@@Line| (\textsf{xymtx-pdf} package),
+% and so on. This command changes a set of line specifiers (a starting point, a slope, and
+% a line length of the \LaTeX{} picture environment) into another set
+% (a starting point and a terminal point (|\@tempcntXa|,|\@tempcntYa|)).
+%
+% \begin{macrocode}
+\def\SlopetoXY(#1,#2)(#3,#4)#5{%
+%%x-coordinate
+\@tempcntXa=0\relax
+\ifnum#3>0\relax \@tempcntXa=#5\relax
+\else\ifnum#3<0\relax\@tempcntXa=-#5\relax\fi\fi
+\advance\@tempcntXa by#1\relax
+%%y-coordinate
+\@tempcntYa=#5\relax
+\ifnum#3=0\relax\else
+\multiply\@tempcntYa by#4\relax\multiply\@tempcntYa by10\relax
+\divide\@tempcntYa by#3\relax\divide\@tempcntYa by10\relax\fi
+\ifnum\@tempcntYa<0\relax
+\ifnum#4>0\relax\@tempcntYa=-\@tempcntYa\fi
+\else
+\ifnum\@tempcntYa>0\relax
+\ifnum#4<0\relax\@tempcntYa=-\@tempcntYa\fi\fi
+\fi
+\advance\@tempcntYa by#2\relax}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Macros for treating argumets}
+%
+% For separating each argument (BONDLIST, SUBSLIST or ATOMLIST) into
+% components (descriptors), we define several useful macros.
+%
+% \begin{macro}{\@forsemicol}
+% \begin{macro}{\@forl@@p}
+% \begin{macro}{\@iforl@@p}
+%
+% The macro |\@forsemicol| resembles the |\@for| macro that is
+% the \LaTeX{} original macro; however a semicolon is used as
+% a separating key in place of a comma.
+%
+% \changes{v1.01}{1996/07/06}{\cs{@forsemicol}: \cs{edef}
+% to \cs{expandafter}}
+% \changes{v1.01}{1996/07/06}{\cs{@iforl@@p} replaced by
+% a LaTeX2e-like definitiion}
+%
+% \begin{macrocode}
+% ****************************************************
+% * For separating an augument list to each argument *
+% ****************************************************
+%
+\def\@forsemicol#1:=#2\do#3{%
+% \edef\@fortmp{#2}%1996/07/06 by S. Fujita
+ \expandafter\def\expandafter\@fortmp\expandafter{#2}%
+ \ifx\@fortmp\@empty \else%
+ \expandafter\@forl@@p#2;\@nil;\@nil\@@#1{#3}\fi}
+\long\def\@forl@@p#1;#2;#3\@@#4#5{\def#4{#1}\ifx #4\@nnil \else%
+ #5\def#4{#2}\ifx #4\@nnil \else#5\@iforl@@p #3\@@#4{#5}\fi\fi}
+\long\def\@iforl@@p#1;#2\@@#3#4{\def#3{#1}\ifx #3\@nnil%
+ \expandafter\@fornoop \else
+ #4\relax\expandafter\@iforl@@p\fi#2\@@#3{#4}}
+%\def\@iforl@@p#1;#2\@@#3#4{\def#3{#1}\ifx #3\@nnil%
+% \let\@nextwhile=\@fornoop \else%
+% #4\relax\let\@nextwhile=\@iforl@@p\fi\@nextwhile#2\@@#3{#4}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The macro |\@m@mb@r| separates a character string into to portions
+% by using a double equality symbol (|==|) and a semicolon as delimiters.
+% The first potion consists of a locant number and a bond modifier (stored
+% in |\@membera|), which are further separated by the macro |\twoch@r|,
+% |\twoch@@r| or |\threech@r|.
+% The second potion shows a substituent (stored in |\@memberb|),
+% which is printed by means of an appropiate command.
+%
+% \begin{macro}{\@m@mb@r}
+% \begin{macro}{\twoch@r}
+% \begin{macro}{\twoch@@r}
+% \begin{macro}{\threech@r}
+% \begin{macrocode}
+%\def\@m@mb@r#1==#2;{\gdef\@membera{#1}\gdef\@memberb{#2}}
+\def\@m@mb@r#1==#2;{\def\@membera{#1}\def\@memberb{#2}}
+\def\twoch@r#1#2{\gdef\@tmpa{#1}\gdef\@tmpb{#2}}
+\def\twoch@@r#1#2{\gdef\@@tmpa{#1}\gdef\@@tmpb{#2}}
+%\def\threech@r#1#2#3{\gdef\@tmpa{#1}\gdef\@tmpb{#2}\gdef\@tmpc{#3}}%redefined
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The command |\threech@r| is redefined by using |\@get@first@char|
+% in order to give a warning of a two-digit number.
+% \changes{v4.00}{2002/05/30}{\cs{@get@first@char} has been added.}
+%
+% \begin{macro}{\@get@first@char}
+% \begin{macrocode}
+\newif\ifdrawsamesubst\drawsamesubstfalse
+\def\@get@first@char#1{\if\noexpand#1\relax\else
+\@cnttempa=`#1\relax
+\ifnum\@cnttempa>47\relax
+\ifnum\@cnttempa<58\relax
+\XyMTeXWarning{The second number (\@tmpb) of a two-digit number (\@tmpa\@tmpb)
+is missed. ^^J\space This should be written in braces,
+^^J\space e.g. `{\@tmpa\@tmpb}D==substituent' and `{{\@tmpa\@tmpb}}==substituent'.}
+\fi\fi\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v4.00}{2002/05/30}{\cs{threech@r} has been redefined.}
+%
+% \begin{macro}{\threech@r}
+% \begin{macrocode}
+\def\threech@r#1#2#3{\gdef\@tmpa{#1}\gdef\@tmpb{#2}\gdef\@tmpc{#3}%
+\begingroup
+\ifdrawsamesubst\ifx\@tmpa\empty\relax\else\ifx\@tmpb\empty\relax\else
+\setbox0=\hbox{\@get@first@char#2\relax}\fi\fi\fi
+\endgroup}
+% \end{macrocode}
+% \end{macro}
+%
+% The following two commands are added to treat spiro fusion.
+% \changes{v2.00}{1998/11/15}{Added for spiro fusion}
+% To avoid the bugs in drawing multi-nested fused compounds, |\gdef| is
+% changed to |\def| in the definitions of |\twoCH@@R| and |\twoCH@R|.
+% \changes{v4.00}{2002/05/30}{Bug fix for \cs{twoCH@@R} and \cs{twoCH@R}}
+%
+% \begin{macro}{\twoCH@R}
+% \begin{macro}{\twoCH@@R}
+% \begin{macrocode}
+%\def\twoCH@@R#1#2//{\gdef\@@tmpa{#1}\gdef\@@tmpb{#2}}
+\def\twoCH@@R#1#2//{\def\@@tmpa{#1}\def\@@tmpb{#2}}
+%\def\twoCH@R#1#2//{\gdef\@tmpa{#1}\gdef\@tmpb{#2}}
+\def\twoCH@R#1#2//{\def\@tmpa{#1}\def\@tmpb{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+
+% \begin{macro}{\@forendparenthesis}
+%
+% The macro |\@forendparenthesis| resembles the |\@for| macro that is
+% the \LaTeX{} original macro; however a close parenthesis is used as
+% a separating key in place of a comma.
+%
+% \changes{v5.00}{2010/10/01}{for drawing round arrows}
+%
+% \begin{macrocode}
+% ************************************
+% * For coordinates for round arrows *
+% ************************************
+%
+\def\@forendparenthesis#1:=#2\do#3{%
+ \expandafter\def\expandafter\@fortmp\expandafter{#2}%
+ \ifx\@fortmp\@empty \else%
+ \expandafter\@forL@@P#2)\@nil)\@nil\@@#1{#3}\fi}
+\long\def\@forL@@P#1)#2)#3\@@#4#5{\def#4{#1}\ifx #4\@nnil \else%
+ #5\def#4{#2}\ifx #4\@nnil \else#5\@iforL@@P #3\@@#4{#5}\fi\fi}
+\long\def\@iforL@@P#1)#2\@@#3#4{\def#3{#1}\ifx #3\@nnil%
+ \expandafter\@fornoop \else
+ #4\relax\expandafter\@iforL@@P\fi#2\@@#3{#4}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Conventions}
+%
+% Switches for characterizing substitution sites as
+% left, right or left-right boxes become effective in
+% the commands |\putlatom|, |\putratom| and |\putlratom|.
+% They are used for warning wrong or unnecessary usages of
+% |\lmoiety| or |\rmoiety|.
+%
+% \changes{v1.02}{1998/10/20}{Switches \cs{@leftput} added}
+%
+% \begin{macro}{\if@leftput}
+% \begin{macro}{\if@rightput}
+% \begin{macro}{\if@leftrightput}
+% \begin{macro}{\resetlrput}
+% \begin{macrocode}
+\newif\if@rightput \@rightputfalse
+\newif\if@leftput \@leftputfalse
+\newif\if@leftrightput \@leftrightputfalse
+\def\resetlrput{\@rightputfalse\@leftputfalse
+\@leftrightputfalse}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% We can use the macro |\rmoiety| for drawing a right-hand substituent
+% and the macro |\lmoiety| for drawing a left-hand substituent.
+%
+% \changes{v1.02}{1998/10/20}{The definitions of \cs{rmoiety} and
+% \cs{lmoiety} are changed. Warning function is added.}
+%
+% When you use a |\rmoiety| command in a left box produced by
+% a |\putlatom| command, the warning ``Wrong |\rmoiety|'' is reported.
+% When you use a |\lmoiety| command in a right box produced by
+% a |\putratom| command, the warning ``Wrong |\lmoiety|'' is reported.
+% If the ``draft'' option is effective, these cases are designated by
+% solid squares at the corresponding positions on pages.
+%
+% \begin{macro}{\rmoiety}
+% \begin{macro}{\lmoiety}
+% \begin{macrocode}
+% **************
+% * Convention *
+% **************
+% %\def\rmoiety#1{#1 \hss}
+% %\def\lmoiety#1{\hss #1}
+\def\rmoiety#1{\if@leftput
+\XyMTeXWarning{Wrong \string\rmoiety\space used in a left box}%
+\hbox to0pt{%
+\hbox to0pt{\hss\vrule width\overfullrule height\overfullrule}#1\hss}%
+\else\if@rightput\XyMTeXWarning{Unnecessary \string\rmoiety\space
+used in a right box}\hbox to0pt{#1\hss}%
+\else\if@leftrightput\hbox to0pt{#1\hss}%
+\fi\fi\fi\resetlrput}
+\def\lmoiety#1{\if@rightput
+\XyMTeXWarning{Wrong \string\lmoiety\space used in a right box}%
+\hbox to0pt{\hss#1\kern-.72em%
+\hbox to0pt{\vrule width\overfullrule height\overfullrule\hss}}\else
+\if@leftput\XyMTeXWarning{Unnecessary \string\lmoiety\space
+used in a left box}\hbox to0pt{\hss#1}%
+\else\if@leftrightput\hbox to0pt{\hss#1\kern-.72em}%
+\else\hbox to0pt{\hss#1\kern-.72em}\fi\fi\fi\resetlrput}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% Warnings from \XyMTeX{} are concerned with commands
+% |\rmoiety| and |\lmoiety|.
+% \changes{v5.00}{2010/10/01}{\cs{if@dbondcolor} added for bondcolor package}
+%
+% \begin{macro}{\XyMTeXWarning}
+% \begin{macrocode}
+\newif\if@dbondcolor \@dbondcolorfalse
+\def\XyMTeXWarning#1{%
+\begingroup
+\if@dbondcolor\else
+ \let\protect\string
+ \immediate\write\@unused{^^IXyMTeX Warning: #1\space
+ on input line \the\inputlineno^^I}%
+\fi
+\endgroup%
+\global\@dbondcolorfalse%2010/10/01 for bond coloring
+}
+% \end{macrocode}
+% \end{macro}
+%
+% Warnings concerned with ring fusion are based on
+% the command |\FuseWarning| of \XyMTeX{}.
+% \changes{v2.00}{1998/11/15}{Warning function is added.}
+% \changes{v5.00}{2010/10/01}{\cs{futileFuseWarning} added for bondcolor package}
+%
+% \begin{macro}{\@cnttempa}
+% \begin{macro}{\@cnttempb}
+% \begin{macro}{\FuseWarning}
+% \begin{macrocode}
+\newcount\@cnttempa
+\newcount\@cnttempb
+\def\FuseW@rning#1#2#3#4#5#6#7{%
+\@tempcnta=#1 \@tempcntb=#2
+\@cnttempa=#3 \advance\@cnttempa-#5
+\@cnttempb=#4 \advance\@cnttempb-#6
+\ifnum\@tempcnta=\@cnttempa
+ \ifnum\@tempcntb=\@cnttempb\else
+ \XyMTeXWarning{Mismatched fusion at bond `#7'}%
+ \fi
+\else
+ \XyMTeXWarning{Mismatched fusion at bond `#7'}%
+\fi}
+\def\futileFuseWarning#1#2#3#4#5#6#7{}
+\let\FuseWarning=\FuseW@rning
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The font of a substituent and its size are designated explicitly.
+% \changes{v4.00}{2002/5/30}{%
+% The comands \cs{substfont} and \cs{substfontsize} are added to
+% \cs{putlatom}, etc.}
+%
+% \begin{macro}{\substfont}
+% \begin{macro}{\substfontsize}
+% \begin{macrocode}
+\let\substfont=\normalfont
+\let\substfontsize=\normalsize
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The original \LaTeX{} command |\put| is changed into macros suitable to
+% more specific uses as follows.
+%
+% \changes{v1.02}{1998/10/20}{The definition is changed. Warning function
+% for \cs{rmoiety} is added.}
+%
+% \begin{macro}{\putlatom}
+% \begin{macrocode}
+\def\putlatom#1#2#3{\begingroup\resetlrput
+\Put@Direct(#1,#2){\@leftputtrue\substfont\substfontsize
+\hbox to0pt{\hss #3}\@leftputfalse}\endgroup}
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v1.02}{1998/10/20}{The definition is changed. Warning function
+% for \cs{lmoiety} is added.}
+%
+% \begin{macro}{\putratom}
+% \begin{macrocode}
+%\def\putratom#1#2#3{\Put@Direct(#1,#2){\hbox to0pt{#3 \hss}}}
+\def\putratom#1#2#3{\begingroup\resetlrput
+\Put@Direct(#1,#2){\@rightputtrue\substfont\substfontsize
+\hbox to0pt{#3 \hss}\@rightputfalse}\endgroup}
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v4.00}{2002/5/30}{The mechanism of centering the
+% first letter of a substituent by \cs{@getcharwidthput} is added to
+% \cs{putlratom}.}
+%
+% \changes{v4.01a}{2004/11/11}{The mechanism of \cs{@getcharwidthput}
+% is altered (one argument to two arguments). Treatments of \$ and commands are added.}
+%
+% \begin{macro}{\@getcharwidthput}
+% \begin{macrocode}
+\newif\ifspecial@ylcs \special@ylcsfalse
+\def\@getcharwidthput#1#2\owari{%
+\global\special@ylcsfalse
+\if\noexpand#1\relax \global\special@ylcstrue \else%\if the category #1 is 'command'
+\ifcat#1$\relax \global\special@ylcstrue\else%if the category of #1 is 'special letter'
+\ifcat#1a\relax%if the category of #1 is 'letter'
+\setbox0=\hbox{#1}%
+\global\@dimtempa=0.7em
+\global\advance\@dimtempa by-\wd0\relax
+\global\divide\@dimtempa by2\relax
+\else\global\@dimtempa=0em\relax\fi\fi\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v1.02}{1998/10/20}{The definition is changed. Warning function
+% for \cs{lmoiety} and \cs{rmoiety|} is added.}
+% \changes{v4.01a}{2004/11/11}{The mechanism of \cs{@getcharwidthput}
+% is altered (one argument to two arguments).}
+%
+% \begin{macro}{\putlratom}
+% \begin{macrocode}
+\def\putlratom#1#2#3{\begingroup\resetlrput
+\Put@Direct(#1,#2){\@leftrightputtrue\substfont\substfontsize
+\setbox1=\hbox{%
+\expandafter\@getcharwidthput#3\relax\owari}%the centering mechanism
+\@tempdima=\@dimtempa%global to local
+\ifspecial@ylcs\hbox to.72em{#3\hss}\else
+\hbox to0.72em{\kern\@tempdima #3\hss}\kern-\@tempdima
+\fi}%
+\@leftrightputfalse\endgroup}
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v1.01b}{1998/10/06}{\cs{putlratom}: delete \sc{setbox0}}
+% \changes{v1.02}{1998/10/20}{The old definition is
+% totally replaced by the new definition}
+%
+% \begin{verbatim}
+% % old definitions
+% % \begin{macrocode}
+% % changed to avoid Overfull warnings 1993/11/11/S.Fujita
+% % \newif\if@moiety \@moietyfalse
+% % \def\putlratom#1#2#3{%
+% % \def\lmoiety##1{\global\@moietytrue}%
+% % \setbox0=\hbox{#3}%deleted by S. Fujita
+% % \if@moiety\def\lmoiety##1{\hss ##1}%
+% % \Put@Direct(#1,#2){\hbox to.72em{#3}}\global\@moietyfalse
+% % \else\Put@Direct(#1,#2){\hbox to.6em{#3\hss}}\fi}%
+% % \def\putlratom#1#2#3{\Put@Direct(#1,#2){\hbox to.6em{#3}}}
+% % \end{macrocode}
+% \end{verbatim}
+%
+% \begin{macro}{\Putlratom}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \begin{macrocode}
+\def\Putlratom#1#2#3{\Put@Direct(#1,#2){\substfont\substfontsize
+\hbox to.8em{#3}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v2.01}{2000/6/20}{New command: \cs{dotorline}}
+% \begin{macro}{\dotorline}
+% \begin{macrocode}
+\def\d@t@rline(#1,#2)(#3,#4)#5/(#6,#7)(#8,#9){%
+ \@ifundefined{dottedline}{%
+ \XyMTeXWarning{A dottedline is replaced by a solid line.}%
+ \Put@Line(#1,#2)(#3,#4){#5}%
+ }{{\thicklines%
+ \ifdim\unitlength>0.08pt
+ \dottedline{20}(#6,#7)(#8,#9)%
+ \else
+ \dottedline{30}(#6,#7)(#8,#9)\fi}}}
+\let\dotorline=\d@t@rline
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Parameters}
+%
+% The original point for drawing a structural formula is shifted to an
+% appropriate position, which is designated by the following parmeters
+% (counters) for coordinates.
+%
+%
+% \begin{macro}{\noshift}
+% \begin{macro}{\shifti}
+% \begin{macro}{\shiftii}
+% \begin{macro}{\shiftiii}
+% \begin{macrocode}
+% *******************************
+% * Parameters for Coordinates *
+% *******************************
+\newcount\noshift \noshift=0\relax%
+\newcount\shifti \shifti=240\relax%
+\newcount\shiftii \shiftii=400\relax%
+\newcount\shiftiii \shiftiii=800\relax%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The unit length for \XyMTeX{} is selected to be 0.1pt. This value
+% should not be maintained as possible as you can. A smaller value
+% may disapper a sloped line of short length.
+% \begin{macrocode}
+\unitlength.1pt%
+% \end{macrocode}
+%
+% Parameters for ring fusion are used in fusering.sty.
+% \changes{v2.00}{1999/2/16}{This has been added to process the old XyMTeX
+% manual for Version 1.01}
+%
+% \begin{macro}{\fuseAx}
+% \begin{macro}{\fuseBx}
+% \begin{macro}{\fuseAy}
+% \begin{macro}{\fuseBy}
+% \begin{macrocode}
+\def\fuseAx{0}
+\def\fuseBx{0}
+\def\fuseAy{0}
+\def\fuseBy{0}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Various switchs}
+%
+% These macros are used for clipping spaces at substitution positions.
+% Note that |\if@clip| is used in place of |\if@dclip|.
+%
+% \changes{v3.00}{2002/4/30}{New Command: \cs{originoutput}}
+%
+% \begin{macro}{\if@clip}
+% \begin{macro}{\if@aclip}
+% \begin{macro}{\if@bclip}
+% \begin{macro}{\if@cclip}
+% \begin{macro}{\if@eclip}
+% \begin{macro}{\if@fclip}
+% \begin{macro}{\iforigpt}
+% \begin{macro}{\@tmpaa}
+% \begin{macro}{\oriptoutput}
+% \begin{macro}{\OriptOutput}
+% \begin{macro}{\OriptOutputA}
+% \begin{macrocode}
+% ***************************************
+% * various flags (switches) *
+% * treatment of substitution positions *
+% ***************************************
+%
+% for 6- or lower-membered cycles
+%
+\newif\if@clip \@clipfalse% % switch for clipping at 4
+\newif\if@aclip \@aclipfalse% % switch for clipping at 1
+\newif\if@bclip \@bclipfalse% % switch for clipping at 2
+\newif\if@cclip \@cclipfalse% % switch for clipping at 3
+\newif\if@eclip \@eclipfalse% % switch for clipping at 5
+\newif\if@fclip \@fclipfalse% % switch for clipping at 6
+\newif\iforigpt \origptfalse% % switch for showing the original point
+\newcount\@tmpaa%to use as a local counter
+\def\@rigpt@utput#1{\iforigpt
+ \Put@sCircle(-\shiftii,-\shifti){50}%
+ \Put@oCircle(-\noshift,-\noshift){50}%
+ \typeout{command `#1' origin: %
+ (\the\noshift,\the\noshift) ---> (\the\shiftii,\the\shifti)}\fi}
+\def\OrigptOutput(#1,#2)#3{\iforigpt
+ \Put@sCircle(-#1,-#2){50}\Put@oCircle(0,0){50}%
+ \typeout{command `#3' origin: (0,0) ---> (#1,#2)}\fi}
+\def\OrigptOutputA(#1,#2)(#3,#4)#5{\iforigpt
+ \Put@sCircle(-#1,-#2){50}\Put@oCircle(-#3,-#4){50}%
+ \typeout{command `#5' origin: (#3,#4) ---> (#1,#2)}\fi}
+\def\origptoutput{\@ifnextchar({\@origptoutput}{\@origptoutput(,)}}
+\def\@origptoutput(#1){%
+\@ifnextchar({\@@origptoutput(#1)}{\@@origptoutput(#1)(,)}}
+\def\@@origptoutput(#1,#2)(#3,#4)#5{%
+\def\TEMParga{#1}\def\TEMPargb{#3}%
+\ifx\TEMParga\empty\relax
+\@rigpt@utput{#5}\else\ifx\TEMPargb\empty\relax
+\OrigptOutput(#1,#2){#5}\else
+\OrigptOutputA(#1,#2)(#3,#4){#5}\fi\fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\if@gclip}
+% \begin{macro}{\if@hclip}
+% \begin{macro}{\if@iclip}
+% \begin{macro}{\if@jclip}
+% \begin{macro}{\if@xclip}
+% \begin{macrocode}
+%
+% for further-membered cycles
+%
+\newif\if@gclip \@gclipfalse%
+\newif\if@hclip \@hclipfalse%
+\newif\if@iclip \@iclipfalse%
+\newif\if@jclip \@jclipfalse%
+\newif\if@xclip \@xclipfalse%added for temp. 2013/03/24
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% The yl-function provides some difficulties in carrying
+% out an |\if@aclip| switch etc. if |\@acliptrue| etc. are
+% declared globally. In Version 2.01, |\@acliptrue| etc. are
+% declared locally by the grouping mechanism of \TeX. In order to
+% communicate information on |\@acliptrue| etc. outside the grouping,
+% the command |\clipinfo| (globally declared) stores tentatively
+% information on |@acliptrue| etc. in the form of a,b,c,$\ldots$.
+% Out side the grouping, the command |\developclipinfo| is
+% declared to reset |\@acliptrue| etc.
+%
+% \changes{v2.01}{2001/06/20}{Newly defined to communicate clipping
+% information.}
+% \changes{v5.01}{2013/3/24}{\cs{if@xclip} added}
+% \begin{macro}{\clipinfo}
+% \begin{macro}{\storeclipinfo}
+% \begin{macrocode}
+\def\clipinfo{}
+\def\storeclipinfo{%
+\if@aclip \xdef\clipinfo{\clipinfo a,}\fi
+\if@bclip \xdef\clipinfo{\clipinfo b,}\fi
+\if@cclip \xdef\clipinfo{\clipinfo c,}\fi
+\if@clip \xdef\clipinfo{\clipinfo d,}\fi
+\if@eclip \xdef\clipinfo{\clipinfo e,}\fi
+\if@fclip \xdef\clipinfo{\clipinfo f,}\fi
+\if@gclip \xdef\clipinfo{\clipinfo g,}\fi
+\if@hclip \xdef\clipinfo{\clipinfo h,}\fi
+\if@iclip \xdef\clipinfo{\clipinfo i,}\fi
+\if@jclip \xdef\clipinfo{\clipinfo j,}\fi
+\if@xclip \xdef\clipinfo{\clipinfo x,}\fi
+}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% locally declared
+%
+% \begin{macro}{\developclipinfo}
+% \begin{macrocode}
+\def\developclipinfo{%
+\expandafter\@tfor\expandafter\MEMBER\expandafter:%
+\expandafter=\clipinfo\do{%
+\if\MEMBER a\relax \@acliptrue\fi
+\if\MEMBER b\relax \@bcliptrue\fi
+\if\MEMBER c\relax \@ccliptrue\fi
+\if\MEMBER d\relax \@cliptrue\fi
+\if\MEMBER e\relax \@ecliptrue\fi
+\if\MEMBER f\relax \@fcliptrue\fi
+\if\MEMBER g\relax \@gcliptrue\fi
+\if\MEMBER h\relax \@hcliptrue\fi
+\if\MEMBER i\relax \@icliptrue\fi
+\if\MEMBER j\relax \@jcliptrue\fi}%
+\gdef\clipinfo{}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Various commands and switchs for using substituents}
+%
+% For drawing a structure as a substituent, the argument (yl) can
+% be used. The following commands and counters are used for shifting
+% the substituent.
+% \changes{v1.02}{1998/10/31}{Commands for setting substituents}
+% \changes{v2.00}{1998/12/25}{Added: \cs{reset@yl@xydiff}}
+%
+% \begin{macro}{\@yl}
+% \begin{macro}{\yl@xdiff}
+% \begin{macro}{\yl@ydiff}
+% \begin{macro}{\yl@shiftii}
+% \begin{macro}{\yl@shifti}
+% \begin{macro}{\@ylii}
+% \begin{macro}{\@yli}
+% \begin{macro}{\@@ylii}
+% \begin{macro}{\@@yli}
+% \begin{macrocode}
+\def\@yl{(yl)}
+\newcount\yl@xdiff
+\newcount\yl@ydiff
+\newcount\yl@shiftii
+\newcount\yl@shifti
+\def\@ylii{0}\def\@yli{0}
+\def\@@ylii{}\def\@@yli{}
+\def\reset@@yl{\gdef\@@ylii{}\gdef\@@yli{}}
+\def\reset@yl@xydiff{\yl@xdiff=0 \yl@ydiff=0\relax}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The following switches are used for shifting the substituent.
+% The locant flags such as |\@ylatrue| have been stoped to use.
+% \changes{v1.02}{1998/10/11}{Delete \cs{@ylatrue} etc.}
+% \changes{v1.02}{1998/10/31}{Commands for setting substituents}
+%
+% Old definition:
+% \begin{macrocode}
+% %%%%% \newif\if@yla \@ylafalse
+% %%%%% \newif\if@ylb \@ylbfalse
+% %%%%% \newif\if@ylc \@ylcfalse
+% %%%%% \newif\if@yld \@yldfalse
+% %%%%% \newif\if@yle \@ylefalse
+% %%%%% \newif\if@ylf \@ylffalse
+% \end{macrocode}
+%
+% \begin{macro}{\if@ylsw}
+% \begin{macro}{\if@@ylsw}
+% \begin{macrocode}
+\newif\if@ylsw \@ylswfalse
+\newif\if@@ylsw \@@ylswfalse
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{verbatim}
+% Old definition:
+% % \begin{macrocode}
+% %%%%% \def\@reset@ylsw{\@ylafalse\@ylbfalse\@ylcfalse
+% %%%%% \@yldfalse\@ylefalse\@ylffalse\@ylswfalse}
+% % \end{macrocode}
+% \end{verbatim}
+%
+% \begin{macro}{\@reset@ylsw}
+% \begin{macrocode}
+\def\@reset@ylsw{\@ylswfalse\@@ylswfalse}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{ShiftPicEnv and ShiftPicEnvB}
+%
+% For supporting the yl-function of the XyM notation system,
+% the mechanism for sifting the original point of each picture
+% enviroment is encapsulated so as to create the ShiftPicEnv and
+% the ShiftPicEnvB environments.
+%
+% \changes{v3.01}{2002/4/30}{Commands for shift of picture environment}
+% \changes{v4.00}{2002/5/30}{New environment: ShiftPicEnv}
+%
+% The original point and the size of a picture environment is shifted
+% due to whether a yl-function is declared or not. The first set of
+% coordinates is usually set as (0,0), which means that the subsituent
+% produced by a yl-funtions has no dimensions.
+%
+% Old definition for fused rings:
+% \begin{verbatim}
+% \if@sixfuseposv
+% \yl@shiftii=-\fuseAx
+% \yl@shifti=-\fuseAy
+% \advance\yl@shiftii\yl@xdiff
+% \advance\yl@shifti\yl@ydiff
+% \begin{sfpicture}(0,0)(-\yl@shiftii,-\yl@shifti)
+% \reset@yl@xydiff%1999/1/6 by S. Fujita
+% \else
+% \begin{sfpicture}(800,880)(-\shiftii,-\shifti)%
+% \origptoutput{sixfusev}%
+% \fi
+% \end{verbatim}
+%
+% For monocyclic compounds:
+% \begin{verbatim}
+% \ShiftPicEnv[1]%%[0] not for a fusion unit, [1] for a fusion usit
+% (0,0)(xshift,yshift)/%%picture after the action of yl function
+% %%no dimension
+% (x_size,y_size)(xshift,yshift)%%orginal picture
+% {name}%%name of control sequence
+% (xx_size,yy_size)(xxshift,yyshift)%%option to typeout abnormal shifts
+% \end{verbatim}
+%
+% \begin{macro}{\ShiftPicEnv}
+% \begin{macrocode}
+\newif\ifshiftpicsw\shiftpicswfalse
+\newif\if@sixfuseposv\@sixfuseposvfalse
+\def\ShiftPicEnv{%
+\@ifnextchar[{\ShiftPicEnv@}{\ShiftPicEnv@[0]}}
+\def\ShiftPicEnv@[#1](#2)(#3)/(#4)(#5)#6{%
+\@ifnextchar({\@ShiftPicEnv[#1](#2)(#3)/(#4)(#5){#6}}%
+{\@ShiftPicEnv[#1](#2)(#3)/(#4)(#5){#6}(,)}}
+\def\@ShiftPicEnv[#1](#2)(#3)/(#4)(#5)#6(#7){%
+\@ifnextchar({\@@ShiftPicEnv[#1](#2)(#3)/(#4)(#5){#6}(#7)}%
+{\@@ShiftPicEnv[#1](#2)(#3)/(#4)(#5){#6}(#7)(,)}}
+\def\@@ShiftPicEnv[#1](#2)(#3)/(#4)(#5)#6(#7)(#8){%
+\shiftpicswfalse%initialize
+\ifcase#1\relax%%%non-fused ring
+\if@ylsw \shiftpicswtrue
+\yl@shiftii=\@ylii
+\yl@shifti=\@yli
+\fi
+\or%%%fused ring
+\if@sixfuseposv \shiftpicswtrue
+ \yl@shiftii=-\fuseAx
+ \yl@shifti=-\fuseAy
+\fi
+\fi
+\ifshiftpicsw
+\advance\yl@shiftii\yl@xdiff
+\advance\yl@shifti\yl@ydiff
+\begin{sfpicture}(#2)(#3)%
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+\begin{sfpicture}(#4)(#5)%
+ \origptoutput(#7)(#8){#6}%
+\fi}
+\def\endShiftPicEnv{\end{sfpicture}}
+% \end{macrocode}
+% \end{macro}
+%
+% Old definition for bicyclic rings:
+% \begin{verbatim}
+% \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{sfpicture}(0,0)(-\yl@shiftii,-\yl@shifti)
+% \reset@yl@xydiff%1999/1/6 by S. Fujita
+% \else
+% \begin{sfpicture}(1200,880)(-\shiftii,-\shifti)%
+% \origptoutput{nonaheterov}%
+% \fi
+% \end{verbatim}
+%
+% For bicyclic compounds or others:
+% \begin{verbatim}
+% \ShiftPicEnvB(0,0)(xshift,yshift)/%%picture after the action of yl function
+% (x_size,y_size)(xshift,yshift)%%orginal picture
+% {name}%%name of control sequence
+% (xx_size,yy_size)(xxshift,yyshift)%%option to typeout abnormal shifts
+% \end{verbatim}
+%
+% \begin{macro}{\ShiftPicEnvB}
+% \begin{macrocode}
+\def\ShiftPicEnvB(#1)(#2)/(#3)(#4)#5{%
+\@ifnextchar({\@ShiftPicEnvB(#1)(#2)/(#3)(#4){#5}}%
+{\@ShiftPicEnvB(#1)(#2)/(#3)(#4){#5}(,)}}
+\def\@ShiftPicEnvB(#1)(#2)/(#3)(#4)#5(#6){%
+\@ifnextchar({\@@ShiftPicEnvB(#1)(#2)/(#3)(#4){#5}(#6)}%
+{\@@ShiftPicEnvB(#1)(#2)/(#3)(#4){#5}(#6)(,)}}
+\def\@@ShiftPicEnvB(#1)(#2)/(#3)(#4)#5(#6)(#7){%
+\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{sfpicture}(#1)(#2)%
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+ \begin{sfpicture}(#3)(#4)%
+ \origptoutput(#6)(#7){#5}%
+\fi}
+\def\endShiftPicEnvB{\end{sfpicture}}
+% \end{macrocode}
+% \end{macro}
+%
+% The further fusion of a three- or four-membered ring at a center bond
+% of a six-six or six-five ring is permitted, while that of a five-
+% or more-membered ring is not permitted. The macro |\@smallringsw|
+% is used for such switching (fusering.sty).
+%
+% \begin{macro}{\if@smallringsw}
+% \begin{macrocode}
+\newif\if@smallringsw \@smallringswfalse
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Initialization}
+%
+% The |\iniflag| command initializes all of the clipping flags.
+% The |\iniatom| command initializes all of the strings of temporary use
+% such as |\aaa| and |\bbb|, which are associated with respective
+% atom positions.
+% The |\resetbdsw| command resets all of the strings of temporary use
+% such as |\@aaa| and |\@bbb|, which are associated with respective
+% bond positions.
+%
+% \begin{macro}{\iniflag}
+% \begin{macro}{\iniatom}
+% \begin{macro}{\resetbdsw}
+% \changes{v1.02}{1998/10/25}{Delete \sc{global}}
+% \changes{v4.02a}{2004/12/27}{Change \sc{ggg} to \sc{ggg}}
+%
+% \begin{macrocode}
+% %\def\iniflag{%
+% %\global\@aclipfalse\global\@bclipfalse%
+% %\global\@cclipfalse\global\@clipfalse\global\@eclipfalse%
+% %\global\@fclipfalse\global\@gclipfalse\global\@hclipfalse%
+% %\global\@iclipfalse\global\@jclipfalse%
+% %\global\@clipfusefalse}%
+% %\def\iniatom{%
+% %\gdef\aaa{}\gdef\bbb{}\gdef\ccc{}\gdef\ddd{}%
+% %\gdef\eee{}\gdef\fff{}%
+% %\gdef\gggA{}\gdef\hhh{}\gdef\iii{}\gdef\jjj{}%
+% %\gdef\@aaa{}\gdef\@bbb{}\gdef\@ccc{}\gdef\@ddd{}%
+% %\gdef\@eee{}\gdef\@fff{}%
+% %}%
+% %\def\resetbdsw{\gdef\@aaa{a}\gdef\@bbb{b}\gdef\@ccc{c}%
+% %\gdef\@ddd{d}\gdef\@eee{e}\gdef\@fff{f}}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\iniflag{%
+\@aclipfalse\@bclipfalse\@cclipfalse\@clipfalse\@eclipfalse%
+\@fclipfalse\@gclipfalse\@hclipfalse%
+\@iclipfalse\@jclipfalse\@clipfusefalse%
+\global\@smallringswfalse%
+}%
+\def\iniatom{%
+\def\aaa{}\def\bbb{}\def\ccc{}\gdef\ddd{}%
+\def\eee{}\def\fff{}%
+\def\gggA{}\def\hhh{}\def\iii{}\gdef\jjj{}%
+\def\@aaa{}\def\@bbb{}\def\@ccc{}\def\@ddd{}%
+\def\@eee{}\def\@fff{}%
+\def\@ggg{}\def\@hhh{}\def\@iii{}%
+\def\@jjj{}\def\@kkk{}%
+}%
+\def\resetbdsw{\def\@aaa{a}\def\@bbb{b}\def\@ccc{c}%
+\def\@ddd{d}\def\@eee{e}\def\@fff{f}%
+\def\@ggg{g}\def\@hhh{h}\def\@iii{i}%
+\def\@jjj{j}\def\@kkk{k}%
+}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% At the beginning of \XyMTeX\ processing, we initialize atom
+% information by the command |\iniatom|.
+%
+% \begin{macrocode}
+\iniatom
+% \end{macrocode}
+%
+%
+% \section{Macros for Vertical Formulas}
+% \subsection{Placing substituents for vertical formulas}
+%
+% Such a drawing command as |\setsixringv| uses several inner macros
+% for placing substituents with bonds. The first set of inner macros
+% are shown as follows.
+%
+% The command |\ylposition| is to obtain the shift values
+% |\@ylii| and |\@yli| which are used for shifting the standard
+% point of a substituent.
+% The locant flags such as |\@ylatrue| have been stoped to use.
+% \changes{v1.02}{1998/10/11}{Delete \cs{@ylatrue} etc.}
+% \changes{v1.02}{1998/10/31}{Commands for setting substituents}
+% \changes{v5.01}{2013/06/19}{bug fix: initial setting of \cs{reset@@yl}}
+%
+% \begin{macro}{\ylposition}
+% \begin{macrocode}
+\def\ylposition#1#2#3#4#5{%
+\@@ylswfalse%%%\@reset@ylsw
+\reset@@yl%%2013/06/19bug fix
+\@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
+\ifnum#5<0\relax%
+\@tmpaa=-\@tmpa\relax \advance\@tmpaa by#2\relax%
+\else\@tmpaa=\@tmpa\relax \advance\@tmpaa by#2\relax\fi
+\ifnum\@tmpaa>#3\relax%
+\ifnum\@tmpaa<#4\relax%
+\ifcase\@tmpaa%0 omit
+% \end{macrocode}
+%
+% The flags |\@lyatrue| etc are not used in a revised edition.
+%
+% \begin{macrocode}
+ \or\ifx\aaa\empty
+ \gdef\@ylii{0}\gdef\@yli{-406}\global\@ylswtrue%\@ylatrue% subst. on 1
+ \else
+ \gdef\@ylii{0}\gdef\@yli{-442}\global\@ylswtrue%\@ylatrue% subst. on 1
+ \fi
+ \or\ifx\bbb\empty
+ \gdef\@ylii{-171}\gdef\@yli{-303}\global\@ylswtrue%\@ylbtrue% subst. on 2
+ \else
+ \gdef\@ylii{-213}\gdef\@yli{-327}\global\@ylswtrue%\@ylbtrue% subst. on 2
+ \fi
+ \or\ifx\ccc\empty
+ \gdef\@ylii{-171}\gdef\@yli{-103}\global\@ylswtrue%\@ylctrue% subst. on 3
+ \else
+ \gdef\@ylii{-213}\gdef\@yli{-79}\global\@ylswtrue%\@ylctrue% subst. on 3
+ \fi
+ \or\ifx\ddd\empty
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%\@yldtrue% subst. on 4
+ \else
+ \gdef\@ylii{0}\gdef\@yli{36}\global\@ylswtrue%\@yldtrue% subst. on 4
+ \fi
+ \or\ifx\eee\empty
+ \gdef\@ylii{171}\gdef\@yli{-103}\global\@ylswtrue%\@yletrue% subst. on 5
+ \else
+ \gdef\@ylii{213}\gdef\@yli{-79}\global\@ylswtrue%\@yletrue% subst. on 5
+ \fi
+ \or\ifx\fff\empty
+ \gdef\@ylii{171}\gdef\@yli{-303}\global\@ylswtrue%\@ylftrue% subst. on 6
+ \else
+ \gdef\@ylii{213}\gdef\@yli{-327}\global\@ylswtrue%\@ylftrue% subst. on 6
+ \fi%
+\fi%end of ifcase
+\fi\fi\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% The |\@substa| command is used for placing a substituent (|\@memberb|) at
+% the 1-position (top) of a vertical six-membered ring. The bond linking
+% between the substituent and the 1-position is drawn in the light of
+% the corresponding bond modifier (|\@tmpc| = Sa, Sb, SA, SB etc.).
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/12/15}{New bond modifiers: FA, FB, GA, GB, Su, and Sd}
+% \changes{v4.03}{2005/07/20}{wave bonds for stereochemistry: U, FU, GU, SU, SV}
+% \begin{macro}{\@substa}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 1 %
+% %%%%%%%%%%%%%%%
+\def\@substa{%
+\if@aclip% %clipping
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \putlratom{-31}{563}{\@memberb}% % left or right type
+ \Put@Line(0,436)(0,1){110}% % single bond at 1
+ \else\if\@tmpc B%(B) beta
+ \yl@xdiff=-36\relax
+ \yl@ydiff=-27\relax
+ \putlatom{-42}{563}{\@memberb}% % left type
+ {%
+ \thicklines%
+ \Put@Line(-18,436)(-3,5){60}% % single bond at 1
+ }%
+ \else\if\@tmpc A%(A) alpha
+ \yl@xdiff=37\relax
+ \yl@ydiff=-27\relax
+ \putratom{41}{563}{\@memberb}% % right type
+ \dotorline(18,436)(3,5){60}/(18,436)(72,526)%
+ \else\if\@tmpc u%(u) up --- (B) beta
+ \yl@xdiff=36\relax
+ \yl@ydiff=-27\relax
+ \putratom{41}{563}{\@memberb}% % right type
+ {%
+ \thicklines%
+ \Put@Line(18,436)(3,5){60}% % single bond at 1
+ }%
+ \else\if\@tmpc d%(d) down --- (A) alpha
+ \yl@xdiff=-37\relax
+ \yl@ydiff=-27\relax
+ \putlatom{-42}{563}{\@memberb}% % left type
+ \dotorline(-18,436)(-3,5){60}/(-18,436)(-72,526)%
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=-36\relax
+ \yl@ydiff=-27\relax
+ \putlatom{-42}{563}{\@memberb}% % left type
+ \Put@Line(-18,436)(-3,5){60}% % single bond at 1
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=37\relax
+ \yl@ydiff=-27\relax
+ \putratom{41}{563}{\@memberb}% % right type
+ \Put@Line(18,436)(3,5){60}% % single bond at 1
+ \else\if\@tmpc V%(V) beta undefined
+ \yl@xdiff=-36\relax
+ \yl@ydiff=-27\relax
+ \putlatom{-42}{563}{\@memberb}% % left type
+ {%
+ \WaveBonds%
+ \Put@Line(-18,436)(-3,5){60}% % single bond at 1
+ }%
+ \else\if\@tmpc U%(U) alpha undefined
+ \yl@xdiff=37\relax
+ \yl@ydiff=-27\relax
+ \putratom{41}{563}{\@memberb}% % right type
+ {%
+ \WaveBonds%
+ \Put@Line(18,436)(3,5){60}% % single bond at 1
+ }%
+ \fi\fi\fi\fi\fi%
+ \fi\fi\fi\fi
+ \else\if\@tmpb D%double bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \putlratom{-31}{563}{\@memberb}% % left or right type
+ \Put@Line(-12,436)(0,1){110}% % double bond at 1
+ \Put@Line(12,436)(0,1){110}% % double bond at 1
+ \else\if\@tmpb B%beta single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \putlratom{-31}{563}{\@memberb}% % left or right type
+ {%
+ \thicklines%
+ \Put@Line(0,436)(0,1){110}% % single bond at 1
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \putlratom{-31}{563}{\@memberb}% % left or right type
+ \dotorline(0,436)(0,1){110}/(0,436)(0,546)%
+ \else\if\@tmpb U%undefined single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \putlratom{-31}{563}{\@memberb}% % left or right type
+ {%
+ \WaveBonds%
+ \Put@Line(0,436)(0,1){110}% % single wave bond at 1
+ }%
+ \else\if\@tmpb F%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusetrue
+ \Put@Direct(0,406){\setatombondd}%
+ }%
+ \else\if\@tmpb G%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusetrue
+ \Put@Direct(0,406){\setatombondf}%
+ }%
+ \else%
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \putlratom{-31}{563}{\@memberb}% % left or right type
+ \Put@Line(0,436)(0,1){110}% % single bond at 1
+ \fi\fi\fi\fi%
+ \fi\fi\fi%
+\else% % no clipping
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \putlratom{-31}{563}{\@memberb}% % left or right type
+ \Put@Line(0,406)(0,1){140}% % single bond at 1
+ \else\if\@tmpc B%(B) beta
+ \yl@xdiff=-30\relax
+ \yl@ydiff=-37\relax
+ \putlatom{-42}{563}{\@memberb}% % left type
+ {%
+ \thicklines%
+ \Put@Line(0,406)(-3,5){72}% % single bond at 1
+ }%
+ \else\if\@tmpc A%(A) alpha
+ \yl@xdiff=31\relax
+ \yl@ydiff=-37\relax
+ \putratom{41}{563}{\@memberb}% % right type
+ \dotorline(0,406)(3,5){72}/(0,406)(72,526)%
+ \else\if\@tmpc u%(u) upper --- (B) beta
+ \yl@xdiff=30\relax
+ \yl@ydiff=-37\relax
+ \putratom{41}{563}{\@memberb}% % right type
+ {%
+ \thicklines%
+ \Put@Line(0,406)(3,5){72}% % single bond at 1
+ }%
+ \else\if\@tmpc d%(d) down --- (A) alpha
+ \yl@xdiff=-31\relax
+ \yl@ydiff=-37\relax
+ \putlatom{-42}{563}{\@memberb}% % left type
+ \dotorline(0,406)(-3,5){72}/(0,406)(-72,526)%
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=-30\relax
+ \yl@ydiff=-37\relax
+ \putlatom{-42}{563}{\@memberb}% % left type
+ \Put@Line(0,406)(-3,5){72}% % single bond at 1
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=31\relax
+ \yl@ydiff=-37\relax
+ \putratom{41}{563}{\@memberb}% % right type
+ \Put@Line(0,406)(3,5){72}% % single bond at 1
+ \else\if\@tmpc V%(V) beta undefined
+ \yl@xdiff=-30\relax
+ \yl@ydiff=-37\relax
+ \putlatom{-42}{563}{\@memberb}% % left type
+ {%
+ \WaveBonds%
+ \Put@Line(0,406)(-3,5){72}% % single bond at 1
+ }%
+ \else\if\@tmpc U%(U) alpha undefined
+ \yl@xdiff=31\relax
+ \yl@ydiff=-37\relax
+ \putratom{41}{563}{\@memberb}% % right type
+ {%
+ \WaveBonds%
+ \Put@Line(0,406)(3,5){72}% % single bond at 1
+ }%
+ \fi\fi\fi\fi\fi%
+ \fi\fi\fi\fi%
+ \else\if\@tmpb D%double bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \putlratom{-31}{563}{\@memberb}% % left or right type
+ \Put@Line(-12,406)(0,1){140}% % double bond at 1
+ \Put@Line(12,406)(0,1){140}% % double bond at 1
+ \else\if\@tmpb B%beta single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \putlratom{-31}{563}{\@memberb}% % left or right type
+ {%
+ \thicklines%
+ \Put@Line(0,406)(0,1){140}% % single bond at 1
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \putlratom{-31}{563}{\@memberb}% % left or right type
+ \dotorline(0,406)(0,1){140}/(0,406)(0,546)%
+ \else\if\@tmpb U%undefined single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \putlratom{-31}{563}{\@memberb}% % left or right type
+ {%
+ \WaveBonds%
+ \Put@Line(0,406)(0,1){140}% % single wave bond at 1
+ }%
+ \else\if\@tmpb F%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusefalse
+ \Put@Direct(0,406){\setatombondd}%
+ }%
+ \else\if\@tmpb G%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusefalse
+ \Put@Direct(0,406){\setatombondf}%
+ }%
+ \else%
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \putlratom{-31}{563}{\@memberb}% % left or right type
+ \Put@Line(0,406)(0,1){140}% % single bond at 1
+ \fi\fi\fi\fi%
+ \fi\fi\fi
+ \fi}% end of \@substa
+% \end{macrocode}
+% \end{macro}
+%
+% The |\@substb| command is used for placing a substituent (|\@memberb|) at
+% the 2-position (upper-right) of a vertical six-membered ring.
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/12/15}{New bond modifiers: FA, FB, GA, GB, Su, and Sd}
+% \changes{v4.03}{2005/07/20}{wave bonds for stereochemistry: U, FU, GU, SU, SV}
+% \begin{macro}{\@substb}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 2 %
+% %%%%%%%%%%%%%%%
+\def\@substb{%
+ \if@bclip %clipping
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=-10\relax
+ \yl@ydiff=24\relax
+ \putratom{311}{363}{\@memberb}% % right type
+ \Put@Line(201,327)(5,3){100}% % single bond at 2
+ \else\if\@tmpc B%(B) beta
+ \yl@xdiff=-7\relax
+ \yl@ydiff=38\relax
+ \putratom{268}{420}{\@memberb}% % right type
+ {%
+ \thicklines%
+ \Put@Line(201,358)(3,5){60}% % single bond at 2
+ }%
+ \else\if\@tmpc A%(A) alpha
+ \yl@xdiff=-17\relax
+ \yl@ydiff=23\relax
+ \putratom{318}{280}{\@memberb}% % right type
+ \dotorline(201,303)(1,0){100}/(201,303)(301,303)%
+ \else\if\@tmpc u%(u) up --- (B) beta
+ \yl@xdiff=-17\relax
+ \yl@ydiff=23\relax
+ \putratom{318}{280}{\@memberb}% % right type
+ {%
+ \thicklines%
+ \Put@Line(201,303)(1,0){100}% % single bond at 2
+ }%
+ \else\if\@tmpc d%(d) down --- (A) alpha
+ \yl@xdiff=-7\relax
+ \yl@ydiff=38\relax
+ \putratom{268}{420}{\@memberb}% % right type
+ \dotorline(201,358)(3,5){60}/(201,358)(261,458)%
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=-7\relax
+ \yl@ydiff=38\relax
+ \putratom{268}{420}{\@memberb}% % right type
+ \Put@Line(201,358)(3,5){60}% % single bond at 2
+ \else\if\@tmpc a%(a) alpha%
+ \yl@xdiff=-17\relax
+ \yl@ydiff=23\relax
+ \putratom{318}{280}{\@memberb}% % right type
+ \Put@Line(201,303)(1,0){100}% % single bond at 2
+ \else\if\@tmpc V%(V) beta undefined
+ \yl@xdiff=-7\relax
+ \yl@ydiff=38\relax
+ \putratom{268}{420}{\@memberb}% % right type
+ {%
+ \WaveBonds%
+ \Put@Line(201,358)(3,5){60}% % single bond at 2
+ }%
+ \else\if\@tmpc U%(U) alphau undefined
+ \yl@xdiff=-17\relax
+ \yl@ydiff=23\relax
+ \putratom{318}{280}{\@memberb}% % right type
+ {%
+ \WaveBonds%
+ \Put@Line(201,303)(1,0){100}% % single bond at 2
+ }%
+ \fi\fi\fi\fi\fi%
+ \fi\fi\fi\fi%
+ \else\if\@tmpb D%double bond
+ \yl@xdiff=-10\relax
+ \yl@ydiff=18\relax
+ \putratom{311}{363}{\@memberb}% % right type
+ \Put@Line(194,331)(5,3){100}% % double bond at 2
+ \Put@Line(200,305)(5,3){100}% % double bond at 2
+ \else\if\@tmpb B%beta single bond
+ \yl@xdiff=-10\relax
+ \yl@ydiff=24\relax
+ \putratom{311}{363}{\@memberb}% % right type
+ {%
+ \thicklines%
+ \Put@Line(201,327)(5,3){100}% % single bond at 2
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=-10\relax
+ \yl@ydiff=24\relax
+ \putratom{311}{363}{\@memberb}% % right type
+ \dotorline(201,327)(5,3){100}/(201,327)(301,387)%
+ \else\if\@tmpb U%undefined single bond
+ \yl@xdiff=-10\relax
+ \yl@ydiff=24\relax
+ \putratom{311}{363}{\@memberb}% % right type
+ {%
+ \WaveBonds%
+ \Put@Line(210,327)(5,3){100}% % single wave bond at 2
+ }%
+ \else\if\@tmpb F%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusetrue
+ \Put@Direct(171,303){\setatombonda}%
+ }%
+ \else\if\@tmpb G%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusetrue
+ \Put@Direct(171,303){\setatombonde}%
+ }%
+ \else%
+ \yl@xdiff=-10\relax
+ \yl@ydiff=24\relax
+ \putratom{311}{363}{\@memberb}% % right type
+ \Put@Line(201,327)(5,3){100}% % single bond at 2
+ \fi\fi\fi\fi%
+ \fi\fi\fi%
+ \else% %no clipping
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=-10\relax
+ \yl@ydiff=12\relax
+ \putratom{301}{363}{\@memberb}% % right type
+ \Put@Line(171,303)(5,3){120}% % single bond at 2
+ \else\if\@tmpc B%(B) beta
+ \yl@xdiff=-15\relax
+ \yl@ydiff=13\relax
+ \putratom{258}{410}{\@memberb}% % right type
+ {%
+ \thicklines%
+ \Put@Line(171,303)(3,5){72}% % single bond at 2
+ }%
+ \else\if\@tmpc A%(A) alpha
+ \yl@xdiff=-7\relax
+ \yl@ydiff=23\relax
+ \putratom{318}{280}{\@memberb}% % right type
+ \dotorline(171,303)(1,0){140}/(171,303)(311,303)%
+ \else\if\@tmpc u%(u) up --- (B) beta
+ \yl@xdiff=-7\relax
+ \yl@ydiff=23\relax
+ \putratom{318}{280}{\@memberb}% % right type
+ {%
+ \thicklines%
+ \Put@Line(171,303)(1,0){140}% % single bond at 2
+ }%
+ \else\if\@tmpc d%(d) down --- (A) alpha
+ \yl@xdiff=-15\relax
+ \yl@ydiff=13\relax
+ \putratom{258}{410}{\@memberb}% % right type
+ \dotorline(171,303)(3,5){72}/(171,303)(243,423)%
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=-15\relax
+ \yl@ydiff=13\relax
+ \putratom{258}{410}{\@memberb}% % right type
+ \Put@Line(171,303)(3,5){72}% % single bond at 2
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=-7\relax
+ \yl@ydiff=23\relax
+ \putratom{318}{280}{\@memberb}% % right type
+ \Put@Line(171,303)(1,0){140}% % single bond at 2
+ \else\if\@tmpc V%(V) beta undefined
+ \yl@xdiff=-15\relax
+ \yl@ydiff=13\relax
+ \putratom{258}{410}{\@memberb}% % right type
+ {%
+ \WaveBonds%
+ \Put@Line(171,303)(3,5){72}% % single bond at 2
+ }%
+ \else\if\@tmpc U%(U) alpha undefined
+ \yl@xdiff=-7\relax
+ \yl@ydiff=23\relax
+ \putratom{318}{280}{\@memberb}% % right type
+ {%
+ \WaveBonds%
+ \Put@Line(171,303)(1,0){140}% % single bond at 2
+ }%
+ \fi\fi\fi\fi\fi%
+ \fi\fi\fi\fi%
+ \else\if\@tmpb D%double bond
+ \yl@xdiff=-10\relax
+ \yl@ydiff=6\relax
+ \putratom{301}{363}{\@memberb}% % right type
+ \Put@Line(168,310)(5,3){120}% % double bond at 2
+ \Put@Line(174,284)(5,3){120}% % double bond at 2
+ \else\if\@tmpb B%beta single bond
+ \yl@xdiff=-10\relax
+ \yl@ydiff=12\relax
+ \putratom{301}{363}{\@memberb}% % right type
+ {%
+ \thicklines%
+ \Put@Line(171,303)(5,3){120}% % single bond at 2
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=-10\relax
+ \yl@ydiff=12\relax
+ \putratom{301}{363}{\@memberb}% % right type
+ \dotorline(171,303)(5,3){120}/(171,303)(291,375)%
+ \else\if\@tmpb U%undefined single bond
+ \yl@xdiff=-10\relax
+ \yl@ydiff=12\relax
+ \putratom{301}{363}{\@memberb}% % right type
+ {%
+ \WaveBonds%
+ \Put@Line(171,303)(5,3){120}% % single wave bond at 2
+ }%
+ \else\if\@tmpb F%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusefalse
+ \Put@Direct(171,303){\setatombonda}%
+ }%
+ \else\if\@tmpb G%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusefalse
+ \Put@Direct(171,303){\setatombonde}%
+ }%
+ \else%
+ \yl@xdiff=-10\relax
+ \yl@ydiff=12\relax
+ \putratom{301}{363}{\@memberb}% % right type
+ \Put@Line(171,303)(5,3){120}% % single bond at 2
+ \fi\fi\fi\fi%
+ \fi\fi\fi
+ \fi}% end of \@substb
+% \end{macrocode}
+% \end{macro}
+%
+% The |\@substc| command is used for placing a substituent (|\@memberb|) at
+% the 3-position (lower-right) of a vertical six-membered ring.
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff|} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/12/15}{New bond modifiers: FA, FB, GA, GB, Su, and Sd}
+% \changes{v4.03}{2005/07/20}{wave bonds for stereochemistry: U, FU, GU, SU, SV}
+% \begin{macro}{\@substc}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 3 %
+% %%%%%%%%%%%%%%%
+\def\@substc{%
+ \if@cclip %clipping
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=-10\relax
+ \yl@ydiff=46\relax
+ \putratom{311}{-27}{\@memberb}% % right type
+ \Put@Line(201,79)(5,-3){110}% % single bond at 3
+ \else\if\@tmpc B%(B) beta
+ \yl@xdiff=-7\relax
+ \yl@ydiff=28\relax
+ \putratom{268}{-80}{\@memberb}% % right type
+ {%
+ \thicklines%
+ \Put@Line(201,48)(3,-5){60}% % single bond at 3
+ }%
+ \else\if\@tmpc A%(A) alpha
+ \yl@xdiff=-17\relax
+ \yl@ydiff=29\relax
+ \putratom{318}{74}{\@memberb}% % right type
+ \dotorline(201,103)(1,0){100}/(201,103)(301,103)%
+ \else\if\@tmpc u%(u) up --- (B) beta
+ \yl@xdiff=-17\relax
+ \yl@ydiff=29\relax
+ \putratom{318}{74}{\@memberb}% % right type
+ {%
+ \thicklines%
+ \Put@Line(201,103)(1,0){100}% % single bond at 3
+ }%
+ \else\if\@tmpc d%(d) down --- (A) alpha
+ \yl@xdiff=-7\relax
+ \yl@ydiff=28\relax
+ \putratom{268}{-80}{\@memberb}% % right type
+ \dotorline(201,48)(3,-5){60}/(201,48)(261,-52)%
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=-7\relax
+ \yl@ydiff=28\relax
+ \putratom{268}{-80}{\@memberb}% % right type
+ \Put@Line(201,48)(3,-5){60}% % single bond at 3
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=-17\relax
+ \yl@ydiff=29\relax
+ \putratom{318}{74}{\@memberb}% % right type
+ \Put@Line(201,103)(1,0){100}% % single bond at 3
+ \else\if\@tmpc V%(V) beta undefined
+ \yl@xdiff=-7\relax
+ \yl@ydiff=28\relax
+ \putratom{268}{-80}{\@memberb}% % right type
+ {%
+ \WaveBonds%
+ \Put@Line(201,48)(3,-5){60}% % single bond at 3
+ }%
+ \else\if\@tmpc U%(U) alpha undefined
+ \yl@xdiff=-17\relax
+ \yl@ydiff=29\relax
+ \putratom{318}{74}{\@memberb}% % right type
+ {%
+ \WaveBonds%
+ \Put@Line(201,103)(1,0){100}% % single bond at 3
+ }%
+ \fi\fi\fi\fi\fi%
+ \fi\fi\fi\fi
+ \else\if\@tmpb D%double bond
+ \yl@xdiff=-10\relax
+ \yl@ydiff=52\relax
+ \putratom{311}{-27}{\@memberb}% % right type
+ \Put@Line(194,76)(5,-3){100}% % double bond at 3
+ \Put@Line(200,101)(5,-3){100}% % double bond at 3
+ \else\if\@tmpb B%beta single bond
+ \yl@xdiff=-10\relax
+ \yl@ydiff=46\relax
+ \putratom{311}{-27}{\@memberb}% % right type
+ {%
+ \thicklines%
+ \Put@Line(201,79)(5,-3){100}% % single bond at 3
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=-10\relax
+ \yl@ydiff=46\relax
+ \putratom{311}{-27}{\@memberb}% % right type
+ \dotorline(201,79)(5,-3){100}/(201,79)(301,19)%
+ \else\if\@tmpb U%undefined single bond
+ \yl@xdiff=-10\relax
+ \yl@ydiff=46\relax
+ \putratom{311}{-27}{\@memberb}% % right type
+ {%
+ \WaveBonds%
+ \Put@Line(210,79)(5,-3){100}% % single wave bond at 3
+ }%
+ \else\if\@tmpb F%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusetrue
+ \Put@Direct(171,103){\setatombondf}%
+ }%
+ \else\if\@tmpb G%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusetrue
+ \Put@Direct(171,103){\setatombondc}%
+ }%
+ \else%
+ \yl@xdiff=-10\relax
+ \yl@ydiff=46\relax
+ \putratom{311}{-27}{\@memberb}% % right type
+ \Put@Line(201,79)(5,-3){100}% % single bond at 3
+ \fi\fi\fi\fi%
+ \fi\fi\fi%
+ \else%no clipping
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=-10\relax
+ \yl@ydiff=58\relax
+ \putratom{301}{-27}{\@memberb}% % right type
+ \Put@Line(171,103)(5,-3){120}% % single bond at 3
+ \else\if\@tmpc B%(B) beta
+ \yl@xdiff=-10\relax
+ \yl@ydiff=48\relax
+ \putratom{258}{-70}{\@memberb}% % right type
+ {%
+ \thicklines%
+ \Put@Line(171,103)(3,-5){72}% % single bond at 3
+ }%
+ \else\if\@tmpc A%(A) alpha
+ \yl@xdiff=-10\relax
+ \yl@ydiff=30\relax
+ \putratom{318}{74}{\@memberb}% % right type
+ \dotorline(171,103)(1,0){140}/(171,103)(311,103)%
+ \else\if\@tmpc u%(u) up --- (B) beta
+ \yl@xdiff=-10\relax
+ \yl@ydiff=30\relax
+ \putratom{318}{74}{\@memberb}% % right type
+ {%
+ \thicklines%
+ \Put@Line(171,103)(1,0){140}% % single bond at 3
+ }%
+ \else\if\@tmpc d%(d) down --- (A) alpha
+ \yl@xdiff=-10\relax
+ \yl@ydiff=48\relax
+ \putratom{258}{-70}{\@memberb}% % right type
+ \dotorline(171,103)(3,-5){72}/(171,103)(243,-17)%
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=-10\relax
+ \yl@ydiff=48\relax
+ \putratom{258}{-70}{\@memberb}% % right type
+ \Put@Line(171,103)(3,-5){72}% % single bond at 3
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=-10\relax
+ \yl@ydiff=30\relax
+ \putratom{318}{74}{\@memberb}% % right type
+ \Put@Line(171,103)(1,0){140}% % single bond at 3
+ \else\if\@tmpc V%(V) beta undefined
+ \yl@xdiff=-10\relax
+ \yl@ydiff=48\relax
+ \putratom{258}{-70}{\@memberb}% % right type
+ {%
+ \WaveBonds%
+ \Put@Line(171,103)(3,-5){72}% % single bond at 3
+ }%
+ \else\if\@tmpc U%(U) alpha undefined
+ \yl@xdiff=-10\relax
+ \yl@ydiff=30\relax
+ \putratom{318}{74}{\@memberb}% % right type
+ {%
+ \WaveBonds%
+ \Put@Line(171,103)(1,0){140}% % single bond at 3
+ }%
+ \fi\fi\fi\fi\fi%
+ \fi\fi\fi\fi
+ \else\if\@tmpb D%double bond
+ \yl@xdiff=-10\relax
+ \yl@ydiff=65\relax
+ \putratom{301}{-27}{\@memberb}% % right type
+ \Put@Line(168,96)(5,-3){120}% % double bond at 3
+ \Put@Line(174,121)(5,-3){120}% % double bond at 3
+ \else\if\@tmpb B%beta single bond
+ \yl@xdiff=-10\relax
+ \yl@ydiff=58\relax
+ \putratom{301}{-27}{\@memberb}% % right type
+ {%
+ \thicklines%
+ \Put@Line(171,103)(5,-3){120}% % single bond at 3
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=-10\relax
+ \yl@ydiff=58\relax
+ \putratom{301}{-27}{\@memberb}% % right type
+ \dotorline(171,103)(5,-3){120}/(171,103)(291,31)%
+ \else\if\@tmpb U%undefined single bond
+ \yl@xdiff=-10\relax
+ \yl@ydiff=58\relax
+ \putratom{301}{-27}{\@memberb}% % right type
+ {%
+ \WaveBonds%
+ \Put@Line(171,103)(5,-3){120}% % single wave bond at 3
+ }%
+ \else\if\@tmpb F%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusefalse
+ \Put@Direct(171,103){\setatombondf}%
+ }%
+ \else\if\@tmpb G%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusefalse
+ \Put@Direct(171,103){\setatombondc}%
+ }%
+ \else%
+ \yl@xdiff=-10\relax
+ \yl@ydiff=58\relax
+ \putratom{301}{-27}{\@memberb}% % right type
+ \Put@Line(171,103)(5,-3){120}% % single bond at 3
+ \fi\fi\fi\fi%
+ \fi\fi\fi
+ \fi
+}% end of \@substc
+% \end{macrocode}
+% \end{macro}
+%
+% The |\@substd| command is used for placing a substituent (|\@memberb|) at
+% the 4-position (bottom) of a vertical six-membered ring.
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/12/15}{New bond modifiers: FA, FB, GA, GB, Su, and Sd}
+% \changes{v4.03}{2005/07/20}{wave bonds for stereochemistry: U, FU, GU, SU, SV}
+% \begin{macro}{\@substd}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 4 %
+% %%%%%%%%%%%%%%%
+\def\@substd{%
+\if@clip %clipping
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \putlratom{-31}{-230}{\@memberb}% % left or right type
+ \Put@Line(0,-30)(0,-1){110}% % single bond at 4
+ \else\if\@tmpc B%(B) beta
+ \yl@xdiff=-36\relax
+ \yl@ydiff=100\relax
+ \putlatom{-42}{-230}{\@memberb}% % left type
+ {%
+ \thicklines%
+ \Put@Line(-18,-30)(-3,-5){60}% % single bond at 4
+ }%
+ \else\if\@tmpc A%(A) alpha
+ \yl@xdiff=37\relax
+ \yl@ydiff=100\relax
+ \putratom{41}{-230}{\@memberb}% % right type
+ \dotorline(18,-30)(3,-5){60}/(18,-30)(72,-120)%
+ \else\if\@tmpc u%(u) up --- (B) beta
+ \yl@xdiff=37\relax
+ \yl@ydiff=100\relax
+ \putratom{41}{-230}{\@memberb}% % right type
+ {%
+ \thicklines%
+ \Put@Line(18,-30)(3,-5){60}% % single bond at 4
+ }%
+ \else\if\@tmpc d%(d) down --- (A) alpha
+ \yl@xdiff=-36\relax
+ \yl@ydiff=100\relax
+ \putlatom{-42}{-230}{\@memberb}% % left type
+ \dotorline(-18,-30)(-3,-5){60}/(-18,-30)(-78,-130)%
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=-36\relax
+ \yl@ydiff=100\relax
+ \putlatom{-42}{-230}{\@memberb}% % left type
+ \Put@Line(-18,-30)(-3,-5){60}% % single bond at 4
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=37\relax
+ \yl@ydiff=100\relax
+ \putratom{41}{-230}{\@memberb}% % right type
+ \Put@Line(18,-30)(3,-5){60}% % single bond at 4
+ \else\if\@tmpc V%(V) beta undefined
+ \yl@xdiff=-36\relax
+ \yl@ydiff=100\relax
+ \putlatom{-42}{-230}{\@memberb}% % left type
+ {%
+ \WaveBonds%
+ \Put@Line(-18,-30)(-3,-5){60}% % single bond at 4
+ }%
+ \else\if\@tmpc U%(U) alpha undefined
+ \yl@xdiff=37\relax
+ \yl@ydiff=100\relax
+ \putratom{41}{-230}{\@memberb}% % right type
+ {%
+ \WaveBonds%
+ \Put@Line(18,-30)(3,-5){60}% % single bond at 4
+ }%
+ \fi\fi\fi\fi\fi%
+ \fi\fi\fi\fi
+ \else\if\@tmpb D%double bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \putlratom{-31}{-230}{\@memberb}% % left or right type
+ \Put@Line(-12,-30)(0,-1){110}% % double bond at 4
+ \Put@Line(12,-30)(0,-1){110}% % double bond at 4
+ \else\if\@tmpb B%beta single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \putlratom{-31}{-230}{\@memberb}% % left or right type
+ {%
+ \thicklines%
+ \Put@Line(0,-30)(0,-1){110}% % single bond at 4
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \putlratom{-31}{-230}{\@memberb}% % left or right type
+ \dotorline(0,-30)(0,-1){110}/(0,-30)(0,-140)%
+ \else\if\@tmpb U%undefined single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \putlratom{-31}{-230}{\@memberb}% % right type
+ {%
+ \WaveBonds%
+ \Put@Line(0,-30)(0,-1){110}% % single wave bond at 4
+ }%
+ \else\if\@tmpb F%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusetrue
+ \Put@Direct(0,0){\setatombonde}%
+ }%
+ \else\if\@tmpb G%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusetrue
+ \Put@Direct(0,0){\setatombondg}%
+ }%
+ \else%
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \putlratom{-31}{-230}{\@memberb}% % left or right type
+ \Put@Line(0,-30)(0,-1){110}% % single bond at 4
+ \fi\fi\fi\fi%
+ \fi\fi\fi%
+ \else%no clipping
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \putlratom{-31}{-230}{\@memberb}% % left or right type
+ \Put@Line(0,0)(0,-1){140}% % single bond at 4
+ \else\if\@tmpc B%(B) beta
+ \yl@xdiff=-30\relax
+ \yl@ydiff=110\relax
+ \putlatom{-42}{-230}{\@memberb}% % left type
+ {%
+ \thicklines%
+ \Put@Line(0,0)(-3,-5){72}% % single bond at 4
+ }%
+ \else\if\@tmpc A%(A) alpha
+ \yl@xdiff=31\relax
+ \yl@ydiff=110\relax
+ \putratom{41}{-230}{\@memberb}% % right type
+ \dotorline(0,0)(3,-5){72}/(0,0)(72,-120)%
+ \else\if\@tmpc u%(u) up --- (B) beta
+ \yl@xdiff=31\relax
+ \yl@ydiff=110\relax
+ \putratom{41}{-230}{\@memberb}% % right type
+ {%
+ \thicklines%
+ \Put@Line(0,0)(3,-5){72}% % single bond at 4
+ }%
+ \else\if\@tmpc d%(d) down --- (A) alpha
+ \yl@xdiff=-30\relax
+ \yl@ydiff=110\relax
+ \putlatom{-42}{-230}{\@memberb}% % left type
+ \dotorline(0,0)(-3,-5){72}/(0,0)(-72,-120)%
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=-30\relax
+ \yl@ydiff=110\relax
+ \putlatom{-42}{-230}{\@memberb}% % left type
+ \Put@Line(0,0)(-3,-5){72}% % single bond at 4
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=31\relax
+ \yl@ydiff=110\relax
+ \putratom{41}{-230}{\@memberb}% % right type
+ \Put@Line(0,0)(3,-5){72}% % single bond at 4
+ \else\if\@tmpc V%(V) beta undefined
+ \yl@xdiff=-30\relax
+ \yl@ydiff=110\relax
+ \putlatom{-42}{-230}{\@memberb}% % left type
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(-3,-5){72}% % single bond at 4
+ }%
+ \else\if\@tmpc U%(U) alpha undefined
+ \yl@xdiff=31\relax
+ \yl@ydiff=110\relax
+ \putratom{41}{-230}{\@memberb}% % right type
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(3,-5){72}% % single bond at 4
+ }%
+ \fi\fi\fi\fi\fi%
+ \fi\fi\fi\fi%
+ \else\if\@tmpb D%double bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \putlratom{-31}{-230}{\@memberb}% % left or right type
+ \Put@Line(-12,0)(0,-1){140}% % double bond at 4
+ \Put@Line(12,0)(0,-1){140}% % double bond at 4
+ \else\if\@tmpb B%beta single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \putlratom{-31}{-230}{\@memberb}% % left or right type
+ {%
+ \thicklines%
+ \Put@Line(0,0)(0,-1){140}% % single bond at 4
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \putlratom{-31}{-230}{\@memberb}% % left or right type
+ \dotorline(0,0)(0,-1){140}/(0,0)(0,-140)%
+ \else\if\@tmpb U%undefined single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \putlratom{-31}{-230}{\@memberb}% % right type
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(0,-1){140}% % single wave bond at 4
+ }%
+ \else\if\@tmpb F%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusefalse
+ \Put@Direct(0,0){\setatombonde}%
+ }%
+ \else\if\@tmpb G%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusefalse
+ \Put@Direct(0,0){\setatombondg}%
+ }%
+ \else%
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \putlratom{-31}{-230}{\@memberb}% % left or right type
+ \Put@Line(0,0)(0,-1){140}% % single bond at 4
+ \fi\fi\fi\fi%
+ \fi\fi\fi%
+ \fi}%end of \@substd
+% \end{macrocode}
+% \end{macro}
+%
+% The |\@subste| command is used for placing a substituent (|\@memberb|) at
+% the 5-position (lower-left) of a vertical six-membered ring.
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/12/15}{New bond modifiers: FA, FB, GA, GB, Su, and Sd}
+% \changes{v4.03}{2005/07/20}{wave bonds for stereochemistry: U, FU, GU, SU, SV}
+% \begin{macro}{\@subste}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 5 %
+% %%%%%%%%%%%%%%%
+\def\@subste{%
+ \if@eclip%clipping
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=10\relax
+ \yl@ydiff=46\relax
+ \putlatom{-311}{-27}{\@memberb}% % left type
+ \Put@Line(-201,79)(-5,-3){110}% % single bond at 5
+ \else\if\@tmpc B%(B) beta
+ \yl@xdiff=7\relax
+ \yl@ydiff=38\relax
+ \putlatom{-268}{-80}{\@memberb}% % left type
+ {%
+ \thicklines%
+ \Put@Line(-201,48)(-3,-5){60}% % single bond at 5
+ }%
+ \else\if\@tmpc A%(A) alpha
+ \yl@xdiff=17\relax
+ \yl@ydiff=29\relax
+ \putlatom{-318}{74}{\@memberb}% % left type
+ \dotorline(-201,103)(-1,0){100}/(-201,103)(-301,103)%
+ \else\if\@tmpc u% (u) up --- (B) beta
+ \yl@xdiff=17\relax
+ \yl@ydiff=29\relax
+ \putlatom{-318}{74}{\@memberb}% % left type
+ {%
+ \thicklines%
+ \Put@Line(-201,103)(-1,0){100}% % single bond at 5
+ }%
+ \else\if\@tmpc d% (d) down --- (A) alpha
+ \yl@xdiff=7\relax
+ \yl@ydiff=38\relax
+ \putlatom{-268}{-80}{\@memberb}% % left type
+ \dotorline(-201,48)(-3,-5){60}/(-201,48)(-261,-52)%
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=7\relax
+ \yl@ydiff=38\relax
+ \putlatom{-268}{-80}{\@memberb}% % left type
+ \Put@Line(-201,48)(-3,-5){60}% % single bond at 5
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=17\relax
+ \yl@ydiff=29\relax
+ \putlatom{-318}{74}{\@memberb}% % left type
+ \Put@Line(-201,103)(-1,0){100}% % single bond at 5
+ \else\if\@tmpc V%(V) beta undefined
+ \yl@xdiff=7\relax
+ \yl@ydiff=38\relax
+ \putlatom{-268}{-80}{\@memberb}% % left type
+ {%
+ \WaveBonds%
+ \Put@Line(-201,48)(-3,-5){60}% % single bond at 5
+ }%
+ \else\if\@tmpc U%(U) alpha undefined
+ \yl@xdiff=17\relax
+ \yl@ydiff=29\relax
+ \putlatom{-318}{74}{\@memberb}% % left type
+ {%
+ \WaveBonds%
+ \Put@Line(-201,103)(-1,0){100}% % single bond at 5
+ }%
+ \fi\fi\fi\fi\fi%
+ \fi\fi\fi\fi%
+ \else\if\@tmpb D%double bond
+ \yl@xdiff=10\relax
+ \yl@ydiff=62\relax
+ \putlatom{-311}{-27}{\@memberb}% % left type
+ \Put@Line(-194,76)(-5,-3){100}% % double bond at 5
+ \Put@Line(-200,101)(-5,-3){100}% % double bond at 5
+ \else\if\@tmpb B%beta single bond
+ \yl@xdiff=10\relax
+ \yl@ydiff=46\relax
+ \putlatom{-311}{-27}{\@memberb}% % left type
+ {%
+ \thicklines%
+ \Put@Line(-201,79)(-5,-3){100}% % single bond at 5
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=10\relax
+ \yl@ydiff=46\relax
+ \putlatom{-311}{-27}{\@memberb}% % left type
+ \dotorline(-201,79)(-5,-3){100}/(-201,79)(-301,21)%
+ \else\if\@tmpb U%undefined single bond
+ \yl@xdiff=10\relax
+ \yl@ydiff=46\relax
+ \putlatom{-311}{-27}{\@memberb}% % right type
+ {%
+ \WaveBonds%
+ \Put@Line(-220,79)(-5,-3){100}% % single wave bond at 5
+ }%
+ \else\if\@tmpb F%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusetrue
+ \Put@Direct(-171,103){\setatombondc}%
+ }%
+ \else\if\@tmpb G%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusetrue
+ \Put@Direct(-171,103){\setatombondd}%
+ }%
+ \else%
+ \yl@xdiff=10\relax
+ \yl@ydiff=46\relax
+ \putlatom{-311}{-27}{\@memberb}% % left type
+ \Put@Line(-201,79)(-5,-3){100}% % single bond at 5
+ \fi\fi\fi\fi%
+ \fi\fi\fi%
+\else%no clipping
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=10\relax
+ \yl@ydiff=56\relax
+ \putlatom{-301}{-27}{\@memberb}% % left type
+ \Put@Line(-171,103)(-5,-3){120}% % single bond at 5
+ \else\if\@tmpc B%(B) beta
+ \yl@xdiff=15\relax
+ \yl@ydiff=63\relax
+ \putlatom{-258}{-70}{\@memberb}% % left type
+ {%
+ \thicklines%
+ \Put@Line(-171,103)(-3,-5){72}% % single bond at 5
+ }%
+ \else\if\@tmpc A%(A) alpha
+ \yl@xdiff=15\relax
+ \yl@ydiff=29\relax
+ \putlatom{-326}{74}{\@memberb}% % left type
+ \dotorline(-171,103)(-1,0){140}/(-171,103)(-311,103)%
+ \else\if\@tmpc u%(u) up --- (B) beta
+ \yl@xdiff=15\relax
+ \yl@ydiff=29\relax
+ \putlatom{-326}{74}{\@memberb}% % left type
+ {%
+ \thicklines%
+ \Put@Line(-171,103)(-1,0){140}% % single bond at 5
+ }%
+ \else\if\@tmpc d%(d) down --- (A) alpha
+ \yl@xdiff=15\relax
+ \yl@ydiff=63\relax
+ \putlatom{-258}{-70}{\@memberb}% % left type
+ \dotorline(-171,103)(-3,-5){72}/(-171,103)(-243,-17)%
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=15\relax
+ \yl@ydiff=63\relax
+ \putlatom{-258}{-70}{\@memberb}% % left type
+ \Put@Line(-171,103)(-3,-5){72}% % single bond at 5
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=15\relax
+ \yl@ydiff=29\relax
+ \putlatom{-326}{74}{\@memberb}% % left type
+ \Put@Line(-171,103)(-1,0){140}% % single bond at 5
+ \else\if\@tmpc V%(V) beta undefined
+ \yl@xdiff=15\relax
+ \yl@ydiff=63\relax
+ \putlatom{-258}{-70}{\@memberb}% % left type
+ {%
+ \WaveBonds%
+ \Put@Line(-171,103)(-3,-5){72}% % single bond at 5
+ }%
+ \else\if\@tmpc U%(U) alpha undefined
+ \yl@xdiff=15\relax
+ \yl@ydiff=29\relax
+ \putlatom{-326}{74}{\@memberb}% % left type
+ {%
+ \WaveBonds%
+ \Put@Line(-171,103)(-1,0){140}% % single bond at 5
+ }%
+ \fi\fi\fi\fi\fi%
+ \fi\fi\fi\fi
+ \else\if\@tmpb D%double bond
+ \yl@xdiff=10\relax
+ \yl@ydiff=62\relax
+ \putlatom{-301}{-27}{\@memberb}% % left type
+ \Put@Line(-168,96)(-5,-3){120}% % double bond at 5
+ \Put@Line(-174,121)(-5,-3){120}% % double bond at 5
+ \else\if\@tmpb B%beta single bond
+ \yl@xdiff=10\relax
+ \yl@ydiff=56\relax
+ \putlatom{-301}{-27}{\@memberb}% % left type
+ {%
+ \thicklines%
+ \Put@Line(-171,103)(-5,-3){120}% % single bond at 5
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=-10\relax
+ \yl@ydiff=56\relax
+ \putlatom{-301}{-27}{\@memberb}% % left type
+ \dotorline(-171,103)(-5,-3){120}/(-171,103)(-311,31)%
+ \else\if\@tmpb U%undefined single bond
+ \yl@xdiff=-10\relax
+ \yl@ydiff=56\relax
+ \putlatom{-301}{-27}{\@memberb}% % right type
+ {%
+ \WaveBonds%
+ \Put@Line(-171,103)(-5,-3){120}% % single wave bond at 5
+ }%
+ \else\if\@tmpb F%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusefalse
+ \Put@Direct(-171,103){\setatombondc}%
+ }%
+ \else\if\@tmpb G%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusefalse
+ \Put@Direct(-171,103){\setatombondd}%
+ }%
+ \else%
+ \yl@xdiff=10\relax
+ \yl@ydiff=56\relax
+ \putlatom{-301}{-27}{\@memberb}% % left type
+ \Put@Line(-171,103)(-5,-3){120}%% single bond at 5
+ \fi\fi\fi\fi%
+ \fi\fi\fi%
+ \fi}% end of \@subste
+% \end{macrocode}
+% \end{macro}
+%
+% The |\@substf| command is used for placing a substituent (|\@memberb|) at
+% the 6-position (upper-left) of a vertical six-membered ring.
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/12/15}{New bond modifiers: FA, FB, GA, GB, Su, and Sd}
+% \changes{v4.03}{2005/07/20}{wave bonds for stereochemistry: U, FU, GU, SU, SV}
+% \begin{macro}{\@substf}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 6 %
+% %%%%%%%%%%%%%%%
+\def\@substf{%
+ \if@fclip %clipping
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=10\relax
+ \yl@ydiff=24\relax
+ \putlatom{-311}{363}{\@memberb}% % left type
+ \Put@Line(-201,327)(-5,3){100}% % single bond at 6
+ \else\if\@tmpc B%(B) beta
+ \yl@xdiff=8\relax
+ \yl@ydiff=38\relax
+ \putlatom{-268}{420}{\@memberb}% % left type
+ {%
+ \thicklines%
+ \Put@Line(-201,358)(-3,5){60}% % single bond at 6
+ }%
+ \else\if\@tmpc A%(A) alpha
+ \yl@xdiff=17\relax
+ \yl@ydiff=23\relax
+ \putlatom{-318}{280}{\@memberb}% % left type
+ \dotorline(-201,303)(-1,0){100}/(-201,303)(-301,303)%
+ \else\if\@tmpc u%(u) up --- (B) beta
+ \yl@xdiff=17\relax
+ \yl@ydiff=23\relax
+ \putlatom{-318}{280}{\@memberb}% % left type
+ {%
+ \thicklines%
+ \Put@Line(-201,303)(-1,0){100}% % single bond at 6
+ }%
+ \else\if\@tmpc d%(d) down --- (A) alpha
+ \yl@xdiff=8\relax
+ \yl@ydiff=38\relax
+ \putlatom{-268}{420}{\@memberb}% % left type
+ \dotorline(-201,358)(-3,5){60}/(-201,358)(-261,458)%
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=8\relax
+ \yl@ydiff=38\relax
+ \putlatom{-268}{420}{\@memberb}% % left type
+ \Put@Line(-201,358)(-3,5){60}% % single bond at 6
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=17\relax
+ \yl@ydiff=23\relax
+ \putlatom{-318}{280}{\@memberb}% % left type
+ \Put@Line(-201,303)(-1,0){100}% % single bond at 6
+ \else\if\@tmpc V%(V) beta undefined
+ \yl@xdiff=8\relax
+ \yl@ydiff=38\relax
+ \putlatom{-268}{420}{\@memberb}% % left type
+ {%
+ \WaveBonds%
+ \Put@Line(-201,358)(-3,5){60}% % single bond at 6
+ }%
+ \else\if\@tmpc U%(U) alpha undefined
+ \yl@xdiff=17\relax
+ \yl@ydiff=23\relax
+ \putlatom{-318}{280}{\@memberb}% % left type
+ {%
+ \WaveBonds%
+ \Put@Line(-201,303)(-1,0){100}% % single bond at 6
+ }%
+ \fi\fi\fi\fi\fi%
+ \fi\fi\fi\fi
+ \else\if\@tmpb D%double bond
+ \yl@xdiff=10\relax
+ \yl@ydiff=6\relax
+ \putlatom{-311}{363}{\@memberb}% % left type
+ \Put@Line(-194,331)(-5,3){100}% % double bond at 6
+ \Put@Line(-200,305)(-5,3){100}% % double bond at 6
+ \else\if\@tmpb B%beta single bond
+ \yl@xdiff=10\relax
+ \yl@ydiff=24\relax
+ \putlatom{-311}{363}{\@memberb}% % left type
+ {%
+ \thicklines%
+ \Put@Line(-201,327)(-5,3){100}% % single bond at 6
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=10\relax
+ \yl@ydiff=24\relax
+ \putlatom{-311}{363}{\@memberb}% % left type
+ \dotorline(-201,327)(-5,3){100}/(-201,327)(-301,387)%
+ \else\if\@tmpb U%undefined single bond
+ \yl@xdiff=10\relax
+ \yl@ydiff=24\relax
+ \putlatom{-311}{363}{\@memberb}% % right type
+ {%
+ \WaveBonds%
+ \Put@Line(-211,327)(-5,3){100}% % single wave bond at 6
+ }%
+ \else\if\@tmpb F%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusetrue
+ \Put@Direct(-171,303){\setatombondg}%
+ }%
+ \else\if\@tmpb G%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusetrue
+ \Put@Direct(-171,303){\setatombonda}%
+ }%
+ \else%
+ \yl@xdiff=10\relax
+ \yl@ydiff=24\relax
+ \putlatom{-311}{363}{\@memberb}% % left type
+ \Put@Line(-201,327)(-5,3){100}% % single bond at 6
+ \fi\fi\fi\fi%
+ \fi\fi\fi
+\else%no clipping
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=10\relax
+ \yl@ydiff=12\relax
+ \putlatom{-301}{363}{\@memberb}% % left type
+ \Put@Line(-171,303)(-5,3){120}% % single bond at 6
+ \else\if\@tmpc B%(B) beta
+ \yl@xdiff=15\relax
+ \yl@ydiff=13\relax
+ \putlatom{-258}{410}{\@memberb}% % left type
+ {%
+ \thicklines%
+ \Put@Line(-171,303)(-3,5){72}% % single bond at 6
+ }%
+ \else\if\@tmpc A%(A) alpha
+ \yl@xdiff=15\relax
+ \yl@ydiff=23\relax
+ \putlatom{-326}{280}{\@memberb}% % left type
+ \dotorline(-171,303)(-1,0){140}/(-171,303)(-311,303)%
+ \else\if\@tmpc u%(u) up --- (B) beta
+ \yl@xdiff=15\relax
+ \yl@ydiff=23\relax
+ \putlatom{-326}{280}{\@memberb}% % left type
+ {%
+ \thicklines%
+ \Put@Line(-171,303)(-1,0){140}% % single bond at 6
+ }%
+ \else\if\@tmpc d%(d) down --- (A) alpha
+ \yl@xdiff=15\relax
+ \yl@ydiff=13\relax
+ \putlatom{-258}{410}{\@memberb}% % left type
+ \dotorline(-171,303)(-3,5){72}/(-171,303)(-243,423)%
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=15\relax
+ \yl@ydiff=13\relax
+ \putlatom{-258}{410}{\@memberb}% % left type
+ \Put@Line(-171,303)(-3,5){72}% % single bond at 6
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=15\relax
+ \yl@ydiff=23\relax
+ \putlatom{-326}{280}{\@memberb}% % left type
+ \Put@Line(-171,303)(-1,0){140}% % single bond at 6
+ \else\if\@tmpc V%(V) beta undefined
+ \yl@xdiff=15\relax
+ \yl@ydiff=13\relax
+ \putlatom{-258}{410}{\@memberb}% % left type
+ {%
+ \WaveBonds%
+ \Put@Line(-171,303)(-3,5){72}% % single bond at 6
+ }%
+ \else\if\@tmpc U%(U) alpha undefined
+ \yl@xdiff=15\relax
+ \yl@ydiff=23\relax
+ \putlatom{-326}{280}{\@memberb}% % left type
+ {%
+ \WaveBonds%
+ \Put@Line(-171,303)(-1,0){140}% % single bond at 6
+ }%
+ \fi\fi\fi\fi\fi%
+ \fi\fi\fi\fi%
+ \else\if\@tmpb D%double bond
+ \yl@xdiff=10\relax
+ \yl@ydiff=6\relax
+ \putlatom{-301}{363}{\@memberb}% % left type
+ \Put@Line(-168,310)(-5,3){120}% % double bond at 6
+ \Put@Line(-174,284)(-5,3){120}% % double bond at 6
+ \else\if\@tmpb B%beta single bond
+ \yl@xdiff=10\relax
+ \yl@ydiff=12\relax
+ \putlatom{-301}{363}{\@memberb}% % left type
+ {%
+ \thicklines%
+ \Put@Line(-171,303)(-5,3){120}% % single bond at 6
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=-10\relax
+ \yl@ydiff=12\relax
+ \putlatom{-301}{363}{\@memberb}% % left type
+ \dotorline(-171,303)(-5,3){120}/(-171,303)(-311,375)%
+ \else\if\@tmpb U%undefined single bond
+ \yl@xdiff=-10\relax
+ \yl@ydiff=12\relax
+ \putlatom{-301}{363}{\@memberb}% % right type
+ {%
+ \WaveBonds%
+ \Put@Line(-171,303)(-5,3){120}% % single wave bond at 6
+ }%
+ \else\if\@tmpb F%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusefalse
+ \Put@Direct(-171,303){\setatombondg}%
+ }%
+ \else\if\@tmpb G%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusefalse
+ \Put@Direct(-171,303){\setatombonda}%
+ }%
+ \else%
+ \yl@xdiff=10\relax
+ \yl@ydiff=12\relax
+ \putlatom{-301}{363}{\@memberb}% % left type
+ \Put@Line(-171,303)(-5,3){120}% % single bond at 6
+ \fi\fi\fi\fi%
+ \fi\fi\fi
+\fi}% end of \@substf
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Coloring Atoms and Bonds}
+%
+% The \textsf{xcolor} package is loaded to color atoms and bonds.
+% \changes{v5.01}{2011/02/24}{Added}
+% \begin{macrocode}
+\RequirePackage{xcolor}
+% \end{macrocode}
+%
+% The command |\addbscolor| is defined to color substitution bonds.
+% \changes{v5.00}{2010/10/01}{Bond coloring}
+% \changes{v5.01}{2011/02/24}{Bond coloring: \cs{addbscolor} changed and
+% \cs{Addbscolor} added. But deleted.}
+%
+% \begin{verbatim}
+% e.g., \addbscolor{\cyan}{CH$_{3}$}
+% e.g., \Addbscolor{cyan}{CH$_{3}$}
+% \end{verbatim}
+%
+% \begin{macro}{\addbscolor}
+% \begin{macro}{\Addbscolor}
+% \begin{macro}{\setbscolor}
+% \begin{macrocode}
+\def\bondsubstcolor{}
+%\def\psbondsubstcolor{black}%added 2011/02/24
+\def\addbscolor#1#2{#2\gdef\bondsubstcolor{#1}}
+%\def\addbscolor#1#2{#2\gdef\bondsubstcolor{#1}%changed 2011/02/24
+%\gdef\psbondsubstcolor{\expandafter\@gobble\string #1}}
+%\def\Addbscolor#1#2{#2%added 2011/02/24
+%\expandafter\gdef\expandafter\bondsubstcolor\expandafter{\csname #1\endcsname}%
+%\gdef\psbondsubstcolor{#1}}
+\newif\ifbscolor
+\def\setbscolor{\addbscolor{}{}%
+\edef\@tmptmpb{\@tmpb}\edef\@tmptmpc{\@tmpc}%store original values
+\ifbscolor\setbox0=\hbox{\@memberb}\bondsubstcolor\setbox0=\hbox{}\fi
+\edef\@tmpb{\@tmptmpb}\edef\@tmpc{\@tmptmpc}%recover the original values
+}%
+\def\setBScolor#1{\begingroup\setbscolor#1\addbscolor{}{}\endgroup}%
+\def\bscolorswON{\bscolortrue}
+\def\bscolorswOFF{\bscolorfalse}
+\bscolorswON%default bond coloring
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% In addition to standard colors (e.g., \verb/\cyan/),
+% any colors can be created by using \verb/\defineXyMcolor/.
+% \changes{v5.01}{2011/02/24}{New color: \cs{defineXyMcolor}}
+%
+% \begin{verbatim}
+% \defineXyMcolor{My color name}{Color model}{Color value}
+% e.g.,
+% \defineXyMcolor{MyXyMcolor}{cmyk}{1,0,1,0}
+% \end{verbatim}
+% This defines a color named ``MyXyMcolor'' and the
+% corresponding control sequence \verb/MyXyMcolor/,
+% just as ``cyan'' corresponds to \verb/\cyan/.
+%
+% \begin{macro}{\defineXyMcolor}
+% \begin{macrocode}
+\def\defineXyMcolor#1#2#3{%
+\definecolor{#1}{#2}{#3}%
+\@ifundefined{psset}{%
+\expandafter\def\csname#1\endcsname{\color{#1}}}%
+{\expandafter\def\csname#1\endcsname{\color{#1}%
+\psset{linecolor=#1}}}}
+% \end{macrocode}
+% \end{macro}
+%
+% Pre-defined colors (e.g., olive) in the \textsf{xcolor} package
+% can be renamed to be applied to atom- and bond-coloring.
+% \changes{v5.01}{2011/02/24}{New color: \cs{XyMcolor}}
+%
+% \begin{verbatim}
+% \XyMcolor{new color_name}[color_model]{pre-defined color_name}
+% \end{verbatime}
+% e.g.,
+% \begin{verbatim}
+% \XyMcolor{XyMolive}{olive}
+% \end{verbatime}
+%
+% \begin{macro}{\XyMcolor}
+% \begin{macrocode}
+\def\XyMcolor#1{%
+\@ifnextchar[{\@XyMcolor{#1}}{\@XyMcolor{#1}[]}}
+\def\@XyMcolor#1[#2]#3{%
+\edef\tempColorModel{#2}%
+\ifx\tempColorModel\@empty\colorlet{#1}{#3}\else
+\colorlet{#1}[#2]{#3}\fi
+\@ifundefined{psset}{%
+\expandafter\def\csname#1\endcsname{\color{#1}}}%
+{\expandafter\def\csname#1\endcsname{\color{#1}%
+\psset{linecolor=#1}}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Setting-up substituents and bonds on a six-membered ring}
+%
+% The |\setsixringv| takes 5 arguments.
+%
+% \begin{verbatim}
+% **************************************************************
+% * setting of atoms and bonds on a vertical six-membered ring *
+% **************************************************************
+%
+% \setsixringv{SUBSLIST}{AD}{LOWER}{UPPER}{ORDER}
+% \end{verbatim}
+%
+% The first argument |SUBSLIST| is a list of substituents, which is
+% represented in the standard format of \XyMTeX{}.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents (max 6 substitution positions)
+%
+% for n = 1 to 6
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% The second argument |AD| is an adjustment value, which adjusts the original
+% set of locant numbers into the standard one between 1 to 6 for drawing
+% a six-membered ring.
+% The effective range of the standared set of locant numbers is
+% restricted by the auguments |LOWER| and |UPPER|. A minus value of
+% the last argument shows the anti-clockwise numbering, while zero or
+% a plus value represents the clockwise numbering.
+%
+% \begin{verbatim}
+%
+% AD : adjustment e.g. 0 for six-membered rings
+% LOWER : lower limit LOWER < effective range < UPPER
+% UPPER : upper limit
+% ORDER : >= 0 clockwise, <0 anti-clockwise
+% \end{verbatim}
+%
+% \changes{v1.02}{1998/10/31}{Adding switches \cs{@yla} etc.}
+%
+% \begin{macro}{\setsixringv}
+% \begin{macrocode}
+\def\setsixringv#1#2#3#4#5{%
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty\else%
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifx\@memberb\@yl\else
+\ifnum#5 < 0\relax%
+\@tmpaa=-\@tmpa\relax \advance\@tmpaa by#2\relax%
+\else\@tmpaa=\@tmpa\relax \advance\@tmpaa by#2\relax \fi
+\ifnum\@tmpaa >#3\relax%
+\ifnum\@tmpaa <#4\relax%
+\ifcase\@tmpaa%0 omit
+% \end{macrocode}
+%
+% The following commands are not used in a revised version
+% because of the direct use of |\ifx\@memberb\@yl\else...\fi|.
+%
+% \begin{macrocode}
+% %\or \if@yla\else\@substa\fi% subst. on 1
+% %\or \if@ylb\else\@substb\fi% subst. on 2
+% %\or \if@ylc\else\@substc\fi% subst. on 3
+% %\or \if@yld\else\@substd\fi% subst. on 4
+% %\or \if@yle\else\@subste\fi% subst. on 5
+% %\or \if@ylf\else\@substf\fi% subst. on 6
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \or{\setbscolor\@substa\addbscolor{}{}}%% subst. on 1
+ \or{\setbscolor\@substb\addbscolor{}{}}%% subst. on 2
+ \or{\setbscolor\@substc\addbscolor{}{}}%% subst. on 3
+ \or{\setbscolor\@substd\addbscolor{}{}}%% subst. on 4
+ \or{\setbscolor\@subste\addbscolor{}{}}%% subst. on 5
+ \or{\setbscolor\@substf\addbscolor{}{}}%% subst. on 6
+\fi%end of ifcase
+\fi%
+\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Setting-up substituents and bonds on a decaline ring}
+%
+% The command |\setdecaringv|
+% has been stopped to use and replaced by |\setsixringv|
+% (version 1.02).
+%
+% Definition of |\setdecaringv| has been deleted (version 2.01).
+%
+% \subsection{Setting-up substituents and bonds at fused positions}
+%
+% The command |\ylfusedposition| is to obtain the shift values
+% |\@ylii| and |\@yli| which are used for shifting the standard
+% point of a substituent.
+% The locant flags such as |\@ylatrue| have been stopped to use.
+% \changes{v1.02}{1998/10/11}{Delete \cs{@ylatrue} etc.}
+% \changes{v1.02}{1998/10/13}{Adding \cs{@fused@link} condition}
+% \changes{v1.02}{1998/10/31}{Commands for setting substituents}
+%
+% \begin{macro}{\ylfusedposition}
+% \begin{macrocode}
+\def\ylfusedposition#1#2#3#4#5{%
+\@@ylswfalse%\@reset@ylsw
+\@forsemicol\member:=#1\do{%
+\if@@ylsw\else%
+\ifx\member\empty\else%
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi
+\if@@ylsw
+\ifnum#5<0\relax%
+\@tmpaa=-\@tmpa\relax\advance\@tmpaa by #2\relax%
+\@fused@linktrue
+\else\@tmpaa=\@tmpa\relax\advance\@tmpaa by #2\relax
+\@fused@linkfalse\fi%
+\ifnum\@tmpaa >#3\relax%
+\ifnum\@tmpaa <#4\relax%
+\ifcase\@tmpaa%
+% %%%%%%%%%%%%%%%%%%
+% 0 fused positions % F == (171,303) G == (171,103)
+% %%%%%%%%%%%%%%%%%%
+ \if\@tmpb F%single bond at F (fused position)
+ \def\@ylii{-171}\def\@yli{-303}\@ylswtrue%\@ylatrue% subst. on 0
+ \else\if\@tmpb G%single bond at G (fused position)
+ \def\@ylii{-171}\def\@yli{-103}\@ylswtrue%\@ylatrue% subst. on 0
+ \fi\fi%
+% %%%%%%%%%%%%%%%%
+\or% subst. on 1 F == (0,406), G == (171,303) for \@fused@linkfalse
+ % subst. on 1 G == (0,406), F == (171,303) for \@fused@linktrue
+% %%%%%%%%%%%%%%%%
+\if@fused@link
+ \if\@tmpb G%single bond at F (5,-3) fusion
+ \def\@ylii{0}\def\@yli{-406}\@ylswtrue%\@ylatrue% subst. on 1
+ \else\if\@tmpb F%single bond at G
+ \def\@ylii{-171}\def\@yli{-303}\@ylswtrue%\@ylatrue% subst. on 1
+ \fi\fi%
+\else
+ \if\@tmpb F%single bond at F (5,-3) fusion
+ \def\@ylii{0}\def\@yli{-406}\@ylswtrue%\@ylatrue% subst. on 1
+ \else\if\@tmpb G%single bond at G
+ \def\@ylii{-171}\def\@yli{-303}\@ylswtrue%\@ylatrue% subst. on 1
+ \fi\fi%
+\fi
+% %%%%%%%%%%%%%%%%
+\or% subst. on 2 F == (0,406), G == (-171,303) for \@fused@linkfalse
+ % subst. on 2 G == (0,406), F == (-171,303) for \@fused@linktrue
+% %%%%%%%%%%%%%%%%
+\if@fused@link
+ \if\@tmpb G%single bond at (-5,-3) fusion
+ \def\@ylii{0}\def\@yli{-406}\@ylswtrue%\@ylatrue% subst. on 2
+ \else\if\@tmpb F%single bond at G
+ \def\@ylii{171}\def\@yli{-303}\@ylswtrue%\@ylatrue% subst. on 2
+ \fi\fi%
+\else
+ \if\@tmpb F%single bond at (-5,-3) fusion
+ \def\@ylii{0}\def\@yli{-406}\@ylswtrue%\@ylatrue% subst. on 2
+ \else\if\@tmpb G%single bond at G
+ \def\@ylii{171}\def\@yli{-303}\@ylswtrue%\@ylatrue% subst. on 2
+ \fi\fi%
+\fi
+% %%%%%%%%%%%%%%%%%%
+\or %3 fused positions % G == (303,171) F == (103,171)
+% %%%%%%%%%%%%%%%%%%
+ \if\@tmpb G%single bond at G (fused position)
+ \def\@ylii{-303}\def\@yli{-171}\@ylswtrue%\@ylatrue% subst. on 3
+ \else\if\@tmpb F%single bond at F (fused position)
+ \def\@ylii{-103}\def\@yli{-171}\@ylswtrue%\@ylatrue% subst. on 3
+ \fi\fi%
+\fi%end of ifcase
+\fi\fi\fi\fi\fi}}% end of \ylfusedposition
+% \end{macrocode}
+% \end{macro}
+%
+% The bond-setting commands |\GFbonda|, |\GFbondb|, |\GFbondc| and
+% |\GFbondd|, which are separated from the old |\setfusedbond| command,
+% are used to place a bond and a substituent at a fulsed position of
+% such a compound as a decaline.
+%
+% \changes{v1.02}{1998/10/12}{Separate \cs{GFbonda} etc.}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v4.03}{2005/07/20}{wave bonds for stereochemistry: FU, GU}
+%
+% \begin{macro}{\GFbonda}
+% \begin{macro}{\GFbonda@a}
+% \begin{macro}{\GFbonda@b}
+% \begin{macrocode}
+\def\GFbonda{%
+% %%%%%%%%%%%%%%%%%%
+% 0 fused positions % F == (171,303) G == (171,103)
+% %%%%%%%%%%%%%%%%%%
+ \if\@tmpb F%single bond at F (fused position)
+ \GFbonda@a
+ \else\if\@tmpb G%single bond at G (fused position)
+ \GFbonda@b
+ \fi\fi%
+}%end of GFbonda
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\GFbonda@a{%
+ \if\@tmpc B%beta single bond
+ \yl@xdiff=31\relax%171-140
+ \yl@ydiff=-17\relax%460-(303+140)
+ \putlratom{140}{460}{\@memberb}% % left or right type
+ {%
+ \thicklines%
+ \Put@Line(171,303)(0,1){140}% % single bond at F
+ }%
+ \else\if\@tmpc A%alpha single bond
+ \yl@xdiff=31\relax%171-140
+ \yl@ydiff=-17\relax%460-(303+140)
+ \putlratom{140}{460}{\@memberb}% % left or right type
+ \dotorline(171,303)(0,1){140}/(171,303)(171,443)%
+ \else\if\@tmpc U% unspecified single bond
+ \yl@xdiff=31\relax%171-140
+ \yl@ydiff=-17\relax%460-(303+140)
+ \putlratom{140}{460}{\@memberb}% % left or right type
+% \Put@Direct(168,303){$\wr$}% unspecified single bond at F
+% \Put@Direct(168,353){$\wr$}%
+% \Put@Direct(168,403){$\wr$}%
+ {%
+ \WaveBonds%
+ \Put@Line(171,303)(0,1){140}% % single wave bond at 1
+ }%
+ \else\if\@tmpc S%beta single bond
+ \yl@xdiff=31\relax%171-140
+ \yl@ydiff=-17\relax%460-(303+140)
+ \putlratom{140}{460}{\@memberb}% % left or right type
+ \Put@Line(171,303)(0,1){140}% % single bond at F
+ \else\ifx\@tmpc\empty%beta single bond
+ \yl@xdiff=31\relax%171-140
+ \yl@ydiff=-17\relax%460-(303+140)
+ \putlratom{140}{460}{\@memberb}% % left or right type
+ \Put@Line(171,303)(0,1){140}% % single bond at F
+ \fi\fi\fi\fi\fi%
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\GFbonda@b{%
+ \if\@tmpc B%beta single bond
+ \yl@xdiff=31\relax%171-140
+ \yl@ydiff=90\relax%127-(140-103)
+ \putlratom{140}{-127}{\@memberb}% % left or right type
+ {%
+ \thicklines%
+ \Put@Line(171,103)(0,-1){140}% % single bond at G
+ }%
+ \else\if\@tmpc A%alpha single bond
+ \yl@xdiff=31\relax%171-140
+ \yl@ydiff=90\relax%127-(140-103)
+ \putlratom{140}{-127}{\@memberb}% % left or right type
+ \dotorline(171,103)(0,-1){140}/(171,103)(171,-37)%
+ \else\if\@tmpc U%beta single bond
+ \yl@xdiff=31\relax%171-140
+ \yl@ydiff=90\relax%127-(140-103)
+ \putlratom{140}{-127}{\@memberb}% % left or right type
+% \Put@Direct(168,43){$\wr$}% unspecified single bond at G
+% \Put@Direct(168,-8){$\wr$}%
+% \Put@Direct(168,-57){$\wr$}%
+ {%
+ \WaveBonds%
+ \Put@Line(171,103)(0,-1){140}% % single wave bond at 1
+ }%
+ \else\if\@tmpc S%alpha single bond
+ \yl@xdiff=31\relax%171-140
+ \yl@ydiff=90\relax%127-(140-103)
+ \putlratom{140}{-127}{\@memberb}% % left or right type
+ \Put@Line(171,103)(0,-1){140}% % single bond at G
+ \else\ifx\@tmpc\empty%alpha single bond
+ \yl@xdiff=31\relax%171-140
+ \yl@ydiff=90\relax%127-(140-103)
+ \putlratom{140}{-127}{\@memberb}% % left or right type
+ \Put@Line(171,103)(0,-1){140}% % single bond at G
+ \fi\fi\fi\fi\fi%
+}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\GFbondb}
+% \begin{macro}{\GFbondb@a}
+% \begin{macro}{\GFbondb@b}
+% \begin{macrocode}
+\def\GFbondb{%
+% %%%%%%%%%%%%%%%%
+% subst. on 1 F == (0,406), G == (171,303) for \@fused@linkfalse
+% subst. on 1 G == (0,406), F == (171,303) for \@fused@linktrue
+% %%%%%%%%%%%%%%%%
+ \if@fused@link
+ \if\@tmpb G%single bond at G (5,-3) fusion
+ \GFbondb@a
+ \else\if\@tmpb F%single bond at F
+ \GFbondb@b
+ \fi\fi%
+ \else
+ \if\@tmpb F%single bond at F (5,-3) fusion
+ \GFbondb@a
+ \else\if\@tmpb G%single bond at G
+ \GFbondb@b
+ \fi\fi%
+ \fi
+}% end of \GFbondb
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\GFbondb@a{%
+ \if\@tmpc B%beta single bond
+ \yl@xdiff=10\relax%
+ \yl@ydiff=22\relax%
+ \putlatom{-130}{466}{\@memberb}% % left type
+ {%
+ \thicklines%
+ \Put@Line(0,406)(-5,3){120}% % single bond at F
+ }%
+ \else\if\@tmpc A%alpha single bond
+ \yl@xdiff=10\relax%
+ \yl@ydiff=22\relax%
+ \putlatom{-130}{466}{\@memberb}% % left type
+ \dotorline(0,406)(-5,3){120}/(0,406)(-120,478)%
+ \else\if\@tmpc U%unspecified single bond
+ \yl@xdiff=10\relax%
+ \yl@ydiff=22\relax%
+ \putlatom{-130}{466}{\@memberb}% % left type
+ {%
+ \WaveBonds%
+ \Put@Line(0,406)(-5,3){120}% % single bond at F
+ }%
+ \else\if\@tmpc S%beta single bond
+ \yl@xdiff=10\relax%
+ \yl@ydiff=22\relax%
+ \putlatom{-130}{466}{\@memberb}% % left type
+ \Put@Line(0,406)(-5,3){120}% % single bond at F
+ \else\ifx\@tmpc\empty%beta single bond
+ \yl@xdiff=10\relax%
+ \yl@ydiff=22\relax%
+ \putlatom{-130}{466}{\@memberb}% % left type
+ \Put@Line(0,406)(-5,3){120}% % single bond at F
+ \else\if\@tmpc D%beta single bond (downward)
+ \yl@xdiff=31\relax%
+ \yl@ydiff=90\relax%
+ \putlratom{-31}{176}{\@memberb}% % left or right type
+ {%
+ \thicklines%
+ \Put@Line(0,406)(0,-1){140}% % single bond at F
+ }%
+ \else\if\@tmpc C%alpha single bond (downward)
+ \yl@xdiff=31\relax%
+ \yl@ydiff=90\relax%
+ \putlratom{-31}{176}{\@memberb}% % left or right type
+ \dotorline(0,406)(0,-1){140}/(0,406)(0,266)%
+ \fi\fi\fi\fi\fi\fi\fi%
+}% end of \GFbondb@a
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\GFbondb@b{%
+ \if\@tmpc B%beta single bond
+ \yl@xdiff=-10\relax%
+ \yl@ydiff=58\relax%
+ \putratom{301}{173}{\@memberb}% % right type
+ {%
+ \thicklines%
+ \Put@Line(171,303)(5,-3){120}% % single bond at G
+ }%
+ \else\if\@tmpc A%alpha single bond
+ \yl@xdiff=-10\relax%
+ \yl@ydiff=58\relax%
+ \putratom{301}{173}{\@memberb}% % right type
+ \dotorline(171,303)(5,-3){120}/(171,303)(291,231)%
+ \else\if\@tmpc U%unspecified single bond
+ \yl@xdiff=-10\relax%
+ \yl@ydiff=58\relax%
+ \putratom{301}{173}{\@memberb}% % right type
+ {%
+ \WaveBonds%
+ \Put@Line(171,303)(5,-3){120}% % single bond at G
+ }%
+ \else\if\@tmpc S%alpha single bond
+ \yl@xdiff=-10\relax%
+ \yl@ydiff=58\relax%
+ \putratom{301}{173}{\@memberb}% % right type
+ \Put@Line(171,303)(5,-3){120}% % single bond at G
+ \else\ifx\@tmpc\empty%alpha single bond
+ \yl@xdiff=-10\relax%
+ \yl@ydiff=58\relax%
+ \putratom{301}{173}{\@memberb}% % right type
+ \Put@Line(171,303)(5,-3){120}% % single bond at G
+ \else\if\@tmpc D%beta single bond (upward)
+ \yl@xdiff=31\relax%
+ \yl@ydiff=-17\relax%
+ \putlratom{140}{460}{\@memberb}% % left or right type
+ {%
+ \thicklines%
+ \Put@Line(171,303)(0,1){140}% % single bond at G
+ }%
+ \else\if\@tmpc C%alpha single bond (upward)
+ \yl@xdiff=31\relax%
+ \yl@ydiff=-17\relax%
+ \putlratom{140}{460}{\@memberb}% % left or right type
+ \dotorline(171,303)(0,1){140}/(171,303)(171,443)%
+ \fi\fi\fi\fi\fi\fi\fi%
+}% end of \GFbondb@b
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\GFbondc}
+% \begin{macro}{\GFbondc@a}
+% \begin{macro}{\GFbondc@b}
+% \begin{macrocode}
+\def\GFbondc{%
+% %%%%%%%%%%%%%%%%
+% subst. on 2 F == (0,406), G == (-171,303) for \@fused@linkfalse
+% subst. on 2 G == (0,406), F == (-171,303) for \@fused@linktrue
+% %%%%%%%%%%%%%%%%
+\if@fused@link
+ \if\@tmpb G%single bond at (-5,-3) fusion
+ \GFbondc@a
+ \else\if\@tmpb F%single bond at F
+ \GFbondc@b
+ \fi\fi%
+\else
+ \if\@tmpb F%single bond at (-5,-3) fusion
+ \GFbondc@a
+ \else\if\@tmpb G%single bond at G
+ \GFbondc@b
+ \fi\fi%
+\fi
+}% end of \GFbondc
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \def\GFbondc@a{%
+ \if\@tmpc B%beta single bond
+ \yl@xdiff=-10\relax%
+ \yl@ydiff=12\relax%
+ \putratom{130}{466}{\@memberb}% % right type
+ {%
+ \thicklines%
+ \Put@Line(0,406)(5,3){120}% % single bond at F
+ }%
+ \else\if\@tmpc A%alpha single bond
+ \yl@xdiff=-10\relax%
+ \yl@ydiff=12\relax%
+ \putratom{130}{466}{\@memberb}% % right type
+ \dotorline(0,406)(5,3){120}/(0,406)(120,478)%
+ \else\if\@tmpc U%unspecified single bond
+ \yl@xdiff=-10\relax%
+ \yl@ydiff=12\relax%
+ \putratom{130}{466}{\@memberb}% % right type
+ {%
+ \WaveBonds%
+ \Put@Line(0,406)(5,3){120}% % single bond at F
+ }%
+ \else\if\@tmpc S%beta single bond
+ \yl@xdiff=-10\relax%
+ \yl@ydiff=12\relax%
+ \putratom{130}{466}{\@memberb}% % right type
+ \Put@Line(0,406)(5,3){120}% % single bond at F
+ \else\ifx\@tmpc\empty%beta single bond
+ \yl@xdiff=-10\relax%
+ \yl@ydiff=12\relax%
+ \putratom{130}{466}{\@memberb}% % right type
+ \Put@Line(0,406)(5,3){120}% % single bond at F
+ \else\if\@tmpc D%beta single bond (downward)
+ \yl@xdiff=31\relax%
+ \yl@ydiff=90\relax%
+ \putlratom{-31}{176}{\@memberb}% % left or right type
+ {%
+ \thicklines%
+ \Put@Line(0,406)(0,-1){140}% % single bond at F
+ }%
+ \else\if\@tmpc C%alpha single bond (downward)
+ \yl@xdiff=31\relax%
+ \yl@ydiff=90\relax%
+ \putlratom{-31}{176}{\@memberb}% % left or right type
+ \dotorline(0,406)(0,-1){140}/(0,406)(0,266)%
+ \fi\fi\fi\fi\fi\fi\fi%
+}% end of \GFbondc@a
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\GFbondc@b{%
+ \if\@tmpc B%beta single bond
+ \yl@xdiff=10\relax%
+ \yl@ydiff=59\relax%
+ \putlatom{-301}{173}{\@memberb}% % left type
+ {%
+ \thicklines%
+ \Put@Line(-171,303)(-5,-3){120}% % single bond at G
+ }%
+ \else\if\@tmpc A%alpha single bond
+ \yl@xdiff=10\relax%
+ \yl@ydiff=59\relax%
+ \putlatom{-301}{173}{\@memberb}% % left type
+ \dotorline(-171,303)(-5,-3){120}/(-171,303)(-291,231)%
+ \else\if\@tmpc U%unspecified single bond
+ \yl@xdiff=10\relax%
+ \yl@ydiff=59\relax%
+ \putlatom{-301}{173}{\@memberb}% % left type
+ {%
+ \WaveBonds%
+ \Put@Line(-171,303)(-5,-3){120}% single bond at G
+ }%
+ \else\if\@tmpc S%alpha single bond
+ \yl@xdiff=10\relax%
+ \yl@ydiff=59\relax%
+ \putlatom{-301}{173}{\@memberb}% % left type
+ \Put@Line(-171,303)(-5,-3){120}% single bond at G
+ \else\ifx\@tmpc\empty%alpha single bond
+ \yl@xdiff=10\relax%
+ \yl@ydiff=59\relax%
+ \putlatom{-301}{173}{\@memberb}% % left type
+ \Put@Line(-171,303)(-5,-3){120}% single bond at G
+ \else\if\@tmpc D%beta single bond (upward)
+ \yl@xdiff=-30\relax%
+ \yl@ydiff=-17\relax%
+ \putlratom{201}{460}{\@memberb}% % left or right type
+ {%
+ \thicklines%
+ \Put@Line(-171,303)(0,1){140}% % single bond at G
+ }%
+ \else\if\@tmpc C%alpha single bond (upward)
+ \yl@xdiff=-30\relax%
+ \yl@ydiff=-17\relax%
+ \putlratom{201}{460}{\@memberb}% % left or right type
+ \dotorline(-171,303)(0,1){140}/(-171,303)(-171,443)%
+ \fi\fi\fi\fi\fi\fi\fi%
+}% end of \GFbondc@b
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\GFbondd}
+% \begin{macrocode}
+\def\GFbondd{%
+% %%%%%%%%%%%%%%%%%%
+% 3 fused positions % G == (303,171) F == (103,171)
+% %%%%%%%%%%%%%%%%%%
+ \if\@tmpb G%single bond at G (fused position)
+ \if\@tmpc B%beta single bond
+ \yl@xdiff=-17\relax%
+ \yl@ydiff=31\relax%
+ \putlratom{460}{140}{\@memberb}% % left or right type
+ {%
+ \thicklines%
+ \Put@Line(303,171)(1,0){140}% % single bond at G
+ }%
+ \else\if\@tmpc A%alpha single bond
+ \yl@xdiff=-17\relax%
+ \yl@ydiff=31\relax%
+ \putlratom{460}{140}{\@memberb}% % left or right type
+ \dotorline(303,171)(1,0){140}/(303,171)(443,171)%
+ \else\if\@tmpc U% unspecified single bond
+ \yl@xdiff=-17\relax%
+ \yl@ydiff=31\relax%
+ \putlratom{460}{140}{\@memberb}% % left or right type
+% \Put@Direct(303,148){$\sim$}% unspecified single bond at G
+% \Put@Direct(353,148){$\sim$}%
+% \Put@Direct(403,148){$\sim$}%
+ {%
+ \WaveBonds%
+ \Put@Line(303,171)(1,0){140}% single bond at G
+ }%
+ \else\if\@tmpc S%beta single bond
+ \yl@xdiff=-17\relax%
+ \yl@ydiff=31\relax%
+ \putlratom{460}{140}{\@memberb}% % left or right type
+ \Put@Line(303,171)(1,0){140}% % single bond at G
+ \else\ifx\@tmpc\empty%beta single bond
+ \yl@xdiff=-17\relax%
+ \yl@ydiff=31\relax%
+ \putlratom{460}{140}{\@memberb}% % left or right type
+ \Put@Line(303,171)(1,0){140}% % single bond at G
+ \fi\fi\fi\fi\fi%
+ \else\if\@tmpb F%single bond at F (fused position)
+ \if\@tmpc B%beta single bond
+ \yl@xdiff=20\relax%
+ \yl@ydiff=31\relax%
+% \putlratom{-127}{140}{\@memberb}% % left or right type
+ \putlatom{-57}{140}{\@memberb}% % left type
+ {%
+ \thicklines%
+ \Put@Line(103,171)(-1,0){140}% % single bond at F
+ }%
+ \else\if\@tmpc A%alpha single bond
+ \yl@xdiff=20\relax%
+ \yl@ydiff=31\relax%
+ \putlatom{-57}{140}{\@memberb}% % left type
+ \dotorline(103,171)(-1,0){140}/(103,171)(-37,171)%
+ \else\if\@tmpc U%beta single bond
+ \yl@xdiff=20\relax%
+ \yl@ydiff=31\relax%
+ \putlatom{-57}{140}{\@memberb}% % left type
+% \Put@Direct(40,148){$\sim$}% unspecified single bond at F
+% \Put@Direct(-13,148){$\sim$}%
+% \Put@Direct(-62,148){$\sim$}%
+ {%
+ \WaveBonds%
+ \Put@Line(103,171)(-1,0){140}% single bond at F
+ }%
+ \else\if\@tmpc S%alpha single bond
+ \yl@xdiff=20\relax%
+ \yl@ydiff=31\relax%
+ \putlatom{-57}{140}{\@memberb}% % left type
+ \Put@Line(103,171)(-1,0){140}% % single bond at F
+ \else\ifx\@tmpc\empty%alpha single bond
+ \yl@xdiff=20\relax%
+ \yl@ydiff=31\relax%
+ \putlatom{-57}{140}{\@memberb}% % left type
+ \Put@Line(103,171)(-1,0){140}% % single bond at F
+ \fi\fi\fi\fi\fi%
+ \fi\fi%
+}% end of \GFbondd
+% \end{macrocode}
+% \end{macro}
+%
+% The |\setfusedbond| takes 5 arguments.
+%
+% \begin{verbatim}
+% ******************************************************
+% * setting of atoms and bonds at fused bond positions *
+% ******************************************************
+%
+% \setfusedbond{SUBSLIST}{AD}{LOWER}{UPPER}{ORDER}
+% \end{verbatim}
+%
+% The first argument |SUBSLIST| is a list of substituents, which is
+% represented in the standard format of \XyMTeX{}.
+% Substituents at the fused positions (vertical bonds) are designated by
+% the number 0 and the following bond modifiers.
+% They are placed by means of the |\GFbonda| command.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents (max 3 substitution positions)
+%
+% for 0 (vertical (0,1) fused positions)
+% F == (171,303) G == (171,103)
+%
+% 0FA : alpha single bond at F
+% 0FB : beta single bond at F
+% 0FU : unspecified single bond at F
+% 0GA : alpha single bond at G
+% 0GB : beta single bond at G
+% 0GU : unspecified single bond at G
+%
+% \end{verbatim}
+%
+% Substituents at the fused positions (diagonal bonds) are designated by
+% the number 1 and the following bond modifiers.
+% They are placed by means of the |\GFbondb| command.
+% \begin{verbatim}
+% for 1 (diagonal (5,-3) fused positions)
+% F == (0,406), G == (171,303)
+%
+% 1FA : alpha single bond at F
+% 1FB : beta single bond at F
+% 1FC : alpha single bond (downward) at F
+% 1FD : beta single bond (downward) at F
+% 1FU : unspecified single bond at F
+% 1GA : alpha single bond at G
+% 1GB : beta single bond at G
+% 1GC : alpha single bond (upward) at G
+% 1GD : beta single bond (upward) at G
+% 1GU : unspecified single bond at G
+%
+% \end{verbatim}
+%
+% Substituents at the fused positions (other diagonal bonds) are designated by
+% the number 2 and the following bond modifiers.
+% They are placed by means of the |\GFbondc| command.
+% \begin{verbatim}
+% for 2 (diagonal (-5,-3) fused positions)
+% F == (0,406), G == (-171,303)
+%
+% 2FA : alpha single bond at F
+% 2FB : beta single bond at F
+% 2FC : alpha single bond (upward) at F
+% 2FD : beta single bond (upward) at F
+% 2FU : unspecified single bond at F
+% 2GA : alpha single bond at G
+% 2GB : beta single bond at G
+% 2GC : alpha single bond (downward) at G
+% 2GD : beta single bond (downward) at G
+% 2GU : unspecified single bond at G
+%
+% \end{verbatim}
+%
+% Substituents at the fused positions (horizontal bonds) are designated by
+% the number 3 and the following bond modifiers.
+% They are placed by means of the |\GFbondd| command.
+% \begin{verbatim}
+% for 3 (horizontal (1,0) fused positions)
+% G == (303,171) F == (103,171)
+% %%%% F == (303,171) G == (103,171)
+%
+% 3FA : alpha single bond at F
+% 3FB : beta single bond at F
+% 3FU : unspecified single bond at F
+% 3GA : alpha single bond at G
+% 3GB : beta single bond at G
+% 3GU : unspecified single bond at G
+% \end{verbatim}
+%
+% The second argument |AD| is an adjustment value, which adjusts the original
+% set of locant numbers into the standard one between 0 to 3 for drawing
+% substituents on fused positions.
+% The effective range of the standared set of locant numbers is
+% restricted by the auguments |LOWER| and |UPPER|. A minus value of
+% the last argument shows the anti-clockwise numbering, while zero or
+% a plus value represents the clockwise numbering.
+%
+% \begin{verbatim}
+%
+% AD : adjustment e.g. 0 for six-membered rings
+% LOWER : lower limit LOWER < effective range < UPPER
+% UPPER : upper limit
+% ORDER : >= 0 clockwise, <0 anti-clockwise
+%
+% \end{verbatim}
+%
+% \changes{v1.02}{1998/10/31}{Adding the \cs{\@memberb=\@y} condition}
+% \changes{v1.02}{1998/10/31}{Separate \cs{GFbonda} etc.}
+% \changes{v4.03}{2005/07/20}{Concrete wave bonds for stereochemistry: FU, GU}
+% \changes{v5.00}{2010/10/01}{Coloring Substitution Bond}
+%
+% \begin{macro}{\setfusedbond}
+% \begin{macrocode}
+\newif\if@fused@link \@fused@linkfalse
+\def\setfusedbond#1#2#3#4#5{%
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty\else%
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifx\@memberb\@yl\else
+\ifnum#5<0\relax%
+\@tmpaa=-\@tmpa\relax\advance\@tmpaa by #2\relax\@fused@linktrue
+\else\@tmpaa=\@tmpa\relax\advance\@tmpaa by #2\relax
+\@fused@linkfalse\fi%
+\ifnum\@tmpaa >#3\relax%
+\ifnum\@tmpaa <#4\relax%
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ifcase\@tmpaa%
+% %%%%%%%%%%%%%%%%%%
+% 0 fused positions % F == (171,303) G == (171,103)
+% %%%%%%%%%%%%%%%%%%
+{\setbscolor\GFbonda\addbscolor{}{}}%2010/10/01
+% %%%%%%%%%%%%%%%%
+\or% subst. on 1 F == (0,406), G == (171,303)
+% %%%%%%%%%%%%%%%%
+{\setbscolor\GFbondb\addbscolor{}{}}%2010/10/01
+%\GFbondb
+% %%%%%%%%%%%%%%%%
+\or% subst. on 2 F == (0,406), G == (-171,303) for \@fused@linkfalse
+ % subst. on 2 G == (0,406), F == (-171,303) for \@fused@linktrue
+% %%%%%%%%%%%%%%%%
+{\setbscolor\GFbondc\addbscolor{}{}}%2010/10/01
+%\GFbondc
+% %%%%%%%%%%%%%%%%%%
+\or %3 fused positions % G == (303,171) F == (103,171)
+% %%%%%%%%%%%%%%%%%%
+{\setbscolor\GFbondd\addbscolor{}{}}%2010/10/01
+%\GFbondd
+\fi%end of ifcase
+\fi\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Setting-up substituents and bonds at a given position}
+%
+% The |\setatombond| takes 3 arguments.
+%
+% \begin{verbatim}
+% ********************************************************
+% * setting of atoms and bonds at an appropiate position *
+% ********************************************************
+%
+% \setatombond{SUBSLIST}{AD}{SLOPE}
+% \end{verbatim}
+%
+% The first argument |SUBSLIST| is a list of substituents, which is
+% represented in the standard format of \XyMTeX{}.
+% Substituents at the fused positions (vertical bonds) are designated by
+% the number 0 and the following bond modifiers.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents (max 3 substitution positions)
+% \end{verbatim}
+%
+% The second argument |AD| is an adjustment value, which adjusts the original
+% locant number into 1.
+%
+% \begin{verbatim}
+% AD : adjustment,
+% Set AD as being 1 = position number - AD
+% \end{verbatim}
+%
+% The argument |SLOPE| has the following meanings.
+% \begin{verbatim}
+% SLOPE
+%
+% 1 : (0,1) 7 : (0,-1)
+% 2 : (3,5) 8 : (-3,-5)
+% 3 : (5,3) 9 : (-5,-3)
+% 4 : (1,0) 10 : (-1,0)
+% 5 : (5,-3) 11 : (-5,3)
+% 6 : (3,-5) 12 : (-3,5)
+% \end{verbatim}
+%
+% \changes{v1.02}{1998/10/14}{The bond-setting commands such as
+% \cs{setatombonda} ... \cs{setatombondh} are separated from
+% the original \cs{setatombond}.}
+%
+% \begin{macro}{\setatombond}
+% \begin{macrocode}
+\newif\if@clipfuse \@clipfusefalse
+\def\setatombond#1#2#3{%
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty\else%
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\@tmpaa=\@tmpa\relax\advance\@tmpaa by #2\relax
+\ifx\@memberb\@yl\else
+\ifnum\@tmpaa >0\relax%
+\ifnum\@tmpaa <2\relax%
+\ifcase\@tmpaa%
+% %%%%%%%%%%%%%%%%
+\or% subst. on 1
+% %%%%%%%%%%%%%%%%
+%
+% (0,1)
+%
+ \ifnum#3=1\relax%(upward)
+{\setbscolor\setatombonda\addbscolor{}{}}%2010/10/01
+% \setatombonda
+%
+% (1,0)
+%
+ \else\ifnum#3=4\relax%(right)
+{\setbscolor\setatombondb\addbscolor{}{}}%2010/10/01
+% \setatombondb
+%
+% (0,-1)
+%
+ \else\ifnum#3=7\relax%(downward)
+{\setbscolor\setatombondc\addbscolor{}{}}%2010/10/01
+% \setatombondc
+%
+% (-5,3)
+%
+ \else\ifnum#3=11\relax%
+{\setbscolor\setatombondd\addbscolor{}{}}%2010/10/01
+% \setatombondd
+%
+% (5,-3)
+%
+ \else\ifnum#3=5\relax%
+{\setbscolor\setatombonde\addbscolor{}{}}%2010/10/01
+% \setatombonde
+%
+% (5,3)
+%
+ \else\ifnum#3=3\relax%
+{\setbscolor\setatombondf\addbscolor{}{}}%2010/10/01
+% \setatombondf
+%
+% (-5,-3)
+%
+ \else\ifnum#3=9\relax%
+{\setbscolor\setatombondg\addbscolor{}{}}%2010/10/01
+% \setatombondg
+%
+% (-1,0)
+%
+ \else\ifnum#3=10\relax%(left)
+{\setbscolor\setatombondh\addbscolor{}{}}%2010/10/01
+% \setatombondh
+\fi\fi\fi\fi\fi\fi\fi\fi%
+\fi%end of ifcase
+\fi\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% The command |\setatombond| uses the following bond-setting
+% commands.
+% \changes{v4.03}{2005/07/20}{Concrete wave bonds for stereochemistry: FU, GU}
+%
+% \begin{macro}{\setatombonda}
+% \begin{macro}{\setatombondb}
+% \begin{macro}{\setatombondc}
+% \begin{macro}{\setatombondd}
+% \begin{macro}{\setatombonde}
+% \begin{macro}{\setatombondf}
+% \begin{macro}{\setatombondg}
+% \begin{macro}{\setatombondh}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \begin{macrocode}
+\def\setatombonda{%upward (0,1)
+ \if@clipfuse%
+ \if\@tmpb B%beta single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ {%
+ \thicklines%
+ \Put@Line(0,40)(0,1){100}% % single bond at 1
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \dotorline(0,40)(0,1){100}/(0,40)(0,140)%
+ \else\if\@tmpb U% unspecified single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+% \Put@Direct(-3,30){$\wr$}% unspecified single bond at 1
+% \Put@Direct(-3,80){$\wr$}%
+ {%
+ \WaveBonds%
+ \Put@Line(0,40)(0,1){100}% single bond at F
+ }%
+ \else\if\@tmpb S%beta single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \Put@Line(0,40)(0,1){100}% % single bond at 1
+ \else\if\@tmpb D%double bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \Put@Line(-10,40)(0,1){100}% % single bond at 1
+ \Put@Line(10,40)(0,1){100}% % single bond at 1
+ \else\if\@tmpb T%double bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \Put@Line(-15,40)(0,1){100}% % single bond at 1
+ \Put@Line(0,40)(0,1){100}% % single bond at 1
+ \Put@Line(15,40)(0,1){100}% % single bond at 1
+ \else\ifx\@tmpb\empty%beta single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \Put@Line(0,40)(0,1){100}% % single bond at 1
+ \fi\fi\fi\fi\fi\fi\fi%
+ \putlratom{-31}{157}{\@memberb}% % left or right type
+ \else%no clip
+ \if\@tmpb B%beta single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ {%
+ \thicklines%
+ \Put@Line(0,0)(0,1){140}% % single bond at 1
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \dotorline(0,0)(0,1){140}/(0,0)(0,140)%
+ \else\if\@tmpb U% unspecified single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+% \Put@Direct(-3,0){$\wr$}% unspecified single bond at 1
+% \Put@Direct(-3,50){$\wr$}%
+% \Put@Direct(-3,100){$\wr$}%
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(0,1){140}% single bond at F
+ }%
+ \else\if\@tmpb S%beta single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \Put@Line(0,0)(0,1){140}% % single bond at 1
+ \else\if\@tmpb D%beta single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \Put@Line(-10,0)(0,1){140}% % single bond at 1
+ \Put@Line(10,0)(0,1){140}% % single bond at 1
+ \else\if\@tmpb T%beta single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \Put@Line(-15,0)(0,1){140}% % single bond at 1
+ \Put@Line(0,0)(0,1){140}% % single bond at 1
+ \Put@Line(15,0)(0,1){140}% % single bond at 1
+ \else\ifx\@tmpb\empty%beta single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \Put@Line(0,0)(0,1){140}% % single bond at 1
+ \fi\fi\fi\fi\fi\fi\fi%
+ \putlratom{-31}{157}{\@memberb}% % left or right type
+ \fi%
+}% end of \setatombonda
+% \end{macrocode}
+%
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v4.03}{2005/07/20}{Concrete wave bonds for stereochemistry: FU, GU}
+% \begin{macrocode}
+\def\setatombondb{%(right) (1,0)
+ \if@clipfuse%
+ \if\@tmpb B%beta single bond
+ \yl@xdiff=-17\relax
+ \yl@ydiff=31\relax
+ {%
+ \thicklines%
+ \Put@Line(30,0)(1,0){110}% % single bond at 1
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=-17\relax
+ \yl@ydiff=31\relax
+ \dotorline(30,0)(1,0){110}/(30,0)(140,0)%
+ \else\if\@tmpb U%beta single bond
+ \yl@xdiff=-17\relax
+ \yl@ydiff=31\relax
+ {%
+ \WaveBonds%
+ \Put@Line(30,0)(1,0){110}% % single bond at 1
+ }%
+ \else\if\@tmpb S%alpha single bond
+ \yl@xdiff=-17\relax
+ \yl@ydiff=31\relax
+ \Put@Line(40,0)(1,0){100}% % single bond at 1
+ \else\if\@tmpb D%alpha single bond
+ \yl@xdiff=-17\relax
+ \yl@ydiff=31\relax
+ \Put@Line(40,10)(1,0){100}% % single bond at 1
+ \Put@Line(40,-10)(1,0){100}% % single bond at 1
+ \else\if\@tmpb T%alpha single bond
+ \yl@xdiff=-17\relax
+ \yl@ydiff=31\relax
+ \Put@Line(40,15)(1,0){100}% % single bond at 1
+ \Put@Line(40,0)(1,0){100}% % single bond at 1
+ \Put@Line(40,-15)(1,0){100}% % single bond at 1
+ \else\ifx\@tmpb\empty%alpha single bond
+ \yl@xdiff=-17\relax
+ \yl@ydiff=31\relax
+ \Put@Line(40,0)(1,0){100}% % single bond at 1
+ \fi\fi\fi\fi\fi\fi\fi%
+ \putratom{157}{-31}{\@memberb}% % right type only
+ \else%
+ \if\@tmpb B%beta single bond
+ \yl@xdiff=-17\relax
+ \yl@ydiff=31\relax
+ {%
+ \thicklines%
+ \Put@Line(0,0)(1,0){140}% % single bond at 1
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=-17\relax
+ \yl@ydiff=31\relax
+ \dotorline(0,0)(1,0){140}/(0,0)(140,0)%
+ \else\if\@tmpb U%beta single bond
+ \yl@xdiff=-17\relax
+ \yl@ydiff=31\relax
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(1,0){140}% % single bond at 1
+ }%
+ \else\if\@tmpb S%alpha single bond
+ \yl@xdiff=-17\relax
+ \yl@ydiff=31\relax
+ \Put@Line(0,0)(1,0){140}% % single bond at 1
+ \else\if\@tmpb D%alpha single bond
+ \yl@xdiff=-17\relax
+ \yl@ydiff=31\relax
+ \Put@Line(0,10)(1,0){140}% % single bond at 1
+ \Put@Line(0,-10)(1,0){140}% % single bond at 1
+ \else\if\@tmpb T%alpha single bond
+ \yl@xdiff=-17\relax
+ \yl@ydiff=31\relax
+ \Put@Line(0,-15)(1,0){140}% % single bond at 1
+ \Put@Line(0,0)(1,0){140}% % single bond at 1
+ \Put@Line(0,15)(1,0){140}% % single bond at 1
+ \else\ifx\@tmpb\empty%alpha single bond
+ \yl@xdiff=-17\relax
+ \yl@ydiff=31\relax
+ \Put@Line(0,0)(1,0){140}% % single bond at 1
+ \fi\fi\fi\fi\fi\fi\fi%
+ \putratom{157}{-31}{\@memberb}% % right type only
+ \fi%
+}% end of \setatombondb
+% \end{macrocode}
+%
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v4.03}{2005/07/20}{Concrete wave bonds for stereochemistry: FU, GU}
+% \begin{macrocode}
+\def\setatombondc{%(downward) (0,-1)
+ \if@clipfuse%
+ \if\@tmpb B%beta single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ {%
+ \thicklines%
+ \Put@Line(0,-40)(0,-1){100}% % single bond at 1
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \dotorline(0,-40)(0,-1){100}/(0,-40)(0,-140)%
+ \else\if\@tmpb U%beta single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+% \Put@Direct(-3,-90){$\wr$}% unspecified single bond at 1
+% \Put@Direct(-3,-140){$\wr$}%
+ {%
+ \WaveBonds%
+ \Put@Line(0,-40)(0,-1){100}% % single bond at 1
+ }%
+ \else\if\@tmpb S%alpha single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \Put@Line(0,-40)(0,-1){100}% % single bond at 1
+ \else\if\@tmpb D%alpha single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \Put@Line(10,-40)(0,-1){100}% % single bond at 1
+ \Put@Line(-10,-40)(0,-1){100}% % single bond at 1
+ \else\if\@tmpb T%alpha single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \Put@Line(15,-40)(0,-1){100}% % single bond at 1
+ \Put@Line(0,-40)(0,-1){100}% % single bond at 1
+ \Put@Line(-15,-40)(0,-1){100}% % single bond at 1
+ \else\ifx\@tmpb\empty%alpha single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \Put@Line(0,-40)(0,-1){100}% % single bond at 1
+ \fi\fi\fi\fi\fi\fi\fi%
+ \putlratom{-31}{-230}{\@memberb}% % left or right type
+ \else%no clipping
+ \if\@tmpb B%beta single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ {%
+ \thicklines%
+ \Put@Line(0,0)(0,-1){140}% % single bond at 1
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \dotorline(0,0)(0,-1){140}/(0,0)(0,-140)%
+ \else\if\@tmpb U%beta single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+% \Put@Direct(-3,-60){$\wr$}% unspecified single bond at 1
+% \Put@Direct(-3,-110){$\wr$}%
+% \Put@Direct(-3,-160){$\wr$}%
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(0,-1){140}% % single bond at 1
+ }%
+ \else\if\@tmpb S%alpha single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \Put@Line(0,0)(0,-1){140}% % single bond at 1
+ \else\if\@tmpb D%alpha single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \Put@Line(10,0)(0,-1){140}% % single bond at 1
+ \Put@Line(-10,0)(0,-1){140}% % single bond at 1
+ \else\if\@tmpb T%alpha single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \Put@Line(15,0)(0,-1){140}% % single bond at 1
+ \Put@Line(0,0)(0,-1){140}% % single bond at 1
+ \Put@Line(-15,0)(0,-1){140}% % single bond at 1
+ \else\ifx\@tmpb\empty%alpha single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \Put@Line(0,0)(0,-1){140}% % single bond at 1
+ \fi\fi\fi\fi\fi\fi\fi%
+ \putlratom{-31}{-230}{\@memberb}% % left or right type
+ \fi%
+}% end of \setatombondc
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\setatombondd{% (-5,3)
+ \if@clipfuse%
+ \yl@xdiff=20\relax
+ \yl@ydiff=18\relax
+ \if\@tmpb B%beta single bond
+ {%
+ \thicklines%
+ \Put@Line(-30,18)(-5,3){100}% % single bond at 1
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \dotorline(-30,18)(-5,3){100}/(-30,18)(-130,78)%
+ \else\if\@tmpb U%unspecified single bond
+ {%
+ \WaveBonds%
+ \Put@Line(-30,18)(-5,3){100}% % single bond at 1
+ }%
+ \else\if\@tmpb S%beta single bond
+ \Put@Line(-30,18)(-5,3){100}% % single bond at 1
+ \else\if\@tmpb D%beta single bond
+ \Put@Line(-36,8)(-5,3){100}% % single bond at 1
+ \Put@Line(-24,24)(-5,3){100}% % single bond at 1
+ \else\if\@tmpb T%beta single bond
+ \Put@Line(-39,3)(-5,3){100}% % single bond at 1
+ \Put@Line(-30,18)(-5,3){100}% % single bond at 1
+ \Put@Line(-21,33)(-5,3){100}% % single bond at 1
+ \else\ifx\@tmpb\empty%beta single bond
+ \Put@Line(-30,18)(-5,3){100}% % single bond at 1
+ \fi\fi\fi\fi\fi\fi\fi%
+ \putlatom{-150}{60}{\@memberb}% % left type
+ \else%no clipping
+ \yl@xdiff=20\relax
+ \yl@ydiff=18\relax
+ \if\@tmpb B%beta single bond
+ {%
+ \thicklines%
+ \Put@Line(0,0)(-5,3){130}% % single bond at 1
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \dotorline(0,0)(-5,3){130}/(0,0)(-130,78)%
+ \else\if\@tmpb U%unspecified single bond
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(-5,3){130}% % single bond at 1
+ }%
+ \else\if\@tmpb S%beta single bond
+ \Put@Line(0,0)(-5,3){130}% % single bond at 1
+ \else\if\@tmpb D%beta single bond
+ \Put@Line(6,10)(-5,3){130}% % single bond at 1
+ \Put@Line(-6,-10)(-5,3){130}% % single bond at 1
+ \else\if\@tmpb T%beta single bond
+ \Put@Line(9,15)(-5,3){130}% % single bond at 1
+ \Put@Line(0,0)(-5,3){130}% % single bond at 1
+ \Put@Line(-9,-15)(-5,3){130}% % single bond at 1
+ \else\ifx\@tmpb\empty%beta single bond
+ \Put@Line(0,0)(-5,3){130}% % single bond at 1
+ \fi\fi\fi\fi\fi\fi\fi%
+ \putlatom{-150}{60}{\@memberb}% % left type
+ \fi%
+}% end of \setatombondd
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\setatombonde{%(5,-3)
+ \if@clipfuse%
+ \yl@xdiff=-10\relax
+ \yl@ydiff=52\relax
+ \if\@tmpb B%beta single bond
+ {%
+ \thicklines%
+ \Put@Line(30,-18)(5,-3){100}% % single bond at 1
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \dotorline(30,-18)(5,-3){100}/(30,-18)(130,-78)%
+ \else\if\@tmpb U%unspecified single bond
+ {%
+ \WaveBonds%
+ \Put@Line(30,-18)(5,-3){100}% % single bond at 1
+ }%
+ \else\if\@tmpb S%alpha single bond
+ \Put@Line(30,-18)(5,-3){100}% % single bond at 1
+ \else\if\@tmpb D%alpha single bond
+ \Put@Line(36,-12)(5,-3){100}% % single bond at 1
+ \Put@Line(24,-28)(5,-3){100}% % single bond at 1
+ \else\if\@tmpb T%alpha single bond
+ \Put@Line(39,-3)(5,-3){100}% % single bond at 1
+ \Put@Line(30,-18)(5,-3){100}% % single bond at 1
+ \Put@Line(21,-33)(5,-3){100}% % single bond at 1
+ \else\ifx\@tmpb\empty%alpha single bond
+ \Put@Line(30,-18)(5,-3){100}% % single bond at 1
+ \fi\fi\fi\fi\fi\fi\fi%
+ \putratom{140}{-130}{\@memberb}% % right type
+ \else%no clipping
+ \yl@xdiff=-10\relax
+ \yl@ydiff=52\relax
+ \if\@tmpb B%beta single bond
+ {%
+ \thicklines%
+ \Put@Line(0,0)(5,-3){130}% % single bond at 1
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \dotorline(0,0)(5,-3){130}/(0,0)(130,-78)%
+ \else\if\@tmpb U%unspecified single bond
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(5,-3){130}% % single bond at 1
+ }%
+ \else\if\@tmpb S%alpha single bond
+ \Put@Line(0,0)(5,-3){130}% % single bond at 1
+ \else\if\@tmpb D%alpha single bond
+ \Put@Line(6,10)(5,-3){130}% % single bond at 1
+ \Put@Line(-6,-10)(5,-3){130}% % single bond at 1
+ \else\if\@tmpb T%alpha single bond
+ \Put@Line(9,15)(5,-3){130}% % single bond at 1
+ \Put@Line(0,0)(5,-3){130}% % single bond at 1
+ \Put@Line(-9,-15)(5,-3){130}% % single bond at 1
+ \else\ifx\@tmpb\empty%alpha single bond
+ \Put@Line(0,0)(5,-3){130}% % single bond at 1
+ \fi\fi\fi\fi\fi\fi\fi%
+ \putratom{140}{-130}{\@memberb}% % right type
+ \fi%
+}% end of \setatombonde
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\setatombondf{%% (5,3)
+ \if@clipfuse%
+ \yl@xdiff=-30\relax
+ \yl@ydiff=18\relax
+ \if\@tmpb B%beta single bond
+ {%
+ \thicklines%
+ \Put@Line(30,18)(5,3){100}% % single bond at 1
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \dotorline(30,18)(5,3){100}/(30,18)(130,78)%
+ \else\if\@tmpb U%unspecified single bond
+ {%
+ \WaveBonds%
+ \Put@Line(30,18)(5,3){100}% % single bond at 1
+ }%
+ \else\if\@tmpb S%beta single bond
+ \Put@Line(30,18)(5,3){100}% % single bond at 1
+ \else\if\@tmpb D%beta single bond
+ \Put@Line(36,8)(5,3){100}% % single bond at 1
+ \Put@Line(24,24)(5,3){100}% % single bond at 1
+ \else\if\@tmpb T%beta single bond
+ \Put@Line(39,3)(5,3){100}% % single bond at 1
+ \Put@Line(30,18)(5,3){100}% % single bond at 1
+ \Put@Line(21,33)(5,3){100}% % single bond at 1
+ \else\ifx\@tmpb\empty%beta single bond
+ \Put@Line(30,18)(5,3){100}% % single bond at 1
+ \fi\fi\fi\fi\fi\fi\fi%
+ \putratom{160}{60}{\@memberb}% % right type
+ \else%no clipping
+ \yl@xdiff=-30\relax
+ \yl@ydiff=18\relax
+ \if\@tmpb B%beta single bond
+ {%
+ \thicklines%
+ \Put@Line(0,0)(5,3){130}% % single bond at 1
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \dotorline(0,0)(5,3){120}/(0,0)(130,78)%
+ \else\if\@tmpb U%unspecified single bond
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(5,3){130}% % single bond at 1
+ }%
+ \else\if\@tmpb S%beta single bond
+ \Put@Line(0,0)(5,3){130}% % single bond at 1
+ \else\if\@tmpb D%beta single bond
+ \Put@Line(6,-10)(5,3){130}% % single bond at 1
+ \Put@Line(-6,10)(5,3){130}% % single bond at 1
+ \else\if\@tmpb T%beta single bond
+ \Put@Line(9,-15)(5,3){130}% % single bond at 1
+ \Put@Line(0,0)(5,3){130}% % single bond at 1
+ \Put@Line(-9,15)(5,3){130}% % single bond at 1
+ \else\ifx\@tmpb\empty%beta single bond
+ \Put@Line(0,0)(5,3){130}% % single bond at 1
+ \fi\fi\fi\fi\fi\fi\fi%
+ \putratom{160}{60}{\@memberb}% % right type
+ \fi%
+}% end of \setatombondf
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\setatombondg{%% (-5,-3)
+ \if@clipfuse%
+ \yl@xdiff=0\relax
+ \yl@ydiff=52\relax%1999/1/6 by Shinsaku Fujita
+ \if\@tmpb B%beta single bond
+ {%
+ \thicklines%
+ \Put@Line(-30,-18)(-5,-3){100}% % single bond at 1
+ }%
+ \else\if\@tmpb A%alpha single bond
+% \dotorline(-30,-18)(-5,-3){100}/(-20,-12)(-120,-72)%
+ \dotorline(-35,-21)(-5,-3){100}/(-35,-21)(-120,-72)%
+ \else\if\@tmpc U%unspecified single bond
+ {%
+ \WaveBonds%
+ \Put@Line(-35,-21)(-5,-3){100}% % single bond at 1
+ }%
+ \else\if\@tmpc S%alpha single bond
+% \Put@Line(-30,-18)(-5,-3){100}% % single bond at 1
+ \Put@Line(-35,-21)(-5,-3){100}% % single bond at 1
+ \else\if\@tmpb D%double bond
+ \Put@Line(-36,-12)(-5,-3){100}% % single bond at 1
+ \Put@Line(-24,-28)(-5,-3){100}% % single bond at 1
+ \else\if\@tmpb T%triple bond
+ \Put@Line(-39,-3)(-5,-3){100}% % single bond at 1
+ \Put@Line(-30,-18)(-5,-3){100}% % single bond at 1
+ \Put@Line(-21,-33)(-5,-3){100}% % single bond at 1
+ \else\ifx\@tmpc\empty%alpha single bond
+% \Put@Line(-30,-18)(-5,-3){100}% % single bond at 1
+ \Put@Line(-35,-21)(-5,-3){100}% % single bond at 1
+ \fi\fi\fi\fi\fi\fi\fi%
+ \putlatom{-130}{-130}{\@memberb}% % left type
+ \else%
+ \yl@xdiff=0\relax
+% \yl@ydiff=62\relax
+ \yl@ydiff=52\relax%1999/1/6 by Shinsaku Fujita
+ \if\@tmpb B%beta single bond
+ {%
+ \thicklines%
+ \Put@Line(0,0)(-5,-3){130}% % single bond at 1
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \dotorline(0,0)(-5,-3){130}/(0,0)(-130,-78)%
+ \else\if\@tmpc U%unspecified single bond
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(-5,-3){130}% % single bond at 1
+ }%
+ \else\if\@tmpc S%alpha single bond
+ \Put@Line(0,0)(-5,-3){130}% % single bond at 1
+ \else\if\@tmpb D%alpha single bond
+ \Put@Line(-6,10)(-5,-3){130}% % single bond at 1
+ \Put@Line(6,-10)(-5,-3){130}% % single bond at 1
+ \else\if\@tmpb T%alpha single bond
+ \Put@Line(-9,15)(-5,-3){130}% % single bond at 1
+ \Put@Line(0,0)(-5,-3){130}% % single bond at 1
+ \Put@Line(9,-15)(-5,-3){130}% % single bond at 1
+ \else\ifx\@tmpc\empty%alpha single bond
+ \Put@Line(0,0)(-5,-3){130}% % single bond at 1
+ \fi\fi\fi\fi\fi\fi\fi%
+ \putlatom{-130}{-130}{\@memberb}% % left type
+ \fi%
+}% end of \setatombondg
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\setatombondh{% (-1,0)
+ \yl@xdiff=17\relax
+ \yl@ydiff=31\relax
+ \if@clipfuse%
+ \if\@tmpb B%beta single bond
+ {%
+ \thicklines%
+ \Put@Line(-30,0)(-1,0){110}% % single bond at 1
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \dotorline(-30,0)(-1,0){110}/(-30,0)(-140,0)%
+ \else\if\@tmpb U%beta single bond
+ {%
+ \WaveBonds%
+ \Put@Line(-30,0)(-1,0){110}% % single bond at 1
+ }%
+ \else\if\@tmpb S%alpha single bond
+ \Put@Line(-40,0)(-1,0){100}% % single bond at 1
+ \else\if\@tmpb D%alpha single bond
+ \Put@Line(-40,10)(-1,0){100}% % single bond at 1
+ \Put@Line(-40,-10)(-1,0){100}% % single bond at 1
+ \else\if\@tmpb T%alpha single bond
+ \Put@Line(-40,15)(-1,0){100}% % single bond at 1
+ \Put@Line(-40,0)(-1,0){100}% % single bond at 1
+ \Put@Line(-40,-15)(-1,0){100}% % single bond at 1
+ \else\ifx\@tmpb\empty%alpha single bond
+ \Put@Line(-40,0)(-1,0){100}% % single bond at 1
+ \fi\fi\fi\fi\fi\fi\fi%
+ \putlatom{-157}{-31}{\@memberb}% % left type only
+ \else%
+ \if\@tmpb B%beta single bond
+ {%
+ \thicklines%
+ \Put@Line(0,0)(-1,0){140}% % single bond at 1
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \dotorline(0,0)(-1,0){140}/(0,0)(-140,0)%
+ \else\if\@tmpb U%beta single bond
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(-1,0){140}% % single bond at 1
+ }%
+ \else\if\@tmpb S%alpha single bond
+ \Put@Line(0,0)(-1,0){140}% % single bond at 1
+ \else\if\@tmpb D%alpha single bond
+ \Put@Line(0,10)(-1,0){140}% % single bond at 1
+ \Put@Line(0,-10)(-1,0){140}% % single bond at 1
+ \else\if\@tmpb T%alpha single bond
+ \Put@Line(0,-15)(-1,0){140}% % single bond at 1
+ \Put@Line(0,0)(-1,0){140}% % single bond at 1
+ \Put@Line(0,15)(-1,0){140}% % single bond at 1
+ \else\ifx\@tmpb\empty%alpha single bond
+ \Put@Line(0,0)(-1,0){140}% % single bond at 1
+ \fi\fi\fi\fi\fi\fi\fi%
+ \putlatom{-157}{-31}{\@memberb}% % left type only
+ \fi%
+}% end of \setatombondh
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The macro |\ylatombondposition| is used to calculate the shift values
+% (|\@ylii| and |\@yli|) for applying the |\setatombond| command.
+% \changes{v1.02}{1998/10/15}{New command: \cs{ylatombondposition}
+% for setting substituents}
+%
+% \begin{macro}{\ylatombondposition}
+% \begin{macrocode}
+\def\ylatombondposition#1#2#3{%
+\@@ylswfalse%%%\@reset@ylsw
+\@forsemicol\member:=#1\do{%
+\if@@ylsw\else%
+\ifx\member\empty\else%
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi
+\if@@ylsw
+\@tmpaa=\@tmpa\relax\advance\@tmpaa by #2\relax
+\ifnum\@tmpaa >0\relax%
+\ifnum\@tmpaa <2\relax%
+\ifcase\@tmpaa%
+% %%%%%%%%%%%%%%%%
+\or% subst. on 1
+% %%%%%%%%%%%%%%%%
+%
+% (0,1)
+%
+ \ifnum#3=1\relax%upward
+ \if@clipfuse%
+ \gdef\@ylii{0}\gdef\@yli{-48}\global\@ylswtrue%
+ \else
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%
+ \fi
+% \setatombonda
+%
+% (1,0)
+%
+ \else\ifnum#3=4\relax%(right)
+ \if@clipfuse%
+ \gdef\@ylii{-40}\gdef\@yli{0}\global\@ylswtrue%
+ \else
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%
+ \fi
+% \setatombondb
+%
+% (0,-1)
+%
+ \else\ifnum#3=7\relax%(downward)
+ \if@clipfuse%
+ \gdef\@ylii{0}\gdef\@yli{48}\global\@ylswtrue%
+ \else
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%
+ \fi
+% \setatombondc
+%
+% (-5,3)
+%
+ \else\ifnum#3=11\relax%
+ \if@clipfuse%
+ \gdef\@ylii{50}\gdef\@yli{-30}\global\@ylswtrue%
+ \else
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%
+ \fi
+% \setatombondd
+%
+% (5,-3)
+%
+ \else\ifnum#3=5\relax%
+ \if@clipfuse%
+ \gdef\@ylii{-50}\gdef\@yli{30}\global\@ylswtrue%
+ \else
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%
+ \fi
+% \setatombonde
+%
+% (5,3)
+%
+ \else\ifnum#3=3\relax%
+ \if@clipfuse%
+ \gdef\@ylii{-50}\gdef\@yli{-30}\global\@ylswtrue%
+ \else
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%
+ \fi
+% \setatombondf
+%
+% (-5,-3)
+%
+ \else\ifnum#3=9\relax%
+ \if@clipfuse%
+ \gdef\@ylii{50}\gdef\@yli{30}\global\@ylswtrue%
+ \else
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%
+ \fi
+% \setatombondg
+%
+% (-1,0)
+%
+ \else\ifnum#3=10\relax%(left)
+ \if@clipfuse%
+ \gdef\@ylii{40}\gdef\@yli{0}\global\@ylswtrue%
+ \else
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%
+ \fi
+% \setatombondh
+\fi\fi\fi\fi\fi\fi\fi\fi%
+\fi%end of ifcase
+\fi\fi\fi\fi%
+\fi}}% end of \ylatombondposition
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Macros for horizontal formulas}
+% \subsection{Placing substituents for horizontal formulas}
+%
+% Such a drawing command as |\setsixringh| uses several inner macros
+% for placing substituents with bonds. The first set of inner macros
+% are shown as follows.
+%
+% The command |\ylpositionh| is to obtain the shift values
+% |\@ylii| and |\@yli| which are used for shifting the standard point
+% of a substituent.
+% The locant flags such as |\@ylatrue| have been stopped to use.
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylpositionh}.
+% Commands for setting substituents}
+% \changes{v5.01}{2013/06/19}{bug fix: initial setting of \cs{reset@@yl}}
+%
+% \begin{macro}{\ylpositionh}
+% \begin{macrocode}
+\def\ylpositionh#1#2#3#4#5{%
+\@@ylswfalse%%%\@reset@ylsw
+\reset@@yl%%2013/06/19bug fix
+\@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
+\ifnum#5<0\relax%
+\@tmpaa=-\@tmpa\relax \advance\@tmpaa by#2\relax%
+\else\@tmpaa=\@tmpa\relax \advance\@tmpaa by#2\relax\fi
+\ifnum\@tmpaa>#3\relax%
+\ifnum\@tmpaa<#4\relax%
+\ifcase\@tmpaa%0 omit
+ \or\ifx\aaa\empty
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%\@ylatrue% subst. on 1
+ \else
+ \gdef\@ylii{30}\gdef\@yli{0}\global\@ylswtrue%\@ylatrue% subst. on 1
+ \fi
+ \or\ifx\bbb\empty
+ \gdef\@ylii{-103}\gdef\@yli{-171}\global\@ylswtrue%\@ylbtrue% subst. on 2
+ \else
+ \gdef\@ylii{-73}\gdef\@yli{-223}\global\@ylswtrue%\@ylbtrue% subst. on 2
+ \fi
+ \or \ifx\ccc\empty
+ \gdef\@ylii{-303}\gdef\@yli{-171}\global\@ylswtrue%\@ylctrue% subst. on 3
+ \else
+ \gdef\@ylii{-333}\gdef\@yli{-223}\global\@ylswtrue%\@ylctrue% subst. on 3
+ \fi
+ \or\ifx\ddd\empty
+ \gdef\@ylii{-406}\gdef\@yli{0}\global\@ylswtrue%\@yldtrue% subst. on 4
+ \else
+ \gdef\@ylii{-436}\gdef\@yli{0}\global\@ylswtrue%\@yldtrue% subst. on 4
+ \fi
+ \or\ifx\eee\empty
+ \gdef\@ylii{-303}\gdef\@yli{171}\global\@ylswtrue%\@yletrue% subst. on 5
+ \else
+ \gdef\@ylii{-333}\gdef\@yli{223}\global\@ylswtrue%\@yletrue% subst. on 5
+ \fi
+ \or \ifx\fff\empty
+ \gdef\@ylii{-103}\gdef\@yli{171}\global\@ylswtrue%\@ylftrue% subst. on 6
+ \else
+ \gdef\@ylii{-73}\gdef\@yli{223}\global\@ylswtrue%\@ylftrue% subst. on 6
+ \fi
+\fi%end of ifcase
+\fi\fi\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+% The |\@hsubsta| command is used for placing a substituent (|\@memberb|) at
+% the 1-position (top) of a vertical six-membered ring. The bond linking
+% between the substituent and the 1-position is drawn in the light of
+% the corresponding bond modifier (|\@tmpc| = Sa, Sb, SA, SB etc.).
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/12/15}{Added bond modifiers: FA, FB, GA, GB, Su, Sd}
+% \changes{v4.03}{2005/07/20}{Wave bonds for stereochemistry: U, FU, GU, SU, SV}
+% \begin{macro}{\@hsubsta}
+% *************************************************************
+% * treatment of substitution positions for a horizontal type *
+% *************************************************************
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 1 %
+% %%%%%%%%%%%%%%%
+\def\@hsubsta{%
+\if@aclip %clipping
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=17\relax
+ \yl@ydiff=31\relax
+ \putlatom{-157}{-31}{\@memberb}% % left type only
+ \Put@Line(-30,0)(-1,0){110}% % single bond at 1
+ \else\if\@tmpc B%(B) beta
+ \yl@xdiff=27\relax
+ \yl@ydiff=36\relax
+ \putlatom{-157}{42}{\@memberb}% % left type
+ {%
+ \thicklines%
+ \Put@Line(-30,18)(-5,3){100}% % single bond at 1
+ }%
+ \else\if\@tmpc A%(A) alpha
+ \yl@xdiff=37\relax
+ \yl@ydiff=28\relax
+ \putlatom{-157}{-100}{\@memberb}% % left type
+ \dotorline(-30,-18)(-5,-3){100}/(-30,-18)(-120,-72)%
+ \else\if\@tmpc u%(u) up --- (B) beta
+ \yl@xdiff=37\relax
+ \yl@ydiff=28\relax
+ \putlatom{-157}{-100}{\@memberb}% % left type
+ {%
+ \thicklines%
+ \Put@Line(-30,-18)(-5,-3){100}% % single bond at 1
+ }%
+ \else\if\@tmpc d%(d) down --- (A) alpha
+ \yl@xdiff=27\relax
+ \yl@ydiff=36\relax
+ \putlatom{-157}{42}{\@memberb}% % left type
+ \dotorline(-30,18)(-5,3){100}/(-30,18)(-130,78)%
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=27\relax
+ \yl@ydiff=36\relax
+ \putlatom{-157}{42}{\@memberb}% % left type
+ \Put@Line(-30,18)(-5,3){100}% % single bond at 1
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=27\relax
+ \yl@ydiff=28\relax
+ \putlatom{-157}{-100}{\@memberb}% % left type
+ \Put@Line(-30,-18)(-5,-3){100}% % single bond at 1
+ \else\if\@tmpc V%(V) beta undefined
+ \yl@xdiff=27\relax
+ \yl@ydiff=36\relax
+ \putlatom{-157}{42}{\@memberb}% % left type
+ {%
+ \WaveBonds%
+ \Put@Line(-30,18)(-5,3){100}% % single bond at 1
+ }%
+ \else\if\@tmpc U%(U) alpha undefined
+ \yl@xdiff=27\relax
+ \yl@ydiff=28\relax
+ \putlatom{-157}{-100}{\@memberb}% % left type
+ {%
+ \WaveBonds%
+ \Put@Line(-30,-18)(-5,-3){100}% % single bond at 1
+ }%
+ \fi\fi\fi\fi\fi
+ \fi\fi\fi\fi
+ \else\if\@tmpb D%double bond
+ \yl@xdiff=17\relax
+ \yl@ydiff=31\relax
+ \putlatom{-157}{-31}{\@memberb}% % left type only
+ \Put@Line(-30,-12)(-1,0){110}% % double bond at 1
+ \Put@Line(-30,12)(-1,0){110}% % double bond at 1
+ \else\if\@tmpb B%beta single bond
+ \yl@xdiff=17\relax
+ \yl@ydiff=31\relax
+ \putlatom{-157}{-31}{\@memberb}% % left type only
+ {%
+ \thicklines%
+ \Put@Line(-30,0)(-1,0){110}% % single bond at 1
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=17\relax
+ \yl@ydiff=31\relax
+ \putlatom{-157}{-31}{\@memberb}% % left type only
+ \dotorline(-30,0)(-1,0){110}/(-30,0)(-140,0)%
+ \else\if\@tmpb U%undefined single bond
+ \yl@xdiff=17\relax
+ \yl@ydiff=31\relax
+ \putlatom{-157}{-31}{\@memberb}% % left type only
+ {%
+ \WaveBonds%
+ \Put@Line(-30,0)(-1,0){110}% % single wave bond at 1
+ }%
+ \else\if\@tmpb F%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusetrue
+ \Put@Direct(0,0){\setatombondG}%
+ }%
+ \else\if\@tmpb G%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusetrue
+ \Put@Direct(0,0){\setatombondD}%
+ }%
+ \else%
+ \yl@xdiff=17\relax
+ \yl@ydiff=31\relax
+ \putlatom{-157}{-31}{\@memberb}% % left type only
+ \Put@Line(-40,0)(-1,0){100}% % single bond at 1
+ \fi\fi\fi\fi
+ \fi\fi\fi%
+\else%% no clipping
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=17\relax
+ \yl@ydiff=31\relax
+ \putlatom{-157}{-31}{\@memberb}% % left type only
+ \Put@Line(0,0)(-1,0){140}% % single bond at 1
+ \else\if\@tmpc B%(B) beta
+ \yl@xdiff=37\relax
+ \yl@ydiff=30\relax
+ \putlatom{-157}{42}{\@memberb}% % left type
+ {%
+ \thicklines%
+ \Put@Line(0,0)(-5,3){120}% % single bond at 1
+ }%
+ \else\if\@tmpc A%(A) alpha
+ \yl@xdiff=37\relax
+ \yl@ydiff=28\relax
+ \putlatom{-157}{-100}{\@memberb}% % left type
+ \dotorline(0,0)(-5,-3){120}/(0,0)(-120,-72)%
+ \else\if\@tmpc u%(u) up --- (B) beta
+ \yl@xdiff=37\relax
+ \yl@ydiff=28\relax
+ \putlatom{-157}{-100}{\@memberb}% % left type
+ {%
+ \thicklines%
+ \Put@Line(0,0)(-5,-3){120}% % single bond at 1
+ }%
+ \else\if\@tmpc d%(d) down --- (A) alpha
+ \yl@xdiff=37\relax
+ \yl@ydiff=30\relax
+ \putlatom{-157}{42}{\@memberb}% % left type
+ \dotorline(0,0)(-5,3){120}/(0,0)(-120,72)%
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=37\relax
+ \yl@ydiff=30\relax
+ \putlatom{-157}{42}{\@memberb}% % left type
+ \Put@Line(0,0)(-5,3){120}% % single bond at 1
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=37\relax
+ \yl@ydiff=28\relax
+ \putlatom{-157}{-100}{\@memberb}% % left type
+ \Put@Line(0,0)(-5,-3){120}% % single bond at 1
+ \else\if\@tmpc V%(V) beta undefined
+ \yl@xdiff=37\relax
+ \yl@ydiff=30\relax
+ \putlatom{-157}{42}{\@memberb}% % left type
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(-5,3){120}% % single bond at 1
+ }%
+ \else\if\@tmpc U%(U) alpha undefined
+ \yl@xdiff=37\relax
+ \yl@ydiff=28\relax
+ \putlatom{-157}{-100}{\@memberb}% % left type
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(-5,-3){120}% % single bond at 1
+ }%
+ \fi\fi\fi\fi\fi
+ \fi\fi\fi\fi
+ \else\if\@tmpb D%double bond
+ \yl@xdiff=17\relax
+ \yl@ydiff=31\relax
+ \putlatom{-157}{-31}{\@memberb}% % left type only
+ \Put@Line(0,-12)(-1,0){140}% % double bond at 1
+ \Put@Line(0,12)(-1,0){140}% % double bond at 1
+ \else\if\@tmpb B%beta single bond
+ \yl@xdiff=17\relax
+ \yl@ydiff=31\relax
+ \putlatom{-157}{-31}{\@memberb}% % left type only
+ {%
+ \thicklines%
+ \Put@Line(0,0)(-1,0){140}% % single bond at 1
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=17\relax
+ \yl@ydiff=31\relax
+ \putlatom{-157}{-31}{\@memberb}% % left type only
+ \dotorline(0,0)(-1,0){140}/(0,0)(-140,0)%
+ \else\if\@tmpb U%undefined single bond
+ \yl@xdiff=17\relax
+ \yl@ydiff=31\relax
+ \putlatom{-157}{-31}{\@memberb}% % left type only
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(-1,0){140}% % single wave bond at 1
+ }%
+ \else\if\@tmpb F%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusefalse
+ \Put@Direct(0,0){\setatombondG}%
+ }%
+ \else\if\@tmpb G%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusefalse
+ \Put@Direct(0,0){\setatombondD}%
+ }%
+ \else%
+ \yl@xdiff=17\relax
+ \yl@ydiff=31\relax
+ \putlatom{-157}{-31}{\@memberb}% % left type only
+ \Put@Line(0,0)(-1,0){140}% % single bond at 1
+ \fi\fi\fi\fi%
+ \fi\fi\fi
+ \fi}%end of \@hsubsta
+% \end{macrocode}
+% \end{macro}
+%
+% The |\@hsubstb| command is used for placing a substituent (|\@memberb|) at
+% the 2-position (upper-left) of a vertical six-membered ring.
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/12/15}{Added bond modifiers: FA, FB, GA, GB, Su, Sd}
+% \changes{v4.03}{2005/07/20}{Wave bonds for stereochemistry: U, FU, GU, SU, SV}
+% \begin{macro}{\@hsubstb}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 2 %
+% %%%%%%%%%%%%%%%
+\def\@hsubstb{%
+ \if@bclip %clipping
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=53\relax
+ \yl@ydiff=5\relax
+ \putlratom{-37}{331}{\@memberb}%
+ \Put@Line(79,221)(-3,5){63}% % single bond at 2 (62=>63)
+ \else\if\@tmpc B%(B) beta
+ \yl@xdiff=0\relax
+ \yl@ydiff=21\relax
+ \putlatom{-41}{240}{\@memberb}% % left type
+ {%
+ \thicklines%
+ \Put@Line(59,201)(-5,3){100}% % single bond at 2
+ }%
+ \else\if\@tmpc A%(A) alpha
+ \yl@xdiff=30\relax
+ \yl@ydiff=-10\relax
+ \putratom{73}{331}{\@memberb}% % right type
+ \dotorline(103,221)(0,1){100}/(103,221)(103,321)%
+ \else\if\@tmpc u%(u) up --- (B) beta
+ \yl@xdiff=30\relax
+ \yl@ydiff=-10\relax
+ \putlratom{73}{331}{\@memberb}% % left-right type
+ {%
+ \thicklines%
+ \Put@Line(103,221)(0,1){100}% % single bond at 2
+ }%
+ \else\if\@tmpc d%(d) down --- (A) alpha
+ \yl@xdiff=0\relax
+ \yl@ydiff=21\relax
+ \putlatom{-41}{240}{\@memberb}% % left type
+ \dotorline(59,201)(-5,3){100}/(59,201)(-41,261)%
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=0\relax
+ \yl@ydiff=21\relax
+ \putlatom{-41}{240}{\@memberb}% % left type
+ \Put@Line(59,201)(-5,3){100}% % single bond at 2
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=30\relax
+ \yl@ydiff=-10\relax
+ \putlratom{73}{331}{\@memberb}% % left-right type
+ \Put@Line(103,221)(0,1){100}% % single bond at 2
+ \else\if\@tmpc V%(V) beta undefined
+ \yl@xdiff=0\relax
+ \yl@ydiff=21\relax
+ \putlatom{-41}{240}{\@memberb}% % left type
+ {%
+ \WaveBonds%
+ \Put@Line(59,201)(-5,3){100}% % single bond at 2
+ }%
+ \else\if\@tmpc U%(U) alpha undefined
+ \yl@xdiff=30\relax
+ \yl@ydiff=-10\relax
+ \putlratom{73}{331}{\@memberb}% % left-right type
+ {%
+ \WaveBonds%
+ \Put@Line(103,221)(0,1){100}% % single bond at 2
+ }%
+ \fi\fi\fi\fi\fi%
+ \fi\fi\fi\fi
+ \else\if\@tmpb D%double bond
+ \yl@xdiff=59\relax
+ \yl@ydiff=-13\relax
+ \putlratom{-37}{331}{\@memberb}%
+ \Put@Line(78,208)(-3,5){63}% % double bond at 2(62->63)
+ \Put@Line(100,219)(-3,5){63}% % double bond at 2(62->63)
+ \else\if\@tmpb B%beta single bond
+ \yl@xdiff=53\relax
+ \yl@ydiff=5\relax
+ \putlratom{-37}{331}{\@memberb}%
+ {%
+ \thicklines%
+ \Put@Line(79,221)(-3,5){63}% % single bond at 2 (62->63)
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=53\relax
+ \yl@ydiff=5\relax
+ \putlratom{-37}{331}{\@memberb}%
+ \dotorline(79,221)(-3,5){63}/(79,221)(16,326)%
+ \else\if\@tmpb U%undefined single bond
+ \yl@xdiff=53\relax
+ \yl@ydiff=5\relax
+ \putlratom{-37}{331}{\@memberb}%
+ {%
+ \WaveBonds%
+ \Put@Line(79,221)(-3,5){63}% % single wave bond at 1
+ }%
+ \else\if\@tmpb F%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusetrue
+ \Put@Direct(103,171){\setatombondh}%
+ }%
+ \else\if\@tmpb G%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusetrue
+ \Put@Direct(103,171){\setatombondF}%
+ }%
+ \else%
+ \yl@xdiff=53\relax
+ \yl@ydiff=5\relax
+ \putlratom{-37}{331}{\@memberb}%
+ \Put@Line(79,221)(-3,5){63}% % single bond at 2 (62->63)
+ \fi\fi\fi\fi%
+ \fi\fi\fi
+ \else%%no clipping
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=58\relax
+ \yl@ydiff=-21\relax
+ \putlratom{-27}{311}{\@memberb}%
+ \Put@Line(103,171)(-3,5){72}% % single bond at 2
+ \else\if\@tmpc B%(B) beta
+ \yl@xdiff=14\relax
+ \yl@ydiff=-3\relax
+ \putlatom{-31}{240}{\@memberb}% % left type
+ {%
+ \thicklines%
+ \Put@Line(103,171)(-5,3){120}% % single bond at 2
+ }%
+ \else\if\@tmpc A%(A) alpha
+ \yl@xdiff=30\relax
+ \yl@ydiff=-20\relax
+ \putlratom{73}{331}{\@memberb}% % left-right type
+ \dotorline(103,171)(0,1){140}/(103,171)(103,311)%
+ \else\if\@tmpc u%(u) up --- (B) beta
+ \yl@xdiff=30\relax
+ \yl@ydiff=-20\relax
+ \putlratom{73}{331}{\@memberb}% % left-right type
+ {%
+ \thicklines%
+ \Put@Line(103,171)(0,1){140}% % single bond at 2
+ }%
+ \else\if\@tmpc d%(d) down --- (A) alpha
+ \yl@xdiff=14\relax
+ \yl@ydiff=-3\relax
+ \putlatom{-31}{240}{\@memberb}% % left type
+ \dotorline(103,171)(-5,3){120}/(103,171)(-7,243)%
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=14\relax
+ \yl@ydiff=-3\relax
+ \putlatom{-31}{240}{\@memberb}% % left type
+ \Put@Line(103,171)(-5,3){120}% % single bond at 2
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=30\relax
+ \yl@ydiff=-20\relax
+ \putlratom{73}{331}{\@memberb}% % left-right type
+ \Put@Line(103,171)(0,1){140}% % single bond at 2
+ \else\if\@tmpc V%(V) beta undefined
+ \yl@xdiff=14\relax
+ \yl@ydiff=-3\relax
+ \putlatom{-31}{240}{\@memberb}% % left type
+ {%
+ \WaveBonds%
+ \Put@Line(103,171)(-5,3){120}% % single bond at 2
+ }%
+ \else\if\@tmpc U%(U) alpha undefined
+ \yl@xdiff=30\relax
+ \yl@ydiff=-20\relax
+ \putlratom{73}{331}{\@memberb}% % left-right type
+ {%
+ \WaveBonds%
+ \Put@Line(103,171)(0,1){140}% % single bond at 2
+ }%
+ \fi\fi\fi\fi\fi%
+ \fi\fi\fi\fi
+ \else\if\@tmpb D%double bond
+ \yl@xdiff=64\relax
+ \yl@ydiff=-21\relax
+ \putlratom{-27}{311}{\@memberb}%
+ \Put@Line(96,168)(-3,5){72}% % double bond at 2
+ \Put@Line(121,174)(-3,5){72}% % double bond at 2
+ \else\if\@tmpb B%beta single bond
+ \yl@xdiff=58\relax
+ \yl@ydiff=-21\relax
+ \putlratom{-27}{311}{\@memberb}%
+ {%
+ \thicklines%
+ \Put@Line(103,171)(-3,5){72}% % single bond at 2
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=58\relax
+ \yl@ydiff=-21\relax
+ \putlratom{-27}{311}{\@memberb}%
+ \dotorline(103,171)(-3,5){72}/(103,171)(31,291)%
+ \else\if\@tmpb U%undefined single bond
+ \yl@xdiff=58\relax
+ \yl@ydiff=-21\relax
+ \putlratom{-27}{311}{\@memberb}%
+ {%
+ \WaveBonds%
+ \Put@Line(103,171)(-3,5){72}% % single wave bond at 1
+ }%
+ \else\if\@tmpb F%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusefalse
+ \Put@Direct(103,171){\setatombondh}%
+ }%
+ \else\if\@tmpb G%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusefalse
+ \Put@Direct(103,171){\setatombondF}%
+ }%
+ \else%
+ \yl@xdiff=58\relax
+ \yl@ydiff=-21\relax
+ \putlratom{-27}{311}{\@memberb}%
+ \Put@Line(103,171)(-3,5){72}% % single bond at 2
+ \fi\fi\fi\fi%
+ \fi\fi\fi
+ \fi}% end of \@hsubstb
+% \end{macrocode}
+% \end{macro}
+%
+% The |\@hsubstc| command is used for placing a substituent (|\@memberb|) at
+% the 3-position (upper-right) of a vertical six-membered ring.
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/12/15}{Added bond modifiers: FA, FB, GA, GB, Su, Sd}
+% \changes{v4.03}{2005/07/20}{Wave bonds for stereochemistry: U, FU, GU, SU, SV}
+% \begin{macro}{\@hsubstc}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 3 %
+% %%%%%%%%%%%%%%%
+\def\@hsubstc{%
+ \if@cclip %clipping
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=33\relax
+ \yl@ydiff=5\relax
+ \putratom{373}{331}{\@memberb}%
+ \Put@Line(343,221)(3,5){63}% % single bond at 3 (62->63)
+ \else\if\@tmpc B%(B) beta
+ \yl@xdiff=0\relax
+ \yl@ydiff=21\relax
+ \putratom{443}{240}{\@memberb}% % right type
+ {%
+ \thicklines%
+ \Put@Line(343,201)(5,3){100}% % single bond at 3
+ }%
+ \else\if\@tmpc A%(A) alpha
+ \yl@xdiff=30\relax
+ \yl@ydiff=0\relax
+ \putlratom{273}{331}{\@memberb}% % left-right type
+ \dotorline(303,221)(0,1){110}/(303,221)(303,321)%
+ \else\if\@tmpc u%(u) up --- (B) beta
+ \yl@xdiff=30\relax
+ \yl@ydiff=0\relax
+ \putlratom{273}{331}{\@memberb}% % left-right type
+ {%
+ \thicklines%
+ \Put@Line(303,221)(0,1){100}% % single bond at 3
+ }%
+ \else\if\@tmpc d%(d) down --- (A) alpha
+ \yl@xdiff=0\relax
+ \yl@ydiff=21\relax
+ \putratom{443}{240}{\@memberb}% % right type
+ \dotorline(343,201)(5,3){100}/(343,201)(443,261)%
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=0\relax
+ \yl@ydiff=21\relax
+ \putratom{443}{240}{\@memberb}% % right type
+ \Put@Line(343,201)(5,3){100}% % single bond at 3
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=30\relax
+ \yl@ydiff=0\relax
+ \putlratom{273}{331}{\@memberb}% % left-right type
+ \Put@Line(303,221)(0,1){100}% % single bond at 3
+ \else\if\@tmpc V%(V) beta undefined
+ \yl@xdiff=0\relax
+ \yl@ydiff=21\relax
+ \putratom{443}{240}{\@memberb}% % right type
+ {%
+ \WaveBonds%
+ \Put@Line(343,201)(5,3){100}% % single bond at 3
+ }%
+ \else\if\@tmpc U%(U) alpha undefined
+ \yl@xdiff=30\relax
+ \yl@ydiff=0\relax
+ \putlratom{273}{331}{\@memberb}% % left-right type
+ {%
+ \WaveBonds%
+ \Put@Line(303,221)(0,1){100}% % single bond at 3
+ }%
+ \fi\fi\fi\fi\fi%
+ \fi\fi\fi\fi
+ \else\if\@tmpb D%double bond
+ \yl@xdiff=12\relax
+ \yl@ydiff=-18\relax
+ \putratom{373}{331}{\@memberb}%
+ \Put@Line(328,208)(3,5){63}% % double bond at 3
+ \Put@Line(303,214)(3,5){63}% % double bond at 3
+ \else\if\@tmpb B%beta single bond
+ \yl@xdiff=33\relax
+ \yl@ydiff=5\relax
+ \putratom{373}{331}{\@memberb}%
+ {%
+ \thicklines%
+ \Put@Line(343,221)(3,5){63}% % single bond at 3
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=33\relax
+ \yl@ydiff=5\relax
+ \putratom{373}{331}{\@memberb}%
+ \dotorline(343,221)(3,5){63}/(343,221)(406,326)%
+ \else\if\@tmpb U%undefined single bond
+ \yl@xdiff=33\relax
+ \yl@ydiff=5\relax
+ \putratom{373}{331}{\@memberb}%
+ {%
+ \WaveBonds%
+ \Put@Line(343,221)(3,5){63}% % single wave bond at 3
+ }%
+ \else\if\@tmpb F%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusetrue
+ \Put@Direct(303,171){\setatombondD}%
+ }%
+ \else\if\@tmpb G%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusetrue
+ \Put@Direct(303,171){\setatombondb}%
+ }%
+ \else%
+ \yl@xdiff=33\relax
+ \yl@ydiff=5\relax
+ \putratom{373}{331}{\@memberb}%
+ \Put@Line(343,221)(3,5){63}% % single bond at 3 (62->63)
+ \fi\fi\fi\fi%
+ \fi\fi\fi
+ \else%no clipping
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=12\relax
+ \yl@ydiff=-20\relax
+ \putratom{363}{311}{\@memberb}%
+ \Put@Line(303,171)(3,5){72}% % single bond at 3
+ \else\if\@tmpc B%(B) beta
+ \yl@xdiff=-20\relax
+ \yl@ydiff=3\relax
+ \putratom{443}{240}{\@memberb}% % right type
+ {%
+ \thicklines%
+ \Put@Line(303,171)(5,3){120}% % single bond at 3
+ }%
+ \else\if\@tmpc A%(A) alpha
+ \yl@xdiff=30\relax
+ \yl@ydiff=-20\relax
+ \putratom{273}{331}{\@memberb}% % right type
+ \dotorline(303,171)(0,1){140}/(303,171)(303,311)%
+ \else\if\@tmpc u%(u) up --- (B) beta
+ \yl@xdiff=30\relax
+ \yl@ydiff=-20\relax
+ \putratom{273}{331}{\@memberb}% % right type
+ {%
+ \thicklines%
+ \Put@Line(303,171)(0,1){140}% % single bond at 3
+ }%
+ \else\if\@tmpc d%(d) down --- (A) alpha
+ \yl@xdiff=-20\relax
+ \yl@ydiff=3\relax
+ \putratom{443}{240}{\@memberb}% % right type
+ \dotorline(303,171)(5,3){120}/(303,171)(423,243)%
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=-20\relax
+ \yl@ydiff=3\relax
+ \putratom{443}{240}{\@memberb}% % right type
+ \Put@Line(303,171)(5,3){120}% % single bond at 3
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=30\relax
+ \yl@ydiff=-20\relax
+ \putratom{273}{331}{\@memberb}% % right type
+ \Put@Line(303,171)(0,1){140}% % single bond at 3
+ \else\if\@tmpc V%(V) beta undefined
+ \yl@xdiff=-20\relax
+ \yl@ydiff=3\relax
+ \putratom{443}{240}{\@memberb}% % right type
+ {%
+ \WaveBonds%
+ \Put@Line(303,171)(5,3){120}% % single bond at 3
+ }%
+ \else\if\@tmpc U%(U) alpha undefined
+ \yl@xdiff=30\relax
+ \yl@ydiff=-20\relax
+ \putratom{273}{331}{\@memberb}% % right type
+ {%
+ \WaveBonds%
+ \Put@Line(303,171)(0,1){140}% % single bond at 3
+ }%
+ \fi\fi\fi\fi\fi%
+ \fi\fi\fi\fi%
+ \else\if\@tmpb D%double bond
+ \yl@xdiff=6\relax
+ \yl@ydiff=-20\relax
+ \putratom{363}{311}{\@memberb}%
+ \Put@Line(310,168)(3,5){72}% % double bond at 3
+ \Put@Line(284,174)(3,5){72}% % double bond at 3
+ \else\if\@tmpb B%beta single bond
+ \yl@xdiff=12\relax
+ \yl@ydiff=-20\relax
+ \putratom{363}{311}{\@memberb}%
+ {%
+ \thicklines%
+ \Put@Line(303,171)(3,5){72}% % single bond at 3
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=12\relax
+ \yl@ydiff=-20\relax
+ \putratom{363}{311}{\@memberb}%
+ \dotorline(303,171)(3,5){72}/(303,171)(375,291)%
+ \else\if\@tmpb U%undefined single bond
+ \yl@xdiff=12\relax
+ \yl@ydiff=-20\relax
+ \putratom{363}{311}{\@memberb}%
+ {%
+ \WaveBonds%
+ \Put@Line(303,171)(3,5){72}% % single wave bond at 3
+ }%
+ \else\if\@tmpb F%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusefalse
+ \Put@Direct(303,171){\setatombondD}%
+ }%
+ \else\if\@tmpb G%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusefalse
+ \Put@Direct(303,171){\setatombondb}%
+ }%
+ \else%
+ \yl@xdiff=12\relax
+ \yl@ydiff=-20\relax
+ \putratom{363}{311}{\@memberb}%
+ \Put@Line(303,171)(3,5){72}% % single bond at 3
+ \fi\fi\fi\fi%
+ \fi\fi\fi
+ \fi}% end of \@hsubstc
+% \end{macrocode}
+% \end{macro}
+%
+% The |\@hsubstd| command is used for placing a substituent (|\@memberb|) at
+% the 4-position (right-hand) of a vertical six-membered ring.
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/12/15}{Added bond modifiers: FA, FB, GA, GB, Su, Sd}
+% \changes{v4.03}{2005/07/20}{Wave bonds for stereochemistry: U, FU, GU, SU, SV}
+% \begin{macro}{\@substd}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 4 %
+% %%%%%%%%%%%%%%%
+\def\@hsubstd{%
+\if@clip %clipping
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=-17\relax
+ \yl@ydiff=31\relax
+ \putratom{563}{-31}{\@memberb}% % right type only
+ \Put@Line(436,0)(1,0){110}% % single bond at 4
+ \else\if\@tmpc B%(B) beta
+ \yl@xdiff=-27\relax
+ \yl@ydiff=36\relax
+ \putratom{563}{42}{\@memberb}% % right type only
+ {%
+ \thicklines%
+ \Put@Line(436,18)(5,3){100}% % single bond at 4
+ }%
+ \else\if\@tmpc A%(A) alpha
+ \yl@xdiff=-27\relax
+ \yl@ydiff=22\relax
+ \putratom{563}{-100}{\@memberb}% % right type only
+ \dotorline(436,-18)(5,-3){100}/(436,-18)(526,-72)%
+ \else\if\@tmpc u%(u) up --- (B) beta
+ \yl@xdiff=-27\relax
+ \yl@ydiff=22\relax
+ \putratom{563}{-100}{\@memberb}% % right type only
+ {%
+ \thicklines%
+ \Put@Line(436,-18)(5,-3){100}% % single bond at 4
+ }%
+ \else\if\@tmpc d%(d) down --- (A) alpha
+ \yl@xdiff=-27\relax
+ \yl@ydiff=36\relax
+ \putratom{563}{42}{\@memberb}% % right type only
+ \dotorline(436,18)(5,3){100}/(436,18)(536,78)%
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=-27\relax
+ \yl@ydiff=36\relax
+ \putratom{563}{42}{\@memberb}% % right type only
+ \Put@Line(436,18)(5,3){100}% % single bond at 4
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=-27\relax
+ \yl@ydiff=22\relax
+ \putratom{563}{-100}{\@memberb}% % right type only
+ \Put@Line(436,-18)(5,-3){100}% % single bond at 4
+ \else\if\@tmpc V%(V) beta undefined
+ \yl@xdiff=-27\relax
+ \yl@ydiff=36\relax
+ \putratom{563}{42}{\@memberb}% % right type only
+ {%
+ \WaveBonds%
+ \Put@Line(436,18)(5,3){100}% % single bond at 4
+ }%
+ \else\if\@tmpc U%(U) alpha undefined
+ \yl@xdiff=-27\relax
+ \yl@ydiff=22\relax
+ \putratom{563}{-100}{\@memberb}% % right type only
+ {%
+ \WaveBonds%
+ \Put@Line(436,-18)(5,-3){100}% % single bond at 4
+ }%
+ \fi\fi\fi\fi\fi%
+ \fi\fi\fi\fi
+ \else\if\@tmpb D%double bond
+ \yl@xdiff=-17\relax
+ \yl@ydiff=31\relax
+ \putratom{563}{-31}{\@memberb}% % right type only
+ \Put@Line(436,-12)(1,0){110}% % double bond at 4
+ \Put@Line(436,12)(1,0){110}% % double bond at 4
+ \else\if\@tmpb B%beta single bond
+ \yl@xdiff=-17\relax
+ \yl@ydiff=31\relax
+ \putratom{563}{-31}{\@memberb}% % right type only
+ {%
+ \thicklines%
+ \Put@Line(436,0)(1,0){110}% % single bond at 4
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=-17\relax
+ \yl@ydiff=31\relax
+ \putratom{563}{-31}{\@memberb}% % right type only
+ \dotorline(436,0)(1,0){110}/(436,0)(546,0)%
+ \else\if\@tmpb U%undefined single bond
+ \yl@xdiff=-17\relax
+ \yl@ydiff=31\relax
+ \putratom{563}{-31}{\@memberb}% % right type only
+ {%
+ \WaveBonds%
+ \Put@Line(436,0)(1,0){110}% % single wave bond at 3
+ }%
+ \else\if\@tmpb F%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusetrue
+ \Put@Direct(406,0){\setatombondF}%
+ }%
+ \else\if\@tmpb G%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusetrue
+ \Put@Direct(406,0){\setatombondE}%
+ }%
+ \else%
+ \yl@xdiff=-17\relax
+ \yl@ydiff=31\relax
+ \putratom{563}{-31}{\@memberb}% % right type only
+ \Put@Line(436,0)(1,0){110}% % single bond at 4
+ \fi\fi\fi\fi%
+ \fi\fi\fi
+\else%% no clipping
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=-17\relax
+ \yl@ydiff=31\relax
+ \putratom{563}{-31}{\@memberb}% % right type only
+ \Put@Line(406,0)(1,0){140}% % single bond at 4
+ \else\if\@tmpc B%(B) beta
+ \yl@xdiff=-37\relax
+ \yl@ydiff=30\relax
+ \putratom{563}{42}{\@memberb}% % right type only
+ {%
+ \thicklines%
+ \Put@Line(406,0)(5,3){120}% % single bond at 4
+ }%
+ \else\if\@tmpc A%(A) alpha
+ \yl@xdiff=-37\relax
+ \yl@ydiff=28\relax
+ \putratom{563}{-100}{\@memberb}% % right type only
+ \dotorline(406,0)(5,-3){120}/(406,0)(526,-72)%
+ \else\if\@tmpc u%(u) up --- (B) beta
+ \yl@xdiff=-37\relax
+ \yl@ydiff=28\relax
+ \putratom{563}{-100}{\@memberb}% % right type only
+ {%
+ \thicklines%
+ \Put@Line(406,0)(5,-3){120}% % single bond at 4
+ }%
+ \else\if\@tmpc d%(d) down --- (A) alpha
+ \yl@xdiff=-37\relax
+ \yl@ydiff=30\relax
+ \putratom{563}{42}{\@memberb}% % right type only
+ \dotorline(406,0)(5,3){120}/(406,0)(526,72)%
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=-37\relax
+ \yl@ydiff=30\relax
+ \putratom{563}{42}{\@memberb}% % right type only
+ \Put@Line(406,0)(5,3){120}% % single bond at 4
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=-37\relax
+ \yl@ydiff=28\relax
+ \putratom{563}{-100}{\@memberb}% % right type only
+ \Put@Line(406,0)(5,-3){120}% % single bond at 4
+ \else\if\@tmpc V%(V) beta undefined
+ \yl@xdiff=-37\relax
+ \yl@ydiff=30\relax
+ \putratom{563}{42}{\@memberb}% % right type only
+ {%
+ \WaveBonds%
+ \Put@Line(406,0)(5,3){120}% % single bond at 4
+ }%
+ \else\if\@tmpc U%(U) alpha undefined
+ \yl@xdiff=-37\relax
+ \yl@ydiff=28\relax
+ \putratom{563}{-100}{\@memberb}% % right type only
+ {%
+ \WaveBonds%
+ \Put@Line(406,0)(5,-3){120}% % single bond at 4
+ }%
+ \fi\fi\fi\fi\fi%
+ \fi\fi\fi\fi
+ \else\if\@tmpb D%double bond
+ \yl@xdiff=-17\relax
+ \yl@ydiff=31\relax
+ \putratom{563}{-31}{\@memberb}% % right type only
+ \Put@Line(406,-12)(1,0){140}% % double bond at 4
+ \Put@Line(406,12)(1,0){140}% % double bond at 4
+ \else\if\@tmpb B%beta single bond
+ \yl@xdiff=-17\relax
+ \yl@ydiff=31\relax
+ \putratom{563}{-31}{\@memberb}% % right type only
+ {%
+ \thicklines%
+ \Put@Line(406,0)(1,0){140}% % single bond at 4
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=-17\relax
+ \yl@ydiff=31\relax
+ \putratom{563}{-31}{\@memberb}% % right type only
+ \dotorline(406,0)(1,0){140}/(406,0)(546,0)%
+ \else\if\@tmpb U%undefined single bond
+ \yl@xdiff=-17\relax
+ \yl@ydiff=31\relax
+ \putratom{563}{-31}{\@memberb}% % right type only
+ {%
+ \WaveBonds%
+ \Put@Line(406,0)(1,0){140}% % single wave bond at 4
+ }%
+ \else\if\@tmpb F%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusefalse
+ \Put@Direct(406,0){\setatombondF}%
+ }%
+ \else\if\@tmpb G%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusefalse
+ \Put@Direct(406,0){\setatombondE}%
+ }%
+ \else%
+ \yl@xdiff=-17\relax
+ \yl@ydiff=31\relax
+ \putratom{563}{-31}{\@memberb}% % right type only
+ \Put@Line(406,0)(1,0){140}% % single bond at 4
+ \fi\fi\fi\fi%
+ \fi\fi\fi
+ \fi}% end of \@hsubstd
+% \end{macrocode}
+% \end{macro}
+%
+% The |\@hsubste| command is used for placing a substituent (|\@memberb|) at
+% the 5-position (lower-right) of a vertical six-membered ring.
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/12/15}{Added bond modifiers: FA, FB, GA, GB, Su, Sd}
+% \changes{v4.00}{2003/4/1}{Bug fix}
+% \changes{v4.03}{2005/07/20}{Wave bonds for stereochemistry: U, FU, GU, SU, SV}
+% \begin{macro}{\@hsubste}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 5 %
+% %%%%%%%%%%%%%%%
+\def\@hsubste{%
+ \if@eclip %clipping
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+% \yl@xdiff=43\relax
+ \yl@xdiff=33\relax
+ \yl@ydiff=76\relax
+% \putratom{363}{-402}{\@memberb}%
+ \putratom{373}{-402}{\@memberb}%
+ \Put@Line(343,-221)(3,-5){63}%% single bond at 5 (62=>63)
+ \else\if\@tmpc B%(B) beta
+ \yl@xdiff=0\relax
+ \yl@ydiff=41\relax
+ \putratom{443}{-301}{\@memberb}% % right type
+ {%
+ \thicklines%
+ \Put@Line(343,-201)(5,-3){100}% % single bond at 5
+ }%
+ \else\if\@tmpc A%(A) alpha
+% \yl@xdiff=20\relax
+ \yl@xdiff=30\relax
+ \yl@ydiff=71\relax
+% \putratom{283}{-402}{\@memberb}% % right type
+ \putlratom{273}{-402}{\@memberb}% % left-right type
+% \dotorline(303,-221)(0,-1){110}/(303,-221)(303,-321)%
+ \dotorline(303,-221)(0,-1){110}/(303,-221)(303,-311)%
+ \else\if\@tmpc u%(u) up --- (B) beta
+% \yl@xdiff=20\relax
+ \yl@xdiff=30\relax
+ \yl@ydiff=71\relax
+% \putratom{283}{-402}{\@memberb}% % right type
+ \putlratom{273}{-402}{\@memberb}% % left-right type
+ {%
+ \thicklines%
+ \Put@Line(303,-221)(0,-1){100}% % single bond at 5
+ }%
+ \else\if\@tmpc d%(d) down --- (A) alpha
+ \yl@xdiff=0\relax
+ \yl@ydiff=41\relax
+ \putratom{443}{-301}{\@memberb}% % right type
+ \dotorline(343,-201)(5,-3){100}/(343,-201)(443,-260)%
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=0\relax
+ \yl@ydiff=41\relax
+ \putratom{443}{-301}{\@memberb}% % right type
+ \Put@Line(343,-201)(5,-3){100}% % single bond at 5
+ \else\if\@tmpc a%(a) alpha
+% \yl@xdiff=20\relax
+ \yl@xdiff=30\relax
+ \yl@ydiff=71\relax
+% \putratom{283}{-402}{\@memberb}% % right type
+ \putratom{273}{-402}{\@memberb}% % left-right type
+ \Put@Line(303,-221)(0,-1){100}% % single bond at 5
+ \else\if\@tmpc V%(V) beta undefined
+ \yl@xdiff=0\relax
+ \yl@ydiff=41\relax
+ \putratom{443}{-301}{\@memberb}% % right type
+ {%
+ \WaveBonds%
+ \Put@Line(343,-201)(5,-3){100}% % single bond at 5
+ }%
+ \else\if\@tmpc U%(U) alpha undefined
+ \yl@xdiff=30\relax
+ \yl@ydiff=71\relax
+ \putratom{273}{-402}{\@memberb}% % left-right type
+ {%
+ \WaveBonds%
+ \Put@Line(303,-221)(0,-1){100}% % single bond at 5
+ }%
+ \fi\fi\fi\fi\fi%
+ \fi\fi\fi\fi
+ \else\if\@tmpb D%double bond
+% \yl@xdiff=22\relax
+ \yl@xdiff=12\relax
+ \yl@ydiff=82\relax
+% \putratom{363}{-402}{\@memberb}%
+ \putratom{373}{-402}{\@memberb}%
+ \Put@Line(328,-208)(3,-5){63}% % double bond at 5 (62->63)
+ \Put@Line(306,-224)(3,-5){63}% % double bond at 5 (62->63)
+ \else\if\@tmpb B%beta single bond
+% \yl@xdiff=43\relax
+ \yl@xdiff=33\relax
+ \yl@ydiff=76\relax
+% \putratom{363}{-402}{\@memberb}%
+ \putratom{373}{-402}{\@memberb}%
+ {%
+ \thicklines%
+ \Put@Line(343,-221)(3,-5){63}%% single bond at 5(62->63)
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=33\relax
+ \yl@ydiff=76\relax
+ \putratom{373}{-402}{\@memberb}%
+ \dotorline(343,-221)(3,-5){63}/(343,-221)(406,-326)%
+ \else\if\@tmpb U%undefined single bond
+ \yl@xdiff=33\relax
+ \yl@ydiff=76\relax
+ \putratom{373}{-402}{\@memberb}%
+ {%
+ \WaveBonds%
+ \Put@Line(343,-221)(3,-5){63}% % single wave bond at 5
+ }%
+ \else\if\@tmpb F%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusetrue
+ \Put@Direct(303,-171){\setatombondb}%
+ }%
+ \else\if\@tmpb G%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusetrue
+ \Put@Direct(303,-171){\setatombondG}%
+ }%
+ \else%
+% \yl@xdiff=43\relax
+ \yl@xdiff=33\relax
+ \yl@ydiff=76\relax
+% \putratom{363}{-402}{\@memberb}%
+ \putratom{373}{-402}{\@memberb}%
+ \Put@Line(343,-221)(3,-5){63}% % single bond at 5(62->63)
+ \fi\fi\fi\fi%
+ \fi\fi\fi
+ \else%no clipping
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=9\relax
+% \yl@ydiff=111\relax
+ \yl@ydiff=91\relax
+% \putratom{363}{-402}{\@memberb}%
+ \putratom{363}{-382}{\@memberb}%
+ \Put@Line(303,-171)(3,-5){72}% % single bond at 5
+ \else\if\@tmpc B%(B) beta
+ \yl@xdiff=-20\relax
+ \yl@ydiff=58\relax
+ \putratom{443}{-301}{\@memberb}% % right type
+ {%
+ \thicklines%
+ \Put@Line(303,-171)(5,-3){120}% % single bond at 5
+ }%
+ \else\if\@tmpc A%(A) alpha
+% \yl@xdiff=20\relax
+ \yl@xdiff=30\relax
+ \yl@ydiff=81\relax
+% \putratom{283}{-402}{\@memberb}% % right type
+ \putratom{273}{-402}{\@memberb}% % right type
+% \dotorline(303,-171)(0,-1){140}/(303,-171)(303,-321)%
+ \dotorline(303,-171)(0,-1){140}/(303,-171)(303,-311)%2002/5/30
+ \else\if\@tmpc u%(u) up --- (B) beta
+% \yl@xdiff=20\relax
+ \yl@xdiff=30\relax
+ \yl@ydiff=81\relax
+% \putratom{283}{-402}{\@memberb}% % right type
+ \putratom{273}{-402}{\@memberb}% % right type
+ {%
+ \thicklines%
+ \Put@Line(303,-171)(0,-1){140}% % single bond at 5
+ }%
+ \else\if\@tmpc d%(d) down --- (A) alpha
+ \yl@xdiff=-20\relax
+ \yl@ydiff=58\relax
+ \putratom{443}{-301}{\@memberb}% % right type
+ \dotorline(303,-171)(5,-3){120}/(303,-171)(423,-243)%
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=-20\relax
+ \yl@ydiff=58\relax
+ \putratom{443}{-301}{\@memberb}% % right type
+ \Put@Line(303,-171)(5,-3){120}% % single bond at 5
+ \else\if\@tmpc a%(a) alpha
+% \yl@xdiff=20\relax
+ \yl@xdiff=30\relax
+ \yl@ydiff=81\relax
+% \putratom{283}{-402}{\@memberb}% % right type
+ \putratom{273}{-402}{\@memberb}% % right type
+ \Put@Line(303,-171)(0,-1){140}% % single bond at 5
+ \else\if\@tmpc V%(V) beta undefined
+ \yl@xdiff=-20\relax
+ \yl@ydiff=58\relax
+ \putratom{443}{-301}{\@memberb}% % right type
+ {%
+ \WaveBonds%
+ \Put@Line(303,-171)(5,-3){120}% % single bond at 5
+ }%
+ \else\if\@tmpc U%(U) alpha undefined
+ \yl@xdiff=30\relax
+ \yl@ydiff=81\relax
+ \putratom{273}{-402}{\@memberb}% % right type
+ {%
+ \WaveBonds%
+ \Put@Line(303,-171)(0,-1){140}% % single bond at 5
+ }%
+ \fi\fi\fi\fi\fi%
+ \fi\fi\fi\fi
+ \else\if\@tmpb D%double bond
+ \yl@xdiff=3\relax
+% \yl@ydiff=111\relax
+ \yl@ydiff=91\relax
+ \putratom{363}{-382}{\@memberb}%
+% \putratom{363}{-402}{\@memberb}%
+ \Put@Line(310,-168)(3,-5){72}% % double bond at 5
+ \Put@Line(284,-174)(3,-5){72}% % double bond at 5
+ \else\if\@tmpb B%beta single bond
+ \yl@xdiff=9\relax
+% \yl@ydiff=111\relax
+ \yl@ydiff=91\relax
+ \putratom{363}{-382}{\@memberb}%
+% \putratom{363}{-402}{\@memberb}%
+ {%
+ \thicklines%
+ \Put@Line(303,-171)(3,-5){72}% % single bond at 5
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=9\relax
+ \yl@ydiff=91\relax
+ \putratom{363}{-382}{\@memberb}%
+ \dotorline(303,-171)(3,-5){72}/(303,-171)(375,-291)%
+ \else\if\@tmpb U%undefined single bond
+ \yl@xdiff=9\relax
+ \yl@ydiff=91\relax
+ \putratom{363}{-382}{\@memberb}%
+ {%
+ \WaveBonds%
+ \Put@Line(303,-171)(3,-5){72}% % single wave bond at 5
+ }%
+ \else\if\@tmpb F%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusefalse
+ \Put@Direct(303,-171){\setatombondb}%
+ }%
+ \else\if\@tmpb G%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusefalse
+ \Put@Direct(303,-171){\setatombondG}%
+ }%
+ \else%
+ \yl@xdiff=9\relax
+% \yl@ydiff=111\relax
+ \yl@ydiff=91\relax
+% \putratom{363}{-402}{\@memberb}%
+ \putratom{363}{-382}{\@memberb}%
+ \Put@Line(303,-171)(3,-5){72}% % single bond at 5
+ \fi\fi\fi\fi%
+ \fi\fi\fi
+ \fi}% end of \@hsubste
+% \end{macrocode}
+% \end{macro}
+%
+% The |\@hsubstf| command is used for placing a substituent (|\@memberb|) at
+% the 6-position (lower-left) of a vertical six-membered ring.
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/12/15}{Added bond modifiers: FA, FB, GA, GB, Su, Sd}
+% \changes{v4.03}{2005/07/20}{Wave bonds for stereochemistry: U, FU, GU, SU, SV}
+% \begin{macro}{\@hsubstf}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 6 %
+% %%%%%%%%%%%%%%%
+\def\@hsubstf{%
+ \if@fclip %clipping
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+% \yl@xdiff=43\relax
+ \yl@xdiff=53\relax
+ \yl@ydiff=76\relax
+% \putlratom{-27}{-402}{\@memberb}%
+ \putlratom{-37}{-402}{\@memberb}%
+ \Put@Line(79,-221)(-3,-5){63}% % single bond at 6 (62=>63)
+ \else\if\@tmpc B%(B) beta
+ \yl@xdiff=-10\relax
+ \yl@ydiff=40\relax
+ \putlatom{-31}{-301}{\@memberb}% % right type
+ {%
+ \thicklines%
+ \Put@Line(59,-201)(-5,-3){100}% % single bond at 6
+ }%
+ \else\if\@tmpc A%(A) alpha
+% \yl@xdiff=20\relax
+ \yl@xdiff=30\relax
+ \yl@ydiff=81\relax
+% \putratom{83}{-402}{\@memberb}% % right type
+ \putlratom{73}{-402}{\@memberb}% % left-right type
+ \dotorline(103,-221)(0,-1){100}/(103,-221)(103,-321)%
+ \else\if\@tmpc u%(u) up --- (B) beta
+% \yl@xdiff=20\relax
+ \yl@xdiff=30\relax
+ \yl@ydiff=81\relax
+% \putratom{83}{-402}{\@memberb}% % right type
+ \putlratom{73}{-402}{\@memberb}% % left-right type
+ {%
+ \thicklines%
+ \Put@Line(103,-221)(0,-1){100}% % single bond at 6
+ }%
+ \else\if\@tmpc d%(d) down --- (A) alpha
+ \yl@xdiff=-10\relax
+ \yl@ydiff=40\relax
+ \putlatom{-31}{-301}{\@memberb}% % right type
+ \dotorline(59,-201)(-5,-3){100}/(59,-201)(-41,-261)%
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=-10\relax
+ \yl@ydiff=40\relax
+ \putlatom{-31}{-301}{\@memberb}% % right type
+ \Put@Line(59,-201)(-5,-3){100}% % single bond at 6
+ \else\if\@tmpc a%(a) alpha
+% \yl@xdiff=20\relax
+ \yl@xdiff=30\relax
+ \yl@ydiff=81\relax
+% \putratom{83}{-402}{\@memberb}% % right type
+ \putratom{73}{-402}{\@memberb}% % right type
+ \Put@Line(103,-221)(0,-1){100}% % single bond at 6
+ \else\if\@tmpc V%(V) beta undefined
+ \yl@xdiff=-10\relax
+ \yl@ydiff=40\relax
+ \putlatom{-31}{-301}{\@memberb}% % right type
+ {%
+ \WaveBonds%
+ \Put@Line(59,-201)(-5,-3){100}% % single bond at 6
+ }%
+ \else\if\@tmpc U%(U) alpha undefined
+ \yl@xdiff=30\relax
+ \yl@ydiff=81\relax
+ \putratom{73}{-402}{\@memberb}% % right type
+ {%
+ \WaveBonds%
+ \Put@Line(103,-221)(0,-1){100}% % single bond at 6
+ }%
+ \fi\fi\fi\fi\fi
+ \fi\fi\fi\fi
+ \else\if\@tmpb D%double bond
+% \yl@xdiff=49\relax
+ \yl@xdiff=59\relax
+ \yl@ydiff=82\relax
+% \putlratom{-27}{-402}{\@memberb}%
+ \putlratom{-37}{-402}{\@memberb}%
+ \Put@Line(78,-208)(-3,-5){63}% % double bond at 6 (62->63)
+ \Put@Line(106,-219)(-3,-5){63}% % double bond at 6 (62->63)
+ \else\if\@tmpb B%beta single bond
+% \yl@xdiff=43\relax
+ \yl@xdiff=53\relax
+ \yl@ydiff=76\relax
+% \putlratom{-27}{-402}{\@memberb}%
+ \putlratom{-37}{-402}{\@memberb}%
+ {%
+ \thicklines%
+ \Put@Line(79,-221)(-3,-5){63}% % single bond at 6 (62=>63)
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=53\relax
+ \yl@ydiff=76\relax
+ \putlratom{-37}{-402}{\@memberb}%
+ \dotorline(79,-221)(-3,-5){63}/(79,-221)(16,-326)%
+ \else\if\@tmpb U%undefined single bond
+ \yl@xdiff=53\relax
+ \yl@ydiff=76\relax
+ \putlratom{-37}{-402}{\@memberb}%
+ {%
+ \WaveBonds%
+ \Put@Line(79,-221)(-3,-5){63}% % single wave bond at 6
+ }%
+ \else\if\@tmpb F%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusetrue
+ \Put@Direct(103,-171){\setatombondE}%
+ }%
+ \else\if\@tmpb G%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusetrue
+ \Put@Direct(103,-171){\setatombondh}%
+ }%
+ \else%
+% \yl@xdiff=43\relax
+ \yl@xdiff=53\relax
+ \yl@ydiff=76\relax
+% \putlratom{-27}{-402}{\@memberb}%
+ \putlratom{-37}{-402}{\@memberb}%
+ \Put@Line(79,-221)(-3,-5){63}% % single bond at 6(62->63)
+ \fi\fi\fi\fi%
+ \fi\fi\fi
+ \else%%no clipping
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+% \yl@xdiff=59\relax
+ \yl@xdiff=63\relax
+% \yl@ydiff=111\relax
+ \yl@ydiff=91\relax
+% \putlratom{-27}{-402}{\@memberb}%
+ \putlratom{-27}{-382}{\@memberb}%
+ \Put@Line(108,-171)(-3,-5){72}% % single bond at 6
+% \else\if\@tmpb B%beta single bond
+ \else\if\@tmpc B%beta single bond%1998/10/11 by S. Fujita
+ \yl@xdiff=8\relax
+ \yl@ydiff=58\relax
+ \putlatom{-31}{-301}{\@memberb}% % right type
+ {%
+ \thicklines%
+ \Put@Line(103,-171)(-5,-3){120}% % single bond at 6
+ }%
+ \else\if\@tmpc A%(A) alpha
+% \yl@xdiff=20\relax
+ \yl@xdiff=30\relax
+ \yl@ydiff=91\relax
+% \putratom{83}{-402}{\@memberb}% % right type
+ \putlratom{73}{-402}{\@memberb}% % left-right type
+ \dotorline(103,-171)(0,-1){140}/(103,-171)(103,-311)%
+ \else\if\@tmpc u%(u) up --- (B) beta
+% \yl@xdiff=20\relax
+ \yl@xdiff=30\relax
+ \yl@ydiff=91\relax
+% \putratom{83}{-402}{\@memberb}% % right type
+ \putlratom{73}{-402}{\@memberb}% % left-right type
+ {%
+ \thicklines%
+ \Put@Line(103,-171)(0,-1){140}% % single bond at 6
+ }%
+ \else\if\@tmpc d%(d) down --- (A) alpha
+ \yl@xdiff=8\relax
+ \yl@ydiff=58\relax
+ \putlatom{-31}{-301}{\@memberb}% % right type
+ \dotorline(103,-171)(-5,-3){120}/(103,-171)(-17,-243)%
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=8\relax
+ \yl@ydiff=58\relax
+ \putlatom{-31}{-301}{\@memberb}% % right type
+ \Put@Line(103,-171)(-5,-3){120}% % single bond at 6
+ \else\if\@tmpc a%(a) alpha
+% \yl@xdiff=20\relax
+ \yl@xdiff=30\relax
+ \yl@ydiff=91\relax
+% \putratom{83}{-402}{\@memberb}% % right type
+ \putlratom{73}{-402}{\@memberb}% % right-left type
+ \Put@Line(103,-171)(0,-1){140}% % single bond at 6
+ \else\if\@tmpc V%(V) beta undefined
+ \yl@xdiff=8\relax
+ \yl@ydiff=58\relax
+ \putlatom{-31}{-301}{\@memberb}% % right type
+ {%
+ \WaveBonds%
+ \Put@Line(103,-171)(-5,-3){120}% % single bond at 6
+ }%
+ \else\if\@tmpc U%(U) alpha undefined
+ \yl@xdiff=30\relax
+ \yl@ydiff=91\relax
+ \putlratom{73}{-402}{\@memberb}% % right-left type
+ {%
+ \WaveBonds%
+ \Put@Line(103,-171)(0,-1){140}% % single bond at 6
+ }%
+ \fi\fi\fi\fi\fi%
+ \fi\fi\fi\fi
+ \else\if\@tmpb D%double bond
+ \yl@xdiff=65\relax
+% \yl@ydiff=111\relax
+ \yl@ydiff=91\relax
+% \putlratom{-27}{-402}{\@memberb}%
+ \putlratom{-27}{-382}{\@memberb}%
+ \Put@Line(96,-168)(-3,-5){72}% % double bond at 6
+ \Put@Line(121,-174)(-3,-5){72}% % double bond at 6
+ \else\if\@tmpb B%beta single bond
+ \yl@xdiff=59\relax
+% \yl@ydiff=111\relax
+ \yl@ydiff=91\relax
+% \putlratom{-27}{-402}{\@memberb}%
+ \putlratom{-27}{-382}{\@memberb}%
+ \Put@Line(108,-171)(-3,-5){72}% % single bond at 6
+ {%
+ \thicklines%
+ \Put@Line(108,-171)(-3,-5){72}% % single bond at 6
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=59\relax
+ \yl@ydiff=91\relax
+ \putlratom{-27}{-382}{\@memberb}%
+ \dotorline(108,-171)(-3,-5){72}/(103,-171)(31,-291)%
+ \else\if\@tmpb U%undefined single bond
+ \yl@xdiff=59\relax
+ \yl@ydiff=91\relax
+ \putlratom{-27}{-382}{\@memberb}%
+ {%
+ \WaveBonds%
+ \Put@Line(108,-171)(-3,-5){72}% % single wave bond at 6
+ }%
+ \else\if\@tmpb F%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusefalse
+ \Put@Direct(103,-171){\setatombondE}%
+ }%
+ \else\if\@tmpb G%fused bond
+ {\let\@tmpb=\@tmpc\@clipfusefalse
+ \Put@Direct(103,-171){\setatombondh}%
+ }%
+ \else%
+ \yl@xdiff=59\relax
+% \yl@ydiff=111\relax
+ \yl@ydiff=91\relax
+% \putlratom{-27}{-402}{\@memberb}%
+ \putlratom{-27}{-382}{\@memberb}%
+ \Put@Line(108,-171)(-3,-5){72}% % single bond at 6
+ \fi\fi\fi\fi%
+ \fi\fi\fi
+ \fi}% end of \@hsubstf
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Setting-up substituents and bonds on a six-membered ring}
+%
+% The |\setsixringh| macro takes 5 arguments, which have the same meanings
+% as described in the definition of the |\setsixringv| macro.
+%
+% \begin{verbatim}
+% ****************************************************************
+% * setting of atoms and bonds on a horizontal six-membered ring *
+% ****************************************************************
+%
+% \setsixringh{SUBSLIST}{AD}{LOWER}{UPPER}{ORDER}
+%
+% \end{verbatim}
+%
+% The first argument |SUBSLIST| is a list of substituents, which is
+% represented in the standard format of \XyMTeX{}.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents (max 6 substitution positions)
+%
+% for n = 1 to 6
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+%
+% \end{verbatim}
+%
+% The second argument |AD| is an adjustment value, which adjusts the original
+% set of locant numbers into the standard one between 1 to 6 for drawing
+% a six-membered ring.
+% The effective range of the standared set of locant numbers is
+% restricted by the auguments |LOWER| and |UPPER|. A minus value of
+% the last argument shows the anti-clockwise numbering, while zero or
+% a plus value represents the clockwise numbering.
+%
+% \begin{verbatim}
+% AD : adjustment e.g. 0 for six-membered rings
+% LOWER : lower limit LOWER < effective range < UPPER
+% UPPER : upper limit
+% ORDER : >= 0 clockwise, <0 anti-clockwise
+%
+% \end{verbatim}
+%
+% \changes{v1.02}{1998/10/11}{Adding switches \cs{@yla} etc.}
+% \changes{v1.02}{1998/10/31}{Deleting switches \cs{@yla} etc.}
+%
+% \begin{macro}{\setsixringh}
+% \begin{macrocode}
+\def\setsixringh#1#2#3#4#5{%
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty\else%
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifx\@memberb\@yl\else
+\ifnum#5 < 0\relax%
+\@tmpaa=-\@tmpa\relax \advance\@tmpaa by#2\relax%
+\else\@tmpaa=\@tmpa\relax \advance\@tmpaa by#2\relax \fi
+\ifnum\@tmpaa >#3\relax%
+\ifnum\@tmpaa <#4\relax%
+\ifcase\@tmpaa%0 omit
+% \end{macrocode}
+%
+% The following commands are not used in a revised version
+% because of the direct use of |\ifx\@memberb\@yl\else...\fi|.
+%
+% \begin{macrocode}
+% %\or \if@yla\else\@hsubsta\fi% subst. on 1
+% %\or \if@ylb\else\@hsubstb\fi% subst. on 2
+% %\or \if@ylc\else\@hsubstc\fi% subst. on 3
+% %\or \if@yld\else\@hsubstd\fi% subst. on 4
+% %\or \if@yle\else\@hsubste\fi% subst. on 5
+% %\or \if@ylf\else\@hsubstf\fi% subst. on 6
+% \end{macrocode}
+%
+% \begin{macrocode}
+\or{\setbscolor\@hsubsta\addbscolor{}{}}% subst. on 1%2010/10/01
+\or{\setbscolor\@hsubstb\addbscolor{}{}}% subst. on 2%2010/10/01
+\or{\setbscolor\@hsubstc\addbscolor{}{}}% subst. on 3%2010/10/01
+\or{\setbscolor\@hsubstd\addbscolor{}{}}% subst. on 4%2010/10/01
+\or{\setbscolor\@hsubste\addbscolor{}{}}% subst. on 5%2010/10/01
+\or{\setbscolor\@hsubstf\addbscolor{}{}}% subst. on 6%2010/10/01
+\fi%end of ifcase
+\fi\fi\fi\fi}}% %end of setsixringh
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Mocros linking Substituents}
+% \subsection{Right-handed linking unit}
+%
+% A structure-drawing command can be used to typeset a substituent
+% by using a (yl)-argument. Moreover, the macro |\ryl| permits us
+% to draw an intermediate linking unit.
+% \changes{v1.02}{1998/10/25}{New command: \cs{ryl} etc.}
+%
+% \begin{macro}{\ryl}
+% \begin{macro}{\@ryl}
+% \begin{macrocode}
+\newcount\x@ryl
+\newcount\y@ryl
+\def\ryl{\@ifnextchar({\@ryl}{\@ryl()}}
+\def\@ryl(#1)#2{%
+\iniatom\iniflag%initialize
+\@reset@ylsw%
+\def\centeraaa{}%
+\x@ryl=0\y@ryl=0
+\@forsemicol\member:=#1\do{%
+\if@ylsw%
+\XyMTeXWarning{Duplicated items in the first augument of \string\ryl}%
+\else%
+\ifx\member\empty\else%
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\twoch@r\@membera{}%
+\settowidth{\dimen0}{\@memberb}%
+\x@ryl=\dimen0%%%dimension => counter
+\divide\x@ryl\unitlength
+\advance\x@ryl by-70
+\y@ryl=0
+\ifcase\@tmpa%
+\def\centeraaa{\@memberb}\@ylswtrue
+\advance\y@ryl by50
+\or%1
+\def\centeraaa{\@memberb}\@ylswtrue
+\advance\x@ryl by30
+\advance\y@ryl by50
+\or%2
+\def\centeraaa{\@memberb}\@ylswtrue
+\advance\x@ryl by40
+\advance\y@ryl by40
+\or%3
+\def\centeraaa{\@memberb}\@ylswtrue
+\advance\x@ryl by50
+\advance\y@ryl by30
+\or%4
+\def\centeraaa{\@memberb}\@ylswtrue
+\advance\x@ryl by50
+\advance\y@ryl by0
+\or%5
+\def\centeraaa{\@memberb}\@ylswtrue
+\advance\x@ryl by50
+\advance\y@ryl by-30
+\or%6
+\def\centeraaa{\@memberb}\@ylswtrue
+\advance\x@ryl by50
+\advance\y@ryl by-50
+\or%7
+\def\centeraaa{\@memberb}\@ylswtrue
+\advance\x@ryl by30
+\advance\y@ryl by-50
+\or%8
+\def\centeraaa{\@memberb}\@ylswtrue
+\advance\y@ryl by-50
+\fi
+\fi\fi}%
+ \yl@shiftii=\x@ryl
+ \yl@shifti=-\y@ryl
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{sfpicture}(0,0)(-\yl@shiftii,-\yl@shifti)%
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\ifx\centeraaa\empty\else%
+ \@clipfusetrue
+ \putlatom{40}{-30}{\centeraaa}% % left type
+\fi%
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\@forsemicol\member:=#2\do{%
+\ifx\member\empty\else%
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\let\local@tmpa=\@tmpa%global to local 2002/5/30 by SF
+\ifcase\local@tmpa%
+{\setbscolor\setatombonda\addbscolor{}{}}%2010/10/01%\setatombonda% 0 (upward) (0,1)
+\or{\setbscolor\setatombondF\addbscolor{}{}}%2010/10/01%\or\setatombondF%1 (3,5)
+\or{\setbscolor\setatombondA\addbscolor{}{}}%2010/10/01%\or\setatombondA%2 (1,1)
+\or{\setbscolor\setatombondf\addbscolor{}{}}%2010/10/01%\or\setatombondf%3 (5,3)
+\or{\setbscolor\setatombondb\addbscolor{}{}}%2010/10/01%\or\setatombondb%4 (1,0)
+\or{\setbscolor\setatombonde\addbscolor{}{}}%2010/10/01%\or\setatombonde%5 (5,-3)
+\or{\setbscolor\setatombondB\addbscolor{}{}}%2010/10/01%\or\setatombondB%6 (1,-1)
+\or{\setbscolor\setatombondE\addbscolor{}{}}%2010/10/01%\or\setatombondE%7 (3,-5)
+\or{\setbscolor\setatombondc\addbscolor{}{}}%2010/10/01%\or\setatombondc%8 (0,-1)
+\fi%end of ifcase
+\fi
+}\end{sfpicture}}% %end of \ryl macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The substituent-setting commands |\setatombondF| etc. are used
+% in the macro |\ryl|.
+% \changes{v4.03}{2005/07/20}{Concrete wave bonds for stereochemistry: FU, GU}
+%
+% \begin{macro}{\setatombondF}
+% \changes{v1.02}{1998/10/25}{New command: \cs{setatombondF}}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \begin{macrocode}
+\def\setatombondF{%% (3,5)
+ \if@clipfuse%
+ \if\@tmpb B%beta single bond
+ \yl@xdiff=10\relax
+ \yl@ydiff=-10\relax
+ {%
+ \thicklines%
+ \Put@Line(30,50)(3,5){60}% % single bond at 1
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=10\relax
+ \yl@ydiff=-10\relax
+ \dotorline(30,50)(3,5){60}/(30,50)(90,150)%
+ \else\if\@tmpb U%unspecified single bond
+ \yl@xdiff=10\relax
+ \yl@ydiff=-10\relax
+ {%
+ \WaveBonds%
+ \Put@Line(30,50)(3,5){60}% % single bond at 1
+ }%
+ \else\if\@tmpb S%beta single bond
+ \yl@xdiff=10\relax
+ \yl@ydiff=-10\relax
+ \Put@Line(30,50)(3,5){60}% % single bond at 1
+ \else\if\@tmpb D%double bond
+ \yl@xdiff=10\relax
+ \yl@ydiff=-10\relax
+ \Put@Line(40,44)(3,5){60}% % single bond at 1
+ \Put@Line(20,56)(3,5){60}% % single bond at 1
+ \else\if\@tmpb T%triple bond
+ \yl@xdiff=10\relax
+ \yl@ydiff=-10\relax
+ \Put@Line(45,41)(3,5){60}% % single bond at 1
+ \Put@Line(30,50)(3,5){60}% % single bond at 1
+ \Put@Line(15,59)(3,5){60}% % single bond at 1
+ \else\ifx\@tmpb\empty%beta single bond
+ \yl@xdiff=10\relax
+ \yl@ydiff=-10\relax
+ \Put@Line(30,50)(3,5){60}% % single bond at 1
+ \fi\fi\fi\fi\fi\fi\fi%
+ \putratom{80}{160}{\@memberb}% % right type
+ \else%no clipping
+ \if\@tmpb B%beta single bond
+ \yl@xdiff=10\relax
+ \yl@ydiff=-10\relax
+ {%
+ \thicklines%
+ \Put@Line(0,0)(3,5){90}% % single bond at 1
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=10\relax
+ \yl@ydiff=-10\relax
+ \dotorline(0,0)(3,5){90}/(0,0)(90,150)%
+ \else\if\@tmpb U%unspecified single bond
+ \yl@xdiff=10\relax
+ \yl@ydiff=-10\relax
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(3,5){90}% % single bond at 1
+ }%
+ \else\if\@tmpb S%beta single bond
+ \yl@xdiff=10\relax
+ \yl@ydiff=-10\relax
+ \Put@Line(0,0)(3,5){90}% % single bond at 1
+ \else\if\@tmpb D%beta single bond
+ \yl@xdiff=10\relax
+ \yl@ydiff=-10\relax
+ \Put@Line(10,-6)(3,5){90}% % single bond at 1
+ \Put@Line(-10,6)(3,5){90}% % single bond at 1
+ \else\if\@tmpb T%beta single bond
+ \yl@xdiff=10\relax
+ \yl@ydiff=-10\relax
+ \Put@Line(15,-9)(3,5){90}% % single bond at 1
+ \Put@Line(0,0)(3,5){90}% % single bond at 1
+ \Put@Line(-15,9)(3,5){90}% % single bond at 1
+ \else\ifx\@tmpb\empty%beta single bond
+ \yl@xdiff=10\relax
+ \yl@ydiff=-10\relax
+ \Put@Line(0,0)(3,5){90}% % single bond at 1
+ \fi\fi\fi\fi\fi\fi\fi%
+ \putratom{80}{160}{\@memberb}% % right type
+ \fi%
+}% end of \setatombondF
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\setatombondE}
+% \changes{v1.02}{1998/10/25}{New command: \cs{setatombondE}}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v4.03}{2005/07/20}{Concrete wave bonds for stereochemistry: FU, GU}
+% \begin{macrocode}
+\def\setatombondE{%% (3,-5)
+ \if@clipfuse%
+ \yl@xdiff=10\relax
+% \yl@ydiff=70\relax
+ \yl@ydiff=90\relax
+ \if\@tmpb B%beta single bond
+ {%
+ \thicklines%
+ \Put@Line(30,-50)(3,-5){60}% % single bond at 1
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \dotorline(30,-50)(3,-5){60}/(30,-50)(90,-150)%
+ \else\if\@tmpb U%unspecified single bond
+ {%
+ \WaveBonds%
+ \Put@Line(30,-50)(3,-5){60}% % single bond at 1
+ }%
+ \else\if\@tmpb S%beta single bond
+ \Put@Line(30,-50)(3,-5){60}% % single bond at 1
+ \else\if\@tmpb D%double bond
+ \Put@Line(40,-44)(3,-5){60}% % single bond at 1
+ \Put@Line(20,-56)(3,-5){60}% % single bond at 1
+ \else\if\@tmpb T%triple bond
+ \Put@Line(45,-41)(3,-5){60}% % single bond at 1
+ \Put@Line(30,-50)(3,-5){60}% % single bond at 1
+ \Put@Line(15,-59)(3,-5){60}% % single bond at 1
+ \else\ifx\@tmpb\empty%beta single bond
+ \Put@Line(30,-50)(3,-5){60}% % single bond at 1
+ \fi\fi\fi\fi\fi\fi\fi%
+% \putratom{80}{-220}{\@memberb}% % right type
+ \putratom{80}{-240}{\@memberb}% % right type
+ \else%no clipping
+ \yl@xdiff=10\relax
+% \yl@ydiff=70\relax
+ \yl@ydiff=90\relax
+ \if\@tmpb B%beta single bond
+ {%
+ \thicklines%
+ \Put@Line(0,0)(3,-5){90}% % single bond at 1
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \dotorline(0,0)(3,-5){90}/(0,0)(90,-150)%
+ \else\if\@tmpb U%unspecified single bond
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(3,-5){90}% % single bond at 1
+ }%
+ \else\if\@tmpb S%beta single bond
+ \Put@Line(0,0)(3,-5){90}% % single bond at 1
+ \else\if\@tmpb D%beta single bond
+ \Put@Line(10,6)(3,-5){90}% % single bond at 1
+ \Put@Line(-10,-6)(3,-5){90}% % single bond at 1
+ \else\if\@tmpb T%beta single bond
+ \Put@Line(15,9)(3,-5){90}% % single bond at 1
+ \Put@Line(0,0)(3,-5){90}% % single bond at 1
+ \Put@Line(-15,-9)(3,-5){90}% % single bond at 1
+ \else\ifx\@tmpb\empty%beta single bond
+ \Put@Line(0,0)(3,-5){90}% % single bond at 1
+ \fi\fi\fi\fi\fi\fi\fi%
+% \putratom{80}{-220}{\@memberb}% % right type
+ \putratom{80}{-240}{\@memberb}% % right type
+ \fi%
+}% end of \setatombondE
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\setatombondA}
+% \changes{v1.02}{1998/10/25}{New command: \cs{setatombondA}}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v4.03}{2005/07/20}{Concrete wave bonds for stereochemistry: FU, GU}
+% \begin{macrocode}
+\def\setatombondA{%% (1,1)
+ \yl@xdiff=0\relax
+ \yl@ydiff=0\relax
+ \if@clipfuse%
+ \if\@tmpb B%beta single bond
+ {%
+ \thicklines%
+ \Put@Line(40,40)(1,1){100}% % single bond at 1
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \dotorline(40,40)(1,1){100}/(40,40)(140,140)%
+ \else\if\@tmpb U%unspecified single bond
+ {%
+ \WaveBonds%
+ \Put@Line(40,40)(1,1){100}% % single bond at 1
+ }%
+ \else\if\@tmpb S%beta single bond
+ \Put@Line(40,40)(1,1){100}% % single bond at 1
+ \else\if\@tmpb D%double bond
+ \Put@Line(46,36)(1,1){100}% % single bond at 1
+ \Put@Line(36,46)(1,1){100}% % single bond at 1
+ \else\if\@tmpb T%triple bond
+ \Put@Line(50,30)(1,1){100}% % single bond at 1
+ \Put@Line(40,40)(1,1){100}% % single bond at 1
+ \Put@Line(30,50)(1,1){100}% % single bond at 1
+ \else\ifx\@tmpb\empty%beta single bond
+ \Put@Line(40,40)(1,1){100}% % single bond at 1
+ \fi\fi\fi\fi\fi\fi\fi%
+ \putratom{140}{140}{\@memberb}% % right type
+ \else%no clipping
+ \if\@tmpb B%beta single bond
+ {%
+ \thicklines%
+ \Put@Line(0,0)(1,1){120}% % single bond at 1
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \dotorline(0,0)(1,1){120}/(0,0)(120,120)%
+ \else\if\@tmpb U%unspecified single bond
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(1,1){120}% % single bond at 1
+ }%
+ \else\if\@tmpb S%beta single bond
+ \Put@Line(0,0)(1,1){120}% % single bond at 1
+ \else\if\@tmpb D%beta single bond
+ \Put@Line(6,-6)(1,1){120}% % single bond at 1
+ \Put@Line(-6,6)(1,1){120}% % single bond at 1
+ \else\if\@tmpb T%beta single bond
+ \Put@Line(10,-10)(1,1){120}% % single bond at 1
+ \Put@Line(0,0)(1,1){120}% % single bond at 1
+ \Put@Line(-10,10)(1,1){120}% % single bond at 1
+ \else\ifx\@tmpb\empty%beta single bond
+ \Put@Line(0,0)(1,1){120}% % single bond at 1
+ \fi\fi\fi\fi\fi\fi\fi%
+ \putratom{120}{120}{\@memberb}% % right type
+ \fi%
+}% end of \setatombondA
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\setatombondB}
+% \changes{v1.02}{1998/10/25}{New command: \cs{setatombondB}}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v4.03}{2005/07/20}{Concrete wave bonds for stereochemistry: FU, GU}
+% \begin{macrocode}
+\def\setatombondB{%% (1,-1)
+ \if@clipfuse%
+ \yl@xdiff=0\relax
+ \yl@ydiff=60\relax
+ \if\@tmpb B%beta single bond
+ {%
+ \thicklines%
+ \Put@Line(40,-40)(1,-1){100}% % single bond at 1
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \dotorline(40,-40)(1,-1){100}/(40,-40)(140,-140)%
+ \else\if\@tmpb U%unspecified single bond
+ {%
+ \WaveBonds%
+ \Put@Line(40,-40)(1,-1){100}% % single bond at 1
+ }%
+ \else\if\@tmpb S%beta single bond
+ \Put@Line(40,-40)(1,-1){100}% % single bond at 1
+ \else\if\@tmpb D%double bond
+ \Put@Line(46,-36)(1,-1){100}% % single bond at 1
+ \Put@Line(36,-46)(1,-1){100}% % single bond at 1
+ \else\if\@tmpb T%triple bond
+ \Put@Line(50,-30)(1,-1){100}% % single bond at 1
+ \Put@Line(40,-40)(1,-1){100}% % single bond at 1
+ \Put@Line(30,-50)(1,-1){100}% % single bond at 1
+ \else\ifx\@tmpb\empty%beta single bond
+ \Put@Line(40,-40)(1,-1){100}% % single bond at 1
+ \fi\fi\fi\fi\fi\fi\fi%
+ \putratom{140}{-200}{\@memberb}% % right type
+ \else%no clipping
+ \yl@xdiff=0\relax
+ \yl@ydiff=60\relax
+ \if\@tmpb B%beta single bond
+ {%
+ \thicklines%
+ \Put@Line(0,0)(1,-1){120}% % single bond at 1
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \dotorline(0,0)(1,-1){120}/(0,0)(120,-120)%
+ \else\if\@tmpb U%unspecified single bond
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(1,-1){120}% % single bond at 1
+ }%
+ \else\if\@tmpb S%beta single bond
+ \Put@Line(0,0)(1,-1){120}% % single bond at 1
+ \else\if\@tmpb D%beta single bond
+ \Put@Line(6,6)(1,-1){120}% % single bond at 1
+ \Put@Line(-6,-6)(1,-1){120}% % single bond at 1
+ \else\if\@tmpb T%beta single bond
+ \Put@Line(10,10)(1,-1){120}% % single bond at 1
+ \Put@Line(0,0)(1,-1){120}% % single bond at 1
+ \Put@Line(-10,-10)(1,-1){120}% % single bond at 1
+ \else\ifx\@tmpb\empty%beta single bond
+ \Put@Line(0,0)(1,-1){120}% % single bond at 1
+ \fi\fi\fi\fi\fi\fi\fi%
+ \putratom{120}{-180}{\@memberb}% % right type
+ \fi%
+}% end of \setatombondB
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Left-handed linking unit}
+%
+% A structure-drawing command can be used to typeset a substituent
+% by using a (yl)-argument. Moreover, the macro |\lyl| permits us
+% to draw an intermediate linking unit.
+% \changes{v1.02}{1998/10/25}{New command: \cs{lyl} etc.}
+% \begin{macro}{\lyl}
+% \begin{macrocode}
+\def\lyl{\@ifnextchar({\@lyl}{\@lyl()}}
+\def\@lyl(#1)#2{%
+\iniatom\iniflag%initialize
+\@reset@ylsw%
+\def\centeraaa{}%
+\x@ryl=0\y@ryl=0
+\@forsemicol\member:=#1\do{%
+\if@ylsw%
+\XyMTeXWarning{Duplicated items in the first augument of \string\ryl}%
+\else%
+\ifx\member\empty\else%
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\twoch@r\@membera{}%
+\settowidth{\dimen0}{\@memberb}%
+\x@ryl=\dimen0%%%dimension => counter
+\divide\x@ryl\unitlength
+\advance\x@ryl by-80
+\y@ryl=0
+\ifcase\@tmpa%
+\def\centeraaa{\@memberb}\@ylswtrue
+%\advance\x@ryl by0
+\advance\y@ryl by50
+\or%1
+\def\centeraaa{\@memberb}\@ylswtrue
+\advance\x@ryl by30
+\advance\y@ryl by50
+\or%2
+\def\centeraaa{\@memberb}\@ylswtrue
+\advance\x@ryl by40
+\advance\y@ryl by40
+\or%3
+\def\centeraaa{\@memberb}\@ylswtrue
+\advance\x@ryl by50
+\advance\y@ryl by30
+\or%4
+\def\centeraaa{\@memberb}\@ylswtrue
+\advance\x@ryl by50
+\advance\y@ryl by0
+\or%5
+\def\centeraaa{\@memberb}\@ylswtrue
+\advance\x@ryl by50
+\advance\y@ryl by-30
+\or%6
+\def\centeraaa{\@memberb}\@ylswtrue
+\advance\x@ryl by50
+\advance\y@ryl by-50
+\or%7
+\def\centeraaa{\@memberb}\@ylswtrue
+\advance\x@ryl by30
+\advance\y@ryl by-50
+\or%8
+\def\centeraaa{\@memberb}\@ylswtrue
+%\advance\x@ryl by0
+\advance\y@ryl by-50
+\fi
+\fi\fi}%
+ \yl@shiftii=-\x@ryl
+ \yl@shifti=-\y@ryl
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{sfpicture}(0,0)(-\yl@shiftii,-\yl@shifti)%
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\ifx\centeraaa\empty\else%
+ \@clipfusetrue
+ \putratom{-40}{-30}{\centeraaa}% % right type
+\fi%
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\@forsemicol\member:=#2\do{%
+\ifx\member\empty\else%
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\let\local@tmpa=\@tmpa%global to local 2002/5/30 by SF
+\ifcase\local@tmpa%
+{\setbscolor\setatombonda\addbscolor{}{}}%2010/10/01%\setatombonda% 0 (upward) (0,1)
+\or{\setbscolor\setatombondD\addbscolor{}{}}%2010/10/01%\or\setatombondD%1 (-3,5)
+\or{\setbscolor\setatombondH\addbscolor{}{}}%2010/10/01%\or\setatombondH%2 (-1,1)
+\or{\setbscolor\setatombondd\addbscolor{}{}}%2010/10/01%\or\setatombondd%3 (-5,3)
+\or{\setbscolor\setatombondh\addbscolor{}{}}%2010/10/01%\or\setatombondh%4 (-1,0)
+\or{\setbscolor\setatombondg\addbscolor{}{}}%2010/10/01%\or\setatombondg%5 (-5,-3)
+\or{\setbscolor\setatombondC\addbscolor{}{}}%2010/10/01%\or\setatombondC%6 (-1,-1)
+\or{\setbscolor\setatombondG\addbscolor{}{}}%2010/10/01%\or\setatombondG%7 (-3,-5)
+\or{\setbscolor\setatombondc\addbscolor{}{}}%2010/10/01%\or\setatombondc%8 (0,-1)
+\fi%end of ifcase
+\fi
+}\end{sfpicture}}% %end of \lyl macro
+% \end{macrocode}
+% \end{macro}
+%
+% The substituent-setting commands |\setatombondD| etc. are used
+% in the macro |\ryl|.
+%
+% \begin{macro}{\setatombondD}
+% \changes{v1.02}{1998/10/25}{New command: \cs{setatombondD}}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v4.03}{2005/07/20}{Concrete wave bonds for stereochemistry: FU, GU}
+% \begin{macrocode}
+\def\setatombondD{%% (-3,5)
+ \if@clipfuse%
+ \if\@tmpb B%beta single bond
+% \yl@xdiff=-10\relax
+ \yl@xdiff=10\relax
+ \yl@ydiff=-10\relax
+ {%
+ \thicklines%
+ \Put@Line(-30,50)(-3,5){60}% % single bond at 1
+ }%
+ \else\if\@tmpb A%alpha single bond
+% \yl@xdiff=-10\relax
+ \yl@xdiff=10\relax
+ \yl@ydiff=-10\relax
+ \dotorline(-30,50)(-3,5){60}/(-30,50)(-90,150)%
+ \else\if\@tmpb U%unspecified single bond
+% \yl@xdiff=-10\relax
+ \yl@xdiff=10\relax
+ \yl@ydiff=-10\relax
+ {%
+ \WaveBonds%
+ \Put@Line(-30,50)(-3,5){60}% % single bond at 1
+ }%
+ \else\if\@tmpb S%beta single bond
+% \yl@xdiff=-10\relax
+ \yl@xdiff=10\relax
+ \yl@ydiff=-10\relax
+ \Put@Line(-30,50)(-3,5){60}% % single bond at 1
+ \else\if\@tmpb D%double bond
+% \yl@xdiff=-10\relax
+ \yl@xdiff=10\relax
+ \yl@ydiff=-10\relax
+ \Put@Line(-40,44)(-3,5){60}% % single bond at 1
+ \Put@Line(-20,56)(-3,5){60}% % single bond at 1
+ \else\if\@tmpb T%triple bond
+% \yl@xdiff=-10\relax
+ \yl@xdiff=10\relax
+ \yl@ydiff=-10\relax
+ \Put@Line(-45,41)(-3,5){60}% % single bond at 1
+ \Put@Line(-30,50)(-3,5){60}% % single bond at 1
+ \Put@Line(-15,59)(-3,5){60}% % single bond at 1
+ \else\ifx\@tmpb\empty%beta single bond
+% \yl@xdiff=-10\relax
+ \yl@xdiff=10\relax
+ \yl@ydiff=-10\relax
+ \Put@Line(-30,50)(-3,5){60}% % single bond at 1
+ \fi\fi\fi\fi\fi\fi\fi%
+% \putlatom{-80}{160}{\@memberb}% % left type
+ \putlatom{-100}{160}{\@memberb}% % left type
+ \else%no clipping
+ \if\@tmpb B%beta single bond
+% \yl@xdiff=-10\relax
+ \yl@xdiff=10\relax
+ \yl@ydiff=-10\relax
+ {%
+ \thicklines%
+ \Put@Line(0,0)(-3,5){90}% % single bond at 1
+ }%
+ \else\if\@tmpb A%alpha single bond
+% \yl@xdiff=-10\relax
+ \yl@xdiff=10\relax
+ \yl@ydiff=-10\relax
+ \dotorline(0,0)(-3,5){90}/(0,0)(-90,150)%
+ \else\if\@tmpb U%unspecified single bond
+% \yl@xdiff=-10\relax
+ \yl@xdiff=10\relax
+ \yl@ydiff=-10\relax
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(-3,5){90}% % single bond at 1
+ }%
+ \else\if\@tmpb S%beta single bond
+% \yl@xdiff=-10\relax
+ \yl@xdiff=10\relax
+ \yl@ydiff=-10\relax
+ \Put@Line(0,0)(-3,5){90}% % single bond at 1
+ \else\if\@tmpb D%beta single bond
+% \yl@xdiff=-10\relax
+ \yl@xdiff=10\relax
+ \yl@ydiff=-10\relax
+ \Put@Line(-10,-6)(-3,5){90}% % single bond at 1
+ \Put@Line(10,6)(-3,5){90}% % single bond at 1
+ \else\if\@tmpb T%beta single bond
+% \yl@xdiff=-10\relax
+ \yl@xdiff=10\relax
+ \yl@ydiff=-10\relax
+ \Put@Line(-15,-9)(-3,5){90}% % single bond at 1
+ \Put@Line(0,0)(-3,5){90}% % single bond at 1
+ \Put@Line(15,9)(-3,5){90}% % single bond at 1
+ \else\ifx\@tmpb\empty%beta single bond
+% \yl@xdiff=-10\relax
+ \yl@xdiff=10\relax
+ \yl@ydiff=-10\relax
+ \Put@Line(0,0)(-3,5){90}% % single bond at 1
+ \fi\fi\fi\fi\fi\fi\fi%
+% \putlatom{-80}{160}{\@memberb}% % left type
+ \putlatom{-100}{160}{\@memberb}% % left type
+ \fi%
+}% end of \setatombondD
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\setatombondG}
+% \changes{v1.02}{1998/10/25}{New command: \cs{setatombondG}}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v4.03}{2005/07/20}{Concrete wave bonds for stereochemistry: FU, GU}
+% \begin{macrocode}
+\def\setatombondG{%% (-3,-5)
+ \if@clipfuse%
+ \yl@xdiff=-10\relax
+% \yl@ydiff=70\relax
+ \yl@ydiff=90\relax
+ \if\@tmpb B%beta single bond
+ {%
+ \thicklines%
+ \Put@Line(-30,-50)(-3,-5){60}% % single bond at 1
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \dotorline(-30,-50)(-3,-5){60}/(-30,-50)(-90,-150)%
+% \dotorline(-33,-55)(-3,-5){60}/(-30,-50)(-90,-150)%
+ \else\if\@tmpb U%unspecified single bond
+ {%
+ \WaveBonds%
+ \Put@Line(-30,-50)(-3,-5){60}% % single bond at 1
+ }%
+ \else\if\@tmpb S%beta single bond
+ \Put@Line(-30,-50)(-3,-5){60}% % single bond at 1
+ \else\if\@tmpb D%double bond
+ \Put@Line(-40,-44)(-3,-5){60}% % single bond at 1
+ \Put@Line(-20,-56)(-3,-5){60}% % single bond at 1
+ \else\if\@tmpb T%triple bond
+ \Put@Line(-45,-41)(-3,-5){60}% % single bond at 1
+ \Put@Line(-30,-50)(-3,-5){60}% % single bond at 1
+ \Put@Line(-15,-59)(-3,-5){60}% % single bond at 1
+ \else\ifx\@tmpb\empty%beta single bond
+ \Put@Line(-30,-50)(-3,-5){60}% % single bond at 1
+ \fi\fi\fi\fi\fi\fi\fi%
+% \putlatom{-80}{-220}{\@memberb}% % left type
+ \putlatom{-80}{-240}{\@memberb}% % left type
+ \else%no clipping
+ \yl@xdiff=-10\relax
+% \yl@ydiff=70\relax
+ \yl@ydiff=90\relax
+ \if\@tmpb B%beta single bond
+ {%
+ \thicklines%
+ \Put@Line(0,0)(-3,-5){90}% % single bond at 1
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \dotorline(0,0)(-3,-5){90}/(0,0)(-90,-150)%
+ \else\if\@tmpb U%unspecified single bond
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(-3,-5){90}% % single bond at 1
+ }%
+ \else\if\@tmpb S%beta single bond
+ \Put@Line(0,0)(-3,-5){90}% % single bond at 1
+ \else\if\@tmpb D%beta single bond
+ \Put@Line(-10,6)(-3,-5){90}% % single bond at 1
+ \Put@Line(10,-6)(-3,-5){90}% % single bond at 1
+ \else\if\@tmpb T%beta single bond
+ \Put@Line(-15,9)(-3,-5){90}% % single bond at 1
+ \Put@Line(0,0)(-3,-5){90}% % single bond at 1
+ \Put@Line(15,-9)(-3,-5){90}% % single bond at 1
+ \else\ifx\@tmpb\empty%beta single bond
+ \Put@Line(0,0)(-3,-5){90}% % single bond at 1
+ \fi\fi\fi\fi\fi\fi\fi%
+% \putlatom{-80}{-220}{\@memberb}% % left type
+ \putlatom{-80}{-240}{\@memberb}% % left type
+ \fi%
+}% end of \setatombondG
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\setatombondH}
+% \changes{v1.02}{1998/10/25}{New command: \cs{setatombondH}}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v4.03}{2005/07/20}{Concrete wave bonds for stereochemistry: FU, GU}
+% \begin{macrocode}
+\def\setatombondH{%% (-1,1)
+ \yl@xdiff=0\relax
+ \yl@ydiff=0\relax
+ \if@clipfuse%
+ \if\@tmpb B%beta single bond
+ {%
+ \thicklines%
+ \Put@Line(-40,40)(-1,1){100}% % single bond at 1
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \dotorline(-40,40)(-1,1){100}/(-40,40)(-140,140)%
+ \else\if\@tmpb U%unspecified single bond
+ {%
+ \WaveBonds%
+ \Put@Line(-40,40)(-1,1){100}% % single bond at 1
+ }%
+ \else\if\@tmpb S%beta single bond
+ \Put@Line(-40,40)(-1,1){100}% % single bond at 1
+ \else\if\@tmpb D%double bond
+ \Put@Line(-46,36)(-1,1){100}% % single bond at 1
+ \Put@Line(-36,46)(-1,1){100}% % single bond at 1
+ \else\if\@tmpb T%triple bond
+ \Put@Line(-50,30)(-1,1){100}% % single bond at 1
+ \Put@Line(-40,40)(-1,1){100}% % single bond at 1
+ \Put@Line(-30,50)(-1,1){100}% % single bond at 1
+ \else\ifx\@tmpb\empty%beta single bond
+ \Put@Line(-40,40)(-1,1){100}% % single bond at 1
+ \fi\fi\fi\fi\fi\fi\fi%
+ \putlatom{-140}{140}{\@memberb}% % left type
+ \else%no clipping
+ \if\@tmpb B%beta single bond
+ {%
+ \thicklines%
+ \Put@Line(0,0)(-1,1){120}% % single bond at 1
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \dotorline(0,0)(-1,1){120}/(0,0)(-120,120)%
+ \else\if\@tmpb U%unspecified single bond
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(-1,1){120}% % single bond at 1
+ }%
+ \else\if\@tmpb S%beta single bond
+ \Put@Line(0,0)(-1,1){120}% % single bond at 1
+ \else\if\@tmpb D%beta single bond
+ \Put@Line(-6,-6)(-1,1){120}% % single bond at 1
+ \Put@Line(6,6)(-1,1){120}% % single bond at 1
+ \else\if\@tmpb T%beta single bond
+ \Put@Line(-10,-10)(-1,1){120}% % single bond at 1
+ \Put@Line(0,0)(-1,1){120}% % single bond at 1
+ \Put@Line(10,10)(-1,1){120}% % single bond at 1
+ \else\ifx\@tmpb\empty%beta single bond
+ \Put@Line(0,0)(-1,1){120}% % single bond at 1
+ \fi\fi\fi\fi\fi\fi\fi%
+ \putlatom{-120}{120}{\@memberb}% % left type
+ \fi%
+}% end of \setatombondH
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\setatombondC}
+% \changes{v1.02}{1998/10/25}{New command: \cs{setatombondC}}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v4.03}{2005/07/20}{Concrete wave bonds for stereochemistry: FU, GU}
+% \begin{macrocode}
+\def\setatombondC{%% (-1,-1)
+ \if@clipfuse%
+ \yl@xdiff=0\relax
+ \yl@ydiff=60\relax
+ \if\@tmpb B%beta single bond
+ {%
+ \thicklines%
+ \Put@Line(-40,-40)(-1,-1){100}% % single bond at 1
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \dotorline(-40,-40)(-1,-1){100}/(-40,-40)(-140,-140)%
+ \else\if\@tmpb U%unspecified single bond
+ {%
+ \WaveBonds%
+ \Put@Line(-40,-40)(-1,-1){100}% % single bond at 1
+ }%
+ \else\if\@tmpb S%beta single bond
+ \Put@Line(-40,-40)(-1,-1){100}% % single bond at 1
+ \else\if\@tmpb D%double bond
+ \Put@Line(-46,-36)(-1,-1){100}% % single bond at 1
+ \Put@Line(-36,-46)(-1,-1){100}% % single bond at 1
+ \else\if\@tmpb T%triple bond
+ \Put@Line(-50,-30)(-1,-1){100}% % single bond at 1
+ \Put@Line(-40,-40)(-1,-1){100}% % single bond at 1
+ \Put@Line(-30,-50)(-1,-1){100}% % single bond at 1
+ \else\ifx\@tmpb\empty%beta single bond
+ \Put@Line(-40,-40)(-1,-1){100}% % single bond at 1
+ \fi\fi\fi\fi\fi\fi\fi%
+ \putlatom{-140}{-200}{\@memberb}% % left type
+ \else%no clipping
+ \yl@xdiff=0\relax
+ \yl@ydiff=60\relax
+ \if\@tmpb B%beta single bond
+ {%
+ \thicklines%
+ \Put@Line(0,0)(-1,-1){120}% % single bond at 1
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \dotorline(0,0)(-1,-1){120}/(0,0)(-120,-120)%
+ \else\if\@tmpb U%unspecified single bond
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(-1,-1){120}% % single bond at 1
+ }%
+ \else\if\@tmpb S%beta single bond
+ \Put@Line(0,0)(-1,-1){120}% % single bond at 1
+ \else\if\@tmpb D%beta single bond
+ \Put@Line(-6,6)(-1,-1){120}% % single bond at 1
+ \Put@Line(6,-6)(-1,-1){120}% % single bond at 1
+ \else\if\@tmpb T%beta single bond
+ \Put@Line(-10,10)(-1,-1){120}% % single bond at 1
+ \Put@Line(0,0)(-1,-1){120}% % single bond at 1
+ \Put@Line(10,-10)(-1,-1){120}% % single bond at 1
+ \else\ifx\@tmpb\empty%beta single bond
+ \Put@Line(0,0)(-1,-1){120}% % single bond at 1
+ \fi\fi\fi\fi\fi\fi\fi%
+ \putlatom{-120}{-180}{\@memberb}% % left type
+ \fi%
+}% end of \setatombondC
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Minor Linking Units}
+%
+% \begin{macro}{\ayl}
+% \begin{macrocode}
+\def\ayl{\@ifnextchar({\@ayl@}{\@ayl@(10,40)}}
+\def\@ayl@(#1,#2)#3{\begingroup\yl@xdiff=0 \yl@ydiff=0%
+\kern#1\unitlength\raise#2\unitlength\hbox to0pt{#3\hss}%
+\endgroup}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\upnobond}
+% \begin{macro}{\downnobond}
+% \begin{macrocode}
+\def\upnobond#1#2{%
+\hbox{\hbox to0.72em{\hss#1\hss}\kern-0.72em\raise2.2ex\hbox{#2}}}
+\def\downnobond#1#2{%
+\hbox{\hbox to0.72em{\hss#1\hss}\kern-0.72em\lower2.2ex\hbox{#2}}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\BiFunc}
+% \changes{v5.01}{2013/03/14}{\cs{BiFunc} added to biphenyl-type derivative}
+% The format (slope){length}{moietyA}{moietyB} supports the function for
+% linking moiety A and moiety B through a bond with a given slope.
+% \begin{macrocode}
+\def\BiFunc(#1,#2)#3#4#5{%
+\SlopetoXY(0,0)(#1,#2){#3}%
+\begin{picture}(\@tempcntXa,\@tempcntYa)(0,0)%
+\Put@Line(0,0)(#1,#2){#3}%
+\put(0,0){#4}%
+\put(\@tempcntXa,\@tempcntYa){#5}%
+\end{picture}}
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Spriro-Ring Commands}
+% \subsection{Basic Commands for Six-Membered Rings}
+%
+% For treating spiro-ring fusion, the following basic commands
+% (|\test@vertix| and |\test@vertix@sixv|) are added at the
+% time of releasing Version 2.00. These commands are generally
+% used for detecting hetero atoms at respective vertices of a
+% heterocyclic ring.
+%
+% The command |\test@vertix| is used in |\test@vertix@sixv|.
+% which is designed to test the existence of a hetero atom
+% (or an equivalent) at each vertix of a six-membered ring.
+%
+% \begin{macro}{\test@vertix}
+% \begin{macro}{\test@vertix@sixv}
+% \changes{v2.00}{1998/11/15}{New command: \cs{test@vertix} and
+% \cs{test@vertix@sixv}}
+% \changes{v4.03b}{2006/9/6}{\cs{ggg} is changed into \cs{gggA} for \cs{test@vertix} and
+% \cs{test@vertix@sixv}}
+% \begin{macrocode}
+\def\test@vertix#1{%
+ \def\tempG{#1}\relax%%%added 2006/9/6
+ \if\tempG g\relax
+ \expandafter\def\csname #1#1#1A\endcsname{@}%
+ \if\@tmpb h\relax
+ \expandafter\def\csname #1#1#1A\endcsname{@}%
+ \else\if\@tmpb s\relax
+ \expandafter\def\csname #1#1#1A\endcsname{}%
+ \fi\fi
+ \else
+ \expandafter\def\csname #1#1#1\endcsname{@}%
+ \if\@tmpb h\relax
+ \expandafter\def\csname #1#1#1\endcsname{@}%
+ \else\if\@tmpb s\relax
+ \expandafter\def\csname #1#1#1\endcsname{}%
+ \fi\fi
+ \fi
+}
+% \end{macrocode}
+%
+% The command |\test@vertix@sixv| is designed to test
+% the existence of a hetero atom (or an equivalent)
+% at each vertix of a six-membered ring.
+%
+% \begin{macrocode}
+\def\test@vertix@sixv#1#2#3#4#5#6#7{%
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty \relax\else%
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\twoCH@R\@membera//%
+\ifcase\@tmpa%
+% \changes{v2.00}{1996/11/14}{@ in place of a net value}
+ \or \test@vertix{#2}%
+ \or \test@vertix{#3}%
+ \or \test@vertix{#4}%
+ \or
+ \if\@tmpb a\relax%
+ \def\iii{@}%
+ \else
+ \test@vertix{#5}%
+ \fi
+ \or \test@vertix{#6}%
+ \or \test@vertix{#7}%
+\fi\fi}}% end of \test@vertix@sixv
+%\def\test@vertix@sixv#1#2#3#4#5#6#7{%
+%\@forsemicol\member:=#1\do{%
+%\expandafter\@m@mb@r\member;\relax%
+%\expandafter\twoch@r\@membera{}%
+%\ifcase\@tmpa%
+%% \changes{v2.00}{1996/11/14}{@ in place of a net value}
+% \or \test@vertix{#2}%
+% \or \test@vertix{#3}%
+% \or \test@vertix{#4}%
+% \or \test@vertix{#5}%
+% \or \test@vertix{#6}%
+% \or \test@vertix{#7}%
+%\fi}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The command |\set@hetatom@sixv| is to set a spiro group
+% (stored as |\@memberb|)
+% at a vertix designated by |\@tmpaa| (or originally by |\@tmpa|).
+% The atom modifier `s' designates that the spiro group contains
+% a carbon atom (a vertix) at a spiro position, while `h'
+% represents the presence of a hetero atom at a spiro position.
+% The absence of such atom modifiers shows the substitution
+% of a usual hetero atom. The command |\set@hetatom@sixv| is
+% used in such commands as |\sixheterov| and |\sixheterovi|
+% for treating thier ATOMLISTs,
+% e.g. |1==N;1s==\sixheterov{}{1==(yl)}|.
+%
+% \begin{macro}{\set@hetatom@sixv}
+% \changes{v2.00}{1998/11/15}{New command: \cs{set@hetatom@sixv}}
+% \begin{macrocode}
+\def\set@hetatom@sixv#1#2#3#4#5{%
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty \relax\else%
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\twoch@r\@membera{}\relax%
+\ifnum#5 < 0\relax%
+\@tmpaa=-\@tmpa\relax \advance\@tmpaa by#2\relax%
+\else\@tmpaa=\@tmpa\relax \advance\@tmpaa by#2\relax \fi
+\ifnum\@tmpaa >#3\relax%
+\ifnum\@tmpaa <#4\relax%
+\ifcase\@tmpaa \relax%
+\or%position 1
+ \if\@tmpb h\relax
+ \@acliptrue%
+ \putratom{0}{356}{\@memberb}% % right type
+ \else\if\@tmpb s\relax
+ \@aclipfalse%
+ \putratom{0}{406}{\@memberb}% % right type
+ \else\if\@tmpb a\relax%omit fused position
+ \else\relax
+ \@acliptrue%
+ \putratom{-31}{356}{\@memberb}% % right type
+ \fi\fi\fi
+\or%position 2
+ \if\@tmpb h\relax
+ \@bcliptrue%
+ \putratom{135}{280}{\@memberb}% % right type
+ \else\if\@tmpb s\relax
+ \@bclipfalse%
+ \putratom{175}{303}{\@memberb}% % right type
+ \else\if\@tmpb a\relax%omit fused position
+ \else\relax
+ \@bcliptrue%
+ \putratom{135}{280}{\@memberb}% % right type
+ \fi\fi\fi
+\or%position 3
+ \if\@tmpb h\relax
+ \@ccliptrue%
+ \putratom{135}{95}{\@memberb}% % right type
+ \else\if\@tmpb s\relax
+ \@cclipfalse%
+ \putratom{175}{103}{\@memberb}% % right type
+ \else\if\@tmpb a\relax%omit fused position
+ \else\relax
+ \@ccliptrue%
+ \putratom{135}{65}{\@memberb}% % right type
+ \fi\fi\fi
+\or%position 4
+ \if\@tmpb h\relax
+ \@cliptrue%
+ \putratom{0}{50}{\@memberb}% % right type
+ \else\if\@tmpb s\relax
+ \@clipfalse%
+ \putratom{0}{0}{\@memberb}% % right type
+ \else\if\@tmpb a\relax%omit fused position
+ \else\relax
+ \@cliptrue%
+ \putratom{-31}{-10}{\@memberb}% % right type
+ \fi\fi\fi
+\or%position 5
+ \if\@tmpb h\relax
+ \@ecliptrue%
+ \putlatom{-135}{95}{\@memberb}% % right type
+ \else\if\@tmpb s\relax
+ \@eclipfalse%
+ \putlatom{-175}{103}{\@memberb}% % right type
+ \else\if\@tmpb a\relax%omit fused position
+ \else\relax
+ \@ecliptrue%
+ \putlatom{-135}{65}{\@memberb}% % left type
+ \fi\fi\fi
+\or%position 6
+ \if\@tmpb h\relax
+ \@fcliptrue%
+ \putlatom{-135}{280}{\@memberb}% % right type
+ \else\if\@tmpb s\relax
+ \@fclipfalse%
+ \putlatom{-175}{303}{\@memberb}% % right type
+ \else\if\@tmpb a\relax%omit fused position
+ \else\relax
+ \@fcliptrue%
+ \putlatom{-135}{280}{\@memberb}% % left type
+ \fi\fi\fi
+\fi% end of ifcase
+\fi\fi\fi}}% end of the macro \set@hetatom@sixv
+% \end{macrocode}
+% \end{macro}
+%
+% The command |\set@hetatom@sixh| is to set a spiro group
+% (stored as |\@memberb|)
+% at a vertix designated by |\@tmpaa| (or originally by |\@tmpa|).
+% The atom modifier `s' designates that the spiro group contains
+% a carbon atom (a vertix) at a spiro position, while `h'
+% represents the presence of a hetero atom at a spiro position.
+% The absence of such atom modifiers shows the substitution
+% of a usual hetero atom. The command |\set@hetatom@sixh| is
+% used in such commands as |\sixheteroh| and |\sixheterohi|
+% for treating thier ATOMLISTs,
+% e.g. |1==N;1s==\sixheteroh{}{1==(yl)}|.
+%
+% \begin{macro}{\set@hetatom@sixh}
+% \changes{v2.00}{1998/11/23}{New command: \cs{set@hetatom@sixh}}
+% \begin{macrocode}
+\def\set@hetatom@sixh#1#2#3#4#5{%
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty\else%
+\expandafter\@m@mb@r\member;\relax%
+%\expandafter\twoch@r\@membera{}%
+\expandafter\twoCH@R\@membera//%
+\ifnum#5 < 0\relax%
+\@tmpaa=-\@tmpa\relax \advance\@tmpaa by#2\relax%
+\else\@tmpaa=\@tmpa\relax \advance\@tmpaa by#2\relax \fi
+\ifnum\@tmpaa >#3\relax%
+\ifnum\@tmpaa <#4\relax%
+\ifcase\@tmpaa%
+\or%position 1
+ \if\@tmpb h\relax
+ \@acliptrue%
+ \putlatom{60}{0}{\@memberb}% % left type
+ \else\if\@tmpb s\relax
+ \@aclipfalse%
+ \putlatom{0}{0}{\@memberb}% % left type
+ \else\if\@tmpb a\relax%omit fused position
+ \else
+ \@acliptrue%
+ \putlatom{60}{-36}{\@memberb}% % left type
+ \fi\fi\fi
+\or%position 2
+ \if\@tmpb h\relax
+ \@bcliptrue%
+ \putlatom{135}{141}{\@memberb}% % left type
+ \else\if\@tmpb s\relax
+ \@bclipfalse%
+ \putlatom{103}{171}{\@memberb}% % left type
+ \else\if\@tmpb a\relax%omit fused position
+ \else
+ \@bcliptrue%
+ \putlatom{135}{141}{\@memberb}% % left type
+ \fi\fi\fi
+\or%position 3
+ \if\@tmpb h\relax
+ \@ccliptrue%
+ \putratom{273}{141}{\@memberb}% % right type
+ \else\if\@tmpb s\relax
+ \@cclipfalse%
+ \putratom{303}{171}{\@memberb}% % right type
+ \else\if\@tmpb a\relax%omit fused position
+ \else
+ \@ccliptrue%
+ \putratom{273}{141}{\@memberb}% % right type
+ \fi\fi\fi
+\or%position 4
+ \if\@tmpb h\relax
+ \@cliptrue%
+ \putratom{346}{0}{\@memberb}% % right type
+ \else\if\@tmpb s\relax
+ \@clipfalse%
+ \putratom{406}{0}{\@memberb}% % right type
+ \else\if\@tmpb a\relax%omit fused position
+ \else
+ \@cliptrue%
+ \putratom{346}{-36}{\@memberb}% % right type
+ \fi\fi\fi
+\or%position 5
+ \if\@tmpb h\relax
+ \@ecliptrue%
+ \putratom{283}{-131}{\@memberb}% % right type
+ \else\if\@tmpb s\relax
+ \@eclipfalse%
+ \putratom{303}{-171}{\@memberb}% % right type
+ \else\if\@tmpb a\relax%omit fused position
+ \else
+ \@ecliptrue%
+ \putratom{273}{-211}{\@memberb}% % right type
+ \fi\fi\fi
+\or%position 6
+ \if\@tmpb h\relax
+ \@fcliptrue%
+ \putlatom{125}{-131}{\@memberb}% % left type
+ \else\if\@tmpb s\relax
+ \@fclipfalse%
+ \putlatom{103}{-171}{\@memberb}% % left type
+ \else\if\@tmpb a\relax%omit fused position
+ \else
+ \@fcliptrue%
+ \putlatom{135}{-211}{\@memberb}% % left type
+ \fi\fi\fi
+\fi% end of ifcase
+\fi\fi\fi}}% end of the macro \set@hetatom@sixh
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Basic Commands for Six-Six Rings}
+%
+% The command |\test@vertix@decav| is designed to test
+% the existence of a hetero atom (or an equivalent)
+% at each vertix of a six-six fused ring.
+%
+% \begin{macro}{\test@vertix@decav}
+% \begin{macrocode}
+\def\test@vertix@decav#1#2#3#4#5#6#7{%
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty\relax\else%
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\twoch@r\@membera{}%
+\ifcase\@tmpa \relax%
+ \or\or\or\or\or\or
+ \or \test@vertix{#2}%
+ \or
+ \if\@tmpb a\relax%
+ \def\jjj{@}%
+ \else
+ \test@vertix{#3}%
+ \fi
+ \or \test@vertix{#4}%
+ \or \test@vertix{#5}%
+% \or \test@vertix{#6}%
+% \or \test@vertix{#7}%
+\fi\fi}}
+% \end{macrocode}
+% \end{macro}
+%
+% The command |\set@vrtx@fuse| is to set an atom (stored as
+% |\@memberb|) at one (stored as |\@tmpa|) of the fused vertices
+% of a six-six ring.
+% These vertices are incapable of accomodating a spiro group.
+% On the other hand, the other positions can take spiro groups
+% (stored as |\@memberb|), which are treated by means of
+% the command |\set@hetatom@sixv|.
+% The command |\set@vrtx@fuse| is used in such commands
+% as |\decaheterov| for treating thier ATOMLISTs,
+%
+% \begin{macro}{\set@vrtx@fuse}
+% \changes{v2.00}{1998/11/15}{New command: \cs{set@vrtx@fuse}}
+% \changes{v2.01}{1998/11/15}{The prefix \cs{\global} are omitted.}
+% \begin{macrocode}
+\def\set@vrtx@fuse#1{%
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty\else%
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\twoch@r\@membera{}%
+\ifcase\@tmpa%
+ \or
+ \or
+ \or
+ \or%%%%4
+ \if\@tmpb a\relax%
+% \global\@icliptrue%
+ \@icliptrue%2001/06/20 by S. Fujita
+ \putlatom{207}{65}{\@memberb}% % left type
+ \else\relax
+ \fi
+ \or%5
+ \or%6
+ \or%7
+ \or%
+ \if\@tmpb a\relax%
+% \global\@jcliptrue%
+ \@jcliptrue%2001/06/20 by S. Fujita
+ \putlatom{207}{280}{\@memberb}% % left type
+ \else\relax
+ \fi
+\or%9 (= 4a)
+% \global\@icliptrue%
+ \@icliptrue%2001/06/20 by S. Fujita
+ \putlatom{207}{65}{\@memberb}% % left type
+\or%10 (= 8a)
+% \global\@jcliptrue%
+ \@jcliptrue%2001/06/20 by S. Fujita
+ \putlatom{207}{280}{\@memberb}% % left type
+\fi\fi}%
+}% end of the macro \set@vrtx@fuse
+% \end{macrocode}
+% \end{macro}
+%
+% The command |\set@vrtx@fuseh| is to set an atom (stored as
+% |\@memberb|) at one (stored as |\@tmpa|) of the fused vertices
+% of a six-six ring.
+% These vertices are incapable of accomodating a spiro group.
+% On the other hand, the other positions can take spiro groups
+% (stored as |\@memberb|), which are treated by means of
+% the command |\set@hetatom@sixh|.
+% The command |\set@vrtx@fuseh| is used in such commands
+% as |\decaheteroh| for treating thier ATOMLISTs,
+%
+% \begin{macro}{\set@vrtx@fuseh}
+% \changes{v2.00}{1998/11/15}{New command: \cs{set@vrtx@fuseh}}
+% \changes{v2.01}{1998/11/15}{The prefix \cs{\global} are omitted.}
+% \begin{macrocode}
+\def\set@vrtx@fuseh#1{%
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty\else%
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\twoCH@R\@membera//%
+\ifcase\@tmpa%
+ \or
+ \or
+ \or
+ \or%%%%4
+ \if\@tmpb a\relax%
+% \global\@icliptrue%
+ \@icliptrue%%2001/06/20 by S. Fujita
+ \putratom{273}{-211}{\@memberb}% % right type
+ \else\relax
+ \fi
+ \or%5
+ \or%6
+ \or%7
+ \or%
+ \if\@tmpb a\relax%
+% \global\@jcliptrue%
+ \@jcliptrue%2001/06/20 by S. Fujita%
+ \putlatom{135}{-211}{\@memberb}% % left type
+ \else\relax
+ \fi
+\or%9 (= 4a)
+ \ifx\@tmpb\empty\relax
+% \global\@icliptrue%
+ \@icliptrue%%2001/06/20 by S. Fujita
+ \putratom{273}{-211}{\@memberb}% % right type
+ \else
+ \XyMTeXWarning{Forbidden spiro ring for the 4a position}%
+ \fi
+\or%10 (= 8a)
+ \ifx\@tmpb\empty\relax
+% \global\@jcliptrue%
+ \@jcliptrue%%2001/06/20 by S. Fujita
+ \putlatom{135}{-211}{\@memberb}% % left type
+ \else
+ \XyMTeXWarning{Forbidden spiro ring for the 8a position}%
+ \fi
+\fi\fi}%
+}% end of the macro \set@vrtx@fuseh
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Ring-fusion Commands for Six-Membered Rings}
+% \subsection{Normal Vertical Type}
+%
+% The macro |\set@fusionadd@sixv| is an inner command contained
+% in the definition of |\sixheterov| etc., where
+% the macro is used for setting an additive
+% or a fused ring at each bond (designated by |\@@tmpa|). The
+% fused ring is typeset by the inner command |\set@fusion@sixv|.
+%
+% \begin{macro}{\set@fusionadd@sixv}
+% \changes{v2.00}{1998/11/15}{New command: \cs{set@fusionadd@sixv}}
+% \begin{macrocode}
+\def\set@fusionadd@sixv{%
+ \if\@@tmpa 1\relax%
+ \putratom{-38}{282}{\@@tmpb}% % right type
+ \else\if\@@tmpa 2\relax%
+ \putratom{60}{253}{\@@tmpb}% % right type
+ \else\if\@@tmpa 3\relax%
+ \putratom{60}{120}{\@@tmpb}% % right type
+ \else\if\@@tmpa 4\relax%
+ \putratom{-38}{88}{\@@tmpb}% % right type
+ \else\if\@@tmpa 6\relax%
+ \putratom{-90}{253}{\@@tmpb}% % right type
+ \else\if\@@tmpa 5\relax%
+ \putratom{-90}{120}{\@@tmpb}% % right type
+ \else
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+ \set@fusion@sixv
+ \fi\fi\fi\fi\fi\fi%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% The inner command |\set@fusion@sixv| is used for typesetting
+% a fused ring at each bond represented by |\@@tmpa|. Warnings
+% concerning mismatched ring-fusions are based on the command
+% |\FuseWarning|.
+%
+% \begin{macro}{\set@fusion@sixv}
+% \changes{v2.00}{1998/11/15}{New command: \cs{set@fusion@sixv}}
+% \begin{macrocode}
+\def\set@fusion@sixv{%
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+\if\@@tmpa d\relax%
+ \putlratom{0}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{d, h, or other}%
+ \else\if\@@tmpa D\relax%
+ \putlratom{-171}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{D, H, or other}%
+ \else\if\@@tmpa e\relax%
+ \putlratom{-171}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{0}{-200}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{e, k, or other}%
+ \else\if\@@tmpa E\relax%
+ \putlratom{-171}{303}{\@@tmpb}% % bond fused
+ \FuseWarning{0}{200}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{E, K, or other}%
+ \else\if\@@tmpa f\relax%
+ \putlratom{-171}{303}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{f, j, or other}%
+ \else\if\@@tmpa F\relax%
+ \putlratom{0}{406}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{F, J, or other}%
+ \else\if\@@tmpa a\relax%
+ \putlratom{0}{406}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a, i, or other}%
+ \else\if\@@tmpa A\relax%
+ \putlratom{171}{303}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A, I, or other}%
+ \else\if\@@tmpa b\relax%
+ \putlratom{171}{303}{\@@tmpb}% % bond fused
+ \FuseWarning{0}{200}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b, k, or other}%
+ \else\if\@@tmpa B\relax%
+ \putlratom{171}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{0}{-200}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B, K, or other}%
+ \else\if\@@tmpa c\relax%
+ \putlratom{171}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c, e, or other}%
+ \else\if\@@tmpa C\relax%
+ \putlratom{0}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C, E, or other}%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+}% end of the macro \set@fusion@sixv
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Inverse Vertical Type}
+%
+% The macro |\set@fusionadd@sixvi| is an inner command contained
+% in the definition of |\sixheterovi| etc., where
+% the macro is used for setting an additive
+% or a fused ring at each bond (designated by |\@@tmpa|). The
+% fused ring is typeset by the inner command |\set@fusion@sixvi|.
+%
+% \begin{macro}{\set@fusionadd@sixvi}
+% \changes{v2.00}{1998/11/15}{New command: \cs{set@fusionadd@sixvi}}
+% \begin{macrocode}
+\def\set@fusionadd@sixvi{%
+ \if\@@tmpa 4\relax%
+ \putratom{-38}{282}{\@@tmpb}% % right type
+ \else\if\@@tmpa 3\relax%
+ \putratom{60}{253}{\@@tmpb}% % right type
+ \else\if\@@tmpa 2\relax%
+ \putratom{60}{120}{\@@tmpb}% % right type
+ \else\if\@@tmpa 1\relax%
+ \putratom{-38}{88}{\@@tmpb}% % right type
+ \else\if\@@tmpa 5\relax%
+ \putratom{-90}{253}{\@@tmpb}% % right type
+ \else\if\@@tmpa 6\relax%
+ \putratom{-90}{120}{\@@tmpb}% % right type
+ \else
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+ \set@fusion@sixvi
+ \fi\fi\fi\fi\fi\fi%
+}% end of the macro \set@fusionadd@sixvi
+% \end{macrocode}
+% \end{macro}
+%
+% The inner command |\set@fusion@sixvi| is used for typesetting
+% a fused ring at each bond represented by |\@@tmpa|. Warnings
+% concerning mismatched ring-fusions are based on the command
+% |\FuseWarning|.
+%
+% \begin{macro}{\set@fusion@sixvi}
+% \changes{v2.00}{1998/11/15}{New command: \cs{set@fusion@sixvi}}
+% \begin{macrocode}
+\def\set@fusion@sixvi{%
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+ \if\@@tmpa a\relax%
+ \putlratom{0}{0}{\@@tmpb}% % right type
+ \FuseWarning{-171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a or other}%
+ \else\if\@@tmpa A\relax%
+ \putlratom{171}{103}{\@@tmpb}% % right type
+ \FuseWarning{171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A or other}%
+ \else\if\@@tmpa b\relax%
+ \putlratom{171}{103}{\@@tmpb}% % right type
+ \FuseWarning{0}{-200}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b or other}%
+ \else\if\@@tmpa B\relax%
+ \putlratom{171}{303}{\@@tmpb}% % right type
+ \FuseWarning{0}{200}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B or other}%
+ \else\if\@@tmpa c\relax%
+ \putlratom{171}{303}{\@@tmpb}% % right type
+ \FuseWarning{171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c or other}%
+ \else\if\@@tmpa C\relax%
+ \putlratom{0}{406}{\@@tmpb}% % right type
+ \FuseWarning{-171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C or other}%
+ \else\if\@@tmpa d\relax%
+ \putlratom{0}{406}{\@@tmpb}% % right type
+ \FuseWarning{171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{d or other}%
+ \else\if\@@tmpa D\relax%
+ \putlratom{-171}{303}{\@@tmpb}% % right type
+ \FuseWarning{-171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{D or other}%
+ \else\if\@@tmpa e\relax%
+ \putlratom{-171}{303}{\@@tmpb}% % right type
+ \FuseWarning{0}{200}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{e or other}%
+ \else\if\@@tmpa E\relax%
+ \putlratom{-171}{103}{\@@tmpb}% % right type
+ \FuseWarning{0}{-200}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{E or other}%
+ \else\if\@@tmpa f\relax%
+ \putlratom{-171}{103}{\@@tmpb}% % right type
+ \FuseWarning{171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{f or other}%
+ \else\if\@@tmpa F\relax%
+ \putlratom{0}{0}{\@@tmpb}% % right type
+ \FuseWarning{-171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{F or other}%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+}% end of the marcro \set@fusion@sixvi
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Normal Horizontal Type}
+%
+% The macro |\set@fusionadd@sixh| is an inner command contained
+% in the definition of |\sixheteroh| etc., where
+% the macro is used for setting an additive
+% or a fused ring at each bond (designated by |\@@tmpa|). The
+% fused ring is typeset by the inner command |\set@fusion@sixh|.
+%
+% \begin{macro}{\set@fusionadd@sixh}
+% \changes{v2.00}{1998/11/23}{New command: \cs{set@fusionadd@sixh}}
+% \begin{macrocode}
+\def\set@fusionadd@sixh{%
+ \if\@@tmpa 4\relax%
+ \putratom{272}{-18}{\@@tmpb}% % right type
+ \else\if\@@tmpa 1\relax%
+ \putratom{68}{-18}{\@@tmpb}% % right type
+ \else\if\@@tmpa 3\relax%
+ \putratom{233}{60}{\@@tmpb}% % right type
+ \else\if\@@tmpa 2\relax%
+ \putratom{120}{60}{\@@tmpb}% % right type
+ \else\if\@@tmpa 5\relax%
+ \putratom{233}{-110}{\@@tmpb}% % right type
+ \else\if\@@tmpa 6\relax%
+ \putratom{120}{-110}{\@@tmpb}% % right type
+ \else
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+ \set@fusion@sixh
+ \fi\fi\fi\fi\fi\fi%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% The inner command |\set@fusion@sixh| is used for typesetting
+% a fused ring at each bond represented by |\@@tmpa|. Warnings
+% concerning mismatched ring-fusions are based on the command
+% |\FuseWarning|.
+%
+% \begin{macro}{\set@fusion@sixh}
+% \changes{v2.00}{1998/11/23}{New command: \cs{set@fusion@sixh}}
+% \begin{macrocode}
+\def\set@fusion@sixh{%
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+\if\@@tmpa d\relax%
+ \putlratom{406}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{103}{171}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{d, h, or other}%
+ \else\if\@@tmpa D\relax%
+ \putlratom{303}{-171}{\@@tmpb}% % bond fused
+ \FuseWarning{-103}{-171}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{D, H, or other}%
+ \else\if\@@tmpa e\relax%
+ \putlratom{303}{-171}{\@@tmpb}% % bond fused
+ \FuseWarning{200}{0}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{e, k, or other}%
+ \else\if\@@tmpa E\relax%
+ \putlratom{103}{-171}{\@@tmpb}% % bond fused
+ \FuseWarning{-200}{0}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{E, K, or other}%
+ \else\if\@@tmpa f\relax%
+ \putlratom{103}{-171}{\@@tmpb}% % bond fused
+ \FuseWarning{103}{-171}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{f, j, or other}%
+ \else\if\@@tmpa F\relax%
+ \putlratom{0}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{-103}{171}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{F, J, or other}%
+ \else\if\@@tmpa a\relax%
+ \putlratom{0}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{-103}{-171}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a, i, or other}%
+ \else\if\@@tmpa A\relax%
+ \putlratom{103}{171}{\@@tmpb}% % bond fused
+ \FuseWarning{103}{171}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A, I, or other}%
+ \else\if\@@tmpa b\relax%
+ \putlratom{103}{171}{\@@tmpb}% % bond fused
+ \FuseWarning{-200}{0}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b, k, or other}%
+ \else\if\@@tmpa B\relax%
+ \putlratom{303}{171}{\@@tmpb}% % bond fused
+ \FuseWarning{200}{0}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B, K, or other}%
+ \else\if\@@tmpa c\relax%
+ \putlratom{303}{171}{\@@tmpb}% % bond fused
+ \FuseWarning{-103}{171}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c, e, or other}%
+ \else\if\@@tmpa C\relax%
+ \putlratom{406}{0}{\@@tmpb}% % bond fused
+% \FuseWarning{103}{171}%
+ \FuseWarning{103}{-171}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C, E, or other}%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+}% end of the macro \set@fusion@sixh
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Inverse Horizontal Type}
+%
+% The macro |\set@fusionadd@sixhi| is an inner command contained
+% in the definition of |\sixheterohi| etc., where
+% the macro is used for setting an additive
+% or a fused ring at each bond (designated by |\@@tmpa|). The
+% fused ring is typeset by the inner command |\set@fusion@sixhi|.
+%
+% \begin{macro}{\set@fusionadd@sixhi}
+% \changes{v2.00}{1998/11/29}{New command: \cs{set@fusionadd@sixhi}}
+% \begin{macrocode}
+\def\set@fusionadd@sixhi{%
+ \if\@@tmpa 1\relax%
+ \putratom{272}{-18}{\@@tmpb}% % right type
+ \else\if\@@tmpa 4\relax%
+ \putratom{68}{-18}{\@@tmpb}% % right type
+ \else\if\@@tmpa 2\relax%
+ \putratom{233}{60}{\@@tmpb}% % right type
+ \else\if\@@tmpa 3\relax%
+ \putratom{120}{60}{\@@tmpb}% % right type
+ \else\if\@@tmpa 6\relax%
+ \putratom{233}{-110}{\@@tmpb}% % right type
+ \else\if\@@tmpa 5\relax%
+ \putratom{120}{-110}{\@@tmpb}% % right type
+ \else
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+ \set@fusion@sixhi
+ \fi\fi\fi\fi\fi\fi%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% The inner command |\set@fusion@sixhi| is used for typesetting
+% a fused ring at each bond represented by |\@@tmpa|. Warnings
+% concerning mismatched ring-fusions are based on the command
+% |\FuseWarning|.
+%
+% \begin{macro}{\set@fusion@sixhi}
+% \changes{v2.00}{1998/11/23}{New command: \cs{set@fusion@sixhi}}
+% \begin{macrocode}
+\def\set@fusion@sixhi{%
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+\if\@@tmpa F\relax%
+ \putlratom{406}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{103}{171}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{F, J, or other}%
+ \else\if\@@tmpa f\relax%
+ \putlratom{303}{-171}{\@@tmpb}% % bond fused
+ \FuseWarning{-103}{-171}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{f, j, or other}%
+ \else\if\@@tmpa E\relax%
+ \putlratom{303}{-171}{\@@tmpb}% % bond fused
+ \FuseWarning{200}{0}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{E, K, or other}%
+ \else\if\@@tmpa e\relax%
+ \putlratom{103}{-171}{\@@tmpb}% % bond fused
+ \FuseWarning{-200}{0}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{e, k, or other}%
+ \else\if\@@tmpa D\relax%
+ \putlratom{103}{-171}{\@@tmpb}% % bond fused
+ \FuseWarning{103}{-171}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{D, H, or other}%
+ \else\if\@@tmpa d\relax%
+ \putlratom{0}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{-103}{171}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{d, h, or other}%
+ \else\if\@@tmpa C\relax%
+ \putlratom{0}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{-103}{-171}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C, E, or other}%
+ \else\if\@@tmpa c\relax%
+ \putlratom{103}{171}{\@@tmpb}% % bond fused
+ \FuseWarning{103}{171}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c, e, or other}%
+ \else\if\@@tmpa B\relax%
+ \putlratom{103}{171}{\@@tmpb}% % bond fused
+ \FuseWarning{-200}{0}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B, K, or other}%
+ \else\if\@@tmpa b\relax%
+ \putlratom{303}{171}{\@@tmpb}% % bond fused
+ \FuseWarning{200}{0}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b, k, or other}%
+ \else\if\@@tmpa A\relax%
+ \putlratom{303}{171}{\@@tmpb}% % bond fused
+ \FuseWarning{-103}{171}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A, I, or other}%
+ \else\if\@@tmpa a\relax%
+ \putlratom{406}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{103}{-171}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a, i, or other}%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+}% end of the macro \set@fusion@sixhi
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Ring-fusion Commands for Six-Six Fused Rings}
+% \subsection{Conventions for Warning}
+%
+% \begin{macro}{\UnfavorableFusion}
+% \changes{v2.00}{1998/12/23}{New command: \cs{UnfavorableFusion}}
+% \begin{macrocode}
+\def\UnfavorableFusion#1{\if@smallringsw\else
+\XyMTeXWarning{Unfavorable Fusion for bond `#1'}\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ForbiddenFusion}
+% \changes{v2.00}{1998/12/23}{New command: \cs{ForbiddenFusion}}
+% \begin{macrocode}
+\def\ForbiddenFusion#1{\if@smallringsw\else
+\XyMTeXWarning{Forbidden Fusion for bond `#1'}\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Normal Vertical Type}
+%
+% The macro |\set@fusion@decav| is an inner command contained
+% in the definition of |\decalinev| and |\decaheterov|, where
+% the macro is used for setting an additive
+% or a fused ring at each bond (designated by |\@@tmpa|). The
+% fused ring is typeset by the inner command |\set@fusionadd@sixv|.
+%
+% \begin{macro}{\set@fusion@decav}
+% \changes{v2.00}{1998/11/15}{New command: \cs{set@fusion@decav}}
+% \begin{macrocode}
+\def\set@fusion@decav{%
+ \let\@@tmpa=\@tmpa
+ \let\@@tmpb=\@tmpb
+ \if\@tmpa a%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa A%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa b%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa B%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa c%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa C%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa d%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{d}%
+ \else\if\@tmpa D%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{D}%
+ \else\if\@tmpa e%
+ \edef\@@tmpa{c}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{e}%
+ \else\if\@tmpa E%
+ \edef\@@tmpa{C}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{E}%
+ \else\if\@tmpa f%
+ \edef\@@tmpa{d}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa F%
+ \edef\@@tmpa{D}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa g%
+ \edef\@@tmpa{e}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa G%
+ \edef\@@tmpa{E}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa h%
+ \edef\@@tmpa{f}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa H%
+ \edef\@@tmpa{F}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa i%
+ \edef\@@tmpa{a}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{i}%
+ \else\if\@tmpa I%
+ \edef\@@tmpa{A}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{I}%
+ \else\if\@tmpa j%
+ \edef\@@tmpa{f}%
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{j}%
+ \else\if\@tmpa J%
+ \edef\@@tmpa{F}%
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{J}%
+ \else\if\@tmpa k%
+ \edef\@@tmpa{e}%
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \ForbiddenFusion{k}%
+ \else\if\@tmpa K%
+ \edef\@@tmpa{E}%
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \ForbiddenFusion{K}%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+}% end of the macro \set@fusion@decav
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Vertical-Bottom Type}
+%
+% The macro |\set@fusion@decavb| is an inner command contained
+% in the definition of |\decalinevb| and |\decaheterovb| etc.,
+% where the macro is used for setting an additive
+% or a fused ring at each bond (designated by |\@@tmpa|). The
+% fused ring is typeset by the inner command |\set@fusionadd@sixv|.
+%
+% \begin{macro}{\set@fusion@decavb}
+% \changes{v2.00}{1998/12/25}{New command: \cs{set@fusion@decavb}}
+% \begin{macrocode}
+\def\set@fusion@decavb{%
+ \let\@@tmpa=\@tmpa
+ \let\@@tmpb=\@tmpb
+ \if\@tmpa a%
+ \edef\@@tmpa{b}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa A%
+ \edef\@@tmpa{B}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa b%
+ \edef\@@tmpa{c}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa B%
+ \edef\@@tmpa{C}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa c%
+ \edef\@@tmpa{d}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa C%
+ \edef\@@tmpa{D}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa d%
+ \edef\@@tmpa{e}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{d}%
+ \else\if\@tmpa D%
+ \edef\@@tmpa{E}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{D}%
+ \else\if\@tmpa e%
+ \edef\@@tmpa{d}%
+ \Put@Direct(-171,303){\set@fusionadd@sixv}%
+ \UnfavorableFusion{e}%
+ \else\if\@tmpa E%
+ \edef\@@tmpa{D}%
+ \Put@Direct(-171,303){\set@fusionadd@sixv}%
+ \UnfavorableFusion{E}%
+ \else\if\@tmpa f%
+ \edef\@@tmpa{e}%
+ \Put@Direct(-171,303){\set@fusionadd@sixv}%
+ \else\if\@tmpa F%
+ \edef\@@tmpa{E}%
+ \Put@Direct(-171,303){\set@fusionadd@sixv}%
+ \else\if\@tmpa g%
+ \edef\@@tmpa{f}%
+ \Put@Direct(-171,303){\set@fusionadd@sixv}%
+ \else\if\@tmpa G%
+ \edef\@@tmpa{F}%
+ \Put@Direct(-171,303){\set@fusionadd@sixv}%
+ \else\if\@tmpa h%
+ \edef\@@tmpa{a}%
+ \Put@Direct(-171,303){\set@fusionadd@sixv}%
+ \else\if\@tmpa H%
+ \edef\@@tmpa{A}%
+ \Put@Direct(-171,303){\set@fusionadd@sixv}%
+ \else\if\@tmpa i%
+ \edef\@@tmpa{b}%
+ \Put@Direct(-171,303){\set@fusionadd@sixv}%
+ \UnfavorableFusion{i}%
+ \else\if\@tmpa I%
+ \edef\@@tmpa{B}%
+ \Put@Direct(-171,303){\set@fusionadd@sixv}%
+ \UnfavorableFusion{I}%
+ \else\if\@tmpa j%
+ \edef\@@tmpa{a}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{j}%
+ \else\if\@tmpa J%
+ \edef\@@tmpa{A}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{J}%
+ \else\if\@tmpa k%
+ \edef\@@tmpa{c}%
+ \Put@Direct(-171,303){\set@fusionadd@sixv}%
+ \ForbiddenFusion{k}%
+ \else\if\@tmpa K%
+ \edef\@@tmpa{C}%
+ \Put@Direct(-171,303){\set@fusionadd@sixv}%
+ \ForbiddenFusion{K}%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+}% end of the macro \set@fusion@decavb
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Vertical-Top Type}
+%
+% The macro |\set@fusion@decavt| is an inner command contained
+% in the definition of |\decalinevt| and |\decaheterovt| etc.,
+% where the macro is used for setting an additive
+% or a fused ring at each bond (designated by |\@@tmpa|). The
+% fused ring is typeset by the inner command |\set@fusionadd@sixv|.
+%
+% \begin{macro}{\set@fusion@decavt}
+% \changes{v2.00}{1998/12/25}{New command: \cs{set@fusion@decavt}}
+% \begin{macrocode}
+\def\set@fusion@decavt{%
+ \let\@@tmpa=\@tmpa
+ \let\@@tmpb=\@tmpb
+ \if\@tmpa a%
+ \edef\@@tmpa{f}%
+ \Put@Direct(171,303){\set@fusionadd@sixv}%
+ \else\if\@tmpa A%
+ \edef\@@tmpa{F}%
+ \Put@Direct(171,303){\set@fusionadd@sixv}%
+ \else\if\@tmpa b%
+ \edef\@@tmpa{a}%
+ \Put@Direct(171,303){\set@fusionadd@sixv}%
+ \else\if\@tmpa B%
+ \edef\@@tmpa{A}%
+ \Put@Direct(171,303){\set@fusionadd@sixv}%
+ \else\if\@tmpa c%
+ \edef\@@tmpa{b}%
+ \Put@Direct(171,303){\set@fusionadd@sixv}%
+ \else\if\@tmpa C%
+ \edef\@@tmpa{B}%
+ \Put@Direct(171,303){\set@fusionadd@sixv}%
+ \else\if\@tmpa d%
+ \edef\@@tmpa{c}%
+ \Put@Direct(171,303){\set@fusionadd@sixv}%
+ \UnfavorableFusion{d}%
+ \else\if\@tmpa D%
+ \edef\@@tmpa{C}%
+ \Put@Direct(171,303){\set@fusionadd@sixv}%
+ \UnfavorableFusion{D}%
+ \else\if\@tmpa e%
+ \edef\@@tmpa{b}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{e}%
+ \else\if\@tmpa E%
+ \edef\@@tmpa{B}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{E}%
+ \else\if\@tmpa f%
+ \edef\@@tmpa{c}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa F%
+ \edef\@@tmpa{C}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa g%
+ \edef\@@tmpa{d}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa G%
+ \edef\@@tmpa{D}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa h%
+ \edef\@@tmpa{e}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa H%
+ \edef\@@tmpa{E}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa i%
+ \edef\@@tmpa{f}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{i}%
+ \else\if\@tmpa I%
+ \edef\@@tmpa{F}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{I}%
+ \else\if\@tmpa j%
+ \edef\@@tmpa{e}%
+ \Put@Direct(171,303){\set@fusionadd@sixv}%
+ \UnfavorableFusion{j}%
+ \else\if\@tmpa J%
+ \edef\@@tmpa{E}%
+ \Put@Direct(171,303){\set@fusionadd@sixv}%
+ \UnfavorableFusion{J}%
+ \else\if\@tmpa k%
+ \edef\@@tmpa{d}%
+ \Put@Direct(171,303){\set@fusionadd@sixv}%
+ \ForbiddenFusion{k}%
+ \else\if\@tmpa K%
+ \edef\@@tmpa{D}%
+ \Put@Direct(171,303){\set@fusionadd@sixv}%
+ \ForbiddenFusion{K}%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+}% end of \set@fusion@decavt
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Normal Horizontal Type}
+%
+% The macro |\set@fusion@decah| is an inner command contained
+% in the definition of |\decalineh| and |\decaheteroh|, where
+% the macro is used for setting an additive
+% or a fused ring at each bond (designated by |\@@tmpa|). The
+% fused ring is typeset by the inner command |\set@fusionadd@sixh|.
+%
+% \begin{macro}{\set@fusion@decah}
+% \changes{v2.00}{1998/11/15}{New command: \cs{set@fusion@decah}}
+% \begin{macrocode}
+\def\set@fusion@decah{%
+ \let\@@tmpa=\@tmpa
+ \let\@@tmpb=\@tmpb
+ \if\@tmpa a%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(0,0){\set@fusionadd@sixh}%
+ \else\if\@tmpa A%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(0,0){\set@fusionadd@sixh}%
+ \else\if\@tmpa b%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(0,0){\set@fusionadd@sixh}%
+ \else\if\@tmpa B%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(0,0){\set@fusionadd@sixh}%
+ \else\if\@tmpa c%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(0,0){\set@fusionadd@sixh}%
+ \else\if\@tmpa C%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(0,0){\set@fusionadd@sixh}%
+ \else\if\@tmpa d%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(0,0){\set@fusionadd@sixh}%
+ \UnfavorableFusion{d}%
+ \else\if\@tmpa D%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(0,0){\set@fusionadd@sixh}%
+ \UnfavorableFusion{D}%
+ \else\if\@tmpa e%
+ \edef\@@tmpa{c}%
+ \Put@Direct(0,-342){\set@fusionadd@sixh}%
+ \UnfavorableFusion{e}%
+ \else\if\@tmpa E%
+ \edef\@@tmpa{C}%
+ \Put@Direct(0,-342){\set@fusionadd@sixh}%
+ \UnfavorableFusion{E}%
+ \else\if\@tmpa f%
+ \edef\@@tmpa{d}%
+ \Put@Direct(0,-342){\set@fusionadd@sixh}%
+ \else\if\@tmpa F%
+ \edef\@@tmpa{D}%
+ \Put@Direct(0,-342){\set@fusionadd@sixh}%
+ \else\if\@tmpa g%
+ \edef\@@tmpa{e}%
+ \Put@Direct(0,-342){\set@fusionadd@sixh}%
+ \else\if\@tmpa G%
+ \edef\@@tmpa{E}%
+ \Put@Direct(0,-342){\set@fusionadd@sixh}%
+ \else\if\@tmpa h%
+ \edef\@@tmpa{f}%
+ \Put@Direct(0,-342){\set@fusionadd@sixh}%
+ \else\if\@tmpa H%
+ \edef\@@tmpa{F}%
+ \Put@Direct(0,-342){\set@fusionadd@sixh}%
+ \else\if\@tmpa i%
+ \edef\@@tmpa{a}%
+ \Put@Direct(0,-342){\set@fusionadd@sixh}%
+ \UnfavorableFusion{i}%
+ \else\if\@tmpa I%
+ \edef\@@tmpa{A}%
+ \Put@Direct(0,-342){\set@fusionadd@sixh}%
+ \UnfavorableFusion{I}%
+ \else\if\@tmpa j%
+ \edef\@@tmpa{f}%
+ \Put@Direct(0,0){\set@fusionadd@sixh}%
+ \UnfavorableFusion{j}%
+ \else\if\@tmpa J%
+ \edef\@@tmpa{F}%
+ \Put@Direct(0,0){\set@fusionadd@sixh}%
+ \UnfavorableFusion{J}%
+ \else\if\@tmpa k%
+ \edef\@@tmpa{e}%
+ \Put@Direct(0,0){\set@fusionadd@sixh}%
+ \ForbiddenFusion{k}%
+ \else\if\@tmpa K%
+ \edef\@@tmpa{E}%
+ \Put@Direct(0,0){\set@fusionadd@sixh}%
+ \ForbiddenFusion{K}%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+}% end of the macro \set@fusion@decah
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Ring-fusion Commands for Six-Six-Six Fused Rings}
+% \subsection{Normal Vertical Type of Anthracenes}
+%
+% The macro |\set@fusion@hanthrav| is an inner command contained
+% in the definition of |\hanthracenev|, where
+% the macro is used for setting an additive
+% or a fused ring at each bond (designated by |\@@tmpa|). The
+% fused ring is typeset by the inner command |\set@fusionadd@sixv|.
+%
+% \begin{macro}{\set@fusion@hanthrav}
+% \changes{v2.00}{1998/11/23}{New command: \cs{set@fusion@hanthrav}}
+% \begin{macrocode}
+\def\set@fusion@hanthrav{%
+ \let\@@tmpa=\@tmpa
+ \let\@@tmpb=\@tmpb
+ \if\@tmpa a%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(684,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa A%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(684,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa b%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(684,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa B%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(684,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa c%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(684,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa C%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(684,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa d%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(684,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{d}%
+ \else\if\@tmpa D%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(684,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{D}%
+ \else\if\@tmpa e%
+ \edef\@@tmpa{c}%
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{e}%
+ \else\if\@tmpa E%
+ \edef\@@tmpa{C}%
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{E}%
+ \else\if\@tmpa f%
+ \edef\@@tmpa{d}%
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{f}%
+ \else\if\@tmpa F%
+ \edef\@@tmpa{D}%
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{F}%
+ \else\if\@tmpa g%
+ \edef\@@tmpa{c}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{g}%
+ \else\if\@tmpa G%
+ \edef\@@tmpa{C}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{G}%
+ \else\if\@tmpa h%
+ \edef\@@tmpa{d}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa H%
+ \edef\@@tmpa{D}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa i%
+ \edef\@@tmpa{e}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa I%
+ \edef\@@tmpa{E}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa j%
+ \edef\@@tmpa{f}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa J%
+ \edef\@@tmpa{F}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa k%
+ \edef\@@tmpa{a}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{k}%
+ \else\if\@tmpa K%
+ \edef\@@tmpa{A}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{K}%
+ \else\if\@tmpa l%
+ \edef\@@tmpa{f}%
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{l}%
+ \else\if\@tmpa L%
+ \edef\@@tmpa{F}%
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{L}%
+ \else\if\@tmpa m%
+ \edef\@@tmpa{a}%
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{m}%
+ \else\if\@tmpa M%
+ \edef\@@tmpa{A}%
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{M}%
+ \else\if\@tmpa n%
+ \edef\@@tmpa{f}%
+ \Put@Direct(684,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{n}%
+ \else\if\@tmpa N%
+ \edef\@@tmpa{F}%
+ \Put@Direct(684,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{N}%
+ \else\if\@tmpa o%
+ \edef\@@tmpa{e}%
+ \Put@Direct(684,0){\set@fusionadd@sixv}%
+ \ForbiddenFusion{o}%
+ \else\if\@tmpa O%
+ \edef\@@tmpa{E}%
+ \Put@Direct(684,0){\set@fusionadd@sixv}%
+ \ForbiddenFusion{O}%
+ \else\if\@tmpa p%
+ \edef\@@tmpa{e}%
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \ForbiddenFusion{p}%
+ \else\if\@tmpa P%
+ \edef\@@tmpa{E}%
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \ForbiddenFusion{P}%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+}% end of the macro \set@fusion@hanthrav
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Normal Vertical Type of Phenanthrenes}
+%
+% The macro |\set@fusion@hphenanv| is an inner command contained
+% in the definition of |\hphenanthrenev|, where
+% the macro is used for setting an additive
+% or a fused ring at each bond (designated by |\@@tmpa|). The
+% fused ring is typeset by the inner command |\set@fusionadd@sixv|.
+%
+% \begin{macro}{\set@fusion@hphenanv}
+% \changes{v2.00}{1998/11/23}{New command: \cs{set@fusion@phenanv}}
+% \begin{macrocode}
+\def\set@fusion@hphenanv{%
+ \let\@@tmpa=\@tmpa
+ \let\@@tmpb=\@tmpb
+ \if\@tmpa a%
+ \edef\@@tmpa{b}%
+ \Put@Direct(513,303){\set@fusionadd@sixv}%
+ \else\if\@tmpa A%
+ \edef\@@tmpa{B}%
+ \Put@Direct(513,303){\set@fusionadd@sixv}%
+ \else\if\@tmpa b%
+ \edef\@@tmpa{a}%
+ \Put@Direct(513,303){\set@fusionadd@sixv}%
+ \else\if\@tmpa B%
+ \edef\@@tmpa{A}%
+ \Put@Direct(513,303){\set@fusionadd@sixv}%
+ \else\if\@tmpa c%
+ \edef\@@tmpa{f}%
+ \Put@Direct(513,303){\set@fusionadd@sixv}%
+ \else\if\@tmpa C%
+ \edef\@@tmpa{F}%
+ \Put@Direct(513,303){\set@fusionadd@sixv}%
+ \else\if\@tmpa d%
+ \edef\@@tmpa{e}%
+ \Put@Direct(513,303){\set@fusionadd@sixv}%
+ \UnfavorableFusion{d}%
+ \else\if\@tmpa D%
+ \edef\@@tmpa{E}%
+ \Put@Direct(513,303){\set@fusionadd@sixv}%
+ \UnfavorableFusion{D}%
+ \else\if\@tmpa e%
+ \edef\@@tmpa{f}%
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{e}%
+ \else\if\@tmpa E%
+ \edef\@@tmpa{F}%
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{E}%
+ \else\if\@tmpa f%
+ \edef\@@tmpa{a}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{f}%
+ \else\if\@tmpa F%
+ \edef\@@tmpa{A}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{F}%
+ \else\if\@tmpa g%
+ \edef\@@tmpa{f}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa G%
+ \edef\@@tmpa{F}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa h%
+ \edef\@@tmpa{e}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa H%
+ \edef\@@tmpa{E}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa i%
+ \edef\@@tmpa{d}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa I%
+ \edef\@@tmpa{D}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa j%
+ \edef\@@tmpa{c}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{j}%
+ \else\if\@tmpa J%
+ \edef\@@tmpa{C}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{J}%
+ \else\if\@tmpa k%
+ \edef\@@tmpa{d}%
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{k}%
+ \else\if\@tmpa K%
+ \edef\@@tmpa{D}%
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{K}%
+ \else\if\@tmpa l%
+ \edef\@@tmpa{c}%
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa L%
+ \edef\@@tmpa{C}%
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa m%
+ \edef\@@tmpa{b}%
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{m}%
+ \else\if\@tmpa M%
+ \edef\@@tmpa{B}%
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{M}%
+ \else\if\@tmpa n%
+ \edef\@@tmpa{c}%
+ \Put@Direct(513,303){\set@fusionadd@sixv}%
+ \UnfavorableFusion{n}%
+ \else\if\@tmpa N%
+ \edef\@@tmpa{C}%
+ \Put@Direct(513,303){\set@fusionadd@sixv}%
+ \UnfavorableFusion{N}%
+ \else\if\@tmpa o%
+ \edef\@@tmpa{d}%
+ \Put@Direct(513,303){\set@fusionadd@sixv}%
+ \ForbiddenFusion{o}%
+ \else\if\@tmpa O%
+ \edef\@@tmpa{D}%
+ \Put@Direct(513,303){\set@fusionadd@sixv}%
+ \ForbiddenFusion{O}%
+ \else\if\@tmpa p%
+ \edef\@@tmpa{e}%
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \ForbiddenFusion{p}%
+ \else\if\@tmpa P%
+ \edef\@@tmpa{E}%
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \ForbiddenFusion{P}%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+}% end of the macro \set@fusion@hphananv
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Ring-fusion Commands for Five-Membered Rings}
+% \subsection{Normal vertical type}
+%
+% The macro |\set@fusionadd@fivev| is an inner command contained
+% in the definition of |\fiveheterov| etc., where
+% the macro is used for setting an additive
+% or a fused ring at each bond (designated by |\@@tmpa|). The
+% fused ring is typeset by the inner command |\set@fusion@fivev|.
+%
+% \begin{macro}{\set@fusionadd@fivev}
+% \changes{v2.00}{1998/12/4}{New command: \cs{set@fusionadd@fivev}}
+% \begin{macrocode}
+\def\set@fusionadd@fivev{%
+ \if\@@tmpa 1\relax%
+ \putratom{-38}{88}{\@@tmpb}% % right type
+ \else\if\@@tmpa 2\relax%
+ \putratom{60}{120}{\@@tmpb}% % right type
+ \else\if\@@tmpa 3\relax%
+ \putratom{60}{233}{\@@tmpb}% % right type
+ \else\if\@@tmpa 4\relax%
+ \putratom{-60}{233}{\@@tmpb}% % right type
+ \else\if\@@tmpa 5\relax%
+ \putratom{-60}{120}{\@@tmpb}% % right type
+ \else\if\@@tmpa 0\relax%
+ \putratom{-38}{150}{\@@tmpb}% % right type
+ \else
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+ \set@fusion@fivev
+ \fi\fi\fi\fi\fi\fi%
+}% end of the macro \set@fusionadd@fivev
+% \end{macrocode}
+% \end{macro}
+%
+% The inner command |\set@fusion@fivev| is used for typesetting
+% a fused ring at each bond represented by |\@@tmpa|. Warnings
+% concerning mismatched ring-fusions are based on the command
+% |\FuseWarning|.
+%
+% \begin{macro}{\set@fusion@fivev}
+% \changes{v2.00}{1998/12/4}{New command: \cs{set@fusion@fivev}}
+% \changes{v5.00}{2010/10/01}{For bond coloring}
+% \begin{macrocode}
+\newif\iffusesw \fuseswfalse
+\def\set@fusion@fivev{%
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+ \if\@@tmpa a\relax%
+ \putlratom{0}{0}{\@@tmpb}% % right type
+ \FuseWarning{-171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}%
+ \else\if\@@tmpa A\relax%
+ \putlratom{171}{103}{\@@tmpb}% % right type
+ \FuseWarning{171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}%
+ \else\if\@@tmpa b\relax%
+ \putlratom{171}{103}{\@@tmpb}% % right type
+ \FuseWarning{0}{-200}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}%
+ \else\if\@@tmpa B\relax%
+ \putlratom{171}{303}{\@@tmpb}% % right type
+ \FuseWarning{0}{200}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}%
+ \else\if\@@tmpa c\relax
+ \iffusesw
+ \putlratom{171}{103}{\@@tmpb}% % right type
+ \else
+ \XyMTeXWarning{Not-used fusion at bond `c'}%
+ \fi
+ \else\if\@@tmpa C\relax%
+ \iffusesw
+ \putlratom{-171}{103}{\@@tmpb}% % right type
+ \else
+ \XyMTeXWarning{Not-used fusion at bond `C'}%
+ \fi
+ \else\if\@@tmpa d\relax%
+ \putlratom{-171}{303}{\@@tmpb}% % right type
+ \FuseWarning{0}{200}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{d}%
+ \else\if\@@tmpa D\relax%
+ \putlratom{-171}{103}{\@@tmpb}% % right type
+ \FuseWarning{0}{-200}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{D}%
+ \else\if\@@tmpa e\relax%
+ \putlratom{-171}{103}{\@@tmpb}% % right type
+ \FuseWarning{171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{e}%
+ \else\if\@@tmpa E\relax%
+ \putlratom{0}{0}{\@@tmpb}% % right type
+ \FuseWarning{-171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{E}%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+}% end of the marcro \set@fusion@fivev
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Inverse vertical type}
+%
+% The macro |\set@fusionadd@fivevi| is an inner command contained
+% in the definition of |\fiveheterov| etc., where
+% the macro is used for setting an additive
+% or a fused ring at each bond (designated by |\@@tmpa|). The
+% fused ring is typeset by the inner command |\set@fusion@fivevi|.
+%
+% \begin{macro}{\set@fusionadd@fivevi}
+% \changes{v2.00}{1998/12/4}{New command: \cs{set@fusionadd@fivevi}}
+% \begin{macrocode}
+\def\set@fusionadd@fivevi{%
+ \if\@@tmpa 1\relax%
+ \putratom{-38}{282}{\@@tmpb}% % right type
+ \else\if\@@tmpa 2\relax%
+ \putratom{60}{233}{\@@tmpb}% % right type
+ \else\if\@@tmpa 3\relax%
+ \putratom{60}{120}{\@@tmpb}% % right type
+ \else\if\@@tmpa 4\relax%
+ \putratom{-60}{120}{\@@tmpb}% % right type
+ \else\if\@@tmpa 5\relax%
+ \putratom{-60}{233}{\@@tmpb}% % right type
+ \else\if\@@tmpa 0\relax%
+ \putratom{-38}{213}{\@@tmpb}% % right type
+ \else
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+ \set@fusion@fivevi
+ \fi\fi\fi\fi\fi\fi%
+}% end of the macro \set@fusionadd@fivevi
+% \end{macrocode}
+% \end{macro}
+%
+% The inner command |\set@fusion@fivevi| is used for typesetting
+% a fused ring at each bond represented by |\@@tmpa|. Warnings
+% concerning mismatched ring-fusions are based on the command
+% |\FuseWarning|.
+%
+% \begin{macro}{\set@fusion@fivevi}
+% \changes{v2.00}{1998/12/4}{New command: \cs{set@fusion@fivevi}}
+% \changes{v5.00}{2010/10/01}{For bond coloring}
+% \begin{macrocode}
+\def\set@fusion@fivevi{%
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+\if\@@tmpa d\relax%
+ \putlratom{-171}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{0}{-200}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{d, k, or other}%
+ \else\if\@@tmpa D\relax%
+ \putlratom{-171}{303}{\@@tmpb}% % bond fused
+ \FuseWarning{0}{200}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{D, K, or other}%
+ \else\if\@@tmpa e\relax%
+ \putlratom{-171}{303}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{e, j, or other}%
+ \else\if\@@tmpa E\relax%
+ \putlratom{0}{406}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{E, J, or other}%
+ \else\if\@@tmpa a\relax%
+ \putlratom{0}{406}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a, i, or other}%
+ \else\if\@@tmpa A\relax%
+ \putlratom{171}{303}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A, I, or other}%
+ \else\if\@@tmpa b\relax%
+ \putlratom{171}{303}{\@@tmpb}% % bond fused
+ \FuseWarning{0}{200}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b, k, or other}%
+ \else\if\@@tmpa B\relax%
+ \putlratom{171}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{0}{-200}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B, K, or other}%
+ \else\if\@@tmpa c\relax
+ \iffusesw
+ \putlratom{171}{103}{\@@tmpb}% % right type
+ \else
+ \XyMTeXWarning{Not-used fusion at bond `c'}%
+ \fi
+ \else\if\@@tmpa C\relax%
+ \iffusesw
+ \putlratom{-171}{103}{\@@tmpb}% % right type
+ \else
+ \XyMTeXWarning{Not-used fusion at bond `C'}%
+ \fi
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+}% end of the macro \set@fusion@fivevi
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Normal horizontal type}
+%
+% The macro |\set@fusionadd@fiveh| is an inner command contained
+% in the definition of |\fiveheteroh| etc., where
+% the macro is used for setting an additive
+% or a fused ring at each bond (designated by |\@@tmpa|). The
+% fused ring is typeset by the inner command |\set@fusion@fiveh|.
+%
+% \begin{macro}{\set@fusionadd@fiveh}
+% \changes{v2.00}{1998/11/29}{New command: \cs{set@fusionadd@fiveh}}
+% \begin{macrocode}
+\def\set@fusionadd@fiveh{%
+ \if\@@tmpa 1\relax%
+ \putratom{272}{-18}{\@@tmpb}% % right type
+ \else\if\@@tmpa 2\relax%
+ \putratom{233}{60}{\@@tmpb}% % right type
+ \else\if\@@tmpa 3\relax%
+ \putratom{120}{60}{\@@tmpb}% % right type
+ \else\if\@@tmpa 5\relax%
+ \putratom{233}{-110}{\@@tmpb}% % right type
+ \else\if\@@tmpa 4\relax%
+ \putratom{120}{-110}{\@@tmpb}% % right type
+ \else\if\@@tmpa 0\relax%
+ \putratom{196}{-30}{\@@tmpb}% % right type
+ \else
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+ \set@fusion@fiveh
+ \fi\fi\fi\fi\fi\fi%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% The inner command |\set@fusion@fiveh| is used for typesetting
+% a fused ring at each bond represented by |\@@tmpa|. Warnings
+% concerning mismatched ring-fusions are based on the command
+% |\FuseWarning|.
+%
+% \begin{macro}{\set@fusion@fiveh}
+% \changes{v2.00}{1998/11/23}{New command: \cs{set@fusion@fiveh}}
+% \changes{v5.00}{2010/10/01}{For bond coloring}
+% \begin{macrocode}
+\def\set@fusion@fiveh{%
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+\if\@@tmpa E\relax%
+ \putlratom{406}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{103}{171}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{E, J, or other}%
+ \else\if\@@tmpa e\relax%
+ \putlratom{303}{-171}{\@@tmpb}% % bond fused
+ \FuseWarning{-103}{-171}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{e, j, or other}%
+ \else\if\@@tmpa D\relax%
+ \putlratom{303}{-171}{\@@tmpb}% % bond fused
+ \FuseWarning{200}{0}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{D, K, or other}%
+ \else\if\@@tmpa d\relax%
+ \putlratom{103}{-171}{\@@tmpb}% % bond fused
+ \FuseWarning{-200}{0}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{d, k, or other}%
+ \else\if\@@tmpa c\relax
+ \iffusesw
+ \putlratom{303}{171}{\@@tmpb}% % right type
+ \else
+ \XyMTeXWarning{Not-used fusion at bond `c'}%
+ \fi
+ \else\if\@@tmpa C\relax%
+ \iffusesw
+ \putlratom{303}{-171}{\@@tmpb}% % right type
+ \else
+ \XyMTeXWarning{Not-used fusion at bond `C'}%
+ \fi
+ \else\if\@@tmpa B\relax%
+ \putlratom{103}{171}{\@@tmpb}% % bond fused
+ \FuseWarning{-200}{0}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B, K, or other}%
+ \else\if\@@tmpa b\relax%
+ \putlratom{303}{171}{\@@tmpb}% % bond fused
+ \FuseWarning{200}{0}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b, k, or other}%
+ \else\if\@@tmpa A\relax%
+ \putlratom{303}{171}{\@@tmpb}% % bond fused
+ \FuseWarning{-103}{171}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A, I, or other}%
+ \else\if\@@tmpa a\relax%
+ \putlratom{406}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{103}{-171}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a, i, or other}%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+}% end of the macro \set@fusion@fiveh
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Inverse horizontal type}
+%
+% The macro |\set@fusionadd@fivehi| is an inner command contained
+% in the definition of |\fiveheterohi| etc., where
+% the macro is used for setting an additive
+% or a fused ring at each bond (designated by |\@@tmpa|). The
+% fused ring is typeset by the inner command |\set@fusion@fivehi|.
+%
+% \begin{macro}{\set@fusionadd@fivehi}
+% \changes{v2.00}{1998/11/23}{New command: \cs{set@fusionadd@fivehi}}
+% \begin{macrocode}
+\def\set@fusionadd@fivehi{%
+ \if\@@tmpa 1\relax%
+ \putratom{-38}{282}{\@@tmpb}% % right type
+ \else\if\@@tmpa 2\relax%
+ \putratom{60}{233}{\@@tmpb}% % right type
+ \else\if\@@tmpa 3\relax%
+ \putratom{60}{120}{\@@tmpb}% % right type
+ \else\if\@@tmpa 4\relax%
+ \putratom{-60}{120}{\@@tmpb}% % right type
+ \else\if\@@tmpa 5\relax%
+ \putratom{-60}{233}{\@@tmpb}% % right type
+ \else\if\@@tmpa 0\relax%
+ \putratom{140}{-30}{\@@tmpb}% % right type
+ \else
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+ \set@fusion@fivehi
+ \fi\fi\fi\fi\fi\fi%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% The inner command |\set@fusion@fivehi| is used for typesetting
+% a fused ring at each bond represented by |\@@tmpa|. Warnings
+% concerning mismatched ring-fusions are based on the command
+% |\FuseWarning|.
+%
+% \begin{macro}{\set@fusion@fivehi}
+% \changes{v2.00}{1998/11/23}{New command: \cs{set@fusion@fivehi}}
+% \changes{v5.00}{2010/10/01}{For bond coloring}
+% \begin{macrocode}
+\def\set@fusion@fivehi{%
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+\if\@@tmpa d\relax%
+ \putlratom{303}{-171}{\@@tmpb}% % bond fused
+ \FuseWarning{200}{0}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{d, k, or other}%
+ \else\if\@@tmpa D\relax%
+ \putlratom{103}{-171}{\@@tmpb}% % bond fused
+ \FuseWarning{-200}{0}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{D, K, or other}%
+ \else\if\@@tmpa e\relax%
+ \putlratom{103}{-171}{\@@tmpb}% % bond fused
+ \FuseWarning{103}{-171}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{e, j, or other}%
+ \else\if\@@tmpa E\relax%
+ \putlratom{0}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{-103}{171}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{E, J, or other}%
+ \else\if\@@tmpa a\relax%
+ \putlratom{0}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{-103}{-171}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a, i, or other}%
+ \else\if\@@tmpa A\relax%
+ \putlratom{103}{171}{\@@tmpb}% % bond fused
+ \FuseWarning{103}{171}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A, I, or other}%
+ \else\if\@@tmpa b\relax%
+ \putlratom{103}{171}{\@@tmpb}% % bond fused
+ \FuseWarning{-200}{0}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b, k, or other}%
+ \else\if\@@tmpa B\relax%
+ \putlratom{303}{171}{\@@tmpb}% % bond fused
+ \FuseWarning{200}{0}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B, K, or other}%
+ \else\if\@@tmpa c\relax
+ \iffusesw
+ \putlratom{303}{171}{\@@tmpb}% % right type
+ \else
+ \XyMTeXWarning{Not-used fusion at bond `c'}%
+ \fi
+ \else\if\@@tmpa C\relax%
+ \iffusesw
+ \putlratom{303}{-171}{\@@tmpb}% % right type
+ \else
+ \XyMTeXWarning{Not-used fusion at bond `C'}%
+ \fi
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+}% end of the macro \set@fusion@sixhi
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Ring-fusion Commands for Six-Five-fused Rings}
+% \subsection{Normal vertical type}
+%
+% The macro |\set@fusion@nonav| is an inner command contained
+% in the definition of |\indanev| and |\nonaheterov|, where
+% the macro is used for setting an additive
+% or a fused ring at each bond (designated by |\@@tmpa|). The
+% fused ring is typeset by the inner command |\set@fusionadd@sixvi|.
+%
+% \begin{macro}{\set@fusion@nonav}
+% \begin{macrocode}
+\def\set@fusion@nonav{%
+ \let\@@tmpa=\@tmpa
+ \let\@@tmpb=\@tmpb
+ \if\@tmpa a%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(342,0){\set@fusionadd@sixvi}%
+ \else\if\@tmpa A%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(342,0){\set@fusionadd@sixvi}%
+ \else\if\@tmpa b%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(342,0){\set@fusionadd@sixvi}%
+ \else\if\@tmpa B%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(342,0){\set@fusionadd@sixvi}%
+ \else\if\@tmpa c\relax
+ \XyMTeXWarning{Not-used fusion at bond `c'}%
+ \else\if\@tmpa C\relax%
+ \XyMTeXWarning{Not-used fusion at bond `C'}%
+ \else\if\@tmpa d%
+ \edef\@@tmpa{c}%
+ \Put@Direct(0,0){\set@fusionadd@sixvi}%
+ \UnfavorableFusion{d}%
+ \else\if\@tmpa D%
+ \edef\@@tmpa{C}%
+ \Put@Direct(0,0){\set@fusionadd@sixvi}%
+ \UnfavorableFusion{D}%
+ \else\if\@tmpa e%
+ \edef\@@tmpa{d}%
+ \Put@Direct(0,0){\set@fusionadd@sixvi}%
+ \else\if\@tmpa E%
+ \edef\@@tmpa{D}%
+ \Put@Direct(0,0){\set@fusionadd@sixvi}%
+ \else\if\@tmpa f%
+ \edef\@@tmpa{e}%
+ \Put@Direct(0,0){\set@fusionadd@sixvi}%
+ \else\if\@tmpa F%
+ \edef\@@tmpa{E}%
+ \Put@Direct(0,0){\set@fusionadd@sixvi}%
+ \else\if\@tmpa g%
+ \edef\@@tmpa{f}%
+ \Put@Direct(0,0){\set@fusionadd@sixvi}%
+ \else\if\@tmpa G%
+ \edef\@@tmpa{F}%
+ \Put@Direct(0,0){\set@fusionadd@sixvi}%
+ \else\if\@tmpa h%
+ \edef\@@tmpa{a}%
+ \Put@Direct(0,0){\set@fusionadd@sixvi}%
+ \UnfavorableFusion{h}%
+ \else\if\@tmpa H%
+ \edef\@@tmpa{A}%
+ \Put@Direct(0,0){\set@fusionadd@sixvi}%
+ \UnfavorableFusion{H}%
+ \else\if\@tmpa i%
+ \edef\@@tmpa{f}%
+ \Put@Direct(342,0){\set@fusionadd@sixvi}%
+ \UnfavorableFusion{i}%
+ \else\if\@tmpa I%
+ \edef\@@tmpa{F}%
+ \Put@Direct(342,0){\set@fusionadd@sixvi}%
+ \UnfavorableFusion{I}%
+ \else\if\@tmpa j%
+ \edef\@@tmpa{e}%
+ \Put@Direct(342,0){\set@fusionadd@sixvi}%
+ \ForbiddenFusion{j}%
+ \else\if\@tmpa J%
+ \edef\@@tmpa{E}%
+ \Put@Direct(342,0){\set@fusionadd@sixvi}%
+ \ForbiddenFusion{J}%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+}% end of the macro \set@fusion@nonav
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Inverse vertical type}
+%
+% The macro |\set@fusion@nonavi| is an inner command contained
+% in the definition of |\indanevi| and |\nonaheterovi|, where
+% the macro is used for setting an additive
+% or a fused ring at each bond (designated by |\@@tmpa|). The
+% fused ring is typeset by the inner command |\set@fusionadd@sixv|.
+%
+% \begin{macro}{\set@fusion@nonavi}
+% \changes{v2.00}{1998/12/5}{New command: \cs{set@fusion@nonavi}}
+% \begin{macrocode}
+\def\set@fusion@nonavi{%
+ \let\@@tmpa=\@tmpa
+ \let\@@tmpb=\@tmpb
+ \if\@tmpa a%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa A%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa b%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa B%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa c\relax
+ \XyMTeXWarning{Not-used fusion at bond `c'}%
+ \else\if\@tmpa C\relax%
+ \XyMTeXWarning{Not-used fusion at bond `C'}%
+ \else\if\@tmpa d%
+ \edef\@@tmpa{c}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{d}%
+ \else\if\@tmpa D%
+ \edef\@@tmpa{C}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{D}%
+ \else\if\@tmpa e%
+ \edef\@@tmpa{d}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa E%
+ \edef\@@tmpa{D}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa f%
+ \edef\@@tmpa{e}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa F%
+ \edef\@@tmpa{E}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa g%
+ \edef\@@tmpa{f}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa G%
+ \edef\@@tmpa{F}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \else\if\@tmpa h%
+ \edef\@@tmpa{a}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{h}%
+ \else\if\@tmpa H%
+ \edef\@@tmpa{A}%
+ \Put@Direct(0,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{H}%
+ \else\if\@tmpa i%
+ \edef\@@tmpa{f}%
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{i}%
+ \else\if\@tmpa I%
+ \edef\@@tmpa{F}%
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \UnfavorableFusion{I}%
+ \else\if\@tmpa j%
+ \edef\@@tmpa{e}%
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \ForbiddenFusion{j}%
+ \else\if\@tmpa J%
+ \edef\@@tmpa{E}%
+ \Put@Direct(342,0){\set@fusionadd@sixv}%
+ \ForbiddenFusion{J}%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+}% end of the macro \set@fusion@nonavi
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Normal horizontal type}
+%
+% The macro |\set@fusion@nonah| is an inner command contained
+% in the definition of |\nonaheteroh|, where
+% the macro is used for setting an additive
+% or a fused ring at each bond (designated by |\@@tmpa|). The
+% fused ring is typeset by the inner command |\set@fusionadd@sixhi|.
+%
+% \begin{macro}{\set@fusion@nonah}
+% \changes{v2.00}{1998/12/6}{New command: \cs{set@fusion@nonah}}
+% \begin{macrocode}
+\def\set@fusion@nonah{%
+ \let\@@tmpa=\@tmpa
+ \let\@@tmpb=\@tmpb
+ \if\@tmpa a%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(0,0){\set@fusionadd@sixhi}%
+ \else\if\@tmpa A%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(0,0){\set@fusionadd@sixhi}%
+ \else\if\@tmpa b%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(0,0){\set@fusionadd@sixhi}%
+ \else\if\@tmpa B%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(0,0){\set@fusionadd@sixhi}%
+ \else\if\@tmpa c\relax
+ \XyMTeXWarning{Not-used fusion at bond `c'}%
+ \else\if\@tmpa C\relax%
+ \XyMTeXWarning{Not-used fusion at bond `C'}%
+ \else\if\@tmpa d%
+ \edef\@@tmpa{c}%
+ \Put@Direct(0,-342){\set@fusionadd@sixhi}%
+ \UnfavorableFusion{d}%
+ \else\if\@tmpa D%
+ \edef\@@tmpa{C}%
+ \Put@Direct(0,-342){\set@fusionadd@sixhi}%
+ \UnfavorableFusion{D}%
+ \else\if\@tmpa e%
+ \edef\@@tmpa{d}%
+ \Put@Direct(0,-342){\set@fusionadd@sixhi}%
+ \else\if\@tmpa E%
+ \edef\@@tmpa{D}%
+ \Put@Direct(0,-342){\set@fusionadd@sixhi}%
+ \else\if\@tmpa f%
+ \edef\@@tmpa{e}%
+ \Put@Direct(0,-342){\set@fusionadd@sixhi}%
+ \else\if\@tmpa F%
+ \edef\@@tmpa{E}%
+ \Put@Direct(0,-342){\set@fusionadd@sixhi}%
+ \else\if\@tmpa g%
+ \edef\@@tmpa{f}%
+ \Put@Direct(0,-342){\set@fusionadd@sixhi}%
+ \else\if\@tmpa G%
+ \edef\@@tmpa{F}%
+ \Put@Direct(0,-342){\set@fusionadd@sixhi}%
+ \else\if\@tmpa h%
+ \edef\@@tmpa{a}%
+ \Put@Direct(0,-342){\set@fusionadd@sixhi}%
+ \UnfavorableFusion{h}%
+ \else\if\@tmpa H%
+ \edef\@@tmpa{A}%
+ \Put@Direct(0,-342){\set@fusionadd@sixhi}%
+ \UnfavorableFusion{H}%
+ \else\if\@tmpa i%
+ \edef\@@tmpa{f}%
+ \Put@Direct(0,0){\set@fusionadd@sixhi}%
+ \UnfavorableFusion{i}%
+ \else\if\@tmpa I%
+ \edef\@@tmpa{F}%
+ \Put@Direct(0,0){\set@fusionadd@sixhi}%
+ \UnfavorableFusion{I}%
+ \else\if\@tmpa j%
+ \edef\@@tmpa{e}%
+ \Put@Direct(0,0){\set@fusionadd@sixhi}%
+ \ForbiddenFusion{j}%
+ \else\if\@tmpa J%
+ \edef\@@tmpa{E}%
+ \Put@Direct(0,0){\set@fusionadd@sixhi}%
+ \ForbiddenFusion{J}%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+}% end of the macro \set@fusion@nonah
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Inverse horizontal type}
+%
+% The macro |\set@fusion@nonahi| is an inner command contained
+% in the definition of |\indanehi| and |\nonaheterohi|, where
+% the macro is used for setting an additive
+% or a fused ring at each bond (designated by |\@@tmpa|). The
+% fused ring is typeset by the inner command |\set@fusionadd@sixh|.
+%
+% \begin{macro}{\set@fusion@nonahi}
+% \changes{v2.00}{1998/12/5}{New command: \cs{set@fusion@nonahi}}
+% \begin{macrocode}
+\def\set@fusion@nonahi{%
+ \let\@@tmpa=\@tmpa
+ \let\@@tmpb=\@tmpb
+ \if\@tmpa a%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(0,0){\set@fusionadd@sixh}%
+ \else\if\@tmpa A%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(0,0){\set@fusionadd@sixh}%
+ \else\if\@tmpa b%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(0,0){\set@fusionadd@sixh}%
+ \else\if\@tmpa B%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(0,0){\set@fusionadd@sixh}%
+ \else\if\@tmpa c\relax
+ \XyMTeXWarning{Not-used fusion at bond `c'}%
+ \else\if\@tmpa C\relax%
+ \XyMTeXWarning{Not-used fusion at bond `C'}%
+ \else\if\@tmpa d%
+ \edef\@@tmpa{c}%
+ \Put@Direct(0,-342){\set@fusionadd@sixh}%
+ \UnfavorableFusion{d}%
+ \else\if\@tmpa D%
+ \edef\@@tmpa{C}%
+ \Put@Direct(0,-342){\set@fusionadd@sixh}%
+ \UnfavorableFusion{D}%
+ \else\if\@tmpa e%
+ \edef\@@tmpa{d}%
+ \Put@Direct(0,-342){\set@fusionadd@sixh}%
+ \else\if\@tmpa E%
+ \edef\@@tmpa{D}%
+ \Put@Direct(0,-342){\set@fusionadd@sixh}%
+ \else\if\@tmpa f%
+ \edef\@@tmpa{e}%
+ \Put@Direct(0,-342){\set@fusionadd@sixh}%
+ \else\if\@tmpa F%
+ \edef\@@tmpa{E}%
+ \Put@Direct(0,-342){\set@fusionadd@sixh}%
+ \else\if\@tmpa g%
+ \edef\@@tmpa{f}%
+ \Put@Direct(0,-342){\set@fusionadd@sixh}%
+ \else\if\@tmpa G%
+ \edef\@@tmpa{F}%
+ \Put@Direct(0,-342){\set@fusionadd@sixh}%
+ \else\if\@tmpa h%
+ \edef\@@tmpa{a}%
+ \Put@Direct(0,-342){\set@fusionadd@sixh}%
+ \UnfavorableFusion{h}%
+ \else\if\@tmpa H%
+ \edef\@@tmpa{A}%
+ \Put@Direct(0,-342){\set@fusionadd@sixh}%
+ \UnfavorableFusion{H}%
+ \else\if\@tmpa i%
+ \edef\@@tmpa{f}%
+ \Put@Direct(0,0){\set@fusionadd@sixh}%
+ \UnfavorableFusion{i}%
+ \else\if\@tmpa I%
+ \edef\@@tmpa{F}%
+ \Put@Direct(0,0){\set@fusionadd@sixh}%
+ \UnfavorableFusion{I}%
+ \else\if\@tmpa j%
+ \edef\@@tmpa{e}%
+ \Put@Direct(0,0){\set@fusionadd@sixh}%
+ \ForbiddenFusion{j}%
+ \else\if\@tmpa J%
+ \edef\@@tmpa{E}%
+ \Put@Direct(0,0){\set@fusionadd@sixh}%
+ \ForbiddenFusion{J}%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+}% end of the macro \set@fusion@nonahi
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Truncation for two or more atoms}
+%
+% The macros |SetTwoAtoms| and |SetTwoAtomx| are user commands for
+% truncating a vertex to accommodate two or more atoms.
+%
+% \begin{macro}{SetTwoAtoms}
+% \changes{v5.01}{2013/03/22}{New command: \cs{SetTwoAtoms}}
+% \begin{macrocode}
+\def\SetTwoAtoms#1{\setbox0=\hbox{#1}%
+{\white \rule{\wd0}{\ht0}}\kern-\wd0{#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{SetTwoAtomx}
+% \changes{v5.01}{2013/04/06}{New command: \cs{SetTwoAtomx}}
+% \begin{macrocode}
+\def\SetTwoAtomx#1{{\setbox0=\hbox{#1}%
+\@tempdimd=\wd0 \advance\@tempdimd by8\unitlength%
+\@tempdime=\ht0 \advance\@tempdime by8\unitlength%
+\kern-4\unitlength{\white \rule[-4\unitlength]{\@tempdimd}{\@tempdime}}%
+\kern-\@tempdimd{#1}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Original Setting}
+%
+% \begin{macro}{originalsetting}
+% \begin{macrocode}
+\originalpicture%initial setting
+%</chemstr>
+% \end{macrocode}
+% \end{macro}
+%
+% \Finale
+%
+\endinput
diff --git a/Master/texmf-dist/source/latex/xymtex/base/chemstr.ins b/Master/texmf-dist/source/latex/xymtex/base/chemstr.ins
new file mode 100644
index 00000000000..374b426a158
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/chemstr.ins
@@ -0,0 +1,62 @@
+\def\batchfile{chemstr.ins}
+\input docstrip.tex
+\preamble
+
+This is a generated file.
+
+Copyright 1996, 1998, 2001, 2002, 2004, 2005, 2006, 2009, 2010, 2011, 2013 by Shinsaku Fujita
+all rights reserved.
+This style file is created for drawing chemical structural formulas
+This style file is to be contained in the ``xymtex'' directory which
+is an input directory for TeX.
+
+This file is part of the XyMTeX system.
+=======================================
+
+Old Versions:
+Version 1.01 Released on August 16, 1996
+Version 1.02 Released on October 31, 1998 (private version)
+Version 2.00 Released on December 25, 1998
+Version 2.01 Released on June 20, 2001 (private version)
+Version 3.00 Released on April 30, 2002
+Version 4.00 Released on May 30, 2002 (private version)
+Version 4.01 Released on August 30, 2004
+Version 4.01a Released on November 11, 2004
+Version 4.02 Released on December 20, 2004
+Version 4.03 Released on July 20, 2005
+Version 4.03b Released on September 5, 2006
+Version 4.04a Released on July 7, 2009
+Version 5.00 Released on October 01, 2010
+Version 5.01b Released on February 24, 2011
+Version 5.01 Released on March 22, 2013
+
+The Present Version:
+Version 5.01 Released on June 19, 2013
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3
+of this license or (at your option) any later version.
+The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of LaTeX
+version 2005/12/01 or later.
+
+This work has the LPPL maintenance status `maintained'.
+The Current Maintainer of this work is Shinsaku Fujita.
+
+This work consists of the files chemstr.dtx and chemstr.ins
+and the derived file chemstr.sty.
+
+=======================================
+
+\endpreamble
+
+\keepsilent
+
+\generateFile{chemstr.drv}{t}{%
+ \from{chemstr.dtx}{driver}}
+
+\generateFile{chemstr.sty}{t}{%
+ \from{chemstr.dtx}{chemstr}}
+
+\endinput
diff --git a/Master/texmf-dist/source/latex/xymtex/base/doins.bat b/Master/texmf-dist/source/latex/xymtex/base/doins.bat
new file mode 100755
index 00000000000..96a60aed40c
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/doins.bat
@@ -0,0 +1,14 @@
+platex aliphat.ins
+platex carom.ins
+platex ccycle.ins
+platex chemist.ins
+platex chemstr.ins
+platex hcycle.ins
+platex hetarom.ins
+platex hetaromh.ins
+platex locant.ins
+platex lowcycle.ins
+platex polymers.ins
+platex methylen.ins
+platex fusering.ins
+platex sizeredc.ins
diff --git a/Master/texmf-dist/source/latex/xymtex/base/fusering.dtx b/Master/texmf-dist/source/latex/xymtex/base/fusering.dtx
new file mode 100644
index 00000000000..1d7facf5839
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/fusering.dtx
@@ -0,0 +1,4597 @@
+% \iffalse meta-comment
+%% File: fusering.dtx
+%
+% Copyright 1998,2001,2002,2004,2010 by Shinsaku Fujita
+%
+% This file is part of XyMTeX system.
+% -------------------------------------
+%
+% 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].
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+% The Current Maintainer of this work is Shinsaku Fujita.
+%
+% This work consists of the files fusering.dtx and fusering.ins
+% and the derived file fusering.sty.
+%
+% Please report any bugs, comments, suggestions, etc. to:
+% Shinsaku Fujita,
+% Shonan Institute of Chemoinformatics and Mathematical Chemistry
+% Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun, Kanagawa 250-0019 Japan
+% (old address)
+% Ashigara Research Laboratories, Fuji Photo Film Co., Ltd.,
+% Minami-Ashigara, Kanagawa-ken, 250-01, Japan.
+% (old address)
+% Department of Chemistry and Materials Technology,
+% Kyoto Institute of Technology, \\
+% Matsugasaki, Sakyoku, Kyoto, 606 Japan
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{fusering}
+% \def\versi@ndate{December 25, 1998}
+% \def\versi@nno{ver2.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{fusering}
+% \def\versi@ndate{June 20, 2001}
+% \def\versi@nno{ver2.01}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{fusering}
+% \def\versi@ndate{April 30, 2002}
+% \def\versi@nno{ver3.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{fusering}
+% \def\versi@ndate{May 30, 2002}
+% \def\versi@nno{ver4.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{fusering}
+% \def\versi@ndate{August 30, 2004}
+% \def\versi@nno{ver4.01}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \fi
+%
+% \CheckSum{3906}
+%% \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{v2.00}{1998/12/25}{enhanced edition for LaTeX2e}
+% \changes{v2.01}{2001/06/20}{Size reduction and
+% clipping information}
+% \changes{v3.00}{2002/04/30}{sfpicture environment, etc.}
+% \changes{v4.00}{2002/05/30}{PostScript output and ShiftPicEnv}
+% \changes{v5.00}{2010/10/01}{the LaTeX Project Public License}
+% \fi
+%
+% \iffalse
+%<*driver>
+\NeedsTeXFormat{pLaTeX2e}
+% \fi
+\ProvidesFile{fusering.dtx}[2010/10/01 v5.00 XyMTeX{} package file]
+% \iffalse
+\documentclass{ltxdoc}
+\GetFileInfo{fusering.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{Fusing Ring Units by {\sffamily fusering.sty}
+(\fileversion) of \XyMTeX{}}
+\author{Shinsaku Fujita \\
+Shonan Institute of Chemoinformatics and Mathematical Chemistry, \\
+Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun, Kanagawa 250-0019 Japan
+% % (old address)
+% %Department of Chemistry and Materials Technology, \\
+% %Kyoto Institute of Technology, \\
+% %Matsugasaki, Sakyoku, Kyoto, 606-8585 Japan
+% %% (old address)
+% %% Ashigara Research Laboratories,
+% %% Fuji Photo Film Co., Ltd., \\
+% %% Minami-Ashigara, Kanagawa, 250-01 Japan
+}
+\date{\filedate}
+%
+\begin{document}
+ \maketitle
+ \DocInput{fusering.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \section{Introduction}\label{methylen:intro}
+%
+% \subsection{Options for {\sffamily docstrip}}
+%
+% \DeleteShortVerb{\|}
+% \begin{center}
+% \begin{tabular}{|l|l|}
+% \hline
+% \emph{option} & \emph{function}\\ \hline
+% fusering & fusering.sty \\
+% driver & driver for this dtx file \\
+% \hline
+% \end{tabular}
+% \end{center}
+% \MakeShortVerb{\|}
+%
+% \subsection{Version Information}
+%
+% \begin{macrocode}
+%<*fusering>
+\typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 5.00}
+\typeout{ -- Released October 01, 2010 by Shinsaku Fujita}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\j@urnalname{fusering}
+\def\versi@ndate{October 01, 2010}
+\def\versi@nno{ver5.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 fusering.sty}
+%
+% \begin{verbatim}
+% **********************************
+% * fusering.sty: list of commands *
+% **********************************
+%
+% <Six-membered fused ring units>
+% \sixfusev \@sixfusev \sixfuseposv
+% \sixfusevi \@sixfusevi \sixfuseposvi
+% \sixfuseh \@sixfuseh \sixfuseposh
+% \sixfusehi \@sixfusehi \sixfuseposhi
+%
+% <Five-membered fused ring units>
+% \fivefusev \@fivefusev \fivefuseposv
+% \fivefusevi \@fivefusevi \fivefuseposvi
+% \fivefuseh \@fivefuseh \fivefuseposh
+% \fivefusehi \@fivefusehi \fivefuseposhi
+%
+% <Four-membered fused ring units>
+% \fourfuse \@fourfuse \fourfusepos
+%
+% <Three-membered fused ring units>
+% \threefusev \@threefusev \threefuseposv
+% \threefusevi \@threefusevi \threefuseposvi
+% \threefuseh \@threefuseh \threefuseposh
+% \threefusehi \@threefusehi \threefuseposhi
+
+% \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 polymers.sty} for the present case). Hence, the combination
+% of |\input| and |\@ifundefined| is used to crossload sty
+% files ({\sf chemstr.sty} etc. for the present case) in place of the
+% |\RequirePackage| command of \LaTeXe{}.
+%
+% \begin{macrocode}
+% *************************
+% * input of basic macros *
+% *************************
+\@ifundefined{setsixringv}{\input chemstr.sty\relax}{}
+\@ifundefined{bzdrv}{\input carom.sty\relax}{}
+\@ifundefined{hbonde}{\input hetaromh.sty\relax}{}
+\@ifundefined{bonde}{\input hetarom.sty\relax}{}
+\unitlength=0.1pt
+% \end{macrocode}
+%
+% \section{Six-Membered Fusing Units}
+% \subsection{Vertical Type}
+%
+% The command |\sixfusev| produces a six-membered fusing unit
+% of vertical type. The structure produced lacks a given bond
+% in order to realize ring fusion, which produces a new ring system.
+% The following numbering is adopted in this macro.
+% Note that the difference between |\sixfusev| and |\sixuniv|,
+% the latter of which is designed as an inner command for giving
+% a building block with no adjustment of attached sites, while
+% the former has a function of such adjustment.
+%
+% \begin{verbatim}
+% *****************************
+% * six-membered fusing unit *
+% * (vertical type) *
+% *****************************
+%
+% 1
+% f * a
+% 6 * * 2
+% d | | b
+% | |
+% 5 * * 3
+% d * c
+% 4 <===== the original point
+% \end{verbatim}
+%
+% The macro |\sixfusev| has three arguments |ATOMLIST|, |SUBSLIST|
+% and |FUSE| as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \sixfusev(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `f' and a uppercase
+% character `A' or `B'.
+%
+% \begin{verbatim}
+% SKBONDLIST =
+% A: dotted bond for an alpha (down) bond
+% B: boldfaced bond for a beta (upper) bond
+%
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one
+% character selected from a to f, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `$n+$' ($n=1$ to $6$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% none : fully saturated
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,6-double bond
+% f : 6,1-double bond
+% {n+} : plus at the n-nitrogen atom (n = 1 to 6)
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 6 atoms)
+%
+% for n = 1 to 6
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position,
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 6
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% The argument |FUSE| represents one bond to be omitted.
+% The omitted edge is regarded as a fused position.
+%
+% \begin{verbatim}
+% FUSE: one bond omitted (a, b, c, d, e, or f)
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges are regarded as non-fused positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a, b, c, d, e, or f)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \sixfusev{1==N}{1==Cl;2==F}{e}
+% \end{verbatim}
+%
+% \changes{v2.00}{1998/12/25}{New command: \cs{sixfusev}}
+%
+% \begin{macro}{\if@skbondlist}
+% \begin{macrocode}
+%\newif\if@skbondlist
+%\@skbondlistfalse
+% \end{macrocode}
+% \end{macro}% to hetarom.sty
+%
+% \begin{macro}{\sixfusev}
+% \begin{macro}{\@six@fusev}
+% \begin{macro}{\@six@@fusev}
+% \begin{macro}{\@sixfusev}
+% \begin{macrocode}
+\def\sixfusev{\@ifnextchar({\@six@fusev(@}{\@six@fusev(@)}}
+\def\@six@fusev(#1){\@ifnextchar[{\@six@@fusev(#1)[@}%
+{\@six@@fusev(#1)[@]}}
+\def\@six@@fusev(#1)[#2]#3#4#5{\@ifnextchar[%
+{\@sixfusev(#1)[#2]{#3}{#4}{#5}[@}%
+{\@sixfusev(#1)[#2]{#3}{#4}{#5}[@]}}
+\def\@sixfusev(#1)[#2]#3#4#5[#6]{%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+% % treatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniatom\iniflag%initialize%
+\test@vertix@sixv{#3}{a}{b}{c}{d}{e}{f}%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % adjustment of attached positions %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\sixfuseposv{#5}%
+\begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/%
+(800,880)(-\shiftii,-\shifti){sixfusev}%2002/4/30 by S. Fujita
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+% changed FUSE into a list 1993/11/21 by Shinsaku Fujita
+{%
+\resetbdsw%
+\@bond@fuse@omit{#5}{#6}%
+\set@skel@bond{#1}{a}{a}% bond between 1 and 2 \@aaa -> \skbonda etc
+\set@skel@bond{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc
+\set@skel@bond{#1}{c}{c}% bond between 3 and 4 \@ccc -> \skbondc etc
+\set@skel@bond{#1}{d}{d}% bond between 4 and 5 \@ddd -> \skbondd etc
+\set@skel@bond{#1}{e}{e}% bond between 5 and 6 \@eee -> \skbonde etc
+\set@skel@bond{#1}{f}{f}% bond between 6 and 1 \@fff -> \skbondf etc
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r\relax%
+\else\if\member l\relax%
+\else\if\member a\relax%
+ \bonda%
+\else\if\member b\relax%
+ \bondb%
+\else\if\member c\relax%
+ \bondc%
+\else\if\member d\relax%
+ \bondd%
+\else\if\member e\relax%
+ \bonde%
+\else\if\member f\relax%
+ \bondf%
+\else\if\member A\relax%left aromatic circle
+ \Put@oCircle(0,203){240}% %circle
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+% % inner bond attachment %
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+\else \expandafter\twoCH@@R\member//%
+ \set@fusionadd@sixv
+\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\set@hetatom@sixv{#3}{0}{0}{7}{0}% %atom 1--6%
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\setsixringv{#4}{0}{0}{7}{0}%
+\end{ShiftPicEnv}%
+\sixfuseposv{#5}%for FuseWaring when nested
+\iniatom\iniflag}% %end of \sixfusev macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The macro |\sixfuseposv| is used in the definition of
+% the |\sixfusev| macro to detect a fused edge, where
+% the coordinates of a reference terminal (|\fuseAx| and |\fuseAy|)
+% and of the other terminal of the edge (|\fuseBx| and |\fuseBy|)
+% are given for the successive process of adjustment.
+%
+% \begin{macro}{\if@sixfuseposv}
+% \begin{macro}{\sixfuseposv}
+% \begin{macrocode}
+\newif\if@sixfuseposv \@sixfuseposvfalse
+\def\fuseAx{0}
+\def\fuseAy{0}
+\def\fuseBx{0}
+\def\fuseBy{0}
+\def\sixfuseposv#1{%
+\global\@sixfuseposvfalse
+{\resetbdsw%
+\@tfor\memBer:=#1\do{%
+\if\memBer a\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bond at bond `a'}%
+ \else
+ \gdef\fuseAx{0}\gdef\fuseAy{406}%
+ \gdef\fuseBx{171}\gdef\fuseBy{303}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer A\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bond at bond `A'}%
+ \else
+ \gdef\fuseBx{0}\gdef\fuseBy{406}%
+ \gdef\fuseAx{171}\gdef\fuseAy{303}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer b\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bond at bond `b'}%
+ \else
+ \gdef\fuseAx{171}\gdef\fuseAy{303}%
+ \gdef\fuseBx{171}\gdef\fuseBy{103}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer B\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `B'}%
+ \else
+ \gdef\fuseBx{171}\gdef\fuseBy{303}%
+ \gdef\fuseAx{171}\gdef\fuseAy{103}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer c\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `c'}%
+ \else
+ \gdef\fuseAx{171}\gdef\fuseAy{103}%
+ \gdef\fuseBx{0}\gdef\fuseBy{0}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer C\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `C'}%
+ \else
+ \gdef\fuseBx{171}\gdef\fuseBy{103}%
+ \gdef\fuseAx{0}\gdef\fuseAy{0}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer d\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `d'}%
+ \else
+ \gdef\fuseAx{0}\gdef\fuseAy{0}%
+ \gdef\fuseBx{-171}\gdef\fuseBy{103}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer D\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `D'}%
+ \else
+ \gdef\fuseBx{0}\gdef\fuseBy{0}%
+ \gdef\fuseAx{-171}\gdef\fuseAy{103}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer e\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `e'}%
+ \else
+ \gdef\fuseAx{-171}\gdef\fuseAy{103}%
+ \gdef\fuseBx{-171}\gdef\fuseBy{303}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer E\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `E'}%
+ \else
+ \gdef\fuseBx{-171}\gdef\fuseBy{103}%
+ \gdef\fuseAx{-171}\gdef\fuseAy{303}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer f\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `f'}%
+ \else
+ \gdef\fuseAx{-171}\gdef\fuseAy{303}%
+ \gdef\fuseBx{0}\gdef\fuseBy{406}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer F\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `F'}%
+ \else
+ \gdef\fuseBx{-171}\gdef\fuseBy{303}%
+ \gdef\fuseAx{0}\gdef\fuseAy{406}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi}}}% end of the macro \sixfuseposv
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The macro |\@bond@fuse@omit| is used in |\sixfusev| etc.
+% for detecting omitted bonds, where |\@aaa| etc. are empty if
+% they are omitted.
+%
+% \begin{macro}{\@bond@fuse@omit}
+% \begin{macrocode}
+\def\@bond@fuse@omit#1#2{%
+\ifx#1a\relax\gdef\@aaa{}\fi
+\ifx#1b\relax\gdef\@bbb{}\fi
+\ifx#1c\relax\gdef\@ccc{}\fi
+\ifx#1d\relax\gdef\@ddd{}\fi
+\ifx#1e\relax\gdef\@eee{}\fi
+\ifx#1f\relax\gdef\@fff{}\fi
+\ifx#1A\relax\gdef\@aaa{}\fi
+\ifx#1B\relax\gdef\@bbb{}\fi
+\ifx#1C\relax\gdef\@ccc{}\fi
+\ifx#1D\relax\gdef\@ddd{}\fi
+\ifx#1E\relax\gdef\@eee{}\fi
+\ifx#1F\relax\gdef\@fff{}\fi
+%%%%
+\@tfor\memBer:=#2\do{%
+\if\memBer a\relax\gdef\@aaa{}%
+ \ifx#1a\relax
+ \XyMTeXWarning{Double spec. of bond `a' in FUSE and OMIT}\fi
+\fi%
+\if\memBer A\relax\gdef\@aaa{}%
+ \ifx#1a\relax
+ \XyMTeXWarning{Double spec. of bond `a' in FUSE and OMIT}\fi
+\fi%
+\if\memBer b\relax\gdef\@bbb{}%
+ \ifx#1b\relax
+ \XyMTeXWarning{Double spec. of bond `b' in FUSE and OMIT}\fi
+\fi%
+\if\memBer B\relax\gdef\@bbb{}%
+ \ifx#1b\relax
+ \XyMTeXWarning{Double spec. of bond `b' in FUSE and OMIT}\fi
+\fi%
+\if\memBer c\relax\gdef\@ccc{}%
+ \ifx#1c\relax
+ \XyMTeXWarning{Double spec. of bond `c' in FUSE and OMIT}\fi
+\fi%
+\if\memBer C\relax\gdef\@ccc{}%
+ \ifx#1c\relax
+ \XyMTeXWarning{Double spec. of bond `c' in FUSE and OMIT}\fi
+\fi%
+\if\memBer d\relax\gdef\@ddd{}%
+ \ifx#1d\relax
+ \XyMTeXWarning{Double spec. of bond `d' in FUSE and OMIT}\fi
+\fi%
+\if\memBer D\relax\gdef\@ddd{}%
+ \ifx#1d\relax
+ \XyMTeXWarning{Double spec. of bond `d' in FUSE and OMIT}\fi
+\fi%
+\if\memBer e\relax\gdef\@eee{}%
+ \ifx#1e\relax
+ \XyMTeXWarning{Double spec. of bond `e' in FUSE and OMIT}\fi
+\fi%
+\if\memBer E\relax\gdef\@eee{}%
+ \ifx#1e\relax
+ \XyMTeXWarning{Double spec. of bond `e' in FUSE and OMIT}\fi
+\fi%
+\if\memBer f\relax\gdef\@fff{}%
+ \ifx#1f\relax
+ \XyMTeXWarning{Double spec. of bond `f' in FUSE and OMIT}\fi
+\fi%
+\if\memBer F\relax\gdef\@fff{}%
+ \ifx#1f\relax
+ \XyMTeXWarning{Double spec. of bond `f' in FUSE and OMIT}\fi
+\fi%
+}}%
+% \end{macrocode}
+% \end{macro}
+%
+% The macros |\sixunitv| has been revived for compativility.
+% \changes{v3.00}{2002/4/30}{Revived command: \cs{sixunitv}}
+%
+% \begin{macro}{\sixunitv}
+% \begin{macrocode}
+\def\sixunitv{\@ifnextchar[{\@six@unitv}{\@six@unitv[@]}}
+\def\@six@unitv[#1]#2#3#4{\sixfusev[#1]{#2}{#3}{#4}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Inverse Vertical Type}
+%
+% The command |\sixfusevi| produces a six-membered fusing unit
+% of vertical type. The structure produced lacks a given bond
+% in order to realize ring fusion, which produces a new ring system.
+% The following numbering is adopted in this macro.
+% Note that the difference between |\sixfusevi| and |\sixunivi|,
+% the latter of which is designed as an inner command for giving
+% a building block with no adjustment of attached sites, while
+% the former has a function of such adjustment.
+%
+% \begin{verbatim}
+% *****************************
+% * six-membered fusing unit *
+% * (inverse vertical type) *
+% *****************************
+%
+% 4
+% d * c
+% 5 * * 3
+% e | | b
+% | |
+% 6 * * 2
+% f * a
+% 1 <===== the original point
+% \end{verbatim}
+%
+% The macro |\sixfusevi| has three arguments |ATOMLIST|, |SUBSLIST|
+% and |FUSE| as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \sixfusevi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `f' and a uppercase
+% character `A' or `B'.
+%
+% \begin{verbatim}
+% SKBONDLIST =
+% A: dotted bond for an alpha (down) bond
+% B: boldfaced bond for a beta (upper) bond
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one
+% character selected from a to f, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `$n+$' ($n=1$ to $6$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% none : fully saturated
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,6-double bond
+% f : 6,1-double bond
+% {n+} : plus at the n-nitrogen atom (n = 1 to 6)
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 6 atoms)
+%
+% for n = 1 to 6
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position,
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 6
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% The argument |FUSE| represents one bond to be omitted.
+% The omitted edge is regarded as a fused position.
+%
+% \begin{verbatim}
+% FUSE: one bond omitted (a, b, c, d, e, or f)
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges are regarded as non-fused positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a, b, c, d, e, or f)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \sixfusevi{1==N}{1==Cl;2==F}{e}
+% \end{verbatim}
+%
+% \changes{v2.00}{1998/12/25}{New command: \cs{sixfusevi}}
+%
+% \begin{macro}{\sixfusevi}
+% \begin{macro}{\@six@fusevi}
+% \begin{macro}{\@six@@fusevi}
+% \begin{macro}{\@sixfusevi}
+% \begin{macrocode}
+\def\sixfusevi{\@ifnextchar({\@six@fusevi(@}{\@six@fusevi(@)}}
+\def\@six@fusevi(#1){\@ifnextchar[{\@six@@fusevi(#1)[@}%
+{\@six@@fusevi(#1)[@]}}
+\def\@six@@fusevi(#1)[#2]#3#4#5{\@ifnextchar[%
+{\@sixfusevi(#1)[#2]{#3}{#4}{#5}[@}%
+{\@sixfusevi(#1)[#2]{#3}{#4}{#5}[@]}}
+\def\@sixfusevi(#1)[#2]#3#4#5[#6]{%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+% % treatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniatom\iniflag%initialize%
+\test@vertix@sixv{#3}{d}{c}{b}{a}{f}{e}%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % adjustment of attached positions %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\sixfuseposvi{#5}%
+\begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/%
+(800,880)(-\shiftii,-\shifti){sixfusevi}%2002/4/30 by S. Fujita
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+% changed FUSE into a list 1993/11/21 by Shinsaku Fujita
+{\resetbdsw%
+\@bond@fuse@omit{#5}{#6}%
+\set@skel@bond{#1}{a}{c}% bond between 1 and 2 \@aaa -> \skbondc etc
+\set@skel@bond{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc
+\set@skel@bond{#1}{c}{a}% bond between 3 and 4 \@ccc -> \skbonda etc
+\set@skel@bond{#1}{d}{f}% bond between 4 and 5 \@ddd -> \skbondf etc
+\set@skel@bond{#1}{e}{e}% bond between 5 and 6 \@eee -> \skbonde etc
+\set@skel@bond{#1}{f}{d}% bond between 6 and 1 \@fff -> \skbondd etc
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r\relax%
+\else\if\member l\relax%
+\else\if\member a\relax%
+ \bondc%
+\else\if\member b\relax%
+ \bondb%
+\else\if\member c\relax%
+ \bonda%
+\else\if\member d\relax%
+ \bondf%
+\else\if\member e\relax%
+ \bonde%
+\else\if\member f\relax%
+ \bondd%
+\else\if\member A%left aromatic circle
+ \Put@oCircle(0,203){240}% %circle
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+% % inner bond attachment %
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+\else \expandafter\twoCH@@R\member//%
+ \set@fusionadd@sixvi
+\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\set@hetatom@sixv{#3}{5}{0}{5}{-1}% %atom 1--4%
+\set@hetatom@sixv{#3}{11}{4}{7}{-1}% %atom 5 and 6%
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\setsixringv{#4}{5}{0}{5}{-1}% %subst 1--4
+\setsixringv{#4}{11}{4}{7}{-1}% %subst 5 and 6
+\end{ShiftPicEnv}%
+\sixfuseposvi{#5}%%for FuseWaring when nested
+\iniatom\iniflag}% %end of \sixfusevi macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The macro |\sixfuseposvi| is used in the definition of
+% the |\sixfusevi| macro to detect a fused edge, where
+% the coordinates of a reference terminal (|\fuseAx| and |\fuseAy|)
+% and of the other terminal of the edge (|\fuseBx| and |\fuseBy|)
+% are given for the successive process of adjustment.
+%
+% \begin{macro}{\sixfuseposvi}
+% \begin{macrocode}
+\def\sixfuseposvi#1{%
+\global\@sixfuseposvfalse
+{\resetbdsw%
+\@tfor\memBer:=#1\do{%
+\if\memBer c\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `c'}%
+ \else
+ \gdef\fuseBx{0}\gdef\fuseBy{406}%
+ \gdef\fuseAx{171}\gdef\fuseAy{303}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer C\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `C'}%
+ \else
+ \gdef\fuseAx{0}\gdef\fuseAy{406}%
+ \gdef\fuseBx{171}\gdef\fuseBy{303}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer b\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `b'}%
+ \else
+ \gdef\fuseBx{171}\gdef\fuseBy{303}%
+ \gdef\fuseAx{171}\gdef\fuseAy{103}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer B\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `B'}%
+ \else
+ \gdef\fuseAx{171}\gdef\fuseAy{303}%
+ \gdef\fuseBx{171}\gdef\fuseBy{103}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer a\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `a'}%
+ \else
+ \gdef\fuseBx{171}\gdef\fuseBy{103}%
+ \gdef\fuseAx{0}\gdef\fuseAy{0}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer A\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `A'}%
+ \else
+ \gdef\fuseAx{171}\gdef\fuseAy{103}%
+ \gdef\fuseBx{0}\gdef\fuseBy{0}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer f\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `f'}%
+ \else
+ \gdef\fuseBx{0}\gdef\fuseBy{0}%
+ \gdef\fuseAx{-171}\gdef\fuseAy{103}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer F\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `F'}%
+ \else
+ \gdef\fuseAx{0}\gdef\fuseAy{0}%
+ \gdef\fuseBx{-171}\gdef\fuseBy{103}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer e\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `e'}%
+ \else
+ \gdef\fuseBx{-171}\gdef\fuseBy{103}%
+ \gdef\fuseAx{-171}\gdef\fuseAy{303}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer E\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `E'}%
+ \else
+ \gdef\fuseAx{-171}\gdef\fuseAy{103}%
+ \gdef\fuseBx{-171}\gdef\fuseBy{303}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer d\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `d'}%
+ \else
+ \gdef\fuseBx{-171}\gdef\fuseBy{303}%
+ \gdef\fuseAx{0}\gdef\fuseAy{406}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer D\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `D'}%
+ \else
+ \gdef\fuseAx{-171}\gdef\fuseAy{303}%
+ \gdef\fuseBx{0}\gdef\fuseBy{406}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+}}}% end of the macro \sixfuseposvi
+% \end{macrocode}
+% \end{macro}
+%
+% The macros |\sixunitvi| has been revived for compativility.
+% \changes{v3.00}{2002/4/30}{Revived command: \cs{sixunitvi}}
+%
+% \begin{macro}{\sixunitvi}
+% \begin{macrocode}
+\def\sixunitvi{\@ifnextchar[{\@six@unitvi}{\@six@unitvi[@]}}
+\def\@six@unitvi[#1]#2#3#4{\sixfusevi[#1]{#2}{#3}{#4}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Normal Horizontal Type}
+%
+% The command |\sixfuseh| produces a six-membered fusing unit
+% of horizontal type. The structure produced lacks a given bond
+% in order to realize ring fusion, which produces a new ring system.
+% The following numbering is adopted in this macro.
+% Note that the difference between |\sixfuseh| and |\sixunih|,
+% the latter of which is designed as an inner command for giving
+% a building block with no adjustment of attached sites, while
+% the former has a function of such adjustment.
+%
+% \begin{verbatim}
+% *****************************
+% * six-membered fusing unit *
+% * (horizontal type) *
+% *****************************
+% b
+% 2 3
+% a ----- c
+% * *
+% the original point ===> 1 * * 4
+% (0,0) * * d
+% f -----
+% 6 5
+% e
+% \end{verbatim}
+%
+% The macro |\sixfuseh| has three arguments |ATOMLIST|, |SUBSLIST|
+% and |FUSE| as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \sixfuseh(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `f' and a uppercase
+% character `A' or `B'.
+%
+% The |BONDLIST| argument contains one
+% character selected from a to f, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `$n+$' ($n=1$ to $6$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% none : fully saturated
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,6-double bond
+% f : 6,1-double bond
+% {n+} : plus at the n-nitrogen atom (n = 1 to 6)
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 6 atoms)
+%
+% for n = 1 to 6
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position,
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 6
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% The argument |FUSE| represents one bond to be omitted.
+% The omitted edge is regarded as a fused position.
+%
+% \begin{verbatim}
+% FUSE: one bond omitted (a, b, c, d, e, or f)
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges are regarded as non-fused positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a, b, c, d, e, or f)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \sixfuseh{1==N}{1==Cl;2==F}{e}
+% \end{verbatim}
+%
+% The definition of |\sixfuseh| uses a picture environment and
+% consists of the same unit processes as shown in |\sixheteroh|:
+% \begin{enumerate}
+% \item treatment of atom list,
+% \item placing outer skeletons,
+% \item placing inner double bonds,
+% \item setting hetero atoms, and
+% \item placing substituents by using |\setsixringh|.
+% \end{enumerate}
+% \changes{v2.00}{1998/12/29}{New command: \cs{sixfuseh}}
+%
+% \begin{macro}{\sixfuseh}
+% \begin{macro}{\@six@fuseh}
+% \begin{macro}{\@six@@fuseh}
+% \begin{macro}{\@sixfuseh}
+% \begin{macrocode}
+\def\sixfuseh{\@ifnextchar({\@six@fuseh(@}{\@six@fuseh(@)}}
+\def\@six@fuseh(#1){\@ifnextchar[{\@six@@fuseh(#1)[@}%
+{\@six@@fuseh(#1)[@]}}
+\def\@six@@fuseh(#1)[#2]#3#4#5{\@ifnextchar[%
+{\@sixfuseh(#1)[#2]{#3}{#4}{#5}[@}%
+{\@sixfuseh(#1)[#2]{#3}{#4}{#5}[@]}}
+\def\@sixfuseh(#1)[#2]#3#4#5[#6]{%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+% % treatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniatom\iniflag%initialize%
+\test@vrtx@sixh{#3}%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % adjustment of attached positions %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\sixfuseposh{#5}%
+\begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/%
+(800,880)(-240,-400){sixfuseh}%2002/4/30 by S. Fujita
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+% changed FUSE into a list 1993/11/21 by Shinsaku Fujita
+{\resetbdsw%
+\@bond@fuse@omit{#5}{#6}%
+\set@skel@bondh{#1}{a}{a}% bond between 1 and 2 \@aaa -> \hskbonda etc
+\set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc
+\set@skel@bondh{#1}{c}{c}% bond between 3 and 4 \@ccc -> \hskbondc etc
+\set@skel@bondh{#1}{d}{d}% bond between 4 and 5 \@ddd -> \hskbondd etc
+\set@skel@bondh{#1}{e}{e}% bond between 5 and 6 \@eee -> \hskbonde etc
+\set@skel@bondh{#1}{f}{f}% bond between 6 and 1 \@fff -> \hskbondf etc
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r\relax%
+\else \if\member l\relax%
+\else \if\member a\relax%
+ \hbonda%
+\else \if\member b\relax%
+ \hbondb%
+\else \if\member c\relax%
+ \hbondc%
+\else \if\member d\relax%
+ \hbondd%
+\else \if\member e\relax%
+ \hbonde%
+\else \if\member f\relax%
+ \hbondf%
+\else \if\member A%left aromatic circle
+ \Put@oCircle(203,0){240}% %circle
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+% % inner bond attachment %
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+\else \expandafter\twoCH@@R\member//%
+ \set@fusionadd@sixh
+\fi\fi\fi\fi\fi\fi\fi\fi\fi}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\set@hetatom@sixh{#3}{0}{0}{7}{0}% %atom 1--6%
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\setsixringh{#4}{0}{0}{7}{0}%
+\end{ShiftPicEnv}%
+\sixfuseposh{#5}%%for FuseWaring when nested
+\iniatom\iniflag}% %end of \sixfuseh macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The macro |\sixfuseposh| is used in the definition of
+% the |\sixfuseh| macro to detect a fused edge, where
+% the coordinates of a reference terminal (|\fuseAx| and |\fuseAy|)
+% and of the other terminal of the edge (|\fuseBx| and |\fuseBy|)
+% are given for the successive process of adjustment.
+%
+% \begin{macro}{\sixfuseposh}
+% \begin{macrocode}
+\def\sixfuseposh#1{%
+\global\@sixfuseposvfalse
+{\resetbdsw%
+\@tfor\memBer:=#1\do{%
+\if\memBer a\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bond at bond `a'}%
+ \else
+ \gdef\fuseAx{0}\gdef\fuseAy{0}%
+ \gdef\fuseBx{103}\gdef\fuseBy{171}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer A\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bond at bond `A'}%
+ \else
+ \gdef\fuseBx{0}\gdef\fuseBy{0}%
+ \gdef\fuseAx{103}\gdef\fuseAy{171}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer b\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bond at bond `b'}%
+ \else
+ \gdef\fuseAx{103}\gdef\fuseAy{171}%
+ \gdef\fuseBx{303}\gdef\fuseBy{171}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer B\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `B'}%
+ \else
+ \gdef\fuseBx{103}\gdef\fuseBy{171}%
+ \gdef\fuseAx{303}\gdef\fuseAy{171}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer c\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `c'}%
+ \else
+ \gdef\fuseAx{303}\gdef\fuseAy{171}%
+ \gdef\fuseBx{406}\gdef\fuseBy{0}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer C\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `C'}%
+ \else
+ \gdef\fuseBx{303}\gdef\fuseBy{171}%
+ \gdef\fuseAx{406}\gdef\fuseAy{0}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer d\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `d'}%
+ \else
+ \gdef\fuseAx{406}\gdef\fuseAy{0}%
+ \gdef\fuseBx{303}\gdef\fuseBy{-171}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer D\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `D'}%
+ \else
+ \gdef\fuseBx{406}\gdef\fuseBy{0}%
+ \gdef\fuseAx{303}\gdef\fuseAy{-171}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer e\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `e'}%
+ \else
+ \gdef\fuseAx{303}\gdef\fuseAy{-171}%
+ \gdef\fuseBx{103}\gdef\fuseBy{-171}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer E\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `E'}%
+ \else
+ \gdef\fuseBx{303}\gdef\fuseBy{-171}%
+ \gdef\fuseAx{103}\gdef\fuseAy{-171}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer f\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `f'}%
+ \else
+ \gdef\fuseAx{103}\gdef\fuseAy{-171}%
+ \gdef\fuseBx{0}\gdef\fuseBy{0}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer F\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `F'}%
+ \else
+ \gdef\fuseBx{103}\gdef\fuseBy{-171}%
+ \gdef\fuseAx{0}\gdef\fuseAy{0}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi}}}% end of the macro \sixfuseposh
+% \end{macrocode}
+% \end{macro}
+%
+% The macros |\sixunith| has been revived for compativility.
+% \changes{v3.00}{2002/4/30}{Revived command: \cs{sixunith}}
+%
+% \begin{macro}{\sixunith}
+% \begin{macrocode}
+\def\sixunith{\@ifnextchar[{\@six@unith}{\@six@unith[@]}}
+\def\@six@unith[#1]#2#3#4{\sixfuseh[#1]{#2}{#3}{#4}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Inverse Horizontal Type}
+%
+% The command |\sixfusehi| produces a six-membered fusing unit
+% of inverse horizontal type. The structure produced lacks a given bond
+% in order to realize ring fusion, which produces a new ring system.
+% The following numbering is adopted in this macro.
+%
+% \begin{verbatim}
+% *****************************
+% * six-membered fusing unit *
+% * (inverse horizontal type) *
+% *****************************
+% b
+% 3 2
+% c ----- a
+% * *
+% 4 * * 1 <== the original point (0,0)
+% * * f
+% d -----
+% 5 6
+% e
+% \end{verbatim}
+%
+% The macro |\sixfusehi| has three arguments |ATOMLIST|, |SUBSLIST|
+% and |FUSE| as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \sixfusehi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `f' and a uppercase
+% character `A' or `B'.
+%
+% The |BONDLIST| argument contains one
+% character selected from a to f, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `$n+$' ($n=1$ to $6$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% none : fully saturated
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,6-double bond
+% f : 6,1-double bond
+% {n+} : plus at the n-nitrogen atom (n = 1 to 6)
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 6 atoms)
+%
+% for n = 1 to 6
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position,
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 6
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% The argument |FUSE| represents one bond to be omitted.
+% The omitted edge is regarded as a fused position.
+%
+% \begin{verbatim}
+% FUSE: one bond omitted (a, b, c, d, e, or f)
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges are regarded as non-fused positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a, b, c, d, e, or f)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \sixfusehi{1==N}{1==Cl;2==F}{e}
+% \end{verbatim}
+%
+% \changes{v2.00}{1998/12/29}{New command: \cs{sixfusehi}}
+%
+% \begin{macro}{\sixfusehi}
+% \begin{macro}{\@six@fusehi}
+% \begin{macro}{\@six@@fusehi}
+% \begin{macro}{\@sixfusehi}
+% \begin{macrocode}
+\def\sixfusehi{\@ifnextchar({\@six@fusehi(@}{\@six@fusehi(@)}}
+\def\@six@fusehi(#1){\@ifnextchar[{\@six@@fusehi(#1)[@}%
+{\@six@@fusehi(#1)[@]}}
+\def\@six@@fusehi(#1)[#2]#3#4#5{\@ifnextchar[%
+{\@sixfusehi(#1)[#2]{#3}{#4}{#5}[@}%
+{\@sixfusehi(#1)[#2]{#3}{#4}{#5}[@]}}
+\def\@sixfusehi(#1)[#2]#3#4#5[#6]{%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+% % treatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniatom\iniflag%initialize%
+\test@vrtx@sixhi{#3}%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % adjustment of attached positions %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\sixfuseposhi{#5}%
+\begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/%
+(800,880)(-240,-400){sixfusehi}%2002/4/30 by S. Fujita
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+% changed FUSE into a list 1993/11/21 by Shinsaku Fujita
+{\resetbdsw%
+\@bond@fuse@omit{#5}{#6}%
+\set@skel@bondh{#1}{a}{c}% bond between 1 and 2 \@aaa -> \hskbondc etc
+\set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc
+\set@skel@bondh{#1}{c}{a}% bond between 3 and 4 \@ccc -> \hskbonda etc
+\set@skel@bondh{#1}{d}{f}% bond between 4 and 5 \@ddd -> \hskbondf etc
+\set@skel@bondh{#1}{e}{e}% bond between 5 and 6 \@eee -> \hskbonde etc
+\set@skel@bondh{#1}{f}{d}% bond between 6 and 1 \@fff -> \hskbondd etc
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r\relax%
+\else \if\member l\relax%
+\else \if\member a\relax%
+ \hbondc%
+\else \if\member b\relax%
+ \hbondb%
+\else \if\member c\relax%
+ \hbonda%
+\else \if\member d\relax%
+ \hbondf%
+\else \if\member e\relax%
+ \hbonde%
+\else \if\member f\relax%
+ \hbondd%
+\else \if\member A%left aromatic circle
+ \Put@oCircle(203,0){240}% %circle
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+% % inner bond attachment %
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+\else \expandafter\twoCH@@R\member//%
+ \set@fusionadd@sixhi
+\fi\fi\fi\fi\fi\fi\fi\fi\fi}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\set@hetatom@sixh{#3}{5}{0}{5}{-1}% %subst 1--4
+\set@hetatom@sixh{#3}{11}{4}{7}{-1}% %subst 5 and 6
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\setsixringh{#4}{5}{0}{5}{-1}% %subst 1--4
+\setsixringh{#4}{11}{4}{7}{-1}% %subst 5 and 6
+\end{ShiftPicEnv}%
+\sixfuseposhi{#5}%%for FuseWaring when nested
+\iniatom\iniflag}% %end of \sixfusehi macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The macro |\sixfuseposhi| is used in the definition of
+% the |\sixfusehi| macro to detect a fused edge, where
+% the coordinates of a reference terminal (|\fuseAx| and |\fuseAy|)
+% and of the other terminal of the edge (|\fuseBx| and |\fuseBy|)
+% are given for the successive process of adjustment.
+%
+% \begin{macro}{\sixfuseposhi}
+% \begin{macrocode}
+\def\sixfuseposhi#1{%
+\global\@sixfuseposvfalse
+{\resetbdsw%
+\@tfor\memBer:=#1\do{%
+\if\memBer C\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bond at bond `C'}%
+ \else
+ \gdef\fuseAx{0}\gdef\fuseAy{0}%
+ \gdef\fuseBx{103}\gdef\fuseBy{171}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer c\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bond at bond `c'}%
+ \else
+ \gdef\fuseBx{0}\gdef\fuseBy{0}%
+ \gdef\fuseAx{103}\gdef\fuseAy{171}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer B\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bond at bond `B'}%
+ \else
+ \gdef\fuseAx{103}\gdef\fuseAy{171}%
+ \gdef\fuseBx{303}\gdef\fuseBy{171}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer b\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `b'}%
+ \else
+ \gdef\fuseBx{103}\gdef\fuseBy{171}%
+ \gdef\fuseAx{303}\gdef\fuseAy{171}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer A\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `A'}%
+ \else
+ \gdef\fuseAx{303}\gdef\fuseAy{171}%
+ \gdef\fuseBx{406}\gdef\fuseBy{0}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer a\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `a'}%
+ \else
+ \gdef\fuseBx{303}\gdef\fuseBy{171}%
+ \gdef\fuseAx{406}\gdef\fuseAy{0}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer F\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `F'}%
+ \else
+ \gdef\fuseAx{406}\gdef\fuseAy{0}%
+ \gdef\fuseBx{303}\gdef\fuseBy{-171}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer f\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `f'}%
+ \else
+ \gdef\fuseBx{406}\gdef\fuseBy{0}%
+ \gdef\fuseAx{303}\gdef\fuseAy{-171}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer E\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `E'}%
+ \else
+ \gdef\fuseAx{303}\gdef\fuseAy{-171}%
+ \gdef\fuseBx{103}\gdef\fuseBy{-171}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer e\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `e'}%
+ \else
+ \gdef\fuseBx{303}\gdef\fuseBy{-171}%
+ \gdef\fuseAx{103}\gdef\fuseAy{-171}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer D\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `D'}%
+ \else
+ \gdef\fuseAx{103}\gdef\fuseAy{-171}%
+ \gdef\fuseBx{0}\gdef\fuseBy{0}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer d\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `d'}%
+ \else
+ \gdef\fuseBx{103}\gdef\fuseBy{-171}%
+ \gdef\fuseAx{0}\gdef\fuseAy{0}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi}}}% end of the macro \sixfuseposhi
+% \end{macrocode}
+% \end{macro}
+%
+%
+% The macros |\sixunithi| has been revived for compativility.
+% \changes{v3.00}{2002/4/30}{Revived command: \cs{sixunithi}}
+%
+% \begin{macro}{\sixunithi}
+% \begin{macrocode}
+\def\sixunithi{\@ifnextchar[{\@six@unithi}{\@six@unithi[@]}}
+\def\@six@unithi[#1]#2#3#4{\sixfusehi[#1]{#2}{#3}{#4}}
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Five-membered fused ring unit}
+% \subsection{Vertical type}
+%
+% The macro |\fivefusev| is a five-membered fragment that can be
+% fused to another
+% ring structure to produce a new ring system. The following
+% numbering is adopted in this macro.
+%
+% \begin{verbatim}
+% **********************
+% * five-membered fused*
+% * (vertical type) *
+% **********************
+%
+% 4 _______ 3
+% | |
+% | |
+% 5 * * 2
+% *
+% 1 <===== the original point
+% \end{verbatim}
+%
+% The macro |\fivefusev| has three arguments |ATOMLIST|, |SUBSLIST|
+% and |FUSE| as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \fivefusev(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `f' and a uppercase
+% character `A' or `B'.
+%
+% The |BONDLIST| argument contains one
+% character selected from a to e, each of
+% which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `$n+$' ($n=1$ to $5$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+% BONDLIST: list of inner double bonds
+%
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,1-double bond
+% {n+} : plus at the n-nitrogen atom (n = 1 to 5)
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 5 atoms)
+%
+% for n = 1 to 5
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 5
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% The argument |FUSE| represents one bond to be omitted for fusion.
+% The omitted edge is regarded as a fused position.
+%
+% \begin{verbatim}
+% FUSE: one bond omitted (a, b, c, d, or e)
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges are regarded as non-fused positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a, b, c, d, or e)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \fivefusev{1==N}{1==H;2==F}{a}
+% \end{verbatim}
+%
+% \begin{macro}{\fivefusev}
+% \begin{macro}{\@five@fusev}
+% \begin{macro}{\@five@@fusev}
+% \begin{macro}{\@fivefusev}
+% \begin{macrocode}
+\def\fivefusev{\@ifnextchar({\@five@fusev(@}{\@five@fusev(@)}}
+\def\@five@fusev(#1){\@ifnextchar[{\@five@@fusev(#1)[@}%
+{\@five@@fusev(#1)[@]}}
+\def\@five@@fusev(#1)[#2]#3#4#5{\@ifnextchar[%
+{\@fivefusev(#1)[#2]{#3}{#4}{#5}[@}%
+{\@fivefusev(#1)[#2]{#3}{#4}{#5}[@]}}
+\def\@fivefusev(#1)[#2]#3#4#5[#6]{%
+\iniatom\iniflag%initialize
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+% % treatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+\test@vertix@sixv{#3}{d}{c}{b}{f}{e}{@}%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % adjustment of attached positions %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\fivefuseposv{#5}%
+\begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/%
+(800,880)(-\shiftii,-\shifti){fivefusev}%2002/4/30 by S. Fujita
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%
+% %% outer skeleton %
+% %%%%%%%%%%%%%%%%%%%
+% changed FUSE to a list 1993/11/21 by Shinsaku Fujita
+{\resetbdsw%
+\@bond@fuse@omit{#5}{#6}%
+\set@skel@bond{#1}{a}{c}% bond between 1 and 2 \@aaa -> \skbondc etc
+\set@skel@bond{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc
+\set@skel@longbond{#1}{c}{skbondhoriz}%
+ % bond between 3 and 4 \@ccc -> \skbondhoriz etc
+\set@skel@bond{#1}{d}{e}% bond between 4 and 5 \@ddd -> \skbonde etc
+\set@skel@bond{#1}{e}{d}% bond between 5 and 1 \@eee -> \skbondd etc
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%
+% %% inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r%
+\else\if\member a\relax%
+ \bondc%
+\else\if\member b\relax%
+ \bondb%
+\else\if\member c\relax%
+ \bondhoriz%
+\else\if\member d\relax%
+ \bonde%
+\else\if\member e\relax%
+ \bondd%
+\else
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+% % inner bond attachment %
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+ \expandafter\twoCH@@R\member//%
+ \set@fusionadd@fivev
+\fi\fi\fi\fi\fi\fi}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%
+% % setting heteroatoms %
+% %%%%%%%%%%%%%%%%%%%%%%%
+\set@hetatom@sixv{#3}{5}{1}{5}{-1}% % for 1 to 3
+\set@hetatom@sixv{#3}{10}{4}{7}{-1}% % for 4 to 5
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\setsixringv{#4}{5}{1}{5}{-1}% % for 1 to 3
+\setsixringv{#4}{10}{4}{7}{-1}% % for 4 to 5
+\end{ShiftPicEnv}%
+{\let\XyMTeXWarning\@gobble
+\fivefuseposv{#5}}%%for FuseWaring when nested
+\iniatom\iniflag}%end of \fivefusev macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The macro |\fivefuseposv| is used in the definition of
+% the |\fivefusev| macro to detect a fused edge, where
+% the coordinates of a reference terminal (|\fuseAx| and |\fuseAy|)
+% and of the other terminal of the edge (|\fuseBx| and |\fuseBy|)
+% are given for the successive process of adjustment.
+%
+% \begin{macro}{\fivefuseposv}
+% \begin{macrocode}
+\def\fivefuseposv#1{%
+\global\@sixfuseposvfalse
+{\resetbdsw%
+\@tfor\memBer:=#1\do{%
+\if\memBer c\relax
+ \XyMTeXWarning{Not-used fusion at bond `c'}%
+\fi
+\if\memBer C\relax
+ \XyMTeXWarning{Not-used fusion at bond `C'}%
+\fi
+\if\memBer b\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `b'}%
+ \else
+ \gdef\fuseBx{171}\gdef\fuseBy{303}%
+ \gdef\fuseAx{171}\gdef\fuseAy{103}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer B\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `B'}%
+ \else
+ \gdef\fuseAx{171}\gdef\fuseAy{303}%
+ \gdef\fuseBx{171}\gdef\fuseBy{103}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer a\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `a'}%
+ \else
+ \gdef\fuseBx{171}\gdef\fuseBy{103}%
+ \gdef\fuseAx{0}\gdef\fuseAy{0}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer A\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `A'}%
+ \else
+ \gdef\fuseAx{171}\gdef\fuseAy{103}%
+ \gdef\fuseBx{0}\gdef\fuseBy{0}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer e\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `f'}%
+ \else
+ \gdef\fuseBx{0}\gdef\fuseBy{0}%
+ \gdef\fuseAx{-171}\gdef\fuseAy{103}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer E\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `F'}%
+ \else
+ \gdef\fuseAx{0}\gdef\fuseAy{0}%
+ \gdef\fuseBx{-171}\gdef\fuseBy{103}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer d\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `e'}%
+ \else
+ \gdef\fuseBx{-171}\gdef\fuseBy{103}%
+ \gdef\fuseAx{-171}\gdef\fuseAy{303}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer D\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `E'}%
+ \else
+ \gdef\fuseAx{-171}\gdef\fuseAy{103}%
+ \gdef\fuseBx{-171}\gdef\fuseBy{303}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+}}}% end of the macro \fivefuseposv
+% \end{macrocode}
+% \end{macro}
+%
+% The macros |\fiveunitv| has been revived for compativility.
+% \changes{v3.00}{2002/4/30}{Revived command: \cs{fiveunitv}}
+%
+% \begin{macro}{\fiveunitv}
+% \begin{macrocode}
+\def\fiveunitv{\@ifnextchar[{\@five@unitv}{\@five@unitv[@]}}
+\def\@five@unitv[#1]#2#3#4{\fivefusev[#1]{#2}{#3}{#4}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Inverse vertical type}
+%
+% The macro |\fivefusevi| typesets a five-membered fragment that can be
+% fused to another
+% ring structure to produce a new ring system. The following
+% numbering is adopted in this macro.
+%
+% \begin{verbatim}
+% ************************************
+% * five-membered fusing unit *
+% * (vertical type, inverse type) *
+% ************************************
+%
+% 1
+% *
+% 6 * * 2
+% | |
+% |_____|
+% 4 3
+% *
+% (0,0) <===== the original point
+% \end{verbatim}
+%
+% The macro |\fivefusevi| has three arguments |ATOMLIST|, |SUBSLIST|
+% and |FUSE| as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \fivefusevi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `f' and a uppercase
+% character `A' or `B'.
+%
+% The |BONDLIST| argument contains one
+% character selected from a to e, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `$n+$' ($n=1$ to $5$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+% BONDLIST: list of inner double bonds
+%
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,1-double bond
+% {n+} : plus at the n-nitrogen atom (n = 1 to 5)
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 5 atoms)
+%
+% for n = 1 to 5
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 5
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% The argument |FUSE| represents one bond to be omitted.
+% The omitted edge is regarded as a fused position.
+%
+% \begin{verbatim}
+% FUSE: one bond omitted (a, b, c, d, or e)
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges are regarded as non-fused positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a, b, c, d, or e)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \fivefusevi{1==N}{1==H;2==F}{a}
+% \end{verbatim}
+%
+% \begin{macro}{\fivefusevi}
+% \begin{macro}{\@five@fusevi}
+% \begin{macro}{\@five@@fusevi}
+% \begin{macro}{\@fivefusevi}
+% \begin{macrocode}
+\def\fivefusevi{\@ifnextchar({\@five@fusevi(@}{\@five@fusevi(@)}}
+\def\@five@fusevi(#1){\@ifnextchar[{\@five@@fusevi(#1)[@}%
+{\@five@@fusevi(#1)[@]}}
+\def\@five@@fusevi(#1)[#2]#3#4#5{\@ifnextchar[%
+{\@fivefusevi(#1)[#2]{#3}{#4}{#5}[@}%
+{\@fivefusevi(#1)[#2]{#3}{#4}{#5}[@]}}
+\def\@fivefusevi(#1)[#2]#3#4#5[#6]{%
+\iniatom\iniflag%initialize
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+% % treatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+\test@vertix@sixv{#3}{a}{b}{c}{e}{f}{@}%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % adjustment of attached positions %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\fivefuseposvi{#5}%
+\begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/%
+(800,880)(-\shiftii,-\shifti){fivefusevi}%2002/4/30 by S. Fujita
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+% changed FUSE to a list 1993/11/21 by Shinsaku Fujita
+{\resetbdsw%
+\@bond@fuse@omit{#5}{#6}%
+\set@skel@bond{#1}{a}{a}% bond between 1 and 2 \@aaa -> \skbonda etc
+\set@skel@bond{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc
+\set@skel@longbond{#1}{c}{skbondhorizi}%
+ % bond between 3 and 4 \@ccc -> \skbondhorizi etc
+\set@skel@bond{#1}{d}{e}% bond between 4 and 5 \@ddd -> \skbonde etc
+\set@skel@bond{#1}{e}{f}% bond between 5 and 6 \@eee -> \skbondf etc
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r%
+\else\if\member a\relax%
+ \bonda%
+\else\if\member b\relax%
+ \bondb%
+\else\if\member c\relax%
+ \bondhorizi%
+\else\if\member d\relax%
+ \bonde%
+\else\if\member e\relax%
+ \bondf%
+\else
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+% % inner bond attachment %
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+ \expandafter\twoCH@@R\member//%
+ \set@fusionadd@fivevi
+\fi\fi\fi\fi\fi\fi}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%
+% % setting heteroatoms %
+% %%%%%%%%%%%%%%%%%%%%%%%
+\set@hetatom@sixv{#3}{0}{0}{4}{0}% % for 1 to 3
+\set@hetatom@sixv{#3}{1}{4}{7}{0}% % for 4 to 5
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\setsixringv{#4}{0}{0}{4}{0}% % for 1 to 3
+\setsixringv{#4}{1}{4}{7}{0}% % for 4 to 5
+\end{ShiftPicEnv}%
+{\let\XyMTeXWarning\@gobble
+\fivefuseposvi{#5}}%%for FuseWaring when nested
+\iniatom\iniflag}% %end of \fivefusevi macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The macro |\fivefuseposvi| is used in the definition of
+% the |\fivefusev| macro to detect a fused edge, where
+% the coordinates of a reference terminal (|\fuseAx| and |\fuseAy|)
+% and of the other terminal of the edge (|\fuseBx| and |\fuseBy|)
+% are given for the successive process of adjustment.
+%
+% \begin{macro}{\fivefuseposvi}
+% \begin{macrocode}
+\def\fivefuseposvi#1{%
+\global\@sixfuseposvfalse
+{\resetbdsw%
+\@tfor\memBer:=#1\do{%
+\if\memBer a\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bond at bond `a'}%
+ \else
+ \gdef\fuseAx{0}\gdef\fuseAy{406}%
+ \gdef\fuseBx{171}\gdef\fuseBy{303}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer A\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bond at bond `A'}%
+ \else
+ \gdef\fuseBx{0}\gdef\fuseBy{406}%
+ \gdef\fuseAx{171}\gdef\fuseAy{303}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer b\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bond at bond `b'}%
+ \else
+ \gdef\fuseAx{171}\gdef\fuseAy{303}%
+ \gdef\fuseBx{171}\gdef\fuseBy{103}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer B\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `B'}%
+ \else
+ \gdef\fuseBx{171}\gdef\fuseBy{303}%
+ \gdef\fuseAx{171}\gdef\fuseAy{103}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer c\relax
+ \XyMTeXWarning{Not-used fusion at bond `c'}%
+\fi
+\if\memBer C\relax
+ \XyMTeXWarning{Not-used fusion at bond `C'}%
+\fi
+\if\memBer d\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `d'}%
+ \else
+ \gdef\fuseAx{-171}\gdef\fuseAy{103}%
+ \gdef\fuseBx{-171}\gdef\fuseBy{303}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer D\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `D'}%
+ \else
+ \gdef\fuseBx{-171}\gdef\fuseBy{103}%
+ \gdef\fuseAx{-171}\gdef\fuseAy{303}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer e\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `e'}%
+ \else
+ \gdef\fuseAx{-171}\gdef\fuseAy{303}%
+ \gdef\fuseBx{0}\gdef\fuseBy{406}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer E\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `e'}%
+ \else
+ \gdef\fuseBx{-171}\gdef\fuseBy{303}%
+ \gdef\fuseAx{0}\gdef\fuseAy{406}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi}}}% end of the macro \fivefuseposvi
+% \end{macrocode}
+% \end{macro}
+%
+% The macros |\fiveunitvi| has been revived for compativility.
+% \changes{v3.00}{2002/4/30}{Revived command: \cs{fiveunitvi}}
+%
+% \begin{macro}{\fiveunitvi}
+% \begin{macrocode}
+\def\fiveunitvi{\@ifnextchar[{\@five@unitvi}{\@five@unitvi[@]}}
+\def\@five@unitvi[#1]#2#3#4{\fivefusevi[#1]{#2}{#3}{#4}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Horizonatl type}
+%
+% The macro |\fivefuseh| is a five-membered fragment that can be
+% fused to another
+% ring structure to produce a new ring system. The following
+% numbering is adopted in this macro.
+%
+% \begin{verbatim}
+% **********************
+% * five-membered unit *
+% * (horizontal type) *
+% **********************
+%
+% 3 _____ 2
+% | *
+% | * 1 <===== the original point
+% | *
+% 4 ----- 5
+% \end{verbatim}
+%
+% The macro |\fivefuseh| has three arguments |ATOMLIST|, |SUBSLIST|
+% and |FUSE| as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \fivefuseh(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `f' and a uppercase
+% character `A' or `B'.
+%
+% The |BONDLIST| argument contains one
+% character selected from a to e, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `$n+$' ($n=1$ to $5$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+% BONDLIST: list of inner double bonds
+%
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,1-double bond
+% A : aromatic circle
+% {n+} : plus at the n-nitrogen atom (n = 1 to 5)
+% {0+} : plus (or others) at the center
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 5 atoms)
+%
+% for n = 1 to 5
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 5
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% The argument |FUSE| represents one bond to be omitted.
+% The omitted edge is regarded as a fused position.
+%
+% \begin{verbatim}
+% FUSE: one bond omitted (a, b, c, d, or e)
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges are regarded as non-fused positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a, b, c, d, or e)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \fivefuseh{1==N}{1==H;2==F}{a}
+% \end{verbatim}
+%
+% \begin{macro}{\fivefuseh}
+% \begin{macro}{\@five@fuseh}
+% \begin{macro}{\@five@@fuseh}
+% \begin{macro}{\@fivefuseh}
+% \begin{macrocode}
+\def\fivefuseh{\@ifnextchar({\@five@fuseh(@}{\@five@fuseh(@)}}
+\def\@five@fuseh(#1){\@ifnextchar[{\@five@@fuseh(#1)[@}%
+{\@five@@fuseh(#1)[@]}}
+\def\@five@@fuseh(#1)[#2]#3#4#5{\@ifnextchar[%
+{\@fivefuseh(#1)[#2]{#3}{#4}{#5}[@}%
+{\@fivefuseh(#1)[#2]{#3}{#4}{#5}[@]}}
+\def\@fivefuseh(#1)[#2]#3#4#5[#6]{%
+\iniatom\iniflag%initialize
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+% % treatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+\test@vertix@sixv{#3}{d}{c}{b}{f}{e}{@}%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % adjustment of attached positions %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\fivefuseposh{#5}%
+\begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/%
+(800,880)(-240,-400){fivefuseh}%2002/4/30 by S. Fujita
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+% changed FUSE to a list 1993/11/21 by Shinsaku Fujita
+{\resetbdsw%
+\@bond@fuse@omit{#5}{#6}%
+\set@skel@bondh{#1}{a}{c}% bond between 1 and 2 \@aaa -> \skbondc etc
+\set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc
+\set@skel@longbond{#1}{c}{hskbondvert}%
+ % bond between 3 and 4 \@ccc -> \hskbondvert etc
+\set@skel@bondh{#1}{d}{e}% bond between 4 and 5 \@ddd -> \skbonde etc
+\set@skel@bondh{#1}{e}{d}% bond between 5 and 6 \@eee -> \skbondd etc
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r%
+\else \if\member a\relax%
+ \hbondc%
+\else \if\member b\relax%
+ \hbondb%
+\else \if\member c\relax%
+ \hbondvert%
+\else \if\member d\relax%
+ \hbonde%
+\else \if\member e\relax%
+ \hbondd%
+\else \if\member A%left aromatic circle
+ \Put@oCircle(233,0){180}% %circle
+\else
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+% % inner bond attachment %
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+ \expandafter\twoCH@@R\member//%
+ \set@fusionadd@fiveh
+\fi\fi\fi\fi\fi\fi\fi}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%
+% % setting heteroatoms %
+% %%%%%%%%%%%%%%%%%%%%%%%
+\set@hetatom@sixh{#3}{5}{1}{5}{-1}% % for 1 to 3
+\set@hetatom@sixh{#3}{10}{4}{7}{-1}% % for 4 to 5
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\setsixringh{#4}{5}{1}{5}{-1}% % for 1 to 3
+\setsixringh{#4}{10}{4}{7}{-1}% % for 4 to 5
+\end{ShiftPicEnv}%
+{\let\XyMTeXWarning\@gobble
+\fivefuseposh{#5}}%for FuseWaring when nested%
+\iniatom\iniflag}% %end of \fivefuseh macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The macro |\fivefuseposh| is used in the definition of
+% the |\sixfusehi| macro to detect a fused edge, where
+% the coordinates of a reference terminal (|\fuseAx| and |\fuseAy|)
+% and of the other terminal of the edge (|\fuseBx| and |\fuseBy|)
+% are given for the successive process of adjustment.
+%
+% \begin{macro}{\fivefuseposh}
+% \begin{macrocode}
+\def\fivefuseposh#1{%
+\global\@sixfuseposvfalse
+{\resetbdsw%
+\@tfor\memBer:=#1\do{%
+\if\memBer c\relax
+ \XyMTeXWarning{Not-used fusion at bond `c'}%
+\fi
+\if\memBer C\relax
+ \XyMTeXWarning{Not-used fusion at bond `C'}%
+\fi
+\if\memBer B\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bond at bond `B'}%
+ \else
+ \gdef\fuseAx{103}\gdef\fuseAy{171}%
+ \gdef\fuseBx{303}\gdef\fuseBy{171}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer b\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `b'}%
+ \else
+ \gdef\fuseBx{103}\gdef\fuseBy{171}%
+ \gdef\fuseAx{303}\gdef\fuseAy{171}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer A\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `A'}%
+ \else
+ \gdef\fuseAx{303}\gdef\fuseAy{171}%
+ \gdef\fuseBx{406}\gdef\fuseBy{0}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer a\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `a'}%
+ \else
+ \gdef\fuseBx{303}\gdef\fuseBy{171}%
+ \gdef\fuseAx{406}\gdef\fuseAy{0}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer E\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `E'}%
+ \else
+ \gdef\fuseAx{406}\gdef\fuseAy{0}%
+ \gdef\fuseBx{303}\gdef\fuseBy{-171}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer e\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `e'}%
+ \else
+ \gdef\fuseBx{406}\gdef\fuseBy{0}%
+ \gdef\fuseAx{303}\gdef\fuseAy{-171}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer D\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `D'}%
+ \else
+ \gdef\fuseAx{303}\gdef\fuseAy{-171}%
+ \gdef\fuseBx{103}\gdef\fuseBy{-171}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer d\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `d'}%
+ \else
+ \gdef\fuseBx{303}\gdef\fuseBy{-171}%
+ \gdef\fuseAx{103}\gdef\fuseAy{-171}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+}}}% end of the macro \fivefuseposh
+% \end{macrocode}
+% \end{macro}
+%
+% The macros |\fiveunith| has been revived for compativility.
+% \changes{v3.00}{2002/4/30}{Revived command: \cs{fiveunith}}
+%
+% \begin{macro}{\fiveunith}
+% \begin{macrocode}
+\def\fiveunith{\@ifnextchar[{\@five@unith}{\@five@unith[@]}}
+\def\@five@unith[#1]#2#3#4{\fivefuseh[#1]{#2}{#3}{#4}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Inverse horizontal type}
+%
+% The macro |\fivefusehi| typesets a five-membered fragment that can be
+% fused to another
+% ring structure to produce a new ring system. The following
+% numbering is adopted in this macro.
+%
+% \begin{verbatim}
+% ************************************
+% * five-membered fusing unit *
+% * (horizontal type, inverse type) *
+% ************************************
+%
+% 2 ----- 3
+% * |
+% the original point 1 * |
+% * |
+% _____|
+% 5 4
+% \end{verbatim}
+%
+% The macro |\fivefusehi| has three arguments |ATOMLIST|, |SUBSLIST|
+% and |FUSE|
+% as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \fivefusehi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `f' and a uppercase
+% character `A' or `B'.
+%
+% The |BONDLIST| argument contains one
+% character selected from a to e, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `$n+$' ($n=1$ to $5$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+% BONDLIST: list of inner double bonds
+%
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,1-double bond
+% A : aromatic circle
+% {n+} : plus at the n-nitrogen atom (n = 1 to 5)
+% {0+} : plus (or others) at the center
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 5 atoms)
+%
+% for n = 1 to 5
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 5
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% The argument |FUSE| represents one bond to be omitted.
+% The omitted edge is regarded as a fused position.
+%
+% \begin{verbatim}
+% FUSE: one bond omitted (a, b, c, d, or e)
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges are regarded as non-fused positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a, b, c, d, e, or f)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \fivefusehi{1==N}{1==H;2==F}{a}
+% \end{verbatim}
+%
+% \begin{macro}{\fivefusehi}
+% \begin{macro}{\@five@fusehi}
+% \begin{macro}{\@five@@fusehi}
+% \begin{macro}{\@fivefusehi}
+% \begin{macrocode}
+\def\fivefusehi{\@ifnextchar({\@five@fusehi(@}{\@five@fusehi(@)}}
+\def\@five@fusehi(#1){\@ifnextchar[{\@five@@fusehi(#1)[@}%
+{\@five@@fusehi(#1)[@]}}
+\def\@five@@fusehi(#1)[#2]#3#4#5{\@ifnextchar[%
+{\@fivefusehi(#1)[#2]{#3}{#4}{#5}[@}%
+{\@fivefusehi(#1)[#2]{#3}{#4}{#5}[@]}}
+\def\@fivefusehi(#1)[#2]#3#4#5[#6]{%
+\iniatom\iniflag%initialize
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+% % treatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+\test@vertix@sixv{#3}{a}{b}{c}{e}{f}{@}%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % adjustment of attached positions %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\fivefuseposhi{#5}%
+\begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/%
+(800,880)(-240,-400){fivefusehi}%2002/4/30 by S. Fujita
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+% changed FUSE to a list 1993/11/21 by Shinsaku Fujita
+{\resetbdsw%
+\@bond@fuse@omit{#5}{#6}%
+\set@skel@bondh{#1}{a}{a}% bond between 1 and 2 \@aaa -> \hskbonda etc
+\set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc
+\set@skel@longbond{#1}{c}{hskbondverti}%
+ % bond between 3 and 4 \@ccc -> \hskbondverti etc
+\set@skel@bondh{#1}{d}{e}% bond between 4 and 5 \@ddd -> \hskbonde etc
+\set@skel@bondh{#1}{e}{f}% bond between 5 and 6 \@eee -> \hskbondf etc
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r%
+\else \if\member a\relax%
+ \hbonda%
+\else \if\member b\relax%
+ \hbondb%
+\else \if\member c\relax%
+ \hbondverti%
+\else \if\member d\relax%
+ \hbonde%
+\else \if\member e\relax%
+ \hbondf%
+\else \if\member A%left aromatic circle
+ \Put@oCircle(173,0){180}% %circle
+\else
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+% % inner bond attachment %
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+ \expandafter\twoCH@@R\member//%
+ \set@fusionadd@fivehi
+\fi\fi\fi\fi\fi\fi\fi}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%
+% % setting heteroatoms %
+% %%%%%%%%%%%%%%%%%%%%%%%
+\set@hetatom@sixh{#3}{0}{0}{4}{0}% % for 1 to 3
+\set@hetatom@sixh{#3}{1}{4}{7}{0}% % for 4 to 5
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\setsixringh{#4}{0}{0}{4}{0}% % for 1 to 3
+\setsixringh{#4}{1}{4}{7}{0}% % for 4 to 5
+\end{ShiftPicEnv}%
+{\let\XyMTeXWarning\@gobble
+\fivefuseposhi{#5}}%for FuseWaring when nested
+\iniatom\iniflag}% %end of \fivefusehi macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The macro |\fivefuseposhi| is used in the definition of
+% the |\sixfuseh| macro to detect a fused edge, where
+% the coordinates of a reference terminal (|\fuseAx| and |\fuseAy|)
+% and of the other terminal of the edge (|\fuseBx| and |\fuseBy|)
+% are given for the successive process of adjustment.
+%
+% \begin{macro}{\fivefuseposhi}
+% \begin{macrocode}
+\def\fivefuseposhi#1{%
+\global\@sixfuseposvfalse
+{\resetbdsw%
+\@tfor\memBer:=#1\do{%
+\if\memBer a\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bond at bond `a'}%
+ \else
+ \gdef\fuseAx{0}\gdef\fuseAy{0}%
+ \gdef\fuseBx{103}\gdef\fuseBy{171}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer A\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bond at bond `A'}%
+ \else
+ \gdef\fuseBx{0}\gdef\fuseBy{0}%
+ \gdef\fuseAx{103}\gdef\fuseAy{171}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer b\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bond at bond `b'}%
+ \else
+ \gdef\fuseAx{103}\gdef\fuseAy{171}%
+ \gdef\fuseBx{303}\gdef\fuseBy{171}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer B\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `B'}%
+ \else
+ \gdef\fuseBx{103}\gdef\fuseBy{171}%
+ \gdef\fuseAx{303}\gdef\fuseAy{171}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer c\relax
+ \XyMTeXWarning{Not-used fusion at bond `c'}%
+\fi
+\if\memBer C\relax
+ \XyMTeXWarning{Not-used fusion at bond `C'}%
+\fi
+\if\memBer d\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `d'}%
+ \else
+ \gdef\fuseAx{303}\gdef\fuseAy{-171}%
+ \gdef\fuseBx{103}\gdef\fuseBy{-171}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer D\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `D'}%
+ \else
+ \gdef\fuseBx{303}\gdef\fuseBy{-171}%
+ \gdef\fuseAx{103}\gdef\fuseAy{-171}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer e\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `e'}%
+ \else
+ \gdef\fuseAx{103}\gdef\fuseAy{-171}%
+ \gdef\fuseBx{0}\gdef\fuseBy{0}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer E\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `E'}%
+ \else
+ \gdef\fuseBx{103}\gdef\fuseBy{-171}%
+ \gdef\fuseAx{0}\gdef\fuseAy{0}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi}}}% end of the macro \fivefuseposhi
+% \end{macrocode}
+% \end{macro}
+%
+% The macros |\fiveunithi| has been revived for compativility.
+% \changes{v3.00}{2002/4/30}{Revived command: \cs{fiveunithi}}
+%
+% \begin{macro}{\fiveunithi}
+% \begin{macrocode}
+\def\fiveunithi{\@ifnextchar[{\@five@unithi}{\@five@unithi[@]}}
+\def\@five@unithi[#1]#2#3#4{\fivefusehi[#1]{#2}{#3}{#4}}
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Four-membered fused ring unit}
+%
+% The macro |\fourfuse| typesets a four-membered ring unit for ring fusion.
+% The following numbering is adopted in this macro.
+%
+% \begin{verbatim}
+% **************************
+% * fourfuse derivatives *
+% * (vertical type) *
+% **************************
+% The following numbering is adopted in this macro.
+%
+% c
+% 4 _____ 3
+% d | | b
+% | |
+% 1 ----- 2<===== the original point
+% a
+% \end{verbatim}
+%
+% The macro |\fourfuse| has two arguments |ATOMLIST|, |SUBSLIST| and |FUSE|
+% as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \fourfuse(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `f' and a uppercase
+% character `A' or `B'.
+%
+% The |BONDLIST| argument contains one
+% character selected from a to e, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `$n+$' ($n=1$ to $4$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+% BONDLIST: list of inner double bonds
+%
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% e : 4,1-double bond
+%
+% {n+} : plus at the n-nitrogen atom (n = 1 to 4)
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 4 atoms)
+%
+% for n = 1 to 4
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 4
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% The argument |FUSE| represents one bond to be omitted.
+% The omitted edge is regarded as a fused position.
+%
+% \begin{verbatim}
+% FUSE: one bond omitted (a, b, c, or d)
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges are regarded as non-fused positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a, b, c, or d)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \fourfuse{1==N}{1==H;2==F}{c}
+% \fourfuse[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}{a}
+% \end{verbatim}
+%
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/12/5}{Add: spiro and fused rings}
+%
+% \begin{macro}{\fourfuse}
+% \begin{macro}{\@four@fuse}
+% \begin{macro}{\@four@@fuse}
+% \begin{macro}{\@fourfuse}
+% \begin{macrocode}
+\def\fourfuse{\@ifnextchar({\@four@fuse(@}{\@four@fuse(@)}}
+\def\@four@fuse(#1){\@ifnextchar[{\@four@@fuse(#1)[@}%
+{\@four@@fuse(#1)[@]}}
+\def\@four@@fuse(#1)[#2]#3#4#5{\@ifnextchar[%
+{\@fourfuse(#1)[#2]{#3}{#4}{#5}[@}%
+{\@fourfuse(#1)[#2]{#3}{#4}{#5}[@]}}
+\def\@fourfuse(#1)[#2]#3#4#5[#6]{%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+% % treatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniatom\iniflag%initialize
+\test@vertix@sixv{#3}{e}{c}{b}{f}{@}{@}%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % adustment of subs positions %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\fourfusepos{#5}%
+\begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/%
+(800,880)(-571,-137){fourfuse}%2002/4/30 by S. Fujita
+(571,137)(171,-103)%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+{\resetbdsw%
+\@bond@fuse@omit{#5}{#6}%
+\Put@Direct(0,0){\set@skel@longbond{#1}{a}{skbondshorizi}}%
+ % bond between 1 and 2 \@aaa -> \skbondshorizi etc
+\Put@Direct(-142,0){\set@skel@bond{#1}{b}{b}}%
+ % bond between 2 and 3 \@bbb -> \skbondb etc
+\Put@Direct(0,0){\set@skel@longbond{#1}{c}{skbondshoriz}}%
+ % bond between 3 and 4 \@ccc -> \skbondshoriz etc
+\Put@Direct(0,0){\set@skel@bond{#1}{d}{e}}%
+ % bond between 4 and 1 \@ddd -> \skbonde etc
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r%
+\else\if\member a\relax \Put@Direct(0,0){\bondshorizi}%
+\else\if\member b\relax \Put@Direct(-142,0){\bondb}%
+\else\if\member c\relax \Put@Direct(0,0){\bondshoriz}%
+\else\if\member d\relax \Put@Direct(0,0){\bonde}%
+\else
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+% % inner bond attachment %
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+ \expandafter\twoCH@@R\member//%
+ \set@fusionadd@fourv
+\fi\fi\fi\fi\fi}%
+% \end{macrocode}
+%
+% \changes{v2.01}{2001/6/20}{The \cs{storeclipinfo} command is added.}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%
+% % setting heteroatoms %
+% %%%%%%%%%%%%%%%%%%%%%%%
+\Put@Direct(-142,0){\set@hetatom@sixv{#3}{5}{1}{4}{-1}%
+\storeclipinfo
+}% for 2 to 3
+\developclipinfo
+\Put@Direct(0,0){\set@hetatom@sixv{#3}{4}{4}{6}{0}%
+\storeclipinfo
+}% for 1
+\developclipinfo
+\Put@Direct(0,0){\set@hetatom@sixv{#3}{2}{5}{7}{0}
+\storeclipinfo
+}% for 4
+\developclipinfo
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\Put@Direct(-142,0){\setsixringv{#4}{5}{1}{4}{-1}}% for 2 to 3
+\Put@Direct(0,0){\setsixringv{#4}{4}{4}{6}{0}}% for 1
+\Put@Direct(0,0){\setsixringv{#4}{2}{5}{7}{0}}% for 4
+\end{ShiftPicEnv}%
+\fourfusepos{#5}%%for FuseWaring when nested
+\iniatom\iniflag
+\global\@smallringswtrue%for permition at a center bond
+}% %end of \fourfuse macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The macro |\fourfusepos| is used in the definition of
+% the |\sixfuseh| macro to detect a fused edge, where
+% the coordinates of a reference terminal (|\fuseAx| and |\fuseAy|)
+% and of the other terminal of the edge (|\fuseBx| and |\fuseBy|)
+% are given for the successive process of adjustment.
+%
+% \begin{macro}{\fourfusepos}
+% \begin{macrocode}
+\def\fourfusepos#1{%
+\global\@sixfuseposvfalse
+{\resetbdsw%
+\@tfor\memBer:=#1\do{%
+\if\memBer a\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bond at bond `a'}%
+ \else
+ \gdef\fuseAx{-171}\gdef\fuseAy{103}%
+ \gdef\fuseBx{29}\gdef\fuseBy{103}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer A\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bond at bond `A'}%
+ \else
+ \gdef\fuseBx{-171}\gdef\fuseBy{103}%
+ \gdef\fuseAx{29}\gdef\fuseAy{103}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer b\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bond at bond `b'}%
+ \else
+ \gdef\fuseAx{29}\gdef\fuseAy{103}%
+ \gdef\fuseBx{29}\gdef\fuseBy{303}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer B\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `B'}%
+ \else
+ \gdef\fuseBx{29}\gdef\fuseBy{103}%
+ \gdef\fuseAx{29}\gdef\fuseAy{303}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer c\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `c'}%
+ \else
+ \gdef\fuseAx{29}\gdef\fuseAy{303}%
+ \gdef\fuseBx{-171}\gdef\fuseBy{303}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer C\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `C'}%
+ \else
+ \gdef\fuseBx{29}\gdef\fuseBy{303}%
+ \gdef\fuseAx{-171}\gdef\fuseAy{303}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer d\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `d'}%
+ \else
+ \gdef\fuseAx{-171}\gdef\fuseAy{303}%
+ \gdef\fuseBx{-171}\gdef\fuseBy{103}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer D\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `D'}%
+ \else
+ \gdef\fuseBx{-171}\gdef\fuseBy{303}%
+ \gdef\fuseAx{-171}\gdef\fuseAy{103}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+}}}% end of the macro \fourfusepos
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Three-membered fusing unit}
+% \subsection{Vertical type}
+%
+% The macro |\threefusev| typesets a three-membered ring to be fused.
+% The following numbering is adopted in this macro.
+%
+% \begin{verbatim}
+% **********************
+% * theree fusing unit *
+% * (vertical type) *
+% **********************
+%
+% b
+% 3--------2
+% c ` / a
+% `1/ <===== the original point
+% \end{verbatim}
+%
+% The macro |\threefusev| has two arguments |ATOMLIST|, |SUBSLIST| and
+% |FUSE| as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \threefusev(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `f' and a uppercase
+% character `A' or `B'.
+%
+% The |BONDLIST| argument contains one
+% character selected from a to c, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `$n+$' ($n=1$ to $3$) represents a plus charge on a hetero atom
+% at the $n$-position.
+% The option `$n+$' ($n=4$ to $6$) represents a plus charge outside the ring.
+% The option `$0+$' typesets a plus charge at the center of the ring.
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% none : saturated
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 3,1-double bond
+% A : aromatic circle
+% {n+} : plus at the n-hetero atom (n = 1 to 3)
+% : n=4 -- outer plus at 1 position
+% : n=5 -- outer plus at 2 position
+% : n=6 -- outer plus at 3 position
+% {0+} : plus at the center of a cyclopropane ring
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 3 atoms)
+%
+% for n = 1 to 3
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position,
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 3
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% The argument |FUSE| represents one bond to be omitted.
+% The omitted edge is regarded as a fused position.
+%
+% \begin{verbatim}
+% FUSE: one bond omitted (a, b, or c)
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges are regarded as non-fused positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a, b, or c)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \threefusev{1==N}{1==Cl;2==F}{b}
+% \end{verbatim}
+%
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/12/5}{Add: spiro and fused rings}
+%
+% \begin{macro}{\threefusev}
+% \begin{macro}{\@three@fusev}
+% \begin{macro}{\@three@@fusev}
+% \begin{macro}{\@threefusev}
+% \begin{macrocode}
+\def\threefusev{\@ifnextchar({\@three@fusev(@}{\@three@fusev(@)}}
+\def\@three@fusev(#1){\@ifnextchar[{\@three@@fusev(#1)[@}%
+{\@three@@fusev(#1)[@]}}
+\def\@three@@fusev(#1)[#2]#3#4#5{\@ifnextchar[%
+{\@threefusev(#1)[#2]{#3}{#4}{#5}[@}%
+{\@threefusev(#1)[#2]{#3}{#4}{#5}[@]}}
+\def\@threefusev(#1)[#2]#3#4#5[#6]{%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+% % treatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniatom\iniflag%initialize
+\test@vertix@sixv{#3}{d}{b}{f}{@}{@}{@}%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % adustment of subs positions %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\threefuseposv{#5}%
+\begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/%
+(800,580)(-468,-240){threefusev}%2002/4/30 by S. Fujita
+(468,240)(68,0)%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+{\resetbdsw%
+\@bond@fuse@omit{#5}{#6}%
+\Put@Direct(-68,0){\set@skel@longbond{#1}{a}{skbondtria}}%
+ % bond between 1 and 2 \@aaa -> \skbondtria etc
+\Put@Direct(0,-132){\set@skel@longbond{#1}{b}{skbondshoriz}}%
+ % bond between 2 and 3 \@bbb -> \skbondb etc
+\Put@Direct(-68,0){\set@skel@longbond{#1}{c}{skbondtrib}}%
+ % bond between 3 and 1 \@ccc -> \skbondtria etc
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r\relax%
+\else\if\member a\relax\Put@Direct(-68,0){\bondtria}%
+\else\if\member b\relax\Put@Direct(0,-126){\bondshoriz}%
+\else\if\member c\relax\Put@Direct(-68,0){\bondtrib}%
+\else\if\member A\relax% aromatic circle
+ \Put@oCircle(-70,108){100}% %circle
+\else
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+% % inner bond attachment %
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+ \expandafter\twoCH@@R\member//%
+ \set@fusionadd@threev
+\fi\fi\fi\fi\fi%
+}%
+% \end{macrocode}
+%
+% \changes{v2.01}{2001/6/20}{The \cs{storeclipinfo} command is added.}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\Put@Direct(-68,0){\set@hetatom@sixv{#3}{3}{3}{5}{0}%
+%\if@clip\global\@cliptrue\fi
+\storeclipinfo
+}%subst 1
+\developclipinfo
+\Put@Direct(-142,-132){\set@hetatom@sixv{#3}{0}{1}{3}{0}%
+%\if@bclip\global\@bcliptrue\fi
+\storeclipinfo
+}%subst 2
+\developclipinfo
+\Put@Direct(0,-132){\set@hetatom@sixv{#3}{3}{5}{7}{0}%
+%\if@fclip\global\@fcliptrue\fi
+\storeclipinfo
+}%subst 3
+\developclipinfo
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\Put@Direct(-68,0){\setsixringv{#4}{3}{3}{5}{0}}%subst 1
+\Put@Direct(-142,-132){\setsixringv{#4}{0}{1}{3}{0}}%subst 2
+\Put@Direct(0,-132){\setsixringv{#4}{3}{5}{7}{0}}%subst 3
+\end{ShiftPicEnv}%
+\threefuseposv{#5}%%for FuseWaring when nested
+\iniatom\iniflag
+\global\@smallringswtrue%for permition at a center bond
+}% %end of \threefusev macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The macro |\threefuseposv| is used in the definition of
+% the |\threefusev| macro to detect a fused edge, where
+% the coordinates of a reference terminal (|\fuseAx| and |\fuseAy|)
+% and of the other terminal of the edge (|\fuseBx| and |\fuseBy|)
+% are given for the successive process of adjustment.
+%
+% \begin{macro}{\threefuseposv}
+% \begin{macrocode}
+\def\threefuseposv#1{%
+\global\@sixfuseposvfalse
+{\resetbdsw%
+\@tfor\memBer:=#1\do{%
+\if\memBer a\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bond at bond `a'}%
+ \else
+ \gdef\fuseAx{-68}\gdef\fuseAy{0}%
+% \gdef\fuseBx{29}\gdef\fuseBy{171}%
+ \gdef\fuseBx{35}\gdef\fuseBy{171}%corrected
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer A\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bond at bond `A'}%
+ \else
+% \gdef\fuseBx{-68}\gdef\fuseBy{0}%
+ \gdef\fuseBx{-74}\gdef\fuseBy{0}%corrected
+ \gdef\fuseAx{29}\gdef\fuseAy{171}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer b\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bond at bond `b'}%
+ \else
+ \gdef\fuseAx{29}\gdef\fuseAy{171}%
+ \gdef\fuseBx{-171}\gdef\fuseBy{171}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer B\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `B'}%
+ \else
+ \gdef\fuseBx{29}\gdef\fuseBy{171}%
+ \gdef\fuseAx{-171}\gdef\fuseAy{171}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer c\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `c'}%
+ \else
+ \gdef\fuseAx{-171}\gdef\fuseAy{171}%
+ \gdef\fuseBx{-68}\gdef\fuseBy{0}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer C\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `C'}%
+ \else
+ \gdef\fuseBx{-171}\gdef\fuseBy{171}%
+ \gdef\fuseAx{-68}\gdef\fuseAy{0}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+}}}% end of the macro \threefuseposv
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Inverse vertical type}
+%
+% The macro |\threefusevi| typesets a three-membered ring of
+% inverse vertical type. The following numbering is adopted
+% in this macro.
+% \changes{v1.02}{1998/10/20}{Newly added commands:
+% \cs{threefusevi}}
+%
+% \begin{verbatim}
+% ****************************
+% * thereehetero derivatives *
+% * (inverse vertical type) *
+% ****************************
+%
+% /1` <===== the original point
+% c / ` a
+% 3--------2
+% b
+% \end{verbatim}
+%
+% The macro |\threefusevi| has two arguments |ATOMLIST|, |SUBSLIST| and |FUSE|
+% as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \threefusevi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `f' and a uppercase
+% character `A' or `B'.
+%
+% The |BONDLIST| argument contains one
+% character selected from a to c, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `$n+$' ($n=1$ to $3$) represents a plus charge on a hetero atom
+% at the $n$-position.
+% The option `$n+$' ($n=4$ to $6$) represents a plus charge outside the ring.
+% The option `$0+$' typesets a plus charge at the center of the ring.
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% none : saturated
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 3,1-double bond
+% A : aromatic circle
+% {n+} : plus at the n-hetero atom (n = 1 to 3)
+% : n=4 -- outer plus at 1 position
+% : n=5 -- outer plus at 2 position
+% : n=6 -- outer plus at 3 position
+% {0+} : plus at the center of a cyclopropane ring
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 3 atoms)
+%
+% for n = 1 to 3
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position,
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 3
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% The argument |FUSE| represents one bond to be omitted.
+% The omitted edge is regarded as a fused position.
+%
+% \begin{verbatim}
+% FUSE: one bond omitted (a, b, or c)
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges are regarded as non-fused positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a, b, or c)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \threefusevi{1==N}{1==Cl;2==F}{c}
+% \threefusevi[c]{1==N}{1==Cl;3==F;2==CH$_{3}$}{a}
+% \threefusevi{1==N}{1D==O}{b}
+% \end{verbatim}
+%
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/12/5}{Add: spiro and fused rings}
+%
+% \begin{macro}{\threefusevi}
+% \begin{macro}{\@three@fusevi}
+% \begin{macro}{\@three@@fusevi}
+% \begin{macro}{\@threefusevi}
+% \begin{macrocode}
+\def\threefusevi{\@ifnextchar({\@three@fusevi(@}{\@three@fusevi(@)}}
+\def\@three@fusevi(#1){\@ifnextchar[{\@three@@fusevi(#1)[@}%
+{\@three@@fusevi(#1)[@]}}
+\def\@three@@fusevi(#1)[#2]#3#4#5{\@ifnextchar[%
+{\@threefusevi(#1)[#2]{#3}{#4}{#5}[@}%
+{\@threefusevi(#1)[#2]{#3}{#4}{#5}[@]}}
+\def\@threefusevi(#1)[#2]#3#4#5[#6]{%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+% % treatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniatom\iniflag%initialize
+\test@vertix@sixv{#3}{a}{c}{e}{@}{@}{@}%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % adustment of subs positions %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\threefuseposvi{#5}%
+\begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/%
+(800,580)(-468,-340){threefusevi}%2002/4/30 by S. Fujita
+(468,340)(68,0)%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+{\resetbdsw%
+\@bond@fuse@omit{#5}{#6}%
+\Put@Direct(-68,0){\set@skel@longbond{#1}{a}{skBondtria}}%
+ % bond between 1 and 2 \@aaa -> \skBondtria etc
+\Put@Direct(0,-275){\set@skel@longbond{#1}{b}{skbondshorizi}}%
+ % bond between 2 and 3 \@bbb -> \skbondb etc
+\Put@Direct(-68,0){\set@skel@longbond{#1}{c}{skBondtrib}}%
+ % bond between 3 and 1 \@ccc -> \skBondtrib etc
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r\relax%
+\else\if\member a\relax\Put@Direct(-68,0){\Bondtria}%
+\else\if\member b\relax\Put@Direct(0,-274){\bondshorizi}%
+\else\if\member c\relax\Put@Direct(-68,0){\Bondtrib}%
+\else\if\member A\relax% aromatic circle
+ \Put@oCircle(-70,-108){100}% %circle
+\else
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+% % inner bond attachment %
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+ \expandafter\twoCH@@R\member//%
+ \set@fusionadd@threevi
+\fi\fi\fi\fi\fi%
+}%
+% \end{macrocode}
+%
+% \changes{v2.01}{2001/6/20}{The \cs{storeclipinfo} command is added.}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\Put@Direct(-68,-406){\set@hetatom@sixv{#3}{0}{0}{2}{0}%
+%\if@aclip\global\@acliptrue\fi
+\storeclipinfo
+}%subst 1
+\developclipinfo
+\Put@Direct(0,-275){\set@hetatom@sixv{#3}{2}{4}{6}{0}%
+%\if@cclip\global\@ccliptrue\fi
+\storeclipinfo
+}%subst 3
+\developclipinfo
+\Put@Direct(-142,-275){\set@hetatom@sixv{#3}{1}{2}{4}{0}%
+%\if@eclip\global\@ecliptrue\fi
+\storeclipinfo
+}%subst 2
+\developclipinfo
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\Put@Direct(-68,-406){\setsixringv{#4}{0}{0}{2}{0}}%subst 1
+\Put@Direct(0,-275){\setsixringv{#4}{2}{4}{6}{0}}%subst 3
+\Put@Direct(-142,-275){\setsixringv{#4}{1}{2}{4}{0}}%subst 2
+\end{ShiftPicEnv}%
+\threefuseposvi{#5}%%for FuseWaring when nested
+\iniatom\iniflag
+\global\@smallringswtrue%for permition at a center bond
+}% %end of \threefusevi macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The macro |\threefuseposvi| is used in the definition of
+% the |\threefusev| macro to detect a fused edge, where
+% the coordinates of a reference terminal (|\fuseAx| and |\fuseAy|)
+% and of the other terminal of the edge (|\fuseBx| and |\fuseBy|)
+% are given for the successive process of adjustment.
+%
+% \begin{macro}{\threefuseposvi}
+% \begin{macrocode}
+\def\threefuseposvi#1{%
+\global\@sixfuseposvfalse
+{\resetbdsw%
+\@tfor\memBer:=#1\do{%
+\if\memBer a\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bond at bond `a'}%
+ \else
+ \gdef\fuseAx{-68}\gdef\fuseAy{0}%
+% \gdef\fuseBx{29}\gdef\fuseBy{-171}%
+ \gdef\fuseBx{35}\gdef\fuseBy{-171}%corrected
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer A\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bond at bond `A'}%
+ \else
+% \gdef\fuseBx{-68}\gdef\fuseBy{0}%
+ \gdef\fuseBx{-74}\gdef\fuseBy{0}%corrected
+ \gdef\fuseAx{29}\gdef\fuseAy{-171}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer b\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bond at bond `b'}%
+ \else
+ \gdef\fuseAx{29}\gdef\fuseAy{-171}%
+ \gdef\fuseBx{-171}\gdef\fuseBy{-171}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer B\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `B'}%
+ \else
+ \gdef\fuseBx{29}\gdef\fuseBy{-171}%
+ \gdef\fuseAx{-171}\gdef\fuseAy{-171}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer c\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `c'}%
+ \else
+ \gdef\fuseAx{-171}\gdef\fuseAy{-171}%
+ \gdef\fuseBx{-68}\gdef\fuseBy{0}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer C\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `C'}%
+ \else
+ \gdef\fuseBx{-171}\gdef\fuseBy{-171}%
+ \gdef\fuseAx{-68}\gdef\fuseAy{0}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+}}}% end of the macro \threefuseposvi
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Horizontal type}
+%
+% The macro |\threefuseh| typesets a three-membered ring to be fused.
+% The following numbering is adopted in this macro.
+%
+% \begin{verbatim}
+% ****************************
+% * thereehetero fusing unit *
+% * (horizontal type) *
+% ****************************
+
+% aaa fff
+% 3
+% | ` c
+% b | 1 bbb ccc
+% | / a
+% 2/
+% ddd eee
+%
+% \end{verbatim}
+%
+% The macro |\threefuseh| has two arguments |ATOMLIST|, |SUBSLIST| and |FUSE|
+% as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \threefuseh(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `f' and a uppercase
+% character `A' or `B'.
+%
+% The |BONDLIST| argument contains one
+% character selected from a to c, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `$n+$' ($n=1$ to $3$) represents a plus charge on a hetero atom
+% at the $n$-position.
+% The option `$n+$' ($n=4$ to $6$) represents a plus charge outside the ring.
+% The option `$0+$' typesets a plus charge at the center of the ring.
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% none : saturated
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 3,1-double bond
+% A : aromatic circle
+% {n+} : plus at the n-hetero atom (n = 1 to 3)
+% : n=4 -- outer plus at 1 position
+% : n=5 -- outer plus at 2 position
+% : n=6 -- outer plus at 3 position
+% {0+} : plus at the center of a cyclopropane ring
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 3 atoms)
+%
+% for n = 1 to 3
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position,
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 3
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% The argument |FUSE| represents one bond to be omitted.
+% The omitted edge is regarded as a fused position.
+%
+% \begin{verbatim}
+% FUSE: one bond omitted (a, b, or c)
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges are regarded as non-fused positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a, b, or c)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \threefuseh{1==N}{1==Cl;2==F}{c}
+% \end{verbatim}
+%
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/12/5}{Add: spiro and fused rings}
+%
+% \begin{macro}{\threefuseh}
+% \begin{macro}{\@three@fuseh}
+% \begin{macro}{\@three@@fuseh}
+% \begin{macro}{\@threefuseh}
+% \begin{macrocode}
+\def\threefuseh{\@ifnextchar({\@three@fuseh(@}{\@three@fuseh(@)}}
+\def\@three@fuseh(#1){\@ifnextchar[{\@three@@fuseh(#1)[@}%
+{\@three@@fuseh(#1)[@]}}
+\def\@three@@fuseh(#1)[#2]#3#4#5{\@ifnextchar[%
+{\@threefuseh(#1)[#2]{#3}{#4}{#5}[@}%
+{\@threefuseh(#1)[#2]{#3}{#4}{#5}[@]}}
+\def\@threefuseh(#1)[#2]#3#4#5[#6]{%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+% % treatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniatom\iniflag%initialize
+\test@vertix@sixv{#3}{d}{f}{b}{@}{@}{@}%tentative use for six-h
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % adustment of subs positions %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\threefuseposh{#5}%
+\begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/%
+(580,700)(-200,-240){threefuseh}%2002/4/30 by S. Fujita
+(200,200)%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % retreatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniatom\iniflag%initialize
+\test@vertix@sixv{#3}{c}{e}{a}{@}{@}{@}%
+\test@vertix@sixv{#3}{b}{d}{f}{@}{@}{@}%
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+{\resetbdsw%
+\@bond@fuse@omit{#5}{#6}%
+\Put@Direct(0,0){\set@skel@bond{#1}{a}{c}}%
+ % bond between 1 and 2 \@aaa -> \skbondc etc
+\Put@Direct(171,-103){\set@skel@bond{#1}{b}{e}}%
+ % bond between 2 and 3 \@bbb -> \skbonde etc
+\Put@Direct(0,-200){\set@skel@bond{#1}{c}{a}}%
+ % bond between 3 and 1 \@ccc -> \skbonda etc
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r\relax%
+\else\if\member a\relax\Put@Direct(0,0){\bondc}%
+\else\if\member b\relax\Put@Direct(171,-103){\bonde}%
+\else\if\member c\relax\Put@Direct(0,-200){\bonda}%
+\else\if\member A\relax% aromatic circle
+ \Put@oCircle(70,103){100}% %circle
+\else
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+% % inner bond attachment %
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+ \expandafter\twoCH@@R\member//%
+ \set@fusionadd@threeh
+\fi\fi\fi\fi\fi%
+}%
+% \end{macrocode}
+%
+% \changes{v2.01}{2001/6/20}{The \cs{storeclipinfo} command is added.}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\iniflag
+%\Put@Direct(-235,103){\set@hetatom@sixh{#3}{3}{3}{5}{0}%
+\Put@Direct(-215,103){\set@hetatom@sixh{#3}{3}{3}{5}{0}%
+%\if@clip \global\@cliptrue\fi
+\storeclipinfo
+}%subst 1 <--six h 4
+\developclipinfo
+\Put@Direct(-103,29){\set@hetatom@sixh{#3}{-1}{1}{3}{0}%
+%\if@bclip \global\@bcliptrue\fi
+\storeclipinfo
+}%subst 3 <--six h 2
+\developclipinfo
+\Put@Direct(-103,171){\set@hetatom@sixh{#3}{4}{5}{7}{0}%
+%\if@fclip \global\@fcliptrue\fi
+\storeclipinfo
+}%subst 2 <--six h 6
+\developclipinfo
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\Put@Direct(-235,103){\setsixringh{#4}{3}{3}{5}{0}}%subst 1
+\Put@Direct(-103,29){\setsixringh{#4}{-1}{1}{3}{0}}%subst 3
+\Put@Direct(-103,171){\setsixringh{#4}{4}{5}{7}{0}}%subst 2
+\end{ShiftPicEnv}%
+\threefuseposh{#5}%%for FuseWaring when nested
+\iniatom\iniflag
+\global\@smallringswtrue%for permition at a center bond
+}% %end of \threefuseh macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The macro |\threefuseposh| is used in the definition of
+% the |\threefusev| macro to detect a fused edge, where
+% the coordinates of a reference terminal (|\fuseAx| and |\fuseAy|)
+% and of the other terminal of the edge (|\fuseBx| and |\fuseBy|)
+% are given for the successive process of adjustment.
+%
+% \begin{macro}{\threefuseposh}
+% \begin{macrocode}
+\def\threefuseposh#1{%
+\global\@sixfuseposvfalse
+{\resetbdsw%
+\@tfor\memBer:=#1\do{%
+\if\memBer a\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bond at bond `a'}%
+ \else
+ \gdef\fuseAx{171}\gdef\fuseAy{103}%corrected
+ \gdef\fuseBx{0}\gdef\fuseBy{0}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer A\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bond at bond `A'}%
+ \else
+ \gdef\fuseBx{171}\gdef\fuseBy{103}%
+ \gdef\fuseAx{0}\gdef\fuseAy{0}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer b\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bond at bond `b'}%
+ \else
+ \gdef\fuseAx{0}\gdef\fuseAy{0}%
+ \gdef\fuseBx{0}\gdef\fuseBy{200}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer B\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `B'}%
+ \else
+ \gdef\fuseBx{0}\gdef\fuseBy{0}%
+ \gdef\fuseAx{0}\gdef\fuseAy{200}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer c\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `c'}%
+ \else
+ \gdef\fuseAx{0}\gdef\fuseAy{200}%
+% \gdef\fuseBx{171}\gdef\fuseBy{103}%
+ \gdef\fuseBx{171}\gdef\fuseBy{97}%corrected
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer C\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `C'}%
+ \else
+% \gdef\fuseBx{0}\gdef\fuseBy{200}%
+ \gdef\fuseBx{0}\gdef\fuseBy{206}%corrected
+ \gdef\fuseAx{171}\gdef\fuseAy{103}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+}}}% end of the macro \threefuseposh
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Inverse horizontal type}
+%
+% The macro |\threefusehi| typesets a three-membered ring to be fused.
+% The following numbering is adopted in this macro.
+%
+% \begin{verbatim}
+% *******************************
+% * thereehetero fusing unit *
+% * (vertical horizontal type) *
+% *******************************
+%
+% aaa bbb
+% c 3
+% / |
+% eee 1 | b
+% fff a` |
+% 2 <---original point
+% ccc ddd
+% \end{verbatim}
+%
+% The macro |\threefusehi| has two arguments |ATOMLIST|, |SUBSLIST| and |FUSE|
+% as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \threefusehi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `f' and a uppercase
+% character `A' or `B'.
+%
+% The |BONDLIST| argument contains one
+% character selected from a to c, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `$n+$' ($n=1$ to $3$) represents a plus charge on a hetero atom
+% at the $n$-position.
+% The option `$n+$' ($n=4$ to $6$) represents a plus charge outside the ring.
+% The option `$0+$' typesets a plus charge at the center of the ring.
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% none : saturated
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 3,1-double bond
+% A : aromatic circle
+% {n+} : plus at the n-hetero atom (n = 1 to 3)
+% : n=4 -- outer plus at 1 position
+% : n=5 -- outer plus at 2 position
+% : n=6 -- outer plus at 3 position
+% {0+} : plus at the center of a cyclopropane ring
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 3 atoms)
+%
+% for n = 1 to 3
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position,
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 3
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% The argument |FUSE| represents one bond to be omitted.
+% The omitted edge is regarded as a fused position.
+%
+% \begin{verbatim}
+% FUSE: one bond omitted (a, b, or c)
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges are regarded as non-fused positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a, b, or c)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \threefusehi{1==N}{1==Cl;2==F}{c}
+% \threefusehi[c]{1==N}{1==Cl;3==F;2==CH$_{3}$}{a}
+% \end{verbatim}
+%
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/12/5}{Add: spiro and fused rings}
+%
+% \begin{macro}{\threefusehi}
+% \begin{macro}{\@three@fusehi}
+% \begin{macro}{\@three@@fusehi}
+% \begin{macro}{\@threefusehi}
+% \begin{macrocode}
+\def\threefusehi{\@ifnextchar({\@three@fusehi(@}{\@three@fusehi(@)}}
+\def\@three@fusehi(#1){\@ifnextchar[{\@three@@fusehi(#1)[@}%
+{\@three@@fusehi(#1)[@]}}
+\def\@three@@fusehi(#1)[#2]#3#4#5{\@ifnextchar[%
+{\@threefusehi(#1)[#2]{#3}{#4}{#5}[@}%
+{\@threefusehi(#1)[#2]{#3}{#4}{#5}[@]}}
+\def\@threefusehi(#1)[#2]#3#4#5[#6]{%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+% % treatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniatom\iniflag%initialize
+\test@vertix@sixv{#3}{a}{e}{c}{@}{@}{@}%tentative use for six-h
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % adustment of subs positions %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\threefuseposhi{#5}%
+\begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/%
+(580,700)(-400,-240){threefusehi}%2002/4/30 by S. Fujita
+(400,200)%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % retreatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniatom\iniflag%initialize
+\test@vertix@sixv{#3}{e}{c}{a}{@}{@}{@}%
+\test@vertix@sixv{#3}{f}{d}{b}{@}{@}{@}%
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+{\resetbdsw%
+\@bond@fuse@omit{#5}{#6}%
+\Put@Direct(0,0){\set@skel@bond{#1}{a}{d}}%
+ % bond between 1 and 2 \@aaa -> \skbondd etc
+\Put@Direct(-171,-103){\set@skel@bond{#1}{b}{b}}%
+ % bond between 2 and 3 \@bbb -> \skbondb etc
+\Put@Direct(0,-200){\set@skel@bond{#1}{c}{f}}%
+ % bond between 3 and 1 \@ccc -> \skbondf etc
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r\relax%
+\else\if\member a\relax\Put@Direct(0,0){\bondd}%
+\else\if\member b\relax\Put@Direct(-171,-103){\bondb}%
+\else\if\member c\relax\Put@Direct(0,-200){\bondf}%
+\else\if\member A\relax% aromatic circle
+ \Put@oCircle(70,103){100}% %circle
+\else
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+% % inner bond attachment %
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+ \expandafter\twoCH@@R\member//%
+ \set@fusionadd@threehi
+\fi\fi\fi\fi\fi%
+}%
+% \end{macrocode}
+%
+% \changes{v2.01}{2001/6/20}{The \cs{storeclipinfo} command is added.}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\iniflag
+\Put@Direct(-171,103){\set@hetatom@sixh{#3}{0}{0}{2}{0}%
+%\if@aclip \global\@acliptrue\fi
+\storeclipinfo
+}%subst 1 <--six h 1
+\developclipinfo
+\Put@Direct(-303,29){\set@hetatom@sixh{#3}{0}{2}{4}{0}%
+%\if@cclip \global\@ccliptrue\fi
+\storeclipinfo
+}%subst 3 <--six h 3
+\developclipinfo
+\Put@Direct(-303,171){\set@hetatom@sixh{#3}{3}{4}{6}{0}%
+%\if@eclip \global\@ecliptrue\fi
+\storeclipinfo
+}%subst 2 <--six h 5
+\developclipinfo
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\Put@Direct(-171,103){\setsixringh{#4}{0}{0}{2}{0}}%subst 1
+\Put@Direct(-303,29){\setsixringh{#4}{0}{2}{4}{0}}%subst 3
+\Put@Direct(-303,171){\setsixringh{#4}{3}{4}{6}{0}}%subst 2
+\end{ShiftPicEnv}%
+\threefuseposhi{#5}%%for FuseWaring when nested
+\iniatom\iniflag
+\global\@smallringswtrue%for permition at a center bond
+}% %end of \threefusehi macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The macro |\threefuseposhi| is used in the definition of
+% the |\threefusev| macro to detect a fused edge, where
+% the coordinates of a reference terminal (|\fuseAx| and |\fuseAy|)
+% and of the other terminal of the edge (|\fuseBx| and |\fuseBy|)
+% are given for the successive process of adjustment.
+%
+% \begin{macro}{\threefuseposhi}
+% \begin{macrocode}
+\def\threefuseposhi#1{%
+\global\@sixfuseposvfalse
+{\resetbdsw%
+\@tfor\memBer:=#1\do{%
+\if\memBer a\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bond at bond `a'}%
+ \else
+ \gdef\fuseAx{-171}\gdef\fuseAy{103}%corrected
+ \gdef\fuseBx{0}\gdef\fuseBy{0}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer A\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bond at bond `A'}%
+ \else
+ \gdef\fuseBx{-171}\gdef\fuseBy{103}%
+ \gdef\fuseAx{0}\gdef\fuseAy{0}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer b\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bond at bond `b'}%
+ \else
+ \gdef\fuseAx{0}\gdef\fuseAy{0}%
+ \gdef\fuseBx{0}\gdef\fuseBy{200}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer B\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `B'}%
+ \else
+ \gdef\fuseBx{0}\gdef\fuseBy{0}%
+ \gdef\fuseAx{0}\gdef\fuseAy{200}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer c\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `c'}%
+ \else
+ \gdef\fuseAx{0}\gdef\fuseAy{200}%
+% \gdef\fuseBx{-171}\gdef\fuseBy{103}%
+ \gdef\fuseBx{-171}\gdef\fuseBy{97}%corrected
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+\if\memBer C\relax
+ \if@sixfuseposv
+ \XyMTeXWarning{Double fused bonds at bond `C'}%
+ \else
+% \gdef\fuseBx{0}\gdef\fuseBy{200}%
+ \gdef\fuseBx{0}\gdef\fuseBy{206}%corrected
+ \gdef\fuseAx{-171}\gdef\fuseAy{103}%
+ \global\@sixfuseposvtrue
+ \fi
+\fi%
+}}}% end of the macro \threefuseposhi
+%</fusering>
+% \end{macrocode}
+% \end{macro}
+%
+% \Finale
+%
+\endinput
diff --git a/Master/texmf-dist/source/latex/xymtex/base/fusering.ins b/Master/texmf-dist/source/latex/xymtex/base/fusering.ins
new file mode 100644
index 00000000000..c12b5e9e3b3
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/fusering.ins
@@ -0,0 +1,53 @@
+\def\batchfile{fusering.ins}
+\input docstrip.tex
+\preamble
+
+This is a generated file.
+
+Copyright 1998,2001,2002,2004,2010 by Shinsaku Fujita
+all rights reserved.
+This style file is created for drawing chemical structural formulas
+This style file is to be contained in the ``xymtex'' directory which
+is an input directory for TeX.
+
+This file is part of the XyMTeX system.
+=======================================
+
+Old Versions:
+Version 1.02 Released on October 31, 1998 (private version)
+Version 2.00 Released on December 25, 1998
+Version 2.01 Released on June 20, 2001 (private version)
+Version 3.00 Released on April 30, 2002
+Version 4.00 Released on May 30, 2002 (private version)
+Version 4.01 Released on August 30, 2004
+
+The Present Version:
+Version 5.00 Released on October 01, 2010
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3
+of this license or (at your option) any later version.
+The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of LaTeX
+version 2005/12/01 or later.
+
+This work has the LPPL maintenance status `maintained'.
+The Current Maintainer of this work is Shinsaku Fujita.
+
+This work consists of the files fusering.dtx and fusering.ins
+and the derived file fusering.sty.
+
+=======================================
+
+\endpreamble
+
+\keepsilent
+
+\generateFile{fusering.drv}{t}{%
+ \from{fusering.dtx}{driver}}
+
+\generateFile{fusering.sty}{t}{%
+ \from{fusering.dtx}{fusering}}
+
+\endinput
diff --git a/Master/texmf-dist/source/latex/xymtex/base/hcycle.dtx b/Master/texmf-dist/source/latex/xymtex/base/hcycle.dtx
new file mode 100644
index 00000000000..87909359c34
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/hcycle.dtx
@@ -0,0 +1,3897 @@
+% \iffalse meta-comment
+%% File: hcycle.dtx
+%
+% Copyright 1993,1996,1998,2001,2002,2004,2010,2013 by Shinsaku Fujita
+%
+% This file is part of XyMTeX system.
+% -------------------------------------
+%
+% This file is a successor to:
+%
+% hcycle.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].
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+% The Current Maintainer of this work is Shinsaku Fujita.
+%
+% This work consists of the files hcycle.dtx and hcycle.ins
+% and the derived file hcycle.sty.
+%
+% Please report any bugs, comments, suggestions, etc. to:
+% Shinsaku Fujita,
+% Shonan Institute of Chemoinformatics and Mathematical Chemistry
+% Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun, Kanagawa 250-0019 Japan
+% (old address)
+% Ashigara Research Laboratories, Fuji Photo Film Co., Ltd.,
+% Minami-Ashigara, Kanagawa-ken, 250-01, Japan.
+% (old address)
+% Department of Chemistry and Materials Technology,
+% Kyoto Institute of Technology, \\
+% Matsugasaki, Sakyoku, Kyoto, 606 Japan
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{hcycle}
+% \def\versi@ndate{December 01, 1993}
+% \def\versi@nno{ver1.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{hcycle}
+% \def\versi@ndate{August 16, 1996}
+% \def\versi@nno{ver1.01}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{hcycle}
+% \def\versi@ndate{October 31, 1998}
+% \def\versi@nno{ver1.02}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{hcycle}
+% \def\versi@ndate{December 25, 1998}
+% \def\versi@nno{ver2.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{hcycle}
+% \def\versi@ndate{June 20, 2001}
+% \def\versi@nno{ver2.01}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{hcycle}
+% \def\versi@ndate{April 30, 2002}
+% \def\versi@nno{ver3.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{hcycle}
+% \def\versi@ndate{May 30, 2002}
+% \def\versi@nno{ver4.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{hcycle}
+% \def\versi@ndate{August 30, 2004}
+% \def\versi@nno{ver4.01}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{hcycle}
+% \def\versi@ndate{October 01, 2010}
+% \def\versi@nno{ver5.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{hcycle}
+% \def\versi@ndate{March 31, 2013}
+% \def\versi@nno{ver5.01b}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \fi
+%
+% \CheckSum{3807}
+%% \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}
+% \changes{v2.01}{2001/6/20}{Command for Sugars} (private version)
+% \changes{v3.00}{2002/4/30}{Command for Sugars}
+% \changes{v4.00}{2002/05/30}{PostScript output and ShiftPicEnv}
+% \changes{v4.01}{2004/08/30}{Minor additions}
+% \changes{v5.00}{2010/10/01}{bond coloring and the LaTeX Project Public License}
+% \changes{v5.01b}{2013/03/30}{Improvement of this documentation}
+% \changes{v5.01bb}{2013/03/31}{\cs{pyranosew} etc. added}
+% \changes{v5.01}{2013/06/25}{\cs{sixsugarhw} etc. added. Wavy bonds added}
+% \fi
+%
+% \iffalse
+%<*driver>
+\NeedsTeXFormat{pLaTeX2e}
+% \fi
+\ProvidesFile{hcycle.dtx}[2013/06/25 v5.01 XyMTeX{} package file]
+% \iffalse
+\documentclass{ltxdoc}
+\GetFileInfo{hcycle.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{Further Hetrocycles by {\sffamily hcycle.sty}
+(\fileversion) of \XyMTeX{}}
+\author{Shinsaku Fujita \\
+Shonan Institute of Chemoinformatics and Mathematical Chemistry, \\
+Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun, Kanagawa 250-0019 Japan
+% % (old address)
+% %Department of Chemistry and Materials Technology, \\
+% %Kyoto Institute of Technology, \\
+% %Matsugasaki, Sakyoku, Kyoto, 606-8585 Japan
+% %% (old address)
+% %% Ashigara Research Laboratories,
+% %% Fuji Photo Film Co., Ltd., \\
+% %% Minami-Ashigara, Kanagawa, 250-01 Japan
+}
+\date{\filedate}
+%
+\begin{document}
+ \maketitle
+ \DocInput{hcycle.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \section{Introduction}\label{hcycle:intro}
+%
+% \subsection{Options for {\sffamily docstrip}}
+%
+% \DeleteShortVerb{\|}
+% \begin{center}
+% \begin{tabular}{|l|l|}
+% \hline
+% \emph{option} & \emph{function}\\ \hline
+% hcycle & hcycle.sty \\
+% driver & driver for this dtx file \\
+% \hline
+% \end{tabular}
+% \end{center}
+% \MakeShortVerb{\|}
+%
+% \subsection{Version Information}
+%
+% \begin{macrocode}
+%<*hcycle>
+\typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 5.01}
+\typeout{ -- Released June 25, 2013 by Shinsaku Fujita}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\j@urnalname{hcycle}
+\def\versi@ndate{June 25, 2013}
+\def\versi@nno{ver5.01}
+\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 hcycle.sty}
+%
+% \begin{verbatim}
+% ********************************
+% * hcycle.sty: list of commands *
+% ********************************
+%
+% <Convention for bond-setting>
+%
+% \@pyrana
+% \@pyranb
+% \@pyranbb
+% \@pyranbB
+% \@pyranbC
+% \@pyranc
+%
+% <Pyranose and Furanose>
+%
+% construction:
+% \pyranose \@pyranose
+% \Pyranose \@Pyranose
+% \furanose \@furanose
+% \Furanose \@Furanose
+%
+% \pyranosew \@pyranosew
+% \Pyranosew \@Pyranosew
+% \furanosew \@furanosew
+% \Furanosew \@Furanosew
+%
+% adjustment:
+% \ylpyranoseposition
+% \ylfuranoseposition
+%
+% <Six-membered Sugars>
+% large dimension:
+% (construction)
+% \SixSugarh \@Six@Sugarh \@Six@@Sugarh \@SixSugarh
+%
+% (adjustment)
+% \ylSixSugarhposition \test@vrtx@SixSugarh
+% \set@skel@Sugarhbond \set@hetatom@Sugarh
+%
+% (bond)
+% \Sugarhskbonda \Sugarhskbondc \Sugarhskbondd
+% \Sugarhskbondb \Sugarhskbonde \Sugarhskbondf
+%
+% \Sugarhbonda \Sugarhbondf \Sugarhbondc
+% \Sugarhbondd \Sugarhbonde \Sugarhbondb
+%
+% normal dimension:
+% (construction)
+% \sixsugarh \@six@sugarh \@six@@sugarh \@sixsugarh
+% \sixsugarhw \@six@sugarhw
+%
+% (adjustment)
+% \set@skel@sugarhbond \set@hetatom@sugarh
+%
+% (bond)
+% \sugarhskbonda \sugarhskbondc \sugarhskbondd
+% \sugarhskbondb \sugarhskbonde \sugarhskbondf
+%
+% \sugarhbonda \sugarhbondf \sugarhbondc
+% \sugarhbondd \sugarhbonde \sugarhbondb
+%
+% <Five-membered Sugars>
+%
+% large dimension:
+% (construction)
+% \FiveSugarh \@Five@Sugarh \@Five@@Sugarh \@FiveSugarh
+%
+% (adjustment)
+% \ylFiveSugarhposition
+% \set@hteatom@FiveSugarh
+%
+% (bond)
+% \fSugarhskbondd \fSugarhskbonde
+%
+% \fSugarhbondd \fSugarhbonde
+%
+% normal dimension:
+% (construction)
+% \fivesugarh \@five@sugarh \@five@@sugarh \@fivesugarh
+% \fivesugarhw \@five@sugarhw
+%
+% (adjustment)
+% \ylfiveSugarhposition
+% \set@hteatom@fivesugarh
+%
+% (bond)
+% \fsugarhskbondd \fsugarhskbonde
+%
+% \fsugarhbondd \fsugarhbonde
+%
+% <Applications>
+% \cyclitol \@cyclitol
+% \Cyclitol \@Cyclitol
+%
+%
+% \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 hcycle.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{Pyranoses and Furanoses}
+% \subsection{Macros for setting substituents}
+%
+% Macros |\@pyrana| to |\@pyranc| are used to set substituents
+% on each position of a pyranose and furanose. Note that
+% comments (conerning locant numbers) on the end of each row have
+% lost the exact meaning,
+% since such a command moiety is used in many macros after copying.
+%
+% \begin{macro}{\@pyrana}
+% \begin{macro}{\@pyranb}
+% \begin{macro}{\@pyranbb}
+% \begin{macro}{\@pyranbB}
+% \begin{macro}{\@pyranc}
+% \begin{macro}{\@pyranbC}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.01}{2001/6/20}{Adding \cs{\@pyranbC}}
+% \changes{v5.01}{2013/6/25}{Adding wavy bonds}
+% \begin{macrocode}
+% **************************************************
+% * setting substituents for pyranose and furanose *
+% **************************************************
+% %%%%%%%%%%%%%%%
+% % subst. on 1 %
+% %%%%%%%%%%%%%%%
+\newif\if@clipping \@clippingfalse
+\def\@pyrana{%
+ \if@clipping%clipping
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=-10
+ \yl@ydiff=30
+ \Put@Line(45,0)(1,0){80}% single bond at 1
+ \putratom{130}{-30}{\@memberb}% right type
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=32
+ \yl@ydiff=72
+ \Put@Line(0,-45)(0,-1){73}% single bond at 1 alpha (down)
+ \putratom{-32}{-190}{\@memberb}% right type
+ \else\if\@tmpc b%(e) beta
+ \yl@xdiff=32
+ \yl@ydiff=-12
+ \Put@Line(0,45)(0,1){73}% single bond at 1 beta (up)
+ \putratom{-32}{130}{\@memberb}% right type
+ \else\if\@tmpc A% alpha
+ \yl@xdiff=-10
+ \yl@ydiff=60
+ \Put@Line(25,-25)(1,-1){100}% single bond at 1
+ \putratom{130}{-180}{\@memberb}% right type
+ \else\if\@tmpc B% beta
+ \yl@xdiff=-10
+ \yl@ydiff=10
+ \Put@Line(25,25)(1,1){100}% single bond at 1
+ \putratom{130}{110}{\@memberb}% right type
+ \fi\fi\fi\fi\fi%
+ \else \if\@tmpb D%double bond
+ \yl@xdiff=-10
+ \yl@ydiff=30
+ \Put@Line(30,-15)(1,0){90}% double bond at 1
+ \Put@Line(30,15)(1,0){90}% double bond at 1
+ \putratom{130}{-30}{\@memberb}% right type
+%2013/06/25
+ \else\if\@tmpb U%(U) alpha undefined
+ \yl@xdiff=-10\relax
+ \yl@ydiff=30\relax
+ {%
+ \WaveBonds%
+ \Put@Line(25,0)(1,0){100}% % wavy bond at 1
+ }%
+ \putratom{130}{-30}{\@memberb}% right type
+%
+ \else%
+ \yl@xdiff=-10
+ \yl@ydiff=30
+ \Put@Line(45,0)(1,0){90}% single bond at 1
+ \putratom{130}{-30}{\@memberb}% right type
+ \fi
+ \fi\fi
+ \else
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=-10
+ \yl@ydiff=30
+ \Put@Line(0,0)(1,0){120}% single bond at 1
+ \putratom{130}{-30}{\@memberb}% right type
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=32
+ \yl@ydiff=72
+ \Put@Line(0,0)(0,-1){118}% single bond at 1 alpha (down)
+ \putratom{-32}{-190}{\@memberb}% right type
+ \else\if\@tmpc b%(e) beta
+ \yl@xdiff=32
+ \yl@ydiff=-12
+ \Put@Line(0,0)(0,1){118}% single bond at 1 beta (up)
+ \putratom{-32}{130}{\@memberb}% right type
+ \else\if\@tmpc A% alpha
+ \yl@xdiff=-10
+ \yl@ydiff=60
+ \Put@Line(0,0)(1,-1){120}% single bond at 1
+ \putratom{130}{-180}{\@memberb}% right type
+ \else\if\@tmpc B% beta
+ \yl@xdiff=-10
+ \yl@ydiff=10
+ \Put@Line(0,0)(1,1){120}% single bond at 1
+ \putratom{130}{110}{\@memberb}% right type
+ \fi\fi\fi\fi\fi%
+ \else \if\@tmpb D%double bond
+ \yl@xdiff=-10
+ \yl@ydiff=30
+ \Put@Line(0,-15)(1,0){120}% double bond at 1
+ \Put@Line(0,15)(1,0){120}% double bond at 1
+ \putratom{130}{-30}{\@memberb}% right type
+%2013/06/25
+ \else\if\@tmpb U%(U) alpha undefined
+ \yl@xdiff=-10\relax
+ \yl@ydiff=30\relax
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(1,0){120}% % wavy bond at 1
+ }%
+ \putratom{130}{-30}{\@memberb}% right type
+%
+ \else%
+ \yl@xdiff=-10
+ \yl@ydiff=30
+ \Put@Line(0,0)(1,0){120}% single bond at 1
+ \putratom{130}{-30}{\@memberb}% right type
+ \fi\fi\fi
+ \fi
+}%
+% \end{macrocode}
+%
+% \changes{v1.02}{1998/10/25}{\cs{@pyranb} is divided into
+% \cs{@pyranb}, \cs{@pyranbb} and \cs{@pyranbB}}
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%
+% % subst. on 2,3,5 %
+% %%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%
+% % subst. on 2 %
+% %%%%%%%%%%%%%%%
+\def\@pyranb{%
+ \if@clipping%clipping
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=-10
+ \yl@ydiff=60
+ \Put@Line(45,-45)(1,-1){100}% single bond at 2
+ \putratom{130}{-180}{\@memberb}% right type
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=32
+ \yl@ydiff=72
+ \Put@Line(0,-45)(0,-1){73}% single bond alpha (down)
+ \putlratom{-32}{-190}{\@memberb}% left & right type
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=32
+ \yl@ydiff=-12
+ \Put@Line(0,45)(0,1){73}% single bond beta (up)
+ \putlratom{-32}{130}{\@memberb}% left & right type
+ \else\if\@tmpc A%(A) beta
+ \yl@xdiff=10
+ \yl@ydiff=40
+ \Put@Line(40,-40)(1,-1){100}% single bond at 2
+ \putratom{130}{-180}{\@memberb}% right type
+ \else\if\@tmpc B%(B) beta
+ \yl@xdiff=-10
+ \yl@ydiff=40
+ \Put@Line(-40,-40)(-1,-1){100}% single bond at 2
+ \putlatom{-130}{-180}{\@memberb}% left type
+ \fi\fi\fi\fi\fi%
+ \else \if\@tmpb D%double bond: Added by SF 1998/10/25
+ \yl@xdiff=-10
+ \yl@ydiff=60
+ \Put@Line(15,-45)(1,-1){100}% double bond at 2
+ \Put@Line(45,-15)(1,-1){100}% double bond at 2
+ \putratom{130}{-180}{\@memberb}% right type
+%2013/06/25
+ \else\if\@tmpb U%(U) alpha undefined
+ \yl@xdiff=-10\relax
+ \yl@ydiff=40\relax
+ {%
+ \WaveBonds%
+ \Put@Line(40,-40)(1,-1){90}% % wavy bond at 2
+ }%
+ \putratom{130}{-180}{\@memberb}% right type
+%
+ \else%
+ \yl@xdiff=-10
+ \yl@ydiff=10
+ \Put@Line(45,45)(1,1){100}% single bond at 1
+ \putratom{130}{110}{\@memberb}% left type
+ \fi\fi\fi
+ \else
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=-10
+ \yl@ydiff=60
+ \Put@Line(0,0)(1,-1){120}% single bond at 1
+ \putratom{130}{-180}{\@memberb}% left type
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=32
+ \yl@ydiff=72
+ \Put@Line(0,0)(0,-1){118}% single bond alpha (down)
+ \putlratom{-32}{-190}{\@memberb}% left & right type
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=32
+ \yl@ydiff=-12
+ \Put@Line(0,0)(0,1){118}% single bond beta (up)
+ \putlratom{-32}{130}{\@memberb}% left & right type
+ \fi\fi\fi%\fi\fi%
+ \else \if\@tmpb D%double bond: Added by SF 1998/10/25
+ \yl@xdiff=-10
+ \yl@ydiff=60
+ \Put@Line(-15,-15)(1,-1){120}% double bond at 1
+ \Put@Line(0,15)(1,-1){120}% double bond at 1
+ \putratom{130}{-180}{\@memberb}% right type
+%2013/06/25
+ \else\if\@tmpb U%(U) alpha undefined
+ \yl@xdiff=-10\relax
+ \yl@ydiff=60\relax
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(1,-1){120}% % wavy bond at 2
+ }%
+ \putratom{130}{-180}{\@memberb}% right type
+%
+ \else%
+ \yl@xdiff=-10
+ \yl@ydiff=10
+ \Put@Line(0,0)(1,1){120}% single bond at 1
+ \putratom{130}{110}{\@memberb}% left type
+ \fi\fi\fi
+ \fi
+}%
+% \end{macrocode}
+%
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 3 %
+% %%%%%%%%%%%%%%%
+\def\@pyranbb{%
+ \if@clipping%clipping
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=-10
+ \yl@ydiff=60
+ \Put@Line(45,-45)(1,-1){100}% single bond at 3
+ \putratom{130}{-180}{\@memberb}% right type
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=32
+ \yl@ydiff=72
+ \Put@Line(0,-45)(0,-1){73}% single bond alpha (down)
+ \putlratom{-32}{-190}{\@memberb}% left & right type
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=32
+ \yl@ydiff=-12
+ \Put@Line(0,45)(0,1){73}% single bond beta (up)
+ \putlratom{-32}{130}{\@memberb}% left & right type
+ \else\if\@tmpc A%(A) beta%
+ \yl@xdiff=-10
+ \yl@ydiff=60
+ \Put@Line(45,-45)(1,-1){100}% single bond at 3
+ \putratom{130}{-180}{\@memberb}% right type
+ \else\if\@tmpc B%(B) beta
+ \yl@xdiff=10
+ \yl@ydiff=60
+ \Put@Line(-45,-45)(-1,-1){100}% single bond at 3
+ \putlatom{-130}{-180}{\@memberb}% left type
+ \fi\fi\fi\fi\fi%
+ \else \if\@tmpb D%double bond: Added by SF 1998/10/25
+ \yl@xdiff=20
+ \yl@ydiff=60
+ \Put@Line(-15,-45)(-1,-1){100}% double bond at 3
+ \Put@Line(-45,-15)(-1,-1){100}% double bond at 3
+ \putlatom{-130}{-180}{\@memberb}%left type
+%2013/06/25
+ \else\if\@tmpb U%(U) alpha undefined
+ \yl@xdiff=-10\relax
+ \yl@ydiff=60\relax
+ {%
+ \WaveBonds%
+ \Put@Line(-40,-40)(-1,-1){90}% % wavy bond at 2
+ }%
+ \putlatom{-130}{-180}{\@memberb}% left type
+%
+ \else%
+ \yl@xdiff=10
+ \yl@ydiff=60
+ \Put@Line(-45,-45)(-1,-1){100}% single bond at 1
+ \putlatom{-130}{-180}{\@memberb}% left type
+ \fi\fi\fi
+ \else
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=-10
+ \yl@ydiff=60
+ \Put@Line(0,0)(1,-1){120}% single bond at 1
+ \putratom{130}{-180}{\@memberb}% left type
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=32
+ \yl@ydiff=72
+ \Put@Line(0,0)(0,-1){118}% single bond alpha (down)
+ \putlratom{-32}{-190}{\@memberb}% left & right type
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=32
+ \yl@ydiff=-12
+ \Put@Line(0,0)(0,1){118}% single bond beta (up)
+ \putlratom{-32}{130}{\@memberb}% left & right type
+ \fi\fi\fi%\fi\fi%
+ \else \if\@tmpb D%double bond: Added by SF 1998/10/25
+ \yl@xdiff=20
+ \yl@ydiff=60
+ \Put@Line(15,-15)(-1,-1){120}% double bond at 1
+ \Put@Line(0,15)(-1,-1){120}% double bond at 1
+ \putlatom{-130}{-180}{\@memberb}%left type
+%2013/06/25
+ \else\if\@tmpb U%(U) alpha undefined
+ \yl@xdiff=-10\relax
+ \yl@ydiff=60\relax
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(-1,-1){120}% % wavy bond at 2
+ }%
+ \putlatom{-130}{-180}{\@memberb}% left type
+%
+ \else%
+ \yl@xdiff=10
+ \yl@ydiff=60
+ \Put@Line(0,0)(-1,-1){120}% single bond at 1
+ \putlatom{-130}{-180}{\@memberb}% left type
+ \fi\fi\fi
+ \fi
+}%
+% \end{macrocode}
+%
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 5 %
+% %%%%%%%%%%%%%%%
+\def\@pyranbB{%
+ \if@clipping%clipping
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=10
+ \yl@ydiff=-60
+ \Put@Line(-45,45)(-1,1){100}% single bond at 5
+ \putlatom{-130}{130}{\@memberb}% left type
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=32
+ \yl@ydiff=72
+ \Put@Line(0,-45)(0,-1){73}% single bond alpha (down)
+ \putlratom{-32}{-190}{\@memberb}% left & right type
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=32
+ \yl@ydiff=-12
+ \Put@Line(0,45)(0,1){73}% single bond beta (up)
+ \putlratom{-32}{130}{\@memberb}% left & right type
+ \else\if\@tmpc A%(A) beta
+ \yl@xdiff=10
+ \yl@ydiff=-60
+ \Put@Line(-45,45)(-1,1){100}% single bond at 5
+ \putlatom{-130}{130}{\@memberb}% left type
+ \else\if\@tmpc B%(B) beta
+ \yl@xdiff=-10
+ \yl@ydiff=60
+ \Put@Line(45,45)(1,1){100}% single bond at 5
+ \putratom{130}{130}{\@memberb}% left type
+ \fi\fi\fi\fi\fi%
+ \else \if\@tmpb D%double bond: Added by SF 1998/10/25
+ \yl@xdiff=0
+ \yl@ydiff=-20
+ \Put@Line(-15,45)(-1,1){100}% double bond at 5
+ \Put@Line(-45,15)(-1,1){100}% double bond at 5
+ \putlatom{-120}{140}{\@memberb}%left type
+%2013/06/25
+ \else\if\@tmpb U%(U) alpha undefined
+ \yl@xdiff=10\relax
+ \yl@ydiff=-60\relax
+ {%
+ \WaveBonds%
+ \Put@Line(-40,40)(-1,1){90}% % wavy bond at 5
+ }%
+ \putlatom{-130}{130}{\@memberb}% left type
+%
+ \else%
+ \yl@xdiff=10
+ \yl@ydiff=-60
+ \Put@Line(-45,45)(-1,1){100}% single bond at 5
+ \putlatom{-130}{130}{\@memberb}% left type
+ \fi\fi\fi
+ \else
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=-10
+ \yl@ydiff=60
+ \Put@Line(0,0)(1,-1){120}% single bond at 5
+ \putratom{130}{-180}{\@memberb}% left type
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=32
+ \yl@ydiff=72
+ \Put@Line(0,0)(0,-1){118}% single bond alpha (down)
+ \putlratom{-32}{-190}{\@memberb}% left & right type
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=32
+ \yl@ydiff=-12
+ \Put@Line(0,0)(0,1){118}% single bond beta (up)
+ \putlratom{-32}{130}{\@memberb}% left & right type
+ \fi\fi\fi%\fi\fi%
+ \else \if\@tmpb D%double bond: Added by SF 1998/10/25
+ \yl@xdiff=0
+ \yl@ydiff=-20
+ \Put@Line(15,15)(-1,1){120}% double bond at 5
+ \Put@Line(0,-15)(-1,1){120}% double bond at 5
+ \putlatom{-120}{140}{\@memberb}%left type
+%2013/06/25
+ \else\if\@tmpb U%(U) alpha undefined
+ \yl@xdiff=10\relax
+ \yl@ydiff=-60\relax
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(-1,1){120}% % wavy bond at 5
+ }%
+ \putlatom{-130}{130}{\@memberb}% left type
+%
+ \else%
+ \yl@xdiff=10
+ \yl@ydiff=-20
+ \Put@Line(0,0)(-1,1){120}% single bond at 1
+ \putlatom{-130}{140}{\@memberb}% left type
+ \fi\fi\fi
+ \fi
+}%
+% \end{macrocode}
+%
+% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 4 %
+% %%%%%%%%%%%%%%%
+\def\@pyranc{%
+ \if@clipping%clipping
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=10
+ \yl@ydiff=30
+ \Put@Line(-45,0)(-1,0){80}% single bond at 4
+ \putlatom{-130}{-30}{\@memberb}% left type
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=-32
+ \yl@ydiff=72
+ \Put@Line(0,-45)(0,-1){80}% single bond at 4
+ \putlatom{32}{-190}{\@memberb}% left type
+ \else\if\@tmpc b%(e) beta
+ \yl@xdiff=-32
+ \yl@ydiff=-12
+ \Put@Line(0,45)(0,1){80}% single bond at 4 beta (up)
+ \putlatom{32}{130}{\@memberb}% left type
+ \else\if\@tmpc A% alpha
+ \yl@xdiff=10
+ \yl@ydiff=60
+ \Put@Line(-30,-30)(-1,-1){100}% single bond at 4
+ \putlatom{-130}{-180}{\@memberb}% left type
+ \else\if\@tmpc B% beta
+ \yl@xdiff=10
+ \yl@ydiff=10
+ \Put@Line(-30,30)(-1,1){100}% single bond at 4
+ \putlatom{-130}{110}{\@memberb}% left type
+ \fi\fi\fi\fi\fi%
+ \else \if\@tmpb D%double bond
+ \yl@xdiff=10
+ \yl@ydiff=30
+ \Put@Line(-30,-15)(-1,0){100}% double bond at 4
+ \Put@Line(-30,15)(-1,0){100}% double bond at 4
+ \putlatom{-130}{-30}{\@memberb}% left type
+%2013/06/25
+ \else\if\@tmpb U%(U) alpha undefined
+ \yl@xdiff=10\relax
+ \yl@ydiff=30\relax
+ {%
+ \WaveBonds%
+ \Put@Line(-30,0)(-1,0){100}% % wavy bond at 4
+ }%
+ \putlatom{-130}{-30}{\@memberb}% left type
+%
+ \else%
+ \yl@xdiff=10
+ \yl@ydiff=30
+ \Put@Line(-45,0)(-1,0){80}% single bond at 4
+ \putlatom{-130}{-30}{\@memberb}% left type
+ \fi\fi\fi
+ \else
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=10
+ \yl@ydiff=30
+ \Put@Line(0,0)(-1,0){120}% single bond at 4
+ \putlatom{-130}{-30}{\@memberb}% left type
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=-32
+ \yl@ydiff=72
+ \Put@Line(0,0)(0,-1){118}% single bond at 4 alpha (down)
+ \putlatom{32}{-190}{\@memberb}% left type
+ \else\if\@tmpc b%(e) beta
+ \yl@xdiff=-32
+ \yl@ydiff=-12
+ \Put@Line(0,0)(0,1){118}% single bond at 4 beta (up)
+ \putlatom{32}{130}{\@memberb}% left type
+ \else\if\@tmpc A% alpha
+ \yl@xdiff=10
+ \yl@ydiff=60
+ \Put@Line(0,0)(-1,-1){120}% single bond at 4
+ \putlatom{-130}{-180}{\@memberb}% left type
+ \else\if\@tmpc B% beta
+ \yl@xdiff=10
+ \yl@ydiff=10
+ \Put@Line(0,0)(-1,1){120}% single bond at 4
+ \putlatom{-130}{110}{\@memberb}% left type
+ \fi\fi\fi\fi\fi%
+ \else \if\@tmpb D%double bond
+ \yl@xdiff=10
+ \yl@ydiff=30
+ \Put@Line(0,-15)(-1,0){120}% double bond at 4
+ \Put@Line(0,15)(-1,0){120}% double bond at 4
+ \putlatom{-130}{-30}{\@memberb}% left type
+%2013/06/25
+ \else\if\@tmpb U%(U) alpha undefined
+ \yl@xdiff=10\relax
+ \yl@ydiff=30\relax
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(-1,0){120}% % wavy bond at 4
+ }%
+ \putlatom{-130}{-30}{\@memberb}% left type
+%
+ \else%
+ \yl@xdiff=10
+ \yl@ydiff=30
+ \Put@Line(0,0)(-1,0){120}% single bond at 4
+ \putlatom{-130}{-30}{\@memberb}% left type
+ \fi\fi\fi
+ \fi
+}%
+% \end{macrocode}
+%
+% \changes{v2.01}{2001/06/20}{New command for SixSugar}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%
+% % subst. on 6 %
+% %%%%%%%%%%%%%%%
+\def\@pyranbC{%
+ \if@clipping%clipping
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=5
+ \yl@ydiff=5
+ \Put@Line(45,45)(1,1){100}% single bond at 6
+ \putratom{130}{140}{\@memberb}% left type
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=32
+ \yl@ydiff=72
+ \Put@Line(0,-45)(0,-1){73}% single bond alpha (down)
+ \putlratom{-32}{-190}{\@memberb}% left & right type
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=32
+ \yl@ydiff=-12
+ \Put@Line(0,45)(0,1){73}% single bond beta (up)
+ \putlratom{-32}{130}{\@memberb}% left & right type
+ \else\if\@tmpc A%(A)
+ \yl@xdiff=5
+ \yl@ydiff=5
+ \Put@Line(45,45)(1,1){100}% single bond at 6
+ \putratom{130}{140}{\@memberb}% right type
+ \else\if\@tmpc B%(B)
+ \yl@xdiff=5
+ \yl@ydiff=-15
+ \Put@Line(-45,45)(-1,1){100}% single bond at 6
+ \putlatom{-130}{140}{\@memberb}% left type
+ \fi\fi\fi\fi\fi%
+ \else \if\@tmpb D%double bond: Added by SF 1998/10/25
+ \yl@xdiff=0
+ \yl@ydiff=-20
+ \Put@Line(45,15)(1,1){100}% double bond at 6
+ \Put@Line(15,45)(1,1){100}% double bond at 6
+ \putratom{130}{140}{\@memberb}%right type
+%2013/06/25
+ \else\if\@tmpb U%(U) alpha undefined
+ \yl@xdiff=5\relax
+ \yl@ydiff=5\relax
+ {%
+ \WaveBonds%
+ \Put@Line(40,40)(1,1){90}% % wavy bond at 6
+ }%
+ \putratom{130}{130}{\@memberb}% right type
+%
+ \else%
+ \yl@xdiff=5
+ \yl@ydiff=5
+ \Put@Line(45,45)(1,1){100}% single bond at 6
+ \putratom{130}{140}{\@memberb}% left type
+ \fi\fi\fi
+ \else
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=-10
+ \yl@ydiff=60
+ \Put@Line(0,0)(1,-1){120}% single bond at 6
+ \putratom{130}{-180}{\@memberb}% left type
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=32
+ \yl@ydiff=72
+ \Put@Line(0,0)(0,-1){118}% single bond alpha (down)
+ \putlratom{-32}{-190}{\@memberb}% left & right type
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=32
+ \yl@ydiff=-12
+ \Put@Line(0,0)(0,1){118}% single bond beta (up)
+ \putlratom{-32}{130}{\@memberb}% left & right type
+ \fi\fi\fi%\fi\fi%
+ \else \if\@tmpb D%double bond: Added by SF 1998/10/25
+ \yl@xdiff=0
+ \yl@ydiff=-20
+ \Put@Line(15,-15)(1,1){120}% double bond at 6
+ \Put@Line(0,15)(1,1){120}% double bond at 6
+ \putratom{130}{140}{\@memberb}%right type
+%2013/06/25
+ \else\if\@tmpb U%(U) alpha undefined
+ \yl@xdiff=5\relax
+ \yl@ydiff=5\relax
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(1,1){120}% % wavy bond at 6
+ }%
+ \putratom{130}{130}{\@memberb}% right type
+%
+ \else%
+ \yl@xdiff=10
+ \yl@ydiff=-20
+ \Put@Line(0,0)(1,1){120}% single bond at 6
+ \putratom{130}{140}{\@memberb}% right type
+ \fi\fi\fi
+ \fi
+}%
+%</hcycle>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{Pyranose derivatives}
+%
+% The standard skeleton of pyranose is selected
+% to have the following locant numbers.
+%
+% \begin{verbatim}
+% ***********************
+% * pyranose derivative *
+% ***********************
+%
+% The following numbering is adopted in this macro.
+%
+% 5 e 6
+% ----O
+% d * * f
+% the original point ===> 4 * * 1
+% (0,0) * * a
+% c -----
+% 3 b 2
+% \end{verbatim}
+%
+% The macro |\pyranose| has an argument |SUBSLIST| as well as an optional
+% argument |BONDLIST|.
+% \begin{verbatim}
+%
+% \pyranose[BONDLIST]{SUBSLIST}
+%
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one or more
+% characters selected from a to f, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% \begin{verbatim}
+%
+% BONDLIST =
+%
+% none : mother skeleton
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,6-double bond
+% f : 6,1-double bond
+%
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents (max 5 substitution positions)
+%
+% for n = 1 to 5
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nSA : single bond (down) at n-atom (for n=1)
+% nSB : single bond (up) at n-atom (for n=1)
+% nSa : alpha single bond at n-atom
+% nSb : beta single bond at n-atom
+%
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \pyranose{1Sb==Cl;2Sa==F}
+% \pyranose{1Sb==Cl;4Sa==F;2Sa==CH$_{3}$}
+% \pyranose[a]{3Sb==OAc;4Sb==\lmoiety{MeO};5Sb==CH$_{2}$OAc}
+% \end{verbatim}
+%
+% The definition of |\@pyranose| uses a picture environment, in which
+% bonds are put directly, while subsituents are typset by using
+% the macros |\@pyrana| to |\@pyranc| described above.
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylpyranoseposition}, \cs{if@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+%
+% \changes{v2.01}{2001/06/20}{The definition has been changed:
+% the old \cs{pyranose} to \cs{pyranoseold}}
+% \changes{v5.00}{2010/10/01}{For bond coloring}
+% \begin{macro}{\pyranoseold}
+% \begin{macro}{\@pyranoseold}
+% \begin{macrocode}
+%<*hcycleold>
+\def\pyranoseold{\@ifnextchar[{\@pyranoseold}{\@pyranoseold[r]}}
+\def\@pyranoseold[#1]#2{%
+\@reset@ylsw%
+\ylpyranoseposition{#2}%
+\def\@@ylii{0}\def\@@yli{0}%
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(880,800)(-240,-400){pyranose}%
+(240,400)%2002/4/30 by S. Fujita
+ \Put@Line(0,0)(3,5){120}% %bond 4-5
+ \Put@Line(120,200)(1,0){252}% %bond 5-6
+ \Put@Line(532,0)(-3,5){96}% %bond 1-6
+ {\thicklines%
+ \Put@Line(0,0)(3,-5){120}% %bond 4-3
+ \Put@Line(412,-200)(3,5){120}% %bond 2-1
+ \Put@Line(120,-200)(1,0){292}}% %bond 3-2
+ \putratom{382}{160}{O}% left type
+ %
+\@tfor\member:=#1\do{%
+\if\member r%no endcyclic double bonds
+\else \if\member a%
+ \Put@Line(400,-150)(3,5){90}% %double bond 2-1
+\else \if\member b%
+ \Put@Line(150,-160)(1,0){232}% %double bond 3-2
+\else \if\member c%
+ \Put@Line(50,-12)(3,-5){90}% %double bond 4-3
+\else \if\member d%
+ \Put@Line(50,12)(3,5){90}% %double bond 4-5
+\else \if\member e%
+ \Put@Line(150,160)(1,0){232}% %double bond 5-6
+\else \if\member f%
+ \Put@Line(482,12)(-3,5){70}% %double bond 1-6
+\fi\fi\fi\fi\fi\fi\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%0 omit
+ \or\setBScolor{\Put@Direct(532,0){%
+ \if@clip \@clippingtrue \else \@clippingfalse\fi
+ \@pyrana}}% subst. on 1
+ \or\setBScolor{\Put@Direct(412,-200){%
+ \if@eclip \@clippingtrue \else \@clippingfalse\fi
+ \@pyranb}}% subst. on 2
+ \or\setBScolor{\Put@Direct(120,-200){%
+ \if@fclip \@clippingtrue \else \@clippingfalse\fi
+ \@pyranbb}}% subst. on 3
+ \or\setBScolor{\Put@Direct(0,0){%
+ \if@aclip \@clippingtrue \else \@clippingfalse\fi
+ \@pyranc}}% subst. on 4
+ \or\setBScolor{\Put@Direct(120,200){%
+ \if@bclip \@clippingtrue \else \@clippingfalse\fi
+ \@pyranbB}}% subst. on 5
+ \or\setBScolor{\Put@Direct(412,200){%
+ \if@cclip \@clippingtrue \else \@clippingfalse\fi
+ \@pyranbC}}% subst. on 6%%added 2001/6/20
+\fi %end of ifcase
+\fi\fi%
+}%
+\end{ShiftPicEnvB}%
+}% %end of \pyranose macro
+%</hcycleold>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \changes{v2.01}{2001/06/20}{The new definition for \cs{pyranose}}
+%
+% \begin{macro}{\pyranose}
+% \begin{macro}{\@pyranose}
+% \begin{macrocode}
+%<*hcycle>
+\def\pyranose{\@ifnextchar[{\@pyranose}{\@pyranose[]}}
+\def\@pyranose[#1]#2{\sixsugarh[#1]{6==O}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The front skeletal bonds of a pyranose ring are typeset with a bold line and wedged lines.
+% \changes{v5.01}{2013/03/31}{added the definition for \cs{pyranosew}}
+%
+% \begin{macro}{\pyranosew}
+% \begin{macro}{\@pyranosew}
+% \begin{macrocode}
+\def\pyranosew{\@ifnextchar[{\@pyranosew}{\@pyranosew[]}}
+\def\@pyranosew[#1]#2{%
+\sixsugarh[#1]{6==O;1s==\WedgeAsSubst(0,0)(-3,-5){120};4s==\WedgeAsSubst(0,0)(3,-5){120};%
+3s==\PutBondLine(-17,0)(307,0){2.8pt}}{#2}[abc]}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% Pyranose derivatives of slightly large dimension can be
+% drawn by the |\Pyranose| macro.
+%
+% \changes{v2.01}{2001/06/20}{New command: \cs{Pyranose}}
+%
+% \begin{macro}{\Pyranose}
+% \begin{macro}{\@Pyranose}
+% \begin{macrocode}
+\def\Pyranose{\@ifnextchar[{\@Pyranose}{\@Pyranose[]}}
+\def\@Pyranose[#1]#2{\SixSugarh[#1]{6==O}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The front skeletal bonds of a pyranose ring are typeset with a bold line and wedged lines.
+% This command cannot be used in |\TeX|/|\LaTeX| mode. The PostScript mode or the PDF mode
+% should be used.
+% \changes{v5.01}{2013/03/31}{added the definition for \cs{Pyranosew}}
+%
+% \begin{macro}{\Pyranosew}
+% \begin{macro}{\@Pyranosew}
+% \begin{macrocode}
+\def\Pyranosew{\@ifnextchar[{\@Pyranosew}{\@Pyranosew[]}}
+\def\@Pyranosew[#1]#2{%
+\SixSugarh[#1]{6==O;1s==\WedgeAsSubst(0,0)(-3,-5){153};4s==\WedgeAsSubst(0,0)(3,-5){153};%
+3s==\PutBondLine(-17,0)(376,0){2.8pt}}{#2}[abc]}
+%</hcycle>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Furanose derivatives}
+%
+% The standard skeleton of furanose is selected
+% to have the following locant numbers.
+%
+% \begin{verbatim}
+% ***********************
+% * furanose derivative *
+% ***********************
+%
+% The following numbering is adopted in this macro.
+%
+% 5
+% O
+% d * * e
+% the original point ===> 4 * * 1
+% (0,0) * * a
+% c -----
+% 3 b 2
+%
+% \end{verbatim}
+%
+% The macro |\furanose| has an argument |SUBSLIST| as well as an optional
+% argument |BONDLIST|.
+% \begin{verbatim}
+% \furanose[BONDLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one or more
+% characters selected from a to e, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% \begin{verbatim}
+% BONDLIST =
+%
+% none : mother skeleton
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,6-double bond
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+% \begin{verbatim}
+% SUBSLIST: list of substituents (max 4 substitution positions)
+%
+% for n = 1 to 4
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nSA : single bond (down) at n-atom (for n=1)
+% nSB : single bond (up) at n-atom (for n=1)
+% nSa : alpha single bond at n-atom
+% nSb : beta single bond at n-atom
+%\end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \furanose{1Sa==Cl;2Sb==F}
+%
+% \end{verbatim}
+%
+% The definition of |\@furanose| uses a picture environment, in which
+% bonds are put directly, while subsituents are typset by using
+% the macros |\@pyrana| to |\@pyranc| described above.
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylfuranoseposition}, \cs{if@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v5.00}{2010/10/01}{For bond coloring}
+%
+% \begin{macro}{\furanoseold}
+% \begin{macro}{\@furanoseold}
+% \begin{macrocode}
+%<*hcycleold>
+\def\furanoseold{\@ifnextchar[{\@furanoseold}{\@furanoseold[r]}}
+\def\@furanoseold[#1]#2{%
+\@reset@ylsw%
+\ylfuranoseposition{#2}%
+\def\@@ylii{0}\def\@@yli{0}%
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(880,800)(-240,-400){furanose}%
+(240,400)%2002/4/30 by S. Fujita
+ \Put@Line(0,0)(5,3){236}% %bond 4-5
+ \Put@Line(532,0)(-5,3){236}% %bond 1-5
+ {\thicklines%
+ \Put@Line(0,0)(3,-5){120}% %bond 4-3
+ \Put@Line(412,-200)(3,5){120}% %bond 2-1
+ \Put@Line(120,-200)(1,0){292}}% %bond 3-2
+ \putratom{236}{130}{O}% left type
+%
+\@tfor\member:=#1\do{%
+\if\member r%no endcyclic double bonds
+\else \if\member a%
+ \Put@Line(400,-150)(3,5){80}% %double bond 2-1
+\else \if\member b%
+ \Put@Line(150,-160)(1,0){232}% %double bond 3-2
+\else \if\member c%
+ \Put@Line(50,-12)(3,-5){80}% %double bond 4-3
+\else \if\member d%
+ \Put@Line(50,0)(5,3){180}% %double bond 4-5
+\else \if\member e%
+ \Put@Line(482,0)(-5,3){180}% %double bond 1-5
+\fi\fi\fi\fi\fi\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%0 omit
+ \or\setBScolor{\Put@Direct(532,0){\@pyrana}}% subst. on 1
+ \or\setBScolor{\Put@Direct(412,-200){\@pyranb}}% subst. on 2
+ \or\setBScolor{\Put@Direct(120,-200){\@pyranbb}}% subst. on 3
+ \or\setBScolor{\Put@Direct(0,0){\@pyranc}}% subst. on 4
+\fi%end of ifcase
+\fi\fi%
+}%
+\end{ShiftPicEnvB}%
+}% %end of \furanoseold macro
+%</hcycleold>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \changes{v2.01}{2001/06/20}{The new definition for \cs{furanose}}
+% \begin{macro}{\furanose}
+% \begin{macro}{\@furanose}
+% \begin{macrocode}
+%<*hcycle>
+\def\furanose{\@ifnextchar[{\@furanose}{\@furanose[]}}
+\def\@furanose[#1]#2{\fivesugarh[#1]{5==O}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The front skeletal bonds of a pyranose ring are typeset with a bold line and wedged lines.
+% \changes{v5.01}{2013/03/31}{New command \cs{furanosew}}
+% \begin{macro}{\furanosew}
+% \begin{macro}{\@furanosew}
+% \begin{macrocode}
+\def\furanosew{\@ifnextchar[{\@furanosew}{\@furanosew[]}}
+\def\@furanosew[#1]#2{%
+\fivesugarh[#1]{5==O;1s==\WedgeAsSubst(0,0)(-3,-5){120};%
+4s==\WedgeAsSubst(0,0)(3,-5){120};%
+3s==\PutBondLine(-17,0)(307,0){2.8pt}}{#2}[abc]}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% Furanose derivatives of slightly large dimension can be
+% drawn by the |\Furanose| macro.
+%
+% \changes{v2.01}{2001/06/20}{New command: \cs{Furanose}}
+%
+% \begin{macro}{\Furanose}
+% \begin{macro}{\@Furanose}
+% \begin{macrocode}
+\def\Furanose{\@ifnextchar[{\@Furanose}{\@Furanose[]}}
+\def\@Furanose[#1]#2{\FiveSugarh[#1]{5==O}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The front skeletal bonds of a pyranose ring are typeset with a bold line and wedged lines.
+% This command cannot be used in |\TeX|/|\LaTeX| mode. The PostScript mode or the PDF mode
+% should be used.
+% \changes{v5.01}{2013/03/31}{New command \cs{Furanosew}}
+% \begin{macro}{\Furanosew}
+% \begin{macro}{\@Furanosew}
+% \begin{macrocode}
+\def\Furanosew{\@ifnextchar[{\@Furanosew}{\@Furanosew[]}}
+\def\@Furanosew[#1]#2{%
+\FiveSugarh[#1]{5==O;1s==\WedgeAsSubst(0,0)(-3,-5){153};%
+4s==\WedgeAsSubst(0,0)(3,-5){153};%
+3s==\PutBondLine(-17,0)(376,0){2.8pt}}{#2}[abc]}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \section{Six-Membered Sugar Derivatives of Large Dimension}
+% \subsection{General Conventions}
+%
+% The standard skeleton of cyclitol is selected
+% to have the following locant numbers.
+%
+% \begin{verbatim}
+% ********************
+% * Sugarh derivative *
+% ********************
+%
+% The following numbering is adopted in this macro.
+%
+% 5 e 6
+% ----
+% d * * f
+% the original point ===> 4 * * 1
+% (0,0) * * a
+% c -----
+% 3 b 2
+% \end{verbatim}
+%
+%
+% The macro |\SixSugarh| has two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \SixSugarh(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `f' and a uppercase
+% character `A' or `B'.
+%
+% The |BONDLIST| argument contains one
+% character selected from a to f, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `$n+$' ($n=1$ to $6$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+%
+% BONDLIST =
+% none or [] : fully saturated form
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,6-double bond
+% f : 6,1-double bond
+% {n+} : plus at the n-nitrogen atom (n = 1 to 4)
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 6 atoms)
+%
+% for n = 1 to 6
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position,
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents (max 6 substitution positions)
+%
+% for n = 1 to 6
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nSA : single bond (down) at n-atom (for n=1)
+% nSB : single bond (up) at n-atom (for n=1)
+% nSa : alpha single bond at n-atom
+% nSb : beta single bond at n-atom
+%
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges may be regarded as both fused and non-fused
+% positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a, b, c, d, e, or f)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+% \SixSugarh{6==O}{1Sa==OH;2Sa==OH}
+% \end{verbatim}
+%
+% The definition of |\SixSugarh| uses a picture environment and
+% consists of the same unit processes as shown in |\sixheteroh|:
+% \begin{enumerate}
+% \item treatment of atom list,
+% \item placing outer skeletons,
+% \item placing inner double bonds,
+% \item setting hetero atoms, and
+% \item placing substituents dirctly
+% (cf. |\setsixringh| for a |\sixheteroh|)
+% \end{enumerate}
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \changes{v5.00}{2010/10/01}{For bond coloring}
+%
+% \begin{macro}{\SixSugarh}
+% \begin{macro}{\@Six@Sugarh}
+% \begin{macro}{\@Six@@Sugarh}
+% \begin{macro}{\@SixSugarh}
+% \begin{macrocode}
+\def\SixSugarh{\@ifnextchar({\@Six@Sugarh(@}{\@Six@Sugarh(@)}}
+\def\@Six@Sugarh(#1){\@ifnextchar[{\@Six@@Sugarh(#1)[@}%
+{\@Six@@Sugarh(#1)[@]}}
+\def\@Six@@Sugarh(#1)[#2]#3#4{\@ifnextchar[%
+{\@SixSugarh(#1)[#2]{#3}{#4}[@}%
+{\@SixSugarh(#1)[#2]{#3}{#4}[@]}}
+\def\@SixSugarh(#1)[#2]#3#4[#5]{%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+% % treatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniatom\iniflag%initialize
+\test@vrtx@SixSugarh{#3}%
+%test for a hetero atom or a spiro substituent on a vertex
+\@reset@ylsw%
+\ylSixSugarhposition{#4}%shift values
+\begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(880,800)(-240,-400){SixSugarh}%2002/4/30 by S. Fujita
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+{\resetbdsw%
+\@bond@@omit{#5}%%%|\@aaa| etc. are empty if they are omitted.
+\molfronttrue
+\set@skel@Sugarhbond{#1}{a}{a}%
+ %bond between 1 and 2 \@aaa -> \Sugarhskbonda etc
+\set@skel@Sugarhbond{#1}{b}{b}%
+ %bond between 2 and 3 \@bbb -> \Sugarhskbondb etc
+\set@skel@Sugarhbond{#1}{c}{c}%
+ %bond between 3 and 4 \@ccc -> \Sugarhskbondc etc
+\molfrontfalse
+\set@skel@Sugarhbond{#1}{d}{d}%
+ %bond between 4 and 5 \@ddd -> \Sugarhskbondd etc
+\set@skel@Sugarhbond{#1}{e}{e}%
+ %bond between 5 and 6 \@eee -> \Sugarhskbonde etc
+\set@skel@Sugarhbond{#1}{f}{f}%
+ %bond between 6 and 1 \@fff -> \Sugarhskbondf etc
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r\relax \Sugarhbondd \Sugarhbondf \Sugarhbondb%
+\else \if\member l\relax \Sugarhbonda \Sugarhbondc \Sugarhbonde%
+\else \if\member a\relax \Sugarhbonda%
+\else \if\member b\relax \Sugarhbondb%
+\else \if\member c\relax \Sugarhbondc%
+\else \if\member d\relax \Sugarhbondd%
+\else \if\member e\relax \Sugarhbonde%
+\else \if\member f\relax \Sugarhbondf%
+\else \if\member A% no action: %%left aromatic circle
+% \Put@oCircle(203,0){240}% %circle
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+% % inner bond attachment %
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+\else
+ \expandafter\twoCH@@R\member//%
+ \set@fusionadd@sixhi
+ \ifx\@@tmpa\empty%
+ \XyMTeXWarning{Fused function is unavailable for SixSugarh.}\fi
+\fi\fi\fi\fi\fi\fi\fi\fi\fi}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\iniatom\iniflag%initialize
+\set@hetatom@Sugarh{#3}{-3}{0}{5}{1}% %subst 4--6
+\set@hetatom@Sugarh{#3}{3}{3}{7}{1}% %subst 1 -- 3
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\@forsemicol\member:=#4\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifx\@memberb\@yl\else
+\ifcase\@tmpa%0 omit
+ \or\setBScolor{\Put@Direct(668,0){%
+ \if@clip \@clippingtrue \else \@clippingfalse\fi
+ \@pyrana}}% subst. on 1
+ \or\setBScolor{\Put@Direct(513,-255){%
+ \if@eclip \@clippingtrue \else \@clippingfalse\fi
+ \@pyranb}}% subst. on 2
+ \or\setBScolor{\Put@Direct(153,-255){%
+ \if@fclip \@clippingtrue \else \@clippingfalse\fi
+ \@pyranbb}}% subst. on 3
+ \or\setBScolor{\Put@Direct(0,0){%
+ \if@aclip \@clippingtrue \else \@clippingfalse\fi
+ \@pyranc}}% subst. on 4
+ \or\setBScolor{\Put@Direct(153,255){%
+ \if@bclip \@clippingtrue \else \@clippingfalse\fi
+ \@pyranbB}}% subst. on 5
+ \or\setBScolor{\Put@Direct(513,255){%
+ \if@cclip \@clippingtrue \else \@clippingfalse\fi
+ \@pyranbC}}% subst. on 6
+\fi %end of ifcase
+\fi\fi}%
+\end{ShiftPicEnv}%
+\iniatom\iniflag}% %end of \SixSugarh macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The macro |\test@vrtx@SixSugarh| is used to test the presence of
+% a hetero atom or a spiro substituent on a vertex of the
+% sixheteroh nucleus.
+%
+% \begin{macro}{\test@vrtx@SixSugarh}
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+\def\test@vrtx@SixSugarh#1{%
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\twoch@r\@membera{}%
+\ifcase\@tmpa%
+ \or \if\@tmpb s\relax\def\aaa{}\else\def\aaa{@}\fi
+ \or \if\@tmpb s\relax\def\bbb{}\else\def\bbb{@}\fi
+ \or \if\@tmpb s\relax\def\ccc{}\else\def\ccc{@}\fi
+ \or \if\@tmpb s\relax\def\ddd{}\else\def\ddd{@}\fi
+ \or \if\@tmpb s\relax\def\eee{}\else\def\eee{@}\fi
+ \or \if\@tmpb s\relax\def\fff{}\else\def\fff{@}\fi
+\fi\fi}%
+}% end of \test@vrtx@SixSugarh
+% \end{macrocode}
+% \end{macro}
+%
+% The command |\ylSixSugarhposition| is to obtain the shift values
+% |\@ylii| and |\@yli| which are used for shifting the standard
+% point of a substituent.
+% \changes{v1.02}{1998/10/25}{New commands for setting substituents}
+%
+% \begin{macro}{\ylSixSugarhposition}
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+\def\ylSixSugarhposition#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%0 omit
+ \or\gdef\@ylii{-668}\gdef\@yli{0}\global\@ylswtrue% subst. on 1
+ \or\gdef\@ylii{-513}\gdef\@yli{255}\global\@ylswtrue% subst. on 2
+ \or\gdef\@ylii{-153}\gdef\@yli{255}\global\@ylswtrue% subst. on 3
+ \or\gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% subst. on 4
+ \or\gdef\@ylii{-153}\gdef\@yli{-255}\global\@ylswtrue% subst. on 5
+ \or\gdef\@ylii{-513}\gdef\@yli{-255}\global\@ylswtrue% subst. on 6
+\fi%end of ifcase
+\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Skeletal bonds of Sugarhs}
+%
+% The macro |\set@skel@Sugarhbond| is used in |\SixSugarh| etc.
+% for setting skeletal bonds (outer bonds), when |\@aaa| etc.
+% (produced by |\csname|...|\endcsname|) are equal to `a'
+% etc. (given as \#2). Thinline, thickline and dotted-line
+% skeletal bonds are available.
+%
+% \begin{macro}{\set@skel@Sugarhbond}
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+\newif\ifmolfront \molfrontfalse
+\newif\if@fivemembered \@fivememberedfalse
+\def\set@skel@Sugarhbond#1#2#3{%
+ \expandafter\if\csname @#2#2#2\endcsname #2\relax%OK
+ % \if\@aaa #2\relax%OK
+ \@skbondlistfalse
+ \@tfor\member:=#1\do{%
+ \expandafter\twoCH@@R\member//%
+ \if\@@tmpa #2\relax%
+ \if\@@tmpb A\relax%
+ \if@fivemembered
+ \expandafter\csname fdothskbond#3\endcsname% \dothskbonda etc.
+ \else
+ \expandafter\csname dothskbond#3\endcsname% \dothskbonda etc.
+ \fi
+ \@skbondlisttrue
+ \else\if\@@tmpb B\relax%
+ {\thicklines
+ \if@fivemembered
+ \expandafter\csname fSugarhskbond#3\endcsname% \dothskbonda etc.
+ \else
+ \expandafter\csname Sugarhskbond#3\endcsname% \hskbonda etc.
+ \fi
+ }%
+ \@skbondlisttrue
+ \fi\fi
+ \fi%
+ }%
+ \if@skbondlist\else
+ \ifmolfront
+ {\thicklines
+ \if@fivemembered
+ \expandafter\csname fSugarhskbond#3\endcsname% \dothskbonda etc.
+ \else
+ \expandafter\csname Sugarhskbond#3\endcsname% \hskbonda etc.
+ \fi
+ }%
+ \else
+ {\thinlines
+ \if@fivemembered
+ \expandafter\csname fSugarhskbond#3\endcsname% \dothskbonda etc.
+ \else
+ \expandafter\csname Sugarhskbond#3\endcsname% \hskbonda etc.
+ \fi
+ }%
+ \fi
+ \fi%
+ \else
+ \expandafter\ifx\csname @#2#2#2\endcsname \empty\relax%
+ % \ifx\@aaa\empty\relax
+ \@tfor\member:=#1\do{%
+ \expandafter\twoCH@@R\member//%
+ \if\@@tmpa #2\relax%
+ \XyMTeXWarning{Unavailable bond `#2' in SKBONDLIST}\fi
+ }%
+ \fi\fi
+}% end of \set@skel@Sugarhbond
+% \end{macrocode}
+% \end{macro}
+%
+% The macros |\SixSugarh| uses inner macros for setting
+% skeletal bonds in accordance with the presence or the absence of
+% hetero atoms. During the processes of such setting,
+% the inner macros |\Sugarhskbonda| to |\Sugarhskbondf| are used to set a bond
+% on each edge of a six- or five-membered ring.
+%
+% \begin{verbatim}
+% ************************************
+% * setting skeletal bonds of Sugarhs *
+% ************************************
+% The following numbering is adopted in this macro.
+%
+% e
+% (eee) 5 6 (fff)
+% d ----- c
+% * *
+% the original point ===> 4 * (ddd) * 1 (aaa)
+% (0,0) * * a
+% c -----
+% (ccc) 3 2 (bbb)
+% b
+% \end{verbatim}
+%
+% \begin{macro}{\Sugarhskbonda}
+% The macro |\Sugarhskbonda| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\aaa| and |\bbb|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+%bond between 1 and 2
+\def\Sugarhskbonda{%
+ \ifx\aaa\empty%
+ \ifx\bbb\empty%
+ \Put@Line(668,0)(-3,-5){153}% %bond 1-2
+ \else%
+ \Put@Line(668,0)(-3,-5){120}% %bond 1-2
+ \fi%
+ \else%
+ \ifx\bbb\empty%
+ \Put@Line(635,-55)(-3,-5){120}% %bond 1-2
+ \else%
+ \Put@Line(635,-55)(-3,-5){93}% %bond 1-2
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Sugarhskbondf}
+% The macro |\Sugarhskbonda| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\aaa| and |\fff|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+%bond between 1 and 6
+\def\Sugarhskbondf{%
+ \ifx\aaa\empty%
+ \ifx\fff\empty%
+ \Put@Line(668,0)(-3,5){153}% %bond 1-6
+ \else%
+ \Put@Line(668,0)(-3,5){120}% %bond 1-6
+ \fi%
+ \else%
+ \ifx\fff\empty%
+ \Put@Line(635,55)(-3,5){120}% %bond 1-6
+ \else%
+ \Put@Line(635,55)(-3,5){93}% %bond 1-6
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Sugarhskbondc}
+% The macro |\Sugarhskbondc| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\ccc| and |\ddd|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+%bond between 4 and 3
+\def\Sugarhskbondc{%
+ \ifx\ddd\empty%
+ \ifx\ccc\empty%
+ \Put@Line(0,0)(3,-5){153}% %bond 4-3
+ \else%
+ \Put@Line(0,0)(3,-5){120}% %bond 4-3
+ \fi%
+ \else%
+ \ifx\ccc\empty%
+ \Put@Line(33,-55)(3,-5){120}% %bond 4-3
+ \else%
+ \Put@Line(33,-55)(3,-5){93}% %bond 4-3
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Sugarhskbondd}
+% The macro |\Sugarhskbondc| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\ddd| and |\eee|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+%bond between 4 and 5
+\def\Sugarhskbondd{%
+ \ifx\ddd\empty%
+ \ifx\eee\empty%
+ \Put@Line(0,0)(3,5){153}% %bond 4-5
+ \else%
+ \Put@Line(0,0)(3,5){120}% %bond 4-5
+ \fi%
+ \else%
+ \ifx\eee\empty%
+ \Put@Line(33,55)(3,5){120}% %bond 4-5
+ \else%
+ \Put@Line(33,55)(3,5){93}% %bond 4-5
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Sugarhskbondb}
+% The macro |\Sugarhskbondb| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\bbb| and |\ccc|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+%bond between 3 and 2
+\def\Sugarhskbondb{%
+ \ifx\ccc\empty%
+ \ifx\bbb\empty%
+ \Put@Line(153,-255)(1,0){360}% %bond 3-2
+ \else%
+ \Put@Line(153,-255)(1,0){314}% %bond 3-2
+ \fi%
+ \else%
+ \ifx\bbb\empty%
+ \Put@Line(199,-255)(1,0){314}% %bond 3-2
+ \else%
+ \Put@Line(199,-255)(1,0){278}% %bond 3-2
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Sugarhskbonde}
+% The macro |\Sugarhskbonde| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\eee| and |\fff|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+%bond between 5 and 6
+\def\Sugarhskbonde{%
+ \ifx\eee\empty%
+ \ifx\fff\empty%
+ \Put@Line(153,255)(1,0){360}% %bond 5-6
+ \else%
+ \Put@Line(153,255)(1,0){314}% %bond 5-6
+ \fi%
+ \else%
+ \ifx\fff\empty%
+ \Put@Line(199,255)(1,0){314}% %bond 5-6
+ \else%
+ \Put@Line(199,255)(1,0){278}% %bond 5-6
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+
+%
+% \subsection{Inner Double Bonds of Sugarhs}
+%
+% The macros |\SixSugarh| uses inner macros for setting
+% skeletal bonds in accordance with the presence or the absence of
+% hetero atoms. During the processes of such setting,
+% the inner macros |\Sugarhbonda| to |\Sugarhbondf| are used to set a bond
+% on each edge of a six- or five-membered ring.
+%
+% \begin{verbatim}
+% ********************************************
+% * setting skeletal bonds (horizontal type) *
+% ********************************************
+% The following numbering is adopted in this macro.
+%
+% e
+% (eee) 5 6 (fff)
+% d ----- c
+% * *
+% the original point ===> 4 * (ddd) * 1 (aaa)
+% (0,0) * * a
+% c -----
+% (ccc) 3 2 (bbb)
+% b
+% \end{verbatim}
+%
+% \begin{macro}{\Sugarhbonda}
+% The macro |\Sugarhbonda| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\aaa| and |\bbb|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+%bond between 1 and 2
+\def\Sugarhbonda{%
+ \ifx\aaa\empty%
+ \ifx\bbb\empty%
+ \Put@Line(605,-22)(-3,-5){100}% %bond 1-2
+ \else%
+ \Put@Line(604,-15)(-3,-5){93}% %bond 1-2
+ \fi%
+ \else%
+ \ifx\bbb\empty%
+ \Put@Line(587,-52)(-3,-5){93}% %bond 1-2
+ \else%
+ \Put@Line(593,-42)(-3,-5){93}% %bond 1-2
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Sugarhbondf}
+% The macro |\Sugarhbonda| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\aaa| and |\fff|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+%bond between 1 and 6
+\def\Sugarhbondf{%
+ \ifx\aaa\empty%
+ \ifx\fff\empty%
+ \Put@Line(605,22)(-3,5){100}% %bond 1-6
+ \else%
+ \Put@Line(604,15)(-3,5){97}% %bond 1-6
+ \fi%
+ \else%
+ \ifx\fff\empty%
+ \Put@Line(587,52)(-3,5){93}% %bond 1-6
+ \else%
+ \Put@Line(593,42)(-3,5){93}% %bond 1-6
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Sugarhbondc}
+% The macro |\Sugarhbondc| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\ccc| and |\ddd|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+%bond between 4 and 3
+\def\Sugarhbondc{%
+ \ifx\ddd\empty%
+ \ifx\ccc\empty%
+ \Put@Line(63,-22)(3,-5){100}% %bond 4-3
+ \else%
+ \Put@Line(64,-15)(3,-5){97}% %bond 4-3
+ \fi%
+ \else%
+ \ifx\ccc\empty%
+ \Put@Line(81,-52)(3,-5){93}% %bond 4-3
+ \else%
+ \Put@Line(75,-42)(3,-5){93}% %bond 4-3
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Sugarhbondd}
+% The macro |\Sugarhbondc| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\ddd| and |\eee|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+%bond between 4 and 5
+\def\Sugarhbondd{%
+ \ifx\ddd\empty%
+ \ifx\eee\empty%
+ \Put@Line(63,22)(3,5){100}% %bond 4-5
+ \else%
+ \Put@Line(64,15)(3,5){97}% %bond 4-5
+ \fi%
+ \else%
+ \ifx\eee\empty%
+ \Put@Line(81,52)(3,5){93}% %bond 4-5
+ \else%
+ \Put@Line(75,42)(3,5){93}% %bond 4-5
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Sugarhbondb}
+% The macro |\Sugarhbondb| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\aaa| and |\bbb|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+%bond between 3 and 2
+\def\Sugarhbondb{%
+ \ifx\ccc\empty%
+ \ifx\bbb\empty%
+ \Put@Line(183,-205)(1,0){300}% %bond 3-2
+ \else%
+ \Put@Line(183,-205)(1,0){275}% %bond 3-2
+ \fi%
+ \else%
+ \ifx\bbb\empty%
+ \Put@Line(203,-205)(1,0){275}% %bond 3-2
+ \else%
+ \Put@Line(198,-205)(1,0){270}% %bond 3-2
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Sugarhbonde}
+% The macro |\Sugarhbonde| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\eee| and |\fff|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+%bond between 5 and 6
+\def\Sugarhbonde{%
+ \ifx\eee\empty%
+ \ifx\fff\empty%
+ \Put@Line(183,205)(1,0){300}% %bond 5-6
+ \else%
+ \Put@Line(183,205)(1,0){275}% %bond 5-6
+ \fi%
+ \else%
+ \ifx\fff\empty%
+ \Put@Line(203,205)(1,0){275}% %bond 5-6
+ \else%
+ \Put@Line(198,205)(1,0){270}% %bond 5-6
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Hetero Atoms on Sugarh Skeletons}
+%
+% The command |\set@hetatom@Sugarh| is to set a spiro group
+% (stored as |\@memberb|)
+% at a vertix designated by |\@tmpaa| (or originally by |\@tmpa|).
+% The atom modifier `s' designates that the spiro group contains
+% a carbon atom (a vertix) at a spiro position, while `h'
+% represents the presence of a hetero atom at a spiro position.
+% The absence of such atom modifiers shows the substitution
+% of a usual hetero atom. The command |\set@hetatom@Sugarh| is
+% used in such commands as |\SixSugarh| for treating thier ATOMLISTs,
+% e.g. |1==N;1s==\SixSugarh{}{1==(yl)}|.
+%
+% \begin{macro}{\set@hetatom@Sugarh}
+% \changes{v2.01}{2001/6/20}{New command: \cs{set@hetatom@Sugarh}}
+% \begin{macrocode}
+\def\set@hetatom@Sugarh#1#2#3#4#5{%
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty\else%
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\twoCH@R\@membera//%
+\ifnum#5 < 0\relax%
+\@tmpaa=-\@tmpa\relax \advance\@tmpaa by#2\relax%
+\else\@tmpaa=\@tmpa\relax \advance\@tmpaa by#2\relax \fi
+\ifnum\@tmpaa >#3\relax%
+\ifnum\@tmpaa <#4\relax%
+\ifcase\@tmpaa%
+\or%position 1
+ \if\@tmpb h\relax
+ \@acliptrue%
+ \putlatom{60}{0}{\@memberb}% % left type
+ \else\if\@tmpb s\relax
+ \@aclipfalse%
+ \putlatom{0}{0}{\@memberb}% % left type
+ \else\if\@tmpb a\relax%omit fused position
+ \else
+ \@acliptrue%
+ \putlatom{60}{-36}{\@memberb}% % left type
+ \fi\fi\fi
+\or%position 2
+ \if\@tmpb h\relax
+ \@bcliptrue%
+ \putlatom{185}{225}{\@memberb}% % left type
+ \else\if\@tmpb s\relax
+ \@bclipfalse%
+ \putlatom{153}{255}{\@memberb}% % left type
+ \else\if\@tmpb a\relax%omit fused position
+ \else
+ \@bcliptrue%
+ \putlatom{185}{225}{\@memberb}% % left type
+ \fi\fi\fi
+\or%position 3
+ \if\@tmpb h\relax
+ \@ccliptrue%
+ \putratom{483}{225}{\@memberb}% % right type
+ \else\if\@tmpb s\relax
+ \@cclipfalse%
+ \putratom{513}{255}{\@memberb}% % right type
+ \else\if\@tmpb a\relax%omit fused position
+ \else
+ \@ccliptrue%
+ \putratom{483}{225}{\@memberb}% % right type
+ \fi\fi\fi
+\or%position 4
+ \if\@tmpb h\relax
+ \@cliptrue%
+ \putratom{608}{0}{\@memberb}% % right type
+ \else\if\@tmpb s\relax
+ \@clipfalse%
+ \putratom{668}{0}{\@memberb}% % right type
+ \else\if\@tmpb a\relax%omit fused position
+ \else
+ \@cliptrue%
+ \putratom{608}{-36}{\@memberb}% % right type
+ \fi\fi\fi
+\or%position 5
+ \if\@tmpb h\relax
+ \@ecliptrue%
+ \putratom{493}{-225}{\@memberb}% % right type
+ \else\if\@tmpb s\relax
+ \@eclipfalse%
+ \putratom{513}{-255}{\@memberb}% % right type
+ \else\if\@tmpb a\relax%omit fused position
+ \else
+ \@ecliptrue%
+ \putratom{483}{-295}{\@memberb}% % right type
+ \fi\fi\fi
+\or%position 6
+ \if\@tmpb h\relax
+ \@fcliptrue%
+ \putlatom{175}{-215}{\@memberb}% % left type
+ \else\if\@tmpb s\relax
+ \@fclipfalse%
+ \putlatom{153}{-255}{\@memberb}% % left type
+ \else\if\@tmpb a\relax%omit fused position
+ \else
+ \@fcliptrue%
+ \putlatom{185}{-295}{\@memberb}% % left type
+ \fi\fi\fi
+\fi% end of ifcase
+\fi\fi\fi}}% end of the macro \set@hetatom@Sugarh
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Six-Membered Sugar Derivatives of Normal Dimension}
+% \subsection{General Conventions}
+%
+% The standard skeleton of cyclitol is selected
+% to have the following locant numbers.
+%
+% \begin{verbatim}
+% *********************
+% * sugarh derivative *
+% *********************
+%
+% The following numbering is adopted in this macro.
+%
+% 5 e 6
+% ----
+% d * * f
+% the original point ===> 4 * * 1
+% (0,0) * * a
+% c -----
+% 3 b 2
+% \end{verbatim}
+%
+%
+% The macro |\sixsugarh| has two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \sixsugarh(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `f' and a uppercase
+% character `A' or `B'.
+%
+% The |BONDLIST| argument contains one
+% character selected from a to f, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `$n+$' ($n=1$ to $6$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+%
+% BONDLIST =
+%
+% none or [] : fully saturated form
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,6-double bond
+% f : 6,1-double bond
+% {n+} : not supproted (+ at the n-hetro atom, n = 1 to 6)
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 6 atoms)
+%
+% for n = 1 to 6
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position,
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents (max 6 substitution positions)
+%
+% for n = 1 to 6
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nSA : single bond (down) at n-atom (for n=1)
+% nSB : single bond (up) at n-atom (for n=1)
+% nSa : alpha single bond at n-atom
+% nSb : beta single bond at n-atom
+%
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges may be regarded as both fused and non-fused
+% positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a, b, c, d, e, or f)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+% \sixsugarh{6==O}{1Sa==OH;2Sa==OH}
+% \end{verbatim}
+%
+% The definition of |\sixsugarh| uses a picture environment and
+% consists of the same unit processes as shown in |\sixheteroh|:
+% \begin{enumerate}
+% \item treatment of atom list,
+% \item placing outer skeletons,
+% \item placing inner double bonds,
+% \item setting hetero atoms, and
+% \item placing substituents dirctly
+% (cf. |\setsixringh| for a |\sixheteroh|)
+% \end{enumerate}
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \changes{v5.00}{2010/10/01}{For bond coloring}
+%
+% \begin{macro}{\sixsugarh}
+% \begin{macro}{\@six@sugarh}
+% \begin{macro}{\@six@@sugarh}
+% \begin{macro}{\@sixsugarh}
+% \begin{macrocode}
+\def\sixsugarh{\@ifnextchar({\@six@sugarh(@}{\@six@sugarh(@)}}
+\def\@six@sugarh(#1){\@ifnextchar[{\@six@@sugarh(#1)[@}%
+{\@six@@sugarh(#1)[@]}}
+\def\@six@@sugarh(#1)[#2]#3#4{\@ifnextchar[%
+{\@sixsugarh(#1)[#2]{#3}{#4}[@}%
+{\@sixsugarh(#1)[#2]{#3}{#4}[@]}}
+\def\@sixsugarh(#1)[#2]#3#4[#5]{%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+% % treatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniatom\iniflag%initialize
+\test@vrtx@SixSugarh{#3}%
+%test for a hetero atom or a spiro substituent on a vertex
+\@reset@ylsw%
+\ylpyranoseposition{#4}%shift values
+\begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(880,800)(-240,-400){sixsugarh}%2002/4/30 by S. Fujita
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+{\resetbdsw%
+\@bond@@omit{#5}%%%|\@aaa| etc. are empty if they are omitted.
+\@fivememberedfalse%not five-membered ring
+\molfronttrue%boldfaced lines (thicklines)
+\set@skel@sugarhbond{#1}{a}{a}%
+ %bond between 1 and 2 \@aaa -> \sugarhskbonda etc
+\set@skel@sugarhbond{#1}{b}{b}%
+ %bond between 2 and 3 \@bbb -> \sugarhskbondb etc
+\set@skel@sugarhbond{#1}{c}{c}%
+ %bond between 3 and 4 \@ccc -> \sugarhskbondc etc
+\molfrontfalse%normal lines (thinelines)
+\set@skel@sugarhbond{#1}{d}{d}%
+ %bond between 4 and 5 \@ddd -> \sugarhskbondd etc
+\set@skel@sugarhbond{#1}{e}{e}%
+ %bond between 5 and 6 \@eee -> \sugarhskbonde etc
+\set@skel@sugarhbond{#1}{f}{f}%
+ %bond between 6 and 1 \@fff -> \sugarhskbondf etc
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r\relax \sugarhbondd \sugarhbondf \sugarhbondb%
+\else \if\member l\relax \sugarhbonda \sugarhbondc \sugarhbonde%
+\else \if\member a\relax \sugarhbonda%
+\else \if\member b\relax \sugarhbondb%
+\else \if\member c\relax \sugarhbondc%
+\else \if\member d\relax \sugarhbondd%
+\else \if\member e\relax \sugarhbonde%
+\else \if\member f\relax \sugarhbondf%
+\else \if\member A% no action: %%left aromatic circle
+% \Put@oCircle(203,0){240}% %circle
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+% % inner bond attachment %
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+\else
+ \expandafter\twoCH@@R\member//%
+ \set@fusionadd@sixhi
+ \ifx\@@tmpa\empty%
+ \XyMTeXWarning{Fused function is unavailable for sixsugarh.}\fi
+\fi\fi\fi\fi\fi\fi\fi\fi\fi}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\iniatom\iniflag%initialize
+\set@hetatom@sugarh{#3}{-3}{0}{5}{1}% %subst 4--6
+\set@hetatom@sugarh{#3}{3}{3}{7}{1}% %subst 1 -- 3
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\@forsemicol\member:=#4\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifx\@memberb\@yl\else
+\ifcase\@tmpa%0 omit
+ \or\setBScolor{\Put@Direct(532,0){%
+ \if@clip \@clippingtrue \else \@clippingfalse\fi
+ \@pyrana}}% subst. on 1
+ \or\setBScolor{\Put@Direct(412,-200){%
+ \if@eclip \@clippingtrue \else \@clippingfalse\fi
+ \@pyranb}}% subst. on 2
+ \or\setBScolor{\Put@Direct(120,-200){%
+ \if@fclip \@clippingtrue \else \@clippingfalse\fi
+ \@pyranbb}}% subst. on 3
+ \or\setBScolor{\Put@Direct(0,0){%
+ \if@aclip \@clippingtrue \else \@clippingfalse\fi
+ \@pyranc}}% subst. on 4
+ \or\setBScolor{\Put@Direct(120,200){%
+ \if@bclip \@clippingtrue \else \@clippingfalse\fi
+ \@pyranbB}}% subst. on 5
+ \or\setBScolor{\Put@Direct(412,200){%
+ \if@cclip \@clippingtrue \else \@clippingfalse\fi
+ \@pyranbC}}% subst. on 6
+\fi %end of ifcase
+\fi\fi}%
+\end{ShiftPicEnv}%
+\iniatom\iniflag}% %end of \sixsugarh macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The command |\ylpyranoseposition| is to obtain the shift values
+% |\@ylii| and |\@yli| which are used for shifting the standard
+% point of a substituent.
+% \changes{v1.02}{1998/10/25}{New commands for setting substituents}
+% \changes{v2.01}{2001/6/20}{Added for position 6}
+%
+% \begin{macro}{\ylpyranoseposition}
+% \begin{macrocode}
+\def\ylpyranoseposition#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%0 omit
+ \or\gdef\@ylii{-532}\gdef\@yli{0}\global\@ylswtrue% subst. on 1
+ \or\gdef\@ylii{-412}\gdef\@yli{200}\global\@ylswtrue% subst. on 2
+ \or\gdef\@ylii{-120}\gdef\@yli{200}\global\@ylswtrue% subst. on 3
+ \or\gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% subst. on 4
+ \or\gdef\@ylii{-120}\gdef\@yli{-200}\global\@ylswtrue% subst. on 5
+ \or\gdef\@ylii{-412}\gdef\@yli{-200}\global\@ylswtrue% subst. on 6
+\fi%end of ifcase
+\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% The front skeletal bonds of a pyranose ring are typeset with a bold line and wedged lines.
+% \changes{v5.01}{2013/06/25}{added the definition for \cs{sixsugarhw}}
+%
+% \begin{macro}{\sixsugarhw}
+% \begin{macro}{\@sixsugarhw}
+% \begin{macrocode}
+\def\sixsugarhw{\@ifnextchar[{\@sixsugarhw}{\@sixsugarhw[]}}
+\def\@sixsugarhw[#1]#2#3{%
+\sixsugarh[#1]{6==O;1s==\WedgeAsSubst(0,0)(-3,-5){120};%
+4s==\WedgeAsSubst(0,0)(3,-5){120};%
+3s==\PutBondLine(-17,0)(307,0){2.8pt};#2}{#3}[abc]}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Skeletal bonds of sugarhs}
+%
+% The macro |\set@skel@sugarhbond| is used in |\sixsugarh| etc.
+% for setting skeletal bonds (outer bonds), when |\@aaa| etc.
+% (produced by |\csname|...|\endcsname|) are equal to `a'
+% etc. (given as \#2). Thinline, thickline and dotted-line
+% skeletal bonds are available.
+%
+% \begin{macro}{\set@skel@sugarhbond}
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+\def\set@skel@sugarhbond#1#2#3{%
+ \expandafter\if\csname @#2#2#2\endcsname #2\relax%OK
+ % \if\@aaa #2\relax%OK
+ \@skbondlistfalse
+ \@tfor\member:=#1\do{%
+ \expandafter\twoCH@@R\member//%
+ \if\@@tmpa #2\relax%
+ \if\@@tmpb A\relax%
+ \if@fivemembered
+ \expandafter\csname fdothskbond#3\endcsname% \dothskbonda etc.
+ \else
+ \expandafter\csname dothskbond#3\endcsname% \dothskbonda etc.
+ \fi
+ \@skbondlisttrue
+ \else\if\@@tmpb B\relax%
+ {\thicklines
+ \if@fivemembered
+ \expandafter\csname fsugarhskbond#3\endcsname% \hskbonda etc.
+ \else
+ \expandafter\csname sugarhskbond#3\endcsname% \hskbonda etc.
+ \fi
+ }%
+ \@skbondlisttrue
+ \fi\fi
+ \fi%
+ }%
+ \if@skbondlist\else
+ \ifmolfront
+ {\thicklines
+ \if@fivemembered
+ \expandafter\csname fsugarhskbond#3\endcsname% \hskbonda etc.
+ \else
+ \expandafter\csname sugarhskbond#3\endcsname% \hskbonda etc.
+ \fi
+ }%
+ \else
+ {\thinlines
+ \if@fivemembered
+ \expandafter\csname fsugarhskbond#3\endcsname% \hskbonda etc
+ \else
+ \expandafter\csname sugarhskbond#3\endcsname% \hskbonda etc.
+ \fi
+ }%
+ \fi
+ \fi%
+ \else
+ \expandafter\ifx\csname @#2#2#2\endcsname \empty\relax%
+ % \ifx\@aaa\empty\relax
+ \@tfor\member:=#1\do{%
+ \expandafter\twoCH@@R\member//%
+ \if\@@tmpa #2\relax%
+ \XyMTeXWarning{Unavailable bond `#2' in SKBONDLIST}\fi
+ }%
+ \fi\fi
+}% end of \set@skel@sugarhbond
+% \end{macrocode}
+% \end{macro}
+%
+% The macros |\sixsugarh| uses inner macros for setting
+% skeletal bonds in accordance with the presence or the absence of
+% hetero atoms. During the processes of such setting,
+% the inner macros |\sugarhskbonda| to |\sugarhskbondf| are used to set a bond
+% on each edge of a six- or five-membered ring.
+%
+% \begin{verbatim}
+% ************************************
+% * setting skeletal bonds of sugarhs *
+% ************************************
+% The following numbering is adopted in this macro.
+%
+% e
+% (eee) 5 6 (fff)
+% d ----- c
+% * *
+% the original point ===> 4 * (ddd) * 1 (aaa)
+% (0,0) * * a
+% c -----
+% (ccc) 3 2 (bbb)
+% b
+% \end{verbatim}
+%
+% \begin{macro}{\sugarhskbonda}
+% The macro |\sugarhskbonda| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\aaa| and |\bbb|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+%bond between 1 and 2
+\def\sugarhskbonda{%
+ \ifx\aaa\empty%
+ \ifx\bbb\empty%
+ \Put@Line(532,0)(-3,-5){120}% %bond 1-2
+ \else%
+ \Put@Line(532,0)(-3,-5){96}% %bond 1-2
+ \fi%
+ \else%
+ \ifx\bbb\empty%
+% \Put@Line(635,-55)(-3,-5){120}% %bond 1-2
+ \Put@Line(511,-35)(-3,-5){96}% %bond 1-2
+ \else%
+ \Put@Line(511,-35)(-3,-5){80}% %bond 1-2
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sugarhskbondf}
+% The macro |\sugarhskbonda| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\aaa| and |\fff|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+%bond between 1 and 6
+\def\sugarhskbondf{%
+ \ifx\aaa\empty%
+ \ifx\fff\empty%
+ \Put@Line(532,0)(-3,5){120}% %bond 1-6
+ \else%
+ \Put@Line(532,0)(-3,5){96}% %bond 1-6
+ \fi%
+ \else%
+ \ifx\fff\empty%
+ \Put@Line(511,35)(-3,5){96}% %bond 1-6
+ \else%
+ \Put@Line(511,35)(-3,5){80}% %bond 1-6
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sugarhskbondc}
+% The macro |\sugarhskbondc| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\ccc| and |\ddd|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+%bond between 4 and 3
+\def\sugarhskbondc{%
+ \ifx\ddd\empty%
+ \ifx\ccc\empty%
+ \Put@Line(0,0)(3,-5){120}% %bond 4-3
+ \else%
+ \Put@Line(0,0)(3,-5){96}% %bond 4-3
+ \fi%
+ \else%
+ \ifx\ccc\empty%
+ \Put@Line(21,-35)(3,-5){96}% %bond 4-3
+ \else%
+ \Put@Line(21,-35)(3,-5){80}% %bond 4-3
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sugarhskbondd}
+% The macro |\sugarhskbondd| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\ddd| and |\eee|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+%bond between 4 and 5
+\def\sugarhskbondd{%
+ \ifx\ddd\empty%
+ \ifx\eee\empty%
+ \Put@Line(0,0)(3,5){120}% %bond 4-5
+ \else%
+ \Put@Line(0,0)(3,5){97}% %bond 4-5
+ \fi%
+ \else%
+ \ifx\eee\empty%
+ \Put@Line(21,35)(3,5){97}% %bond 4-5
+ \else%
+ \Put@Line(21,35)(3,5){80}% %bond 4-5
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sugarhskbondb}
+% The macro |\sugarhskbondb| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\bbb| and |\ccc|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+%bond between 3 and 2
+\def\sugarhskbondb{%
+ \ifx\ccc\empty%
+ \ifx\bbb\empty%
+ \Put@Line(120,-200)(1,0){292}% %bond 3-2
+ \else%
+ \Put@Line(120,-200)(1,0){252}% %bond 3-2
+ \fi%
+ \else%
+ \ifx\bbb\empty%
+ \Put@Line(160,-200)(1,0){252}% %bond 3-2
+ \else%
+ \Put@Line(160,-200)(1,0){212}% %bond 3-2
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sugarhskbonde}
+% The macro |\sugarhskbonde| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\eee| and |\fff|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+%bond between 5 and 6
+\def\sugarhskbonde{%
+ \ifx\eee\empty%
+ \ifx\fff\empty%
+ \Put@Line(120,200)(1,0){292}% %bond 5-6
+ \else%
+ \Put@Line(120,200)(1,0){252}% %bond 5-6
+ \fi%
+ \else%
+ \ifx\fff\empty%
+ \Put@Line(160,200)(1,0){252}% %bond 5-6
+ \else%
+ \Put@Line(160,200)(1,0){212}% %bond 5-6
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Hetero Atoms on sugarh Skeletons}
+%
+% The command |\set@hetatom@sugarh| is to set a spiro group
+% (stored as |\@memberb|)
+% at a vertix designated by |\@tmpaa| (or originally by |\@tmpa|).
+% The atom modifier `s' designates that the spiro group contains
+% a carbon atom (a vertix) at a spiro position, while `h'
+% represents the presence of a hetero atom at a spiro position.
+% The absence of such atom modifiers shows the substitution
+% of a usual hetero atom. The command |\set@hetatom@sugarh| is
+% used in such commands as |\sixsugarh| for treating thier ATOMLISTs,
+% e.g. |1==N;1s==\sixsugarh{}{1==(yl)}|.
+%
+% \begin{macro}{\set@hetatom@sugarh}
+% \changes{v2.01}{2001/6/20}{New command: \cs{set@hetatom@sugarh}}
+% \begin{macrocode}
+\def\set@hetatom@sugarh#1#2#3#4#5{%
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty\else%
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\twoCH@R\@membera//%
+\ifnum#5 < 0\relax%
+\@tmpaa=-\@tmpa\relax \advance\@tmpaa by#2\relax%
+\else\@tmpaa=\@tmpa\relax \advance\@tmpaa by#2\relax \fi
+\ifnum\@tmpaa >#3\relax%
+\ifnum\@tmpaa <#4\relax%
+\ifcase\@tmpaa%
+\or%position 1
+ \if\@tmpb h\relax
+ \@acliptrue%
+ \putlatom{60}{0}{\@memberb}% % left type
+ \else\if\@tmpb s\relax
+ \@aclipfalse%
+ \putlatom{0}{0}{\@memberb}% % left type
+ \else\if\@tmpb a\relax%omit fused position
+ \else
+ \@acliptrue%
+ \putlatom{60}{-36}{\@memberb}% % left type
+ \fi\fi\fi
+\or%position 2
+ \if\@tmpb h\relax
+ \@bcliptrue%
+ \putlatom{155}{180}{\@memberb}% % left type
+ \else\if\@tmpb s\relax
+ \@bclipfalse%
+ \putlatom{120}{200}{\@memberb}% % left type
+ \else\if\@tmpb a\relax%omit fused position
+ \else
+ \@bcliptrue%
+ \putlatom{155}{180}{\@memberb}% % left type
+ \fi\fi\fi
+\or%position 3
+ \if\@tmpb h\relax
+ \@ccliptrue%
+ \putratom{382}{180}{\@memberb}% % right type
+ \else\if\@tmpb s\relax
+ \@cclipfalse%
+ \putratom{412}{200}{\@memberb}% % right type
+ \else\if\@tmpb a\relax%omit fused position
+ \else
+ \@ccliptrue%
+ \putratom{382}{180}{\@memberb}% % right type
+ \fi\fi\fi
+\or%position 4
+ \if\@tmpb h\relax
+ \@cliptrue%
+ \putratom{472}{0}{\@memberb}% % right type
+ \else\if\@tmpb s\relax
+ \@clipfalse%
+ \putratom{532}{0}{\@memberb}% % right type
+ \else\if\@tmpb a\relax%omit fused position
+ \else
+ \@cliptrue%
+ \putratom{472}{-36}{\@memberb}% % right type
+ \fi\fi\fi
+\or%position 5
+ \if\@tmpb h\relax
+ \@ecliptrue%
+ \putratom{382}{-240}{\@memberb}% % right type
+ \else\if\@tmpb s\relax
+ \@eclipfalse%
+ \putratom{412}{-200}{\@memberb}% % right type
+ \else\if\@tmpb a\relax%omit fused position
+ \else
+ \@ecliptrue%
+ \putratom{382}{-240}{\@memberb}% % right type
+ \fi\fi\fi
+\or%position 6
+ \if\@tmpb h\relax
+ \@fcliptrue%
+ \putlatom{155}{-240}{\@memberb}% % left type
+ \else\if\@tmpb s\relax
+ \@fclipfalse%
+ \putlatom{120}{-200}{\@memberb}% % left type
+ \else\if\@tmpb a\relax%omit fused position
+ \else
+ \@fcliptrue%
+ \putlatom{155}{-240}{\@memberb}% % left type
+ \fi\fi\fi
+\fi% end of ifcase
+\fi\fi\fi}}% end of the macro \set@hetatom@sugarh
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Inner Double Bonds of sugarhs}
+%
+% The macros |\sixsugarh| uses inner macros for setting
+% skeletal bonds in accordance with the presence or the absence of
+% hetero atoms. During the processes of such setting,
+% the inner macros |\sugarhbonda| to |\sugarhbondf| are used to set a bond
+% on each edge of a six- or five-membered ring.
+%
+% \begin{verbatim}
+% ********************************************
+% * setting skeletal bonds (horizontal type) *
+% ********************************************
+% The following numbering is adopted in this macro.
+% e
+% (eee) 5 6 (fff)
+% d ----- c
+% * *
+% the original point ===> 4 * (ddd) * 1 (aaa)
+% (0,0) * * a
+% c -----
+% (ccc) 3 2 (bbb)
+% b
+% \end{verbatim}
+%
+% \begin{macro}{\sugarhbonda}
+% The macro |\sugarhbonda| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\aaa| and |\bbb|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+%bond between 1 and 2
+%\else \if\member a%
+\def\sugarhbonda{%
+ \ifx\aaa\empty%
+ \ifx\bbb\empty%
+ \Put@Line(482,-12)(-3,-5){90}% %double bond 1-2
+ \else%
+ \Put@Line(482,-12)(-3,-5){80}% %double bond 1-2
+ \fi%
+ \else%
+ \ifx\bbb\empty%
+ \Put@Line(394,-160)(3,5){70}% %double bond 2-1
+ \else%
+ \Put@Line(394,-160)(3,5){70}% %double bond 2-1
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sugarhbondf}
+% The macro |\sugarhbonda| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\aaa| and |\fff|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+%bond between 1 and 6
+\def\sugarhbondf{%
+ \ifx\aaa\empty%
+ \ifx\fff\empty%
+ \Put@Line(482,12)(-3,5){90}% %double bond 1-6
+ \else%
+ \Put@Line(482,12)(-3,5){80}% %double bond 1-6
+ \fi%
+ \else%
+ \ifx\fff\empty%
+ \Put@Line(394,160)(3,-5){70}% %double bond 6-1
+ \else%
+ \Put@Line(394,160)(3,-5){70}% %double bond 6-1
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sugarhbondc}
+% The macro |\sugarhbondc| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\ccc| and |\ddd|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+%bond between 4 and 3
+\def\sugarhbondc{%
+ \ifx\ddd\empty%
+ \ifx\ccc\empty%
+ \Put@Line(50,-12)(3,-5){90}% %double bond 4-3
+ \else%
+ \Put@Line(50,-12)(3,-5){80}% %double bond 4-3
+ \fi%
+ \else%
+ \ifx\ccc\empty%
+ \Put@Line(138,-160)(-3,5){70}% %double bond 3-4
+ \else%
+ \Put@Line(138,-160)(-3,5){70}% %double bond 3-4
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sugarhbondd}
+% The macro |\sugarhbondd| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\ddd| and |\eee|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+%bond between 4 and 5
+\def\sugarhbondd{%
+ \ifx\ddd\empty%
+ \ifx\eee\empty%
+ \Put@Line(50,12)(3,5){90}% %double bond 4-5
+ \else%
+ \Put@Line(50,12)(3,5){80}% %double bond 4-5
+ \fi%
+ \else%
+ \ifx\eee\empty%
+ \Put@Line(138,160)(-3,-5){70}% %double bond 5-4
+ \else%
+ \Put@Line(138,160)(-3,-5){70}% %double bond 5-4
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sugarhbondb}
+% The macro |\sugarhbondb| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\aaa| and |\bbb|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+%bond between 3 and 2
+\def\sugarhbondb{%
+ \ifx\ccc\empty%
+ \ifx\bbb\empty%
+ \Put@Line(150,-160)(1,0){232}% %double bond 3-2
+ \else%
+ \Put@Line(160,-160)(1,0){217}% %double bond 3-2
+ \fi%
+ \else%
+ \ifx\bbb\empty%
+ \Put@Line(170,-160)(1,0){217}% %double bond 3-2
+ \else%
+ \Put@Line(170,-160)(1,0){197}% %double bond 3-2
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\sugarhbonde}
+% The macro |\sugarhbonde| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\eee| and |\fff|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+%bond between 5 and 6
+\def\sugarhbonde{%
+ \ifx\eee\empty%
+ \ifx\fff\empty%
+ \Put@Line(150,160)(1,0){232}% %double bond 5-6
+ \else%
+ \Put@Line(160,160)(1,0){217}% %double bond 5-6
+ \fi%
+ \else%
+ \ifx\fff\empty%
+ \Put@Line(170,160)(1,0){217}% %double bond 5-6
+ \else%
+ \Put@Line(170,160)(1,0){197}% %double bond 5-6
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Cyclitol Derivaives}
+%
+% Cyclitol derivatives can be drawn by the |\cyclitol| macro.
+%
+% \changes{v2.01}{2001/06/20}{New command: \cs{cyclitol}}
+%
+% \begin{macro}{\cyclitol}
+% \begin{macro}{\@cyclitol}
+% \begin{macrocode}
+\def\cyclitol{\@ifnextchar[{\@cyclitol}{\@cyclitol[]}}
+\def\@cyclitol[#1]#2{\sixsugarh[#1]{}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% Cyclitol derivatives of slightly large dimension can be
+% drawn by the |\Cyclitol| macro.
+%
+% \changes{v2.01}{2001/06/20}{New command: \cs{Cyclitol}}
+%
+% \begin{macro}{\Cyclitol}
+% \begin{macro}{\@Cyclitol}
+% \begin{macrocode}
+\def\Cyclitol{\@ifnextchar[{\@Cyclitol}{\@Cyclitol[]}}
+\def\@Cyclitol[#1]#2{\SixSugarh[#1]{}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \section{Five-Membered Sugar Derivatives of Normal Dimension}
+% \subsection{General Conventions}
+%
+% The standard skeleton of cyclitol is selected
+% to have the following locant numbers.
+%
+% \begin{verbatim}
+% **************************
+% * five-sugarh derivative *
+% **************************
+%
+% The following numbering is adopted in this macro.
+%
+% 5
+% *
+% d * * e
+% the original point ===> 4 * * 1
+% (0,0) * * a
+% c -----
+% 3 b 2
+%
+% \end{verbatim}
+%
+% The macro |\fivesugarh| has two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \fivesugarh(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `e' and a uppercase
+% character `A' or `B'.
+%
+% The |BONDLIST| argument contains one
+% character selected from a to f, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `$n+$' ($n=1$ to $5$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+%
+% BONDLIST =
+%
+% none or [] : fully saturated form
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,1-double bond
+% {n+} : not supported (+ at the n-nitrogen atom, n = 1 to 4)
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 6 atoms)
+%
+% for n = 1 to 5
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position,
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents (max 5 substitution positions)
+%
+% for n = 1 to 5
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nSA : single bond (down) at n-atom (for n=1)
+% nSB : single bond (up) at n-atom (for n=1)
+% nSa : alpha single bond at n-atom
+% nSb : beta single bond at n-atom
+%
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges may be regarded as both fused and non-fused
+% positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a, b, c, d, or e)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+% \fivesugarh{5==O}{1Sa==OH;2Sa==OH}
+% \end{verbatim}
+%
+% The definition of |\fivesugarh| uses a picture environment and
+% consists of the same unit processes as shown in |\fiveheteroh|:
+% \begin{enumerate}
+% \item treatment of atom list,
+% \item placing outer skeletons,
+% \item placing inner double bonds,
+% \item setting hetero atoms, and
+% \item placing substituents dirctly
+% (cf. |\setsixringh| for a |\fiveheteroh|)
+% \end{enumerate}
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \changes{v5.01}{2001/6/25}{bug fix for position 5}
+%
+% \begin{macro}{\fivesugarh}
+% \begin{macro}{\@five@sugarh}
+% \begin{macro}{\@five@@sugarh}
+% \begin{macro}{\@fivesugarh}
+% \begin{macrocode}
+\def\fivesugarh{\@ifnextchar({\@five@sugarh(@}{\@five@sugarh(@)}}
+\def\@five@sugarh(#1){\@ifnextchar[{\@five@@sugarh(#1)[@}%
+{\@five@@sugarh(#1)[@]}}
+\def\@five@@sugarh(#1)[#2]#3#4{\@ifnextchar[%
+{\@fivesugarh(#1)[#2]{#3}{#4}[@}%
+{\@fivesugarh(#1)[#2]{#3}{#4}[@]}}
+\def\@fivesugarh(#1)[#2]#3#4[#5]{%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+% % treatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniatom\iniflag%initialize
+\test@vrtx@SixSugarh{#3}%
+%test for a hetero atom or a spiro substituent on a vertex
+\@reset@ylsw%
+\ylfuranoseposition{#4}%shift values
+\begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(880,800)(-240,-400){fivesugarh}%2002/4/30 by S. Fujita
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+{\resetbdsw%
+\@bond@@omit{#5}%%%|\@aaa| etc. are empty if they are omitted.
+\@fivememberedfalse%common bonds to a six-membered ring
+\molfronttrue%boldfaced lines (thicklines)
+\set@skel@sugarhbond{#1}{a}{a}%
+ %bond between 1 and 2 \@aaa -> \sugarhskbonda etc
+\set@skel@sugarhbond{#1}{b}{b}%
+ %bond between 2 and 3 \@bbb -> \sugarhskbondb etc
+\set@skel@sugarhbond{#1}{c}{c}%
+ %bond between 3 and 4 \@ccc -> \sugarhskbondc etc
+\@fivememberedtrue%bonds for a five-membered ring
+\molfrontfalse%normal lines (thinelines)
+\set@skel@sugarhbond{#1}{d}{d}%
+ %bond between 4 and 5 \@ddd -> \fsugarhskbondd etc
+\set@skel@sugarhbond{#1}{e}{e}%
+ %bond between 5 and 1 \@eee -> \fsugarhskbonde etc
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r\relax %no action \sugarhbondd \sugarhbondf \sugarhbondb%
+\else \if\member l\relax %no action \sugarhbonda \sugarhbondc \sugarhbonde%
+\else \if\member a\relax \sugarhbonda%
+\else \if\member b\relax \sugarhbondb%
+\else \if\member c\relax \sugarhbondc%
+\else \if\member d\relax \fsugarhbondd%
+\else \if\member e\relax \fsugarhbonde%
+\else \if\member A% no action: %%left aromatic circle
+% \Put@oCircle(203,0){240}% %circle
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+% % inner bond attachment %
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+\else%no action
+% \expandafter\twoCH@@R\member//%
+% \set@fusionadd@sixhi
+% \ifx\@@tmpa\empty%
+% \XyMTeXWarning{Fused function is unavailable for fivesugarh.}\fi
+\fi\fi\fi\fi\fi\fi\fi\fi}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\iniflag%initialize
+\set@hetatom@sugarh{#3}{-3}{0}{2}{1}% %subst 4
+\set@hetatom@sugarh{#3}{3}{3}{7}{1}% %subst 1 -- 3
+\set@hteatom@fivesugarh{#3}% %subsituent 5
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\@forsemicol\member:=#4\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifx\@memberb\@yl\else
+\ifcase\@tmpa%0 omit
+\or\setBScolor{\Put@Direct(532,0){%
+ \if@clip \@clippingtrue \else \@clippingfalse\fi
+ \@pyrana}}% subst. on 1
+ \or\setBScolor{\Put@Direct(412,-200){%
+ \if@eclip \@clippingtrue \else \@clippingfalse\fi
+ \@pyranb}}% subst. on 2
+ \or\setBScolor{\Put@Direct(120,-200){%
+ \if@fclip \@clippingtrue \else \@clippingfalse\fi
+ \@pyranbb}}% subst. on 3
+ \or\setBScolor{\Put@Direct(0,0){%
+ \if@aclip \@clippingtrue \else \@clippingfalse\fi
+ \@pyranc}}% subst. on 4
+ \or\setBScolor{\Put@Direct(266,160){%
+ %\if@bclip \@clippingtrue \else \@clippingfalse\fi
+ %\@pyranbB}}% subst. on 5
+ {\if@bclip \@acliptrue \put(0,-386){\@substa}%subst. on 5 bug fix 2013/06/25
+ \else \@aclipfalse% subst. on 5 bug fix 2013/06/25
+ \put(0,-406){\@substa}\fi}\@aclipfalse}}%%%\@pyranbB}}% subst. on 5 bug fix 2013/06/25
+\fi %end of ifcase
+\fi\fi}%
+\end{ShiftPicEnv}%
+\iniatom\iniflag}% %end of \fivesugarh macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\resetflags}
+% \begin{macrocode}
+% (undefined)
+% \end{macrocode}
+% \end{macro}
+%
+% The front skeletal bonds of a furanose ring are typeset with a bold line and wedged lines.
+% \changes{v5.01}{2013/06/25}{added the definition for \cs{fivesugarhw}}
+%
+% \begin{macro}{\fivesugarhw}
+% \begin{macro}{\@fivesugarhw}
+% \begin{macrocode}
+\def\fivesugarhw{\@ifnextchar[{\@fivesugarhw}{\@fivesugarhw[]}}
+\def\@fivesugarhw[#1]#2#3{%
+\fivesugarh[#1]{5==O;1s==\WedgeAsSubst(0,0)(-3,-5){120};%
+4s==\WedgeAsSubst(0,0)(3,-5){120};%
+3s==\PutBondLine(-17,0)(307,0){2.8pt};#2}{#3}[abc]}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The command |\ylfuranoseposition| is to obtain the shift values
+% |\@ylii| and |\@yli| which are used for shifting the standard
+% point of a substituent.
+% \changes{v1.02}{1998/10/23}{New commands for setting substituents}
+% \changes{v2.01}{2001/6/20}{Added for position 5}
+%
+% \begin{macro}{\ylfuranoseposition}
+% \begin{macrocode}
+\def\ylfuranoseposition#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%0 omit
+ \or\gdef\@ylii{-532}\gdef\@yli{0}\global\@ylswtrue% subst. on 1
+ \or\gdef\@ylii{-412}\gdef\@yli{200}\global\@ylswtrue% subst. on 2
+ \or\gdef\@ylii{-120}\gdef\@yli{200}\global\@ylswtrue% subst. on 3
+ \or\gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% subst. on 4
+ \or\gdef\@ylii{-266}\gdef\@yli{-160}\global\@ylswtrue% subst. on 5
+\fi%end of ifcase
+\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Skeletal Bonds of fivesugarh}
+%
+% The macros |\fivesugarh| uses inner macros for setting
+% skeletal bonds in accordance with the presence or the absence of
+% hetero atoms. During the processes of such setting,
+% the inner macros |\sugarhskbonda| to |\sugarhskbondc|
+% (common to |\sixsugarh|) as well as
+% |\fsugarhskbondd| to |\fsugarhskbonde|
+% to set a bond on each edge of a five-membered ring.
+%
+% \begin{macro}{\fsugarhskbondd}
+% The macro |\fsugarhskbondd| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\ddd| and |\eee|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+\def\fsugarhskbondd{%
+ \ifx\ddd\empty%
+ \ifx\eee\empty%
+ \Put@Line(0,0)(5,3){266}% %bond 4-5
+ \else%
+ \Put@Line(0,0)(5,3){231}% %bond 4-5
+ \fi%
+ \else%
+ \ifx\eee\empty%
+ \Put@Line(35,21)(5,3){231}% %bond 4-5
+ \else%
+ \Put@Line(35,21)(5,3){200}% %bond 4-5
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\fsugarhskbonde}
+% The macro |\fsugarhskbonde| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\eee| and |\aaa|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+%bond between 5 and 1
+\def\fsugarhskbonde{%
+ \ifx\aaa\empty%
+ \ifx\eee\empty%
+ \Put@Line(532,0)(-5,3){266}% %bond 5-1
+ \else%
+ \Put@Line(532,0)(-5,3){231}% %bond 5-1
+ \fi%
+ \else%
+ \ifx\eee\empty%
+ \Put@Line(497,21)(-5,3){231}% %bond 5-1
+ \else%
+ \Put@Line(497,21)(-5,3){200}% %bond 5-1
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\set@hteatom@fivesugarh}
+% The macro |\set@hteatom@fivesugarh| put a hetero atom
+% on vertex no. 5 of |\fivesugarh|.
+%
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+\def\set@hteatom@fivesugarh#1{%
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty\else%
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\twoCH@R\@membera//%
+\@tmpaa=\@tmpa\relax
+\ifnum\@tmpaa=5\relax
+ \if\@tmpb h\relax
+ \@bcliptrue%
+ \putratom{236}{130}{\@memberb}% % right type
+ \else\if\@tmpb s\relax
+ \@bclipfalse%
+ \putratom{266}{160}{\@memberb}% % right type
+ \else\if\@tmpb a\relax%omit fused position
+ \else
+ \@bcliptrue%
+ \putratom{236}{130}{\@memberb}% left type
+ \fi\fi\fi
+\fi% end of ifnum
+\fi
+}}% end of the macro \set@hetatom@fivesugarh
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Inner Double Bonds of fivesugarh}
+%
+% The macros |\fivesugarh| uses inner macros for setting
+% skeletal bonds in accordance with the presence or the absence of
+% hetero atoms. During the processes of such setting,
+% the inner macros |\fsugarhbonda| to |\sugarhbondc|
+% (common to |\sixsugarh|) as well as
+% |\fsugarhbondd| and |\sugarhbonde| are used to set a bond
+% on each edge of a five-membered ring.
+%
+% \begin{macro}{\fsugarhbondd}
+% The macro |\fsugarhbondd| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\ddd| and |\eee|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+%bond between 4 and 5
+\def\fsugarhbondd{%
+ \ifx\ddd\empty%
+ \ifx\eee\empty%
+ \Put@Line(60,-10)(5,3){190}% %double bond 4-5
+ \else%
+ \Put@Line(60,-10)(5,3){170}% %double bond 4-5
+ \fi%
+ \else%
+ \ifx\eee\empty%
+ \Put@Line(80,6)(5,3){170}% %double bond 5-4
+ \else%
+ \Put@Line(80,6)(5,3){160}% %double bond 5-4
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\fsugarhbonde}
+% The macro |\fsugarhbonde| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\aaa| and |\eee|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+%bond between 5 and 1
+\def\fsugarhbonde{%
+ \ifx\aaa\empty%
+ \ifx\eee\empty%
+ \Put@Line(472,-10)(-5,3){190}% %double bond 5-1
+ \else%
+ \Put@Line(472,-10)(-5,3){170}% %double bond 5-1
+ \fi%
+ \else%
+ \ifx\eee\empty%
+ \Put@Line(452,6)(-5,3){170}% %double bond 5-1
+ \else%
+ \Put@Line(452,6)(-5,3){160}% %double bond 5-1
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Five-Membered Sugar Derivatives of Large Dimension}
+% \subsection{General Conventions}
+%
+% The standard skeleton of cyclitol is selected
+% to have the following locant numbers.
+%
+% \begin{verbatim}
+% ********************
+% * Sugarh derivative *
+% ********************
+%
+% The following numbering is adopted in this macro.
+%
+%
+% 5
+% *
+% d * * e
+% the original point ===> 4 * * 1
+% (0,0) * * a
+% c -----
+% 3 b 2
+% \end{verbatim}
+%
+%
+% The macro |\FiveSugarh| has two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \FiveSugarh(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `e' and a uppercase
+% character `A' or `B'.
+%
+% The |BONDLIST| argument contains one
+% character selected from a to f, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `$n+$' ($n=1$ to $6$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+%
+% BONDLIST =
+%
+% none or [] : fully saturated form
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,1-double bond
+% {n+} : not suported: plus at n-nitrogen atom (n = 1 to 5)
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 6 atoms)
+%
+% for n = 1 to 5
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position,
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents (max 5 substitution positions)
+%
+% for n = 1 to 5
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nSA : single bond (down) at n-atom (for n=1)
+% nSB : single bond (up) at n-atom (for n=1)
+% nSa : alpha single bond at n-atom
+% nSb : beta single bond at n-atom
+%
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges may be regarded as both fused and non-fused
+% positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a, b, c, d, or e)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+% \FiveSugarh{6==O}{1Sa==OH;2Sa==OH}
+% \end{verbatim}
+%
+% The definition of |\FiveSugarh| uses a picture environment and
+% consists of the same unit processes as shown in |\sixheteroh|:
+% \begin{enumerate}
+% \item treatment of atom list,
+% \item placing outer skeletons,
+% \item placing inner double bonds,
+% \item setting hetero atoms, and
+% \item placing substituents dirctly
+% (cf. |\setsixringh| for a |\sixheteroh|)
+% \end{enumerate}
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \changes{v5.00}{2010/10/01}{For bond coloring}
+%
+% \begin{macro}{\FiveSugarh}
+% \begin{macro}{\@Five@Sugarh}
+% \begin{macro}{\@Five@@Sugarh}
+% \begin{macro}{\@FiveSugarh}
+% \begin{macrocode}
+\def\FiveSugarh{\@ifnextchar({\@Five@Sugarh(@}{\@Five@Sugarh(@)}}
+\def\@Five@Sugarh(#1){\@ifnextchar[{\@Five@@Sugarh(#1)[@}%
+{\@Five@@Sugarh(#1)[@]}}
+\def\@Five@@Sugarh(#1)[#2]#3#4{\@ifnextchar[%
+{\@FiveSugarh(#1)[#2]{#3}{#4}[@}%
+{\@FiveSugarh(#1)[#2]{#3}{#4}[@]}}
+\def\@FiveSugarh(#1)[#2]#3#4[#5]{%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+% % treatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniatom\iniflag%initialize
+\test@vrtx@SixSugarh{#3}%common to six-membered ring
+%test for a hetero atom or a spiro substituent on a vertex
+\@reset@ylsw%
+\ylFiveSugarhposition{#4}%shift values
+\begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(1100,800)(-240,-400){FiveSugarh}%2002/4/30 by S. Fujita
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+{\resetbdsw%
+\@bond@@omit{#5}%%%|\@aaa| etc. are empty if they are omitted.
+\molfronttrue
+\@fivememberedfalse%common bonds to a six-membered ring
+\set@skel@Sugarhbond{#1}{a}{a}%
+ %bond between 1 and 2 \@aaa -> \Sugarhskbonda etc
+\set@skel@Sugarhbond{#1}{b}{b}%
+ %bond between 2 and 3 \@bbb -> \Sugarhskbondb etc
+\set@skel@Sugarhbond{#1}{c}{c}%
+ %bond between 3 and 4 \@ccc -> \Sugarhskbondc etc
+\molfrontfalse
+\@fivememberedtrue%only five-membered ring
+\set@skel@Sugarhbond{#1}{d}{d}%
+ %bond between 4 and 5 \@ddd -> \fSugarhskbondd etc
+\set@skel@Sugarhbond{#1}{e}{e}%
+ %bond between 5 and 1 \@eee -> \fSugarhskbonde etc
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r\relax %%% no action \Sugarhbondd \Sugarhbondf \Sugarhbondb%
+\else \if\member l\relax %% noaction \Sugarhbonda \Sugarhbondc \Sugarhbonde%
+\else \if\member a\relax \Sugarhbonda%
+\else \if\member b\relax \Sugarhbondb%
+\else \if\member c\relax \Sugarhbondc%
+\else \if\member d\relax \fSugarhbondd%
+\else \if\member e\relax \fSugarhbonde%
+\else \if\member A% no action: %%left aromatic circle
+% \Put@oCircle(203,0){240}% %circle
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+% % inner bond attachment %
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+%\else
+% \expandafter\twoCH@@R\member//%
+% \set@fusionadd@sixhi
+% \ifx\@@tmpa\empty%
+% \XyMTeXWarning{Fused function is unavailable for FiveSugarh.}\fi
+\fi\fi\fi\fi\fi\fi\fi\fi}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\iniatom\iniflag%initialize
+\set@hetatom@Sugarh{#3}{-3}{0}{2}{1}% %subst 4
+\set@hetatom@Sugarh{#3}{3}{3}{7}{1}% %subst 1 -- 3
+\set@hteatom@FiveSugarh{#3}% %subst 5
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\@forsemicol\member:=#4\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifx\@memberb\@yl\else
+\ifcase\@tmpa%0 omit
+ \or\setBScolor{\Put@Direct(668,0){%
+ \if@clip \@clippingtrue \else \@clippingfalse\fi
+ \@pyrana}}% subst. on 1
+ \or\setBScolor{\Put@Direct(513,-255){%
+ \if@eclip \@clippingtrue \else \@clippingfalse\fi
+ \@pyranb}}% subst. on 2
+ \or\setBScolor{\Put@Direct(153,-255){%
+ \if@fclip \@clippingtrue \else \@clippingfalse\fi
+ \@pyranbb}}% subst. on 3
+ \or\setBScolor{\Put@Direct(0,0){%
+ \if@aclip \@clippingtrue \else \@clippingfalse\fi
+ \@pyranc}}% subst. on 4
+ \or\setBScolor{\Put@Direct(333,200){%
+ \if@bclip \@clippingtrue \else \@clippingfalse\fi
+ \@pyranbB}}% subst. on 5
+\fi %end of ifcase
+\fi\fi}%
+\end{ShiftPicEnv}%
+\iniatom\iniflag}% %end of \FiveSugarh macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The command |\ylFiveSugarhposition| is to obtain the shift values
+% |\@ylii| and |\@yli| which are used for shifting the standard
+% point of a substituent.
+% \changes{v1.02}{1998/10/25}{New commands for setting substituents}
+%
+% \begin{macro}{\ylFiveSugarhposition}
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+\def\ylFiveSugarhposition#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%0 omit
+ \or\gdef\@ylii{-668}\gdef\@yli{0}\global\@ylswtrue% subst. on 1
+ \or\gdef\@ylii{-513}\gdef\@yli{255}\global\@ylswtrue% subst. on 2
+ \or\gdef\@ylii{-153}\gdef\@yli{255}\global\@ylswtrue% subst. on 3
+ \or\gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% subst. on 4
+ \or\gdef\@ylii{-333}\gdef\@yli{-200}\global\@ylswtrue% subst. on 5
+\fi%end of ifcase
+\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Skeletal Bonds of FiveSugarh}
+%
+% The macros |\FiveSugarh| uses inner macros for setting
+% skeletal bonds in accordance with the presence or the absence of
+% hetero atoms. During the processes of such setting,
+% the inner macros |\sugarhskbonda| to |\sugarhskbondc|
+% (common to |\sixsugarh|) as well as
+% |\fSugarhskbondd| to |\fSugarhskbonde|
+% to set a bond on each edge of a five-membered ring.
+%
+% \begin{macro}{\fSugarhskbondd}
+% The macro |\fSugarhskbondd| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\ddd| and |\eee|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+\def\fSugarhskbondd{%
+ \ifx\ddd\empty%
+ \ifx\eee\empty%
+ \Put@Line(0,0)(5,3){333}% %bond 4-5
+ \else%
+ \Put@Line(0,0)(5,3){298}% %bond 4-5
+ \fi%
+ \else%
+ \ifx\eee\empty%
+ \Put@Line(35,21)(5,3){298}% %bond 4-5
+ \else%
+ \Put@Line(35,21)(5,3){263}% %bond 4-5
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\fSugarhskbonde}
+% The macro |\fSugarhskbonde| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\eee| and |\aaa|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+%bond between 5 and 1
+\def\fSugarhskbonde{%
+ \ifx\aaa\empty%
+ \ifx\eee\empty%
+ \Put@Line(668,0)(-5,3){333}% %bond 5-1
+ \else%
+ \Put@Line(668,0)(-5,3){298}% %bond 5-1
+ \fi%
+ \else%
+ \ifx\eee\empty%
+ \Put@Line(633,21)(-5,3){298}% %bond 5-1
+ \else%
+ \Put@Line(633,21)(-5,3){263}% %bond 5-1
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\set@hteatom@FiveSugarh}
+% The macro |\set@hteatom@FiveSugarh| put a hetero atom
+% on vertex no. 5 of |\FiveSugarh|.
+%
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+\def\set@hteatom@FiveSugarh#1{%
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty\else%
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\twoCH@R\@membera//%
+\@tmpaa=\@tmpa\relax
+\ifnum\@tmpaa=5\relax
+ \if\@tmpb h\relax
+ \@bcliptrue%
+ \putratom{303}{170}{\@memberb}% % right type
+ \else\if\@tmpb s\relax
+ \@bclipfalse%
+ \putratom{333}{200}{\@memberb}% % right type
+ \else\if\@tmpb a\relax%omit fused position
+ \else
+ \@bcliptrue%
+ \putratom{303}{170}{\@memberb}% left type
+ \fi\fi\fi
+\fi% end of ifnum
+\fi
+}}% end of the macro \set@hetatom@FiveSugarh
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Inner Double Bonds of FiveSugarh}
+%
+% The macros |\FiveSugarh| uses inner macros for setting
+% skeletal bonds in accordance with the presence or the absence of
+% hetero atoms. During the processes of such setting,
+% the inner macros |\Sugarhbonda| to |\Sugarhbondc|
+% (common to |\SixSugarh|) as well as
+% |\fSugarhbondd| and |\fSugarhbonde| are used to set a bond
+% on each edge of a five-membered ring.
+%
+% \begin{macro}{\fSugarhbondd}
+% The macro |\fSugarhbondd| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\ddd| and |\eee|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+%bond between 4 and 5
+\def\fSugarhbondd{%
+ \ifx\ddd\empty%
+ \ifx\eee\empty%
+ \Put@Line(60,-10)(5,3){257}% %double bond 4-5
+ \else%
+ \Put@Line(60,-10)(5,3){237}% %double bond 4-5
+ \fi%
+ \else%
+ \ifx\eee\empty%
+ \Put@Line(80,6)(5,3){237}% %double bond 5-4
+ \else%
+ \Put@Line(80,6)(5,3){227}% %double bond 5-4
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\fSugarhbonde}
+% The macro |\fSugarhbonde| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\aaa| and |\eee|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \changes{v2.01}{2001/6/20}{Newly defined.}
+% \begin{macrocode}
+%bond between 5 and 1
+\def\fSugarhbonde{%
+ \ifx\aaa\empty%
+ \ifx\eee\empty%
+ \Put@Line(608,-10)(-5,3){257}% %double bond 5-1
+ \else%
+ \Put@Line(608,-10)(-5,3){237}% %double bond 5-1
+ \fi%
+ \else%
+ \ifx\eee\empty%
+ \Put@Line(588,6)(-5,3){237}% %double bond 5-1
+ \else%
+ \Put@Line(588,6)(-5,3){227}% %double bond 5-1
+ \fi\fi}%
+%</hcycle>
+% \end{macrocode}
+% \end{macro}
+%
+% \Finale
+%
+\endinput
+%</hcycle>
diff --git a/Master/texmf-dist/source/latex/xymtex/base/hcycle.ins b/Master/texmf-dist/source/latex/xymtex/base/hcycle.ins
new file mode 100644
index 00000000000..14129d36baf
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/hcycle.ins
@@ -0,0 +1,55 @@
+\def\batchfile{hcycle.ins}
+\input docstrip.tex
+\preamble
+
+This is a generated file.
+
+Copyright 1996,1998,2001,2002,2004,2010,2013 by Shinsaku Fujita
+all rights reserved.
+This style file is created for drawing chemical structural formulas
+This style file is to be contained in the ``xymtex'' directory which
+is an input directory for TeX.
+
+This file is part of the XyMTeX system.
+=======================================
+
+Old Versions:
+Version 1.01 Released on August 16, 1996
+Version 1.02 Released on October 31, 1996 (private version)
+Version 2.00 Released on December 25, 1998
+Version 2.01 Released on June 20, 2001 (private version)
+Version 3.00 Released on April 30, 2002
+Version 4.00 Released on May 30, 2002 (private version)
+Version 4.01 Released on August 30, 2002
+Version 5.00 Released on October 01, 2010
+Version 5.01b Released on March 30, 2013
+
+The Present Version:
+Version 5.01 Released on June 25, 2013
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3
+of this license or (at your option) any later version.
+The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of LaTeX
+version 2005/12/01 or later.
+
+This work has the LPPL maintenance status `maintained'.
+The Current Maintainer of this work is Shinsaku Fujita.
+
+This work consists of the files hcycle.dtx and hcycle.ins
+and the derived file hcycle.sty.
+
+=======================================
+\endpreamble
+
+\keepsilent
+
+\generateFile{hcycle.drv}{t}{%
+ \from{hcycle.dtx}{driver}}
+
+\generateFile{hcycle.sty}{t}{%
+ \from{hcycle.dtx}{hcycle}}
+
+\endinput
diff --git a/Master/texmf-dist/source/latex/xymtex/base/hetarom.dtx b/Master/texmf-dist/source/latex/xymtex/base/hetarom.dtx
new file mode 100644
index 00000000000..a61bca3e297
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/hetarom.dtx
@@ -0,0 +1,8620 @@
+% \iffalse meta-comment
+%% File: hetarom.dtx
+%
+% Copyright 1993,1996,1998,2000,2002,2004,2006,2010,2013 by Shinsaku Fujita
+%
+% This file is part of XyMTeX system.
+% -------------------------------------
+%
+% This file is a successor to:
+%
+% hetarom.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].
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+% The Current Maintainer of this work is Shinsaku Fujita.
+%
+% This work consists of the files hetarom.dtx and hetarom.ins
+% and the derived file hetarom.sty.
+%
+% Please report any bugs, comments, suggestions, etc. to:
+% Shinsaku Fujita,
+% Shonan Institute of Chemoinformatics and Mathematical Chemistry
+% Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun, Kanagawa 250-0019 Japan
+% (old address)
+% Ashigara Research Laboratories, Fuji Photo Film Co., Ltd.,
+% Minami-Ashigara, Kanagawa-ken, 250-01, Japan.
+% (old address)
+% Department of Chemistry and Materials Technology,
+% Kyoto Institute of Technology, \\
+% Matsugasaki, Sakyoku, Kyoto, 606 Japan
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{hetarom}
+% \def\versi@ndate{December 01, 1993}
+% \def\versi@nno{ver1.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{hetarom}
+% \def\versi@ndate{August 16, 1996}
+% \def\versi@nno{ver1.01}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{hetarom}
+% \def\versi@ndate{October 31, 1998}
+% \def\versi@nno{ver1.02}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{hetarom}
+% \def\versi@ndate{December 25, 1998}
+% \def\versi@nno{ver2.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{hetarom}
+% \def\versi@ndate{November 11, 2000}
+% \def\versi@nno{ver2.00a}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{hetarom}
+% \def\versi@ndate{June 20, 2001}
+% \def\versi@nno{ver2.01}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{hetarom}
+% \def\versi@ndate{April 30, 2002}
+% \def\versi@nno{ver3.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{hetarom}
+% \def\versi@ndate{May 30, 2002}
+% \def\versi@nno{ver4.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{hetarom}
+% \def\versi@ndate{August 30, 2004}
+% \def\versi@nno{ver4.01}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{hetarom}
+% \def\versi@ndate{December 20, 2004}
+% \def\versi@nno{ver4.02}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{hetarom}
+% \def\versi@ndate{September 5, 2006}
+% \def\versi@nno{ver4.03b}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{hetarom}
+% \def\versi@ndate{October 01, 2010}
+% \def\versi@nno{ver5.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \fi
+%
+% \CheckSum{9032}
+%% \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/27}{first edition for LaTeX2e}
+% \changes{v1.02}{1998/10/31}{revised edition for LaTeX2e}
+% \changes{v2.00}{1998/12/25}{enhanced edition for LaTeX2e}
+% \changes{v2.00a}{1998/11/11}{bug fix}
+% \changes{v2.01}{2001/06/20}{Size reduction and Clip infomation}
+% \changes{v2.01}{2001/06/21}{The command \cs{dotorline} is added.}
+% \changes{v3.00}{2002/04/30}{sfpicture environment etc.}
+% \changes{v4.00}{2002/05/30}{PostScript output and ShiftPicEnv}
+% \changes{v4.01}{2004/08/30}{Minor additions}
+% \changes{v4.02}{2004/12/20}{Exception to wedged bonds}
+% \changes{v4.02a}{2004/12/27}{Bug fix: \cs{ggg} to \cs{gggA}}
+% \changes{v4.03b}{2006/9/5}{Bug fix: \cs{decahetero} and \cs{nonahetero}}
+% \changes{v5.00}{2010/10/01}{for bond coloring and the LaTeX Project Public License}
+% \changes{v5.01}{2013/03/19}{Three and four-membered specfic commands are added}
+% \fi
+%
+% \iffalse
+%<*driver>
+\NeedsTeXFormat{pLaTeX2e}
+% \fi
+\ProvidesFile{hetarom.dtx}[2013/03/19 v5.01 XyMTeX{} package file]
+% \iffalse
+\documentclass{ltxdoc}
+\GetFileInfo{hetarom.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{Heterocycles of vertical type by {\sffamily hetarom.sty}
+(\fileversion) of \XyMTeX{}}
+\author{Shinsaku Fujita \\
+Shonan Institute of Chemoinformatics and Mathematical Chemistry, \\
+Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun, Kanagawa 250-0019 Japan
+% % (old address)
+% %Department of Chemistry and Materials Technology, \\
+% %Kyoto Institute of Technology, \\
+% %Matsugasaki, Sakyoku, Kyoto, 606-8585 Japan
+% %% (old address)
+% %% Ashigara Research Laboratories,
+% %% Fuji Photo Film Co., Ltd., \\
+% %% Minami-Ashigara, Kanagawa, 250-01 Japan
+}
+\date{\filedate}
+%
+\begin{document}
+ \maketitle
+ \DocInput{hetarom.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \section{Introduction}\label{hetarom:intro}
+%
+% \subsection{Options for {\sffamily docstrip}}
+%
+% \DeleteShortVerb{\|}
+% \begin{center}
+% \begin{tabular}{|l|l|}
+% \hline
+% \emph{option} & \emph{function}\\ \hline
+% hetarom & hetarom.sty \\
+% driver & driver for this dtx file \\
+% \hline
+% \end{tabular}
+% \end{center}
+% \MakeShortVerb{\|}
+%
+% \subsection{Version Information}
+%
+% \begin{macrocode}
+%<*hetarom>
+\typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 5.01}
+\typeout{ -- Released March 19, 2013 by Shinsaku Fujita}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\j@urnalname{hetarom}
+\def\versi@ndate{March 19, 2013}
+\def\versi@nno{ver5.01}
+\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 hetarom.sty}
+%
+% \begin{verbatim}
+% *********************************
+% * hetarom.sty: list of commands *
+% *********************************
+%
+% <Various flags (switches)>
+%
+% \if@gclip \@gclipfalse \@gcliptrue
+% \if@hclip \@hclipfalse \@hcliptrue
+% \if@iclip \@iclipfalse \@icliptrue
+% \if@jclip \@jclipfalse \@jcliptrue
+% \iniflag
+% \iniatom
+% \aaa
+% \bbb
+% \ccc
+% \ddd
+% \eee
+% \fff
+% \gggA
+% \hhh
+% \iii
+% \jjj
+% \end{verbatim}
+%
+% \begin{verbatim}
+%
+% <Six-Membered Heterocycles>
+% Setting inner double bonds
+%
+% \bonda
+% \bondb
+% \bondc
+% \bondd
+% \bonde
+% \bondf
+% \bondhoriz
+% \bondhorizi
+%
+% Setting skeletal bonds
+%
+% \skbonda
+% \skbondf
+% \skbondc
+% \skbondd
+% \skbondb
+% \skbonde
+% \skbondhoriz
+% \skbondhorizi
+%
+% Setting dotted skeletal bonds
+%
+% \dotskbonda
+% \dotskbondf
+% \dotskbondc
+% \dotskbondd
+% \dotskbondb
+% \dotskbonde
+% \dotskbondhoriz
+% \dotskbondhorizi
+%
+% Basic Macros
+%
+% \sixheterov \@sixheterov
+% \sixheterovi \@sixheterovi
+%
+% Application Macros
+%
+% \pyridinev \@pyridinev
+% \pyridinevi \@pyridinevi
+% \pyrazinev \@pyrazinev
+% \pyrimidinev \@pyrimidinev
+% \pyrimidinevi \@pyrimidinevi
+% \pyridazinev \@pyridazinev
+% \pyridazinevi \@pyridazinevi
+% \triazinev \@triazinev
+% \triazinevi \@triazinevi
+% \end{verbatim}
+%
+% \begin{verbatim}
+%
+% <Five-Membered Heterocycles>
+% Basic Macros
+%
+% \fiveheterov \@fiveheterov
+% \fiveheterovi \@fiveheterovi
+%
+% Application Macros
+%
+% \pyrrolev \@pyrrolev
+% \pyrazolev \@pyrazolev
+% \imidazolev \@imidazolev
+% \isoxazolev \@isoxazolev
+% \oxazolev \@oxazolev
+%
+% \furanv \@furanv
+% \thiophenev \@thiophenev
+%
+% \pyrrolevi \@pyrrolevi
+% \pyrazolevi \@pyrazolevi
+% \imidazolevi \@imidazolevi
+% \isoxazolevi \@isoxazolevi
+% \oxazolevi \@oxazolevi
+%
+% \furanvi \@furanvi
+% \thiophenevi \@thiophenevi
+% \end{verbatim}
+%
+% \begin{verbatim}
+%
+% <Six-Six-Fused Heterocycles>
+% Basic Macros
+%
+% \decaheterov \@decaheterov
+% \decaheterovi \@decaheterovi
+% \decaheterovb \@decaheterovb
+% \decaheterovt \@decaheterovt
+%
+% Adjustment Macros (for structures as substituents)
+% \changes{v1.02}{1998/10/16}{Newly added command}
+%
+% \clipdetection
+% \ylhetposition
+% \ylhetpositionb
+% \ylhetpositiont
+%
+% Application Macros
+%
+% \quinolinev \@quinolinev
+% \quinolinevi \@quinolinevi
+% \quinolinevb \@quinolinevb
+% \quinolinevt \@quinolinevt
+%
+% \isoquinolinev \@isoquinolinev
+% \isoquinolinevi \@isoquinolinevi
+% \isoquinolinevb \@isoquinolinevb
+% \isoquinolinevt \@isoquinolinevt
+%
+% \quinoxalinev \@quinoxalinev
+% \quinoxalinevi \@quinoxalinevi
+% \quinoxalinevb \@quinoxalinevb
+% \quinoxalinevt \@quinoxalinevt
+%
+% \quinazolinev \@quinazolinev
+% \quinazolinevi \@quinazolinevi
+% \quinazolinevb \@quinazolinevb
+% \quinazolinevt \@quinazolinevt
+%
+% \cinnolinev \@cinnolinev
+% \cinnolinevi \@cinnolinevi
+% \cinnolinevb \@cinnolinevb
+% \cinnolinevt \@cinnolinevt
+%
+% \pteridinev \@pteridinev
+% \pteridinevi \@pteridinevi
+% \pteridinevb \@pteridinevb
+% \pteridinevt \@pteridinevt
+% \end{verbatim}
+%
+% \begin{verbatim}
+%
+% <Six-Five-Fused Heterocycles>
+% Basic Macros
+%
+% \nonaheterov \@nonaheterov
+% \nonaheterovi \@nonaheterovi
+%
+% Application Macros
+%
+% \purinev \@purinev
+% \purinevi \@purinevi
+% \indolev \@indolev
+% \indolevi \@indolevi
+% \indolizinev \@indolizinev
+% \indolizinevi \@indolizinevi
+% \isoindolev \@isoindolev
+% \isoindolevi \@isoindolevi
+% \benzofuranev \@benzofuranev
+% \benzofuranevi \@benzofuranevi
+% \isobenzofuranev \@isobenzofuranev
+% \isobenzofuranevi \@isobenzofuranevi
+% \benzoxazolev \@benzoxazolev
+% \benzoxazolevi \@benzoxazolevi
+% \end{verbatim}
+%
+% \begin{verbatim}
+%
+% <Four-Membered Heterocycles>
+% Setting bonds
+% \bondshoriz \bondshorizi
+% \skbondshoriz \skbondshorizi
+%
+% Basic Macros
+%
+% \fourhetero \@fourhetero
+%
+% Application Macros
+%
+% \oxetane
+% \azetidine
+%
+% \end{verbatim}
+%
+% \begin{verbatim}
+%
+% <Four-Membered Heterocycles>
+% Setting inner double bonds
+%
+% \bondtria \bondtrib
+% \skbondtria \skbondtrib
+% \Bondtria \Bondtrib
+% \skBondtria \skBondtrib
+%
+% Basic Macros
+%
+% (\fourhetero) (\@fourhetero)
+% \set@fusionadd@fourv \set@fusion@fourv
+%
+% <Three-Membered Heterocycles>
+%
+% \threehetero \@threehetero
+% \threeheteroi \@threeheteroi
+%
+% \threeheterov \@threeheterov
+% \threeheterovi \@threeheterovi
+%
+% \set@fusionadd@threev \set@fusion@threev
+% \set@fusionadd@threevi \set@fusion@threevi
+%
+% Application Macros
+%
+% \oxiranev \oxiranevi
+% \aziridinev \aziridinevi
+% \thiiranev \thiiranevi
+%
+% \end{verbatim}
+%
+% \begin{verbatim}
+%
+% <Building Units>
+%
+% \sixunitv \@sixunitv
+% \fiveunitv \@fiveunitv
+% \fiveunitvi \@fiveunitvi
+% \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 hetarom.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}
+%
+% The following switches and macros have been moved to {\sf chemstr.sty};
+% hence, they are commented out.
+% \begin{macrocode}
+% % ****************************
+% % * various flags (switches) *
+% % ****************************
+% \newif\if@gclip \@gclipfalse%
+% \newif\if@hclip \@hclipfalse%
+% \newif\if@iclip \@iclipfalse%
+% \newif\if@jclip \@jclipfalse%
+% \def\iniflag{%
+% \@aclipfalse \@bclipfalse\@cclipfalse\@clipfalse\@eclipfalse%
+% \@fclipfalse\@gclipfalse\@hclipfalse\@iclipfalse\@jclipfalse%
+% \@clipfusefalse}%
+% \def\iniatom{%
+% \def\aaa{}\def\bbb{}\def\ccc{}\def\ddd{}\def\eee{}\def\fff{}%
+% \def\gggA{}\def\hhh{}\def\iii{}\def\jjj{}%
+% \def\@aaa{}\def\@bbb{}\def\@ccc{}\def\@ddd{}\def\@eee{}\def\@fff{}%
+% }%
+% \def\resetbdsw{\gdef\@aaa{a}\gdef\@bbb{b}\gdef\@ccc{c}%
+% \gdef\@ddd{d}\gdef\@eee{e}\gdef\@fff{f}}%
+% \end{macrocode}
+%
+% \section{Initialization}
+%
+% \begin{macrocode}
+\iniatom%
+% \end{macrocode}
+%
+% \section{Macros for setting bonds}
+% \subsection{Inner double bonds}
+%
+% The macros |\sixhetero| and |\fivehetero| use internal macros for setting
+% inner double bonds in accordance with the presence or the absence of
+% hetero atoms. During the processes of such setting,
+% the inner macros |\bonda| to |\bondf| are used to set a bond
+% on each edge of a six- or five-membered ring; and
+% the inner macros |\bondz| to |\bondzi| draw horizontal bonds
+% of a five-membered ring.
+%
+% Note that
+% comments (conerning locant numbers) on the end of each row have
+% lost the exact meaning,
+% since such a command moiety is used in many macros after copying.
+%
+% \begin{verbatim}
+% ******************************
+% * setting inner double bonds *
+% ******************************
+% The following numbering is adopted in these macros.
+% aaa
+% 1
+% f * a
+% fff 6 * * 2 bbb
+% e | | b
+% | |
+% eee 5 * * 3 ccc
+% d * c
+% 4 <===== the original point
+% ddd
+% \end{verbatim}
+%
+% \begin{macro}{\bonda}
+% The macro |\bonda| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\aaa| and |\bbb|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+% bond between 1 and 2
+\def\bonda{%
+ \ifx\aaa\empty%
+ \ifx\bbb\empty%
+ \Put@Line(6,364)(5,-3){126}% %double bond 1-2
+ \else%
+ \Put@Line(6,364)(5,-3){100}% %double bond 1-2
+ \fi%
+ \else%
+ \ifx\bbb\empty%
+ \Put@Line(35,340)(5,-3){100}% %double bond 1-2
+ \else%
+ \Put@Line(35,352)(5,-3){100}% %double bond 1-2
+ \fi% % line <1OO not available
+ \fi%
+ }%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bondb}
+% The macro |\bondb| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\bbb| and |\ccc|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+% bond between 3 and 2
+ \def\bondb{%
+ \ifx\bbb\empty%
+ \ifx\ccc\empty%
+ \Put@Line(138,129)(0,1){148}% %double bond 3-2
+ \else%
+ \Put@Line(138,143)(0,1){134}% %double bond 3-2
+ \fi%
+ \else%
+ \ifx\ccc\empty%
+ \Put@Line(138,129)(0,1){134}% %double bond 3-2
+ \else%
+ \Put@Line(138,143)(0,1){110}% %double bond 3-2
+ \fi%
+ \fi%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bondc}
+% The macro |\bondc| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\ddd| and |\ccc|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+% bond between 4 and 3
+ \def\bondc{%
+ \ifx\ddd\empty%
+ \ifx\ccc\empty%
+ \Put@Line(6,42)(5,3){126}% %double bond 4-3
+ \else%
+ \Put@Line(6,42)(5,3){100}% %double bond 4-3
+ \fi%
+ \else%
+ \ifx\ccc\empty%
+ \Put@Line(35,66)(5,3){100}% %double bond 4-3
+ \else%
+ \Put@Line(35,60)(5,3){100}% %double bond 4-3
+ \fi% % line <1OO not available
+ \fi%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bondd}
+% The macro |\bondd| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\ddd| and |\eee|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+% bond between 4 and 5
+ \def\bondd{%
+ \ifx\ddd\empty%
+ \ifx\eee\empty%
+ \Put@Line(-6,42)(-5,3){126}% %double bond 4-5
+ \else%
+ \Put@Line(-6,42)(-5,3){100}% %double bond 4-5
+ \fi%
+ \else%
+ \ifx\eee\empty%
+ \Put@Line(-35,66)(-5,3){100}% %double bond 4-5
+ \else%
+ \Put@Line(-35,60)(-5,3){100}% %double bond 4-5
+ \fi% % line <1OO not available
+ \fi%
+ }%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bonde}
+% The macro |\bonde| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\fff| and |\eee|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+% bond between 5 and 6
+\def\bonde{%
+ \ifx\fff\empty%
+ \ifx\eee\empty%
+ \Put@Line(-138,129)(0,1){148}% %double bond 5-6
+ \else%
+ \Put@Line(-138,143)(0,1){134}% %double bond 5-6
+ \fi%
+ \else%
+ \ifx\eee\empty%
+ \Put@Line(-138,129)(0,1){134}% %double bond 5-6
+ \else%
+ \Put@Line(-138,143)(0,1){110}% %double bond 5-6
+ \fi%
+ \fi%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bondf}
+% The macro |\bondf| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\aaa| and |\fff|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+% bond between 1 and 6
+\def\bondf{%
+ \ifx\aaa\empty%
+ \ifx\fff\empty%
+ \Put@Line(-6,364)(-5,-3){126}% %double bond 1-6
+ \else%
+ \Put@Line(-6,364)(-5,-3){100}% %double bond 1-6
+ \fi%
+ \else%
+ \ifx\fff\empty%
+ \Put@Line(-35,340)(-5,-3){100}% %double bond 1-6
+% \Put@Line(-6,364)(-5,-3){126}% %double bond 1-6 bug fix 2010/10/01
+ \else%
+ \Put@Line(-35,352)(-5,-3){100}% %double bond 1-6
+ \fi% % line <1OO not available
+ \fi%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bondz}
+% The macro |\bondz| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\fff| and |\bbb|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+% horizontal inner bond for five-membered rings
+\def\bondhoriz{%
+ \ifx\fff\empty%
+ \ifx\bbb\empty%
+ \Put@Line(-138,270)(1,0){277}% %double bond 4-3
+ \else%
+ \Put@Line(-138,270)(1,0){258}% %double bond 4-3
+ \fi%
+ \else%
+ \ifx\bbb\empty%
+ \Put@Line(-120,270)(1,0){258}% %double bond 4-3
+ \else%
+ \Put@Line(-120,270)(1,0){239}% %double bond 4-3
+ \fi%
+ \fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bondzi}
+% The macro |\bondzi| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\eee| and |\ccc|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+% horizontal inner bond for five-membered rings (inverse type)
+\def\bondhorizi{%
+ \ifx\eee\empty%
+ \ifx\ccc\empty%
+ \Put@Line(-138,136)(1,0){277}% %double bond 4-3
+ \else%
+ \Put@Line(-138,136)(1,0){258}% %double bond 4-3
+ \fi%
+ \else%
+ \ifx\ccc\empty%
+ \Put@Line(-120,136)(1,0){258}% %double bond 4-3
+ \else%
+ \Put@Line(-120,136)(1,0){239}% %double bond 4-3
+ \fi%
+ \fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Skeletal bonds}
+%
+% The macros |\sixhetero| and |\fivehetero| use inner macros for setting
+% skeletal bonds in accordance with the presence or the absence of
+% hetero atoms. During the processes of such setting,
+% the inner macros |\skbonda| to |\skbondf| are used to set a bond
+% on each edge of a six- or five-membered ring; and
+% the inner macros |\skbondz| to |\skbondzi| draw horizontal bonds
+% of a five-membered ring.
+%
+% \begin{verbatim}
+% **************************
+% * setting skeletal bonds *
+% **************************
+% The following numbering is adopted in this macro.
+% aaa
+% 1
+% f * a
+% fff 6 * * 2 bbb
+% e | | b
+% | |
+% eee 5 * * 3 ccc
+% d * c
+% 4 <===== the original point
+% ddd
+%
+% \end{verbatim}
+%
+% \begin{macro}{\skbonda}
+% The macro |\skbonda| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\aaa| and |\bbb|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+%bond between 1 and 2
+\def\skbonda{%
+ \ifx\aaa\empty%
+ \ifx\bbb\empty%
+ \Put@Line(0,406)(5,-3){171}% %bond 1-2
+ \else%
+ \Put@Line(0,406)(5,-3){136}% %bond 1-2
+ \fi%
+ \else%
+ \ifx\bbb\empty%
+ \Put@Line(35,385)(5,-3){136}% %bond 1-2
+ \else%
+ \Put@Line(35,385)(5,-3){100}% %bond 1-2
+ \fi%
+ \fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\skbondf}
+% The macro |\skbonda| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\aaa| and |\fff|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+%bond between 1 and 6
+\def\skbondf{%
+ \ifx\aaa\empty%
+ \ifx\fff\empty%
+ \Put@Line(0,406)(-5,-3){171}% %bond 1-6
+ \else%
+ \Put@Line(0,406)(-5,-3){136}% %bond 1-6
+ \fi%
+ \else%
+ \ifx\fff\empty%
+ \Put@Line(-35,385)(-5,-3){136}% %bond 1-6
+ \else%
+ \Put@Line(-35,385)(-5,-3){100}% %bond 1-6
+ \fi%
+ \fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\skbondc}
+% The macro |\skbondc| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\ccc| and |\ddd|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+%bond between 4 and 3
+\def\skbondc{%
+ \ifx\ddd\empty%
+ \ifx\ccc\empty%
+ \Put@Line(0,0)(5,3){171}% %bond 4-3
+ \else%
+ \Put@Line(0,0)(5,3){136}% %bond 4-3
+ \fi%
+ \else%
+ \ifx\ccc\empty%
+ \Put@Line(35,21)(5,3){138}% %bond 4-3
+ \else%
+ \Put@Line(35,21)(5,3){100}% %bond 4-3
+ \fi%
+ \fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\skbondd}
+% The macro |\skbondd| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\ddd| and |\eee|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+%bond between 4 and 5
+\def\skbondd{%
+ \ifx\ddd\empty%
+ \ifx\eee\empty%
+ \Put@Line(0,0)(-5,3){171}% %bond 4-5
+ \else%
+ \Put@Line(0,0)(-5,3){136}% %bond 4-5
+ \fi%
+ \else%
+ \ifx\eee\empty%
+ \Put@Line(-35,21)(-5,3){138}% %bond 4-5
+ \else%
+ \Put@Line(-35,21)(-5,3){100}% %bond 4-5
+ \fi%
+ \fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\skbondb}
+% The macro |\skbondb| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\bbb| and |\ccc|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+%bond between 3 and 2
+\def\skbondb{%
+ \ifx\bbb\empty%%
+ \ifx\ccc\empty%%
+ \Put@Line(171,103)(0,1){200}% %bond 3-2
+ \else%
+ \Put@Line(171,143)(0,1){160}% %bond 3-2
+ \fi%
+ \else%
+ \ifx\ccc\empty%%
+ \Put@Line(171,103)(0,1){150}% %bond 3-2
+ \else%
+ \Put@Line(171,143)(0,1){110}% %bond 3-2
+ \fi%
+ \fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\skbonde}
+% The macro |\skbonde| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\eee| and |\fff|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+%bond between 5 and 6
+\def\skbonde{%
+ \ifx\eee\empty%
+ \ifx\fff\empty%
+ \Put@Line(-171,103)(0,1){200}% %bond 5-6
+ \else%
+ \Put@Line(-171,103)(0,1){150}% %bond 5-6
+ \fi%
+ \else%
+ \ifx\fff\empty%
+ \Put@Line(-171,143)(0,1){160}% %bond 5-6
+ \else%
+ \Put@Line(-171,143)(0,1){110}% %bond 5-6
+ \fi%
+ \fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\skbondhoriz}
+% The macro |\skbondhoriz| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\fff| and |\bbb|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+%horizontal bond for five-membered rings
+\def\skbondhoriz{%
+ \ifx\fff\empty%
+ \ifx\bbb\empty%
+ \Put@Line(-171,303)(1,0){342}% %bond 4-3
+ \else%
+ \Put@Line(-171,303)(1,0){300}% %bond 4-3
+ \fi%
+ \else%
+ \ifx\bbb\empty%
+ \Put@Line(171,303)(-1,0){300}% %bond 4-3
+ \else%
+ \Put@Line(-129,303)(1,0){258}% %bond 4-3
+ \fi%
+ \fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\skbondhorizi}
+% The macro |\skbondhorizi| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\eee| and |\ccc|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+%horizontal bond for five-membered rings (inverse type)
+\def\skbondhorizi{%
+ \ifx\eee\empty%
+ \ifx\ccc\empty%
+ \Put@Line(-171,103)(1,0){342}% %bond 4-3
+ \else%
+ \Put@Line(-171,103)(1,0){300}% %bond 4-3
+ \fi%
+ \else%
+ \ifx\ccc\empty%
+ \Put@Line(171,103)(-1,0){300}% %bond 4-3
+ \else%
+ \Put@Line(-129,103)(1,0){258}% %bond 4-3
+ \fi%
+ \fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\set@outskel@sixv}
+% The macro |\set@outskel@sixv| is to typeset a series of
+% outer-skeleton bonds to six rings. It is
+% used in |\sixheterov| and |\sixheterovi|.
+%
+% \begin{macrocode}
+\def\set@outskel@sixv{%
+ \skbonda% bond between 1 and 2
+ \skbondf% bond between 1 and 6
+ \skbondc% bond between 4 and 3
+ \skbondd% bond between 4 and 5
+ \skbondb% bond between 3 and 2
+ \skbonde% bond between 5 and 6
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Dotted Skeletal Bonds}
+%
+% The macros |\sixfusev| etc. use inner macros for setting
+% skeletal bonds in accordance with the presence or the absence of
+% hetero atoms. During the processes of such setting,
+% the inner macros |\dotskbonda| to |\dotskbondf| are used
+% to set a dotted bond on each edge of a six- or five-membered ring.
+%
+% \begin{macro}{\dotskbonda}
+% The macro |\dotskbonda| is the dotted couterpart of |\skbonda|,
+% which refers to the control sequences representing
+% atoms on both of the terminal vertices (|\aaa| and |\bbb|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+%bond between 1 and 2
+\def\dotskbonda{%
+ \ifx\aaa\empty%
+ \ifx\bbb\empty%
+ \dotorline(0,406)(5,-3){171}/(0,406)(171,303)%
+ \else%
+ \dotorline(0,406)(5,-3){136}/(0,406)(136,324)%
+ \fi%
+ \else%
+ \ifx\bbb\empty%
+ \dotorline(35,385)(5,-3){136}/(35,386)(171,303)%
+ \else%
+ \dotorline(35,385)(5,-3){100}/(35,386)(136,324)%
+ \fi%
+ \fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dotskbondb}
+% The macro |\dotskbondb| is the dotted couterpart of |\skbondb|,
+% which refers to the control sequences representing
+% atoms on both of the terminal vertices (|\bbb| and |\ccc|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+%bond between 3 and 2
+\def\dotskbondb{%
+ \ifx\bbb\empty%%
+ \ifx\ccc\empty%%
+ \dotorline(171,103)(0,1){200}/(171,103)(171,303)%
+ \else%
+ \dotorline(171,143)(0,1){160}/(171,143)(171,303)%
+ \fi%
+ \else%
+ \ifx\ccc\empty%%
+ \dotorline(171,103)(0,1){150}/(171,103)(171,253)%
+ \else%
+ \dotorline(171,143)(0,1){110}/(171,143)(171,253)%
+ \fi%
+ \fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dotskbondc}
+% The macro |\dotskbondc| is the dotted couterpart of |\skbondc|,
+% which refers to the control sequences representing
+% atoms on both of the terminal vertices (|\ccc| and |\ddd|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+%bond between 4 and 3
+\def\dotskbondc{%
+ \ifx\ddd\empty%
+ \ifx\ccc\empty%%
+ \dotorline(0,0)(5,3){171}/(0,0)(171,103)%
+ \else%
+ \dotorline(0,0)(5,3){136}/(0,0)(136,81)%
+ \fi%
+ \else%
+ \ifx\ccc\empty%
+ \dotorline(35,21)(5,3){138}/(35,21)(171,103)%
+ \else%
+ \dotorline(35,21)(5,3){100}/(35,21)(136,81)%
+ \fi%
+ \fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dotskbondd}
+% The macro |\dotskbondd| is the dotted couterpart of |\skbondd|,
+% which refers to the control sequences representing
+% atoms on both of the terminal vertices (|\ddd| and |\eee|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+%bond between 4 and 5
+\def\dotskbondd{%
+ \ifx\ddd\empty%
+ \ifx\eee\empty%
+ \dotorline(0,0)(-5,3){171}/(0,0)(-171,103)%
+ \else%
+ \dotorline(0,0)(-5,3){136}/(0,0)(-136,81)%
+ \fi%
+ \else%
+ \ifx\eee\empty%
+ \dotorline(-35,21)(-5,3){138}/(-35,21)(-171,103)%
+ \else%
+ \dotorline(-35,21)(-5,3){100}/(-35,21)(-136,81)%
+ \fi%
+ \fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dotskbonde}
+% The macro |\dotskbonde| is the dotted couterpart of |\skbonde|,
+% which refers to the control sequences representing
+% atoms on both of the terminal vertices (|\eee| and |\fff|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+%bond between 5 and 6
+\def\dotskbonde{%
+ \ifx\eee\empty%
+ \ifx\fff\empty%
+ \dotorline(-171,103)(0,1){200}/(-171,103)(-171,303)%
+ \else%
+ \dotorline(-171,103)(0,1){150}/(-171,103)(-171,253)%
+ \fi%
+ \else%
+ \ifx\fff\empty%
+ \dotorline(-171,143)(0,1){160}/(-171,143)(-171,303)%
+ \else%
+ \dotorline(-171,143)(0,1){110}/(-171,143)(-171,253)%
+ \fi%
+ \fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dotskbondf}
+% The macro |\dotskbondf| is the dotted couterpart of |\skbondf|,
+% which refers to the control sequences representing
+% atoms on both of the terminal vertices (|\aaa| and |\fff|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+%bond between 1 and 6
+\def\dotskbondf{%
+ \ifx\aaa\empty%
+ \ifx\fff\empty%
+ \dotorline(0,406)(-5,-3){171}/(0,406)(-171,303)%
+ \else%
+ \dotorline(0,406)(-5,-3){136}/(0,406)(-136,325)%
+ \fi%
+ \else%
+ \ifx\fff\empty%
+ \dotorline(-35,385)(-5,-3){136}/(-35,385)(-171,303)%
+ \else%
+ \dotorline(-35,385)(-5,-3){100}/(-35,385)(-136,325)%
+ \fi%
+ \fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dotskbondhoriz}
+% The macro |\dotskbondhoriz| is the dotted couterpart of |\skbondhoriz|,
+% which refers to the control sequences representing
+% atoms on both of the terminal vertices (|\fff| and |\bbb|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+%horizontal bond for five-membered rings
+\def\dotskbondhoriz{%
+ \ifx\fff\empty%
+ \ifx\bbb\empty%
+ \dotorline(-171,303)(1,0){342}/(-171,303)(171,303)%
+ \else%
+ \dotorline(-171,303)(1,0){300}/(-171,303)(129,303)%
+ \fi%
+ \else%
+ \ifx\bbb\empty%
+ \dotorline(171,303)(-1,0){300}/(171,303)(-129,303)%
+ \else%
+ \dotorline(-129,303)(1,0){258}/(-129,303)(129,303)%
+ \fi%
+ \fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dotskbondhorizi}
+% The macro |\dotskbondhorizi| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\eee| and |\ccc|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+%horizontal bond for five-membered rings (inverse type)
+\def\dotskbondhorizi{%
+ \ifx\eee\empty%
+ \ifx\ccc\empty%
+ \dotorline(-171,103)(1,0){342}/(-171,103)(171,103)%
+ \else%
+ \dotorline(-171,103)(1,0){300}/(-171,103)(129,103)%
+ \fi%
+ \else%
+ \ifx\ccc\empty%
+ \dotorline(171,103)(-1,0){300}/(171,103)(-129,103)%
+ \else%
+ \dotorline(-129,103)(1,0){258}/(-129,103)(129,103)%
+ \fi%
+ \fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% The macro |\set@skel@bond| is used in such commands as |\sixheterov|
+% and |\sixfusev| for setting skeletal bonds (outer bonds),
+% when |\@aaa| etc. (produced by |\csname|...|\endcsname|) are equal
+% to `a' etc. (given as \#2). Thinline, thickline and dotted-line
+% skeletal bonds are available.
+%
+% \begin{macro}{\if@skbondlist}
+% \begin{macrocode}
+\newif\if@skbondlist
+\@skbondlistfalse
+% \end{macrocode}
+% \end{macro}% from fusering.sty to hetarom.sty
+%
+% \changes{v4.02}{2004/12/20}{The positions of \cs{@skbondlisttrue} are changed.}
+% \changes{v5.00}{2010/10/01}{For bond coloring}
+%
+% \begin{macro}{\set@skel@bond}
+% \begin{macrocode}
+\def\set@skel@bond#1#2#3{%
+ \expandafter\if\csname @#2#2#2\endcsname #2\relax%OK
+ % \if\@aaa #2\relax%OK
+ \def\skbondreplace{#3}%
+ \@skbondlistfalse
+ \@tfor\member:=#1\do{%
+ \expandafter\twoCH@@R\member//%
+ \if\@@tmpa #2\relax%
+ \if\@@tmpb A\relax%
+ \@skbondlisttrue
+ \expandafter\csname dotskbond#3\endcsname% \dotskbonda etc.
+% \@skbondlisttrue
+ \else\if\@@tmpb B\relax%
+ \@skbondlisttrue
+ {\thicklines
+ \expandafter\csname skbond#3\endcsname% \skbonda etc.
+ }%
+% \@skbondlisttrue
+ \else%%%added for color 2010/10/01
+ \@skbondlisttrue%
+ \put(0,0){\@@tmpb}%
+ \fi\fi
+ \fi%
+ }%
+ \if@skbondlist\else
+ {\thinlines
+ \expandafter\csname skbond#3\endcsname% \skbonda etc.
+ }%
+ \fi%
+ \else
+ \expandafter\ifx\csname @#2#2#2\endcsname \empty\relax%
+ % \ifx\@aaa\empty\relax
+ \@tfor\member:=#1\do{%
+ \expandafter\twoCH@@R\member//%
+ \if\@@tmpa #2\relax%
+ \XyMTeXWarning{Unavailable bond `#2' in SKBONDLIST}\fi
+ }%
+ \fi\fi
+}% end of \set@skel@bond
+% \end{macrocode}
+% \end{macro}
+%
+% The macro |\set@skel@longbond| is used in |\fivefusev| etc.
+% for setting skeletal bonds (outer bonds), when |\@aaa| etc.
+% (produced by |\csname|...|\endcsname|) are equal to `a'
+% etc. (given as \#2). Thinline, thickline and dotted-line
+% skeletal bonds are available.
+%
+% hetarom.dtx
+% \changes{v4.02}{2004/12/20}{The positions of \cs{@skbondlisttrue} are changed.}
+% \changes{v5.00}{2010/10/01}{For bond coloring}
+%
+% \begin{macro}{\set@skel@longbond}
+% \begin{macrocode}
+\newif\iflongskbond \longskbondfalse
+\def\set@skel@longbond#1#2#3{%
+ \expandafter\if\csname @#2#2#2\endcsname #2\relax%OK
+ % \if\@aaa #2\relax%OK
+ \def\skbondreplace{#3}%
+ \longskbondtrue%
+ \@skbondlistfalse
+ \@tfor\member:=#1\do{%
+ \expandafter\twoCH@@R\member//%
+ \if\@@tmpa #2\relax%
+ \if\@@tmpb A\relax%
+ \@skbondlisttrue
+ \expandafter\csname dot#3\endcsname% \dotskbonda etc.
+% \@skbondlisttrue
+ \else\if\@@tmpb B\relax%
+ \@skbondlisttrue
+ {\thicklines
+ \expandafter\csname #3\endcsname% \skbonda etc.
+ }%
+% \@skbondlisttrue
+ \else%%%added for color 2010/10/01
+ \@skbondlisttrue%
+ \put(0,0){\@@tmpb}%
+ \fi\fi
+ \fi%
+ }%
+ \if@skbondlist\else
+ {\thinlines
+ \expandafter\csname #3\endcsname% \skbonda etc.
+ }%
+ \fi%
+ \else
+ \expandafter\ifx\csname @#2#2#2\endcsname \empty\relax%
+ % \ifx\@aaa\empty\relax
+ \@tfor\member:=#1\do{%
+ \expandafter\twoCH@@R\member//%
+ \if\@@tmpa #2\relax%
+ \XyMTeXWarning{Unavailable bond `#2' in SKBONDLIST}\fi
+ }%
+ \fi\fi
+ \longskbondfalse
+}% end of \set@skel@longbond
+% \end{macrocode}
+% \end{macro}
+%
+% The macro |\@bond@@omit| is used in |\sixheterov| etc.
+% for detecting omitted bonds, where |\@aaa| etc. are empty if
+% they are omitted.
+%
+% \begin{macro}{\@bond@@omit}
+% \begin{macrocode}
+\def\@bond@@omit#1{%
+\@tfor\memBer:=#1\do{%
+\if\memBer a\relax\gdef\@aaa{}\fi%
+\if\memBer A\relax\gdef\@aaa{}\fi%
+\if\memBer b\relax\gdef\@bbb{}\fi%
+\if\memBer B\relax\gdef\@bbb{}\fi%
+\if\memBer c\relax\gdef\@ccc{}\fi%
+\if\memBer C\relax\gdef\@ccc{}\fi%
+\if\memBer d\relax\gdef\@ddd{}\fi%
+\if\memBer D\relax\gdef\@ddd{}\fi%
+\if\memBer e\relax\gdef\@eee{}\fi%
+\if\memBer E\relax\gdef\@eee{}\fi%
+\if\memBer f\relax\gdef\@fff{}\fi%
+\if\memBer F\relax\gdef\@fff{}\fi%
+\if\memBer g\relax\gdef\@ggg{}\fi%
+\if\memBer G\relax\gdef\@ggg{}\fi%
+\if\memBer h\relax\gdef\@hhh{}\fi%
+\if\memBer H\relax\gdef\@hhh{}\fi%
+\if\memBer i\relax\gdef\@iii{}\fi%
+\if\memBer I\relax\gdef\@iii{}\fi%
+\if\memBer j\relax\gdef\@jjj{}\fi%
+\if\memBer J\relax\gdef\@jjj{}\fi%
+\if\memBer k\relax\gdef\@kkk{}\fi%
+\if\memBer K\relax\gdef\@kkk{}\fi%
+}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Six-membered heterocyles}
+% \subsection{Vertical type}
+%
+% The standard skeleton of a six-membered heterocycle is selected
+% to have the following locant numbers.
+%
+% \begin{verbatim}
+% *************************
+% * sixhetero derivatives *
+% * (vertical type) *
+% *************************
+% The following numbering is adopted in this macro.
+%
+% 1
+% *
+% 6 * * 2
+% | |
+% | |
+% 5 * * 3
+% *
+% 4 <===== the original point
+% \end{verbatim}
+%
+% The macro |\sixheterov| has two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \sixheterov(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `f' and a uppercase
+% character `A' or `B'.
+%
+% The |BONDLIST| argument contains one
+% character selected from a to f, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `A' represents an aromatic circle. The option
+% `$n+$' ($n=1$ to $6$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% none or r : sixhetero (right-handed)
+% l : sixhetero (left-handed)
+% [] : fully saturated form
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,6-double bond
+% f : 6,1-double bond
+% A : aromatic circle
+% {n+} : plus at the n-nitrogen atom (n = 1 to 6)
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+%
+% ATOMLIST: list of heteroatoms (max 6 atoms)
+%
+% for n = 1 to 6
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position,
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 6
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+%
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges may be regarded as both fused and non-fused
+% positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a, b, c, d, e, or f)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \sixheterov{1==N}{1==Cl;2==F}
+% \sixheterov[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \sixheterov[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl}
+% \end{verbatim}
+%
+% The definition of |\sixheterov| uses a picture environment and
+% consists of the following unit processes:
+% \begin{enumerate}
+% \item treatment of atom list,
+% \item placing outer skeletons,
+% \item placing inner double bonds,
+% \item setting hetero atoms, and
+% \item placing substituents by |\setsixringv|.
+% \end{enumerate}
+%
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/11/15}{Adding \cs{test@vertix@sixv}}
+%
+% \begin{macro}{\sixheterov}
+% \begin{macro}{\@six@heterov}
+% \begin{macro}{\@six@@heterov}
+% \begin{macro}{\@sixheterov}
+% \begin{macrocode}
+\def\sixheterov{\@ifnextchar({\@six@heterov(@}{\@six@heterov(@)}}
+\def\@six@heterov(#1){\@ifnextchar[{\@six@@heterov(#1)[@}%
+{\@six@@heterov(#1)[@]}}
+\def\@six@@heterov(#1)[#2]#3#4{\@ifnextchar[%
+{\@sixheterov(#1)[#2]{#3}{#4}[@}%
+{\@sixheterov(#1)[#2]{#3}{#4}[@]}}
+\def\@sixheterov(#1)[#2]#3#4[#5]{%
+% \end{macrocode}
+%
+% \changes{v3.01}{2002/4/30}{Replaced by \cs{ShiftPicEnv}}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+% % treatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniatom\iniflag%initialize
+\test@vertix@sixv{#3}{a}{b}{c}{d}{e}{f}%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % adustment of subs positions %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\@reset@ylsw%
+\ylposition{#4}{0}{0}{7}{0}%
+\begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(800,880)(-\shiftii,-\shifti){sixheterov}%2002/4/30 by S. Fujita
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+{%
+\resetbdsw%
+\@bond@@omit{#5}%
+\set@skel@bond{#1}{a}{a}% bond between 1 and 2 \@aaa -> \skbonda etc
+\set@skel@bond{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc
+\set@skel@bond{#1}{c}{c}% bond between 3 and 4 \@ccc -> \skbondc etc
+\set@skel@bond{#1}{d}{d}% bond between 4 and 5 \@ddd -> \skbondd etc
+\set@skel@bond{#1}{e}{e}% bond between 5 and 6 \@eee -> \skbonde etc
+\set@skel@bond{#1}{f}{f}% bond between 6 and 1 \@fff -> \skbondf etc
+}%
+%%%%%\set@outskel@sixv % replaced by above 1998/12/30
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r\relax \bondd \bondf \bondb%
+\else\if\member l\relax \bonda \bondc \bonde%
+\else\if\member a\relax \bonda%
+\else\if\member b\relax \bondb%
+\else\if\member c\relax \bondc%
+\else\if\member d\relax \bondd%
+\else\if\member e\relax \bonde%
+\else\if\member f\relax \bondf%
+\else\if\member A%left aromatic circle
+ \Put@oCircle(0,203){240}% %circle
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+% % inner bond attachment %
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+\else \expandafter\twoCH@@R\member//%
+ \set@fusionadd@sixv%
+\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\set@hetatom@sixv{#3}{0}{0}{7}{0}% %atom 1--6%
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\setsixringv{#4}{0}{0}{7}{0}% %subst 1--6
+\end{ShiftPicEnv}\iniatom\iniflag}% %end of \sixheterov macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Inverse vertical type}
+%
+% The standard skeleton of a six-membered heterocycle of inverse type
+% is selected to have the following locant numbers.
+%
+% \begin{verbatim}
+% **********************************
+% * sixhetero derivatives *
+% * (vertical type, inverse type) *
+% **********************************
+% The following numbering is adopted in this macro.
+%
+% 4
+% *
+% 5 * * 3
+% | |
+% | |
+% 6 * * 2
+% *
+% 1 <===== the original point
+% \end{verbatim}
+%
+% The macro |\sixheterovi| has two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \sixheterovi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `f' and a uppercase
+% character `A' or `B'.
+%
+% The |BONDLIST| argument contains one
+% character selected from a to f, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `A' represents an aromatic circle. The option
+% `$n+$' ($n=1$ to $6$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+%
+% BONDLIST =
+%
+% none or r : sixhetero (right-handed)
+% l : sixhetero (left-handed)
+% [] : fully saturated form
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,6-double bond
+% f : 6,1-double bond
+% A : aromatic circle
+% {n+} : plus at the n-nitrogen atom (n = 1 to 6)
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+%
+% ATOMLIST: list of heteroatoms (max 6 atoms)
+%
+% for n = 1 to 6
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position,
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 6
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+%
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges may be regarded as both fused and non-fused
+% positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a, b, c, d, e, or f)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \sixheterovi{1==N}{1==Cl;2==F}
+% \sixheterovi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \sixheterovi[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl}
+%
+% \end{verbatim}
+%
+% The definition of |\sixheterovi| uses a picture environment and
+% consists of the same unit processes as shown in |\sixheterov|:
+% \begin{enumerate}
+% \item treatment of atom list,
+% \item placing outer skeletons,
+% \item placing inner double bonds,
+% \item setting hetero atoms, and
+% \item placing substituents by |\setsixringv|.
+% \end{enumerate}
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+%
+% \begin{macro}{\sixheterovi}
+% \begin{macro}{\@six@heterovi}
+% \begin{macro}{\@six@@heterovi}
+% \begin{macro}{\@sixheterovi}
+% \begin{macrocode}
+\def\sixheterovi{\@ifnextchar({\@six@heterovi(@}{\@six@heterovi(@)}}
+\def\@six@heterovi(#1){\@ifnextchar[{\@six@@heterovi(#1)[@}%
+{\@six@@heterovi(#1)[@]}}
+\def\@six@@heterovi(#1)[#2]#3#4{\@ifnextchar[%
+{\@sixheterovi(#1)[#2]{#3}{#4}[@}%
+{\@sixheterovi(#1)[#2]{#3}{#4}[@]}}
+\def\@sixheterovi(#1)[#2]#3#4[#5]{%
+% \end{macrocode}
+%
+% \changes{v3.01}{2002/4/30}{Replaced by \cs{ShiftPicEnv}}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+% % treatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniatom\iniflag%initialize
+\test@vertix@sixv{#3}{d}{c}{b}{a}{f}{e}%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % adjustment of subs positions %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\@reset@ylsw%
+\ylposition{#4}{5}{0}{5}{-1}% %subst 1--4
+\ylposition{#4}{11}{4}{7}{-1}% %subst 5 and 6
+\begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(800,880)(-\shiftii,-\shifti){sixheterovi}%2002/4/30 by S. Fujita
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+{\resetbdsw%
+\@bond@@omit{#5}%
+\set@skel@bond{#1}{a}{c}% bond between 1 and 2 \@aaa -> \skbondc etc
+\set@skel@bond{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc
+\set@skel@bond{#1}{c}{a}% bond between 3 and 4 \@ccc -> \skbonda etc
+\set@skel@bond{#1}{d}{f}% bond between 4 and 5 \@ddd -> \skbondf etc
+\set@skel@bond{#1}{e}{e}% bond between 5 and 6 \@eee -> \skbonde etc
+\set@skel@bond{#1}{f}{d}% bond between 6 and 1 \@fff -> \skbondd etc
+}%
+%%%\set@outskel@sixv% replaced by the above 1998/12/30
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r\relax \bondd \bondf \bondb%
+\else\if\member l\relax \bonda \bondc \bonde%
+\else\if\member a\relax \bondc%
+\else\if\member b\relax \bondb%
+\else\if\member c\relax \bonda%
+\else\if\member d\relax \bondf%
+\else\if\member e\relax \bonde%
+\else\if\member f\relax \bondd%
+\else\if\member A%left aromatic circle
+ \Put@oCircle(0,203){240}% %circle
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+% % inner bond attachment %
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+\else \expandafter\twoCH@@R\member//%
+ \set@fusionadd@sixvi%
+\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+}%
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\set@hetatom@sixv{#3}{5}{0}{5}{-1}% %atom 1--4%
+\set@hetatom@sixv{#3}{11}{4}{7}{-1}% %atom 5 and 6%
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\setsixringv{#4}{5}{0}{5}{-1}% %subst 1--4
+\setsixringv{#4}{11}{4}{7}{-1}% %subst 5 and 6
+\end{ShiftPicEnv}\iniatom\iniflag}% %end of \sixheterovi macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Pyridine derivatives of vertical type}
+%
+% The macros |\sixheterov| and |\sixheterovi| can be used in the
+% form of a fixed |ATOMLIST|. Hence, the resulting commands for
+% drawing a six-membered heterocyle with one or more nitrogen atoms
+% have an argument |SUBSLIST| as well as an optional argument |BONDLIST|.
+%
+% \begin{verbatim}
+% ************************
+% * pyridine derivatives *
+% * (vertical type) *
+% ************************
+%
+% \pyridinev[BONDLIST]{SUBSLIST}
+% \pyridinevi[BONDLIST]{SUBSLIST}
+% \pyrazinev[BONDLIST]{SUBSLIST}
+% \pyrimidinev[BONDLIST]{SUBSLIST}
+% \pyrimidinevi[BONDLIST]{SUBSLIST}
+% \triazinev[BONDLIST]{SUBSLIST}
+% \triazinevi[BONDLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one
+% character selected from a to f, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `A' represents an aromatic circle. The option
+% `$n+$' ($n=1$ to $6$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% none or r : pyridine (right-handed)
+% l : pyridine (left-handed)
+% [] : fully saturated ring
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,6-double bond
+% f : 6,1-double bond
+% A : aromatic circle
+% {n+} : plus at the n-nitrogen atom
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 6
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \pyridinev{1==Cl;2==F}
+% \pyridinev[c]{1==Cl;4==F;2==CH$_{3}$}
+% \pyridinev[eb]{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl}
+% \end{verbatim}
+%
+% \begin{macro}{\pridinev}
+% \begin{macro}{\pridinevi}
+% \begin{macrocode}
+\def\pyridinev{\@ifnextchar[{\@pyridinev[@}{\@pyridinev[r]}}
+\def\@pyridinev[#1]#2{%
+\iforigpt \typeout{command `pyridinev' %
+ is based on `sixheterov'.}\fi%
+\sixheterov[#1]{1==N}{#2}}%end of \pyridinev macro
+\def\pyridinevi{\@ifnextchar[{\@pyridinevi[@}{\@pyridinevi[r]}}
+\def\@pyridinevi[#1]#2{%
+\iforigpt \typeout{command `pyridinevi' %
+ is based on `sixheterovi'.}\fi%
+\sixheterovi[#1]{1==N}{#2}}%end of \pyridinevi macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\pyrazinev}
+% \begin{macro}{\pyrazinevi}
+% \begin{macrocode}
+\def\pyrazinev{\@ifnextchar[{\@pyrazinev[@}{\@pyrazinev[r]}}
+\def\@pyrazinev[#1]#2{%
+\iforigpt \typeout{command `pyrazinev' %
+ is based on `sixheterov'.}\fi%
+\sixheterov[#1]{1==N;4==N}{#2}}%end of \pyrazinev macro
+%the same formula with an alternative locant numbering
+\def\pyrazinevi{\@ifnextchar[{\@pyrazinevi[@}{\@pyrazinevi[r]}}
+\def\@pyrazinevi[#1]#2{%
+\iforigpt \typeout{command `pyrazinevi' %
+ is based on `sixheterovi'.}\fi%
+\sixheterovi[#1]{1==N;4==N}{#2}}%end of \pyrazinevi macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\pyrimidinev}
+% \begin{macro}{\pyrimidinevi}
+% \begin{macrocode}
+\def\pyrimidinev{\@ifnextchar[{\@pyrimidinev[@}{\@pyrimidinev[r]}}
+\def\@pyrimidinev[#1]#2{%
+\iforigpt \typeout{command `pyrimidinev' %
+ is based on `sixheterov'.}\fi%
+\sixheterov[#1]{1==N;3==N}{#2}}%end of \pyrimidinev macro
+\def\pyrimidinevi{\@ifnextchar[{\@pyrimidinevi[@}{\@pyrimidinevi[r]}}
+\def\@pyrimidinevi[#1]#2{%
+\iforigpt \typeout{command `pyrimidinevi' %
+ is based on `sixheterovi'.}\fi%
+\sixheterovi[#1]{1==N;3==N}{#2}}%end of \pyrimidinevi macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\pyridazinev}
+% \begin{macro}{\pyridazinevi}
+% \begin{macrocode}
+\def\pyridazinev{\@ifnextchar[{\@pyridazinev[@}{\@pyridazinev[r]}}
+\def\@pyridazinev[#1]#2{%
+\iforigpt \typeout{command `pyridazinev' %
+ is based on `sixheterov'.}\fi%
+\sixheterov[#1]{1==N;2==N}{#2}}%end of \pyridazinev macro
+\def\pyridazinevi{\@ifnextchar[{\@pyridazinevi[@}{\@pyridazinevi[r]}}
+\def\@pyridazinevi[#1]#2{%
+\iforigpt \typeout{command `pyridazinev' %
+ is based on `sixheterovi'.}\fi%
+\sixheterovi[#1]{1==N;2==N}{#2}}%end of \pyridazinevi macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\triazinev}
+% \begin{macro}{\triazinevi}
+% \begin{macrocode}
+\def\triazinev{\@ifnextchar[{\@triazinev[@}{\@triazinev[r]}}
+\def\@triazinev[#1]#2{%
+\iforigpt \typeout{command `triazinev' %
+ is based on `sixheterov'.}\fi%
+\sixheterov[#1]{1==N;3==N;5==N}{#2}}%end of \triazinev macro
+\def\triazinevi{\@ifnextchar[{\@triazinevi[@}{\@triazinevi[r]}}
+\def\@triazinevi[#1]#2{%
+\iforigpt \typeout{command `triazinevi' %
+ is based on `sixheterovi'.}\fi%
+\sixheterovi[#1]{1==N;3==N;5==N}{#2}}%end of \triazinevi macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \section{Five-membered heterocycles}
+% \subsection{Vertical type}
+%
+% The standard skeleton of a five-membered heterocycle
+% is selected to have the following locant numbers.
+%
+% \begin{verbatim}
+% **************************
+% * fivehetero derivatives *
+% * (vertical type) *
+% **************************
+% The following numbering is adopted in this macro.
+%
+% 4 _____ 3
+% | |
+% | |
+% 5 * * 2
+% *
+% 1 <===== the original point
+% \end{verbatim}
+%
+% The macro |\fiveheterov| has two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \fiveheterov(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `e' and a uppercase
+% character `A' or `B'.
+%
+% The |BONDLIST| argument contains one
+% character selected from a to e, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `A' represents an aromatic circle. The option
+% `$n+$' ($n=1$ to $5$) represents a plus charge on a hetero atom
+% at the $n$-position.
+% The option `$0+$' typesets a plus charge at the center of the ring.
+%
+% \begin{verbatim}
+% BONDLIST: list of inner double bonds
+%
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,1-double bond
+% A : aromatic circle
+% {n+} : plus at the n-nitrogen atom (n = 1 to 5)
+% {0+} : plus (or minus) at the center
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+%
+% ATOMLIST: list of heteroatoms (max 5 atoms)
+%
+% for n = 1 to 5
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 5
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges may be regarded as both fused and non-fused
+% positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a, b, c, d, or e)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \fiveheterov{1==N}{1==H;2==F}
+% \fiveheterov[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \fiveheterov[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl}
+% \end{verbatim}
+%
+% The definition of |\fiveheterov| uses a picture environment and
+% consists of the same unit processes as shown in |\sixheterov|:
+% \begin{enumerate}
+% \item treatment of atom list,
+% \item placing outer skeletons,
+% \item placing inner double bonds,
+% \item setting hetero atoms, and
+% \item placing substituents by using |\setsixringv| partially.
+% \end{enumerate}
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/10/31}{Add: fused and spiro rings}
+%
+% \begin{macro}{\fiveheterov}
+% \begin{macro}{\@five@heterov}
+% \begin{macro}{\@five@@heterov}
+% \begin{macro}{\@fiveheterov}
+% \begin{macrocode}
+\def\fiveheterov{\@ifnextchar({\@five@heterov(@}{\@five@heterov(@)}}
+\def\@five@heterov(#1){\@ifnextchar[{\@five@@heterov(#1)[@}%
+{\@five@@heterov(#1)[@]}}
+\def\@five@@heterov(#1)[#2]#3#4{\@ifnextchar[%
+{\@fiveheterov(#1)[#2]{#3}{#4}[@}%
+{\@fiveheterov(#1)[#2]{#3}{#4}[@]}}
+\def\@fiveheterov(#1)[#2]#3#4[#5]{%
+\iniatom\iniflag%initialize
+% %%%%%%%%%%%%%
+% % atom list %
+% %%%%%%%%%%%%%
+\test@vertix@sixv{#3}{d}{c}{b}{f}{e}{a}%
+% \end{macrocode}
+%
+% \changes{v3.01}{2002/4/30}{Replaced by \cs{ShiftPicEnv}}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % adustment of subs positions %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\@reset@ylsw%
+\ylposition{#4}{5}{1}{5}{-1}% % for 1 to 3
+\ylposition{#4}{10}{4}{7}{-1}% % for 4 to 5
+\begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(800,880)(-\shiftii,-\shifti){fiveheterov}%2002/4/30 by S. Fujita
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+{\resetbdsw%
+\@bond@@omit{#5}%
+\set@skel@bond{#1}{a}{c}% bond between 1 and 2 \@aaa -> \skbondc etc
+\set@skel@bond{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc
+\set@skel@longbond{#1}{c}{skbondhoriz}%
+ % bond between 3 and 4 \@ccc -> \skbondhoriz etc
+\set@skel@bond{#1}{d}{e}% bond between 4 and 5 \@ddd -> \skbonde etc
+\set@skel@bond{#1}{e}{d}% bond between 5 and 1 \@eee -> \skbondd etc
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r%
+\else\if\member a\relax \bondc%
+\else\if\member b\relax \bondb%
+\else\if\member c\relax \bondhoriz%
+\else\if\member d\relax \bonde%
+\else\if\member e\relax \bondd%
+\else\if\member A\relax%
+ \Put@oCircle(0,173){180}%aromatic circle
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+% % inner bond attachment %
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+\else
+ \expandafter\twoCH@@R\member//%
+ \set@fusionadd@fivev
+\fi\fi\fi\fi\fi\fi\fi}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%
+% % setting heteroatoms %
+% %%%%%%%%%%%%%%%%%%%%%%%
+\set@hetatom@sixv{#3}{5}{1}{5}{-1}% % for 1 to 3
+\set@hetatom@sixv{#3}{10}{4}{7}{-1}% % for 4 to 5
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\setsixringv{#4}{5}{1}{5}{-1}% % for 1 to 3
+\setsixringv{#4}{10}{4}{7}{-1}% % for 4 to 5
+\end{ShiftPicEnv}\iniatom\iniflag}% %end of \fiveheterov macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Inverse vertical type}
+%
+% The standard skeleton of a five-membered heterocycle of inverse type
+% is selected to have the following locant numbers.
+%
+% \begin{verbatim}
+% *****************************
+% * fivehetero derivatives *
+% * (vertical type, inverse) *
+% *****************************
+% The following numbering is adopted in this macro.
+%
+% 1
+% *
+% 6 * * 2
+% | |
+% |_____|
+% 4 3
+% *
+% (0,0) <===== the original point
+% \end{verbatim}
+%
+% The macro |\fiveheterovi| has two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \fiveheterovi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `f' and a uppercase
+% character `A' or `B'.
+%
+% The |BONDLIST| argument contains one
+% character selected from a to e, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `A' represents an aromatic circle. The option
+% `$n+$' ($n=1$ to $5$) represents a plus charge on a hetero atom
+% at the $n$-position.
+% The option `$0+$' typesets a plus charge at the center of the ring.
+%
+% \begin{verbatim}
+% BONDLIST: list of inner double bonds
+%
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,1-double bond
+% A : aromatic circle
+% {n+} : plus at the n-nitrogen atom (n = 1 to 5)
+% {0+} : plus (or minus) at the center
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 5 atoms)
+%
+% for n = 1 to 5
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 5
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges may be regarded as both fused and non-fused
+% positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a, b, c, d, or e)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \fiveheterovi{1==N}{1==H;2==F}
+% \fiveheterovi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \fiveheterovi[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl}
+% \end{verbatim}
+%
+% The definition of |\fiveheterovi| uses a picture environment and
+% consists of the same unit processes as shown in |\sixheterov|:
+% \begin{enumerate}
+% \item treatment of atom list,
+% \item placing outer skeletons,
+% \item placing inner double bonds,
+% \item setting hetero atoms, and
+% \item placing substituents by using |\setsixringv| partially.
+% \end{enumerate}
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+%
+% \begin{macro}{\fiveheterovi}
+% \begin{macro}{\@five@heterovi}
+% \begin{macro}{\@five@@heterovi}
+% \begin{macro}{\@fiveheterovi}
+% \begin{macrocode}
+\def\fiveheterovi{\@ifnextchar({\@five@heterovi(@}{\@five@heterovi(@)}}
+\def\@five@heterovi(#1){\@ifnextchar[{\@five@@heterovi(#1)[@}%
+{\@five@@heterovi(#1)[@]}}
+\def\@five@@heterovi(#1)[#2]#3#4{\@ifnextchar[%
+{\@fiveheterovi(#1)[#2]{#3}{#4}[@}%
+{\@fiveheterovi(#1)[#2]{#3}{#4}[@]}}
+\def\@fiveheterovi(#1)[#2]#3#4[#5]{%
+\iniatom\iniflag%initialize
+% \end{macrocode}
+%
+% \changes{v3.01}{2002/4/30}{Replaced by \cs{ShiftPicEnv}}
+% \begin{macrocode}
+% %%%%%%%%%%%%%
+% % atom list %
+% %%%%%%%%%%%%%
+\test@vertix@sixv{#3}{a}{b}{c}{e}{f}{d}% d -- dummy
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % adustment of subs positions %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\@reset@ylsw%
+\ylposition{#4}{0}{0}{4}{0}% % for 1 to 3
+\ylposition{#4}{1}{4}{7}{0}% % for 4 to 5
+\begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(800,880)(-\shiftii,-\shifti){fiveheterov}%2002/4/30 by S. Fujita
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+{\resetbdsw%
+\@bond@@omit{#5}%
+\set@skel@bond{#1}{a}{a}% bond between 1 and 2 \@aaa -> \skbonda etc
+\set@skel@bond{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc
+\set@skel@longbond{#1}{c}{skbondhorizi}%
+ % bond between 3 and 4 \@ccc -> \skbondhorizi etc
+\set@skel@bond{#1}{d}{e}% bond between 4 and 5 \@ddd -> \skbonde etc
+\set@skel@bond{#1}{e}{f}% bond between 5 and 6 \@eee -> \skbondf etc
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r%
+\else\if\member a\relax \bonda%
+\else\if\member b\relax \bondb%
+\else\if\member c\relax \bondhorizi%
+\else\if\member d\relax \bonde%
+\else\if\member e\relax \bondf%
+\else\if\member A\relax%
+ \Put@oCircle(0,233){180}%aromatic circle
+\else
+ \expandafter\twoCH@@R\member//%
+ \set@fusionadd@fivevi
+\fi\fi\fi\fi\fi\fi\fi}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%
+% % setting heteroatoms %
+% %%%%%%%%%%%%%%%%%%%%%%%
+\set@hetatom@sixv{#3}{0}{0}{4}{0}% % for 1 to 3
+\set@hetatom@sixv{#3}{1}{4}{7}{0}% % for 4 to 5
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\setsixringv{#4}{0}{0}{4}{0}% % for 1 to 3
+\setsixringv{#4}{1}{4}{7}{0}% % for 4 to 5
+\end{ShiftPicEnv}\iniatom\iniflag}% %end of \fiveheterovi macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Pyrrole derivatives of vertical type}
+%
+% The macro |\fiveheterov| can be used in the
+% form of a fixed |ATOMLIST|. Hence, the resulting commands for
+% drawing a five-membered heterocyle with one or more nitrogen atoms
+% have an argument |SUBSLIST| as well as an optional argument |BONDLIST|.
+%
+% \begin{verbatim}
+% ***********************************
+% * pyrrole derivatives and others *
+% * (vertical type) *
+% ***********************************
+%
+% \pyrrolev[BONDLIST]{SUBSLIST}
+% \pyrazolev[BONDLIST]{SUBSLIST}
+% \imidazolev[BONDLIST]{SUBSLIST}
+% \isoxazolev[BONDLIST]{SUBSLIST}
+% \oxazolev[BONDLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one
+% character selected from a to e, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option
+% `$n+$' ($n=1$ to $5$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+% BONDLIST: list of inner double bonds
+%
+% none : mother nucleus
+% [] : fully saturated form
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,1-double bond
+% {n+} : plus at the n-nitrogen atom (n = 1 to 5)
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 5
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \pyrrolev{1==H;2==F}
+% \pyrrolev[]{1==H;2==F}
+% \imidazolev[c]{1==Cl;4==F;2==CH$_{3}$}
+% \isoxazolev[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl}
+% \end{verbatim}
+%
+% \begin{macro}{\pyrrolev}
+% \begin{macro}{\pyrazolev}
+% \begin{macro}{\imidazolev}
+% \begin{macro}{\isoxazolev}
+% \begin{macro}{\oxazolev}
+% \begin{macrocode}
+\def\pyrrolev{\@ifnextchar[{\@pyrrolev[@}{\@pyrrolev[bd]}}
+\def\@pyrrolev[#1]#2{%
+\iforigpt \typeout{command `pyrrolev' %
+ is based on `fiveheterov'.}\fi%
+\fiveheterov[#1]{1==N}{#2}}
+\def\pyrazolev{\@ifnextchar[{\@pyrazolev[@}{\@pyrazolev[bd]}}
+\def\@pyrazolev[#1]#2{%
+\iforigpt \typeout{command `pyrazolev' %
+ is based on `fiveheterov'.}\fi%
+\fiveheterov[#1]{1==N;2==N}{#2}}
+\def\imidazolev{\@ifnextchar[{\@imidazolev[@}{\@imidazolev[bd]}}
+\def\@imidazolev[#1]#2{%
+\iforigpt \typeout{command `imidazolev' %
+ is based on `fiveheterov'.}\fi%
+\fiveheterov[#1]{1==N;3==N}{#2}}
+\def\isoxazolev{\@ifnextchar[{\@isoxazolev[@}{\@isoxazolev[bd]}}
+\def\@isoxazolev[#1]#2{%
+\iforigpt \typeout{command `isoxazolev' %
+ is based on `fiveheterov'.}\fi%
+\fiveheterov[#1]{1==O;2==N}{#2}}
+\def\oxazolev{\@ifnextchar[{\@oxazolev[@}{\@oxazolev[bd]}}
+\def\@oxazolev[#1]#2{%
+\iforigpt \typeout{command `oxazolev' %
+ is based on `fiveheterov'.}\fi%
+\fiveheterov[#1]{1==O;3==N}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\furanv}
+% \begin{macro}{\thiophenev}
+% \begin{macrocode}
+\def\furanv{\@ifnextchar[{\@furanv[@}{\@furanv[bd]}}
+\def\@furanv[#1]#2{%
+\iforigpt \typeout{command `furanv' %
+ is based on `fiveheterov'.}\fi%
+\fiveheterov[#1]{1==O}{#2}}
+\def\thiophenev{\@ifnextchar[{\@thiophenev[@}{\@thiophenev[bd]}}
+\def\@thiophenev[#1]#2{%
+\iforigpt \typeout{command `thiophenev' %
+ is based on `fiveheterov'.}\fi%
+\fiveheterov[#1]{1==S}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Pyrrole derivatives of inverse vertical type}
+%
+% The macro |\fiveheterovi| can be used in the
+% form of a fixed |ATOMLIST|. Hence, the resulting commands for
+% drawing a five-membered heterocyle with one or more nitrogen atoms
+% have an argument |SUBSLIST| as well as an optional argument |BONDLIST|.
+%
+% \begin{verbatim}
+% ***********************************
+% * pyrrole derivatives and others *
+% * (vertical type, inverse) *
+% ***********************************
+%
+% \pyrrolevi[BONDLIST]{SUBSLIST}
+% \pyrazolevi[BONDLIST]{SUBSLIST}
+% \imidazolevi[BONDLIST]{SUBSLIST}
+% \isoxazolevi[BONDLIST]{SUBSLIST}
+% \oxazolevi[BONDLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one
+% character selected from a to e, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option
+% `$n+$' ($n=1$ to $5$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+% BONDLIST: list of inner double bonds
+%
+% none : mother nucleus
+% [] : fully saturated form
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,1-double bond
+% {n+} : plus at the n-nitrogen atom (n = 1 to 5)
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents (max 6 substitution positions)
+%
+% for n = 1 to 5
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \pyrrolevi{1==H;2==F}
+% \pyrrolevi[]{1==H;2==F}
+% \imidazolevi[c]{1==Cl;4==F;2==CH$_{3}$}
+% \isoxazolevi[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl}
+% \end{verbatim}
+%
+% \begin{macro}{\pyrrolevi}
+% \begin{macro}{\pyrazolevi}
+% \begin{macro}{\imidazolevi}
+% \begin{macro}{\isoxazolevi}
+% \begin{macro}{\oxazolevi}
+% \begin{macrocode}
+\def\pyrrolevi{\@ifnextchar[{\@pyrrolevi[@}{\@pyrrolevi[bd]}}
+\def\@pyrrolevi[#1]#2{%
+\iforigpt \typeout{command `pyrrolevi' %
+ is based on `fiveheterovi'.}\fi%
+\fiveheterovi[#1]{1==N}{#2}}
+\def\pyrazolevi{\@ifnextchar[{\@pyrazolevi[@}{\@pyrazolevi[bd]}}
+\def\@pyrazolevi[#1]#2{%
+\iforigpt \typeout{command `pyrazolevi' %
+ is based on `fiveheterovi'.}\fi%
+\fiveheterovi[#1]{1==N;2==N}{#2}}
+\def\imidazolevi{\@ifnextchar[{\@imidazolevi[@}{\@imidazolevi[bd]}}
+\def\@imidazolevi[#1]#2{%
+\iforigpt \typeout{command `imidazolevi' %
+ is based on `fiveheterovi'.}\fi%
+\fiveheterovi[#1]{1==N;3==N}{#2}}
+\def\isoxazolevi{\@ifnextchar[{\@isoxazolevi[@}{\@isoxazolevi[bd]}}
+\def\@isoxazolevi[#1]#2{%
+\iforigpt \typeout{command `isoxazolevi' %
+ is based on `fiveheterovi'.}\fi%
+\fiveheterovi[#1]{1==O;2==N}{#2}}
+\def\oxazolevi{\@ifnextchar[{\@oxazolevi[@}{\@oxazolevi[bd]}}
+\def\@oxazolevi[#1]#2{%
+\iforigpt \typeout{command `oxazolevi' %
+ is based on `fiveheterovi'.}\fi%
+\fiveheterovi[#1]{1==O;3==N}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\furanvi}
+% \begin{macro}{\thiophenevi}
+% \begin{macrocode}
+\def\furanvi{\@ifnextchar[{\@furanvi[@}{\@furanvi[bd]}}
+\def\@furanvi[#1]#2{%
+\iforigpt \typeout{command `furanvi' %
+ is based on `fiveheterovi'.}\fi%
+\fiveheterovi[#1]{1==O}{#2}}
+\def\thiophenevi{\@ifnextchar[{\@thiophenevi[@}{\@thiophenevi[bd]}}
+\def\@thiophenevi[#1]#2{%
+\iforigpt \typeout{command `thiophenevi' %
+ is based on `fiveheterovi'.}\fi%
+\fiveheterovi[#1]{1==S}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \section{Six-to-six fused heterocyles}
+% \subsection{Vertical type}
+%
+% The standard skeleton of a six-to-six fused heterocycle is selected
+% to have the following locant numbers.
+%
+% \begin{verbatim}
+% **************************
+% * decahetero derivatives *
+% * (vertical type) *
+% **************************
+% The following numbering is adopted in this macro.
+%
+% 8 (10)1
+% * 8a *
+% 7 * * * * 2
+% | | |
+% | | |
+% 6 * * * * 3
+% * 4a *
+% 5 (9) 4
+% ^
+% |
+% the original point
+% \end{verbatim}
+%
+% The macro |\decaheterov| has two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \decaheterov(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `k' and a uppercase
+% character `A' or `B'.
+%
+% The |BONDLIST| argument contains one
+% character selected from a to k, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `A' and `B' represent aromatic circles. The option
+% `$n+$' ($n=1$ to $10$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+% BONDLIST: list of bonds
+%
+% none or r : decahetero (right-handed)
+% l : decahetero (left-handed)
+% [] : fully saturated form
+% a : 1,2-double bond b : 2,3-double bond
+% c : 4,3-double bond d : 4,4a-double bond
+% e : 4a,5-double bond f : 5,6-double bond
+% g : 6,7-double bond h : 7,8-double bond
+% i : 8,8a-double bond j : 1,8a-double bond
+% k : 4a,8a-double bond
+% A : aromatic circle B : aromatic circle
+% {n+} : plus at the n-nitrogen atom (n = 1 to 10)
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 10 atoms)
+%
+% for n = 1 to 8
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position
+% e.g. 1==N for N at 1-position
+% na : Hetero atom at 4a or 8b (n=4 or 8)
+% e.g. 4a==N (or 9==N) for N at 4a-position
+% 8a==N (or {{10}}==N) for N at 8a-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 8
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+%
+% for 9 (4a position) and 10 (8a position)
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges may be regarded as both fused and non-fused
+% positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a to k: see BONDLIST)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \decaheterov{1==N}{1==Cl;2==F}
+% \decaheterov[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \decaheterov[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl}
+% \end{verbatim}
+%
+% The definition of |\decaheterov| uses a picture environment and
+% consists of the same unit processes as shown in |\sixheterov|:
+% \begin{enumerate}
+% \item treatment of atom list,
+% \item placing outer skeletons,
+% \item placing inner double bonds,
+% \item setting hetero atoms, and
+% \item placing substituents by using |\setsixringv| several times.
+% \end{enumerate}
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/12/25}{Spiro rings and fused rings
+% \cs{test@vertix@sixv}, \cs{test@vertix@decav}, etc.}
+% \changes{v4.03b}{2006/9/5}{bug fix \cs{ggg} to \cs{gggA} etc. in \cs{test@vertix@sixv}}
+%
+% \begin{macro}{\decaheterov}
+% \begin{macro}{\@deca@heterov}
+% \begin{macro}{\@deca@@heterov}
+% \begin{macro}{\@decaheterov}
+% \begin{macrocode}
+\def\decaheterov{\@ifnextchar({\@deca@heterov(@}{\@deca@heterov(@)}}
+\def\@deca@heterov(#1){\@ifnextchar[{\@deca@@heterov(#1)[@}%
+{\@deca@@heterov(#1)[@]}}
+\def\@deca@@heterov(#1)[#2]#3#4{\@ifnextchar[%
+{\@decaheterov(#1)[#2]{#3}{#4}[@}%
+{\@decaheterov(#1)[#2]{#3}{#4}[@]}}%
+\def\@decaheterov(#1)[#2]#3#4[#5]{%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+% % treatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniflag\iniatom%
+\test@vertix@sixv{#3}{a}{b}{c}{d}{e}{f}%
+\test@vertix@decav{#3}{g}{h}{i}{j}{@}{@}%
+% %%%%%%%%%%%%%%%%%%%%%%%
+% % adjustment for (yl) %
+% %%%%%%%%%%%%%%%%%%%%%%%
+\@reset@ylsw%
+\ylhetposition{#4}{0}{0}{5}{0}% %substituents on 1 to 4
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-342}\def\@@yli{0}\fi
+\else
+\ylhetposition{#4}{-1}{3}{7}{0}% %substituents on 5 to 7
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\else
+\ylhetposition{#4}{-7}{0}{2}{0}% %substituent on 8
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\else
+{%
+\clipdetection%
+\@clipfusefalse \if@iclip \@clipfusetrue \fi%
+\ylatombondposition{#4}{-8}{7}% %9 %for 4a position
+}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-171}\def\@@yli{-103}\fi
+\else
+{%
+\clipdetection%
+\@clipfusefalse \if@jclip \@clipfusetrue \fi%
+\ylatombondposition{#4}{-9}{1}% %10 for 8a position
+}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-171}\def\@@yli{-303}\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(1200,880)(-\shiftii,-\shifti){decaheterov}%2002/4/30 by S. Fujita
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+\begingroup
+\resetbdsw%
+\@bond@@omit{#5}%
+{\let\fff=\jjj \let\eee=\iii%
+\Put@Direct(342,0){\set@skel@bond{#1}{a}{a}}%
+ % bond between 1 and 2 \@aaa -> \skbonda etc
+\Put@Direct(342,0){\set@skel@bond{#1}{b}{b}}%
+ % bond between 2 and 3 \@bbb -> \skbondb etc
+\Put@Direct(342,0){\set@skel@bond{#1}{c}{c}}%
+ % bond between 3 and 4 \@ccc -> \skbondc etc
+\Put@Direct(342,0){\set@skel@bond{#1}{d}{d}}%
+ % bond between 4 and 4a \@ddd -> \skbondd etc
+\Put@Direct(342,0){\set@skel@bond{#1}{k}{e}}%
+ % bond between 4a and 8a \@kkk -> \skbonde etc
+\Put@Direct(342,0){\set@skel@bond{#1}{j}{f}}%
+ % bond between 8a and 1 \@jjj -> \skbondf etc
+}%
+{\let\aaa=\hhh \let\ddd=\eee \let\eee=\fff \let\fff=\gggA%
+ \let\ccc=\iii \let\bbb=\jjj%
+\set@skel@bond{#1}{i}{a}% bond between 8 and 8a \@iii -> \skbonda etc
+\set@skel@bond{#1}{e}{c}% bond between 5 and 4a \@eee -> \skbondc etc
+\set@skel@bond{#1}{f}{d}% bond between 5 and 6 \@fff -> \skbondd etc
+\set@skel@bond{#1}{g}{e}% bond between 6 and 7 \@ggg -> \skbonde etc
+\set@skel@bond{#1}{h}{f}% bond between 7 and 8 \@hhh -> \skbondf etc
+}%
+\endgroup
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r\relax%
+{\let\fff=\jjj \let\eee=\iii%
+ \Put@Direct(342,0){\bonda}% bond between 1 and 2
+ \Put@Direct(342,0){\bondc}% bond between 3 and 4
+}%
+{\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA%
+ \let\ccc=\iii\let\bbb=\jjj%
+ \Put@Direct(0,0){\bondb}% bond between 8a and 4a
+ \Put@Direct(0,0){\bondf}% bond between 8 and 7
+ \Put@Direct(0,0){\bondd}% bond between 5 and 6
+}%
+\else\if\member l\relax%
+\else\if\member a\relax%
+ \Put@Direct(342,0){\bonda}% bond between 1 and 2
+\else\if\member b\relax
+ \Put@Direct(342,0){\bondb}% bond between 2 and 3
+\else\if\member c\relax
+ \Put@Direct(342,0){\bondc}% bond between 3 and 4
+\else\if\member d\relax%
+{\let\eee=\iii%
+ \Put@Direct(342,0){\bondd}% bond between 4 and 4a
+}%
+\else\if\member e\relax%
+{\let\ccc=\iii \let\ddd=\eee%
+ \Put@Direct(0,0){\bondc}% bond between 5 and 4a
+}%
+\else\if\member f\relax%
+{\let\ddd=\eee \let\eee=\fff%
+ \Put@Direct(0,0){\bondd}% bond between 5 and 6
+}%
+\else\if\member g\relax%
+{\let\eee=\fff \let\fff=\gggA%
+ \Put@Direct(0,0){\bonde}% bond between 6 and 7
+}%
+\else\if\member h\relax%
+{\let\aaa=\hhh \let\fff=\gggA%
+ \Put@Direct(0,0){\bondf}% bond between 8 and 7
+}%
+\else\if\member i\relax%
+{\let\aaa=\hhh \let\bbb=\jjj%
+ \Put@Direct(0,0){\bonda}% bond between 8 and 8a
+}%
+\else\if\member j\relax%
+{\let\fff=\jjj%
+ \Put@Direct(342,0){\bondf}% bond between 1 and 8a
+}%
+\else\if\member k\relax%
+{\let\ccc=\iii\let\bbb=\jjj%
+ \Put@Direct(0,0){\bondb}% bond between 8a and 4a
+}%
+\else\if\member K\relax%
+{\let\eee=\iii\let\fff=\jjj%
+ \Put@Direct(342,0){\bonde}% bond between 8a and 4a in the other ring
+}%
+\else\if\member A%left aromatic circle
+ \Put@oCircle(0,203){240}% %circle
+\else\if\member B%left aromatic circle
+ \Put@oCircle(342,203){240}% %circle
+\else
+ \expandafter\twoCH@@R\member//%
+ \def\aax{8a}\def\aay{4a}\def\aaz{10}%
+ \if\@@tmpa 1\relax% % plus charge etc.
+ \putratom{304}{282}{\@@tmpb}% % right type
+ \else\if\@@tmpa 2\relax%
+ \putratom{402}{253}{\@@tmpb}% % right type
+ \else\if\@@tmpa 3\relax%
+ \putratom{402}{120}{\@@tmpb}% % right type
+ \else\if\@@tmpa 4\relax%
+ \putratom{304}{68}{\@@tmpb}% % right type
+ \else\if\@@tmpa 5\relax%
+ \putratom{-38}{68}{\@@tmpb}% % right type
+ \else\if\@@tmpa 6\relax%
+ \putlatom{-60}{253}{\@@tmpb}% % left type
+ \else\if\@@tmpa 7\relax%
+ \putlatom{-60}{120}{\@@tmpb}% % left type
+ \else\if\@@tmpa 8\relax%
+ \putratom{-38}{282}{\@@tmpb}% % right type
+ \else\if\@@tmpa 9\relax%
+ \putratom{60}{120}{\@@tmpb}% % right type
+% \else\if\@@tmpa 10\relax%
+ \else\ifx\@@tmpa\aaz\relax%1998/10/17
+ \putratom{60}{253}{\@@tmpb}% % right type
+ \else\ifx\@@tmpa\aax\relax%
+ \putratom{60}{253}{\@@tmpb}% % right type
+ \else\ifx\@@tmpa\aay\relax%
+ \putratom{60}{120}{\@@tmpb}% % right type
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+% ***********************
+% * setting fused rings *
+% ***********************
+ \expandafter\twoCH@R\member//%
+ \set@fusion@decav
+\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+\fi\fi\fi\fi\fi\fi%
+}%
+% \end{macrocode}
+%
+% \changes{v2.00a}{2000/11/11}{The
+% \cs{iniflag} command is added to 5- and 8-substitution.}
+% \changes{v2.01}{2001/6/20}{The \cs{storeclipinfo} command is added.}
+% \changes{v4.03b}{2006/9/5}{The \cs{storeclipinfo} command, bugfixed}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms and spiro rings %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniflag
+\Put@Direct(342,0){\set@hetatom@sixv{#3}{0}{0}{5}{0}%
+% \if@aclip \global\@acliptrue\fi
+% \if@bclip \global\@bcliptrue\fi
+% \if@cclip \global\@ccliptrue\fi
+% \if@clip \global\@cliptrue\fi
+\storeclipinfo%2001/06/20
+}% %substituents on 1 to 4
+{%
+%\developclipinfo%2001/06/20 %2006/9/5deleted
+\Put@Direct(0,0){\iniflag%2000/11/11 by S. Fujita
+ \set@hetatom@sixv{#3}{-1}{3}{7}{0}%
+% \@gclipfalse \if@fclip \global\@gcliptrue \fi%
+% \@fclipfalse \if@eclip \global\@fcliptrue \fi%
+% \@eclipfalse \if@clip \global\@ecliptrue \fi
+%
+ \@gclipfalse \if@fclip \@gcliptrue \fi%
+ \@fclipfalse \if@eclip \@fcliptrue \fi%
+ \@eclipfalse \if@clip \@ecliptrue \fi
+ \@clipfalse%2006/9/5added
+%
+\storeclipinfo%2001/06/20
+}%substituents on 5 to 7
+}{%
+%\developclipinfo%2001/06/20 2006/9/5deleted
+\Put@Direct(0,0){\iniflag%2000/11/11 by S. Fujita
+ \set@hetatom@sixv{#3}{-7}{0}{2}{0}%
+%% \@hclipfalse \if@aclip \global\@hcliptrue \fi
+ \@hclipfalse \if@aclip \@hcliptrue \fi
+ \@aclipfalse%2006/9/5added
+\storeclipinfo%%2001/06/20
+%%====\clipinfo====%%%2006/9/5test
+}%%substituent on 8
+}{%
+%\developclipinfo%%2001/06/20 2006/9/5deleted
+\Put@Direct(0,0){\set@vrtx@fuse{#3}%
+% \if@iclip \global\@icliptrue \fi
+% \if@jclip \global\@jcliptrue \fi
+\storeclipinfo%%2001/06/20
+}% fused positions
+}%
+%====\clipinfo====%%2006/9/5test
+\developclipinfo%%2001/06/20
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents and exocyclic bonds %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\global\drawsamesubsttrue%2002/05/30 warning on
+{%2006/9/5bugfix
+\Put@Direct(342,0){\setsixringv{#4}{0}{0}{5}{0}}% %substituents on 1 to 4
+}%
+\global\drawsamesubstfalse%2002/05/30 warning off
+{%
+ \@clipfalse \if@eclip \@cliptrue \fi% %substituents on 5 to 7
+ \@eclipfalse \if@fclip \@ecliptrue \fi%
+ \@fclipfalse \if@gclip \@fcliptrue \fi%
+\Put@Direct(0,0){\setsixringv{#4}{-1}{3}{7}{0}}%
+}%
+{\@aclipfalse \if@hclip \@acliptrue \fi% %substituent on 8
+\Put@Direct(0,0){\setsixringv{#4}{-7}{0}{2}{0}}%
+}%
+{\@clipfusefalse \if@iclip \@clipfusetrue \fi%
+ \Put@Direct(171,103){\setatombond{#4}{-8}{7}}% %9 %for 4a position
+}%
+{\@clipfusefalse \if@jclip \@clipfusetrue \fi%
+ \Put@Direct(171,303){\setatombond{#4}{-9}{1}}% %10 for 8a position
+}%
+\end{ShiftPicEnvB}\iniatom\iniflag}% %end of \decaheterov macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The |\clipdetection| command is used for the detection of
+% clippings for a six-six ring. In particular, the clippings
+% at the fused positions are detected in the |\decaheterov| command,
+% where the data are applied to the command
+% |\ylatombondposition| (chemstr.dtx).
+% \changes{v1.02}{1998/10/16}{Newly added command}
+% \changes{v2.01}{2001/6/20}{The
+% \cs{storeclipinfo} command is added.}
+%
+% \begin{macro}{\clipdetection}
+% \begin{macrocode}
+\def\clipdetection{%
+% hetero atom on 1
+\ifx\aaa\empty\else%
+ \@acliptrue%
+\fi%
+% hetero atom on 2
+\ifx\bbb\empty\else%
+ \@bcliptrue%
+\fi%
+% hetero atom on 3
+\ifx\ccc\empty\else%
+ \@ccliptrue%
+\fi%
+% hetero atom on 4
+\ifx\ddd\empty\else%
+ \@cliptrue%
+\fi%
+% hetero atom on 4a
+{\let\eee=\iii%
+\ifx\eee\empty\else%
+% \global\@icliptrue%
+ \@icliptrue%
+ \storeclipinfo%2001/06/20
+\fi%
+}%
+\developclipinfo%2001/06/20
+% hetero atom on 8a
+{\let\fff=\jjj%
+\ifx\fff\empty\else%
+% \global\@jcliptrue%
+ \@jcliptrue%
+ \storeclipinfo%2001/06/20
+\fi%
+}%
+\developclipinfo%2001/06/20
+% hetero atom on 5
+{\let\ddd=\eee%
+\ifx\ddd\empty\else
+% \global\@ecliptrue%
+ \@ecliptrue%
+ \storeclipinfo%2001/06/20
+\fi%
+}%
+\developclipinfo%2001/06/20
+% hetero atom on 6
+{\let\eee=\fff%
+\ifx\eee\empty\else%
+% \global\@fcliptrue%
+ \@fcliptrue%
+ \storeclipinfo%2001/06/20
+\fi%
+}%
+\developclipinfo%2001/06/20
+% hetero atom on 7
+{\let\fff=\gggA%
+\ifx\fff\empty\else%
+% \global\@gcliptrue%
+ \@gcliptrue%
+ \storeclipinfo%2001/06/20
+\fi%
+}%
+\developclipinfo%2001/06/20
+% hetero atom on 8
+{\let\aaa=\hhh%
+\ifx\aaa\empty\else%
+% \global\@hcliptrue%
+ \@hcliptrue%
+ \storeclipinfo%2001/06/20
+\fi%
+}%
+\developclipinfo%2001/06/20
+}% end \clipdetection
+% \end{macrocode}
+% \end{macro}
+%
+% The command |\ylhetposition| is used in the |\decaheterov| command,
+% giving the sift values for drawing a structure as a substituent.
+% \changes{v1.02}{1998/10/16}{Newly added command}
+% \changes{v5.01}{2012/03/25}{Bug fixed}
+%
+% \begin{macro}{\ylhetposition}
+% \begin{macrocode}
+\def\ylhetposition#1#2#3#4#5{%
+\@@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
+\ifnum#5<0\relax%
+\@tmpaa=-\@tmpa\relax \advance\@tmpaa by#2\relax%
+\else\@tmpaa=\@tmpa\relax \advance\@tmpaa by#2\relax\fi
+\ifnum\@tmpaa>#3\relax%
+\ifnum\@tmpaa<#4\relax%
+\ifcase\@tmpaa%0 omit
+% \end{macrocode}
+%
+% The flags |\@lyatrue| etc are not used in a revised edition.
+%
+% \begin{macrocode}
+ \or
+ \ifx\aaa\empty
+ \ifx\hhh\empty% aaa and hhh are absent
+ \gdef\@ylii{0}\gdef\@yli{-406}\global\@ylswtrue%\@ylatrue% subst. on 1
+ \else% hhh is present
+ \def\@ylii{0}\def\@yli{-442}\@ylswtrue%\@ylatrue% subst. on 1
+ \fi
+ \else%aaa is present
+ \def\@ylii{0}\def\@yli{-442}\@ylswtrue%\@ylatrue% subst. on 1
+ \fi
+ \or\ifx\bbb\empty
+ \def\@ylii{-171}\def\@yli{-303}\@ylswtrue%\@ylbtrue% subst. on 2
+% \def\@ylii{-513}\def\@yli{-303}\@ylswtrue%\@ylbtrue% subst. on 2
+ \else
+ \def\@ylii{-213}\def\@yli{-327}\@ylswtrue%\@ylbtrue% subst. on 2
+% \def\@ylii{-555}\def\@yli{-327}\@ylswtrue%\@ylbtrue% subst. on 2
+ \fi
+ \or\ifx\ccc\empty
+ \def\@ylii{-171}\def\@yli{-103}\@ylswtrue%\@ylctrue% subst. on 3
+% \def\@ylii{-513}\def\@yli{-103}\@ylswtrue%\@ylctrue% subst. on 3
+ \else
+ \def\@ylii{-213}\def\@yli{-79}\@ylswtrue%\@ylctrue% subst. on 3
+% \def\@ylii{-555}\def\@yli{-79}\@ylswtrue%\@ylctrue% subst. on 3
+ \fi
+ \or\ifx\ddd\empty
+ \ifx\eee\empty% ddd and eee are absent
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%\@yldtrue% subst. on 4
+ \else% eee present
+ \gdef\@ylii{0}\gdef\@yli{36}\global\@ylswtrue%\@yldtrue% subst. on 4
+ \fi
+ \else% ddd present
+ \gdef\@ylii{0}\gdef\@yli{36}\global\@ylswtrue%\@yldtrue% subst. on 4
+ \fi
+ \or
+ \ifx\eee\empty
+ \ifx\iii\empty
+ \ifx\fff\empty% eee, iii and fff are absent
+% \def\@ylii{173}\def\@yli{-103}\@ylswtrue%\@yletrue% subst. on 5
+ \def\@ylii{171}\def\@yli{-103}\@ylswtrue%\@yletrue% subst. on 5 refined 2013/03/25
+ \else% fff is present
+ \def\@ylii{213}\def\@yli{-79}\@ylswtrue%\@yletrue% subst. on 5
+ \fi
+% \else% iii is present; fused position => no action here
+% \def\@ylii{0}\def\@yli{-36}\@ylswtrue%\@yletrue% subst. on 5
+ \fi
+ \else% eee is present
+% \def\@ylii{213}\def\@yli{-79}\@ylswtrue%\@yletrue% subst. on 5
+ \def\@ylii{171}\def\@yli{-103}\@ylswtrue%\@yletrue% subst. on 5 bug fix 2013/03/25
+ \fi
+ \or
+ \ifx\fff\empty
+ \ifx\jjj\empty
+ \ifx\gggA\empty% fff, jjj, and ggg are absent
+% \def\@ylii{173}\def\@yli{-303}\@ylswtrue%\@ylftrue% subst. on 6
+ \def\@ylii{171}\def\@yli{-303}\@ylswtrue%\@ylftrue% subst. on 6 refined 2013/03/25
+ \else%ggg is present
+ \def\@ylii{213}\def\@yli{-327}\@ylswtrue%\@ylftrue% subst. on 6
+ \fi
+% \else%jjj is present; fused position => no action here
+% \def\@ylii{213}\def\@yli{-327}\@ylswtrue%\@ylftrue% subst. on 6
+ \fi
+ \else%fff is present
+ \def\@ylii{213}\def\@yli{-327}\@ylswtrue%\@ylftrue% subst. on 6
+ \fi%
+\fi%end of ifcase
+\fi\fi\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Inverse vertical type}
+%
+% The standard skeleton of a six-to-six fused heterocycle is selected
+% to have the following locant numbers.
+%
+% \begin{verbatim}
+% **********************************
+% * decahetero derivatives *
+% * (vertical type, inverse type) *
+% **********************************
+% The following numbering is adopted in this macro.
+%
+% 5 (9) 4
+% * 4a *
+% 6 * * * * 3
+% | | |
+% | | |
+% 7 * * * * 2
+% * 8a *
+% 8 (10)1
+% ^
+% |
+% the original point
+% \end{verbatim}
+%
+% The macro |\decaheterovi| has two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \decaheterovi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `k' and a uppercase
+% character `A' or `B'.
+%
+% The |BONDLIST| argument contains one
+% character selected from a to k, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The options `A' and `B' represent aromatic circles in two rings.
+% The option `$n+$' ($n=1$ to $10$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+% BONDLIST: list of bonds
+%
+% none or r : decahetero (right-handed)
+% l : decahetero (left-handed)
+% [] : fully saturated form
+% a : 1,2-double bond b : 2,3-double bond
+% c : 4,3-double bond d : 4,4a-double bond
+% e : 4a,5-double bond f : 5,6-double bond
+% g : 6,7-double bond h : 7,8-double bond
+% i : 8,8a-double bond j : 1,8a-double bond
+% k : 4a,8a-double bond
+% K : 4a,8a-double bond in the other ring
+% A : aromatic circle B : aromatic circle
+% {n+} : plus at the n-nitrogen atom (n = 1 to 10)
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 10 atoms)
+%
+% for n = 1 to 8
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position
+% e.g. 1==N for N at 1-position
+% na : Hetero atom at 4a or 8b (n=4 or 8)
+% e.g. 4a==N (or 9==N) for N at 4a-position
+% 8a==N (or {{10}}==N) for N at 8a-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 8
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+%
+% for 9 (4a position) and 10 (8a position)
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges may be regarded as both fused and non-fused
+% positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a to k: see BONDLIST)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \decaheterovi{1==N}{1==Cl;2==F}
+% \decaheterovi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \decaheterovi[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl}
+% \end{verbatim}
+%
+% The definition of |\decaheterovi| uses a picture environment and
+% consists of the same unit processes as shown in |\sixheterovi|:
+% \begin{enumerate}
+% \item treatment of atom list,
+% \item placing outer skeletons,
+% \item placing inner double bonds,
+% \item setting hetero atoms, and
+% \item placing substituents by using |\setsixringv| several times.
+% \end{enumerate}
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/12/25}{Spiro rings and fused rings:
+% \cs{test@vertix@decavi}, etc.}
+% \changes{v2.01}{2001/06/20}{The \cs{storeclipinfo} command, etc.}
+%
+% \begin{macro}{\decaheterovi}
+% \begin{macro}{\@deca@heterovi}
+% \begin{macro}{\@deca@@heterovi}
+% \begin{macro}{\@decaheterovi}
+% \begin{macrocode}
+\def\decaheterovi{\@ifnextchar({\@deca@heterovi(@}{\@deca@heterovi(@)}}
+\def\@deca@heterovi(#1){\@ifnextchar[{\@deca@@heterovi(#1)[@}%
+{\@deca@@heterovi(#1)[@]}}
+\def\@deca@@heterovi(#1)[#2]#3#4{\@ifnextchar[%
+{\@decaheterovi(#1)[#2]{#3}{#4}[@}%
+{\@decaheterovi(#1)[#2]{#3}{#4}[@]}}
+\def\@decaheterovi(#1)[#2]#3#4[#5]{%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+% % treatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniflag\iniatom%
+%%\test@vertix@sixv{#3}{d}{c}{b}{a}{h}{g}%
+%%\test@vertix@decav{#3}{f}{e}{i}{j}{@}{@}%{i}{j} fixed
+\test@vertix@decavi{#3}%
+%
+% %%%%%%%%%%%%%%%%%%%%%%%
+% % adjustment for (yl) %
+% %%%%%%%%%%%%%%%%%%%%%%%
+\@reset@ylsw%
+\ylhetposition{#4}{5}{0}{5}{-1}% %substituents on 1 to 4
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-342}\def\@@yli{0}\fi
+\else
+\ylhetposition{#4}{12}{3}{7}{-1}% %substituents on 6 to 8
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\else
+\ylhetposition{#4}{-4}{0}{2}{0}% %substituent on 5
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\else
+{%
+\clipdetection%
+\@clipfusefalse \if@iclip \@clipfusetrue \fi%
+ \ylatombondposition{#4}{-9}{7}% %10 for 8a position
+}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-171}\def\@@yli{-103}\fi
+\else
+{%
+\clipdetection%
+\@clipfusefalse \if@jclip \@clipfusetrue \fi%
+\ylatombondposition{#4}{-8}{1}% %9 for 4a position
+}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-171}\def\@@yli{-303}\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(1200,880)(-\shiftii,-\shifti){decaheterovi}%2002/4/30 by S. Fujita
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+\begingroup
+\resetbdsw%
+\@bond@@omit{#5}%
+{\let\fff=\jjj \let\eee=\iii%
+\Put@Direct(342,0){\set@skel@bond{#1}{c}{a}}%
+ % bond between 1 and 2 \@aaa -> \skbonda etc
+\Put@Direct(342,0){\set@skel@bond{#1}{b}{b}}%
+ % bond between 2 and 3 \@bbb -> \skbondb etc
+\Put@Direct(342,0){\set@skel@bond{#1}{a}{c}}%
+ % bond between 3 and 4 \@ccc -> \skbondc etc
+\Put@Direct(342,0){\set@skel@bond{#1}{j}{d}}%
+ % bond between 4 and 4a \@ddd -> \skbondd etc
+\Put@Direct(342,0){\set@skel@bond{#1}{k}{e}}%
+ % bond between 4a and 8a \@kkk -> \skbonde etc
+\Put@Direct(342,0){\set@skel@bond{#1}{d}{f}}%
+ % bond between 8a and 1 \@jjj -> \skbondf etc
+}%
+{\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA%
+ \let\ccc=\iii\let\bbb=\jjj%
+\set@skel@bond{#1}{e}{a}% bond between 8 and 8a \@eee -> \skbonda etc
+\set@skel@bond{#1}{i}{c}% bond between 5 and 4a \@iii -> \skbondc etc
+\set@skel@bond{#1}{h}{d}% bond between 5 and 6 \@hhh -> \skbondd etc
+\set@skel@bond{#1}{g}{e}% bond between 6 and 7 \@ggg -> \skbonde etc
+\set@skel@bond{#1}{f}{f}% bond between 7 and 8 \@fff -> \skbondf etc
+}%
+\endgroup
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r\relax%
+{\let\fff=\jjj \let\eee=\iii%
+ \Put@Direct(342,0){\bonda}% bond between 1 and 2
+ \Put@Direct(342,0){\bondc}% bond between 3 and 4
+}%
+{\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA%
+ \let\ccc=\iii\let\bbb=\jjj%
+ \Put@Direct(0,0){\bondb}% bond between 8a and 4a
+ \Put@Direct(0,0){\bondf}% bond between 8 and 7
+ \Put@Direct(0,0){\bondd}% bond between 5 and 6
+}%
+\else\if\member l\relax%
+\else\if\member a\relax%
+ \Put@Direct(342,0){\bondc}% bond between 3 and 4
+\else\if\member b\relax%
+ \Put@Direct(342,0){\bondb}% bond between 2 and 3
+\else\if\member c\relax%
+ \Put@Direct(342,0){\bonda}% bond between 1 and 2
+\else\if\member d\relax%
+{\let\fff=\jjj%
+ \Put@Direct(342,0){\bondf}% bond between 1 and 8a
+}%
+\else\if\member e\relax%
+{\let\aaa=\hhh \let\bbb=\jjj%
+ \Put@Direct(0,0){\bonda}% bond between 8 and 8a
+}%
+\else\if\member f\relax%
+{\let\aaa=\hhh \let\fff=\gggA%
+ \Put@Direct(0,0){\bondf}% bond between 8 and 7
+}%
+\else\if\member g\relax%
+{\let\eee=\fff \let\fff=\gggA%
+ \Put@Direct(0,0){\bonde}% bond between 6 and 7
+}%
+\else\if\member h\relax%
+{\let\ddd=\eee \let\eee=\fff%
+ \Put@Direct(0,0){\bondd}% bond between 5 and 6
+}%
+\else\if\member i\relax%
+{\let\ccc=\iii \let\ddd=\eee%
+ \Put@Direct(0,0){\bondc}% bond between 5 and 4a
+}%
+\else\if\member j\relax%
+{\let\eee=\iii%
+ \Put@Direct(342,0){\bondd}% bond between 4 and 4a
+}%
+\else\if\member k\relax%
+{\let\ccc=\iii\let\bbb=\jjj%
+ \Put@Direct(0,0){\bondb}% bond between 8a and 4a
+}%
+\else\if\member K\relax%
+{\let\eee=\iii\let\fff=\jjj%
+ \Put@Direct(342,0){\bonde}% bond between 8a and 4a in the other ring
+}%
+\else\if\member A%left aromatic circle
+ \Put@oCircle(0,203){240}% %circle
+\else\if\member B%left aromatic circle
+ \Put@oCircle(342,203){240}% %circle
+\else
+ \expandafter\twoCH@@R\member//%
+ \def\aax{4a}\def\aay{8a}\def\aaz{10}%
+ \if\@@tmpa 4\relax% % plus charge etc.
+ \putratom{304}{282}{\@@tmpb}% % right type
+ \else\if\@@tmpa 3\relax%
+ \putratom{402}{253}{\@@tmpb}% % right type
+ \else\if\@@tmpa 2\relax%
+ \putratom{402}{120}{\@@tmpb}% % right type
+ \else\if\@@tmpa 1\relax%
+ \putratom{304}{68}{\@@tmpb}% % right type
+ \else\if\@@tmpa 7\relax%
+ \putlatom{-60}{253}{\@@tmpb}% % left type
+ \else\if\@@tmpa 6\relax%
+ \putlatom{-60}{120}{\@@tmpb}% % left type
+ \else\if\@@tmpa 5\relax%
+ \putratom{-38}{282}{\@@tmpb}% % right type
+ \else\if\@@tmpa 9\relax%
+ \putratom{60}{253}{\@@tmpb}% % right type
+ \else\ifx\@@tmpa\aax\relax%
+ \putratom{60}{253}{\@@tmpb}% % right type
+ \else\ifx\@@tmpa\aay\relax%
+ \putratom{60}{120}{\@@tmpb}% % right type
+ \else\ifx\@@tmpa\aaz\relax% 1998/10/17 by S. Fujita
+% \else\if\@@tmpa 10\relax%
+ \putratom{60}{120}{\@@tmpb}% % right type
+ \else\if\@@tmpa 8\relax%
+ \putratom{-38}{68}{\@@tmpb}% % right type
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+% ***********************
+% * setting fused rings *
+% ***********************
+ \expandafter\twoCH@R\member//%
+ \set@fusion@decavi
+\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+\fi\fi\fi\fi\fi\fi%
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms and spiro rings %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniflag\iniatom%
+\@tmpclipfalse
+\Put@Direct(0,0){\set@hetatom@sixv{#3}{12}{3}{7}{-1}%
+% \@gclipfalse \if@fclip \global\@gcliptrue \fi%
+% \@fclipfalse \if@eclip \global\@fcliptrue \fi%
+% \@eclipfalse \if@clip \global\@ecliptrue \fi%
+ \@gclipfalse \if@fclip \@gcliptrue \fi%%bug fix 2013/03/25
+ \@fclipfalse \if@eclip \@fcliptrue \fi%%bug fix 2013/03/25
+ \@eclipfalse \if@clip \@ecliptrue \@clipfalse \fi%%bug fix 2013/03/25
+\storeclipinfo
+}%substituents on 6 to 8
+\developclipinfo
+\Put@Direct(0,0){\set@hetatom@sixv{#3}{-4}{0}{2}{0}%
+% \@aclipfalse \if@aclip \global\@hcliptrue \fi%
+% \@aclipfalse \if@aclip \@hcliptrue \fi%
+ \@hclipfalse \if@aclip \@hcliptrue \@aclipfalse\fi%bug fix 2013/03/25
+ \storeclipinfo
+}%%substituent on 5
+\developclipinfo
+\Put@Direct(0,0){\set@vrtx@decafusevi{#3}%
+ \@tmpclipfalse
+% \if@iclip \global\@tmpcliptrue \fi
+% \if@jclip \global\@icliptrue \fi
+% \if@tmpclip \global\@jcliptrue \fi
+ \if@iclip \@tmpcliptrue \fi
+ \if@jclip \@icliptrue \fi
+ \if@tmpclip \@jcliptrue \fi
+ \storeclipinfo
+}% fused positions
+\developclipinfo
+%to be done after all
+\Put@Direct(342,0){\set@hetatom@sixv{#3}{5}{0}{5}{-1}%
+% \if@aclip \global\@acliptrue\fi
+% \if@bclip \global\@bcliptrue\fi
+% \if@cclip \global\@ccliptrue\fi
+% \if@clip \global\@cliptrue\fi
+\storeclipinfo
+}% %substituents on 1 to 4
+\developclipinfo
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents and exocyclic bonds %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\global\drawsamesubsttrue%2002/05/30 warning on
+\Put@Direct(342,0){\setsixringv{#4}{5}{0}{5}{-1}}% %substituents on 1 to 4
+\global\drawsamesubstfalse%2002/05/30 warning off
+{\@clipfalse \if@eclip \@cliptrue \fi% %substituents on 6 to 8
+ \@eclipfalse \if@fclip \@ecliptrue \fi%
+ \@fclipfalse \if@gclip \@fcliptrue \fi%
+\Put@Direct(0,0){\setsixringv{#4}{12}{3}{7}{-1}}%
+}%
+{\@aclipfalse \if@hclip \@acliptrue \fi% %substituent on 5
+\Put@Direct(0,0){\setsixringv{#4}{-4}{0}{2}{0}}%
+}%
+{\@clipfusefalse \if@iclip \@clipfusetrue \fi%
+ \Put@Direct(171,103){\setatombond{#4}{-9}{7}}% %10 for 8a position
+}%
+{\@clipfusefalse \if@jclip \@clipfusetrue \fi%
+ \Put@Direct(171,303){\setatombond{#4}{-8}{1}}% %9 for 4a position
+}%
+\end{ShiftPicEnvB}\iniatom\iniflag}% %end of \decaheterovi macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The macro |\test@vertix@decavi| is used to test the presence of
+% a hetero atom or a spiro substituent on a vertex of the
+% decaheterovi nucleus.
+%
+% \begin{macro}{\if@tmpclip}
+% \begin{macro}{\test@vertix@decavi}
+% \begin{macrocode}
+\newif\if@tmpclip \@tmpclipfalse
+\def\test@vertix@decavi#1{%
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty\else%
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\twoch@r\@membera{}%
+\ifcase\@tmpa%
+ \or%
+ \if\@tmpb s\relax\def\ddd{}\else\def\ddd{@}\fi
+ \or%2
+ \if\@tmpb s\relax\def\ccc{}\else\def\ccc{@}\fi
+ \or%3
+ \if\@tmpb s\relax\def\bbb{}\else\def\bbb{@}\fi
+ \or%
+ \if\@tmpb a%
+ \def\jjj{@}%4a
+ \else\if\@tmpb s%
+ \def\aaa{}%4
+ \else\if\@tmpb h%
+ \def\aaa{@}%4
+ \else\ifx\@tmpb\empty%
+ \def\aaa{@}%4
+ \fi\fi\fi\fi%
+ \or%5
+ \if\@tmpb s\relax\def\hhh{}\else\def\hhh{@}\fi
+ \or%6
+ \if\@tmpb s\relax\def\gggA{}\else\def\gggA{@}\fi
+ \or%7
+ \if\@tmpb s\relax\def\fff{}\else\def\fff{@}\fi
+ \or%
+ \if\@tmpb a%
+ \xdef\iii{@}%8a
+ \else\if\@tmpb s%
+ \xdef\eee{}%8s
+ \else\if\@tmpb h%
+ \xdef\eee{@}%8h
+ \else\ifx\@tmpb\empty%
+ \xdef\eee{@}%8
+ \fi\fi\fi\fi%
+\or%9 (= 4a)
+ \if\@tmpb s\relax\def\jjj{}\else\def\jjj{@}\fi
+\or%10 (= 8a)
+ \if\@tmpb s\relax\def\iii{}\else\def\iii{@}\fi
+\fi\fi}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The macro |\set@vrtx@decafusevi| is used to set
+% a hetero atom or on a vertex of a bridgehead location.
+%
+% \begin{macro}{\set@vrtx@decafusevi}
+% \begin{macrocode}
+\def\set@vrtx@decafusevi#1{%
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty\else%
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\twoch@r\@membera{}%
+\ifcase\@tmpa\or\or\or
+ \or%%%%4
+ \if\@tmpb a\relax%
+% \global\@icliptrue%
+ \@icliptrue%2001/06/20 by S. Fujita
+ \putlatom{207}{280}{\@memberb}% % left type
+ \else\relax
+ \fi
+ \or\or\or
+ \or%8
+ \if\@tmpb a\relax%
+% \global\@jcliptrue%
+ \@jcliptrue%%2001/06/20 by S. Fujita
+ \putlatom{207}{65}{\@memberb}% % left type
+ \else\relax
+ \fi
+\or%9 (= 4a)
+% \global\@icliptrue%
+ \@icliptrue%%2001/06/20 by S. Fujita
+ \putlatom{207}{280}{\@memberb}% % left type
+\or%10 (= 8a)
+% \global\@jcliptrue%
+ \@jcliptrue%%2001/06/20 by S. Fujita
+ \putlatom{207}{65}{\@memberb}% % left type
+\fi\fi}%
+}% end of the macro \set@vrtx@decafusevi
+% \end{macrocode}
+% \end{macro}
+%
+% The macro |\set@fusion@decavi| is used to set
+% a fused ring or on an edge of the decaheterovi nucleus.
+%
+% \begin{macro}{\set@fusion@decavi}
+% \begin{macrocode}
+\def\set@fusion@decavi{%
+ \let\@@tmpa=\@tmpa
+ \let\@@tmpb=\@tmpb
+ \if\@tmpa a%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(342,0){\set@fusionadd@sixvi}%
+ \else\if\@tmpa A%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(342,0){\set@fusionadd@sixvi}%
+ \else\if\@tmpa b%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(342,0){\set@fusionadd@sixvi}%
+ \else\if\@tmpa B%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(342,0){\set@fusionadd@sixvi}%
+ \else\if\@tmpa c%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(342,0){\set@fusionadd@sixvi}%
+ \else\if\@tmpa C%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(342,0){\set@fusionadd@sixvi}%
+ \else\if\@tmpa d%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(342,0){\set@fusionadd@sixvi}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Unfavorable Fusion for bond `d'}%
+ \fi
+ \else\if\@tmpa D%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(342,0){\set@fusionadd@sixvi}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Unfavorable Fusion for bond `D'}%
+ \fi
+ \else\if\@tmpa e%
+ \edef\@@tmpa{c}%
+ \Put@Direct(0,0){\set@fusionadd@sixvi}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Unfavorable Fusion for bond `e'}%
+ \fi
+ \else\if\@tmpa E%
+ \edef\@@tmpa{C}%
+ \Put@Direct(0,0){\set@fusionadd@sixvi}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Unfavorable Fusion for bond `E'}%
+ \fi
+ \else\if\@tmpa f%
+ \edef\@@tmpa{d}%
+ \Put@Direct(0,0){\set@fusionadd@sixvi}%
+ \else\if\@tmpa F%
+ \edef\@@tmpa{D}%
+ \Put@Direct(0,0){\set@fusionadd@sixvi}%
+ \else\if\@tmpa g%
+ \edef\@@tmpa{e}%
+ \Put@Direct(0,0){\set@fusionadd@sixvi}%
+ \else\if\@tmpa G%
+ \edef\@@tmpa{E}%
+ \Put@Direct(0,0){\set@fusionadd@sixvi}%
+ \else\if\@tmpa h%
+ \edef\@@tmpa{f}%
+ \Put@Direct(0,0){\set@fusionadd@sixvi}%
+ \else\if\@tmpa H%
+ \edef\@@tmpa{F}%
+ \Put@Direct(0,0){\set@fusionadd@sixvi}%
+ \else\if\@tmpa i%
+ \edef\@@tmpa{a}%
+ \Put@Direct(0,0){\set@fusionadd@sixvi}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Unfavorable Fusion for bond `i'}%
+ \fi
+ \else\if\@tmpa I%
+ \edef\@@tmpa{A}%
+ \Put@Direct(0,0){\set@fusionadd@sixvi}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Unfavorable Fusion for bond `I'}%
+ \fi
+ \else\if\@tmpa j%
+ \edef\@@tmpa{f}%
+ \Put@Direct(342,0){\set@fusionadd@sixvi}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Unfavorable Fusion for bond `j'}%
+ \fi
+ \else\if\@tmpa J%
+ \edef\@@tmpa{F}%
+ \Put@Direct(342,0){\set@fusionadd@sixvi}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Unfavorable Fusion for bond `J'}%
+ \fi
+ \else\if\@tmpa k%
+ \edef\@@tmpa{e}%
+ \Put@Direct(342,0){\set@fusionadd@sixvi}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Forbidden Fusion for bond `k'}%
+ \fi
+ \else\if\@tmpa K%
+ \edef\@@tmpa{E}%
+ \Put@Direct(342,0){\set@fusionadd@sixvi}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Forbidden Fusion for bond `K'}%
+ \fi
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+}% end of the macro \set@fusion@decavi
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Vertical-bottom type}
+% The macro |\decaheterovb| is used for drawing six-six heterocyclic
+% derivatives of vertical-bottom type (numbering from the bottom
+% to the left-upper part).
+% The word ``vertical'' means that each benzene ring is a vertical type.
+% The word ``bottom'' means that the benzene ring with young locant numbers
+% is located at the bottom.
+% The skeleton and endocyclic double bonds are drawn directly,
+% while substituents and exocyclic bonds are placed by useing
+% the inner macro |\setsixringv|.
+%
+% The standard skeleton of a six-to-six fused heterocycle is selected
+% to have the following locant numbers.
+%
+% \changes{v1.02}{1998/10/16}{Newly added command}
+% \changes{v2.01}{2001/06/20}{The \cs{storeclipinfo} command, etc.}
+%
+% \begin{verbatim}
+% ***************************
+% * decahetro derivatives *
+% * (vertical bottom type) *
+% ***************************
+% The following numbering is adopted in this macro.
+%
+% 7
+% *
+% 6 * * 8
+% | |
+% | | 0G (4a)
+% 5 * * *
+% 0F(4a) * * 1
+% | |
+% | |
+% 4 * * 2
+% *
+% 3
+% ^
+% |
+% the original point
+% \end{verbatim}
+%
+% The macro |\decaheterovb| has two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \decaheterovb(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `k' and a uppercase
+% character `A' or `B'.
+%
+% The |BONDLIST| argument contains one
+% character selected from a to k, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `A' and `B' represent aromatic circles. The option
+% `$n+$' ($n=1$ to $10$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+% BONDLIST: list of bonds
+%
+% none or r : decahetero (right-handed)
+% l : decahetero (left-handed)
+% [] : fully saturated form
+% a : 1,2-double bond b : 2,3-double bond
+% c : 4,3-double bond d : 4,4a-double bond
+% e : 4a,5-double bond f : 5,6-double bond
+% g : 6,7-double bond h : 7,8-double bond
+% i : 8,8a-double bond j : 1,8a-double bond
+% k : 4a,8a-double bond
+% K : 4a,8a-double bond in the other ring
+% A : aromatic circle B : aromatic circle
+% {n+} : plus at the n-nitrogen atom (n = 1 to 10)
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 10 atoms)
+%
+% for n = 1 to 8
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position
+% e.g. 1==N for N at 1-position
+% na : Hetero atom at 4a or 8b (n=4 or 8)
+% e.g. 4a==N (or 9==N) for N at 4a-position
+% 8a==N (or {{10}}==N) for N at 8a-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 8
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+%
+% for 9 (4a position) and 10 (8a position)
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges may be regarded as both fused and non-fused
+% positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a to k: see BONDLIST)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \decaheterovb{1==N}{1==Cl;2==F}
+% \decaheterovb[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \decaheterovb[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl}
+% \end{verbatim}
+%
+% The definition of |\decaheterovb| uses a picture environment and
+% consists of the same unit processes as shown in |\sixheterov|:
+% \begin{enumerate}
+% \item treatment of atom list,
+% \item placing outer skeletons,
+% \item placing inner double bonds,
+% \item setting hetero atoms, and
+% \item placing substituents by using |\setsixringv| several times.
+% \end{enumerate}
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/12/25}{Spiro rings and fused rings}
+%
+% \begin{macro}{\decaheterovb}
+% \begin{macro}{\@deca@heterovb}
+% \begin{macro}{\@deca@@heterovb}
+% \begin{macro}{\@decaheterovb}
+% \begin{macrocode}
+\def\decaheterovb{\@ifnextchar({\@deca@heterovb(@}{\@deca@heterovb(@)}}
+\def\@deca@heterovb(#1){\@ifnextchar[{\@deca@@heterovb(#1)[@}%
+{\@deca@@heterovb(#1)[@]}}
+\def\@deca@@heterovb(#1)[#2]#3#4{\@ifnextchar[%
+{\@decaheterovb(#1)[#2]{#3}{#4}[@}%
+{\@decaheterovb(#1)[#2]{#3}{#4}[@]}}
+\def\@decaheterovb(#1)[#2]#3#4[#5]{%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+% % treatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniflag\iniatom%
+\test@vertix@decavb{#3}%
+% %%%%%%%%%%%%%%%%%%%%%%%
+% % adjustment for (yl) %
+% %%%%%%%%%%%%%%%%%%%%%%%
+\@reset@ylsw%
+{\let\eee=\ddd\let\ddd=\ccc
+\let\ccc=\bbb\let\bbb=\aaa
+\ylhetpositionb{#4}{1}{1}{6}{0}% %substituents on 1 to 4
+}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\else
+\ylhetpositionb{#4}{0}{4}{7}{0}% %substituents on 5 to 6
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{171}\def\@@yli{-303}\fi
+\else
+{\let\aaa=\gggA \let\bbb=\hhh
+\ylhetpositionb{#4}{-6}{0}{3}{0}% %substituents on 7 to 8
+}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{171}\def\@@yli{-303}\fi
+\else
+{%
+\clipdetection%
+\@clipfusefalse \if@iclip \@clipfusetrue \fi%
+\ylatombondposition{#4}{-8}{9}% %9 %for 4a position
+}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{171}\def\@@yli{-303}\fi
+\else
+{%
+\clipdetection%
+\@clipfusefalse \if@jclip \@clipfusetrue \fi%
+\ylatombondposition{#4}{-9}{3}% %10 for 8a position
+}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{-406}\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(1000,1200)(-550,-240){decaheterob}%2002/4/30 by S. Fujita
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+\begingroup
+\resetbdsw%
+\@bond@@omit{#5}%
+{\let\eee=\ddd\let\ddd=\ccc
+ \let\ccc=\bbb\let\bbb=\aaa
+ \let\aaa=\jjj \let\fff=\iii
+\set@skel@bond{#1}{j}{a}% bond between 8a and 1 \@jjj -> \skbonda etc
+\set@skel@bond{#1}{a}{b}% bond between 1 and 2 \@aaa -> \skbondb etc
+\set@skel@bond{#1}{b}{c}% bond between 2 and 3 \@bbb -> \skbondc etc
+\set@skel@bond{#1}{c}{d}% bond between 3 and 4 \@ccc -> \skbondd etc
+\set@skel@bond{#1}{d}{e}% bond between 4 and 4a \@ddd -> \skbonde etc
+\set@skel@bond{#1}{k}{f}% bond between 4a and 8a \@kkk -> \skbondf etc
+}%
+{\let\aaa=\gggA\let\bbb=\hhh\let\ccc=\jjj\let\ddd=\iii
+\Put@Direct(-171,303){\set@skel@bond{#1}{h}{a}}%
+ % bond between 7 and 8 \@hhh -> \skbonda etc
+\Put@Direct(-171,303){\set@skel@bond{#1}{i}{b}}%
+ % bond between 8 and 8a \@iii -> \skbondb etc
+\Put@Direct(-171,303){\set@skel@bond{#1}{e}{d}}%
+ % bond between 4a and 5 \@eee -> \skbondd etc
+\Put@Direct(-171,303){\set@skel@bond{#1}{f}{e}}%
+ % bond between 5 and 6 \@fff -> \skbonde etc
+\Put@Direct(-171,303){\set@skel@bond{#1}{g}{f}}%
+ % bond between 6 and 7 \@ggg -> \skbondf etc
+}%
+\endgroup
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r\relax%
+{\let\aaa=\gggA\let\bbb=\hhh\let\ccc=\jjj\let\ddd=\iii
+ \Put@Direct(-171,303){\bonda}% bond between 7 and 8
+ \Put@Direct(-171,303){\bonde}% bond between 5 and 6
+}%
+{\let\eee=\ddd\let\ddd=\ccc
+ \let\ccc=\bbb\let\bbb=\aaa
+ \let\aaa=\jjj \let\fff=\iii
+ \Put@Direct(0,0){\bondb}% bond between 1 and 2
+ \Put@Direct(0,0){\bondd}% bond between 3 and 4
+ \Put@Direct(0,0){\bondf}% bond between 4a and 4b
+}%
+\else\if\member l\relax%
+\else\if\member a\relax%
+{\let\ccc=\bbb\let\bbb=\aaa
+ \Put@Direct(0,0){\bondb}% bond between 1 and 2
+}%
+\else\if\member b\relax
+{\let\ddd=\ccc\let\ccc=\bbb
+ \Put@Direct(0,0){\bondc}% bond between 2 and 3
+}%
+\else\if\member c\relax
+{\let\eee=\ddd\let\ddd=\ccc
+ \Put@Direct(0,0){\bondd}% bond between 3 and 4
+}%
+\else\if\member d\relax%
+{\let\fff=\eee\let\eee=\ddd
+ \Put@Direct(0,0){\bonde}% bond between 4 and 4a
+}%
+\else\if\member e\relax%
+{\let\ddd=\iii%
+ \Put@Direct(-171,303){\bondd}% bond between 5 and 4a
+}%
+\else\if\member f\relax%
+ \Put@Direct(-171,303){\bonde}% bond between 5 and 6
+\else\if\member g\relax%
+{\let\aaa=\gggA
+ \Put@Direct(-171,303){\bondf}% bond between 6 and 7
+}%
+\else\if\member h\relax%
+{\let\aaa=\gggA \let\bbb=\hhh%
+ \Put@Direct(-171,303){\bonda}% bond between 8 and 7
+}%
+\else\if\member i\relax%
+{\let\bbb=\hhh \let\ccc=\jjj%
+ \Put@Direct(-171,303){\bondb}% bond between 8 and 8a
+}%
+\else\if\member j\relax%
+{\let\bbb=\aaa\let\aaa=\jjj%
+ \Put@Direct(0,0){\bonda}% bond between 1 and 8a
+}%
+\else\if\member k\relax%
+{\let\aaa=\jjj\let\fff=\iii%
+ \Put@Direct(0,0){\bondf}% bond between 8a and 4a
+}%
+\else\if\member K\relax%
+{\let\ccc=\jjj\let\ddd=\iii%
+ \Put@Direct(-171,303){\bondc}% bond between 8a and 4a in the other ring
+}%
+\else\if\member A%left aromatic circle
+ \Put@oCircle(-171,506){240}% %circle
+\else\if\member B%left aromatic circle
+ \Put@oCircle(0,203){240}% %circle
+\else \expandafter\twoCH@@R\member//%
+ \def\aax{8a}\def\aay{4a}\def\aaz{10}%
+ \if\@@tmpa 1\relax% % plus charge etc.
+ \putratom{60}{253}{\@@tmpb}% % right type
+ \else\if\@@tmpa 2\relax%
+ \putratom{60}{120}{\@@tmpb}% % right type
+ \else\if\@@tmpa 3\relax%
+ \putratom{-38}{68}{\@@tmpb}% % right type
+ \else\if\@@tmpa 4\relax%
+ \putratom{-120}{120}{\@@tmpb}% % right type
+ \else\if\@@tmpa 5\relax%
+ \putlatom{-209}{431}{\@@tmpb}% % left type
+ \else\if\@@tmpa 6\relax%
+ \putlatom{-209}{546}{\@@tmpb}% % left type
+ \else\if\@@tmpa 7\relax%
+ \putratom{-209}{585}{\@@tmpb}% % right type
+ \else\if\@@tmpa 8\relax%
+ \putratom{-111}{546}{\@@tmpb}% % right type
+ \else\if\@@tmpa 9\relax%
+ \putlatom{-60}{253}{\@@tmpb}% % left type
+ \else\ifx\@@tmpa\aaz\relax%
+ \putratom{-38}{282}{\@@tmpb}% % right type
+ \else\ifx\@@tmpa\aax\relax%
+ \putratom{-38}{282}{\@@tmpb}% % right type
+ \else\ifx\@@tmpa\aay\relax%
+ \putratom{-209}{371}{\@@tmpb}% % right type
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+% ***********************
+% * setting fused rings *
+% ***********************
+ \expandafter\twoCH@R\member//%
+ \set@fusion@decavb
+\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+\fi\fi\fi\fi\fi\fi%
+}%
+% \end{macrocode}
+%
+% \changes{v2.00a}{2000/11/11}{The
+% \cs{iniflag} command is added to 5- and 8-substitution.}
+% \changes{v5.01}{2013/03/23}{bug fix subs 7 to 8.}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\iniflag\iniatom
+\Put@Direct(-171,303){\set@hetatom@sixv{#3}{0}{4}{7}{0}%
+%\if@eclip \global\@ecliptrue\fi%
+%\if@fclip \global\@fcliptrue\fi%
+\storeclipinfo
+}% %substituents on 5 to 6
+\developclipinfo
+\Put@Direct(-171,303){\set@hetatom@sixv{#3}{-6}{0}{3}{0}%
+% \@gclipfalse \if@aclip \global\@gcliptrue \fi%
+% \@hclipfalse \if@bclip \global\@hcliptrue \fi%
+ \@gclipfalse \if@aclip \@gcliptrue \fi%
+% \@hclipfalse \if@bclip \@hcliptrue \fi%
+ \@hclipfalse \if@bclip \@hcliptrue \@bclipfalse \fi%bugfix 2013/03/23
+\storeclipinfo
+}% %substituents on 7 to 8
+\developclipinfo
+\Put@Direct(0,0){\set@vrtx@decafusevb{#3}%
+% \if@iclip \global\@icliptrue \fi
+% \if@jclip \global\@jcliptrue \fi
+\storeclipinfo
+}%9 %for 4a position, %10 for 8a position
+\developclipinfo
+%to be done after all
+\Put@Direct(0,0){\iniflag%2000/11/11 by S. Fujita
+\set@hetatom@sixv{#3}{1}{1}{6}{0}%
+%\@aclipfalse \if@bclip \global\@acliptrue \fi%
+%\@bclipfalse \if@cclip \global\@bcliptrue \fi%
+%\@cclipfalse \if@clip \global\@ccliptrue \fi%
+%\@clipfalse \if@eclip \global\@cliptrue \fi%
+\@aclipfalse \if@bclip \@acliptrue \fi%
+\@bclipfalse \if@cclip \@bcliptrue \fi%
+\@cclipfalse \if@clip \@ccliptrue \fi%
+\@clipfalse \if@eclip \@cliptrue \fi%
+\storeclipinfo
+}% %substituents on 1 to 4
+\developclipinfo
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents and exocyclic bonds %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\global\drawsamesubsttrue%2002/05/30 warning on
+{%
+\@eclipfalse \if@clip \@ecliptrue \fi%
+\@clipfalse \if@cclip \@cliptrue \fi%
+\@cclipfalse \if@bclip \@ccliptrue \fi%
+\@bclipfalse \if@aclip \@bcliptrue \fi%
+\Put@Direct(0,0){\setsixringv{#4}{1}{1}{6}{0}}% %substituents on 1 to 4
+}%
+\global\drawsamesubstfalse%2002/05/30 warning off
+{%
+\Put@Direct(-171,303){\setsixringv{#4}{0}{4}{7}{0}}% %substituents on 5 to 6
+}%
+{%
+ \@aclipfalse \if@gclip \@acliptrue \fi%
+ \@bclipfalse \if@hclip \@bcliptrue \fi%
+\Put@Direct(-171,303){\setsixringv{#4}{-6}{0}{3}{0}}% %substituents on 7 to 8
+}%
+{\@clipfusefalse \if@iclip \@clipfusetrue \fi%
+ \Put@Direct(-171,303){\setatombond{#4}{-8}{9}}% %9 %for 4a position
+}%
+{\@clipfusefalse \if@jclip \@clipfusetrue \fi%
+ \Put@Direct(0,406){\setatombond{#4}{-9}{3}}% %10 for 8a position
+}%
+\end{ShiftPicEnvB}\iniatom\iniflag}% %end of \decaheterovb macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The command |\ylhetpositionb| is used in the |\decaheterovb| command,
+% giving the sift values for drawing a structure as a substituent.
+% \changes{v1.02}{1998/10/16}{Newly added command}
+%
+% \begin{macro}{\ylhetpositionb}
+% \begin{macrocode}
+\def\ylhetpositionb#1#2#3#4#5{%
+\@@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
+\ifnum#5<0\relax%
+\@tmpaa=-\@tmpa\relax \advance\@tmpaa by#2\relax%
+\else\@tmpaa=\@tmpa\relax \advance\@tmpaa by#2\relax\fi
+\ifnum\@tmpaa>#3\relax%
+\ifnum\@tmpaa<#4\relax%
+\ifcase\@tmpaa%0 omit
+ \or
+ \ifx\aaa\empty%
+ \ifx\gggA\empty% aaa and ggg are absent
+ \gdef\@ylii{0}\gdef\@yli{-406}\global\@ylswtrue%\@ylatrue% subst. on 1
+ \else% ggg is present
+ \gdef\@ylii{0}\gdef\@yli{-442}\global\@ylswtrue%\@ylatrue% subst. on 1
+ \fi
+ \else%aaa is present
+ \gdef\@ylii{0}\gdef\@yli{-442}\global\@ylswtrue%\@ylatrue% subst. on 1
+ \fi
+ \or
+ \ifx\bbb\empty
+ \ifx\hhh\empty% aaa and hhh are absent
+ \gdef\@ylii{-171}\gdef\@yli{-303}\global\@ylswtrue%\@ylbtrue% subst. on 2
+ \else%hhh is present
+ \gdef\@ylii{-213}\gdef\@yli{-327}\global\@ylswtrue%\@ylbtrue% subst. on 2
+ \fi
+ \else
+ \gdef\@ylii{-213}\gdef\@yli{-327}\global\@ylswtrue%\@ylbtrue% subst. on 2
+ \fi
+ \or\ifx\ccc\empty
+ \gdef\@ylii{-171}\gdef\@yli{-103}\global\@ylswtrue%\@ylctrue% subst. on 3
+ \else
+ \gdef\@ylii{-213}\gdef\@yli{-79}\global\@ylswtrue%\@ylctrue% subst. on 3
+ \fi
+ \or
+ \ifx\ddd\empty
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%\@yldtrue% subst. on 4
+ \else% ddd present
+ \gdef\@ylii{0}\gdef\@yli{36}\global\@ylswtrue%\@yldtrue% subst. on 4
+ \fi
+ \or
+ \ifx\eee\empty
+ \gdef\@ylii{173}\gdef\@yli{-103}\global\@ylswtrue%\@yletrue% subst. on 5
+ \else% eee is present
+ \gdef\@ylii{223}\gdef\@yli{-79}\global\@ylswtrue%\@yletrue% subst. on 5
+ \fi
+ \or
+ \ifx\fff\empty
+ \gdef\@ylii{173}\gdef\@yli{-303}\global\@ylswtrue%\@ylftrue% subst. on 6
+ \else%fff is present
+ \gdef\@ylii{213}\gdef\@yli{-327}\global\@ylswtrue%\@ylftrue% subst. on 6
+ \fi
+\fi%end of ifcase
+\fi\fi\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% The macro |\test@vertix@decavb| determines the presence of
+% a hetro atom or a spriro ring at each of the vertices.
+% \changes{v2.00}{1998/12/25}{Added: spiro rings}
+%
+% \begin{macro}{\test@vertix@decavb}
+% \begin{macrocode}
+\def\test@vertix@decavb#1{%
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty\else%
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\twoch@r\@membera{}%
+\ifcase\@tmpa%
+ \or% \xdef\aaa{\@memberb}%1
+ \if\@tmpb s\relax\def\aaa{}\else\def\aaa{@}\fi
+ \or% \xdef\bbb{\@memberb}%2
+ \if\@tmpb s\relax\def\bbb{}\else\def\bbb{@}\fi
+ \or% \xdef\ccc{\@memberb}%3
+ \if\@tmpb s\relax\def\ccc{}\else\def\ccc{@}\fi
+ \or%
+ \if\@tmpb a%
+ \def\iii{@}%4a
+ \else\if\@tmpb s%
+ \def\ddd{}%4
+ \else\if\@tmpb h%
+ \def\ddd{@}%4
+ \else\ifx\@tmpb\empty%
+ \def\ddd{@}%4
+ \fi\fi\fi\fi%
+ \or% \xdef\eee{\@memberb}%5
+ \if\@tmpb s\relax\def\eee{}\else\def\eee{@}\fi
+ \or% \xdef\fff{\@memberb}%6
+ \if\@tmpb s\relax\def\fff{}\else\def\fff{@}\fi
+ \or% \xdef\gggA{\@memberb}%7
+ \if\@tmpb s\relax\def\gggA{}\else\def\gggA{@}\fi
+ \or%
+ \if\@tmpb a%
+ \def\jjj{@}%8a
+ \else\if\@tmpb s%
+ \def\hhh{}%8
+ \else\if\@tmpb h%
+ \def\hhh{@}%4
+ \else\ifx\@tmpb\empty%
+ \def\hhh{@}%4
+ \fi\fi\fi\fi%
+\or% \xdef\iii{\@memberb}%9 (= 4a)
+ \if\@tmpb s\relax\def\iii{}\else\def\iii{@}\fi
+\or% \xdef\jjj{\@memberb}%10 (= 8a)
+ \if\@tmpb s\relax\def\jjj{}\else\def\jjj{@}\fi
+\fi\fi}%
+}% end of the macro \test@vertix@decavb
+% \end{macrocode}
+% \end{macro}
+%
+% The macro |\set@vrtx@decafusevb| typesets a hetero atom
+% at each fused position.
+% \changes{v2.00}{1998/12/25}{Added: spiro rings}
+% \changes{v2.01}{2001/06/20}{\cs{global} omitted}
+%
+% \begin{macro}{\set@vrtx@decafusevb}
+% \begin{macrocode}
+\def\set@vrtx@decafusevb#1{%
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty\else%
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\twoch@r\@membera{}%
+\ifcase\@tmpa\or\or\or
+ \or%%%%4
+ \if\@tmpb a\relax%
+% \global\@icliptrue%
+ \@icliptrue%%2001/06/20 by S. Fujita
+ \putlatom{-135}{280}{\@memberb}% % left type
+ \else\relax
+ \fi
+ \or\or\or
+ \or%8
+ \if\@tmpb a\relax%
+% \global\@jcliptrue%
+ \@jcliptrue%%2001/06/20 by S. Fujita
+ \putratom{-31}{356}{\@memberb}% % right type
+ \else\relax
+ \fi
+\or%9 (= 4a)
+% \global\@icliptrue%
+ \@icliptrue%%2001/06/20 by S. Fujita
+ \putlatom{-135}{280}{\@memberb}% % left type
+\or%10 (= 8a)
+% \global\@jcliptrue%
+ \@jcliptrue%%2001/06/20 by S. Fujita
+ \putratom{-31}{356}{\@memberb}% % right type
+\fi\fi}%
+}% end of the macro \set@vrtx@decafusevb
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Vertical-top type}
+%
+% The macro |\decaheterovt| is used for drawing six-to-six fused derivatives
+% of vertical-bottom type (numbering from the top to the left-down part).
+% The word ``vertical'' means that each benzene ring is a vertical type.
+% The word ``top'' means that the benzene ring with young locant numbers
+% is located at the top.
+% The skeleton and endocyclic double bonds are drawn directly,
+% while substituents and exocyclic bonds are placed by useing
+% the inner macro |\setsixringv|.
+% \changes{v1.02}{1998/10/18}{Newly added command}
+% \changes{v2.01}{2001/06/20}{The \cs{storeclipinfo} command, etc.}
+%
+% \begin{verbatim}
+% ****************************
+% * decaheterovt derivatives *
+% * (vertical-top type) *
+% ****************************
+% The following numbering is adopted in this macro.
+%
+% 2
+% *
+% 1 * * 3
+% | |
+% | |
+% 0G (8a) * * 4
+% 8 * * 0F(4a)
+% | |
+% | |
+% 7 * * 5
+% *
+% 6
+% ^
+% |
+% the original point
+% \end{verbatim}
+%
+% The macro |\decaheterovt| has two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \decaheterovt(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `k' and a uppercase
+% character `A' or `B'.
+%
+% The |BONDLIST| argument contains one
+% character selected from a to k, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `A' and `B' represent aromatic circles. The option
+% `$n+$' ($n=1$ to $10$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+% BONDLIST: list of bonds
+%
+% none or r : decahetero (right-handed)
+% l : decahetero (left-handed)
+% [] : fully saturated form
+% a : 1,2-double bond b : 2,3-double bond
+% c : 4,3-double bond d : 4,4a-double bond
+% e : 4a,5-double bond f : 5,6-double bond
+% g : 6,7-double bond h : 7,8-double bond
+% i : 8,8a-double bond j : 1,8a-double bond
+% k : 4a,8a-double bond
+% K : 4a,8a-double bond in the other ring
+% A : aromatic circle B : aromatic circle
+% {n+} : plus at the n-nitrogen atom (n = 1 to 10)
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 10 atoms)
+%
+% for n = 1 to 8
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position
+% e.g. 1==N for N at 1-position
+% na : Hetero atom at 4a or 8b (n=4 or 8)
+% e.g. 4a==N (or 9==N) for N at 4a-position
+% 8a==N (or {{10}}==N) for N at 8a-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 8
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+%
+% for 9 (4a position) and 10 (8a position)
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges may be regarded as both fused and non-fused
+% positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a to k: see BONDLIST)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \decaheterovt{1==N}{1==Cl;2==F}
+% \decaheterovt[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \decaheterovt[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl}
+% \end{verbatim}
+%
+% The definition of |\decaheterovt| uses a picture environment and
+% consists of the same unit processes as shown in |\sixheterov|:
+% \begin{enumerate}
+% \item treatment of atom list,
+% \item placing outer skeletons,
+% \item placing inner double bonds,
+% \item setting hetero atoms, and
+% \item placing substituents by using |\setsixringv| several times.
+% \end{enumerate}
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/10/31}{Add: Spiro and fused rings}
+% \changes{v5.01}{2013/03/23}{Bug fix: omit vacant at 1 position}
+%
+% \begin{macro}{\decaheterovt}
+% \begin{macro}{\@deca@heterovt}
+% \begin{macro}{\@deca@@heterovt}
+% \begin{macro}{\@decaheterovt}
+% \begin{macrocode}
+\def\decaheterovt{\@ifnextchar({\@deca@heterovt(@}{\@deca@heterovt(@)}}
+\def\@deca@heterovt(#1){\@ifnextchar[{\@deca@@heterovt(#1)[@}%
+{\@deca@@heterovt(#1)[@]}}
+\def\@deca@@heterovt(#1)[#2]#3#4{\@ifnextchar[%
+{\@decaheterovt(#1)[#2]{#3}{#4}[@}%
+{\@decaheterovt(#1)[#2]{#3}{#4}[@]}}
+\def\@decaheterovt(#1)[#2]#3#4[#5]{%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+% % treatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniflag\iniatom%
+\test@vertix@decavb{#3}%
+% %%%%%%%%%%%%%%%%%%%%%%%
+% % adjustment for (yl) %
+% %%%%%%%%%%%%%%%%%%%%%%%
+\@reset@ylsw%
+{\let\fff=\aaa
+\ylhetpositiont{#4}{5}{5}{7}{0}% %substituent on 1
+}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-171}\def\@@yli{-303}\fi
+\else
+{\let\aaa=\bbb\let\bbb=\ccc\let\ccc=\ddd
+\ylhetpositiont{#4}{-1}{0}{4}{0}% %substituents on 2 to 4
+}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-171}\def\@@yli{-303}\fi
+\else
+{\let\ccc=\eee\let\ddd=\fff
+\let\eee=\gggA\let\fff=\hhh
+\ylhetpositiont{#4}{-2}{2}{7}{0}% %substituents on 5 to 8
+}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\else
+{%
+\clipdetection%
+\@clipfusefalse \if@iclip \@clipfusetrue \fi%
+\ylatombondposition{#4}{-8}{5}% %9 %for 4a position
+}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-171}\def\@@yli{-303}\fi
+\else
+{%
+\clipdetection%
+\@clipfusefalse \if@jclip \@clipfusetrue \fi%
+\ylatombondposition{#4}{-9}{11}% %10 for 8a position
+}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{-406}\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(1200,880)(-\shiftii,-\shifti){decaheterovt}%2002/4/30 by S. Fujita
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+\begingroup
+\resetbdsw%
+\@bond@@omit{#5}%
+{%
+ \let\fff=\aaa \let\aaa=\bbb \let\bbb=\ccc
+ \let\ccc=\ddd \let\ddd=\iii \let\eee=\jjj
+\Put@Direct(171,303){\set@skel@bond{#1}{b}{a}}%
+ % bond between 2 and 3 \@bbb -> \skbonda etc
+\Put@Direct(171,303){\set@skel@bond{#1}{c}{b}}%
+ % bond between 3 and 4 \@ccc -> \skbondb etc
+\Put@Direct(171,303){\set@skel@bond{#1}{d}{c}}%
+ % bond between 4 and 4a \@ddd -> \skbondc etc
+\Put@Direct(171,303){\set@skel@bond{#1}{k}{d}}%
+ % bond between 4a and 8a \@kkk -> \skbondd etc
+\Put@Direct(171,303){\set@skel@bond{#1}{j}{e}}%
+ % bond between 8a and 1 \@jjj -> \skbonde etc
+\Put@Direct(171,303){\set@skel@bond{#1}{a}{f}}%
+ % bond between 1 and 2 \@aaa -> \skbondf etc
+}%
+{%
+ \let\aaa=\jjj\let\bbb=\iii
+ \let\ccc=\eee\let\ddd=\fff
+ \let\eee=\gggA\let\fff=\hhh
+\set@skel@bond{#1}{e}{b}% bond between 4a and 5 \@eee -> \skbondb etc
+\set@skel@bond{#1}{f}{c}% bond between 5 and 6 \@fff -> \skbondc etc
+\set@skel@bond{#1}{g}{d}% bond between 6 and 7 \@ggg -> \skbondd etc
+\set@skel@bond{#1}{h}{e}% bond between 7 and 8 \@hhh -> \skbonde etc
+\set@skel@bond{#1}{i}{f}% bond between 8 and 8a \@iii -> \skbondf etc
+}%
+\endgroup
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r\relax%
+{%
+ \let\ccc=\eee\let\ddd=\fff\let\eee=\gggA\let\fff=\gggA
+ \Put@Direct(0,0){\bondc}% bond between 7 and 8
+ \Put@Direct(0,0){\bonde}% bond between 5 and 6
+}%
+{%
+ \let\fff=\aaa\let\aaa=\bbb
+ \let\bbb=\ccc\let\ccc=\ddd
+ \let\ddd=\iii\let\eee=\jjj
+ \Put@Direct(171,303){\bondf}% bond between 1 and 2
+ \Put@Direct(171,303){\bondb}% bond between 3 and 4
+ \Put@Direct(171,303){\bondd}% bond between 4a and 8a
+}%
+\else\if\member l\relax%
+\else\if\member a\relax%
+{\let\fff=\aaa\let\aaa=\bbb
+ \Put@Direct(171,303){\bondf}% bond between 1 and 2
+}%
+\else\if\member b\relax
+{\let\aaa=\bbb\let\bbb=\ccc
+ \Put@Direct(171,303){\bonda}% bond between 2 and 3
+}%
+\else\if\member c\relax
+{\let\bbb=\ccc\let\ccc=\ddd
+ \Put@Direct(171,303){\bondb}% bond between 3 and 4
+}%
+\else\if\member d\relax%
+{\let\ccc=\ddd\let\ddd=\eee
+ \Put@Direct(171,303){\bondc}% bond between 4 and 4a
+}%
+\else\if\member e\relax%
+{\let\ccc=\eee\let\bbb=\iii%
+ \Put@Direct(0,0){\bondb}% bond between 5 and 4a
+}%
+\else\if\member f\relax%
+{\let\ccc=\eee\let\ddd=\fff
+ \Put@Direct(0,0){\bondc}% bond between 5 and 6
+}%
+\else\if\member g\relax%
+{\let\ddd=\fff\let\eee=\gggA
+ \Put@Direct(0,0){\bondd}% bond between 6 and 7
+}%
+\else\if\member h\relax%
+{\let\eee=\gggA \let\fff=\hhh%
+ \Put@Direct(0,0){\bonde}% bond between 8 and 7
+}%
+\else\if\member i\relax%
+{\let\aaa=\jjj \let\fff=\hhh%
+ \Put@Direct(0,0){\bondf}% bond between 8 and 8a
+}%
+\else\if\member j\relax%
+{\let\fff=\aaa\let\eee=\jjj%
+ \Put@Direct(171,303){\bonde}% bond between 1 and 8a
+}%
+\else\if\member k\relax%
+{\let\aaa=\jjj\let\bbb=\iii%
+ \Put@Direct(0,0){\bonda}% bond between 8a and 4a
+}%
+\else\if\member K\relax%
+{\let\eee=\jjj\let\ddd=\iii%
+ \Put@Direct(171,303){\bondd}% bond between 8a and 4a in the other ring
+}%
+\else\if\member A%left aromatic circle
+ \Put@oCircle(171,506){240}% %circle
+\else\if\member B%left aromatic circle
+ \Put@oCircle(0,203){240}% %circle
+\else
+ \expandafter\twoCH@@R\member//%
+ \def\aax{8a}\def\aay{4a}\def\aaz{10}%
+ \if\@@tmpa 1\relax% % plus charge etc.
+ \putlatom{111}{546}{\@@tmpb}% % left type
+ \else\if\@@tmpa 2\relax%
+ \putlatom{209}{585}{\@@tmpb}% % left type
+ \else\if\@@tmpa 3\relax%
+ \putratom{209}{546}{\@@tmpb}% % right type
+ \else\if\@@tmpa 4\relax%
+ \putratom{209}{431}{\@@tmpb}% % right type
+ \else\if\@@tmpa 5\relax%
+ \putratom{60}{120}{\@@tmpb}% % right type
+ \else\if\@@tmpa 6\relax%
+ \putratom{-38}{68}{\@@tmpb}% % right type
+ \else\if\@@tmpa 7\relax%
+ \putratom{-120}{120}{\@@tmpb}% % right type
+ \else\if\@@tmpa 8\relax%
+ \putlatom{-60}{253}{\@@tmpb}% % left type
+ \else\if\@@tmpa 9\relax%
+ \putratom{60}{253}{\@@tmpb}% % right type
+ \else\ifx\@@tmpa\aaz\relax%
+ \putratom{-38}{282}{\@@tmpb}% % right type
+ \else\ifx\@@tmpa\aax\relax%
+ \putratom{-38}{282}{\@@tmpb}% % right type
+ \else\ifx\@@tmpa\aay\relax%
+ \putratom{60}{253}{\@@tmpb}% % right type
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+% ***********************
+% * setting fused rings *
+% ***********************
+ \expandafter\twoCH@R\member//%
+ \set@fusion@decavt
+\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+\fi\fi\fi\fi\fi\fi%
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\iniflag
+\Put@Direct(0,0){\set@hetatom@sixv{#3}{-2}{2}{7}{0}%
+% \@hclipfalse \if@fclip \global\@hcliptrue \fi%
+% \@gclipfalse \if@eclip \global\@gcliptrue \fi%
+% \@fclipfalse \if@clip \global\@fcliptrue \fi%
+% \@eclipfalse \if@cclip \global\@ecliptrue \fi%
+ \@hclipfalse \if@fclip \@hcliptrue \fi%
+ \@gclipfalse \if@eclip \@gcliptrue \fi%
+ \@fclipfalse \if@clip \@fcliptrue \fi%
+ \@eclipfalse \if@cclip \@ecliptrue \fi%
+\storeclipinfo
+}% %substituents on 5 to 8
+\developclipinfo
+\Put@Direct(0,0){\set@vrtx@decafusevt{#3}%
+% \if@iclip \global\@icliptrue \fi
+% \if@jclip \global\@jcliptrue \fi
+\storeclipinfo
+}%9 %for 4a position, %10 for 8a position
+\developclipinfo
+%to be done after all (exept aclip)
+\Put@Direct(171,303){\set@hetatom@sixv{#3}{-1}{0}{4}{0}%
+%\@clipfalse \if@cclip \global\@cliptrue \fi%
+%\@cclipfalse \if@bclip \global\@ccliptrue \fi%
+%\@bclipfalse \if@aclip \global\@bcliptrue \fi%
+\@clipfalse \if@cclip \@cliptrue \fi%
+\@cclipfalse \if@bclip \@ccliptrue \fi%
+%\@bclipfalse \if@aclip \@bcliptrue \fi%bug fix 2013/03/23
+\@bclipfalse \if@aclip \@bcliptrue \@aclipfalse \fi%
+\storeclipinfo
+}% %substituents on 2 to 4
+\developclipinfo
+{%
+\@fclipfalse%locally cancelled 1999/2/15 by Shinsaku Fujita
+\Put@Direct(171,303){\set@hetatom@sixv{#3}{5}{5}{7}{0}%
+%\@aclipfalse \if@fclip \global\@acliptrue \fi%
+\@aclipfalse \if@fclip \@acliptrue \fi%
+\storeclipinfo
+}% %substituent on 1
+\developclipinfo
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents and exocyclic bonds %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\global\drawsamesubsttrue%2002/05/30 warning on
+{%
+\@fclipfalse \if@aclip \@fcliptrue \fi%
+\Put@Direct(171,303){\setsixringv{#4}{5}{5}{7}{0}}% %substituent on 1
+}%
+\global\drawsamesubstfalse%2002/05/30 warning off
+{%
+\@aclipfalse \if@bclip \@acliptrue \fi%
+\@bclipfalse \if@cclip \@bcliptrue \fi%
+\@cclipfalse \if@clip \@ccliptrue \fi%
+\Put@Direct(171,303){\setsixringv{#4}{-1}{0}{4}{0}}% %substituents on 2 to 4
+}%
+{%
+ \@cclipfalse \if@eclip \@ccliptrue \fi%
+ \@clipfalse \if@fclip \@cliptrue \fi%
+ \@eclipfalse \if@gclip \@ecliptrue \fi%
+ \@fclipfalse \if@hclip \@fcliptrue \fi%
+\Put@Direct(0,0){\setsixringv{#4}{-2}{2}{7}{0}}% %substituents on 5 to 8
+}%
+{\@clipfusefalse \if@iclip \@clipfusetrue \fi%
+ \Put@Direct(171,303){\setatombond{#4}{-8}{5}}% %9 %for 4a position
+}%
+{\@clipfusefalse \if@jclip \@clipfusetrue \fi%
+ \Put@Direct(0,406){\setatombond{#4}{-9}{11}}% %10 for 8a position
+}%
+\end{ShiftPicEnvB}\iniatom\iniflag}% %end of \decaheterovt macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The command |\ylhetpositiont| is used in the |\decaheterovt| command,
+% giving the sift values for drawing a structure as a substituent.
+% \changes{v1.02}{1998/10/18}{Newly added command}
+%
+% \begin{macro}{\ylhetpositiont}
+% \begin{macrocode}
+\def\ylhetpositiont#1#2#3#4#5{%
+\@@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
+\ifnum#5<0\relax%
+\@tmpaa=-\@tmpa\relax \advance\@tmpaa by#2\relax%
+\else\@tmpaa=\@tmpa\relax \advance\@tmpaa by#2\relax\fi
+\ifnum\@tmpaa>#3\relax%
+\ifnum\@tmpaa<#4\relax%
+\ifcase\@tmpaa%0 omit
+ \or
+ \ifx\aaa\empty%
+ \ifx\bbb\empty% aaa and bbb are absent
+ \gdef\@ylii{0}\gdef\@yli{-406}\global\@ylswtrue%\@ylatrue% subst. on 1
+ \else% bbb is present
+ \gdef\@ylii{0}\gdef\@yli{-442}\global\@ylswtrue%\@ylatrue% subst. on 1
+ \fi
+ \else%aaa is present
+ \gdef\@ylii{0}\gdef\@yli{-442}\global\@ylswtrue%\@ylatrue% subst. on 1
+ \fi
+ \or
+ \ifx\bbb\empty
+ \ifx\ccc\empty% aaa and ccc are absent
+ \gdef\@ylii{-171}\gdef\@yli{-303}\global\@ylswtrue%\@ylbtrue% subst. on 2
+ \else%ccc is present
+ \gdef\@ylii{-213}\gdef\@yli{-327}\global\@ylswtrue%\@ylbtrue% subst. on 2
+ \fi
+ \else
+ \gdef\@ylii{-213}\gdef\@yli{-327}\global\@ylswtrue%\@ylbtrue% subst. on 2
+ \fi
+ \or
+ \ifx\ccc\empty
+ \ifx\ddd\empty
+ \ifx\eee\empty% ccc, ddd, eee are absent
+ \gdef\@ylii{-171}\gdef\@yli{-103}\global\@ylswtrue%\@ylctrue%subst. on 3
+ \else%eee is present
+ \gdef\@ylii{-213}\gdef\@yli{-79}\global\@ylswtrue%\@ylctrue% subst. on 3
+ \fi
+ \else%ddd is present
+ \gdef\@ylii{-213}\gdef\@yli{-79}\global\@ylswtrue%\@ylctrue% subst. on 3
+ \fi
+ \else%ccc is present
+ \gdef\@ylii{-213}\gdef\@yli{-79}\global\@ylswtrue%\@ylctrue% subst. on 3
+ \fi
+ \or
+ \ifx\ddd\empty
+ \ifx\fff\empty%ddd and fff are absent
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%\@yldtrue% subst. on 4
+ \else%fff present
+ \gdef\@ylii{0}\gdef\@yli{36}\global\@ylswtrue%\@yldtrue% subst. on 4
+ \fi
+ \else% ddd present
+ \gdef\@ylii{0}\gdef\@yli{36}\global\@ylswtrue%\@yldtrue% subst. on 4
+ \fi
+ \or
+ \ifx\eee\empty
+ \ifx\gggA\empty%eee and ggg are absent
+ \gdef\@ylii{173}\gdef\@yli{-103}\global\@ylswtrue%\@yletrue% subst. on 5
+ \else% ggg is present
+ \gdef\@ylii{223}\gdef\@yli{-79}\global\@ylswtrue%\@yletrue% subst. on 5
+ \fi
+ \else% eee is present
+ \gdef\@ylii{223}\gdef\@yli{-79}\global\@ylswtrue%\@yletrue% subst. on 5
+ \fi
+ \or
+ \ifx\fff\empty
+ \ifx\hhh\empty%fff and hhh are absent
+ \gdef\@ylii{173}\gdef\@yli{-303}\global\@ylswtrue%\@ylftrue% subst. on 6
+ \else%hhh is present
+ \gdef\@ylii{213}\gdef\@yli{-327}\global\@ylswtrue%\@ylftrue% subst. on 6
+ \fi
+ \else%fff is present
+ \gdef\@ylii{213}\gdef\@yli{-327}\global\@ylswtrue%\@ylftrue% subst. on 6
+ \fi
+\fi%end of ifcase
+\fi\fi\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% The macro |\set@vrtx@decafusevt| is used to typeset a hetero
+% atom at each fused vertex (4a or 8a) of a decaheterovt ring.
+%
+% \begin{macro}{\set@vrtx@decafusevt}
+% \begin{macrocode}
+\def\set@vrtx@decafusevt#1{%
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty\else%
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\twoch@r\@membera{}%
+\ifcase\@tmpa\or\or\or
+ \or%%%%4
+ \if\@tmpb a\relax%
+% \global\@icliptrue%
+ \global\@icliptrue%%2001/06/20 by S. Fujita
+ \putratom{135}{280}{\@memberb}% % right type
+ \else\relax
+ \fi
+ \or\or\or
+ \or%8
+ \if\@tmpb a\relax%
+% \global\@jcliptrue%
+ \@jcliptrue%%2001/06/20 by S. Fujita
+ \putlatom{31}{356}{\@memberb}% % left type
+ \else\relax
+ \fi
+\or%9 (= 4a)
+% \global\@icliptrue%
+ \@icliptrue%%2001/06/20 by S. Fujita
+ \putratom{135}{280}{\@memberb}% % right type
+\or%10 (= 8a)
+% \global\@jcliptrue%
+ \@jcliptrue%%2001/06/20 by S. Fujita
+ \putlatom{31}{356}{\@memberb}% % left type
+\fi\fi}%
+}% end of the macro \set@vrtx@decafusevt
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Short-cut commands for fused heterocycles}
+%
+% The macros |\decaheterov|, |\decaheterovb|, and
+% |\decaheterovt| can be used in the form of a fixed |ATOMLIST|.
+% Hence, the resulting commands for drawing a fused heterocyle
+% with one or more nitrogen atoms have an argument |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+%
+% \begin{verbatim}
+% ****************************************************
+% * heterocycles having two fused six-membered rings *
+% * (vertical type) *
+% ****************************************************
+%
+% \quinolinev[BONDLIST]{SUBSLIST}
+% \quinolinevi[BONDLIST]{SUBSLIST}
+% \quinolinevb[BONDLIST]{SUBSLIST}
+% \quinolinevt[BONDLIST]{SUBSLIST}
+%
+% \isoquinolinev[BONDLIST]{SUBSLIST}
+% \isoquinolinevi[BONDLIST]{SUBSLIST}
+% \isoquinolinevb[BONDLIST]{SUBSLIST}
+% \isoquinolinevt[BONDLIST]{SUBSLIST}
+%
+% \quinoxalinev[BONDLIST]{SUBSLIST}
+% \quinoxalinevi[BONDLIST]{SUBSLIST}
+% \quinoxalinevb[BONDLIST]{SUBSLIST}
+% \quinoxalinevt[BONDLIST]{SUBSLIST}
+%
+% \quinazolinev[BONDLIST]{SUBSLIST}
+% \quinazolinevi[BONDLIST]{SUBSLIST}
+% \quinazolinevb[BONDLIST]{SUBSLIST}
+% \quinazolinevt[BONDLIST]{SUBSLIST}
+%
+% \cinnolinev[BONDLIST]{SUBSLIST}
+% \cinnolinevi[BONDLIST]{SUBSLIST}
+% \cinnolinevb[BONDLIST]{SUBSLIST}
+% \cinnolinevt[BONDLIST]{SUBSLIST}
+%
+% \pteridinev[BONDLIST]{SUBSLIST}
+% \pteridinevi[BONDLIST]{SUBSLIST}
+% \pteridinevb[BONDLIST]{SUBSLIST}
+% \pteridinevt[BONDLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one character selected
+% from a to k (K), each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The optiona `A' and `B' typeset aromatic circles.
+% The option
+% `$n+$' ($n=1$ to $10$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+% BONDLIST: list of bonds
+%
+% none or r : decahetero (right-handed)
+% l : decahetero (left-handed)
+% [] : fully saturated form
+% a : 1,2-double bond b : 2,3-double bond
+% c : 4,3-double bond d : 4,4a-double bond
+% e : 4a,5-double bond f : 5,6-double bond
+% g : 6,7-double bond h : 7,8-double bond
+% i : 8,8a-double bond j : 1,8a-double bond
+% k : 4a,8a-double bond
+% K : 4a,8a-double bond in the other ring
+% A : aromatic circle B : aromatic circle
+% {n+} : plus at the n-nitrogen atom (n = 1 to 10)
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 8
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+%
+% for 9 (4a position) and 10 (8a position)
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \quinolinev{3==Cl;2==F}
+% \quinolinev{3==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+%
+% \begin{macro}{\quinolinev}
+% \begin{macro}{\quinolinevi}
+% \begin{macro}{\quinolinevb}
+% \begin{macro}{\quinolinevt}
+% \changes{v1.02}{1998/10/18}{Newly added commands:
+% \cs{quinolinevb} and \cs{quinolinevt}}
+% \begin{macrocode}
+\def\quinolinev{%
+ \@ifnextchar[{\@quinolinev[@}{\@quinolinev[acfhk]}}
+\def\@quinolinev[#1]#2{%
+\iforigpt \typeout{command `quinolinev' %
+ is based on `decaheterov'.}\fi%
+\decaheterov[#1]{1==N}{#2}}
+\def\quinolinevi{%
+ \@ifnextchar[{\@quinolinevi[@}{\@quinolinevi[acfhk]}}
+\def\@quinolinevi[#1]#2{%
+\iforigpt \typeout{command `quinolinevi' %
+ is based on `decaheterovi'.}\fi%
+\decaheterovi[#1]{1==N}{#2}}
+\def\quinolinevb{%
+ \@ifnextchar[{\@quinolinevb[@}{\@quinolinevb[acfhk]}}
+\def\@quinolinevb[#1]#2{%
+\iforigpt \typeout{command `quinolinevb' %
+ is based on `decaheterovb'.}\fi%
+\decaheterovb[#1]{1==N}{#2}}
+\def\quinolinevt{%
+ \@ifnextchar[{\@quinolinevt[@}{\@quinolinevt[acfhk]}}
+\def\@quinolinevt[#1]#2{%
+\iforigpt \typeout{command `quinolinevt' %
+ is based on `decaheterovt'.}\fi%
+\decaheterovt[#1]{1==N}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\isoquinolinev}
+% \begin{macro}{\isoquinolinevi}
+% \begin{macro}{\isoquinolinevb}
+% \begin{macro}{\isoquinolinevt}
+% \changes{v1.02}{1998/10/18}{Newly added commands:
+% \cs{isoquinolinevb} and \cs{isoquinolinevt}}
+% \begin{macrocode}
+\def\isoquinolinev{%
+ \@ifnextchar[{\@isoquinolinev[@}{\@isoquinolinev[acfhk]}}
+\def\@isoquinolinev[#1]#2{%
+\iforigpt \typeout{command `isoquinolinev' %
+ is based on `decaheterov'.}\fi%
+\decaheterov[#1]{2==N}{#2}}
+\def\isoquinolinevi{%
+ \@ifnextchar[{\@isoquinolinevi[@}{\@isoquinolinevi[acfhk]}}
+\def\@isoquinolinevi[#1]#2{%
+\iforigpt \typeout{command `isoquinolinevi' %
+ is based on `decaheterovi'.}\fi%
+\decaheterovi[#1]{2==N}{#2}}%
+\def\isoquinolinevb{%
+ \@ifnextchar[{\@isoquinolinevb[@}{\@isoquinolinevb[acfhk]}}
+\def\@isoquinolinevb[#1]#2{%
+\iforigpt \typeout{command `isoquinolinevb' %
+ is based on `decaheterovi'.}\fi%
+\decaheterovb[#1]{2==N}{#2}}%
+\def\isoquinolinevt{%
+ \@ifnextchar[{\@isoquinolinevt[@}{\@isoquinolinevt[acfhk]}}
+\def\@isoquinolinevt[#1]#2{%
+\iforigpt \typeout{command `isoquinolinevt' %
+ is based on `decaheterovt'.}\fi%
+\decaheterovt[#1]{2==N}{#2}}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\quinoxalinev}
+% \begin{macro}{\quinoxalinevi}
+% \begin{macro}{\quinoxalinevb}
+% \begin{macro}{\quinoxalinevt}
+% \changes{v1.02}{1998/10/18}{Newly added commands:
+% \cs{quinoxalinevb} and \cs{quinoxalinevt}}
+% \begin{macrocode}
+\def\quinoxalinev{%
+ \@ifnextchar[{\@quinoxalinev[@}{\@quinoxalinev[acfhk]}}
+\def\@quinoxalinev[#1]#2{%
+\iforigpt \typeout{command `quinoxalinev' %
+ is based on `decaheterov'.}\fi%
+\decaheterov[#1]{1==N;4==N}{#2}}
+\def\quinoxalinevi{%
+ \@ifnextchar[{\@quinoxalinevi[@}{\@quinoxalinevi[acfhk]}}
+\def\@quinoxalinevi[#1]#2{%but v--->vi 2013/03/22
+\iforigpt \typeout{command `quinoxalinevi' %
+ is based on `decaheterovi'.}\fi%
+\decaheterovi[#1]{1==N;4==N}{#2}}
+\def\quinoxalinevb{%
+ \@ifnextchar[{\@quinoxalinevb[@}{\@quinoxalinevb[acfhk]}}
+\def\@quinoxalinevb[#1]#2{%
+\iforigpt \typeout{command `quinoxalinevb' %
+ is based on `decaheterovb'.}\fi%
+\decaheterovb[#1]{1==N;4==N}{#2}}
+\def\quinoxalinevt{%
+ \@ifnextchar[{\@quinoxalinevt[@}{\@quinoxalinevt[acfhk]}}
+\def\@quinoxalinevt[#1]#2{%
+\iforigpt \typeout{command `quinoxalinevt' %
+ is based on `decaheterovt'.}\fi%
+\decaheterovt[#1]{1==N;4==N}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\quinazolinev}
+% \begin{macro}{\quinazolinevi}
+% \begin{macro}{\quinazolinevb}
+% \begin{macro}{\quinazolinevt}
+% \changes{v1.02}{1998/10/18}{Newly added commands:
+% \cs{quinazolinevb} and \cs{quinazolinevt}}
+% \begin{macrocode}
+\def\quinazolinev{%
+ \@ifnextchar[{\@quinazolinev[@}{\@quinazolinev[acfhk]}}
+\def\@quinazolinev[#1]#2{%
+\iforigpt \typeout{command `quinazolinev' %
+ is based on `decaheterov'.}\fi%
+\decaheterov[#1]{1==N;3==N}{#2}}
+\def\quinazolinevi{%
+ \@ifnextchar[{\@quinazolinevi[@}{\@quinazolinevi[acfhk]}}
+\def\@quinazolinevi[#1]#2{%
+\iforigpt \typeout{command `quinazolinevi' %
+ is based on `decaheterovi'.}\fi%
+\decaheterovi[#1]{1==N;3==N}{#2}}
+\def\quinazolinevb{%
+ \@ifnextchar[{\@quinazolinevb[@}{\@quinazolinevb[acfhk]}}
+\def\@quinazolinevb[#1]#2{%
+\iforigpt \typeout{command `quinazolinevb' %
+ is based on `decaheterovb'.}\fi%
+\decaheterovb[#1]{1==N;3==N}{#2}}
+\def\quinazolinevt{%
+ \@ifnextchar[{\@quinazolinevt[@}{\@quinazolinevt[acfhk]}}
+\def\@quinazolinevt[#1]#2{%
+\iforigpt \typeout{command `quinazolinevt' %
+ is based on `decaheterovt'.}\fi%
+\decaheterovt[#1]{1==N;3==N}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\cinnolinev}
+% \begin{macro}{\cinnolinevi}
+% \begin{macro}{\cinnolinevb}
+% \begin{macro}{\cinnolinevt}
+% \changes{v1.02}{1998/10/18}{Newly added commands:
+% \cs{cinnolinevb} and \cs{cinnolinevt}}
+% \begin{macrocode}
+\def\cinnolinev{%
+ \@ifnextchar[{\@cinnolinev[@}{\@cinnolinev[acfhk]}}
+\def\@cinnolinev[#1]#2{%
+\iforigpt \typeout{command `cinnolinev' %
+ is based on `decaheterov'.}\fi%
+\decaheterov[#1]{1==N;2==N}{#2}}
+\def\cinnolinevi{%
+ \@ifnextchar[{\@cinnolinevi[@}{\@cinnolinevi[acfhk]}}
+\def\@cinnolinevi[#1]#2{%
+\iforigpt \typeout{command `cinnolinevi' %
+ is based on `decaheterovi'.}\fi%
+\decaheterovi[#1]{1==N;2==N}{#2}}
+\def\cinnolinevb{%
+ \@ifnextchar[{\@cinnolinevb[@}{\@cinnolinevb[acfhk]}}
+\def\@cinnolinevb[#1]#2{%
+\iforigpt \typeout{command `cinnolinevb' %
+ is based on `decaheterovb'.}\fi%
+\decaheterovb[#1]{1==N;2==N}{#2}}
+\def\cinnolinevt{%
+ \@ifnextchar[{\@cinnolinevt[@}{\@cinnolinevt[acfhk]}}
+\def\@cinnolinevt[#1]#2{%
+\iforigpt \typeout{command `cinnolinevt' %
+ is based on `decaheterovt'.}\fi%
+\decaheterovt[#1]{1==N;2==N}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\pteridinev}
+% \begin{macro}{\pteridinevi}
+% \begin{macro}{\pteridinevb}
+% \begin{macro}{\pteridinevt}
+% \changes{v1.02}{1998/10/18}{Newly added commands:
+% \cs{pteridinevb} and \cs{pteridinevt}}
+% \begin{macrocode}
+\def\pteridinev{\@ifnextchar[{\@pteridinev[@}{\@pteridinev[acfhk]}}
+\def\@pteridinev[#1]#2{%
+\iforigpt \typeout{command `pteridinev' %
+ is based on `decaheterov'.}\fi%
+\decaheterov[#1]{1==N;3==N;5==N;8==N}{#2}}
+\def\pteridinevi{\@ifnextchar[{\@pteridinevi[@}{\@pteridinevi[acfhk]}}
+\def\@pteridinevi[#1]#2{%
+\iforigpt \typeout{command `pteridinevi' %
+ is based on `decaheterovi'.}\fi%
+\decaheterovi[#1]{1==N;3==N;5==N;8==N}{#2}}
+\def\pteridinevb{\@ifnextchar[{\@pteridinevb[@}{\@pteridinevb[acfhk]}}
+\def\@pteridinevb[#1]#2{%
+\iforigpt \typeout{command `pteridinevb' %
+ is based on `decaheterovb'.}\fi%
+\decaheterovb[#1]{1==N;3==N;5==N;8==N}{#2}}
+\def\pteridinevt{\@ifnextchar[{\@pteridinevt[@}{\@pteridinevt[acfhk]}}
+\def\@pteridinevt[#1]#2{%
+\iforigpt \typeout{command `pteridinevt' %
+ is based on `decaheterovt'.}\fi%
+\decaheterovt[#1]{1==N;3==N;5==N;8==N}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \section{Six-to-five fused heterocycles}
+% \subsection{Vertical type}
+%
+% The standard skeleton of a six-to-five fused heterocycle is selected
+% to have the following locant numbers.
+%
+% \begin{verbatim}
+% **************************
+% * nonahetero derivatives *
+% * (vertical type) *
+% **************************
+% The following numbering is adopted in this macro.
+%
+% 4
+% * 3a(8)
+% 5 * * _____ 3
+% | | |
+% | | |
+% 6 * * * * 2
+% * 7a *
+% 7 (9) 1
+% ^
+% |
+% the original point
+% \end{verbatim}
+%
+% The macro |\nonaheterov| has two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \nonaheterov(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `j' and a uppercase
+% character `A' or `B'.
+%
+% The |BONDLIST| argument contains one
+% character selected from a to j, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The options `A' and `B' represent aromatic circles in two rings.
+% The option `$n+$' ($n=1$ to $9$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+% BONDLIST: list of bonds
+%
+% none or r : aromatic six-membered ring
+% [] : fully saturated form
+% a : 1,2-double bond b : 2,3-double bond
+% c : 3,3a-double bond d : 4,3a-double bond
+% e : 4,5-double bond f : 5,6-double bond
+% g : 6,7-double bond h : 7,7a-double bond
+% i : 1,7a-double bond
+% j : 3a,4a-double bond
+% J : 3a,4a-double bond in the other ring
+% A : aromatic circle (six-membered ring)
+% B : aromatic circle (five-membered ring)
+% {n+} : plus at the n-nitrogen atom (n = 1 to 9)
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 9 atoms)
+%
+% for n = 1 to 7
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position
+% e.g. 1==N for N at 1-position
+% na : Hetero atom at 3a or 7b (n=3 or 7)
+% e.g. 3a==N (or 8==N) for N at 4a-position
+% 7a==N (or 9==N) for N at 8a-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 8
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+%
+% for 8 (3a position) and 9 (7a position)
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges may be regarded as both fused and non-fused
+% positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a to j: see BONDLIST)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \nonaheterov{1==N}{1==Cl;2==F}
+% \nonaheterov[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+%
+% The definition of |\nonaheterov| uses a picture environment and
+% consists of the same unit processes as shown in |\sixheterov|:
+% \begin{enumerate}
+% \item treatment of atom list,
+% \item placing outer skeletons,
+% \item placing inner double bonds,
+% \item setting hetero atoms, and
+% \item placing substituents by using |\setsixringv| several times in
+% a restricted fashion.
+% \end{enumerate}
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/12/5}{Add: fused and spiro rings}
+% \changes{v2.01}{2001/6/20}{The
+% \cs{storeclipinfo} command is added.}
+%
+% \begin{macro}{\nonaheterov}
+% \begin{macro}{\@nona@heterov}
+% \begin{macro}{\@nona@@heterov}
+% \begin{macro}{\@nonaheterov}
+% \begin{macrocode}
+\def\nonaheterov{\@ifnextchar({\@nona@heterov(@}{\@nona@heterov(@)}}
+\def\@nona@heterov(#1){\@ifnextchar[{\@nona@@heterov(#1)[@}%
+{\@nona@@heterov(#1)[@]}}
+\def\@nona@@heterov(#1)[#2]#3#4{\@ifnextchar[%
+{\@nonaheterov(#1)[#2]{#3}{#4}[@}%
+{\@nonaheterov(#1)[#2]{#3}{#4}[@]}}
+\def\@nonaheterov(#1)[#2]#3#4[#5]{%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+% % treatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniflag\iniatom%
+\test@vertix@nonav{#3}%
+% %%%%%%%%%%%%%%%%%%%%%%%
+% % adjustment for (yl) %
+% %%%%%%%%%%%%%%%%%%%%%%%
+\@reset@ylsw%
+\ylposition{#4}{5}{1}{5}{-1}% %substituents on 1 to 3
+\if@ylsw \ifx\@@ylii\empty\relax
+\def\@@ylii{-342}\def\@@yli{0}\fi
+\else
+{\let\ddd=\eee\let\eee=\fff\let\fff=\gggA
+\ylposition{#4}{11}{3}{7}{-1}% %substituents on 5 to 7
+}%
+\fi
+\if@ylsw \ifx\@@ylii\empty\relax
+\def\@@ylii{0}\def\@@yli{0}\fi
+\else
+{\let\aaa=\hhh
+\ylposition{#4}{-3}{0}{2}{0}%%substituent on 4
+}%
+\fi
+\if@ylsw \ifx\@@ylii\empty\relax
+\def\@@ylii{0}\def\@@yli{0}\fi
+\else
+{%
+\clipdetection%
+\@clipfusefalse \if@iclip \@clipfusetrue \fi%
+\ylatombondposition{#4}{-8}{7}% %9 %for 7a position
+}%
+\fi
+\if@ylsw \ifx\@@ylii\empty\relax
+\def\@@ylii{-171}\def\@@yli{-103}\fi
+\else
+{%
+\clipdetection%
+\@clipfusefalse \if@jclip \@clipfusetrue \fi%
+\ylatombondposition{#4}{-7}{1}% %8 for 3a position
+}%
+\fi
+\if@ylsw \ifx\@@ylii\empty\relax
+\def\@@ylii{-171}\def\@@yli{-303}\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(1200,880)(-\shiftii,-\shifti){nonaheterov}%2002/4/30 by S. Fujita
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+\begingroup
+\resetbdsw%
+\@bond@@omit{#5}%
+{\let\fff=\jjj \let\eee=\iii%
+\Put@Direct(342,0){\set@skel@bond{#1}{a}{c}}%
+ % bond between 1 and 2 \@aaa -> \skbondc etc
+\Put@Direct(342,0){\set@skel@bond{#1}{b}{b}}%
+ % bond between 2 and 3 \@bbb -> \skbondb etc
+\Put@Direct(342,0){\set@skel@longbond{#1}{c}{skbondhoriz}}%
+ % bond between 3 and 3a \@ccc -> \skbondhoriz etc
+\Put@Direct(342,0){\set@skel@bond{#1}{j}{e}}%
+ % bond between 3a and 7a \@jjj -> \skbonde etc
+\Put@Direct(342,0){\set@skel@bond{#1}{i}{d}}%
+ % bond between 7a and 1 \@iii -> \skbondd etc
+}%
+{\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA%
+ \let\ccc=\iii\let\bbb=\jjj%
+\set@skel@bond{#1}{d}{a}% bond between 3a and 4 \@ddd -> \skbonda etc
+\set@skel@bond{#1}{h}{c}% bond between 7 and 7a \@hhh -> \skbondc etc
+\set@skel@bond{#1}{g}{d}% bond between 6 and 7 \@ggg -> \skbondd etc
+\set@skel@bond{#1}{f}{e}% bond between 5 and 6 \@fff -> \skbonde etc
+\set@skel@bond{#1}{e}{f}% bond between 4 and 5 \@eee -> \skbondf etc
+}%
+\endgroup
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r\relax%
+{\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA%
+ \let\ccc=\iii\let\bbb=\jjj%
+ \Put@Direct(0,0){\bondb}% bond between 3a and 7a
+ \Put@Direct(0,0){\bondf}% bond between 4 and 5
+ \Put@Direct(0,0){\bondd}% bond between 6 and 7
+}%
+\else\if\member l\relax%
+\else\if\member a\relax%
+ \Put@Direct(342,0){\bondc}% bond between 3 and 4
+\else\if\member b\relax%
+ \Put@Direct(342,0){\bondb}% bond between 2 and 3
+\else\if\member c\relax%
+ \Put@Direct(342,0){\bondhoriz}% bond between 3 and 3a
+\else\if\member d\relax%
+{\let\aaa=\hhh \let\bbb=\jjj%
+ \Put@Direct(0,0){\bonda}% bond between 4 and 3a
+}%
+\else\if\member e\relax%
+{\let\aaa=\hhh \let\fff=\gggA%
+ \Put@Direct(0,0){\bondf}% bond between 4 and 5
+}%
+\else\if\member f\relax%
+{\let\eee=\fff \let\fff=\gggA%
+ \Put@Direct(0,0){\bonde}% bond between 5 and 6
+}%
+\else\if\member g\relax%
+{\let\ddd=\eee \let\eee=\fff%
+ \Put@Direct(0,0){\bondd}% bond between 6 and 7
+}%
+\else\if\member h\relax%
+{\let\ccc=\iii \let\ddd=\eee%
+ \Put@Direct(0,0){\bondc}% bond between 7 and 7a
+}%
+\else\if\member i\relax%
+{\let\eee=\iii%
+ \Put@Direct(342,0){\bondd}% bond between 1 and 7a
+}%
+\else\if\member j\relax%
+{\let\ccc=\iii\let\bbb=\jjj%
+ \Put@Direct(0,0){\bondb}% bond between 7a and 3a
+}%
+\else\if\member J\relax%
+{\let\eee=\iii\let\fff=\jjj%
+ \Put@Direct(342,0){\bonde}% bond between 7a and 3a
+}%
+\else\if\member A\relax%left aromatic circle
+ \Put@oCircle(0,203){240}% %circle
+\else\if\member B\relax%left aromatic circle
+ \Put@oCircle(342,173){180}% %circle 1993/11/20 S.Fujita
+\else
+ \expandafter\twoCH@@R\member//%
+ \def\aax{7a}\def\aay{3a}%
+ \if\@@tmpa 1\relax%
+ \putratom{304}{68}{\@@tmpb}% % right type
+ \else\if\@@tmpa 2\relax%
+ \putratom{402}{120}{\@@tmpb}% % right type
+ \else\if\@@tmpa 3\relax%
+ \putratom{402}{253}{\@@tmpb}% % right type
+ \else\if\@@tmpa 4\relax%
+ \putratom{-38}{282}{\@@tmpb}% % right type
+ \else\if\@@tmpa 5\relax%
+ \putlatom{-60}{120}{\@@tmpb}% % left type
+ \else\if\@@tmpa 6\relax%
+ \putlatom{-60}{253}{\@@tmpb}% % left type
+ \else\if\@@tmpa 7\relax%
+ \putratom{-38}{68}{\@@tmpb}% % right type
+ \else\if\@@tmpa 8\relax%
+ \putratom{60}{253}{\@@tmpb}% % right type
+ \else\ifx\@@tmpa\aax\relax%
+ \putratom{60}{253}{\@@tmpb}% % right type
+ \else\ifx\@@tmpa\aay\relax%
+ \putratom{60}{120}{\@@tmpb}% % right type
+ \else\if\@@tmpa 9\relax%
+ \putratom{60}{120}{\@@tmpb}% % right type
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+% ***********************
+% * setting fused rings *
+% ***********************
+ \expandafter\twoCH@R\member//%
+ \set@fusion@nonav
+\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+\fi\fi\fi\fi\fi\fi%
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms and spiro rings %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniflag\iniatom%
+\@tmpclipfalse
+%position 7 should be treated before
+%position 1 (using the same \if@clip)
+\Put@Direct(0,0){\set@hetatom@sixv{#3}{11}{3}{7}{-1}%
+% \@gclipfalse \if@fclip \global\@gcliptrue \fi%
+% \@fclipfalse \if@eclip \global\@fcliptrue \fi%
+% \@eclipfalse \if@clip \global\@ecliptrue \fi%
+ \@gclipfalse \if@fclip \@gcliptrue \fi%
+ \@fclipfalse \if@eclip \@fcliptrue \fi%
+ \@eclipfalse \if@clip \@ecliptrue \fi%
+ \@clipfalse%2006/9/5added
+\storeclipinfo
+}%substituents on 5 to 7
+%\developclipinfo%2006/9/5 deleted
+\Put@Direct(342,0){\set@hetatom@sixv{#3}{5}{1}{5}{-1}%
+% \if@bclip \global\@bcliptrue\fi
+% \if@cclip \global\@ccliptrue\fi
+% \if@clip \global\@cliptrue\fi
+\storeclipinfo
+}% %substituents on 1 to 3
+%\developclipinfo%2006/9/5 deleted
+\Put@Direct(0,0){\set@hetatom@sixv{#3}{-3}{0}{2}{0}%
+% \@aclipfalse \if@aclip \global\@hcliptrue \fi%
+ \@hclipfalse \if@aclip \@hcliptrue \fi%
+\storeclipinfo
+}%%substituent on 4
+%\developclipinfo%2006/9/5 deleted
+\Put@Direct(0,0){\set@vrtx@nonafusev{#3}%
+ \@tmpclipfalse
+% \if@iclip \global\@tmpcliptrue \fi
+% \if@jclip \global\@icliptrue \fi
+% \if@tmpclip \global\@jcliptrue \fi
+ \if@iclip \@tmpcliptrue \fi
+% \if@jclip \@icliptrue \fi
+% \if@tmpclip \@jcliptrue \fi
+ \if@jclip \@icliptrue \else \@iclipfalse \fi
+ \if@tmpclip \@jcliptrue \else \@jclipfalse \fi
+\storeclipinfo
+%%%====\clipinfo====%%%2006/9/5test
+}% fused positions
+\developclipinfo
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents and exocyclic bonds %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\Put@Direct(342,0){\setsixringv{#4}{5}{1}{5}{-1}}% %substituents on 1 to 3
+{\@clipfalse \if@eclip \@cliptrue \fi% %substituents on 5 to 7
+ \@eclipfalse \if@fclip \@ecliptrue \fi%
+ \@fclipfalse \if@gclip \@fcliptrue \fi%
+\Put@Direct(0,0){\setsixringv{#4}{11}{3}{7}{-1}}%
+}%
+{\@aclipfalse \if@hclip \@acliptrue \fi% %substituent on 4
+\Put@Direct(0,0){\setsixringv{#4}{-3}{0}{2}{0}}%
+}%
+{\@clipfusefalse \if@iclip \@clipfusetrue \fi%
+ \Put@Direct(171,103){\setatombond{#4}{-8}{7}}% %9 for 7a position
+}%
+{\@clipfusefalse \if@jclip \@clipfusetrue \fi%
+ \Put@Direct(171,303){\setatombond{#4}{-7}{1}}% %8 for 3a position
+}%
+\end{ShiftPicEnvB}\iniatom\iniflag}% %end of \nonaheterov macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The macro |\test@vertix@nonav| is used to test the presence of
+% a hetero atom or a spiro substituent on a vertex of the
+% nonaheterov nucleus.
+% \changes{v2.00}{1998/12/05}{New command: \cs{test@vertix@nonav}}
+%
+% \begin{macro}{\test@vertix@nonav}
+% \begin{macrocode}
+\def\test@vertix@nonav#1{%
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty\else%
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\twoch@r\@membera{}%
+\ifcase\@tmpa%
+ \or%
+ \if\@tmpb s\relax\def\ddd{}\else\def\ddd{@}\fi
+ \or%2
+ \if\@tmpb s\relax\def\ccc{}\else\def\ccc{@}\fi
+ \or%3%
+ \if\@tmpb a\relax%
+ \def\jjj{@}%3a
+ \else\if\@tmpb s\relax%
+ \def\bbb{}%3
+ \else\if\@tmpb h\relax%
+ \def\bbb{@}%3
+ \else\ifx\@tmpb\empty\relax%
+ \def\bbb{@}%3
+ \fi\fi\fi\fi%
+ \or%4
+ \if\@tmpb s\relax\def\hhh{}\else\def\hhh{@}\fi
+ \or%5
+ \if\@tmpb s\relax\def\gggA{}\else\def\gggA{@}\fi
+ \or%6
+ \if\@tmpb s\relax\def\fff{}\else\def\fff{@}\fi
+ \or%7
+ \if\@tmpb a%
+ \xdef\iii{@}%7a
+ \else\if\@tmpb s\relax%
+ \xdef\eee{}%7s
+ \else\if\@tmpb h\relax%
+ \xdef\eee{@}%7h
+ \else\ifx\@tmpb\empty\relax%
+ \xdef\eee{@}%7
+ \fi\fi\fi\fi%
+\or%8 (= 3a)
+ \if\@tmpb s\relax\def\jjj{}\else\def\jjj{@}\fi
+\or%9 (= 7a)
+ \if\@tmpb s\relax\def\iii{}\else\def\iii{@}\fi
+\fi\fi}}% end of \test@vertix@nonav
+% \end{macrocode}
+% \end{macro}
+%
+% The macro |\set@vrtx@nonafusev| is used to set
+% a hetero atom or on a vertex of a bridgehead location.
+%
+% \begin{macro}{\set@vrtx@nonafusev}
+% \begin{macrocode}
+\def\set@vrtx@nonafusev#1{%
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty \relax\else%
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\twoch@r\@membera{}%
+\ifcase\@tmpa\or\or
+ \or%%%%3
+ \if\@tmpb a\relax%
+% \global\@icliptrue%
+ \@icliptrue%20001/06/20 by S. Fujita
+ \putlatom{207}{280}{\@memberb}% % left type
+ \else\relax
+ \fi
+ \or\or\or
+ \or%7
+ \if\@tmpb a\relax%
+% \global\@jcliptrue%
+ \@jcliptrue%%20001/06/20 by S. Fujita
+ \putlatom{207}{65}{\@memberb}% % left type
+ \else\relax
+ \fi
+\or%8 (= 3a)
+% \global\@icliptrue%
+ \@icliptrue%%20001/06/20 by S. Fujita
+ \putlatom{207}{280}{\@memberb}% % left type
+\or%9 (= 7a)
+% \global\@jcliptrue%
+ \@jcliptrue%%20001/06/20 by S. Fujita
+ \putlatom{207}{65}{\@memberb}% % left type
+\fi\fi}%
+}% end of the macro \set@vrtx@nonafusev
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Inverse vertical type}
+%
+% The standard skeleton of a six-to-five fused heterocycle is selected
+% to have the following locant numbers.
+%
+% \begin{verbatim}
+% **********************************
+% * nonahetero derivatives *
+% * (vertical type, inverse type) *
+% **********************************
+% The following numbering is adopted in this macro.
+%
+% 7(10) 1
+% * 7a *
+% 6 * * * * 2
+% | | |
+% | |_____|
+% 5 * * 3
+% * 3a(8)
+% 4
+% ^
+% |
+% the original point
+% \end{verbatim}
+%
+% The macro |\nonaheterovi| has two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \nonaheterovi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `j' and a uppercase
+% character `A' or `B'.
+%
+% The |BONDLIST| argument contains one
+% character selected from a to j, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The options `A' and `B' represent aromatic circles in two rings.
+% The option `$n+$' ($n=1$ to $9$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+% BONDLIST: list of bonds
+%
+% none or r : aromatic six-membered ring
+% [] : fully saturated form
+% a : 1,2-double bond b : 2,3-double bond
+% c : 3,3a-double bond d : 4,3a-double bond
+% e : 4,5-double bond f : 5,6-double bond
+% g : 6,7-double bond h : 7,7a-double bond
+% i : 1,7a-double bond
+% j : 3a,4a-double bond
+% J : 3a,4a-double bond in the other ring
+% A : aromatic circle (six-membered ring)
+% B : aromatic circle (five-membered ring)
+% {n+} : plus at the n-nitrogen atom (n = 1 to 9)
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 9 atoms)
+%
+% for n = 1 to 7
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position
+% e.g. 1==N for N at 1-position
+% na : Hetero atom at 3a or 7b (n=3 or 7)
+% e.g. 3a==N (or 8==N) for N at 4a-position
+% 7a==N (or 9==N) for N at 8a-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 8
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+%
+% for 8 (3a position) and 9 (7a position)
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges may be regarded as both fused and non-fused
+% positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a to j: see BONDLIST)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \nonaheterovi{1==N}{1==Cl;2==F}
+% \nonaheterovi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+%
+% The definition of |\nonaheterovi| uses a picture environment and
+% consists of the same unit processes as shown in |\sixheterov|:
+% \begin{enumerate}
+% \item treatment of atom list,
+% \item placing outer skeletons,
+% \item placing inner double bonds,
+% \item setting hetero atoms, and
+% \item placing substituents by using |\setsixringv| several times in
+% a restricted fashion.
+% \end{enumerate}
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/12/05}{Added: spiro and fused rings}
+% \changes{v2.01}{2001/6/20}{The
+% \cs{storeclipinfo} command is added.}
+%
+% \begin{macro}{\nonaheterovi}
+% \begin{macro}{\@nona@heterovi}
+% \begin{macro}{\@nona@@heterovi}
+% \begin{macro}{\@nonaheterovi}
+% \begin{macrocode}
+\def\nonaheterovi{\@ifnextchar({\@nona@heterovi(@}{\@nona@heterovi(@)}}
+\def\@nona@heterovi(#1){\@ifnextchar[{\@nona@@heterovi(#1)[@}%
+{\@nona@@heterovi(#1)[@]}}
+\def\@nona@@heterovi(#1)[#2]#3#4{\@ifnextchar[%
+{\@nonaheterovi(#1)[#2]{#3}{#4}[@}%
+{\@nonaheterovi(#1)[#2]{#3}{#4}[@]}}
+\def\@nonaheterovi(#1)[#2]#3#4[#5]{%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+% % treatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniflag\iniatom%initialize
+\test@vertix@nonavi{#3}%
+% %%%%%%%%%%%%%%%%%%%%%%%
+% % adjustment for (yl) %
+% %%%%%%%%%%%%%%%%%%%%%%%
+\@reset@ylsw%
+\ylposition{#4}{0}{0}{4}{0}% %substituents on 1 to 3
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-342}\def\@@yli{0}\fi
+\else
+{\let\ddd=\eee\let\eee=\fff\let\fff=\gggA
+\ylposition{#4}{0}{3}{7}{0}%%substituents on 4 to 6
+}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\else
+{\let\aaa=\hhh
+\ylposition{#4}{-6}{0}{2}{0}%%substituent on 7
+}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\else
+{%
+\clipdetection%
+\@clipfusefalse \if@iclip \@clipfusetrue \fi%
+\ylatombondposition{#4}{-7}{7}% %8 for 3a position
+}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-171}\def\@@yli{-103}\fi
+\else
+{%
+\clipdetection%
+\@clipfusefalse \if@jclip \@clipfusetrue \fi%
+\ylatombondposition{#4}{-8}{1}% %9 for 7a position
+}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-171}\def\@@yli{-303}\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(1200,880)(-\shiftii,-\shifti){nonaheterovi}%2002/4/30 by S. Fujita
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+\begingroup
+\resetbdsw%
+\@bond@@omit{#5}%
+{\let\fff=\jjj \let\eee=\iii%
+\Put@Direct(342,0){\set@skel@bond{#1}{a}{a}}%
+ % bond between 1 and 2 \@aaa -> \skbonda etc
+\Put@Direct(342,0){\set@skel@bond{#1}{b}{b}}%
+ % bond between 2 and 3 \@bbb -> \skbondb etc
+\Put@Direct(342,0){\set@skel@longbond{#1}{c}{skbondhorizi}}%
+ % bond between 3 and 3a \@ccc -> \skbondhoriz etc
+\Put@Direct(342,0){\set@skel@bond{#1}{j}{e}}%
+ % bond between 3a and 7a \@jjj -> \skbonde etc
+\Put@Direct(342,0){\set@skel@bond{#1}{i}{f}}%
+ % bond between 7a and 1 \@iii -> \skbondf etc
+}%
+{\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA%
+ \let\ccc=\iii\let\bbb=\jjj%
+\set@skel@bond{#1}{h}{a}% bond between 7a and 7 \@hhh -> \skbonda etc
+\set@skel@bond{#1}{d}{c}% bond between 3a and 4 \@ddd -> \skbondc etc
+\set@skel@bond{#1}{e}{d}% bond between 4 and 5 \@eee -> \skbondd etc
+\set@skel@bond{#1}{f}{e}% bond between 5 and 6 \@fff -> \skbonde etc
+\set@skel@bond{#1}{g}{f}% bond between 6 and 7 \@ggg -> \skbondf etc
+}%
+\endgroup
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r\relax%
+{\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA
+ \let\ccc=\iii\let\bbb=\jjj
+ \Put@Direct(0,0){\bondb}% bond between 3a and 7a
+ \Put@Direct(0,0){\bondf}% bond between 6 and 7
+ \Put@Direct(0,0){\bondd}% bond between 4 and 5
+}%
+\else\if\member l\relax%
+\else\if\member a\relax%
+ \Put@Direct(342,0){\bonda}% bond between 1 and 2
+\else\if\member b\relax%
+ \Put@Direct(342,0){\bondb}% bond between 2 and 3
+\else\if\member c\relax%
+ \Put@Direct(342,0){\bondhorizi}% bond between 3 and 3a
+\else\if\member d\relax%
+{\let\ccc=\iii \let\ddd=\eee%
+ \Put@Direct(0,0){\bondc}% bond between 4 and 3a
+}%
+\else\if\member e\relax%
+{\let\ddd=\eee\let\eee=\fff%
+ \Put@Direct(0,0){\bondd}% bond between 4 and 5
+}%
+\else\if\member f\relax%
+{\let\eee=\fff \let\fff=\gggA%
+ \Put@Direct(0,0){\bonde}% bond between 5 and 6
+}%
+\else\if\member g\relax%
+{\let\aaa=\hhh \let\fff=\gggA%
+ \Put@Direct(0,0){\bondf}% bond between 7 and 6
+}%
+\else\if\member h\relax%
+{\let\aaa=\hhh \let\bbb=\jjj%
+ \Put@Direct(0,0){\bonda}% bond between 7 and 7a
+}%
+\else\if\member i\relax%
+{\let\fff=\jjj%
+ \Put@Direct(342,0){\bondf}% bond between 1 and 7a
+}%
+\else\if\member j\relax%
+{\let\ccc=\iii\let\bbb=\jjj%
+ \Put@Direct(0,0){\bondb}% bond between 7a and 3a
+}%
+\else\if\member J\relax%
+{\let\eee=\iii\let\fff=\jjj%
+ \Put@Direct(342,0){\bonde}% bond between 7a and 3a
+}%
+\else\if\member A\relax%left aromatic circle
+ \Put@oCircle(0,203){240}% %circle
+\else\if\member B\relax%left aromatic circle
+ \Put@oCircle(342,233){180}% %circle 1993/11/20 S.Fujita
+\else
+ \expandafter\twoCH@@R\member//%
+ \def\aax{7a}\def\aay{3a}%
+ \if\@@tmpa 1\relax%
+ \putratom{304}{282}{\@@tmpb}% % right type
+ \else\if\@@tmpa 3\relax%
+ \putratom{402}{120}{\@@tmpb}% % right type
+ \else\if\@@tmpa 2\relax%
+ \putratom{402}{253}{\@@tmpb}% % right type
+ \else\if\@@tmpa 7\relax%
+ \putratom{-38}{282}{\@@tmpb}% % right type
+ \else\if\@@tmpa 6\relax%
+ \putlatom{-60}{120}{\@@tmpb}% % left type
+ \else\if\@@tmpa 5\relax%
+ \putlatom{-60}{253}{\@@tmpb}% % left type
+ \else\if\@@tmpa 4\relax%
+ \putratom{-38}{68}{\@@tmpb}% % right type
+ \else\if\@@tmpa 9\relax%
+ \putratom{60}{253}{\@@tmpb}% % right type
+ \else\ifx\@@tmpa\aax\relax%
+ \putratom{60}{253}{\@@tmpb}% % right type
+ \else\ifx\@@tmpa\aay\relax%
+ \putratom{60}{120}{\@@tmpb}% % right type
+ \else\if\@@tmpa 8\relax%
+ \putratom{60}{120}{\@@tmpb}% % right type
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+% ***********************
+% * setting fused rings *
+% ***********************
+ \expandafter\twoCH@R\member//%
+ \set@fusion@nonavi
+\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+\fi\fi\fi\fi\fi\fi%
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms and spiro rings %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniflag
+\Put@Direct(342,0){\set@hetatom@sixv{#3}{0}{0}{4}{0}%
+% \if@aclip \global\@acliptrue\fi
+% \if@bclip \global\@bcliptrue\fi
+% \if@cclip \global\@ccliptrue\fi
+ \@xclipfalse \if@aclip \@xcliptrue \@aclipfalse\fi%avoid conflict position 7 2013/03/24
+\storeclipinfo
+}% %substituents on 1 to 3
+\developclipinfo
+\Put@Direct(0,0){\set@hetatom@sixv{#3}{0}{3}{7}{0}%
+ \@gclipfalse \if@fclip \@gcliptrue \fi%
+ \@fclipfalse \if@eclip \@fcliptrue \fi%
+ \@eclipfalse \if@clip \@ecliptrue \fi
+\storeclipinfo
+}%substituents on 4 to 6
+\developclipinfo
+\Put@Direct(0,0){\set@hetatom@sixv{#3}{-6}{0}{2}{0}%
+ \@hclipfalse \if@aclip \@hcliptrue \fi
+\storeclipinfo
+}%%substituent on 7
+\developclipinfo
+\Put@Direct(0,0){\set@vrtx@nonafusevi{#3}%
+\storeclipinfo
+}% fused positions
+\developclipinfo
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents and exocyclic bonds %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+{%
+\@aclipfalse \if@xclip \@acliptrue \fi% %avoid conflict 2013/3/24
+\Put@Direct(342,0){\setsixringv{#4}{0}{0}{4}{0}}% %substituents on 1 to 3
+}%
+{\@clipfalse \if@eclip \@cliptrue \fi% %substituents on 4 to 6
+ \@eclipfalse \if@fclip \@ecliptrue \fi%
+ \@fclipfalse \if@gclip \@fcliptrue \fi%
+\Put@Direct(0,0){\setsixringv{#4}{0}{3}{7}{0}}%
+}%
+{\@aclipfalse \if@hclip \@acliptrue \fi% %substituent on 7
+\Put@Direct(0,0){\setsixringv{#4}{-6}{0}{2}{0}}%
+}%
+{\@clipfusefalse \if@iclip \@clipfusetrue \fi%
+ \Put@Direct(171,103){\setatombond{#4}{-7}{7}}% %8 for 3a position
+}%
+{\@clipfusefalse \if@jclip \@clipfusetrue \fi%
+ \Put@Direct(171,303){\setatombond{#4}{-8}{1}}% %9 for 7a position
+}%
+\end{ShiftPicEnvB}\iniatom\iniflag}% %end of \nonaheterovi macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The macro |\test@vertix@nonavi| is used to test the presence of
+% a hetero atom or a spiro substituent on a vertex of the
+% nonaheterovi nucleus.
+% \changes{v2.00}{1998/12/05}{New command: \cs{test@vertix@nonavi}}
+%
+% \begin{macro}{\test@vertix@nonavi}
+% \begin{macrocode}
+\def\test@vertix@nonavi#1{%
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty\else%
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\twoch@r\@membera{}%
+\ifcase\@tmpa%
+ \or%
+ \if\@tmpb s\relax\def\aaa{}\else\def\aaa{@}\fi
+ \or%2
+ \if\@tmpb s\relax\def\bbb{}\else\def\bbb{@}\fi
+ \or%3%
+ \if\@tmpb a\relax%
+ \def\iii{@}%3a
+ \else\if\@tmpb s\relax%
+ \def\ccc{}%3
+ \else\if\@tmpb h\relax%
+ \def\ccc{@}%3
+ \else\ifx\@tmpb\empty\relax%
+ \def\ccc{@}%3
+ \fi\fi\fi\fi%
+ \or%4
+ \if\@tmpb s\relax\def\eee{}\else\def\eee{@}\fi
+ \or%5
+ \if\@tmpb s\relax\def\fff{}\else\def\fff{@}\fi
+ \or%6
+ \if\@tmpb s\relax\def\gggA{}\else\def\gggA{@}\fi
+ \or%7
+ \if\@tmpb a%
+ \xdef\jjj{@}%7a
+ \else\if\@tmpb s\relax%
+ \xdef\hhh{}%7s
+ \else\if\@tmpb h\relax%
+ \xdef\hhh{@}%7h
+ \else\ifx\@tmpb\empty\relax%
+ \xdef\hhh{@}%7
+ \fi\fi\fi\fi%
+\or%8 (= 3a)
+ \if\@tmpb s\relax\def\iii{}\else\def\iii{@}\fi
+\or%9 (= 7a)
+ \if\@tmpb s\relax\def\jjj{}\else\def\jjj{@}\fi
+\fi\fi}}
+% \end{macrocode}
+% \end{macro}
+%
+% The macro |\set@vrtx@nonafusevi| is used to set
+% a hetero atom on a vertex of a bridgehead location.
+% \changes{v2.00}{1998/12/05}{New command: \cs{set@vrtx@nonafusevi}}
+%
+% \begin{macro}{\set@vrtx@nonafusevi}
+% \begin{macrocode}
+\def\set@vrtx@nonafusevi#1{%
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty\else%
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\twoch@r\@membera{}%
+\ifcase\@tmpa\or\or
+ \or%%%%3
+ \if\@tmpb a\relax%
+% \global\@icliptrue%
+ \@icliptrue%%20001/06/20 by S. Fujita
+ \putlatom{207}{65}{\@memberb}% % left type
+ \else\relax
+ \fi
+ \or\or\or
+ \or%7
+ \if\@tmpb a\relax%
+% \global\@jcliptrue%
+ \@jcliptrue%%20001/06/20 by S. Fujita
+ \putlatom{207}{280}{\@memberb}% % left type
+ \else\relax
+ \fi
+\or%8 (= 3a)
+% \global\@icliptrue%
+ \@icliptrue%%20001/06/20 by S. Fujita
+ \putlatom{207}{65}{\@memberb}% % left type
+\or%9 (= 7a)
+% \global\@jcliptrue%
+ \@jcliptrue%%20001/06/20 by S. Fujita
+ \putlatom{207}{280}{\@memberb}% % left type
+\fi\fi}%
+}% end of the macro \set@vrtx@nonafusevi
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Short-cut commands for fused heterocycles}
+%
+% The macros |\nonaheterov| and |\nonaheterovi| can be used in the
+% form of a fixed |ATOMLIST|. Hence, the resulting commands for
+% drawing a fused heterocyle with one or more nitrogen atoms
+% have an argument |SUBSLIST| as well as an optional argument |BONDLIST|.
+%
+% \begin{verbatim}
+% **********************************************************
+% * heterocycles having fused six- and five-membered rings *
+% * (vertical type) *
+% **********************************************************
+%
+% N-heterocycles:
+%
+% \indolev[BONDLIST]{SUBSLIST}
+% \indolevi[BONDLIST]{SUBSLIST}
+%
+% \isoindolev[BONDLIST]{SUBSLIST}
+% \isoindolevi[BONDLIST]{SUBSLIST}
+%
+% \indolizinev[BONDLIST]{SUBSLIST}
+% \indolizinevi[BONDLIST]{SUBSLIST}
+% (different from the IUPAC numbering)
+%
+% \purinev[BONDLIST]{SUBSLIST}
+% \purinevi[BONDLIST]{SUBSLIST}
+% (different from the IUPAC numbering)
+%
+% O-heterocycles:
+%
+% \benzofuranev[BONDLIST]{SUBSLIST}
+% \benzofuranevi[BONDLIST]{SUBSLIST}
+%
+% \isobenzofuranevi[BONDLIST]{SUBSLIST}
+%
+% \benzoxazolev[BONDLIST]{SUBSLIST}
+% \benzoxazolevi[BONDLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one
+% character selected from a to j, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The optiona `A' and `B' typeset aromatic circles.
+% The option
+% `$n+$' ($n=1$ to $9$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+% BONDLIST: list of bonds
+%
+% none or r : aromatic six-membered ring
+% [] : fully saturated form
+% a : 1,2-double bond b : 2,3-double bond
+% c : 3,3a-double bond d : 4,3a-double bond
+% e : 4,5-double bond f : 5,6-double bond
+% g : 6,7-double bond h : 7,7a-double bond
+% i : 1,7a-double bond
+% J : 3a,4a-double bond in the other ring
+% A : aromatic circle
+% {n+} : plus at the n-nitrogen atom (n = 1 to 9)
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 8
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+%
+% for 8 (3a position) and 9 (7a position)
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+%
+% e.g.
+%
+% \indolev{1==N}{1==Cl;2==F}
+% \indolev[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+%
+% \begin{macro}{\purinev}
+% \begin{macro}{\purinevi}
+% \begin{macrocode}
+\def\purinev{\@ifnextchar[{\@purinev[@}{\@purinev[ra]}}
+\def\@purinev[#1]#2{%
+\iforigpt \typeout{command `purinev' %
+ is based on `nonaheterov'.}\fi%
+\nonaheterov[#1]{1==N;3==N;5==N;7==N}{#2}}
+\def\purinevi{\@ifnextchar[{\@purinevi[@}{\@purinevi[ra]}}
+\def\@purinevi[#1]#2{%
+\iforigpt \typeout{command `purinevi' %
+ is based on `nonaheterovi'.}\fi%
+\nonaheterovi[#1]{1==N;3==N;5==N;7==N}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\indolev}
+% \begin{macro}{\indolevi}
+% \begin{macrocode}
+\def\indolev{\@ifnextchar[{\@indolev[@}{\@indolev[rb]}}
+\def\@indolev[#1]#2{%
+\iforigpt \typeout{command `indolev' %
+ is based on `nonaheterov'.}\fi%
+\nonaheterov[#1]{1==N}{#2}}
+\def\indolevi{\@ifnextchar[{\@indolevi[@}{\@indolevi[rb]}}
+\def\@indolevi[#1]#2{%
+\iforigpt \typeout{command `indolevi' %
+ is based on `nonaheterovi'.}\fi%
+\nonaheterovi[#1]{1==N}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\indolizinev}
+% \begin{macro}{\indolizinevi}
+% \begin{macrocode}
+\def\indolizinev{%
+ \@ifnextchar[{\@indolizinev[@}{\@indolizinev[aceg]}}
+\def\@indolizinev[#1]#2{%
+\iforigpt \typeout{command `indolizinev' %
+ is based on `nonaheterov'.}\fi%
+\nonaheterov[#1]{7a==N}{#2}}
+\def\indolizinevi{%
+ \@ifnextchar[{\@indolizinevi[@}{\@indolizinevi[aceg]}}
+\def\@indolizinevi[#1]#2{%
+\iforigpt \typeout{command `indolizinevi' %
+ is based on `nonaheterovi'.}\fi%
+\nonaheterovi[#1]{7a==N}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\isoindolev}
+% \begin{macro}{\isoindolevi}
+% \begin{macrocode}
+\def\isoindolev{\@ifnextchar[{\@isoindolev[@}{\@isoindolev[cegi]}}
+\def\@isoindolev[#1]#2{%
+\iforigpt \typeout{command `isoindolev' %
+ is based on `nonaheterov'.}\fi%
+\nonaheterov[#1]{2==N}{#2}}
+\def\isoindolevi{\@ifnextchar[{\@isoindolevi[@}{\@isoindolevi[cegi]}}
+\def\@isoindolevi[#1]#2{%
+\iforigpt \typeout{command `isoindolevi' %
+ is based on `nonaheterovi'.}\fi%
+\nonaheterovi[#1]{2==N}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\benzofuranev}
+% \begin{macro}{\benzofuranevi}
+% \begin{macrocode}
+\def\benzofuranev{%
+ \@ifnextchar[{\@benzofuranev[@}{\@benzofuranev[rb]}}
+\def\@benzofuranev[#1]#2{%
+\iforigpt \typeout{command `benzofuranev' %
+ is based on `nonaheterov'.}\fi%
+\nonaheterov[#1]{1==O}{#2}}
+\def\benzofuranevi{%
+ \@ifnextchar[{\@benzofuranevi[@}{\@benzofuranevi[rb]}}
+\def\@benzofuranevi[#1]#2{%
+\iforigpt \typeout{command `benzofuranevi' %
+ is based on `nonaheterovi'.}\fi%
+\nonaheterovi[#1]{1==O}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\isobenzofuranev}
+% \begin{macro}{\isobenzofuranevi}
+% \begin{macrocode}
+\def\isobenzofuranev{\@ifnextchar[{\@isobenzofuranev[@}%
+ {\@isobenzofuranev[cegi]}}
+\def\@isobenzofuranev[#1]#2{%
+\iforigpt \typeout{command `isobenzofuranev' %
+ is based on `nonaheterov'.}\fi%
+\nonaheterov[#1]{2==O}{#2}}
+\def\isobenzofuranevi{\@ifnextchar[{\@isobenzofuranevi[@}%
+ {\@isobenzofuranevi[cegi]}}
+\def\@isobenzofuranevi[#1]#2{%
+\iforigpt \typeout{command `isobenzofuranevi' %
+ is based on `nonaheterovi'.}\fi%
+\nonaheterovi[#1]{2==O}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\benzoxazolev}
+% \begin{macro}{\benzoxazolevi}
+% \begin{macrocode}
+\def\benzoxazolev{%
+ \@ifnextchar[{\@benzoxazolev[@}{\@benzoxazolev[rb]}}
+\def\@benzoxazolev[#1]#2{%
+\iforigpt \typeout{command `benzoxazolev' %
+ is based on `nonaheterov'.}\fi%
+\nonaheterov[#1]{1==O;3==N}{#2}}
+\def\benzoxazolevi{%
+ \@ifnextchar[{\@benzoxazolevi[@}{\@benzoxazolevi[rb]}}
+\def\@benzoxazolevi[#1]#2{%
+\iforigpt \typeout{command `benzoxazolevi' %
+ is based on `nonaheterovi'.}\fi%
+\nonaheterovi[#1]{1==O;3==N}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \section{Building blocks}
+% \subsection{Six-membered ring unit}
+%
+% The old function (v1.01) of |\sixunitv| as a fusing ring unit
+% is succeeded by |\sixfusev| and |\sixfusevi|.
+% The command |\sixunitv| has been changed into a subsidiary
+% command of |\sixheterov| (v2.00).
+%
+% The macro |\sixunitv| is a six-membered fragment that can be
+% fused to another ring structure to produce a new ring system.
+% The following
+% numbering is adopted in this macro.
+%
+% \begin{verbatim}
+% **********************
+% * six-membered unit *
+% * (vertical type) *
+% **********************
+%
+% 1
+% *
+% 6 * * 2
+% | |
+% | |
+% 5 * * 3
+% *
+% 4 <===== the original point
+% \end{verbatim}
+%
+% The macro |\sixunitv| has three arguments |ATOMLIST|, |SUBSLIST|
+% and |OMIT|
+% as well as an optional argument |BONDLIST|.
+%
+% \begin{verbatim}
+% \sixunitv[BONDLIST]{ATOMLIST}{SUBSLIST}{OMIT}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one
+% character selected from a to f, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `$n+$' ($n=1$ to $6$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% none : fully saturated
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,6-double bond
+% f : 6,1-double bond
+% {n+} : plus at the n-nitrogen atom (n = 1 to 6)
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 6 atoms)
+%
+% for n = 1 to 6
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position,
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 6
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% The argument |OMIT| represents one bond to be omitted.
+% The omitted edge is regarded as a fused position.
+%
+% \begin{verbatim}
+% OMIT: one bond omitted (a, b, c, d, e, or f)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \sixhunitv{1==N}{1==Cl;2==F}{e}
+% \end{verbatim}
+%
+% The definition of |\sixunitv| uses a picture environment and
+% consists of the same unit processes as shown in |\sixheterov|:
+% \begin{enumerate}
+% \item treatment of atom list,
+% \item placing outer skeletons,
+% \item placing inner double bonds,
+% \item setting hetero atoms, and
+% \item placing substituents by using |\setsixringv|.
+% \end{enumerate}
+%
+% \changes{v1.01a}{1998/06/08}{\cs{sixunitv} bug fix:
+% \cs{bbb} to \cs{fff} and \cs{ccc} to \cs{eee}}
+%
+% \begin{macro}{\sixunitv}
+% \begin{macro}{\@sixunitv}
+% \begin{macrocode}
+\def\sixunitv{\@ifnextchar[{\@sixunitv[@}{\@sixunitv[@]}}
+\def\@sixunitv[#1]#2#3#4{\sixheterov[#1]{#2}{#3}[#4]}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \changes{v3.00}{2002/04/30}{\cs{sixunitv}: Old definition deleted.}
+%
+% \subsection{Five-membered ring unit}
+% \subsubsection{Vertical type}
+%
+% The old function (v1.01) of |\fiveunitv| as a fusing ring unit
+% is succeeded by |\fivefusev|.
+% The command |\fiveunitv| has been changed into a subsidiary
+% command of |\fiveheterov| (v2.00).
+%
+% The macro |\fiveunitv| is a five-membered fragment that can be
+% fused to another
+% ring structure to produce a new ring system. The following
+% numbering is adopted in this macro.
+%
+% \begin{verbatim}
+% **********************
+% * five-membered unit *
+% * (vertical type) *
+% **********************
+%
+% 4 _______ 3
+% | |
+% | |
+% 5 * * 2
+% *
+% 1 <===== the original point
+% \end{verbatim}
+%
+% The macro |\fiveunitv| has three arguments |ATOMLIST|, |SUBSLIST|
+% and |OMIT|
+% as well as an optional argument |BONDLIST|.
+%
+% \begin{verbatim}
+% \fiveunitv[BONDLIST]{ATOMLIST}{SUBSLIST}{OMIT}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one
+% character selected from a to e, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `$n+$' ($n=1$ to $5$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+% BONDLIST: list of inner double bonds
+%
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,1-double bond
+% {n+} : plus at the n-nitrogen atom (n = 1 to 5)
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 5 atoms)
+%
+% for n = 1 to 5
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 5
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% The argument |OMIT| represents one bond to be omitted.
+% The omitted edge is regarded as a fused position.
+%
+% \begin{verbatim}
+% OMIT: one bond omitted (a, b, c, d, e, or f)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \fiveunitv{1==N}{1==H;2==F}{a}
+% \end{verbatim}
+%
+% The definition of |\fiveunitv| uses a picture environment and
+% consists of the same unit processes as shown in |\fiveheterov|:
+% \begin{enumerate}
+% \item treatment of atom list,
+% \item placing outer skeletons,
+% \item placing inner double bonds,
+% \item setting hetero atoms, and
+% \item placing substituents by using |\setsixringv| partially.
+% \end{enumerate}
+%
+% \begin{macro}{\fiveunitv}
+% \begin{macro}{\@fiveunitv}
+% \begin{macrocode}
+\def\fiveunitv{\@ifnextchar[{\@fiveunitv[@}{\@fiveunitv[r]}}
+\def\@fiveunitv[#1]#2#3#4{\fiveheterov[#1]{#2}{#3}[#4]}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \changes{v3.00}{2002/04/30}{\cs{fivunitv}: Old definition deleted.}
+%
+% \subsubsection{Inverse vertical type}
+%
+% The old function (v1.01) of |\fiveunitvi| as a fusing ring unit
+% is succeeded by |\fivefusevi|.
+% The command |\fiveunitvi| has been changed into a subsidiary
+% command of |\fiveheterovi| (v2.00).
+%
+% The macro |\fiveunitvi| typesets a five-membered fragment that can be
+% fused to another
+% ring structure to produce a new ring system. The following
+% numbering is adopted in this macro.
+%
+% \begin{verbatim}
+% ************************************
+% * five-membered unit *
+% * (vertical type, inverse type) *
+% ************************************
+%
+% 1
+% *
+% 6 * * 2
+% | |
+% |_____|
+% 4 3
+% *
+% (0,0) <===== the original point
+% \end{verbatim}
+%
+% The macro |\fiveunitvi| has three arguments |ATOMLIST|, |SUBSLIST|
+% and |OMIT|
+% as well as an optional argument |BONDLIST|.
+%
+% \begin{verbatim}
+% \fiveunitvi[BONDLIST]{ATOMLIST}{SUBSLIST}{OMIT}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one
+% character selected from a to e, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `$n+$' ($n=1$ to $5$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+% BONDLIST: list of inner double bonds
+%
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,1-double bond
+% {n+} : plus at the n-nitrogen atom (n = 1 to 5)
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 5 atoms)
+%
+% for n = 1 to 5
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 5
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% The argument |OMIT| represents one bond to be omitted.
+% The omitted edge is regarded as a fused position.
+%
+% \begin{verbatim}
+% OMIT: one bond omitted (a, b, c, d, e, or f)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \fiveunitvi{1==N}{1==H;2==F}{a}
+% \end{verbatim}
+%
+% The definition of |\fiveunitvi| uses a picture environment and
+% consists of the same unit processes as shown in |\sixheterov|:
+% \begin{enumerate}
+% \item treatment of atom list,
+% \item placing outer skeletons,
+% \item placing inner double bonds,
+% \item setting hetero atoms, and
+% \item placing substituents by using |\setsixringv| partially.
+% \end{enumerate}
+%
+% \begin{macro}{\fiveunitvi}
+% \begin{macro}{\@fiveunitvi}
+% \begin{macrocode}
+\def\fiveunitvi{\@ifnextchar[{\@fiveunitvi[@}{\@fiveunitvi[r]}}
+\def\@fiveunitvi[#1]#2#3#4{\fiveheterovi[#1]{#2}{#3}[#4]}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \changes{v3.00}{2002/04/30}{\cs{fivunitvi}: Old definition deleted.}
+%
+% \section{Four-membered heterocycles}
+% \subsection{Horizontal bonds}
+%
+% \begin{macro}{\bondshoriz}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%
+% % horizontal bond %
+% %%%%%%%%%%%%%%%%%%%
+% horizontal inner bond for four-membered rings
+\def\bondshoriz{%
+ \begin{sfpicture}(200,300)(0,0)
+ \ifx\fff\empty%
+ \ifx\bbb\empty%
+ \Put@Line(-138,270)(1,0){134}%double bond 4-3
+ \else%
+ \Put@Line(-138,270)(1,0){115}%double bond 4-3
+ \fi%
+ \else%
+ \ifx\bbb\empty%
+ \Put@Line(-120,270)(1,0){115}%double bond 4-3
+ \else%
+ \Put@Line(-120,270)(1,0){96}%double bond 4-3
+ \fi%
+ \fi\end{sfpicture}}%
+% horizontal inner bond for four-membered rings (inverse type)
+\def\bondshorizi{%
+ \begin{sfpicture}(200,300)(0,0)
+ \ifx\eee\empty%
+ \ifx\ccc\empty%
+ \Put@Line(-138,136)(1,0){134}%double bond 4-3
+ \else%%
+ \Put@Line(-138,136)(1,0){115}%double bond 4-3
+ \fi%
+ \else%
+ \ifx\ccc\empty%
+ \Put@Line(-120,136)(1,0){115}%double bond 4-3
+ \else%
+ \Put@Line(-120,136)(1,0){96}%double bond 4-3
+ \fi%
+ \fi\end{sfpicture}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\skbondshoriz}
+% \begin{macrocode}
+%horizontal bond for four-membered rings
+\def\skbondshoriz{%
+ \begin{sfpicture}(200,300)(0,0)
+ \ifx\fff\empty%
+ \ifx\bbb\empty%
+ \Put@Line(-171,303)(1,0){200}%bond 4-3
+ \else%
+ \Put@Line(-171,303)(1,0){158}%bond 4-3
+ \fi%
+ \else%
+ \ifx\bbb\empty%
+ \Put@Line(29,303)(-1,0){158}%bond 4-3
+ \else%
+ \Put@Line(-129,303)(1,0){116}%bond 4-3
+ \fi%
+ \fi\end{sfpicture}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\skbondshorizi}
+% \begin{macrocode}
+%horizontal bond for four-membered rings (inverse type)
+\def\skbondshorizi{%
+ \begin{sfpicture}(200,300)(0,0)
+ \ifx\eee\empty%
+ \ifx\ccc\empty%
+ \Put@Line(-171,103)(1,0){200}%bond 4-3
+ \else%
+ \Put@Line(-171,103)(1,0){158}%bond 4-3
+ \fi%
+ \else%
+ \ifx\ccc\empty%
+ \Put@Line(29,103)(-1,0){158}%bond 4-3
+ \else%
+ \Put@Line(-129,103)(1,0){116}%bond 4-3
+ \fi%
+ \fi\end{sfpicture}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dotskbondshoriz}
+% \begin{macrocode}
+%horizontal bond for four-membered rings
+\def\dotskbondshoriz{%
+ \begin{sfpicture}(200,300)(0,0)
+ \ifx\fff\empty%
+ \ifx\bbb\empty%
+ \dotorline(-171,303)(1,0){200}/(-171,303)(29,303)%
+ \else%
+ \dotorline(-171,303)(1,0){158}/(-171,303)(-29,303)%
+ \fi%
+ \else%
+ \ifx\bbb\empty%
+ \dotorline(29,303)(-1,0){158}/(29,303)(-129,303)%
+ \else%
+ \dotorline(-129,303)(1,0){116}/(-129,303)(-13,303)%
+ \fi%
+ \fi\end{sfpicture}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dotskbondshorizi}
+% \begin{macrocode}
+%horizontal bond for four-membered rings (inverse type)
+\def\dotskbondshorizi{%
+ \begin{sfpicture}(200,300)(0,0)
+ \ifx\eee\empty%
+ \ifx\ccc\empty%
+ \dotorline(-171,103)(1,0){200}/(-171,103)(29,103)%
+ \else%
+ \dotorline(-171,103)(1,0){158}/(-171,103)(-29,103)%
+ \fi%
+ \else%
+ \ifx\ccc\empty%
+ \dotorline(29,103)(-1,0){158}/(29,103)(-129,103)%
+ \else%
+ \dotorline(-129,103)(1,0){116}/(-129,103)(-13,103)%
+ \fi%
+ \fi\end{sfpicture}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Drawing four-membered heterocycles}
+%
+% The macro |\fourhetero| typesets a four-membered ring. The following
+% numbering is adopted in this macro.
+%
+% \begin{verbatim}
+% **************************
+% * fourhetero derivatives *
+% * (vertical type) *
+% **************************
+% The following numbering is adopted in this macro.
+%
+% c
+% 4 _____ 3
+% d | | b
+% | |
+% 1 ----- 2<===== the original point
+% a
+% \end{verbatim}
+%
+% The macro |\fourhetero| has two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \fourhetero(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `d' and a uppercase
+% character `A' or `B'.
+%
+% The |BONDLIST| argument contains one
+% character selected from a to e, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `$n+$' ($n=1$ to $4$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+% BONDLIST: list of inner double bonds
+%
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% e : 4,1-double bond
+%
+% {n+} : plus at the n-nitrogen atom (n = 1 to 4)
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 4 atoms)
+%
+% for n = 1 to 4
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 4
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges may be regarded as both fused and non-fused
+% positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a to d: see BONDLIST)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \fourhetero{1==N}{1==H;2==F}
+% \fourhetero[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \fourhetero[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl}
+% \end{verbatim}
+%
+% The definition of |\fourhetero| uses a picture environment and
+% consists of the same unit processes as shown in |\sixheterov|:
+% \begin{enumerate}
+% \item treatment of atom list,
+% \item placing outer skeletons,
+% \item placing inner double bonds,
+% \item setting hetero atoms, and
+% \item placing substituents by using |\setsixringv| partially.
+% \end{enumerate}
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/12/5}{Add: spiro and fused rings}
+%
+% \begin{macro}{\fourhetero}
+% \begin{macro}{\@four@hetero}
+% \begin{macro}{\@four@@hetero}
+% \begin{macro}{\@fourhetero}
+% \begin{macrocode}
+\def\fourhetero{\@ifnextchar({\@four@hetero(@}{\@four@hetero(@)}}
+\def\@four@hetero(#1){\@ifnextchar[{\@four@@hetero(#1)[@}%
+{\@four@@hetero(#1)[@]}}
+\def\@four@@hetero(#1)[#2]#3#4{\@ifnextchar[%
+{\@fourhetero(#1)[#2]{#3}{#4}[@}%
+{\@fourhetero(#1)[#2]{#3}{#4}[@]}}
+\def\@fourhetero(#1)[#2]#3#4[#5]{%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+% % treatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniatom\iniflag%initialize
+\test@vertix@sixv{#3}{e}{c}{b}{f}{@}{@}%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % adustment of subs positions %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\@reset@ylsw%
+\ylposition{#4}{5}{1}{4}{-1}% for 2 to 3
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{142}\def\@@yli{0}\fi
+\else
+\ylposition{#4}{4}{4}{6}{0}% for 1
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\else
+\ylposition{#4}{2}{5}{7}{0}% for 4
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(800,880)(-571,-137){fourhetero}%
+(571,137)(171,-103)%2002/4/30 by S. Fujita
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+{\resetbdsw%
+\@bond@@omit{#5}%
+\Put@Direct(0,0){\set@skel@longbond{#1}{a}{skbondshorizi}}%
+ % bond between 1 and 2 \@aaa -> \skbondshorizi etc
+\Put@Direct(-142,0){\set@skel@bond{#1}{b}{b}}%
+ % bond between 2 and 3 \@bbb -> \skbondb etc
+\Put@Direct(0,0){\set@skel@longbond{#1}{c}{skbondshoriz}}%
+ % bond between 3 and 4 \@ccc -> \skbondshoriz etc
+\Put@Direct(0,0){\set@skel@bond{#1}{d}{e}}%
+ % bond between 4 and 1 \@ddd -> \skbonde etc
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r\relax%
+\else\if\member a\relax \Put@Direct(0,0){\bondshorizi}%
+\else\if\member b\relax \Put@Direct(-142,0){\bondb}%
+\else\if\member c\relax \Put@Direct(0,0){\bondshoriz}%
+\else\if\member d\relax \Put@Direct(0,0){\bonde}%
+\else
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+% % inner bond attachment %
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+ \expandafter\twoCH@@R\member//%
+ \set@fusionadd@fourv
+\fi\fi\fi\fi\fi}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%
+% % setting heteroatoms %
+% %%%%%%%%%%%%%%%%%%%%%%%
+\Put@Direct(-142,0){\set@hetatom@sixv{#3}{5}{1}{4}{-1}%
+\storeclipinfo%added 2001/06/20 by S. Fujita
+}% for 2 to 3
+\developclipinfo%added 2001/06/20 by S. Fujita
+\Put@Direct(0,0){\set@hetatom@sixv{#3}{4}{4}{6}{0}%
+\storeclipinfo%added 2001/06/20 by S. Fujita
+}% for 1
+\developclipinfo%added 2001/06/20 by S. Fujita
+\Put@Direct(0,0){\set@hetatom@sixv{#3}{2}{5}{7}{0}%
+\storeclipinfo%added 2001/06/20 by S. Fujita
+}% for 4
+\developclipinfo%added 2001/06/20 by S. Fujita
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\Put@Direct(-142,0){\setsixringv{#4}{5}{1}{4}{-1}}% for 2 to 3
+\Put@Direct(0,0){\setsixringv{#4}{4}{4}{6}{0}}% for 1
+\Put@Direct(0,0){\setsixringv{#4}{2}{5}{7}{0}}% for 4
+\end{ShiftPicEnvB}\iniatom\iniflag}% %end of \fourhetero macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The macro |\set@fusionadd@fourv| is an inner command contained
+% in the definition of |\fourhetero| etc., where
+% the macro is used for setting an additive
+% or a fused ring at each bond (designated by |\@@tmpa|). The
+% fused ring is typeset by the inner command |\set@fusion@fourv|.
+%
+% \begin{macro}{\set@fusionadd@fourv}
+% \changes{v2.00}{1998/12/5}{New command: \cs{set@fusionadd@fourv}}
+% \begin{macrocode}
+\def\set@fusionadd@fourv{%
+ \if\@@tmpa 1\relax%
+ \putlatom{-200}{120}{\scriptsize \@@tmpb}% % right type
+ \else\if\@@tmpa 2\relax%
+ \putratom{60}{120}{\scriptsize \@@tmpb}% % right type
+ \else\if\@@tmpa 3\relax%
+ \putratom{60}{233}{\scriptsize \@@tmpb}% % right type
+ \else\if\@@tmpa 4\relax%
+ \putlatom{-200}{233}{\scriptsize \@@tmpb}% % right type
+ \else
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+ \set@fusion@fourv
+ \fi\fi\fi\fi%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% The inner command |\set@fusion@fourv| is used for typesetting
+% a fused ring at each bond represented by |\@@tmpa|. Warnings
+% concerning mismatched ring-fusions are based on the command
+% |\FuseWarning|.
+%
+% \begin{macro}{\set@fusion@fourv}
+% \changes{v2.00}{1998/12/5}{New command: \cs{set@fusion@fourv}}
+% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring}
+% \begin{macrocode}
+\def\set@fusion@fourv{%
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+\if\@@tmpa d\relax%
+ \putlratom{-171}{303}{\@@tmpb}% % bond fused
+ \FuseWarning{0}{200}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{d}%
+ \else\if\@@tmpa D\relax%
+ \putlratom{-171}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{0}{-200}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{D}%
+ \else\if\@@tmpa a\relax%
+ \putlratom{-173}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{-200}{0}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{f}%
+ \else\if\@@tmpa A\relax%
+ \putlratom{27}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{200}{0}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}%
+ \else\if\@@tmpa b\relax%
+ \putlratom{27}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{0}{-200}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}%
+ \else\if\@@tmpa B\relax%
+ \putlratom{27}{303}{\@@tmpb}% % bond fused
+ \FuseWarning{0}{200}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}%
+ \else\if\@@tmpa c\relax%
+ \putlratom{27}{303}{\@@tmpb}% % bond fused
+ \FuseWarning{200}{0}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c}%
+ \else\if\@@tmpa C\relax%
+ \putlratom{-171}{303}{\@@tmpb}% % bond fused
+ \FuseWarning{-200}{0}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C}%
+\fi\fi\fi\fi\fi\fi\fi\fi%
+\global\let\FuseWarning=\FuseW@rning%added 2010/10/01
+}% end of the macro \set@fusion@fourv
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \changes{v5.01}{2013/3/19}{added \cs{oxetane}, \cs{thietane}, and \cs{azetidine} }
+% \begin{macro}{\oxetane}
+% \begin{macro}{\azetidine}
+% \begin{macro}{\thietane}
+% \begin{macrocode}
+\def\oxetane{\@ifnextchar[{\@oxetane[@}{\@oxetane[]}}
+\def\@oxetane[#1]#2{%
+\iforigpt \typeout{command `oxetane' %
+ is based on `fourhetero'.}\fi%
+\fourhetero[#1]{1==O}{#2}}
+\def\azetidine{\@ifnextchar[{\@azetidine[@}{\@azetidine[]}}
+\def\@azetidine[#1]#2{%
+\iforigpt \typeout{command `azetidine' %
+ is based on `fourhetero'.}\fi%
+\fourhetero[#1]{1==N}{#2}}
+\def\thietane{\@ifnextchar[{\@thietane[@}{\@thietane[]}}
+\def\@thietane[#1]#2{%
+\iforigpt \typeout{command `thietane' %
+ is based on `fourhetero'.}\fi%
+\fourhetero[#1]{1==S}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \section{Three-membered heterocycles}
+% \subsection{Vertical type}
+% \subsubsection{Sloped bonds}
+%
+% \begin{macro}{\bondtria}
+% \begin{macrocode}
+% **********************
+% * bonds for triangle *
+% **********************
+% fff 3--------2bbb
+% ` /
+% ddd `1/ <===== the original point
+% bond between 1 and 2
+ \def\bondtria{%
+ \ifx\ddd\empty%
+ \ifx\bbb\empty%
+ \Put@Line(-6,42)(3,5){72}% %double bond 1-2
+ \else%
+ \Put@Line(-6,42)(3,5){60}% %double bond 1-2
+ \fi%
+ \else%
+ \ifx\bbb\empty%
+ \Put@Line(6,62)(3,5){60}% %double bond 1-2
+ \else%
+ \Put@Line(10,32)(3,5){60}% %double bond 1-2
+ \fi%
+ \fi%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bondtrib}
+% \begin{macrocode}
+% bond between 1 and 3
+ \def\bondtrib{%
+ \ifx\ddd\empty%
+ \ifx\fff\empty%
+ \Put@Line(6,42)(-3,5){72}% %double bond 1-3
+ \else%
+ \Put@Line(6,42)(-3,5){60}% %double bond 1-3
+ \fi%
+ \else%
+ \ifx\fff\empty%
+ \Put@Line(-6,62)(-3,5){60}% %double bond 1-2
+ \else%
+ \Put@Line(6,42)(-3,5){60}% %double bond 1-2
+ \fi%
+ \fi%
+ }%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\skbondtria}
+% \begin{macrocode}
+%bond between 1 and 2
+\def\skbondtria{%
+ \begin{sfpicture}(200,200)(0,0)
+ \ifx\ddd\empty%
+ \ifx\bbb\empty%
+ \Put@Line(0,0)(3,5){103}% %bond 1-2
+ \else%
+ \Put@Line(0,0)(3,5){80}% %bond 1-2
+ \fi%
+ \else%
+ \ifx\bbb\empty%
+ \Put@Line(103,171)(-3,-5){80}% %bond 1-2
+ \else%
+ \Put@Line(35,21)(3,5){60}% %bond 1-2
+ \fi%
+ \fi\end{sfpicture}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\skbondtrib}
+% \begin{macrocode}
+%bond between 1 and 3
+\def\skbondtrib{%
+ \begin{sfpicture}(200,200)(0,0)
+ \ifx\ddd\empty%
+ \ifx\fff\empty%
+ \Put@Line(0,0)(-3,5){103}% %bond 1-3
+ \else%
+ \Put@Line(0,0)(-3,5){80}% %bond 1-3
+ \fi%
+ \else%
+% \ifx\eee\empty%bug fix 1993/11/19
+ \ifx\fff\empty%
+ \Put@Line(-103,171)(3,-5){80}% %bond 1-3
+ \else%
+ \Put@Line(-35,21)(-3,5){60}% %bond 1-3
+ \fi%
+ \fi\end{sfpicture}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dotskbondtria}
+% \begin{macrocode}
+%bond between 1 and 2
+\def\dotskbondtria{%
+ \begin{sfpicture}(200,200)(0,0)
+ \ifx\ddd\empty%
+ \ifx\bbb\empty%
+ \dotorline(0,0)(3,5){103}/(0,0)(103,171)%
+ \else%
+ \dotorline(0,0)(3,5){80}/(0,0)(80,133)%
+ \fi%
+ \else%
+ \ifx\bbb\empty%
+ \dotorline(103,171)(-3,-5){80}/(103,171)(23,38)%
+ \else%
+ \dotorline(35,21)(3,5){60}/(35,21)(95,121)%
+ \fi%
+ \fi\end{sfpicture}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dotskbondtrib}
+% \begin{macrocode}
+%bond between 1 and 3
+\def\dotskbondtrib{%
+ \begin{sfpicture}(200,200)(0,0)
+ \ifx\ddd\empty%
+ \ifx\fff\empty%
+ \dotorline(0,0)(-3,5){103}/(0,0)(-103,171)%
+ \else%
+ \dotorline(0,0)(-3,5){80}/(0,0)(-80,133)%
+ \fi%
+ \else%
+ \ifx\fff\empty%
+ \dotorline(-103,171)(3,-5){80}/(-103,171)(-23,38)%
+ \else%
+ \dotorline(-35,21)(-3,5){60}/(-35,21)(-95,121)%
+ \fi%
+ \fi\end{sfpicture}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Drawing three-membered heterocycles}
+%
+% The macro |\threehetero| typesets a three-membered ring. The following
+% numbering is adopted in this macro.
+%
+% \begin{verbatim}
+% ****************************
+% * thereehetero derivatives *
+% * (vertical type) *
+% ****************************
+%
+% b
+% 3--------2
+% c ` / a
+% `1/ <===== the original point
+% \end{verbatim}
+%
+% The macro |\threehetero| has two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \threehetero(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT]
+% \threeheterov(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `c' and a uppercase
+% character `A' or `B'.
+%
+% The |BONDLIST| argument contains one
+% character selected from a to c, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `$n+$' ($n=1$ to $3$) represents a plus charge on a hetero atom
+% at the $n$-position.
+% The option `$n+$' ($n=4$ to $6$) represents a plus charge outside the ring.
+% The option `$0+$' typesets a plus charge at the center of the ring.
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% none : saturated
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 3,1-double bond
+% A : aromatic circle
+% {n+} : plus at the n-hetero atom (n = 1 to 3)
+% : n=4 -- outer plus at 1 position
+% : n=5 -- outer plus at 2 position
+% : n=6 -- outer plus at 3 position
+% {0+} : plus at the center of a cyclopropane ring
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 3 atoms)
+%
+% for n = 1 to 3
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position,
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 3
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges may be regarded as both fused and non-fused
+% positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a to c: see BONDLIST)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \threehetero{1==N}{1==Cl;2==F}
+% \threehetero[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \threehetero{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl}
+% \end{verbatim}
+%
+% The definition of |\threehetero| uses a picture environment and
+% consists of the same unit processes as shown in |\sixheterov|:
+% \begin{enumerate}
+% \item treatment of atom list,
+% \item placing outer skeletons,
+% \item placing inner double bonds,
+% \item setting hetero atoms, and
+% \item placing substituents by using |\setsixringv| partially.
+% \end{enumerate}
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/12/5}{Add: spiro and fused rings}
+% \changes{v2.01}{2001/6/20}{The
+% \cs{storeclipinfo} command is added.}
+%
+% \begin{macro}{\threehetero}
+% \begin{macro}{\@three@hetero}
+% \begin{macro}{\@three@@hetero}
+% \begin{macro}{\@threehetero}
+% \begin{macrocode}
+\def\threehetero{\@ifnextchar({\@three@hetero(@}{\@three@hetero(@)}}
+\def\@three@hetero(#1){\@ifnextchar[{\@three@@hetero(#1)[@}%
+{\@three@@hetero(#1)[@]}}
+\def\@three@@hetero(#1)[#2]#3#4{\@ifnextchar[%
+{\@threehetero(#1)[#2]{#3}{#4}[@}%
+{\@threehetero(#1)[#2]{#3}{#4}[@]}}
+\def\@threehetero(#1)[#2]#3#4[#5]{%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+% % treatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniatom\iniflag%initialize
+\test@vertix@sixv{#3}{d}{b}{f}{@}{@}{@}%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % adustment of subs positions %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\@reset@ylsw%
+\ylposition{#4}{3}{3}{5}{0}%subst 1
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{68}\def\@@yli{0}\fi
+\else
+\ylposition{#4}{0}{1}{3}{0}%subst 2
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{142}\def\@@yli{132}\fi
+\else
+\ylposition{#4}{3}{5}{7}{0}%subst 3
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{132}\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(800,580)(-468,-240){threeheterov}%
+(468,240)(68,0)%2002/4/30 by S. Fujita
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+{\resetbdsw%
+\@bond@@omit{#5}%
+\Put@Direct(-68,0){\set@skel@longbond{#1}{a}{skbondtria}}%
+ % bond between 1 and 2 \@aaa -> \skbondtria etc
+\Put@Direct(0,-132){\set@skel@longbond{#1}{b}{skbondshoriz}}%
+ % bond between 2 and 3 \@bbb -> \skbondb etc
+\Put@Direct(-68,0){\set@skel@longbond{#1}{c}{skbondtrib}}%
+ % bond between 3 and 1 \@ccc -> \skbondtria etc
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r\relax%
+\else\if\member a\relax\Put@Direct(-68,0){\bondtria}%
+\else\if\member b\relax\Put@Direct(0,-126){\bondshoriz}%
+\else\if\member c\relax\Put@Direct(-68,0){\bondtrib}%
+\else\if\member A\relax% aromatic circle
+ \Put@oCircle(-70,108){100}% %circle
+\else
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+% % inner bond attachment %
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+ \expandafter\twoCH@@R\member//%
+ \set@fusionadd@threev
+\fi\fi\fi\fi\fi%
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\Put@Direct(-68,0){\set@hetatom@sixv{#3}{3}{3}{5}{0}%
+%\if@clip\global\@cliptrue\fi
+\storeclipinfo
+}%subst 1
+\developclipinfo
+\Put@Direct(-142,-132){\set@hetatom@sixv{#3}{0}{1}{3}{0}%
+%\if@bclip\global\@bcliptrue\fi
+\storeclipinfo
+}%subst 2
+\developclipinfo
+\Put@Direct(0,-132){\set@hetatom@sixv{#3}{3}{5}{7}{0}%
+%\if@fclip\global\@fcliptrue\fi
+\storeclipinfo
+}%subst 3
+\developclipinfo
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\Put@Direct(-68,0){\setsixringv{#4}{3}{3}{5}{0}}%subst 1
+\Put@Direct(-142,-132){\setsixringv{#4}{0}{1}{3}{0}}%subst 2
+\Put@Direct(0,-132){\setsixringv{#4}{3}{5}{7}{0}}%subst 3
+\end{ShiftPicEnvB}\iniatom\iniflag}% %end of \threehetero macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\threeheterov}
+% \begin{macrocode}
+\let\threeheterov=\threehetero
+% \end{macrocode}
+% \end{macro}
+%
+% The macro |\set@fusionadd@threev| is an inner command contained
+% in the definition of |\threehetero| etc., where
+% the macro is used for setting an additive
+% or a fused ring at each bond (designated by |\@@tmpa|). The
+% fused ring is typeset by the inner command |\set@fusion@threev|.
+%
+% \begin{macro}{\set@fusionadd@threev}
+% \changes{v2.00}{1998/12/5}{New command: \cs{set@fusionadd@threev}}
+% \begin{macrocode}
+\def\set@fusionadd@threev{%
+ \if\@@tmpa 0\relax%
+ \putratom{-94}{92}{\scriptsize\@@tmpb}% % right type
+ \else\if\@@tmpa 1\relax%
+ \putratom{-94}{60}{\scriptsize\@@tmpb}% % right type
+ \else\if\@@tmpa 2\relax%
+ \putratom{-52}{120}{\scriptsize\@@tmpb}% % right type
+ \else\if\@@tmpa 3\relax%
+ \putratom{-126}{126}{\scriptsize\@@tmpb}% % right type
+ \else\if\@@tmpa 4\relax%
+ \putratom{-30}{-20}{\scriptsize\@@tmpb}% % right type
+ \else\if\@@tmpa 5\relax%
+ \putratom{52}{110}{\scriptsize\@@tmpb}% % right type
+ \else\if\@@tmpa 6\relax%
+ \putratom{-250}{110}{\scriptsize\@@tmpb}% % right type
+ \else
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+ \set@fusion@threev
+ \fi\fi\fi\fi\fi\fi\fi%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% The inner command |\set@fusion@threev| is used for typesetting
+% a fused ring at each bond represented by |\@@tmpa|. Warnings
+% concerning mismatched ring-fusions are based on the command
+% |\FuseWarning|.
+%
+% \begin{macro}{\set@fusion@threev}
+% \changes{v2.00}{1998/12/5}{New command: \cs{set@fusion@threev}}
+% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring}
+% \begin{macrocode}
+\def\set@fusion@threev{%
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+\if\@@tmpa b\relax%
+ \putlratom{29}{171}{\@@tmpb}% % bond fused
+ \FuseWarning{200}{0}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}%
+ \else\if\@@tmpa B\relax%
+ \putlratom{-171}{171}{\@@tmpb}% % bond fused
+ \FuseWarning{-200}{0}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}%
+ \else\if\@@tmpa a\relax%
+ \putlratom{-68}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{-103}{-171}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}%
+ \else\if\@@tmpa A\relax%
+ \putlratom{29}{171}{\@@tmpb}% % bond fused
+ \FuseWarning{103}{171}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}%
+ \else\if\@@tmpa c\relax%
+ \putlratom{-171}{171}{\@@tmpb}% % bond fused
+ \FuseWarning{-103}{171}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c}%
+ \else\if\@@tmpa C\relax%
+ \putlratom{-68}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{103}{-171}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C}%
+\fi\fi\fi\fi\fi\fi%
+\global\let\FuseWarning=\FuseW@rning%added 2010/10/01
+}% end of the macro \set@fusion@threev
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v5.01}{2013/3/19}{added \cs{oxiranev}, \cs{aziridinev}, and \cs{thiiranev} }
+% \begin{macro}{\oxiranev}
+% \begin{macro}{\aziridinev}
+% \begin{macro}{\thiiranev}
+% \begin{macrocode}
+\def\oxiranev{\@ifnextchar[{\@oxiranev[@}{\@oxiranev[]}}
+\def\@oxiranev[#1]#2{%
+\iforigpt \typeout{command `oxiranev' %
+ is based on `threeheterov'.}\fi%
+\threeheterov[#1]{1==O}{#2}}
+\def\aziridinev{\@ifnextchar[{\@aziridinev[@}{\@aziridinev[]}}
+\def\@aziridinev[#1]#2{%
+\iforigpt \typeout{command `aziridinev' %
+ is based on `threeheterov'.}\fi%
+\threeheterov[#1]{1==N}{#2}}
+\def\thiiranev{\@ifnextchar[{\@thiiranev[@}{\@thiiranev[]}}
+\def\@thiiranev[#1]#2{%
+\iforigpt \typeout{command `thiiranev' %
+ is based on `threeheterov'.}\fi%
+\threeheterov[#1]{1==S}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Inverse vertical type}
+% \subsubsection{Sloped bonds}
+%
+% \changes{v1.02}{1998/10/20}{Newly added commands:
+% \cs{Bondtria}}
+% \begin{macro}{\Bondtria}
+% \begin{macrocode}
+% **********************
+% * bonds for triangle *
+% **********************
+%
+% aaa /1` <===== the original point
+% / `
+% eee 3--------2ccc
+% bond between 1 and 2
+ \def\Bondtria{%
+ \ifx\aaa\empty%
+ \ifx\ccc\empty%
+ \Put@Line(-6,-42)(3,-5){72}% %double bond 1-2
+ \else%
+ \Put@Line(-6,-42)(3,-5){60}% %double bond 1-2
+ \fi%
+ \else%
+ \ifx\ccc\empty%
+ \Put@Line(6,-62)(3,-5){60}% %double bond 1-2
+ \else%
+ \Put@Line(10,-32)(3,-5){60}% %double bond 1-2
+ \fi%
+ \fi%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v1.02}{1998/10/20}{Newly added commands: \cs{Bondtrib}}
+% \begin{macro}{\Bondtrib}
+% \begin{macrocode}
+% bond between 1 and 3
+ \def\Bondtrib{%
+ \ifx\aaa\empty%
+ \ifx\eee\empty%
+ \Put@Line(6,-42)(-3,-5){72}% %double bond 1-3
+ \else%
+ \Put@Line(6,-42)(-3,-5){60}% %double bond 1-3
+ \fi%
+ \else%
+ \ifx\fff\empty%
+ \Put@Line(-6,-62)(-3,-5){60}% %double bond 1-2
+ \else%
+ \Put@Line(6,-42)(-3,-5){60}% %double bond 1-2
+ \fi%
+ \fi%
+ }%
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v1.02}{1998/10/20}{Newly added commands:
+% \cs{skBondtria}}
+% \begin{macro}{\skBondtria}
+% \begin{macrocode}
+%bond between 1 and 2
+\def\skBondtria{%
+% \begin{sfpicture}(200,200)(0,0)
+% \begin{sfpicture}(0,0)(0,0)
+ \ifx\aaa\empty%
+ \ifx\ccc\empty%
+ \Put@Line(0,0)(3,-5){103}% %bond 1-2
+ \else%
+ \Put@Line(0,0)(3,-5){80}% %bond 1-2
+ \fi%
+ \else%
+ \ifx\ccc\empty%
+ \Put@Line(103,-171)(-3,5){80}% %bond 1-2
+ \else%
+ \Put@Line(35,-21)(3,-5){60}% %bond 1-2
+ \fi%
+ \fi
+%\end{sfpicture}
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v1.02}{1998/10/20}{Newly added commands:
+% \cs{skBondtrib}}
+% \begin{macro}{\skBondtrib}
+% \begin{macrocode}
+%bond between 1 and 3
+\def\skBondtrib{%
+% \begin{sfpicture}(0,0)(0,0)
+% \begin{sfpicture}(200,200)(0,0)
+ \ifx\aaa\empty%
+ \ifx\eee\empty%
+ \Put@Line(0,0)(-3,-5){103}% %bond 1-3
+ \else%
+ \Put@Line(0,0)(-3,-5){80}% %bond 1-3
+ \fi%
+ \else%
+ \ifx\eee\empty%
+ \Put@Line(-103,-171)(3,5){80}% %bond 1-3
+ \else%
+ \Put@Line(-35,-21)(-3,-5){60}% %bond 1-3
+ \fi%
+ \fi
+%\end{sfpicture}
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v2.00}{1998/12/25}{Newly added commands:
+% \cs{dotskBondtria}}
+% \begin{macro}{\dotskBondtria}
+% \begin{macrocode}
+%bond between 1 and 2
+\def\dotskBondtria{%
+ \ifx\aaa\empty%
+ \ifx\ccc\empty%
+ \dotorline(0,0)(3,-5){103}/(0,0)(103,-171)%
+ \else%
+ \dotorline(0,0)(3,-5){80}/(0,0)(80,-133)%
+ \fi%
+ \else%
+ \ifx\ccc\empty%
+ \dotorline(103,-171)(-3,5){80}/(103,-171)(23,-38)%
+ \else%
+ \dotorline(35,-21)(3,-5){60}/(35,-21)(95,-121)%
+ \fi%
+ \fi
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v2.00}{1998/12/25}{Newly added commands:
+% \cs{dotskBondtrib}}
+% \begin{macro}{\dotskBondtrib}
+% \begin{macrocode}
+%bond between 1 and 3
+\def\dotskBondtrib{%
+ \ifx\aaa\empty%
+ \ifx\eee\empty%
+ \dotorline(0,0)(-3,-5){103}/(0,0)(-103,-171)%
+ \else%
+ \dotorline(0,0)(-3,-5){80}/(0,0)(-80,-133)%
+ \fi%
+ \else%
+ \ifx\eee\empty%
+ \dotorline(-103,-171)(3,5){80}/(-103,-171)(-23,-38)%
+ \else%
+ \dotorline(-35,-21)(-3,-5){60}/(-35,-21)(-95,-121)%
+ \fi%
+ \fi
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Drawing three-membered heterocycles (inverse)}
+%
+% The macro |\threeheteroi| typesets a three-membered ring of
+% inverse vertical type. The following numbering is adopted
+% in this macro.
+% \changes{v1.02}{1998/10/20}{Newly added commands:
+% \cs{threeheteroi}}
+%
+% \begin{verbatim}
+% ****************************
+% * thereehetero derivatives *
+% * (inverse vertical type) *
+% ****************************
+%
+% /1` <===== the original point
+% c / ` a
+% 3--------2
+% b
+% \end{verbatim}
+%
+% The macro |\threeheteroi| has two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \threeheteroi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT]
+% \threeheterovi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `c' and a uppercase
+% character `A' or `B'.
+%
+% The |BONDLIST| argument contains one
+% character selected from a to c, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `$n+$' ($n=1$ to $3$) represents a plus charge on a hetero atom
+% at the $n$-position.
+% The option `$n+$' ($n=4$ to $6$) represents a plus charge outside the ring.
+% The option `$0+$' typesets a plus charge at the center of the ring.
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% none : saturated
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 3,1-double bond
+% A : aromatic circle
+% {n+} : plus at the n-hetero atom (n = 1 to 3)
+% : n=4 -- outer plus at 1 position
+% : n=5 -- outer plus at 2 position
+% : n=6 -- outer plus at 3 position
+% {0+} : plus at the center of a cyclopropane ring
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 3 atoms)
+%
+% for n = 1 to 3
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position,
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 3
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges may be regarded as both fused and non-fused
+% positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a to c: see BONDLIST)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \threeheteroi{1==N}{1==Cl;2==F}
+% \threeheteroi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \threeheteroi{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl}
+% \end{verbatim}
+%
+% The definition of |\threehetero| uses a picture environment and
+% consists of the same unit processes as shown in |\sixheterov|:
+% \begin{enumerate}
+% \item treatment of atom list,
+% \item placing outer skeletons,
+% \item placing inner double bonds,
+% \item setting hetero atoms, and
+% \item placing substituents by using |\setsixringv| partially.
+% \end{enumerate}
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/12/5}{Add: spiro and fused rings}
+% \changes{v2.01}{2001/6/20}{The
+% \cs{storeclipinfo} command is added.}
+%
+% \begin{macro}{\threeheteroi}
+% \begin{macro}{\@three@heteroi}
+% \begin{macro}{\@three@@heteroi}
+% \begin{macro}{\@threeheteroi}
+% \begin{macrocode}
+\def\threeheteroi{\@ifnextchar({\@three@heteroi(@}{\@three@heteroi(@)}}
+\def\@three@heteroi(#1){\@ifnextchar[{\@three@@heteroi(#1)[@}%
+{\@three@@heteroi(#1)[@]}}
+\def\@three@@heteroi(#1)[#2]#3#4{\@ifnextchar[%
+{\@threeheteroi(#1)[#2]{#3}{#4}[@}%
+{\@threeheteroi(#1)[#2]{#3}{#4}[@]}}
+\def\@threeheteroi(#1)[#2]#3#4[#5]{%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+% % treatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniatom\iniflag%initialize
+\test@vertix@sixv{#3}{a}{c}{e}{@}{@}{@}%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % adustment of subs positions %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\@reset@ylsw%
+\ylposition{#4}{0}{0}{2}{0}%subst 1
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{68}\def\@@yli{406}\fi
+\else
+\ylposition{#4}{1}{2}{4}{0}%subst 2
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{142}\def\@@yli{275}\fi
+\else
+\ylposition{#4}{2}{4}{6}{0}%subst 3
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{275}\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(800,580)(-468,-340){threeheterovi}%
+(468,340)(68,0)%2002/4/30 by S. Fujita
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+{\resetbdsw%
+\@bond@@omit{#5}%
+\Put@Direct(-68,0){\set@skel@longbond{#1}{a}{skBondtria}}%
+ % bond between 1 and 2 \@aaa -> \skBondtria etc
+\Put@Direct(0,-275){\set@skel@longbond{#1}{b}{skbondshorizi}}%
+ % bond between 2 and 3 \@bbb -> \skbondb etc
+\Put@Direct(-68,0){\set@skel@longbond{#1}{c}{skBondtrib}}%
+ % bond between 3 and 1 \@ccc -> \skBondtrib etc
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r\relax%
+\else\if\member a\relax\Put@Direct(-68,0){\Bondtria}%
+\else\if\member b\relax\Put@Direct(0,-274){\bondshorizi}%
+\else\if\member c\relax\Put@Direct(-68,0){\Bondtrib}%
+\else\if\member A\relax% aromatic circle
+ \Put@oCircle(-70,-108){100}% %circle
+\else
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+% % inner bond attachment %
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+ \expandafter\twoCH@@R\member//%
+ \set@fusionadd@threevi
+\fi\fi\fi\fi\fi%
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\Put@Direct(-68,-406){\set@hetatom@sixv{#3}{0}{0}{2}{0}%
+%\if@aclip\global\@acliptrue\fi
+\storeclipinfo
+}%subst 1
+\developclipinfo
+\Put@Direct(0,-275){\set@hetatom@sixv{#3}{2}{4}{6}{0}%
+%\if@eclip\global\@ecliptrue\fi
+\storeclipinfo
+}%subst 3
+\developclipinfo
+\Put@Direct(-142,-275){\set@hetatom@sixv{#3}{1}{2}{4}{0}%
+%\if@cclip\global\@ccliptrue\fi
+\storeclipinfo
+}%subst 2
+\developclipinfo
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\Put@Direct(-68,-406){\setsixringv{#4}{0}{0}{2}{0}}%subst 1
+\Put@Direct(0,-275){\setsixringv{#4}{2}{4}{6}{0}}%subst 3
+\Put@Direct(-142,-275){\setsixringv{#4}{1}{2}{4}{0}}%subst 2
+\end{ShiftPicEnvB}\iniatom\iniflag}% %end of \threeheteroi macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\threeheterovi}
+% \begin{macrocode}
+\let\threeheterovi=\threeheteroi
+% \end{macrocode}
+% \end{macro}
+%
+% The macro |\set@fusionadd@threevi| is an inner command contained
+% in the definition of |\threeheteroi| etc., where
+% the macro is used for setting an additive
+% or a fused ring at each bond (designated by |\@@tmpa|). The
+% fused ring is typeset by the inner command |\set@fusion@threevi|.
+%
+% \begin{macro}{\set@fusionadd@threevi}
+% \changes{v2.00}{1998/12/5}{New command: \cs{set@fusionadd@threevi}}
+% \begin{macrocode}
+\def\set@fusionadd@threevi{%
+ \if\@@tmpa 0\relax%
+ \putratom{-94}{-120}{\scriptsize\@@tmpb}% % right type
+ \else\if\@@tmpa 1\relax%
+ \putratom{-94}{-80}{\scriptsize\@@tmpb}% % right type
+ \else\if\@@tmpa 2\relax%
+ \putratom{-52}{-150}{\scriptsize\@@tmpb}% % right type
+ \else\if\@@tmpa 3\relax%
+ \putratom{-126}{-150}{\scriptsize\@@tmpb}% % right type
+ \else\if\@@tmpa 4\relax%
+ \putratom{-30}{0}{\scriptsize\@@tmpb}% % right type
+ \else\if\@@tmpa 5\relax%
+ \putratom{32}{-130}{\scriptsize\@@tmpb}% % right type
+ \else\if\@@tmpa 6\relax%
+ \putratom{-230}{-130}{\scriptsize\@@tmpb}% % right type
+ \else
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+ \set@fusion@threevi
+ \fi\fi\fi\fi\fi\fi\fi%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% The inner command |\set@fusion@threevi| is used for typesetting
+% a fused ring at each bond represented by |\@@tmpa|. Warnings
+% concerning mismatched ring-fusions are based on the command
+% |\FuseWarning|.
+%
+% \begin{macro}{\set@fusion@threevi}
+% \changes{v2.00}{1998/12/5}{New command: \cs{set@fusion@threevi}}
+% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring}
+% \begin{macrocode}
+\def\set@fusion@threevi{%
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+\if\@@tmpa b\relax%
+ \putlratom{29}{-171}{\@@tmpb}% % bond fused
+ \FuseWarning{200}{0}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}%
+ \else\if\@@tmpa B\relax%
+ \putlratom{-171}{-171}{\@@tmpb}% % bond fused
+ \FuseWarning{-200}{0}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}%
+ \else\if\@@tmpa a\relax%
+ \putlratom{-68}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{-103}{171}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}%
+ \else\if\@@tmpa A\relax%
+ \putlratom{29}{-171}{\@@tmpb}% % bond fused
+ \FuseWarning{103}{-171}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}%
+ \else\if\@@tmpa c\relax%
+ \putlratom{-171}{-171}{\@@tmpb}% % bond fused
+ \FuseWarning{103}{171}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c}%
+ \else\if\@@tmpa C\relax%
+ \putlratom{-68}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{-103}{-171}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C}%
+\fi\fi\fi\fi\fi\fi%
+\global\let\FuseWarning=\FuseW@rning%added 2010/10/01
+}% end of the macro \set@fusion@threevi
+%</hetarom>
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v5.01}{2013/3/19}{added \cs{oxiranev}, \cs{aziridinev}, and \cs{thiiranev} }
+% \begin{macro}{\oxiranevi}
+% \begin{macro}{\aziridinevi}
+% \begin{macro}{\thiiranevi}
+% \begin{macrocode}
+\def\oxiranevi{\@ifnextchar[{\@oxiranevi[@}{\@oxiranevi[]}}
+\def\@oxiranevi[#1]#2{%
+\iforigpt \typeout{command `oxiranevi' %
+ is based on `threeheterovi'.}\fi%
+\threeheterovi[#1]{1==O}{#2}}
+\def\aziridinevi{\@ifnextchar[{\@aziridinevi[@}{\@aziridinevi[]}}
+\def\@aziridinevi[#1]#2{%
+\iforigpt \typeout{command `aziridinevi' %
+ is based on `threeheterovi'.}\fi%
+\threeheterovi[#1]{1==N}{#2}}
+\def\thiiranevi{\@ifnextchar[{\@thiiranevi[@}{\@thiiranevi[]}}
+\def\@thiiranevi[#1]#2{%
+\iforigpt \typeout{command `thiiranevi' %
+ is based on `threeheterovi'.}\fi%
+\threeheterovi[#1]{1==S}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \Finale
+%
+\endinput
diff --git a/Master/texmf-dist/source/latex/xymtex/base/hetarom.ins b/Master/texmf-dist/source/latex/xymtex/base/hetarom.ins
new file mode 100644
index 00000000000..dc95b4b86fd
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/hetarom.ins
@@ -0,0 +1,58 @@
+\def\batchfile{hetarom.ins}
+\input docstrip.tex
+\preamble
+
+This is a generated file.
+
+Copyright 1996, 1998, 2000, 2001, 2002, 2004, 2006, 2010, 2013 by Shinsaku Fujita
+all rights reserved.
+This style file is created for drawing chemical structural formulas
+This style file is to be contained in the ``xymtex'' directory which
+is an input directory for TeX.
+
+This file is part of the XyMTeX system.
+=======================================
+
+Old Versions:
+Version 1.01 Released on August 16, 1996
+Version 1.02 Released on October 31, 1998 (private version)
+Version 2.00 Released on December 25, 1998
+Version 2.00a Released on November 11, 2000
+Version 2.01 Released on June 20, 2001 (private version)
+Version 3.00 Released on April 30, 2002
+Version 4.00 Released on May 30, 2002 (private version)
+Version 4.00 Released on August 30, 2004
+Version 4.02 Released on December 20, 2004
+Version 4.03b Released on September 5, 2006 (decaheterov, nonaheterov bug fix)
+Version 5.00 Released on October 01, 2010
+
+The Present Version:
+Version 5.01 Released on March 19, 2013
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3
+of this license or (at your option) any later version.
+The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of LaTeX
+version 2005/12/01 or later.
+
+This work has the LPPL maintenance status `maintained'.
+The Current Maintainer of this work is Shinsaku Fujita.
+
+This work consists of the files hetarom.dtx and hetarom.ins
+and the derived file hetarom.sty.
+
+=======================================
+
+\endpreamble
+
+\keepsilent
+
+\generateFile{hetarom.drv}{t}{%
+ \from{hetarom.dtx}{driver}}
+
+\generateFile{hetarom.sty}{t}{%
+ \from{hetarom.dtx}{hetarom}}
+
+\endinput
diff --git a/Master/texmf-dist/source/latex/xymtex/base/hetaromh.dtx b/Master/texmf-dist/source/latex/xymtex/base/hetaromh.dtx
new file mode 100644
index 00000000000..88374187ae8
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/hetaromh.dtx
@@ -0,0 +1,6287 @@
+% \iffalse meta-comment
+%% File: hetaromh.dtx
+%
+% Copyright 1993,1996,1998,2000,2001,2002,2004,2006,2010,2013 by Shinsaku Fujita
+%
+% This file is part of XyMTeX system.
+% -------------------------------------
+%
+% This file is a successor to:
+%
+% hetaromh.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].
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+% The Current Maintainer of this work is Shinsaku Fujita.
+%
+% This work consists of the files hetaromh.dtx and hetaromh.ins
+% and the derived file hetaromh.sty.
+%
+% Please report any bugs, comments, suggestions, etc. to:
+% Shinsaku Fujita,
+% Shonan Institute of Chemoinformatics and Mathematical Chemistry
+% Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun, Kanagawa 250-0019 Japan
+% (old address)
+% Ashigara Research Laboratories, Fuji Photo Film Co., Ltd.,
+% Minami-Ashigara, Kanagawa-ken, 250-01, Japan.
+% (old address)
+% Department of Chemistry and Materials Technology,
+% Kyoto Institute of Technology, \\
+% Matsugasaki, Sakyoku, Kyoto, 606 Japan
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{hetaromh}
+% \def\versi@ndate{December 01, 1993}
+% \def\versi@nno{ver1.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{hetaromh}
+% \def\versi@ndate{August 16, 1996}
+% \def\versi@nno{ver1.01}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{hetaromh}
+% \def\versi@ndate{October 31, 1998}
+% \def\versi@nno{ver1.02}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{hetaromh}
+% \def\versi@ndate{December 25, 1998}
+% \def\versi@nno{ver2.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{hetaromh}
+% \def\versi@ndate{November 11, 2000}
+% \def\versi@nno{ver2.00a}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{hetaromh}
+% \def\versi@ndate{June 20, 2001}
+% \def\versi@nno{ver2.01}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{hetaromh}
+% \def\versi@ndate{April 30, 2002}
+% \def\versi@nno{ver3.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{hetaromh}
+% \def\versi@ndate{May 30, 2002}
+% \def\versi@nno{ver4.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{hetaromh}
+% \def\versi@ndate{August 30, 2004}
+% \def\versi@nno{ver4.01}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{hetaromh}
+% \def\versi@ndate{December 20, 2004}
+% \def\versi@nno{ver4.02}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{hetaromh}
+% \def\versi@ndate{September 5, 2006}
+% \def\versi@nno{ver4.03b}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{hetaromh}
+% \def\versi@ndate{October 01, 2010}
+% \def\versi@nno{ver5.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \fi
+%
+% \CheckSum{5645}
+%% \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}
+% \changes{v2.00a}{2000/11/11}{bug fix}
+% \changes{v2.01}{2001/6/20}{Size reduction and clipping information}
+% \changes{v3.00}{2002/4/30}{sfpicture enviroment etc.}
+% \changes{v4.00}{2002/05/30}{PostScript output and ShiftPicEnv}
+% \changes{v4.01}{2004/08/30}{Minor additions}
+% \changes{v4.02}{2004/12/20}{Exception to wedged bonds}
+% \changes{v4.02a}{2004/12/27}{Bug fix: \cs{ggg} to \cs{gggA}}
+% \changes{v4.03b}{2006/9/5}{Bug fix: \cs{ggg} to \cs{gggA} revised}
+% \changes{v5.00}{2010/10/01}{the LaTeX Project Public License}
+% \changes{v5.01}{2013/03/19}{added \cs{pyrazinehi}, \cs{oxiraneh}, etc.}
+% \fi
+%
+% \iffalse
+%<*driver>
+\NeedsTeXFormat{pLaTeX2e}
+% \fi
+\ProvidesFile{hetaromh.dtx}[2013/03/19 v5.01 XyMTeX{} package file]
+% \iffalse
+\documentclass{ltxdoc}
+\GetFileInfo{hetaromh.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{Heterocycles of horizontal type by {\sffamily hetaromh.sty}
+(\fileversion) of \XyMTeX{}}
+\author{Shinsaku Fujita \\
+Shonan Institute of Chemoinformatics and Mathematical Chemistry, \\
+Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun, Kanagawa 250-0019 Japan
+% % (old address)
+% %Department of Chemistry and Materials Technology, \\
+% %Kyoto Institute of Technology, \\
+% %Matsugasaki, Sakyoku, Kyoto, 606-8585 Japan
+% %% (old address)
+% %% Ashigara Research Laboratories,
+% %% Fuji Photo Film Co., Ltd., \\
+% %% Minami-Ashigara, Kanagawa, 250-01 Japan
+}
+\date{\filedate}
+%
+\begin{document}
+ \maketitle
+ \DocInput{hetaromh.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \section{Introduction}\label{hetaromh:intro}
+%
+% \subsection{Options for {\sffamily docstrip}}
+%
+% \DeleteShortVerb{\|}
+% \begin{center}
+% \begin{tabular}{|l|l|}
+% \hline
+% \emph{option} & \emph{function}\\ \hline
+% hetaromh & hetaromh.sty \\
+% driver & driver for this dtx file \\
+% \hline
+% \end{tabular}
+% \end{center}
+% \MakeShortVerb{\|}
+%
+% \subsection{Version Information}
+%
+% \begin{macrocode}
+%<*hetaromh>
+\typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 5.01}
+\typeout{ -- Released March 19, 2013 by Shinsaku Fujita}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\j@urnalname{hetaromh}
+\def\versi@ndate{March 19, 2013}
+\def\versi@nno{ver5.01}
+\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 hetaromh.sty}
+%
+% \begin{verbatim}
+%
+% **********************************
+% * hetaromh.sty: list of commands *
+% **********************************
+%
+% <Conventions for bond-setting>
+%
+% \hbonda
+% \hbondf
+% \hbondb
+% \hbondc
+% \hbondd
+% \hbonde
+% \hbondvert
+% \hbondverti
+%
+% \hskbonda
+% \hskbondf
+% \hskbondc
+% \hskbondd
+% \hskbondb
+% \hskbonde
+% \hskbondvert
+% \hskbondverti
+%
+% \dothskbonda
+% \dothskbondf
+% \dothskbondc
+% \dothskbondd
+% \dothskbondb
+% \dothskbonde
+% \dothskbondvert
+% \dothskbondverti
+% \end{verbatim}
+%
+% \begin{verbatim}
+%
+% <Six-membered heterocycles (horizontal)>
+%
+% Basic Macros
+%
+% \sixheteroh \@sixheteroh
+% \sixheterohi \@sixheterohi
+%
+% Application Macros
+%
+% \pyridineh \@pyridineh
+% \pyridinehi \@pyridinehi
+% \pyrazineh \@pyrazineh
+% \pyrazinehi \@pyrazinehi
+% \pyrimidineh \@pyrimidineh
+% \pyrimidinehi \@pyrimidinehi
+% \pyridazineh \@pyridazineh
+% \pyridazinehi \@pyridazinehi
+% \triazineh \@triazineh
+% \triazinehi \@triazinehi
+% \end{verbatim}
+%
+% \begin{verbatim}
+%
+% <Five-membered heterocycles (horizontal)>
+%
+% Basic Macros
+%
+% \fiveheteroh \@fiveheteroh
+% \fiveheterohi \@fiveheterohi
+%
+% Application Macros
+%
+% \pyrroleh \@pyrroleh
+% \pyrazoleh \@pyrazoleh
+% \imidazoleh \@imidazoleh
+% \isoxazoleh \@isoxazoleh
+% \oxazoleh \@oxazoleh
+%
+% \furanh \@furanh
+% \thiopheneh \@thiopheneh
+%
+% \pyrrolehi \@pyrrolehi
+% \pyrazolehi \@pyrazolehi
+% \imidazolehi \@imidazolehi
+% \isoxazolehi \@isoxazolehi
+% \oxazolehi \@oxazolehi
+%
+% \furanhi \@furanhi
+% \thiophenehi \@thiophenehi
+%
+% \end{verbatim}
+%
+% \begin{verbatim}
+%
+% <Six-Six fused heterocycles (horizontal)>
+%
+% Basic Macros
+%
+% \decaheteroh \@decaheteroh
+% \decaheterohi \@decaheterohi
+%
+% Application Macros
+%
+% \quinolineh \@quinolineh
+% \quinolinehi \@quinolinehi
+% \isoquinolineh \@isoquinolineh
+% \isoquinolinehi \@isoquinolinehi
+% \quinoxalineh \@quinoxalineh
+% \quinoxalinehi \@quinoxalinehi
+% \quinazolineh \@quinazolineh
+% \quinazolinehi \@quinazolinehi
+% \cinnolineh \@cinnolineh
+% \cinnolinehi \@cinnolinehi
+% \pteridineh \@pteridineh
+% \pteridinehi \@pteridinehi
+% \end{verbatim}
+%
+% \begin{verbatim}
+%
+% <Six-Five fused heterocycles (horizontal)>
+%
+% Basic Macros
+%
+% \nonaheteroh \@nonaheteroh
+% \nonaheterohi \@nonaheterohi
+%
+% Application Macros
+%
+% \purineh \@purineh
+% \purinehi \@purinehi
+% \indoleh \@indoleh
+% \indolehi \@indolehi
+% \indolizineh \@indolizineh
+% \indolizinehi \@indolizinehi
+% \isoindoleh \@isoindoleh
+% \isoindolehi \@isoindolehi
+% \benzofuraneh \@benzofuraneh
+% \benzofuranehi \@benzofuranehi
+% \isobenzofuraneh \@isobenzofuraneh
+% \isobenzofuranehi \@isobenzofuranehi
+% \benzoxazoleh \@benzoxazoleh
+% \benzoxazolehi \@benzoxazolehi
+% \end{verbatim}
+%
+% \begin{verbatim}
+%
+% <Building units>
+%
+% \sixunith \@sixunith
+% \fiveunith \@fiveunith
+% \fiveunithi \@fiveunithi
+% \end{verbatim}
+%
+% \begin{verbatim}
+%
+% <Three-membered rings>
+%
+% \threeheteroh \@threeheteroh
+% \threeheterohi \@threeheterohi
+%
+% Application Macros
+% \oxiraneh \oxiranehi
+% \aziridineh \aziridinehi
+% \thiiraneh \thiiranehi
+% \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 hetaromh.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}{}%
+\@ifundefined{test@vertix@decavi}{\input hetarom.sty\relax}{}%
+\unitlength=0.1pt%
+% \end{macrocode}
+%
+% \section{Various switches}
+%
+% These control sequences have been commented out, since they are
+% defined elsewhere.
+%
+% \begin{macrocode}
+% % ****************************
+% % * various flags (switches) *
+% % ****************************
+% \newif\if@gclip \@gclipfalse%
+% \newif\if@hclip \@hclipfalse%
+% \newif\if@iclip \@iclipfalse%
+% \newif\if@jclip \@jclipfalse%
+% \def\iniflag{%
+% \@aclipfalse \@bclipfalse\@cclipfalse\@clipfalse\@eclipfalse%
+% \@fclipfalse\@gclipfalse\@hclipfalse\@iclipfalse\@jclipfalse%
+% \@clipfusefalse}%
+% \def\iniatom{%
+% \def\aaa{}\def\bbb{}\def\ccc{}\def\ddd{}\def\eee{}\def\fff{}%
+% \def\gggA{}\def\hhh{}\def\iii{}\def\jjj{}%
+% \def\@aaa{}\def\@bbb{}\def\@ccc{}\def\@ddd{}\def\@eee{}\def\@fff{}%
+% }%
+% \def\resetbdsw{\gdef\@aaa{a}\gdef\@bbb{b}\gdef\@ccc{c}%
+% \gdef\@ddd{d}\gdef\@eee{e}\gdef\@fff{f}}%
+%
+\iniatom%
+% \end{macrocode}
+%
+% \section{Macros for setting bonds}
+% \subsection{Inner double bonds}
+%
+% The macros |\sixheteroh| and |\fiveheteroh| use internal macros for setting
+% inner double bonds in accordance with the presence or the absence of
+% hetero atoms. During the processes of such setting,
+% the inner macros |\hbonda| to |\hbondf| are used to set a bond
+% on each edge of a six- or five-membered ring; and
+% the inner macros |\hbondvert| and |\hbondverti| draw vertical bonds
+% of a five-membered ring.
+%
+% Note that
+% comments (conerning locant numbers) on the end of each row have
+% lost the exact meaning,
+% since such a command moiety is used in many macros after copying.
+%
+% \begin{verbatim}
+% ******************************
+% * setting inner double bonds *
+% ******************************
+%
+% b
+% (bbb) 2 3 (ccc)
+% a ----- c
+% * *
+% the original point ===> 1 * (aaa) * 4 (ddd)
+% (0,0) * * c
+% f -----
+% (fff) 6 5 (eee)
+% e
+% \end{verbatim}
+%
+% \begin{macro}{\hbonda}
+% The macro |\hbonda| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\aaa| and |\bbb|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+% bond between 1 and 2
+\def\hbonda{%
+ \ifx\aaa\empty%
+ \ifx\bbb\empty%
+ \Put@Line(42,6)(3,5){78}% %double bond 1-2
+ \else%
+ \Put@Line(42,6)(3,5){62}% %double bond 1-2
+ \fi%
+ \else%
+ \ifx\bbb\empty%
+ \Put@Line(57,36)(3,5){62}% %double bond 1-2
+ \else%
+ \Put@Line(57,36)(3,5){62}% %double bond 1-2
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hbondf}
+% The macro |\hbondf| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\aaa| and |\fff|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+% bond between 1 and 6
+\def\hbondf{%
+ \ifx\aaa\empty%
+ \ifx\fff\empty%
+ \Put@Line(42,-6)(3,-5){78}% %double bond 1-6
+ \else%
+ \Put@Line(42,-6)(3,-5){62}% %double bond 1-6
+ \fi%
+ \else%
+ \ifx\fff\empty%
+ \Put@Line(57,-36)(3,-5){62}% %double bond 1-6
+ \else%
+ \Put@Line(57,-36)(3,-5){62}% %double bond 1-6
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hbondb}
+% The macro |\hbondf| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\bbb| and |\ccc|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+% bond between 3 and 2
+ \def\hbondb{%
+ \ifx\bbb\empty%
+ \ifx\ccc\empty%
+ \Put@Line(129,138)(1,0){148}% %double bond 2-3
+ \else%
+ \Put@Line(129,138)(1,0){134}% %double bond 3-2
+ \fi%
+ \else%
+ \ifx\ccc\empty%
+ \Put@Line(143,138)(1,0){134}% %double bond 3-2
+ \else%
+ \Put@Line(143,138)(1,0){110}% %double bond 3-2
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hbondc}
+% The macro |\hbondc| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\ddd| and |\ccc|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+% bond between 4 and 3
+ \def\hbondc{%
+ \ifx\ddd\empty%
+ \ifx\ccc\empty%
+ \Put@Line(364,6)(-3,5){78}% %double bond 4-3
+ \else%
+ \Put@Line(364,6)(-3,5){62}% %double bond 4-3
+ \fi%
+ \else%
+ \ifx\ccc\empty%
+ \Put@Line(349,36)(-3,5){62}% %double bond 4-3
+ \else%
+ \Put@Line(349,36)(-3,5){62}% %double bond 4-3
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hbondd}
+% The macro |\hbondf| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\ddd| and |\eee|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+% bond between 4 and 5
+ \def\hbondd{%
+ \ifx\ddd\empty%
+ \ifx\eee\empty%
+ \Put@Line(364,-6)(-3,-5){78}% %double bond 4-5
+ \else%
+ \Put@Line(364,-6)(-3,-5){62}% %double bond 4-5
+ \fi%
+ \else%
+ \ifx\eee\empty%
+ \Put@Line(349,-36)(-3,-5){62}% %double bond 4-5
+ \else%
+ \Put@Line(349,-36)(-3,-5){62}% %double bond 4-5
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hbonde}
+% The macro |\hbonde| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\fff| and |\eee|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+% bond between 5 and 6
+\def\hbonde{%
+ \ifx\fff\empty%
+ \ifx\eee\empty%
+ \Put@Line(129,-138)(1,0){148}% %double bond 6-5
+ \else%
+ \Put@Line(129,-138)(1,0){134}% %double bond 5-6
+ \fi%
+ \else%
+ \ifx\eee\empty%
+ \Put@Line(143,-138)(1,0){134}% %double bond 5-6
+ \else%
+ \Put@Line(143,-138)(1,0){110}% %double bond 5-6
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hbondvert}
+% The macro |\hbondvert| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\fff| and |\bbb|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+% vertical inner bond for five-membered rings
+\def\hbondvert{%
+ \ifx\fff\empty%
+ \ifx\bbb\empty%
+ \Put@Line(136,-138)(0,1){277}% %double bond 4-3
+ \else%
+ \Put@Line(136,-138)(0,1){258}% %double bond 4-3
+ \fi%
+ \else%
+ \ifx\bbb\empty%
+ \Put@Line(136,-120)(0,1){258}% %double bond 4-3
+ \else
+ \Put@Line(136,-120)(0,1){239}% %double bond 4-3
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hbondverti}
+% The macro |\hbondverti| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\ccc| and |\eee|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+% horizontal inner bond for five-membered rings (inverse type)
+\def\hbondverti{%
+ \ifx\eee\empty%
+ \ifx\ccc\empty%
+ \Put@Line(270,-138)(0,0){277}% %double bond 4-3
+ \else%
+ \Put@Line(270,-138)(0,1){258}% %double bond 4-3
+ \fi%
+ \else%
+ \ifx\ccc\empty%
+ \Put@Line(270,-120)(0,1){258}% %double bond 4-3
+ \else%
+ \Put@Line(270,-120)(0,1){239}% %double bond 4-3
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Skeletal bonds}
+%
+% The macros |\sixheteroh| and |\fiveheteroh| use inner macros for setting
+% skeletal bonds in accordance with the presence or the absence of
+% hetero atoms. During the processes of such setting,
+% the inner macros |\skbonda| to |\skbondf| are used to set a bond
+% on each edge of a six- or five-membered ring; and
+% the inner macros |\hskibondverti| to |\hskibondverti| draw vertical bonds
+% of a five-membered ring.
+%
+% \begin{verbatim}
+% ********************************************
+% * setting skeletal bonds (horizontal type) *
+% ********************************************
+% The following numbering is adopted in this macro.
+%
+% b
+% (bbb) 2 3 (ccc)
+% a ----- c
+% * *
+% the original point ===> 1 * (aaa) * 4 (ddd)
+% (0,0) * * d
+% f -----
+% (fff) 6 5 (eee)
+% e
+% \end{verbatim}
+%
+% \begin{macro}{\hskbonda}
+% The macro |\hskbonda| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\aaa| and |\bbb|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+%bond between 1 and 2
+\def\hskbonda{%
+ \ifx\aaa\empty%
+ \ifx\bbb\empty%
+ \Put@Line(0,0)(3,5){103}% %bond 1-2
+ \else%
+ \Put@Line(0,0)(3,5){79}% %bond 1-2
+ \fi%
+ \else%
+ \ifx\bbb\empty%
+ \Put@Line(24,40)(3,5){79}% %bond 1-2
+ \else%
+ \Put@Line(24,40)(3,5){62}% %bond 1-2
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hskbondf}
+% The macro |\hskbondf| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\aaa| and |\fff|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+%bond between 1 and 6
+\def\hskbondf{%
+ \ifx\aaa\empty%
+ \ifx\fff\empty
+ \Put@Line(0,0)(3,-5){103}% %bond 1-6
+ \else%
+ \Put@Line(0,0)(3,-5){79}% %bond 1-6
+ \fi%
+ \else%
+ \ifx\fff\empty%
+ \Put@Line(24,-40)(3,-5){79}% %bond 1-6
+ \else%
+ \Put@Line(24,-40)(3,-5){62}% %bond 1-6
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hskbondc}
+% The macro |\hskbondc| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\ddd| and |\ccc|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+%bond between 4 and 3
+\def\hskbondc{%
+ \ifx\ddd\empty%
+ \ifx\ccc\empty%
+ \Put@Line(406,0)(-3,5){103}% %bond 4-3
+ \else%
+ \Put@Line(406,0)(-3,5){79}% %bond 4-3
+ \fi%
+ \else%
+ \ifx\ccc\empty%
+ \Put@Line(382,40)(-3,5){79}% %bond 4-3
+ \else%
+ \Put@Line(382,40)(-3,5){62}% %bond 4-3
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hskbondd}
+% The macro |\hskbondd| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\ddd| and |\eee|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+%bond between 4 and 5
+\def\hskbondd{%
+ \ifx\ddd\empty%
+ \ifx\eee\empty%
+ \Put@Line(406,0)(-3,-5){103}% %bond 4-5
+ \else%
+ \Put@Line(406,0)(-3,-5){79}% %bond 4-5
+ \fi%
+ \else%
+ \ifx\eee\empty%
+ \Put@Line(382,-40)(-3,-5){79}% %bond 4-5
+ \else%
+ \Put@Line(382,-40)(-3,-5){62}% %bond 4-5
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hskbondb}
+% The macro |\hskbondb| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\bbb| and |\ccc|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+%bond between 3 and 2
+\def\hskbondb{%
+ \ifx\bbb\empty%
+ \ifx\ccc\empty%
+ \Put@Line(103,171)(1,0){200}% %bond 2-3
+ \else%
+ \Put@Line(103,171)(1,0){160}% %bond 3-2
+ \fi%
+ \else%
+ \ifx\ccc\empty%
+ \Put@Line(143,171)(1,0){160}% %bond 3-2
+ \else%
+ \Put@Line(143,171)(1,0){120}% %bond 3-2
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hskbonde}
+% The macro |\hskbonde| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\eee| and |\fff|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+%bond between 5 and 6
+\def\hskbonde{%
+ \ifx\eee\empty%
+ \ifx\fff\empty%
+ \Put@Line(103,-171)(1,0){200}% %bond 6-5
+ \else%
+ \Put@Line(143,-171)(1,0){160}% %bond 5-6
+ \fi%
+ \else%
+ \ifx\fff\empty%
+ \Put@Line(103,-171)(1,0){160}% %bond 5-6
+ \else%
+ \Put@Line(143,-171)(1,0){120}% %bond 5-6
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hskbondvert}
+% The macro |\hskbondvert| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\bbb| and |\fff|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+%vertical bond for five-membered rings
+\def\hskbondvert{%
+ \ifx\fff\empty%
+ \ifx\bbb\empty%
+ \Put@Line(103,-171)(0,1){342}% %bond 4-3
+ \else%
+ \Put@Line(103,-171)(0,1){300}% %bond 4-3
+ \fi%
+ \else%
+ \ifx\bbb\empty%
+ \Put@Line(103,171)(0,-1){300}% %bond 4-3
+ \else%
+ \Put@Line(103,-129)(0,1){258}% %bond 4-3
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hskbondverti}
+% The macro |\hskbondverti| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\eee| and |\ccc|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+%vertical bond for five-membered rings (inverse type)
+\def\hskbondverti{%
+ \ifx\eee\empty%
+ \ifx\ccc\empty%
+ \Put@Line(303,-171)(0,1){342}% %bond 4-3
+ \else%
+ \Put@Line(303,-171)(0,1){300}% %bond 4-3
+ \fi%
+ \else%
+ \ifx\ccc\empty%
+ \Put@Line(303,171)(0,-1){300}% %bond 4-3
+ \else%
+ \Put@Line(303,-129)(0,1){258}% %bond 4-3
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Dotted Skeletal Bonds}
+%
+% The macros |\sixfuseh| etc. use inner macros for setting
+% skeletal bonds in accordance with the presence or the absence of
+% hetero atoms. During the processes of such setting,
+% the inner macros |\dothskbonda| to |\dothskbondf| are used
+% to set a dotted bond on each edge of a six- or five-membered ring.
+%
+% \begin{macro}{\dothskbonda}
+% The macro |\dothskbonda| is the dotted counterpart of |\hskbonda|,
+% which refers to the control sequences representing
+% atoms on both of the terminal vertices (|\aaa| and |\bbb|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+%bond between 1 and 2
+\def\dothskbonda{%
+ \ifx\aaa\empty%
+ \ifx\bbb\empty%
+ \dotorline(0,0)(3,5){103}/(0,0)(103,171)%
+ \else%
+ \dotorline(0,0)(3,5){79}/(0,0)(79,132)%
+ \fi%
+ \else%
+ \ifx\bbb\empty%
+ \dotorline(24,40)(3,5){79}/(24,40)(103,171)%
+ \else%
+ \dotorline(24,40)(3,5){62}/(24,40)(86,143)%
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dothskbondb}
+% The macro |\dothskbondb| is the dotted counterpart of |\hskbondb|,
+% which refers to the control sequences representing
+% atoms on both of the terminal vertices (|\bbb| and |\ccc|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+%bond between 3 and 2
+\def\dothskbondb{%
+ \ifx\bbb\empty%
+ \ifx\ccc\empty%
+ \dotorline(103,171)(1,0){200}/(103,171)(303,171)%
+ \else%
+ \dotorline(103,171)(1,0){160}/(103,171)(263,171)%
+ \fi%
+ \else%
+ \ifx\ccc\empty%
+ \dotorline(143,171)(1,0){160}/(143,171)(303,171)%
+ \else%
+ \dotorline(143,171)(1,0){120}/(143,171)(263,171)%
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dothskbondc}
+% The macro |\dothskbondc| is the dotted counterpart of |\hskbondc|,
+% which refers to the control sequences representing
+% atoms on both of the terminal vertices (|\ddd| and |\ccc|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+%bond between 4 and 3
+\def\dothskbondc{%
+ \ifx\ddd\empty%
+ \ifx\ccc\empty%
+ \dotorline(406,0)(-3,5){103}/(406,0)(303,171)%
+ \else%
+ \dotorline(406,0)(-3,5){79}/(406,0)(327,132)%
+ \fi%
+ \else%
+ \ifx\ccc\empty%
+ \dotorline(382,40)(-3,5){79}/(382,40)(303,171)%
+ \else%
+ \dotorline(382,40)(-3,5){62}/(382,40)(320,143)%
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dothskbondd}
+% The macro |\dothskbondd| is the dotted counterpart of |\hskbondd|,
+% which refers to the control sequences representing
+% atoms on both of the terminal vertices (|\ddd| and |\eee|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+%bond between 4 and 5
+\def\dothskbondd{%
+ \ifx\ddd\empty%
+ \ifx\eee\empty%
+ \dotorline(406,0)(-3,-5){103}/(406,0)(303,-171)%
+ \else%
+ \dotorline(406,0)(-3,-5){79}/(406,0)(327,-132)%
+ \fi%
+ \else%
+ \ifx\eee\empty%
+ \dotorline(382,-40)(-3,-5){79}/(382,-40)(303,-171)%
+ \else%
+ \dotorline(382,-40)(-3,-5){62}/(382,-40)(320,-143)%
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dothskbonde}
+% The macro |\dothskbonde| is the dotted counterpart of |\hskbonde|,
+% which refers to the control sequences representing
+% atoms on both of the terminal vertices (|\eee| and |\fff|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+%bond between 5 and 6
+\def\dothskbonde{%
+ \ifx\eee\empty%
+ \ifx\fff\empty%
+ \dotorline(103,-171)(1,0){200}/(103,-171)(303,-171)%
+ \else%
+ \dotorline(143,-171)(1,0){160}/(143,-171)(303,-171)%
+ \fi%
+ \else%
+ \ifx\fff\empty%
+ \dotorline(103,-171)(1,0){160}/(103,-171)(263,-171)%
+ \else%
+ \dotorline(143,-171)(1,0){120}/(143,-171)(263,-171)%
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dothskbondf}
+% The macro |\dothskbondf| is the dotted counterpart of |\hskbondf|,
+% which refers to the control sequences representing
+% atoms on both of the terminal vertices (|\aaa| and |\fff|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+%bond between 1 and 6
+\def\dothskbondf{%
+ \ifx\aaa\empty%
+ \ifx\fff\empty
+ \dotorline(0,0)(3,-5){103}/(0,0)(103,-171)%
+ \else%
+ \dotorline(0,0)(3,-5){79}/(0,0)(79,-131)%
+ \fi%
+ \else%
+ \ifx\fff\empty%
+ \dotorline(24,-40)(3,-5){79}/(24,-40)(103,-171)%
+ \else%
+ \dotorline(24,-40)(3,-5){62}/(24,-40)(86,-143)%
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dothskbondvert}
+% The macro |\dothskbondvert| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\bbb| and |\fff|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+%vertical bond for five-membered rings
+\def\dothskbondvert{%
+ \ifx\fff\empty%
+ \ifx\bbb\empty%
+ \dotorline(103,-171)(0,1){342}/(103,-171)(103,171)%
+ \else%
+ \dotorline(103,-171)(0,1){300}/(103,-171)(103,129)%
+ \fi%
+ \else%
+ \ifx\bbb\empty%
+ \dotorline(103,171)(0,-1){300}/(103,171)(103,-129)%
+ \else%
+ \dotorline(103,-129)(0,1){258}/(103,-129)(103,129)%
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dothskbondverti}
+% The macro |\dothskbondverti| refers to the control sequences representing
+% atoms on both of the terminal vertices (|\eee| and |\ccc|) and
+% examine whether these are empty or not. Thereby,
+% it decides the vertices to be truncated.
+%
+% \begin{macrocode}
+%vertical bond for five-membered rings (inverse type)
+\def\dothskbondverti{%
+ \ifx\eee\empty%
+ \ifx\ccc\empty%
+ \dotorline(303,-171)(0,1){342}/(303,-171)(303,171)%
+ \else%
+ \dotorline(303,-171)(0,1){300}/(303,-171)(303,129)%
+ \fi%
+ \else%
+ \ifx\ccc\empty%
+ \dotorline(303,171)(0,-1){300}/(303,171)(303,-129)%
+ \else%
+ \dotorline(303,-129)(0,1){258}/(303,-129)(303,129)%
+ \fi\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% The macro |\set@skel@bondh| is used in |\sixfuseh| etc.
+% for setting skeletal bonds (outer bonds), when |\@aaa| etc.
+% (produced by |\csname|...|\endcsname|) are equal to `a'
+% etc. (given as \#2). Thinline, thickline and dotted-line
+% skeletal bonds are available.
+%
+% \changes{v4.02}{2004/12/20}{The positions of \cs{@skbondlisttrue} are changed.}
+% \changes{v5.00}{2010/10/01}{For bond coloring}
+%
+% \begin{macro}{\set@skel@bondh}
+% \begin{macrocode}
+\def\set@skel@bondh#1#2#3{%
+ \expandafter\if\csname @#2#2#2\endcsname #2\relax%OK
+ % \if\@aaa #2\relax%OK
+ \def\skbondreplace{#3}%
+ \@skbondlistfalse
+ \@tfor\member:=#1\do{%
+ \expandafter\twoCH@@R\member//%
+ \if\@@tmpa #2\relax%
+ \if\@@tmpb A\relax%
+ \@skbondlisttrue
+ \expandafter\csname dothskbond#3\endcsname% \dothskbonda etc.
+% \@skbondlisttrue
+ \else\if\@@tmpb B\relax%
+ \@skbondlisttrue
+ {\thicklines
+ \expandafter\csname hskbond#3\endcsname% \hskbonda etc.
+ }%
+% \@skbondlisttrue
+ \else%%%added for color 2010/10/01
+ \@skbondlisttrue%
+ \put(0,0){\@@tmpb}%
+ \fi\fi
+ \fi%
+ }%
+ \if@skbondlist\else
+ {\thinlines
+ \expandafter\csname hskbond#3\endcsname% \hskbonda etc.
+ }%
+ \fi%
+ \else
+ \expandafter\ifx\csname @#2#2#2\endcsname \empty\relax%
+ % \ifx\@aaa\empty\relax
+ \@tfor\member:=#1\do{%
+ \expandafter\twoCH@@R\member//%
+ \if\@@tmpa #2\relax%
+ \XyMTeXWarning{Unavailable bond `#2' in SKBONDLIST}\fi
+ }%
+ \fi\fi
+}% end of \set@skel@bondh
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Six-membered heterocyles}
+% \subsection{Horizontal type}
+%
+% The standard skeleton of a six-membered heterocycle is selected
+% to have the following locant numbers.
+%
+% \begin{verbatim}
+% *************************
+% * sixhetero derivatives *
+% * (horizontal type) *
+% *************************
+% The following numbering is adopted in this macro.
+%
+% b
+% 2 3
+% a ----- c
+% * *
+% the original point ===> 1 * * 4
+% (0,0) * * d
+% f -----
+% 6 5
+% e
+%
+% \end{verbatim}
+%
+% The macro |\sixheterovh| has two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \sixheteroh(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `f' and a uppercase
+% character `A' or `B'.
+%
+% The |BONDLIST| argument contains one
+% character selected from a to f, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `A' represents an aromatic circle. The option
+% `$n+$' ($n=1$ to $6$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% none or r : sixhetero (right-handed)
+% l : sixhetero (left-handed)
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,6-double bond
+% f : 6,1-double bond
+% A : aromatic circle
+% {n+} : plus at the n-nitrogen atom (n = 1 to 6)
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 6 atoms)
+%
+% for n = 1 to 6
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position,
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents (max 6 substitution positions)
+%
+% for n = 1 to 6
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges may be regarded as both fused and non-fused
+% positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a, b, c, d, e, or f)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \sixheteroh{1==N}{1==Cl;2==F}
+% \sixheteroh[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \sixheteroh[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl}
+% \end{verbatim}
+%
+% The definition of |\sixheteroh| uses a picture environment and
+% consists of the following unit processes:
+% \begin{enumerate}
+% \item treatment of atom list,
+% \item placing outer skeletons,
+% \item placing inner double bonds,
+% \item setting hetero atoms, and
+% \item placing substituents by |\setsixringh|.
+% \end{enumerate}
+%
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylpositionh}, \cs{if@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/11/29}{Add: Spiro and fused rings}
+%
+% \begin{macro}{\sixheteroh}
+% \begin{macro}{\@six@heteroh}
+% \begin{macro}{\@six@@heteroh}
+% \begin{macro}{\@sixheteroh}
+% \begin{macrocode}
+\def\sixheteroh{\@ifnextchar({\@six@heteroh(@}{\@six@heteroh(@)}}
+\def\@six@heteroh(#1){\@ifnextchar[{\@six@@heteroh(#1)[@}%
+{\@six@@heteroh(#1)[@]}}
+\def\@six@@heteroh(#1)[#2]#3#4{\@ifnextchar[%
+{\@sixheteroh(#1)[#2]{#3}{#4}[@}%
+{\@sixheteroh(#1)[#2]{#3}{#4}[@]}}
+\def\@sixheteroh(#1)[#2]#3#4[#5]{%
+% \end{macrocode}
+%
+% \changes{v3.01}{2002/4/30}{Replaced by \cs{ShiftPicEnv}}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+% % treatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniatom\iniflag%initialize
+\test@vrtx@sixh{#3}%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % adjustment of attached positions %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\@reset@ylsw%
+\ylpositionh{#4}{0}{0}{7}{0}%
+\begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(880,800)(-240,-400){sixheteroh}%2002/4/30 by S. Fujita
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+{%
+\resetbdsw%
+\@bond@@omit{#5}%
+\set@skel@bondh{#1}{a}{a}% bond between 1 and 2 \@aaa -> \hskbonda etc
+\set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc
+\set@skel@bondh{#1}{c}{c}% bond between 3 and 4 \@ccc -> \hskbondc etc
+\set@skel@bondh{#1}{d}{d}% bond between 4 and 5 \@ddd -> \hskbondd etc
+\set@skel@bondh{#1}{e}{e}% bond between 5 and 6 \@eee -> \hskbonde etc
+\set@skel@bondh{#1}{f}{f}% bond between 6 and 1 \@fff -> \hskbondf etc
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r\relax \hbondd\hbondf\hbondb%
+\else \if\member l\relax \hbonda\hbondc\hbonde%
+\else \if\member a\relax \hbonda%
+\else \if\member b\relax \hbondb%
+\else \if\member c\relax \hbondc%
+\else \if\member d\relax \hbondd%
+\else \if\member e\relax \hbonde%
+\else \if\member f\relax \hbondf%
+\else \if\member A%left aromatic circle
+% \Put@oCircle(0,203){240}% %circle
+ \Put@oCircle(203,0){240}% %circle
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+% % inner bond attachment %
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+\else \expandafter\twoCH@@R\member//%
+ \set@fusionadd@sixh
+\fi\fi\fi\fi\fi\fi\fi\fi\fi}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\set@hetatom@sixh{#3}{0}{0}{7}{0}% %atom 1--6%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\setsixringh{#4}{0}{0}{7}{0}% %subst 1--6
+\end{ShiftPicEnv}%
+\iniatom\iniflag}% %end of \sixheteroh macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The macro |\test@vrtx@sixh| is used to test the presence of
+% a hetero atom or a spiro substituent on a vertex of the
+% sixheteroh nucleus.
+%
+% \begin{macro}{\test@vrtx@sixh}
+% \begin{macrocode}
+\def\test@vrtx@sixh#1{%
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\twoch@r\@membera{}%
+\ifcase\@tmpa%
+ \or% \xdef\aaa{\@memberb}%
+ \if\@tmpb s\relax\def\aaa{}\else\def\aaa{@}\fi
+ \or% \xdef\bbb{\@memberb}%
+ \if\@tmpb s\relax\def\bbb{}\else\def\bbb{@}\fi
+ \or% \xdef\ccc{\@memberb}%
+ \if\@tmpb s\relax\def\ccc{}\else\def\ccc{@}\fi
+ \or% \xdef\ddd{\@memberb}%
+ \if\@tmpb s\relax\def\ddd{}\else\def\ddd{@}\fi
+ \or% \xdef\eee{\@memberb}%
+ \if\@tmpb s\relax\def\eee{}\else\def\eee{@}\fi
+ \or% \xdef\fff{\@memberb}%
+ \if\@tmpb s\relax\def\fff{}\else\def\fff{@}\fi
+\fi\fi}%
+}% end of \test@vrtx@sixh
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Inverse horizontal type}
+%
+% The standard skeleton of a six-membered heterocycle of inverse type
+% is selected to have the following locant numbers.
+%
+% \begin{verbatim}
+% ************************************
+% * sixhetero derivatives *
+% * (horizontal type, inverse type) *
+% ************************************
+% The following numbering is adopted in this macro.
+%
+% b
+% 3 2
+% c ----- a
+% * *
+% the original point ===> 4 * * 1
+% (0,0) * * f
+% d -----
+% 5 6
+% e
+% \end{verbatim}
+%
+% The macro |\sixheterohi| has two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \sixheterohi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `f' and a uppercase
+% character `A' or `B'.
+%
+% The |BONDLIST| argument contains one
+% character selected from a to f, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `A' represents an aromatic circle. The option
+% `$n+$' ($n=1$ to $6$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+%
+% BONDLIST =
+%
+% none or r : sixhetero (right-handed)
+% l : sixhetero (left-handed)
+% [] : fully saturated form
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,6-double bond
+% f : 6,1-double bond
+% A : aromatic circle
+% {n+} : plus at the n-nitrogen atom (n = 1 to 4)
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 6 atoms)
+%
+% for n = 1 to 6
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position,
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents (max 6 substitution positions)
+%
+% for n = 1 to 6
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges may be regarded as both fused and non-fused
+% positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a, b, c, d, e, or f)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \sixheterohi{1==N}{1==Cl;2==F}
+% \sixheterohi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \sixheterohi[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl}
+% \end{verbatim}
+%
+% The definition of |\sixheterohi| uses a picture environment and
+% consists of the same unit processes as shown in |\sixheterov|:
+% \begin{enumerate}
+% \item treatment of atom list,
+% \item placing outer skeletons,
+% \item placing inner double bonds,
+% \item setting hetero atoms, and
+% \item placing substituents by |\setsixringh|.
+% \end{enumerate}
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylpositionh}, \cs{if@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/11/29}{Add: Spiro and fused rings}
+%
+% \begin{macro}{\sixheterohi}
+% \begin{macro}{\@six@heterohi}
+% \begin{macro}{\@six@@heterohi}
+% \begin{macro}{\@sixheterohi}
+% \begin{macrocode}
+\def\sixheterohi{\@ifnextchar({\@six@heterohi(@}{\@six@heterohi(@)}}
+\def\@six@heterohi(#1){\@ifnextchar[{\@six@@heterohi(#1)[@}%
+{\@six@@heterohi(#1)[@]}}
+\def\@six@@heterohi(#1)[#2]#3#4{\@ifnextchar[%
+{\@sixheterohi(#1)[#2]{#3}{#4}[@}%
+{\@sixheterohi(#1)[#2]{#3}{#4}[@]}}
+\def\@sixheterohi(#1)[#2]#3#4[#5]{%
+% \end{macrocode}
+%
+% \changes{v3.01}{2002/4/30}{Replaced by \cs{ShiftPicEnv}}
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+% % treatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniatom\iniflag%initialize
+\test@vrtx@sixhi{#3}%
+\@reset@ylsw%
+\ylpositionh{#4}{5}{0}{5}{-1}% %subst 1--4
+\ylpositionh{#4}{11}{4}{7}{-1}% %subst 5 and 6
+\begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(880,800)(-240,-400){sixheterohi}%2002/4/30 by S. Fujita
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+{\resetbdsw%
+\@bond@@omit{#5}%
+\set@skel@bondh{#1}{a}{c}% bond between 1 and 2 \@aaa -> \hskbondc etc
+\set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc
+\set@skel@bondh{#1}{c}{a}% bond between 3 and 4 \@ccc -> \hskbonda etc
+\set@skel@bondh{#1}{d}{f}% bond between 4 and 5 \@ddd -> \hskbondf etc
+\set@skel@bondh{#1}{e}{e}% bond between 5 and 6 \@eee -> \hskbonde etc
+\set@skel@bondh{#1}{f}{d}% bond between 6 and 1 \@fff -> \hskbondd etc
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r\relax \hbondd \hbondf \hbondb%
+\else \if\member l\relax \hbonda \hbondc \hbonde%
+\else \if\member a\relax \hbondc%
+\else \if\member b\relax \hbondb%
+\else \if\member c\relax \hbonda%
+\else \if\member d\relax \hbondf%
+\else \if\member e\relax \hbonde%
+\else \if\member f\relax \hbondd%
+\else \if\member A%left aromatic circle
+% \Put@oCircle(0,203){240}% %circle
+ \Put@oCircle(203,0){240}% %circle
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+% % inner bond attachment %
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+\else \expandafter\twoCH@@R\member//%
+ \set@fusionadd@sixhi
+\fi\fi\fi\fi\fi\fi\fi\fi\fi}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\set@hetatom@sixh{#3}{5}{0}{5}{-1}% %subst 1--4
+\set@hetatom@sixh{#3}{11}{4}{7}{-1}% %subst 5 and 6
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\setsixringh{#4}{5}{0}{5}{-1}% %subst 1--4
+\setsixringh{#4}{11}{4}{7}{-1}% %subst 5 and 6
+\end{ShiftPicEnv}%
+\iniatom\iniflag}% %end of \sixheterohi macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The macro |\test@vrtx@sixhi| is used to test the presence of
+% a hetero atom or a spiro substituent on a vertex of the
+% sixheteroh nucleus.
+%
+% \begin{macro}{\test@vrtx@sixhi}
+% \begin{macrocode}
+\def\test@vrtx@sixhi#1{%
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\twoch@r\@membera{}%
+\ifcase\@tmpa%
+ \or \if\@tmpb s\relax\def\ddd{}\else\def\ddd{@}\fi
+ \or \if\@tmpb s\relax\def\ccc{}\else\def\ccc{@}\fi
+ \or \if\@tmpb s\relax\def\bbb{}\else\def\bbb{@}\fi
+ \or \if\@tmpb s\relax\def\aaa{}\else\def\aaa{@}\fi
+ \or \if\@tmpb s\relax\def\fff{}\else\def\fff{@}\fi
+ \or \if\@tmpb s\relax\def\eee{}\else\def\eee{@}\fi
+\fi\fi}%
+}% end of \test@vrtx@sixhi
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Pyridine derivatives of horizontal type}
+%
+% The macros |\sixheteroh| and |\sixheterohi| can be used in the
+% form of a fixed |ATOMLIST|. Hence, the resulting commands for
+% drawing a six-membered heterocyle with one or more nitrogen atoms
+% have an argument |SUBSLIST| as well as an optional argument |BONDLIST|.
+%
+% \begin{verbatim}
+% ************************
+% * pyridine derivatives *
+% * (horizontal type) *
+% ************************
+%
+% \pyridineh[BONDLIST]{SUBSLIST}
+% \pyridinehi[BONDLIST]{SUBSLIST}
+% \pyrazineh[BONDLIST]{SUBSLIST}
+% \pyrazinehi[BONDLIST]{SUBSLIST}
+% \pyrimidineh[BONDLIST]{SUBSLIST}
+% \pyrimidinehi[BONDLIST]{SUBSLIST}
+% \triazineh[BONDLIST]{SUBSLIST}
+% \triazinehi[BONDLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one
+% character selected from a to f, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `A' represents an aromatic circle. The option
+% `$n+$' ($n=1$ to $6$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% none or r : pyridine (right-handed)
+% l : pyridine (left-handed)
+% [] : fully saturated ring
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,6-double bond
+% f : 6,1-double bond
+% A : aromatic circle
+% {n+} : plus at the nitrogen atom
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 6
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \pyridineh{1==Cl;2==F}
+% \pyridineh[c]{1==Cl;4==F;2==CH$_{3}$}
+% \pyridineh[eb]{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl}
+% \end{verbatim}
+% \changes{v2.00}{1998/11/29}{Add: fused rings}
+%
+% \begin{macro}{\pyridineh}
+% \begin{macro}{\pyridinehi}
+% \begin{macrocode}
+\def\pyridineh{\@ifnextchar[{\@pyridineh[@}{\@pyridineh[r]}}%
+\def\@pyridineh[#1]#2{%
+\iforigpt \typeout{command `pyridineh' %
+ is based on `sixheteroh'.}\fi%
+\sixheteroh[#1]{1==N}{#2}}%end of \pyridineh macro
+\def\pyridinehi{\@ifnextchar[{\@pyridinehi}{\@pyridinehi[r]}}%
+\def\@pyridinehi[#1]#2{%
+\iforigpt \typeout{command `pyridinehi' %
+ is based on `sixheterohi'.}\fi%
+\sixheterohi[#1]{1==N}{#2}}% %end of \pyridinehi macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\pyrazineh}
+% \begin{macro}{\pyrazinehi}
+% \changes{v5.01}{2013/03/17}{Add: pyrazinehi}
+% \begin{macrocode}
+\def\pyrazineh{\@ifnextchar[{\@pyrazineh[@}{\@pyrazineh[r]}}%
+\def\@pyrazineh[#1]#2{%
+\iforigpt \typeout{command `pyrazineh' %
+ is based on `sixheteroh'.}\fi%
+\sixheteroh[#1]{1==N;4==N}{#2}}%end of \pyrazineh macro
+\def\pyrazinehi{\@ifnextchar[{\@pyrazinehi[@}{\@pyrazinehi[r]}}%
+\def\@pyrazinehi[#1]#2{%
+\iforigpt \typeout{command `pyrazinehi' %
+ is based on `sixheterohi'.}\fi%
+\sixheterohi[#1]{1==N;4==N}{#2}}%end of \pyrazinehi macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\pyrimidineh}
+% \begin{macro}{\pyrimidinehi}
+% \begin{macrocode}
+\def\pyrimidineh{%
+ \@ifnextchar[{\@pyrimidineh[@}{\@pyrimidineh[r]}}%
+\def\@pyrimidineh[#1]#2{%
+\iforigpt \typeout{command `pyrimidineh' %
+ is based on `sixheteroh'.}\fi%
+\sixheteroh[#1]{1==N;3==N}{#2}}%
+ %end of \pyrimidineh macro
+\def\pyrimidinehi{%
+ \@ifnextchar[{\@pyrimidinehi[@}{\@pyrimidinehi[r]}}%
+\def\@pyrimidinehi[#1]#2{%
+\iforigpt \typeout{command `pyrimidinehi' %
+ is based on `sixheterohi'.}\fi%
+\sixheterohi[#1]{1==N;3==N}{#2}}%end of \pyrimidinehi macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\pyridazineh}
+% \begin{macro}{\pyridazinehi}
+% \begin{macrocode}
+\def\pyridazineh{\@ifnextchar[{\@pyridazineh[@}{\@pyridazineh[r]}}%
+\def\@pyridazineh[#1]#2{%
+\iforigpt \typeout{command `pyridazineh' %
+ is based on `sixheteroh'.}\fi%
+\sixheteroh[#1]{1==N;2==N}{#2}}%
+ %end of \pyridazineh macro
+\def\pyridazinehi{%
+ \@ifnextchar[{\@pyridazinehi}{\@pyridazinehi[r]}}%
+\def\@pyridazinehi[#1]#2{%
+\iforigpt \typeout{command `pyridazinehi' %
+ is based on `sixheterohi'.}\fi%
+\sixheterohi[#1]{1==N;2==N}{#2}}%end of \pyridazinehi macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\triazineh}
+% \begin{macro}{\triazinehi}
+% \begin{macrocode}
+\def\triazineh{\@ifnextchar[{\@triazineh[@}{\@triazineh[r]}}%
+\def\@triazineh[#1]#2{%
+\iforigpt \typeout{command `triazineh' %
+ is based on `sixheteroh'.}\fi%
+\sixheteroh[#1]{1==N;3==N;5==N}{#2}}%end of \triazineh macro
+\def\triazinehi{\@ifnextchar[{\@triazinehi[@}{\@triazinehi[r]}}%
+\def\@triazinehi[#1]#2{%
+\iforigpt \typeout{command `triazinehi' %
+ is based on `sixheterohi'.}\fi%
+\sixheterohi[#1]{1==N;3==N;5==N}{#2}}%end of \triazinehi macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \section{Five-membered heterocycles}
+% \subsection{Horizontal type}
+%
+% The standard skeleton of a five-membered heterocycle
+% is selected to have the following locant numbers.
+%
+% \begin{verbatim}
+% ****************************
+% * fivehetero derivatives *
+% * (horizontal type) *
+% ****************************
+% The following numbering is adopted in this macro.
+%
+% 3 _____ 2
+% | *
+% | * 1 <===== the original point
+% | *
+% 4 ----- 5
+% \end{verbatim}
+%
+% The macro |\fiveheteroh| has two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \fiveheteroh(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `e' and a uppercase
+% character `A' or `B'.
+%
+% The |BONDLIST| argument contains one
+% character selected from a to e, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `A' represents an aromatic circle. The option
+% `$n+$' ($n=1$ to $5$) represents a plus charge on a hetero atom
+% at the $n$-position. The option
+% `$0+$' represents a plus charge at the center of the ring.
+%
+% \begin{verbatim}
+% BONDLIST: list of inner double bonds
+%
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,1-double bond
+% A : aromatic circle
+% {n+} : plus at the n-nitrogen atom (n = 1 to 5)
+% {0+} : plus (or others) at the center
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 5 atoms)
+%
+% for n = 1 to 5
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 5
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges may be regarded as both fused and non-fused
+% positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a, b, c, d, or e)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \fiveheteroh{1==N}{1==H;2==F}
+% \fiveheteroh[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \fiveheteroh[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl}
+% \end{verbatim}
+%
+% The definition of |\fiveheteroh| uses a picture environment and
+% consists of the same unit processes as shown in |\sixheterov|:
+% \begin{enumerate}
+% \item treatment of atom list,
+% \item placing outer skeletons,
+% \item placing inner double bonds,
+% \item setting hetero atoms, and
+% \item placing substituents by |\setsixringh| partially.
+% \end{enumerate}
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylpositionh}, \cs{if@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/12/5}{Add: fused and spiro rings}
+%
+% \begin{macro}{\fiveheteroh}
+% \begin{macro}{\@five@heteroh}
+% \begin{macro}{\@five@@heteroh}
+% \begin{macro}{\@fiveheteroh}
+% \begin{macrocode}
+\def\fiveheteroh{\@ifnextchar({\@five@heteroh(@}{\@five@heteroh(@)}}
+\def\@five@heteroh(#1){\@ifnextchar[{\@five@@heteroh(#1)[@}%
+{\@five@@heteroh(#1)[@]}}
+\def\@five@@heteroh(#1)[#2]#3#4{\@ifnextchar[%
+{\@fiveheteroh(#1)[#2]{#3}{#4}[@}%
+{\@fiveheteroh(#1)[#2]{#3}{#4}[@]}}
+\def\@fiveheteroh(#1)[#2]#3#4[#5]{%
+\iniatom\iniflag%initialize
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+% % treatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+\test@vrtx@fivehi{#3}%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % adustment of subs positions %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\@reset@ylsw%
+\ylpositionh{#4}{5}{1}{5}{-1}% % for 1 to 3
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\else
+\ylpositionh{#4}{10}{4}{7}{-1}% % for 4 to 5
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(800,880)(-240,-400){fiveheteroh}%2002/4/30 by S. Fujita
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+{\resetbdsw%
+\@bond@@omit{#5}%
+\set@skel@bondh{#1}{a}{c}% bond between 1 and 2 \@aaa -> \skbondc etc
+\set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc
+\set@skel@longbond{#1}{c}{hskbondvert}%
+ % bond between 3 and 4 \@ccc -> \skbondhoriz etc
+\set@skel@bondh{#1}{d}{e}% bond between 4 and 5 \@ddd -> \skbonde etc
+\set@skel@bondh{#1}{e}{d}% bond between 5 and 1 \@eee -> \skbondd etc
+}%
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r%
+\else \if\member a\relax \hbondc%
+\else \if\member b\relax \hbondb%
+\else \if\member c\relax \hbondvert%
+\else \if\member d\relax \hbonde%
+\else \if\member e\relax \hbondd%
+\else \if\member A%left aromatic circle
+ \Put@oCircle(233,0){180}% %circle
+\else
+ \expandafter\twoCH@@R\member//%
+ \set@fusionadd@fiveh
+\fi\fi\fi\fi\fi\fi\fi}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\Put@Direct(0,0){\set@hetatom@sixh{#3}{5}{1}{5}{-1}%
+\storeclipinfo%added 2001/06/20 by S. Fujita
+}% % for 1 to 3
+\developclipinfo%added 2001/06/20 by S. Fujita
+\Put@Direct(0,0){\set@hetatom@sixh{#3}{10}{4}{7}{-1}%
+\storeclipinfo%added 2001/06/20 by S. Fujita
+}% % for 4 to 5
+\developclipinfo%added 2001/06/20 by S. Fujita
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\Put@Direct(0,0){\setsixringh{#4}{5}{1}{5}{-1}}% % for 1 to 3
+\Put@Direct(0,0){\setsixringh{#4}{10}{4}{7}{-1}}% % for 4 to 5
+\end{ShiftPicEnvB}%
+\iniatom\iniflag}% %end of \fiveheteroh macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The macro |\test@vrtx@fivehi| is used to test the presence of
+% a hetero atom or a spiro substituent on a vertex of the
+% fiveheteroh nucleus.
+%
+% \begin{macro}{\test@vrtx@fivehi}
+% \begin{macrocode}
+\def\test@vrtx@fivehi#1{%
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\twoch@r\@membera{}%
+\ifcase\@tmpa%
+ \or \if\@tmpb s\relax\def\ddd{}\else\def\ddd{@}\fi
+ \or \if\@tmpb s\relax\def\ccc{}\else\def\ccc{@}\fi
+ \or \if\@tmpb s\relax\def\bbb{}\else\def\bbb{@}\fi
+ \or \if\@tmpb s\relax\def\fff{}\else\def\fff{@}\fi
+ \or \if\@tmpb s\relax\def\eee{}\else\def\eee{@}\fi
+ \or \if\@tmpb s\relax\def\aaa{}\else\def\aaa{@}\fi% dummy
+\fi\fi}%
+}% end of \test@vrtx@sixhi
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Inverse horizontal type}
+%
+% The standard skeleton of a five-membered heterocycle of inverse type
+% is selected to have the following locant numbers.
+%
+% \begin{verbatim}
+% *******************************
+% * fivehetero derivatives *
+% * (horizontal type, inverse) *
+% *******************************
+% The following numbering is adopted in this macro.
+%
+% 2 ----- 3
+% * |
+% the original point 1 * |
+% * |
+% _____|
+% 5 4
+% \end{verbatim}
+%
+% The macro |\fiveheterohi| has two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \fiveheterohi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `e' and a uppercase
+% character `A' or `B'.
+%
+% The |BONDLIST| argument contains one
+% character selected from a to e, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `A' represents an aromatic circle. The option
+% `$n+$' ($n=1$ to $5$) represents a plus charge on a hetero atom
+% at the $n$-position. The option
+% `$0+$' represents a plus charge at the center of the ring.
+%
+% \begin{verbatim}
+%
+% BONDLIST: list of inner double bonds
+%
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,1-double bond
+% A : aromatic circle
+% {n+} : plus at the n-nitrogen atom (n = 1 to 5)
+% {0+} : plus (or others) at the center
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 5 atoms)
+%
+% for n = 1 to 5
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 5
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges may be regarded as both fused and non-fused
+% positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a, b, c, d, or e)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \fiveheterohi{1==N}{1==H;2==F}
+% \fiveheterohi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \fiveheterohi[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl}
+% \end{verbatim}
+%
+% The definition of |\fiveheterohi| uses a picture environment and
+% consists of the same unit processes as shown in |\sixheteroh|:
+% \begin{enumerate}
+% \item treatment of atom list,
+% \item placing outer skeletons,
+% \item placing inner double bonds,
+% \item setting hetero atoms, and
+% \item placing substituents by |\setsixringh| partially.
+% \end{enumerate}
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylpositionh}, \cs{if@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/12/5}{Add: fused and spiro rings}
+%
+% \begin{macro}{\fiveheterohi}
+% \begin{macro}{\@five@heterohi}
+% \begin{macro}{\@five@@heterohi}
+% \begin{macro}{\@fiveheterohi}
+% \begin{macrocode}
+\def\fiveheterohi{\@ifnextchar({\@five@heterohi(@}{\@five@heterohi(@)}}
+\def\@five@heterohi(#1){\@ifnextchar[{\@five@@heterohi(#1)[@}%
+{\@five@@heterohi(#1)[@]}}
+\def\@five@@heterohi(#1)[#2]#3#4{\@ifnextchar[%
+{\@fiveheterohi(#1)[#2]{#3}{#4}[@}%
+{\@fiveheterohi(#1)[#2]{#3}{#4}[@]}}
+\def\@fiveheterohi(#1)[#2]#3#4[#5]{%
+\iniatom\iniflag%initialize
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+% % treatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+\test@vertix@sixv{#3}{a}{b}{c}{e}{f}{d}%d--dummy
+\@reset@ylsw%
+\ylpositionh{#4}{0}{0}{4}{0}% % for 1 to 3
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\else
+\ylpositionh{#4}{1}{4}{7}{0}% % for 4 to 5
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(800,880)(-240,-400){fiveheterohi}%2002/4/30 by S. Fujita
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+{\resetbdsw%
+\@bond@@omit{#5}%
+\set@skel@bondh{#1}{a}{a}% bond between 1 and 2 \@aaa -> \hskbonda etc
+\set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc
+\set@skel@longbond{#1}{c}{hskbondverti}%
+ % bond between 3 and 4 \@ccc -> \hskbondverti etc
+\set@skel@bondh{#1}{d}{e}% bond between 4 and 5 \@ddd -> \hskbonde etc
+\set@skel@bondh{#1}{e}{f}% bond between 5 and 6 \@eee -> \hskbondf etc
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r%
+\else \if\member a\relax \hbonda%
+\else \if\member b\relax \hbondb%
+\else \if\member c\relax \hbondverti%
+\else \if\member d\relax \hbonde%
+\else \if\member e\relax \hbondf%
+\else \if\member A%left aromatic circle
+ \Put@oCircle(173,0){180}% %circle
+\else
+ \expandafter\twoCH@@R\member//%
+ \set@fusionadd@fivehi
+\fi\fi\fi\fi\fi\fi\fi}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\set@hetatom@sixh{#3}{0}{0}{4}{0}% % for 1 to 3
+\set@hetatom@sixh{#3}{1}{4}{7}{0}% % for 4 to 5
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\setsixringh{#4}{0}{0}{4}{0}% % for 1 to 3
+\setsixringh{#4}{1}{4}{7}{0}% % for 4 to 5
+\end{ShiftPicEnvB}%
+\iniatom\iniflag}% %end of \fiveheterohi macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Pyrrole derivatives of horizontal type}
+%
+% The macro |\fiveheteroh| can be used in the
+% form of a fixed |ATOMLIST|. Hence, the resulting commands for
+% drawing a five-membered heterocyle with one or more nitrogen atoms
+% have an argument |SUBSLIST| as well as an optional argument |BONDLIST|.
+%
+% \begin{verbatim}
+% ***********************************
+% * pyrrole derivatives and others *
+% * (horizontal type) *
+% ***********************************
+%
+% \pyrroleh[BONDLIST]{SUBSLIST}
+% \pyrazoleh[BONDLIST]{SUBSLIST}
+% \imidazoleh[BONDLIST]{SUBSLIST}
+% \isoxazoleh[BONDLIST]{SUBSLIST}
+% \oxazoleh[BONDLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one
+% character selected from a to e, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option
+% `$n+$' ($n=1$ to $5$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+% BONDLIST: list of inner double bonds
+%
+% none : mother nucleus
+% [] : fully saturated form
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,1-double bond
+% {n+} : plus at the n-nitrogen atom (n = 1 to 5)
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 5
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \pyrroleh{1==H;2==F}
+% \pyrroleh[]{1==H;2==F}
+% \imidazoleh[c]{1==Cl;4==F;2==CH$_{3}$}
+% \isoxazoleh[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl}
+% \end{verbatim}
+%
+% \begin{macro}{\pyrroleh}
+% \begin{macro}{\pyrazoleh}
+% \begin{macro}{\imidazoleh}
+% \begin{macro}{\isoxazoleh}
+% \begin{macro}{\oxazoleh}
+% \begin{macrocode}
+\def\pyrroleh{\@ifnextchar[{\@pyrroleh[@}{\@pyrroleh[bd]}}%
+\def\@pyrroleh[#1]#2{%
+\iforigpt \typeout{command `pyrroleh' %
+ is based on `fiveheteroh'.}\fi%
+\fiveheteroh[#1]{1==N}{#2}}%
+\def\pyrazoleh{\@ifnextchar[{\@pyrazoleh[@}{\@pyrazoleh[bd]}}%
+\def\@pyrazoleh[#1]#2{%
+\iforigpt \typeout{command `pyrazoleh' %
+ is based on `fiveheteroh'.}\fi%
+\fiveheteroh[#1]{1==N;2==N}{#2}}%
+\def\imidazoleh{\@ifnextchar[{\@imidazoleh[@}{\@imidazoleh[bd]}}%
+\def\@imidazoleh[#1]#2{%
+\iforigpt \typeout{command `imidazoleh' %
+ is based on `fiveheteroh'.}\fi%
+\fiveheteroh[#1]{1==N;3==N}{#2}}%
+\def\isoxazoleh{\@ifnextchar[{\@isoxazoleh[@}{\@isoxazoleh[bd]}}%
+\def\@isoxazoleh[#1]#2{%
+\iforigpt \typeout{command `isoxazoleh' %
+ is based on `fiveheteroh'.}\fi%
+\fiveheteroh[#1]{1==O;2==N}{#2}}%
+\def\oxazoleh{\@ifnextchar[{\@oxazoleh[@}{\@oxazoleh[bd]}}%
+\def\@oxazoleh[#1]#2{%
+\iforigpt \typeout{command `oxazoleh' %
+ is based on `fiveheteroh'.}\fi%
+\fiveheteroh[#1]{1==O;3==N}{#2}}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\furanh}
+% \begin{macro}{\thiopheneh}
+% \begin{macrocode}
+\def\furanh{\@ifnextchar[{\@furanh[@}{\@furanh[bd]}}
+\def\@furanh[#1]#2{%
+\iforigpt \typeout{command `furanh' %
+ is based on `fiveheteroh'.}\fi%
+\fiveheteroh[#1]{1==O}{#2}}
+\def\thiopheneh{\@ifnextchar[{\@thiopheneh[@}{\@thiopheneh[bd]}}
+\def\@thiopheneh[#1]#2{%
+\iforigpt \typeout{command `thiopheneh' %
+ is based on `fiveheteroh'.}\fi%
+\fiveheteroh[#1]{1==S}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Pyrrole derivatives of inverse horizontal type}
+%
+% The macro |\fiveheterohi| can be used in the
+% form of a fixed |ATOMLIST|. Hence, the resulting commands for
+% drawing a five-membered heterocyle with one or more nitrogen atoms
+% have an argument |SUBSLIST| as well as an optional argument |BONDLIST|.
+%
+% \begin{verbatim}
+% *************************************
+% * pyrrole derivatives and others *
+% * (horizontal type, inverse) *
+% *************************************
+%
+% \pyrrolehi[BONDLIST]{SUBSLIST}
+% \pyrazolehi[BONDLIST]{SUBSLIST}
+% \imidazolehi[BONDLIST]{SUBSLIST}
+% \isoxazolehi[BONDLIST]{SUBSLIST}
+% \oxazolehi[BONDLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one
+% character selected from a to e, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option
+% `$n+$' ($n=1$ to $5$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+% BONDLIST: list of inner double bonds
+%
+% none : mother nucleus
+% [] : fully saturated form
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,1-double bond
+% {n+} : plus at the n-nitrogen atom (n = 1 to 5)
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 5
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \pyrrolehi{1==H;2==F}
+% \pyrrolehi[]{1==H;2==F}
+% \imidazolehi[c]{1==Cl;4==F;2==CH$_{3}$}
+% \isoxazolehi[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl}
+% \end{verbatim}
+%
+% \begin{macro}{\pyrrolehi}
+% \begin{macro}{\pyrazolehi}
+% \begin{macro}{\imidazolehi}
+% \begin{macro}{\isoxazolehi}
+% \begin{macro}{\oxazolehi}
+% \begin{macrocode}
+\def\pyrrolehi{\@ifnextchar[{\@pyrrolehi[@}{\@pyrrolehi[bd]}}%
+\def\@pyrrolehi[#1]#2{%
+\iforigpt \typeout{command `pyrrolehi' %
+ is based on `fiveheterohi'.}\fi%
+\fiveheterohi[#1]{1==N}{#2}}%
+\def\pyrazolehi{\@ifnextchar[{\@pyrazolehi[@}{\@pyrazolehi[bd]}}%
+\def\@pyrazolehi[#1]#2{%
+\iforigpt \typeout{command `pyrazolehi' %
+ is based on `fiveheterohi'.}\fi%
+\fiveheterohi[#1]{1==N;2==N}{#2}}%
+\def\imidazolehi{\@ifnextchar[{\@imidazolehi[@}{\@imidazolehi[bd]}}%
+\def\@imidazolehi[#1]#2{%
+\iforigpt \typeout{command `imidazolehi' %
+ is based on `fiveheterohi'.}\fi%
+\fiveheterohi[#1]{1==N;3==N}{#2}}%
+\def\isoxazolehi{\@ifnextchar[{\@isoxazolehi[@}{\@isoxazolehi[bd]}}%
+\def\@isoxazolehi[#1]#2{%
+\iforigpt \typeout{command `isoxazolehi' %
+ is based on `fiveheterohi'.}\fi%
+\fiveheterohi[#1]{1==O;2==N}{#2}}%
+\def\oxazolehi{\@ifnextchar[{\@oxazolehi[@}{\@oxazolehi[bd]}}%
+\def\@oxazolehi[#1]#2{%
+\iforigpt \typeout{command `oxazolehi' %
+ is based on `fiveheterohi'.}\fi%
+\fiveheterohi[#1]{1==O;3==N}{#2}}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\furanhi}
+% \begin{macro}{\thiophenehi}
+% \begin{macrocode}
+\def\furanhi{\@ifnextchar[{\@furanhi[@}{\@furanhi[bd]}}
+\def\@furanhi[#1]#2{%
+\iforigpt \typeout{command `furanhi' %
+ is based on `fiveheterohi'.}\fi%
+\fiveheterohi[#1]{1==O}{#2}}
+\def\thiophenehi{\@ifnextchar[{\@thiophenehi[@}{\@thiophenehi[bd]}}
+\def\@thiophenehi[#1]#2{%
+\iforigpt \typeout{command `thiophenehi' %
+ is based on `fiveheterohi'.}\fi%
+\fiveheterohi[#1]{1==S}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \section{Six-to-six fused heterocyles}
+% \subsection{Horizontal type}
+%
+% The standard skeleton of a six-to-six fused heterocycle is selected
+% to have the following locant numbers.
+%
+% \begin{verbatim}
+% ****************************
+% * decahetero derivatives *
+% * (horizontal type) *
+% ****************************
+% The following numbering is adopted in this macro.
+%
+% 2 3
+%
+% *1 4 (*1 origin)
+%
+% (10)8a 4a(9)
+%
+% 8 5
+%
+% 7 6
+% ____ ____
+% |cf. |
+% | 8 (10)1 |
+% | * 8a * |
+% | 7 * * * * 2 |
+% | | | | |
+% | | | | |
+% | 6 * * * * 3 |
+% | * 4a * |
+% | 5 (9) 4 |
+% | ^ |
+% | | |
+% | the original point |
+% |____ ____|
+% \end{verbatim}
+%
+% The macro |\decaheteroh| has two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \decaheteroh(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `k' and a uppercase
+% character `A' or `B'.
+%
+% The |BONDLIST| argument contains one
+% character selected from a to k, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `A' and `B' represent aromatic circles. The option
+% `$n+$' ($n=1$ to $10$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+% BONDLIST: list of bonds
+%
+% none or r : decahetero (right-handed)
+% l : no action
+% [] : fully saturated form
+% a : 1,2-double bond b : 2,3-double bond
+% c : 4,3-double bond d : 4,4a-double bond
+% e : 4a,5-double bond f : 5,6-double bond
+% g : 6,7-double bond h : 7,8-double bond
+% i : 8,8a-double bond j : 1,8a-double bond
+% k : 4a,8a-double bond
+% K : 4a,8a-double bond in the other ring
+% A : aromatic circle B : aromatic circle
+% {n+} : plus at the n-nitrogen atom (n = 1 to 10)
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 10 atoms)
+%
+% for n = 1 to 8
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position
+% e.g. 1==N for N at 1-position
+% na : Hetero atom at 4a or 8b (n=4 or 8)
+% e.g. 4a==N (or 9==N) for N at 4a-position
+% 8a==N (or {{10}}==N) for N at 8a-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 8
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+%
+% for 9 (4a position) and 10 (8a position)
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges may be regarded as both fused and non-fused
+% positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a to k; see BONDLIST)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \decaheteroh{1==N}{1==Cl;2==F}
+% \decaheteroh[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \decaheteroh[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl}
+% \end{verbatim}
+%
+% The definition of |\decaheteroh| uses a picture environment and
+% consists of the same unit processes as shown in |\sixheterov|:
+% \begin{enumerate}
+% \item treatment of atom list,
+% \item placing outer skeletons,
+% \item placing inner double bonds,
+% \item setting hetero atoms, and
+% \item placing substituents by using |\setsixringh| several times.
+% \end{enumerate}
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/11/30}{Add: spiro and fused rings}
+% \changes{v2.01}{2001/6/20}{The
+% \cs{storeclipinfo} command is added.}
+% \changes{v4.03b}{2006/9/5}{bug fix \cs{ggg} etc. for \cs{test@vertix@sixv}
+% in chemstr.sty}
+%
+% \begin{macro}{\decaheteroh}
+% \begin{macro}{\@deca@heteroh}
+% \begin{macro}{\@deca@@heteroh}
+% \begin{macro}{\@decaheteroh}
+% \begin{macrocode}
+\def\decaheteroh{\@ifnextchar({\@deca@heteroh(@}{\@deca@heteroh(@)}}
+\def\@deca@heteroh(#1){\@ifnextchar[{\@deca@@heteroh(#1)[@}%
+{\@deca@@heteroh(#1)[@]}}
+\def\@deca@@heteroh(#1)[#2]#3#4{\@ifnextchar[%
+{\@decaheteroh(#1)[#2]{#3}{#4}[@}%
+{\@decaheteroh(#1)[#2]{#3}{#4}[@]}}
+\def\@decaheteroh(#1)[#2]#3#4[#5]{%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+% % treatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniflag\iniatom%
+\test@vertix@sixv{#3}{a}{b}{c}{d}{e}{f}%
+\test@vertix@decav{#3}{g}{h}{i}{j}{@}{@}%
+% %%%%%%%%%%%%%%%%%%%%%%%
+% % adjustment for (yl) %
+% %%%%%%%%%%%%%%%%%%%%%%%
+\@reset@ylsw%
+\ylhetpositionh{#4}{0}{0}{5}{0}% %substituents on 1 to 4
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\else
+{\let\ddd=\eee\let\eee=\fff\let\fff=\gggA
+\ylhetpositionh{#4}{-1}{3}{7}{0}% %substituents on 5 to 7
+}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{342}\fi
+\else
+{\let\aaa=\hhh
+\ylhetpositionh{#4}{-7}{0}{2}{0}% %substituent on 8
+}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{342}\fi
+\else
+{%
+\clipdetection%
+\@clipfusefalse \if@iclip \@clipfusetrue \fi%
+\ylatombondposition{#4}{-8}{4}% %9 for 4a position
+}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-303}\def\@@yli{171}\fi
+\else
+{%
+\clipdetection%
+\@clipfusefalse \if@jclip \@clipfusetrue \fi%
+\ylatombondposition{#4}{-9}{10}% %10 for 8a position
+}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-103}\def\@@yli{171}\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(1200,1200)(-400,-800){decaheteroh}%2002/4/30 by S. Fujita
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+\begingroup
+\resetbdsw%
+\@bond@@omit{#5}%
+{\let\fff=\jjj \let\eee=\iii%
+\set@skel@bondh{#1}{a}{a}% bond between 1 and 2 \@aaa -> \hskbonda etc
+\set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc
+\set@skel@bondh{#1}{c}{c}% bond between 3 and 4 \@ccc -> \hskbondc etc
+\set@skel@bondh{#1}{d}{d}% bond between 4 and 5 \@ddd -> \skbondd etc
+\set@skel@bondh{#1}{k}{e}% bond between 7 and 8 \@kkk -> \skbonde etc
+\set@skel@bondh{#1}{j}{f}% bond between 7 and 8 \@jjj -> \skbondf etc
+}%
+{\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA%
+ \let\ccc=\iii\let\bbb=\jjj%
+\Put@Direct(0,-342){\set@skel@bondh{#1}{i}{a}}%
+ % bond between 8a and 8 \@iii -> \hskbonda etc
+\Put@Direct(0,-342){\set@skel@bondh{#1}{e}{c}}%
+ % bond between 4a and 5 \@eee -> \hskbondc etc
+\Put@Direct(0,-342){\set@skel@bondh{#1}{f}{d}}%
+ % bond between 5 and 6 \@fff -> \hskbondd etc
+\Put@Direct(0,-342){\set@skel@bondh{#1}{g}{e}}%
+ % bond between 6 and 7 \@ggg -> \hskbonde etc
+\Put@Direct(0,-342){\set@skel@bondh{#1}{h}{f}}%
+ % bond between 7 and 8 \@hhh -> \hskbondf etc
+}%
+\endgroup
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r\relax%
+{\let\fff=\jjj \let\eee=\iii%
+ \Put@Direct(0,0){\hbonda}% bond between 1 and 2%
+ \Put@Direct(0,0){\hbondc}% bond between 3 and 4%
+}%
+{\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA%
+ \let\ccc=\iii\let\bbb=\jjj%
+ \Put@Direct(0,-342){\hbondb}% bond between 8a and 4a
+ \Put@Direct(0,-342){\hbondf}% bond between 8 and 7
+ \Put@Direct(0,-342){\hbondd}% bond between 5 and 6
+}%
+\else \if\member l\relax%
+\else \if\member a\relax%
+ \Put@Direct(0,0){\hbonda}% bond between 1 and 2
+\else \if\member b\relax%
+ \Put@Direct(0,0){\hbondb}% bond between 2 and 3
+\else \if\member c\relax%
+ \Put@Direct(0,0){\hbondc}% bond between 3 and 4
+% \Put@Direct(342,0){\hbondc}% bond between 3 and 4
+\else \if\member d\relax%
+{\let\eee=\iii%
+ \Put@Direct(0,0){\hbondd}% bond between 4 and 4a
+}%
+\else \if\member e\relax%
+{\let\ccc=\iii \let\ddd=\eee%
+ \Put@Direct(0,-342){\hbondc}% bond between 5 and 4a
+}%
+\else \if\member f\relax%
+{\let\ddd=\eee \let\eee=\fff%
+ \Put@Direct(0,-342){\hbondd}% bond between 5 and 6
+}%
+\else \if\member g\relax%
+{\let\eee=\fff \let\fff=\gggA%
+ \Put@Direct(0,-342){\hbonde}% bond between 6 and 7
+}%
+\else \if\member h\relax%
+{\let\aaa=\hhh \let\fff=\gggA%
+ \Put@Direct(0,-342){\hbondf}% bond between 8 and 7
+}%
+\else \if\member i\relax%
+{\let\aaa=\hhh \let\bbb=\jjj%
+ \Put@Direct(0,-342){\hbonda}% bond between 8 and 8a
+}%
+\else \if\member j\relax%
+{\let\fff=\jjj%
+ \Put@Direct(0,0){\hbondf}% bond between 1 and 8a
+}%
+\else \if\member k\relax%
+{\let\ccc=\iii\let\bbb=\jjj%
+ \Put@Direct(0,-342){\hbondb}% bond between 8a and 4a
+}%
+\else \if\member K\relax%
+{\let\eee=\iii\let\fff=\jjj%
+ \Put@Direct(0,0){\hbonde}% bond between 8a and 4a in the other ring
+}%
+\else \if\member A%left aromatic circle
+ \Put@oCircle(203,0){240}% %circle
+\else \if\member B%left aromatic circle
+ \Put@oCircle(203,-342){240}% %circle
+\else
+ \expandafter\twoCH@@R\member//%
+ \def\aax{8a}\def\aay{4a}\def\aaz{10}%
+ \if\@@tmpa 4\relax%
+ \putratom{272}{-18}{\@@tmpb}% % right type
+ \else\if\@@tmpa 1\relax%
+ \putratom{68}{-18}{\@@tmpb}% % right type
+ \else\if\@@tmpa 3\relax%
+ \putratom{233}{60}{\@@tmpb}% % right type
+ \else\if\@@tmpa 2\relax%
+ \putratom{120}{60}{\@@tmpb}% % right type
+ \else\ifx\@@tmpa\aaz\relax%
+ \putratom{120}{-110}{\@@tmpb}% % right type
+ \else\ifx\@@tmpa\aax\relax%
+ \putratom{120}{-110}{\@@tmpb}% % right type
+ \else\ifx\@@tmpa\aay\relax
+ \putratom{233}{-110}{\@@tmpb}% % right type
+ \else\if\@@tmpa 9\relax%
+ \putratom{233}{-110}{\@@tmpb}% % right type
+ \else\if\@@tmpa 5\relax%
+ \putratom{272}{-360}{\@@tmpb}% % right type
+ \else\if\@@tmpa 8\relax%
+ \putratom{68}{-360}{\@@tmpb}% % right type
+ \else\if\@@tmpa 6\relax%
+ \putratom{233}{-452}{\@@tmpb}% % right type
+ \else\if\@@tmpa 7\relax%
+ \putratom{120}{-452}{\@@tmpb}% % right type
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+% ***********************
+% * setting fused rings *
+% ***********************
+ \expandafter\twoCH@R\member//%
+ \set@fusion@decah
+\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+\fi\fi\fi\fi\fi\fi}%
+% \end{macrocode}
+%
+% \changes{v2.00a}{2000/11/11}{The
+% \cs{iniflag} command is added to 5- and 8-substitution.}
+% \changes{v4.03}{2006/9/5}{The \cs{storeclipinfo} command, bugfixed}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\iniflag
+\Put@Direct(0,0){\set@hetatom@sixh{#3}{0}{0}{5}{0}%
+% \if@aclip \global\@acliptrue\fi
+% \if@bclip \global\@bcliptrue\fi
+% \if@cclip \global\@ccliptrue\fi
+% \if@clip \global\@cliptrue\fi
+\storeclipinfo
+}% %substituents on 1 to 4
+\developclipinfo
+\Put@Direct(0,-342){\iniflag%2000/11/11 by Shinsaku Fujita
+ \set@hetatom@sixh{#3}{-1}{3}{7}{0}%
+% \@gclipfalse \if@fclip \global\@gcliptrue \fi%
+% \@fclipfalse \if@eclip \global\@fcliptrue \fi%
+% \@eclipfalse \if@clip \global\@ecliptrue \fi
+ \@gclipfalse \if@fclip \@gcliptrue \fi%
+ \@fclipfalse \if@eclip \@fcliptrue \fi%
+ \@eclipfalse \if@clip \@ecliptrue \fi
+ \@clipfalse%2006/9/5added
+\storeclipinfo
+}%substituents on 5 to 7
+%\developclipinfo%%2006/9/5 deleted
+\Put@Direct(0,-342){\iniflag%2000/11/11 by Shinsaku Fujita
+ \set@hetatom@sixh{#3}{-7}{0}{2}{0}%
+% \@hclipfalse \if@aclip \global\@hcliptrue \fi
+ \@hclipfalse \if@aclip \@hcliptrue \fi
+ \@aclipfalse%2006/9/5added
+\storeclipinfo
+}%%substituent on 8
+%\developclipinfo%%2006/9/5 deleted
+\Put@Direct(0,0){\set@vrtx@fuseh{#3}%
+% \if@iclip \global\@icliptrue \fi
+% \if@jclip \global\@jcliptrue \fi
+\storeclipinfo
+}% fused positions
+\developclipinfo
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents and exocyclic bonds %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\global\drawsamesubsttrue%2002/05/30 warning on
+\Put@Direct(0,0){\setsixringh{#4}{0}{0}{5}{0}}% %substituents on 1 to 4
+\global\drawsamesubstfalse%2002/05/30 warning off
+{\@clipfalse \if@eclip \@cliptrue \fi% %substituents on 5 to 7
+ \@eclipfalse \if@fclip \@ecliptrue \fi%
+ \@fclipfalse \if@gclip \@fcliptrue \fi%
+\Put@Direct(0,-342){\setsixringh{#4}{-1}{3}{7}{0}}%
+}%
+{\@aclipfalse \if@hclip \@acliptrue \fi% %substituent on 8
+\Put@Direct(0,-342){\setsixringh{#4}{-7}{0}{2}{0}}%
+}%
+{\@clipfusefalse \if@iclip \@clipfusetrue \fi%
+ \Put@Direct(303,-171){\setatombond{#4}{-8}{4}}% %9 for 4a position
+}%
+{\@clipfusefalse \if@jclip \@clipfusetrue \fi%
+ \Put@Direct(103,-171){\setatombond{#4}{-9}{10}}% %10 for 8a position
+}%
+\end{ShiftPicEnvB}%
+\iniatom\iniflag}% %end of \decaheteroh macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The command |\ylhetpositionh| is used in the |\decaheteroh| command,
+% giving the sift values for drawing a structure as a substituent.
+% \changes{v1.02}{1998/10/16}{Newly added command}
+%
+% \begin{macro}{\ylhetpositionh}
+% \begin{macrocode}
+\def\ylhetpositionh#1#2#3#4#5{%
+\@@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
+\ifnum#5<0\relax%
+\@tmpaa=-\@tmpa\relax \advance\@tmpaa by#2\relax%
+\else\@tmpaa=\@tmpa\relax \advance\@tmpaa by#2\relax\fi
+\ifnum\@tmpaa>#3\relax%
+\ifnum\@tmpaa<#4\relax%
+\ifcase\@tmpaa%0 omit
+ \or
+ \ifx\aaa\empty
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%\@ylatrue% subst. on 1
+ \else
+ \gdef\@ylii{30}\gdef\@yli{0}\global\@ylswtrue%\@ylatrue% subst. on 1
+ \fi
+ \or
+ \ifx\bbb\empty
+ \gdef\@ylii{-103}\gdef\@yli{-171}\global\@ylswtrue%\@ylbtrue% subst. on 2
+ \else
+ \gdef\@ylii{-73}\gdef\@yli{-223}\global\@ylswtrue%\@ylbtrue% subst. on 2
+ \fi
+ \or
+ \ifx\ccc\empty
+ \gdef\@ylii{-303}\gdef\@yli{-171}\global\@ylswtrue%\@ylctrue% subst. on 3
+ \else
+ \gdef\@ylii{-333}\gdef\@yli{-223}\global\@ylswtrue%\@ylctrue% subst. on 3
+ \fi
+ \or
+ \ifx\ddd\empty
+ \gdef\@ylii{-406}\gdef\@yli{0}\global\@ylswtrue%\@yldtrue% subst. on 4
+ \else
+ \gdef\@ylii{-436}\gdef\@yli{0}\global\@ylswtrue%\@yldtrue% subst. on 4
+ \fi
+ \or
+ \ifx\eee\empty
+ \gdef\@ylii{-303}\gdef\@yli{171}\global\@ylswtrue%\@yletrue% subst. on 5
+ \else
+ \gdef\@ylii{-333}\gdef\@yli{223}\global\@ylswtrue%\@yletrue% subst. on 5
+ \fi
+ \or
+ \ifx\fff\empty
+ \gdef\@ylii{-103}\gdef\@yli{171}\global\@ylswtrue%\@ylftrue% subst. on 6
+ \else
+ \gdef\@ylii{-73}\gdef\@yli{223}\global\@ylswtrue%\@ylftrue% subst. on 6
+ \fi
+\fi%end of ifcase
+\fi\fi\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Inverse horizontal type}
+%
+% The standard skeleton of a six-to-six fused heterocycle is selected
+% to have the following locant numbers.
+%
+% \begin{verbatim}
+% ************************************
+% * decahetero derivatives *
+% * (horizonatl type, inverse type) *
+% ************************************
+% The following numbering is adopted in this macro.
+%
+% 3 2
+%
+% *4 1 (*4 origin)
+%
+% (8)4a 8a(10)
+%
+% 5 8
+%
+% 6 7
+% ____ ____
+% |cf. |
+% | 5 (9) 4 |
+% | * 4a * |
+% | 6 * * * * 3 |
+% | | | | |
+% | | | | |
+% | 7 * * * * 2 |
+% | * 8a * |
+% | 8 (9) 1 |
+% | ^ |
+% | | |
+% | the original point |
+% |____ ____|
+% \end{verbatim}
+%
+% The macro |\decaheterohi| has two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \decaheterohi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `k' and a uppercase
+% character `A' or `B'.
+%
+% The |BONDLIST| argument contains one
+% character selected from a to k, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The options `A' and `B' represent aromatic circles in two rings.
+% The option `$n+$' ($n=1$ to $10$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+% BONDLIST: list of bonds
+%
+% none or r : decahetero (right-handed)
+% l : no action
+% [] : fully saturated form
+% a : 1,2-double bond b : 2,3-double bond
+% c : 4,3-double bond d : 4,4a-double bond
+% e : 4a,5-double bond f : 5,6-double bond
+% g : 6,7-double bond h : 7,8-double bond
+% i : 8,8a-double bond j : 1,8a-double bond
+% k : 4a,8a-double bond
+% K : 4a,8a-double bond in the other ring
+% A : aromatic circle B : aromatic circle
+% {n+} : plus at the n-nitrogen atom (n = 1 to 10)
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 10 atoms)
+%
+% for n = 1 to 8
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position
+% e.g. 1==N for N at 1-position
+% na : Hetero atom at 4a or 8b (n=4 or 8)
+% e.g. 4a==N (or 9==N) for N at 4a-position
+% 8a==N (or {{10}}==N) for N at 8a-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 8
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+%
+% for 9 (4a position) and 10 (8a position)
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges may be regarded as both fused and non-fused
+% positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a to k; see BONDLIST)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \decaheterohi{1==N}{1==Cl;2==F}
+% \decaheterohi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \decaheterohi[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl}
+% \end{verbatim}
+%
+% The definition of |\decaheterohi| uses a picture environment and
+% consists of the same unit processes as shown in |\sixheterov|:
+% \begin{enumerate}
+% \item treatment of atom list,
+% \item placing outer skeletons,
+% \item placing inner double bonds,
+% \item setting hetero atoms, and
+% \item placing substituents by using |\setsixringh| several times.
+% \end{enumerate}
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/12/1}{Add: spiro and fused rings}
+% \changes{v2.01}{2001/6/20}{The
+% \cs{storeclipinfo} command is added.}
+%
+% \begin{macro}{\decaheterohi}
+% \begin{macro}{\@deca@heterohi}
+% \begin{macro}{\@deca@@heterohi}
+% \begin{macro}{\@decaheterohi}
+% \begin{macrocode}
+\def\decaheterohi{\@ifnextchar({\@deca@heterohi(@}{\@deca@heterohi(@)}}
+\def\@deca@heterohi(#1){\@ifnextchar[{\@deca@@heterohi(#1)[@}%
+{\@deca@@heterohi(#1)[@]}}
+\def\@deca@@heterohi(#1)[#2]#3#4{\@ifnextchar[%
+{\@decaheterohi(#1)[#2]{#3}{#4}[@}%
+{\@decaheterohi(#1)[#2]{#3}{#4}[@]}}
+\def\@decaheterohi(#1)[#2]#3#4[#5]{%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+% % treatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniflag\iniatom%
+\test@vertix@decavi{#3}%
+% %%%%%%%%%%%%%%%%%%%%%%%
+% % adjustment for (yl) %
+% %%%%%%%%%%%%%%%%%%%%%%%
+\@reset@ylsw%
+\ylhetpositionh{#4}{5}{0}{5}{-1}% %substituents on 1 to 4
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\else
+{\let\ddd=\eee\let\eee=\fff\let\fff=\gggA
+\ylhetpositionh{#4}{12}{3}{7}{-1}% %substituents on 6 to 8
+}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{342}\fi
+\else
+{\let\aaa=\hhh
+\ylhetpositionh{#4}{-4}{0}{2}{0}% %substituent on 5
+}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{342}\fi
+\else
+{%
+\clipdetection%
+\@clipfusefalse \if@iclip \@clipfusetrue \fi%
+\ylatombondposition{#4}{-9}{4}% %10 for 8a position
+}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-303}\def\@@yli{171}\fi
+\else
+{%
+\clipdetection%
+\@clipfusefalse \if@jclip \@clipfusetrue \fi%
+\ylatombondposition{#4}{-8}{10}% %9 for 4a position
+}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-103}\def\@@yli{171}\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(1200,1200)(-400,-800){decaheterohi}%2002/4/30 by S. Fujita
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+\begingroup
+\resetbdsw%
+\@bond@@omit{#5}%
+{\let\fff=\jjj \let\eee=\iii%
+\set@skel@bondh{#1}{a}{c}% bond between 1 and 2 \@aaa -> \hskbondc etc
+\set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc
+\set@skel@bondh{#1}{c}{a}% bond between 3 and 4 \@ccc -> \hskbonda etc
+\set@skel@bondh{#1}{d}{f}% bond between 4 and 4a \@ddd -> \hskbondf etc
+\set@skel@bondh{#1}{k}{e}% bond between 4a and 8a \@kkk -> \hskbonde etc
+\set@skel@bondh{#1}{j}{d}% bond between 8a and 1 \@jjj -> \hskbondd etc
+}%
+{\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA%
+ \let\ccc=\iii\let\bbb=\jjj%
+\Put@Direct(0,-342){\set@skel@bondh{#1}{e}{a}}%
+ % bond between 4a and 5 \@eee -> \hskbonda etc
+\Put@Direct(0,-342){\set@skel@bondh{#1}{i}{c}}%
+ % bond between 8a and 8 \@iii -> \hskbondc etc
+\Put@Direct(0,-342){\set@skel@bondh{#1}{h}{d}}%
+ % bond between 7 and 8 \@hhh -> \hskbondd etc
+\Put@Direct(0,-342){\set@skel@bondh{#1}{g}{e}}%
+ % bond between 6 and 7 \@ggg -> \hskbonde etc
+\Put@Direct(0,-342){\set@skel@bondh{#1}{f}{f}}%
+ % bond between 5 and 6 \@fff -> \hskbondf etc
+}%
+\endgroup
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r\relax%
+{\let\fff=\jjj \let\eee=\iii%
+ \Put@Direct(0,0){\hbonda}% bond between 1 and 2
+ \Put@Direct(0,0){\hbondc}% bond between 3 and 4
+}%
+{\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA%
+ \let\ccc=\iii\let\bbb=\jjj%
+ \Put@Direct(0,-342){\hbondb}% bond between 8a and 4a
+ \Put@Direct(0,-342){\hbondf}% bond between 8 and 7
+ \Put@Direct(0,-342){\hbondd}% bond between 5 and 6
+}%
+\else \if\member l\relax%
+\else \if\member a\relax%
+ \Put@Direct(0,0){\hbondc}% bond between 3 and 4
+\else \if\member b\relax
+ \Put@Direct(0,0){\hbondb}% bond between 2 and 3
+\else \if\member c\relax
+ \Put@Direct(0,0){\hbonda}% bond between 1 and 2
+\else \if\member d\relax%
+{\let\fff=\jjj%
+ \Put@Direct(0,0){\hbondf}% bond between 1 and 8a
+}%
+\else \if\member e\relax%
+{\let\aaa=\hhh \let\bbb=\jjj%
+ \Put@Direct(0,-342){\hbonda}% bond between 8 and 8a
+}%
+\else \if\member f\relax%
+{\let\aaa=\hhh \let\fff=\gggA%
+ \Put@Direct(0,-342){\hbondf}% bond between 8 and 7
+}%
+\else \if\member g\relax%
+{\let\eee=\fff \let\fff=\gggA%
+ \Put@Direct(0,-342){\hbonde}% bond between 6 and 7
+}%
+\else \if\member h\relax%
+{\let\ddd=\eee \let\eee=\fff%
+ \Put@Direct(0,-342){\hbondd}% bond between 5 and 6
+}%
+\else \if\member i\relax%
+{\let\ccc=\iii \let\ddd=\eee%
+ \Put@Direct(0,-342){\hbondc}% bond between 5 and 4a
+}%
+\else \if\member j\relax%
+{\let\eee=\iii%
+ \Put@Direct(0,0){\hbondd}% bond between 4 and 4a
+}%
+\else \if\member k\relax%
+{\let\ccc=\iii\let\bbb=\jjj%
+ \Put@Direct(0,-342){\hbondb}% bond between 8a and 4a
+}%
+\else \if\member K\relax%
+{\let\eee=\iii\let\fff=\jjj%
+ \Put@Direct(0,0){\hbonde}% bond between 8a and 4a
+}%
+\else \if\member A%left aromatic circle
+ \Put@oCircle(203,0){240}% %circle
+\else \if\member B%left aromatic circle
+ \Put@oCircle(203,-342){240}% %circle
+\else \expandafter\twoCH@@R\member//%
+ \def\aax{8a}\def\aay{4a}\def\aaz{10}%
+ \if\@@tmpa 4\relax%
+ \putratom{68}{-18}{\@@tmpb}% % right type
+ \else\if\@@tmpa 1\relax%
+ \putratom{272}{-18}{\@@tmpb}% % right type
+ \else\if\@@tmpa 3\relax%
+ \putratom{120}{60}{\@@tmpb}% % right type
+ \else\if\@@tmpa 2\relax%
+ \putratom{233}{60}{\@@tmpb}% % right type
+ \else\ifx\@@tmpa\aaz\relax%
+ \putratom{233}{-110}{\@@tmpb}% % right type
+ \else\ifx\@@tmpa\aax\relax%
+ \putratom{233}{-110}{\@@tmpb}% % right type
+ \else\ifx\@@tmpa\aay\relax%
+ \putratom{120}{-110}{\@@tmpb}% % right type
+ \else\if\@@tmpa 9\relax%
+ \putratom{120}{-110}{\@@tmpb}% % right type
+ \else\if\@@tmpa 5\relax%
+ \putratom{68}{-360}{\@@tmpb}% % right type
+ \else\if\@@tmpa 8\relax%
+ \putratom{272}{-360}{\@@tmpb}% % right type
+ \else\if\@@tmpa 6\relax%
+ \putratom{120}{-452}{\@@tmpb}% % right type
+ \else\if\@@tmpa 7\relax%
+ \putratom{233}{-452}{\@@tmpb}% % right type
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+% ***********************
+% * setting fused rings *
+% ***********************
+ \expandafter\twoCH@R\member//%
+ \set@fusion@decahi
+\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+\fi\fi\fi\fi\fi\fi}%
+% \end{macrocode}
+%
+% \changes{v2.00a}{2000/11/11}{The
+% \cs{iniflag} command is added to 8-substitution.}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\iniflag
+\@tmpclipfalse
+\Put@Direct(0,0){\set@hetatom@sixh{#3}{5}{0}{5}{-1}%
+% \if@aclip \global\@acliptrue\fi
+% \if@bclip \global\@bcliptrue\fi
+% \if@cclip \global\@ccliptrue\fi
+% \if@clip \global\@cliptrue\fi
+\storeclipinfo
+}% %substituents on 1 to 4
+\developclipinfo
+\Put@Direct(0,-342){\iniflag%2000/11/11 by Shinsaku Fujita
+ \set@hetatom@sixh{#3}{12}{3}{7}{-1}%
+% \@gclipfalse \if@fclip \global\@gcliptrue \fi%
+% \@fclipfalse \if@eclip \global\@fcliptrue \fi%
+% \@eclipfalse \if@clip \global\@ecliptrue \fi%
+ \@gclipfalse \if@fclip \@gcliptrue \fi%
+ \@fclipfalse \if@eclip \@fcliptrue \fi%
+ \@eclipfalse \if@clip \@ecliptrue \fi%
+\storeclipinfo
+}%substituents on 6 to 8
+\developclipinfo
+\Put@Direct(0,-342){\set@hetatom@sixh{#3}{-4}{0}{2}{0}%
+% \@aclipfalse \if@aclip \global\@hcliptrue \fi%
+ \@aclipfalse \if@aclip \@hcliptrue \fi%
+\storeclipinfo
+}%%substituent on 5
+\developclipinfo
+\Put@Direct(0,0){\set@vrtx@decafusehi{#3}%
+ \@tmpclipfalse
+% \if@iclip \global\@tmpcliptrue \fi
+% \if@jclip \global\@icliptrue \fi
+% \if@tmpclip \global\@jcliptrue \fi
+ \if@iclip \@tmpcliptrue \fi
+ \if@jclip \@icliptrue \fi
+ \if@tmpclip \@jcliptrue \fi
+\storeclipinfo
+}% fused positions
+\developclipinfo
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents and exocyclic bonds %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\global\drawsamesubsttrue%2002/05/30 warning on
+\Put@Direct(0,0){\setsixringh{#4}{5}{0}{5}{-1}}% %substituents on 1 to 4
+\global\drawsamesubstfalse%2002/05/30 warning off
+{\@clipfalse \if@eclip \@cliptrue \fi% %substituents on 6 to 8
+ \@eclipfalse \if@fclip \@ecliptrue \fi%
+ \@fclipfalse \if@gclip \@fcliptrue \fi%
+\Put@Direct(0,-342){\setsixringh{#4}{12}{3}{7}{-1}}%
+}%
+{\@aclipfalse \if@hclip \@acliptrue \fi% %substituent on 5
+\Put@Direct(0,-342){\setsixringh{#4}{-4}{0}{2}{0}}%
+}%
+{\@clipfusefalse \if@iclip \@clipfusetrue \fi%
+ \Put@Direct(303,-171){\setatombond{#4}{-9}{4}}% %10 for 8a position
+}%
+{\@clipfusefalse \if@jclip \@clipfusetrue \fi
+ \Put@Direct(103,-171){\setatombond{#4}{-8}{10}}% %9 for 4a position
+}%
+\end{ShiftPicEnvB}%
+\iniatom\iniflag}% %end of \decaheterohi macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The macro |\set@vrtx@decafusehi| is an inner command contained
+% in the definition of |\decaheterohi|, where the macro is used to set
+% a hetero atom or on a vertex of a bridgehead location.
+%
+% \begin{macro}{\set@vrtx@decafusehi}
+% \begin{macrocode}
+\def\set@vrtx@decafusehi#1{%
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\twoch@r\@membera{}%
+\ifcase\@tmpa\or\or\or
+ \or%%%%4
+ \if\@tmpb a%
+ \global\@icliptrue%
+ \putlatom{135}{-211}{\@memberb}% % left type
+ \else\if\@tmpb h%
+ \XyMTeXWarning{Forbidden fused position `4a' or `9'}%
+ \else\if\@tmpb s%
+ \XyMTeXWarning{Forbidden fused position `4a' or `9'}%
+ \else\ifx\@tmpb\empty\relax
+ \else
+ \XyMTeXWarning{Forbidden fused position `4a' or `9'}%
+ \fi\fi\fi\fi
+ \or\or\or
+ \or%8
+ \if\@tmpb a%
+ \global\@jcliptrue%
+ \putratom{273}{-211}{\@memberb}% % right type
+ \else\if\@tmpb h%
+ \XyMTeXWarning{Forbidden fused position `8a' or `10'}%
+ \else\if\@tmpb s%
+ \XyMTeXWarning{Forbidden fused position `8a' or `10'}%
+ \else\ifx\@tmpb\empty\relax
+ \else
+ \XyMTeXWarning{Forbidden fused position `8a' or `10'}%
+ \fi\fi\fi\fi
+\or%9 (= 4a)
+ \ifx\@tmpb\empty%
+ \global\@icliptrue%
+ \putlatom{135}{-211}{\@memberb}% % left type
+ \else
+ \XyMTeXWarning{Forbidden fused position `4a' or `9'}%
+ \fi
+\or%10 (= 8a)
+ \ifx\@tmpb\empty%
+ \global\@jcliptrue%
+ \putratom{273}{-211}{\@memberb}% % right type
+ \else
+ \XyMTeXWarning{Forbidden fused position `8a' or `10'}%
+ \fi
+\fi\fi}%
+}% end of the macro \set@vrtx@decafusehi
+% \end{macrocode}
+% \end{macro}
+%
+% The macro |\set@fusion@decahi| is an inner command contained
+% in the definition of |\decaheterohi|, where
+% the macro is used for setting an additive
+% or a fused ring at each bond (designated by |\@@tmpa|). The
+% fused ring is typeset by the inner command |\set@fusionadd@sixhi|.
+%
+% \begin{macro}{\set@fusion@decahi}
+% \changes{v2.00}{1998/11/15}{New command: \cs{set@fusion@decahi}}
+% \begin{macrocode}
+\def\set@fusion@decahi{%
+ \let\@@tmpa=\@tmpa
+ \let\@@tmpb=\@tmpb
+ \if\@tmpa a%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(0,0){\set@fusionadd@sixhi}%
+ \else\if\@tmpa A%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(0,0){\set@fusionadd@sixhi}%
+ \else\if\@tmpa b%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(0,0){\set@fusionadd@sixhi}%
+ \else\if\@tmpa B%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(0,0){\set@fusionadd@sixhi}%
+ \else\if\@tmpa c%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(0,0){\set@fusionadd@sixhi}%
+ \else\if\@tmpa C%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(0,0){\set@fusionadd@sixhi}%
+ \else\if\@tmpa d%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(0,0){\set@fusionadd@sixhi}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Unfavorable Fusion for bond `d'}%
+ \fi
+ \else\if\@tmpa D%
+ \let\@@tmpa=\@tmpa
+ \Put@Direct(0,0){\set@fusionadd@sixhi}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Unfavorable Fusion for bond `D'}%
+ \fi
+ \else\if\@tmpa e%
+ \edef\@@tmpa{c}%
+ \Put@Direct(0,-342){\set@fusionadd@sixhi}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Unfavorable Fusion for bond `e'}%
+ \fi
+ \else\if\@tmpa E%
+ \edef\@@tmpa{C}%
+ \Put@Direct(0,-342){\set@fusionadd@sixhi}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Unfavorable Fusion for bond `E'}%
+ \fi
+ \else\if\@tmpa f%
+ \edef\@@tmpa{d}%
+ \Put@Direct(0,-342){\set@fusionadd@sixhi}%
+ \else\if\@tmpa F%
+ \edef\@@tmpa{D}%
+ \Put@Direct(0,-342){\set@fusionadd@sixhi}%
+ \else\if\@tmpa g%
+ \edef\@@tmpa{e}%
+ \Put@Direct(0,-342){\set@fusionadd@sixhi}%
+ \else\if\@tmpa G%
+ \edef\@@tmpa{E}%
+ \Put@Direct(0,-342){\set@fusionadd@sixhi}%
+ \else\if\@tmpa h%
+ \edef\@@tmpa{f}%
+ \Put@Direct(0,-342){\set@fusionadd@sixhi}%
+ \else\if\@tmpa H%
+ \edef\@@tmpa{F}%
+ \Put@Direct(0,-342){\set@fusionadd@sixhi}%
+ \else\if\@tmpa i%
+ \edef\@@tmpa{a}%
+ \Put@Direct(0,-342){\set@fusionadd@sixhi}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Unfavorable Fusion for bond `i'}%
+ \fi
+ \else\if\@tmpa I%
+ \edef\@@tmpa{A}%
+ \Put@Direct(0,-342){\set@fusionadd@sixhi}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Unfavorable Fusion for bond `I'}%
+ \fi
+ \else\if\@tmpa j%
+ \edef\@@tmpa{f}%
+ \Put@Direct(0,0){\set@fusionadd@sixhi}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Unfavorable Fusion for bond `j'}%
+ \fi
+ \else\if\@tmpa J%
+ \edef\@@tmpa{F}%
+ \Put@Direct(0,0){\set@fusionadd@sixhi}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Unfavorable Fusion for bond `J'}%
+ \fi
+ \else\if\@tmpa k%
+ \edef\@@tmpa{e}%
+ \Put@Direct(0,0){\set@fusionadd@sixhi}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Forbidden Fusion for bond `k'}%
+ \fi
+ \else\if\@tmpa K%
+ \edef\@@tmpa{E}%
+ \Put@Direct(0,0){\set@fusionadd@sixhi}%
+ \if@smallringsw\else
+ \XyMTeXWarning{Forbidden Fusion for bond `K'}%
+ \fi
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+}% end of the macro \set@fusion@decahi
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Short-cut commands for fused heterocycles}
+%
+% The macro |\decaheteroh| can be used in the
+% form of a fixed |ATOMLIST|. Hence, the resulting commands for
+% drawing a fused heterocyle with one or more nitrogen atoms
+% have an argument |SUBSLIST| as well as an optional argument |BONDLIST|.
+%
+% \begin{verbatim}
+% ****************************************************
+% * heterocycles having two fused six-membered rings *
+% * (horizontal type) *
+% ****************************************************
+%
+% \quinolineh[BONDLIST]{SUBSLIST}
+% \quinolinehi[BONDLIST]{SUBSLIST}
+% \isoquinolineh[BONDLIST]{SUBSLIST}
+% \isoquinolinehi[BONDLIST]{SUBSLIST}
+% \quinoxalineh[BONDLIST]{SUBSLIST}
+% \quinoxalinehi[BONDLIST]{SUBSLIST}
+% \quinazolineh[BONDLIST]{SUBSLIST}
+% \quinazolinehi[BONDLIST]{SUBSLIST}
+% \cinnolineh[BONDLIST]{SUBSLIST}
+% \cinnolinehi[BONDLIST]{SUBSLIST}
+% \pteridineh[BONDLIST]{SUBSLIST}
+% \pteridinehi[BONDLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one
+% character selected from a to k, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The optiona `A' and `B' typeset aromatic circles.
+% The option
+% `$n+$' ($n=1$ to $10$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+% BONDLIST: list of bonds
+%
+% none or r : decahetero (right-handed)
+% l : decahetero (left-handed)
+% [] : fully saturated form
+% a : 1,2-double bond b : 2,3-double bond
+% c : 4,3-double bond d : 4,4a-double bond
+% e : 4a,5-double bond f : 5,6-double bond
+% g : 6,7-double bond h : 7,8-double bond
+% i : 8,8a-double bond j : 1,8a-double bond
+% k : 4a,8a-double bond
+% A : aromatic circle B : aromatic circle
+% {n+} : plus at the n-nitrogen atom (n = 1 to 10)
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 8
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+%
+% for 9 (4a position) and 10 (8a position)
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \quinolineh{2==Cl;3==F}
+% \end{verbatim}
+%
+% \begin{macro}{\quinolineh}
+% \begin{macro}{\quinolinehi}
+% \begin{macrocode}
+\def\quinolineh{%
+ \@ifnextchar[{\@quinolineh[@}{\@quinolineh[acfhk]}}%
+\def\@quinolineh[#1]#2{%
+\iforigpt \typeout{command `quinolineh' %
+ is based on `decaheteroh'.}\fi%
+\decaheteroh[#1]{1==N}{#2}}%
+\def\quinolinehi{%
+ \@ifnextchar[{\@quinolinehi[@}{\@quinolinehi[acfhk]}}%
+\def\@quinolinehi[#1]#2{%
+\iforigpt \typeout{command `quinolinehi' %
+ is based on `decaheterohi'.}\fi%
+\decaheterohi[#1]{1==N}{#2}}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\isoquinolineh}
+% \begin{macro}{\isoquinolinehi}
+% \begin{macrocode}
+\def\isoquinolineh{%
+ \@ifnextchar[{\@isoquinolineh[@}{\@isoquinolineh[acfhk]}}%
+\def\@isoquinolineh[#1]#2{%
+\iforigpt \typeout{command `isoquinolineh' %
+ is based on `decaheteroh'.}\fi%
+\decaheteroh[#1]{2==N}{#2}}%
+\def\isoquinolinehi{%
+ \@ifnextchar[{\@isoquinolinehi[@}{\@isoquinolinehi[acfhk]}}%
+\def\@isoquinolinehi[#1]#2{%
+\iforigpt \typeout{command `isoquinolinehi' %
+ is based on `decaheterohi'.}\fi%
+\decaheterohi[#1]{2==N}{#2}}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{quinoxalineh}
+% \begin{macro}{quinoxalinehi}
+% \begin{macrocode}
+\def\quinoxalineh{%
+ \@ifnextchar[{\@quinoxalineh[@}{\@quinoxalineh[acfhk]}}%
+\def\@quinoxalineh[#1]#2{%
+\iforigpt \typeout{command `quinoxalineh' %
+ is based on `decaheteroh'.}\fi%
+\decaheteroh[#1]{1==N;4==N}{#2}}%
+\def\quinoxalinehi{%
+ \@ifnextchar[{\@quinoxalinehi[@}{\@quinoxalinehi[acfhk]}}%
+\def\@quinoxalinehi[#1]#2{%
+\iforigpt \typeout{command `quinoxalinehi' %
+ is based on `decaheterohi'.}\fi%
+\decaheterohi[#1]{1==N;4==N}{#2}}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\quinazolineh}
+% \begin{macro}{\quinazolinehi}
+% \begin{macrocode}
+\def\quinazolineh{%
+ \@ifnextchar[{\@quinazolineh[@}{\@quinazolineh[acfhk]}}%
+\def\@quinazolineh[#1]#2{%
+\iforigpt \typeout{command `quinazolineh' %
+ is based on `decaheteroh'.}\fi%
+\decaheteroh[#1]{1==N;3==N}{#2}}%
+\def\quinazolinehi{%
+ \@ifnextchar[{\@quinazolinehi[@}{\@quinazolinehi[acfhk]}}%
+\def\@quinazolinehi[#1]#2{%
+\iforigpt \typeout{command `quinazolinehi' %
+ is based on `decaheterohi'.}\fi%
+\decaheterohi[#1]{1==N;3==N}{#2}}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\cinnolineh}
+% \begin{macro}{\cinnolinehi}
+% \begin{macrocode}
+\def\cinnolineh{%
+ \@ifnextchar[{\@cinnolineh[@}{\@cinnolineh[acfhk]}}%
+\def\@cinnolineh[#1]#2{%
+\iforigpt \typeout{command `cinnolineh' %
+ is based on `decaheteroh'.}\fi%
+\decaheteroh[#1]{1==N;2==N}{#2}}%
+\def\cinnolinehi{%
+ \@ifnextchar[{\@cinnolinehi[@}{\@cinnolinehi[acfhk]}}%
+\def\@cinnolinehi[#1]#2{%
+\iforigpt \typeout{command `cinnolinehi' %
+ is based on `decaheterohi'.}\fi%
+\decaheterohi[#1]{1==N;2==N}{#2}}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\pteridineh}
+% \begin{macro}{\pteridinehi}
+% \begin{macrocode}
+\def\pteridineh{%
+ \@ifnextchar[{\@pteridineh[@}{\@pteridineh[acfhk]}}%
+\def\@pteridineh[#1]#2{%
+\iforigpt \typeout{command `pteridineh' %
+ is based on `decaheteroh'.}\fi%
+\decaheteroh[#1]{1==N;3==N;5==N;8==N}{#2}}%
+\def\pteridinehi{%
+ \@ifnextchar[{\@pteridinehi[@}{\@pteridinehi[acfhk]}}%
+\def\@pteridinehi[#1]#2{%
+\iforigpt \typeout{command `pteridinehi' %
+ is based on `decaheterohi'.}\fi%
+\decaheterohi[#1]{1==N;3==N;5==N;8==N}{#2}}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \section{Six-to-five fused heterocycles}
+% \subsection{Horizontal type}
+%
+% The standard skeleton of a six-to-five fused heterocycle is selected
+% to have the following locant numbers.
+%
+% \begin{verbatim}
+% **************************
+% * nonahetero derivatives *
+% * (horizontal type) *
+% **************************
+% The following numbering is adopted in this macro.
+%
+% 3 2
+%
+% 1 (*1 origin)
+%
+% (8)3a 7a(9)
+%
+% 4 7
+%
+% 5 6
+% ____ ____
+% |cf. |
+% | 4 (8) |
+% | * 3a |
+% | 5 * * ----- 3 |
+% | | | | |
+% | | | | |
+% | 6 * * * * 2 |
+% | * 7a * |
+% | 7 (9) 1 |
+% | ^ |
+% | | |
+% | the original point |
+% |____ ____|
+% \end{verbatim}
+%
+% The macro |\nonaheteroh| has two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \nonaheteroh(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `j' and a uppercase
+% character `A' or `B'.
+%
+% The |BONDLIST| argument contains one
+% character selected from a to j, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The options `A' and `B' represent aromatic circles in two rings.
+% The option `$n+$' ($n=1$ to $9$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+% BONDLIST: list of bonds
+%
+% none or r : aromatic six-membered ring
+% [] : fully saturated form
+% a : 1,2-double bond b : 2,3-double bond
+% c : 3,3a-double bond d : 4,3a-double bond
+% e : 4,5-double bond f : 5,6-double bond
+% g : 6,7-double bond h : 7,7a-double bond
+% i : 1,7a-double bond
+% j : 3a,4a-double bond
+% J : 3a,4a-double bond in the other ring
+% A : aromatic circle (six-membered)
+% B : aromatic circle (five-membered)
+% {n+} : plus at the n-nitrogen atom (n = 1 to 9)
+% {0+} : plus (or others) at the center
+% of the five-membered cycle
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 9 atoms)
+%
+% for n = 1 to 7
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position
+% e.g. 1==N for N at 1-position
+% na : Hetero atom at 3a or 7b (n=3 or 7)
+% e.g. 3a==N (or 8==N) for N at 4a-position
+% 7a==N (or 9==N) for N at 8a-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 8
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+%
+% for 8 (3a position) and 9 (7a position)
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges may be regarded as both fused and non-fused
+% positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a to j; see BONDLIST)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \nonaheteroh{1==N}{1==Cl;2==F}
+% \nonaheteroh[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+%
+% The definition of |\nonaheteroh| uses a picture environment and
+% consists of the same unit processes as shown in |\sixheteroh|:
+% \begin{enumerate}
+% \item treatment of atom list,
+% \item placing outer skeletons,
+% \item placing inner double bonds,
+% \item setting hetero atoms, and
+% \item placing substituents by using |\setsixringh| several times in
+% a restricted fashion.
+% \end{enumerate}
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylpositionh}, \cs{if@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/12/05}{Add: fused and spiro rings}
+% \changes{v2.01}{2001/6/20}{The
+% \cs{storeclipinfo} command is added.}
+%
+% \begin{macro}{\nonaheteroh}
+% \begin{macro}{\@nona@heteroh}
+% \begin{macro}{\@nona@@heteroh}
+% \begin{macro}{\@nonaheteroh}
+% \begin{macrocode}
+\def\nonaheteroh{\@ifnextchar({\@nona@heteroh(@}{\@nona@heteroh(@)}}
+\def\@nona@heteroh(#1){\@ifnextchar[{\@nona@@heteroh(#1)[@}%
+{\@nona@@heteroh(#1)[@]}}
+\def\@nona@@heteroh(#1)[#2]#3#4{\@ifnextchar[%
+{\@nonaheteroh(#1)[#2]{#3}{#4}[@}%
+{\@nonaheteroh(#1)[#2]{#3}{#4}[@]}}
+\def\@nonaheteroh(#1)[#2]#3#4[#5]{%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+% % treatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniflag\iniatom%
+\test@vertix@nonav{#3}%
+% %%%%%%%%%%%%%%%%%%%%%%%
+% % adjustment for (yl) %
+% %%%%%%%%%%%%%%%%%%%%%%%
+\@reset@ylsw%
+\ylpositionh{#4}{5}{1}{5}{-1}% %substituents on 1 to 3
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\else
+{\let\ddd=\eee\let\eee=\fff\let\fff=\gggA
+\ylpositionh{#4}{11}{3}{7}{-1}% %substituents on 5 to 7
+}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{342}\fi
+\else
+{\let\aaa=\hhh
+\ylpositionh{#4}{-3}{0}{2}{0}%%substituent on 4
+}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{342}\fi
+\else
+{%
+\clipdetection%
+\@clipfusefalse \if@iclip \@clipfusetrue \fi%
+\ylatombondposition{#4}{-8}{4}% %9 for 7a position
+}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-303}\def\@@yli{171}\fi
+\else
+{%
+\clipdetection%
+\@clipfusefalse \if@jclip \@clipfusetrue \fi%
+\ylatombondposition{#4}{-7}{10}% %8 for 3a position
+}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-103}\def\@@yli{171}\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(1200,1200)(-400,-800){nonaheteroh}%2002/4/30 by S. Fujita
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+\begingroup
+\resetbdsw%
+\@bond@@omit{#5}%
+{\let\fff=\jjj \let\eee=\iii%
+\set@skel@bondh{#1}{a}{c}% bond between 1 and 2 \@aaa -> \hskbondc etc
+\set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc
+\set@skel@longbond{#1}{c}{hskbondvert}%
+ % bond between 3 and 3a \@ccc -> \hskbondhoriz etc
+\set@skel@bondh{#1}{j}{e}% bond between 3a and 7a \@jjj -> \hskbonde etc
+\set@skel@bondh{#1}{i}{d}% bond between 7a and 1 \@iii -> \hskbondd etc
+}%
+{\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA
+ \let\ccc=\iii\let\bbb=\jjj%
+\Put@Direct(0,-342){\set@skel@bondh{#1}{d}{a}}%
+ % bond between 3a and 4 \@ddd -> \hskbonda etc
+\Put@Direct(0,-342){\set@skel@bondh{#1}{h}{c}}%
+ % bond between 7a and 7 \@hhh -> \hskbondc etc
+\Put@Direct(0,-342){\set@skel@bondh{#1}{g}{d}}%
+ % bond between 6 and 7 \@ggg -> \hskbondd etc
+\Put@Direct(0,-342){\set@skel@bondh{#1}{f}{e}}%
+ % bond between 5 and 6 \@fff -> \hskbonde etc
+\Put@Direct(0,-342){\set@skel@bondh{#1}{e}{f}}%
+ % bond between 4 and 5 \@eee -> \hskbondf etc
+}%
+\endgroup
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r\relax%
+{\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA%
+ \let\ccc=\iii\let\bbb=\jjj%
+ \Put@Direct(0,-342){\hbondb}% bond between 3a and 7a
+ \Put@Direct(0,-342){\hbondf}% bond between 4 and 5
+ \Put@Direct(0,-342){\hbondd}% bond between 6 and 7
+}%
+\else \if\member l\relax%
+\else \if\member a\relax%
+ \Put@Direct(0,0){\hbondc}% bond between 3 and 4
+\else \if\member b\relax%
+ \Put@Direct(0,0){\hbondb}% bond between 2 and 3
+\else \if\member c\relax%
+ \Put@Direct(0,0){\hbondvert}% bond between 3 and 3a
+\else \if\member d\relax%
+{\let\aaa=\hhh \let\bbb=\jjj%
+ \Put@Direct(0,-342){\hbonda}% bond between 4 and 3a
+}%
+\else \if\member e\relax%
+{\let\aaa=\hhh \let\fff=\gggA%
+ \Put@Direct(0,-342){\hbondf}% bond between 4 and 5
+}%
+\else \if\member f\relax%
+{\let\eee=\fff \let\fff=\gggA%
+ \Put@Direct(0,-342){\hbonde}% bond between 5 and 6
+}%
+\else \if\member g\relax%
+{\let\ddd=\eee \let\eee=\fff%
+ \Put@Direct(0,-342){\hbondd}% bond between 6 and 7
+}%
+\else \if\member h\relax%
+{\let\ccc=\iii \let\ddd=\eee%
+ \Put@Direct(0,-342){\hbondc}% bond between 7 and 7a
+}%
+\else \if\member i\relax%
+{\let\eee=\iii%
+ \Put@Direct(0,0){\hbondd}% bond between 1 and 7a
+}%
+\else \if\member j\relax%
+{\let\ccc=\iii\let\bbb=\jjj%
+ \Put@Direct(0,-342){\hbondb}% bond between 7a and 3a
+}%
+\else \if\member J\relax%
+{\let\eee=\iii\let\fff=\jjj%
+ \Put@Direct(0,0){\hbonde}% bond between 7a and 3a
+}%
+\else \if\member B%left aromatic circle
+ \Put@oCircle(233,0){180}% %circle (five-membered)
+\else \if\member A%left aromatic circle
+ \Put@oCircle(203,-342){240}% %circle (six-membered)
+\else
+ \expandafter\twoCH@@R\member//%
+ \def\aax{3a}\def\aay{7a}%
+ \if\@@tmpa 1\relax%
+ \putratom{272}{-18}{\@@tmpb}% % right type
+ \else\if\@@tmpa 2\relax%
+ \putratom{233}{60}{\@@tmpb}% % right type
+ \else\if\@@tmpa 3\relax%
+ \putratom{120}{60}{\@@tmpb}% % right type
+ \else\if\@@tmpa 4\relax%
+ \putratom{68}{-360}{\@@tmpb}% % right type
+ \else\if\@@tmpa 5\relax%
+ \putratom{120}{-452}{\@@tmpb}% % right type
+ \else\if\@@tmpa 6\relax%
+ \putratom{233}{-452}{\@@tmpb}% % right type
+ \else\if\@@tmpa 7\relax%
+ \putratom{272}{-360}{\@@tmpb}% % right type
+ \else\if\@@tmpa 8\relax%
+ \putratom{120}{-110}{\@@tmpb}% % right type
+ \else\ifx\@@tmpa\aax\relax%
+ \putratom{120}{-110}{\@@tmpb}% % right type
+ \else\ifx\@@tmpa\aay\relax%
+ \putratom{233}{-110}{\@@tmpb}% % right type
+ \else\if\@@tmpa 9\relax%
+ \putratom{233}{-110}{\@@tmpb}% % right type
+ \else\if\@@tmpa 0\relax%
+ \putratom{196}{-30}{\@@tmpb}% % right type
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+% ***********************
+% * setting fused rings *
+% ***********************
+ \expandafter\twoCH@R\member//%
+ \set@fusion@nonah
+\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+\fi\fi\fi\fi\fi\fi}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\iniflag
+\@tmpclipfalse
+%position 7 should be treated before
+%position 1 (using the same \if@clip)
+\Put@Direct(0,-342){%
+%%\@clipfalse%2003/5/1 bugfix by Shinsaku Fujita deleted/2006/9/5
+\set@hetatom@sixh{#3}{11}{3}{7}{-1}%
+% \@gclipfalse \if@fclip \global\@gcliptrue \fi%
+% \@fclipfalse \if@eclip \global\@fcliptrue \fi%
+% \@eclipfalse \if@clip \global\@ecliptrue \fi%
+ \@gclipfalse \if@fclip \@gcliptrue \fi%
+ \@fclipfalse \if@eclip \@fcliptrue \fi%
+ \@eclipfalse \if@clip \@ecliptrue \fi%
+ \@clipfalse%2006/9/5added
+\storeclipinfo
+}%substituents on 5 to 7
+%%\developclipinfo%%2006/9/5 deleted
+\Put@Direct(0,0){\set@hetatom@sixh{#3}{5}{1}{5}{-1}%
+% \if@aclip \global\@acliptrue\fi
+% \if@bclip \global\@bcliptrue\fi
+% \if@cclip \global\@ccliptrue\fi
+\storeclipinfo
+}% %substituents on 1 to 3
+%%\developclipinfo%%2006/9/5 deleted
+\Put@Direct(0,-342){\set@hetatom@sixh{#3}{-3}{0}{2}{0}%
+% \@aclipfalse \if@aclip \global\@hcliptrue \fi%
+% \@aclipfalse \if@aclip \@hcliptrue \fi
+ \@hclipfalse \if@aclip \@hcliptrue \fi%%2006/9/5 bugfix
+\storeclipinfo
+}%%substituent on 4
+%%\developclipinfo%%2006/9/5 deleted
+\Put@Direct(0,0){\set@vrtx@nonafuseh{#3}%
+ \@iclipfalse%2006/9/5 bugfix by Shinsaku Fujita
+ \@jclipfalse%2006/9/5 bugfix by Shinsaku Fujita
+ \@tmpclipfalse
+%% \if@iclip \global\@tmpcliptrue \fi
+%% \if@jclip \global\@icliptrue \fi
+%% \if@tmpclip \global\@jcliptrue \fi
+ \if@iclip \@tmpcliptrue \fi
+ \if@jclip \@icliptrue \else \@iclipfalse \fi
+ \if@tmpclip \@jcliptrue \else \@jclipfalse \fi
+\storeclipinfo
+%===\clipinfo===
+}% fused positions
+\developclipinfo
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents and exocyclic bonds %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\Put@Direct(0,0){\setsixringh{#4}{5}{1}{5}{-1}}% %substituents on 1 to 3
+{\@clipfalse \if@eclip \@cliptrue \fi% %substituents on 5 to 7
+ \@eclipfalse \if@fclip \@ecliptrue \fi%
+ \@fclipfalse \if@gclip \@fcliptrue \fi%
+\Put@Direct(0,-342){\setsixringh{#4}{11}{3}{7}{-1}}%
+}%
+{\@aclipfalse \if@hclip \@acliptrue \fi% %substituent on 4
+\Put@Direct(0,-342){\setsixringh{#4}{-3}{0}{2}{0}}%
+}%
+{%
+% \@clipfusefalse \if@iclip \@clipfusetrue \fi%change to the next line
+ \@clipfusefalse \if@jclip \@clipfusetrue \fi%2006/9/5
+ \Put@Direct(303,-171){\setatombond{#4}{-8}{4}}% %9 for 7a position
+}%
+{%
+% \@clipfusefalse \if@jclip \@clipfusetrue \fi%change to the next line
+ \@clipfusefalse \if@iclip \@clipfusetrue \fi%2006/9/5
+ \Put@Direct(103,-171){\setatombond{#4}{-7}{10}}% %8 for 3a position
+}%
+\end{ShiftPicEnvB}%
+\iniatom\iniflag}% %end of \nonaheteroh macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The macro |\set@vrtx@nonafuseh| is an inner command contained
+% in the definition of |\nonaheteroh|, where the macro is used to set
+% a hetero atom on a vertex of a bridgehead location.
+% \changes{v2.00}{1998/12/05}{New command: \cs{set@vrtx@nonafuseh}}
+%
+% \begin{macro}{\set@vrtx@nonafuseh}
+% \begin{macrocode}
+\def\set@vrtx@nonafuseh#1{%
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\twoch@r\@membera{}%
+\ifcase\@tmpa\or\or
+ \or%%%%3
+ \if\@tmpb a%
+ \global\@icliptrue%
+ \putlatom{135}{-211}{\@memberb}% % left type
+ \else\if\@tmpb h%
+ \XyMTeXWarning{Forbidden fused position `3a' or `8'}%
+ \else\if\@tmpb s%
+ \XyMTeXWarning{Forbidden fused position `3a' or `8'}%
+ \else\ifx\@tmpb\empty\relax
+ \else
+ \XyMTeXWarning{Forbidden fused position `3a' or `8'}%
+ \fi\fi\fi\fi
+ \or\or\or
+ \or%7
+ \if\@tmpb a%
+ \global\@jcliptrue%
+ \putratom{273}{-211}{\@memberb}% % right type
+ \else\if\@tmpb h%
+ \XyMTeXWarning{Forbidden fused position `7a' or `9'}%
+ \else\if\@tmpb s%
+ \XyMTeXWarning{Forbidden fused position `7a' or `9'}%
+ \else\ifx\@tmpb\empty\relax
+ \else
+ \XyMTeXWarning{Forbidden fused position `7a' or `9'}%
+ \fi\fi\fi\fi
+\or%8 (= 3a)
+ \ifx\@tmpb\empty%
+ \global\@icliptrue%
+ \putlatom{135}{-211}{\@memberb}% % left type
+ \else
+ \XyMTeXWarning{Forbidden fused position `3a' or `8'}%
+ \fi
+\or%9 (= 7a)
+ \ifx\@tmpb\empty%
+ \global\@jcliptrue%
+ \putratom{273}{-211}{\@memberb}% % right type
+ \else
+ \XyMTeXWarning{Forbidden fused position `7a' or `9'}%
+ \fi
+\fi\fi}%
+}% end of the macro \set@vrtx@nonafuseh
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Inverse horizontal type}
+%
+% The standard skeleton of a six-to-five fused heterocycle is selected
+% to have the following locant numbers.
+%
+% \begin{verbatim}
+% ************************************
+% * nonahetero derivatives *
+% * (horizontal type, inverse type) *
+% ************************************
+% The following numbering is adopted in this macro.
+%
+%
+% 2 3
+%
+% 1
+%
+% (9)7a 3a(8)
+%
+% 7 4
+%
+% 6 5
+% ____ ____
+% |cf. |
+% | 7 (9) 1 |
+% | * 7a * |
+% | 6 * * * * 2 |
+% | | | | |
+% | | | | |
+% | 5 * * ----- 3 |
+% | * 3a |
+% | 4 (8) |
+% | ^ |
+% | | |
+% | the original point |
+% |____ ____|
+% \end{verbatim}
+%
+% The macro |\nonaheterohi| has two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \nonaheterohi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `j' and a uppercase
+% character `A' or `B'.
+%
+% The |BONDLIST| argument contains one
+% character selected from a to j, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The options `A' and `B' represent aromatic circles in two rings.
+% The option `$n+$' ($n=1$ to $9$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+%
+% BONDLIST: list of bonds
+%
+% none or r : aromatic six-membered ring
+% [] : fully saturated form
+% a : 1,2-double bond b : 2,3-double bond
+% c : 3,3a-double bond d : 4,3a-double bond
+% e : 4,5-double bond f : 5,6-double bond
+% g : 6,7-double bond h : 7,7a-double bond
+% i : 1,7a-double bond
+% j : 3a,4a-double bond
+% J : 3a,4a-double bond in the other ring
+% A : aromatic circle (six-membered)
+% B : aromatic circle (five-membered)
+% {n+} : plus at the n-nitrogen atom (n = 1 to 9)
+% {0+} : plus (or others) at the center
+% of the five-membered cycle
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 9 atoms)
+%
+% for n = 1 to 7
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position
+% e.g. 1==N for N at 1-position
+% na : Hetero atom at 3a or 7b (n=3 or 7)
+% e.g. 3a==N (or 8==N) for N at 4a-position
+% 7a==N (or 9==N) for N at 8a-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 8
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+%
+% for 8 (3a position) and 9 (7a position)
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges may be regarded as both fused and non-fused
+% positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a to j; see BONDLIST)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \nonaheterohi{1==N}{1==Cl;2==F}
+% \nonaheterohi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+%
+% The definition of |\nonaheterohi| uses a picture environment and
+% consists of the same unit processes as shown in |\sixheteroh|:
+% \begin{enumerate}
+% \item treatment of atom list,
+% \item placing outer skeletons,
+% \item placing inner double bonds,
+% \item setting hetero atoms, and
+% \item placing substituents by using |\setsixringh| several times in
+% a restricted fashion.
+% \end{enumerate}
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylpositionh}, \cs{if@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/12/05}{Add: fused and spiro rings}
+% \changes{v2.01}{2001/6/20}{The
+% \cs{storeclipinfo} command is added.}
+%
+% \begin{macro}{\nonaheterohi}
+% \begin{macro}{\@nona@heterohi}
+% \begin{macro}{\@nona@@heterohi}
+% \begin{macro}{\@nonaheterohi}
+% \begin{macrocode}
+\def\nonaheterohi{\@ifnextchar({\@nona@heterohi(@}{\@nona@heterohi(@)}}
+\def\@nona@heterohi(#1){\@ifnextchar[{\@nona@@heterohi(#1)[@}%
+{\@nona@@heterohi(#1)[@]}}
+\def\@nona@@heterohi(#1)[#2]#3#4{\@ifnextchar[%
+{\@nonaheterohi(#1)[#2]{#3}{#4}[@}%
+{\@nonaheterohi(#1)[#2]{#3}{#4}[@]}}
+\def\@nonaheterohi(#1)[#2]#3#4[#5]{%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+% % treatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniflag\iniatom%initialize
+\test@vertix@nonavi{#3}%
+% %%%%%%%%%%%%%%%%%%%%%%%
+% % adjustment for (yl) %
+% %%%%%%%%%%%%%%%%%%%%%%%
+\@reset@ylsw%
+\ylpositionh{#4}{0}{0}{4}{0}% %substituents on 1 to 3
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\else
+{\let\ddd=\eee\let\eee=\fff\let\fff=\gggA
+\ylpositionh{#4}{0}{3}{7}{0}%%substituents on 4 to 6
+}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{342}\fi
+\else
+{\let\aaa=\hhh
+\ylpositionh{#4}{-6}{0}{2}{0}%%substituent on 7
+}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{342}\fi
+\else
+{%
+\clipdetection%
+\@clipfusefalse \if@iclip \@clipfusetrue \fi%
+\ylatombondposition{#4}{-7}{4}% %8 for 3a position
+}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-303}\def\@@yli{171}\fi
+\else
+{%
+\clipdetection%
+\@clipfusefalse \if@jclip \@clipfusetrue \fi%
+\ylatombondposition{#4}{-8}{10}%%9 for 7a position
+}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-103}\def\@@yli{171}\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(1200,1200)(-400,-800){nonaheterohi}%2002/4/30 by S. Fujita
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+\begingroup
+\resetbdsw%
+\@bond@@omit{#5}%
+{\let\fff=\jjj \let\eee=\iii%
+\set@skel@bondh{#1}{a}{a}% bond between 1 and 2 \@aaa -> \hskbonda etc
+\set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc
+\set@skel@longbond{#1}{c}{hskbondverti}%
+ % bond between 3 and 3a \@ccc -> \hskbondverti etc
+\set@skel@bondh{#1}{j}{e}% bond between 3a and 7a \@jjj -> \hskbonde etc
+\set@skel@bondh{#1}{i}{f}% bond between 7a and 1 \@iii -> \hskbondf etc
+}%
+{\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA%
+ \let\ccc=\iii\let\bbb=\jjj%
+\Put@Direct(0,-342){\set@skel@bondh{#1}{h}{a}}%
+ % bond between 7a and 7 \@hhh -> \hskbonda etc
+\Put@Direct(0,-342){\set@skel@bondh{#1}{d}{c}}%
+ % bond between 3a and 4 \@ddd -> \hskbondc etc
+\Put@Direct(0,-342){\set@skel@bondh{#1}{e}{d}}%
+ % bond between 4 and 5 \@eee -> \hskbondd etc
+\Put@Direct(0,-342){\set@skel@bondh{#1}{f}{e}}%
+ % bond between 5 and 6 \@fff -> \hskbonde etc
+\Put@Direct(0,-342){\set@skel@bondh{#1}{g}{f}}%
+ % bond between 6 and 7 \@ggg -> \hskbondf etc
+}%
+\endgroup
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r\relax%
+{\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA%
+ \let\ccc=\iii\let\bbb=\jjj%
+ \Put@Direct(0,-342){\hbondb}% bond between 3a and 7a
+ \Put@Direct(0,-342){\hbondf}% bond between 6 and 7
+ \Put@Direct(0,-342){\hbondd}% bond between 4 and 5
+}%
+\else \if\member l\relax%
+\else \if\member a\relax%
+ \Put@Direct(0,0){\hbonda}% bond between 1 and 2
+\else \if\member b\relax%
+ \Put@Direct(0,0){\hbondb}% bond between 2 and 3
+\else \if\member c\relax%
+ \Put@Direct(0,0){\hbondverti}% bond between 3 and 3a
+\else \if\member d\relax%
+{\let\ccc=\iii \let\ddd=\eee%
+ \Put@Direct(0,-342){\hbondc}% bond between 4 and 3a
+}%
+\else \if\member e\relax%
+{\let\ddd=\eee\let\eee=\fff%
+ \Put@Direct(0,-342){\hbondd}% bond between 4 and 5
+}%
+\else \if\member f\relax%
+{\let\eee=\fff \let\fff=\gggA%
+ \Put@Direct(0,-342){\hbonde}% bond between 5 and 6
+}%
+\else \if\member g\relax%
+{\let\aaa=\hhh \let\fff=\gggA%
+ \Put@Direct(0,-342){\hbondf}% bond between 7 and 6
+}%
+\else \if\member h\relax%
+{\let\aaa=\hhh \let\bbb=\jjj%
+ \Put@Direct(0,-342){\hbonda}% bond between 7 and 7a
+}%
+\else \if\member i\relax%
+{\let\fff=\jjj%
+ \Put@Direct(0,0){\hbondf}% bond between 1 and 7a
+}%
+\else \if\member j\relax%
+{\let\ccc=\iii\let\bbb=\jjj%
+ \Put@Direct(0,-342){\hbondb}% bond between 7a and 3a
+}%
+\else \if\member J\relax%
+{\let\eee=\iii\let\fff=\jjj%
+ \Put@Direct(0,0){\hbonde}% bond between 7a and 3a
+}%
+\else \if\member B%aromatic circle
+ \Put@oCircle(173,0){180}% %circle (five-membered)
+\else \if\member A%aromatic circle
+ \Put@oCircle(203,-342){240}% %circle (six-membered)
+\else
+ \expandafter\twoCH@@R\member//%
+ \def\aax{7a}\def\aay{3a}%
+ \if\@@tmpa 1\relax%
+ \putratom{68}{-18}{\@@tmpb}% % right type
+ \else\if\@@tmpa 3\relax%
+ \putratom{233}{60}{\@@tmpb}% % right type
+ \else\if\@@tmpa 2\relax%
+ \putratom{120}{60}{\@@tmpb}% % right type
+ \else\if\@@tmpa 7\relax%
+ \putratom{68}{-360}{\@@tmpb}% % right type
+ \else\if\@@tmpa 6\relax%
+ \putratom{120}{-452}{\@@tmpb}% % right type
+ \else\if\@@tmpa 5\relax%
+ \putratom{233}{-452}{\@@tmpb}% % right type
+ \else\if\@@tmpa 4\relax%
+ \putratom{272}{-360}{\@@tmpb}% % right type
+ \else\if\@@tmpa 9\relax%
+ \putratom{120}{-110}{\@@tmpb}% % right type
+ \else\ifx\@@tmpa\aax\relax%
+ \putratom{120}{-110}{\@@tmpb}% % right type
+ \else\ifx\@@tmpa\aay\relax%
+ \putratom{233}{-110}{\@@tmpb}% % right type
+ \else\if\@@tmpa 8\relax%
+ \putratom{233}{-110}{\@@tmpb}% % right type
+ \else\if\@@tmpa 0\relax%
+ \putratom{140}{-30}{\@@tmpb}% % right type
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+% ***********************
+% * setting fused rings *
+% ***********************
+ \expandafter\twoCH@R\member//%
+ \set@fusion@nonahi
+\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+\fi\fi\fi\fi\fi\fi}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\iniflag
+\Put@Direct(0,0){\set@hetatom@sixh{#3}{0}{0}{4}{0}%
+% \if@aclip \global\@acliptrue\fi
+% \if@bclip \global\@bcliptrue\fi
+% \if@cclip \global\@ccliptrue\fi
+\storeclipinfo
+}% %substituents on 1 to 3
+\developclipinfo
+\Put@Direct(0,-342){\set@hetatom@sixh{#3}{0}{3}{7}{0}%
+% \@gclipfalse \if@fclip \global\@gcliptrue \fi%
+% \@fclipfalse \if@eclip \global\@fcliptrue \fi%
+% \@eclipfalse \if@clip \global\@ecliptrue \fi
+ \@gclipfalse \if@fclip \@gcliptrue \fi%
+ \@fclipfalse \if@eclip \@fcliptrue \fi%
+ \@eclipfalse \if@clip \@ecliptrue \fi
+\storeclipinfo
+}%substituents on 4 to 6
+\developclipinfo
+\Put@Direct(0,-342){%
+\@aclipfalse\@bclipfalse\@cclipfalse%2003/05/01 bugfix by Shinsaku Fujita
+\set@hetatom@sixh{#3}{-6}{0}{2}{0}%
+% \@hclipfalse \if@aclip \global\@hcliptrue \fi
+ \@hclipfalse \if@aclip \@hcliptrue \fi
+\storeclipinfo
+}%%substituent on 7
+\developclipinfo
+\Put@Direct(0,0){\set@vrtx@nonafusehi{#3}%
+% \if@iclip \global\@icliptrue \fi
+% \if@jclip \global\@jcliptrue \fi
+\storeclipinfo
+}% fused positions
+\developclipinfo
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents and exocyclic bonds %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\Put@Direct(0,0){\setsixringh{#4}{0}{0}{4}{0}}% %substituents on 1 to 3
+{\@clipfalse \if@eclip \@cliptrue \fi% %substituents on 4 to 6
+ \@eclipfalse \if@fclip \@ecliptrue \fi%
+ \@fclipfalse \if@gclip \@fcliptrue \fi%
+\Put@Direct(0,-342){\setsixringh{#4}{0}{3}{7}{0}}%
+}%
+{\@aclipfalse \if@hclip \@acliptrue \fi% %substituent on 7
+\Put@Direct(0,-342){\setsixringh{#4}{-6}{0}{2}{0}}%
+}%
+{\@clipfusefalse \if@iclip \@clipfusetrue \fi%
+ \Put@Direct(303,-171){\setatombond{#4}{-7}{4}}% %8 for 3a position
+}%
+{\@clipfusefalse \if@jclip \@clipfusetrue \fi%
+ \Put@Direct(103,-171){\setatombond{#4}{-8}{10}}%%9 for 7a position
+}%
+\end{ShiftPicEnvB}%
+\iniatom\iniflag}% %end of \nonaheterohi macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The command |\set@vrtx@nonafusehi| is to set an atom (stored as
+% |\@memberb|) at one (stored as |\@tmpa|) of the fused vertices
+% of a six-five ring.
+% These vertices are incapable of accomodating a spiro group.
+% On the other hand, the other positions can take spiro groups
+% (stored as |\@memberb|), which are treated by means of
+% the command |\set@hetatom@sixh|.
+% The command |\set@vrtx@nonafusehi| is used in such commands
+% as |\nonaheterohi| for treating thier ATOMLISTs,
+%
+% \begin{macro}{\set@vrtx@nonafusehi}
+% \changes{v2.00}{1998/12/5}{New command: \cs{set@vrtx@nonafusehi}}
+% \begin{macrocode}
+\def\set@vrtx@nonafusehi#1{%
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\twoCH@R\@membera//%
+\ifcase\@tmpa%
+ \or
+ \or
+ \or%%%%3
+ \if\@tmpb a%
+ \global\@icliptrue%
+ \putratom{273}{-211}{\@memberb}% % right type
+ \else\relax
+ \fi
+ \or%4
+ \or%5
+ \or%6
+ \or%7
+ \if\@tmpb a%
+ \global\@jcliptrue%
+ \putlatom{135}{-211}{\@memberb}% % left type
+ \else\relax
+ \fi
+\or%8 (= 3a)
+ \ifx\@tmpb\empty
+ \global\@icliptrue%
+ \putratom{273}{-211}{\@memberb}% % right type
+ \else
+ \XyMTeXWarning{Forbidden spiro ring for the 3a position}%
+ \fi
+\or%9 (= 7a)
+ \ifx\@tmpb\empty
+ \global\@jcliptrue%
+ \putlatom{135}{-211}{\@memberb}% % left type
+ \else
+ \XyMTeXWarning{Forbidden spiro ring for the 7a position}%
+ \fi
+\fi\fi}%
+}% end of the macro \set@vrtx@nonafusehi
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Short-cut commands for fused heterocycles}
+%
+% The macros |\nonaheteroh| and |\nonaheterohi| can be used in the
+% form of a fixed |ATOMLIST|. Hence, the resulting commands for
+% drawing a fused heterocyle with one or more nitrogen atoms
+% have an argument |SUBSLIST| as well as an optional argument |BONDLIST|.
+%
+% \begin{verbatim}
+% **********************************************************
+% * heterocycles having fused six- and five-membered rings *
+% * (horizontal type) *
+% **********************************************************
+%
+% N-heterocycles:
+%
+% \indoleh[BONDLIST]{SUBSLIST}
+% \indolehi[BONDLIST]{SUBSLIST}
+%
+% \isoindoleh[BONDLIST]{SUBSLIST}
+% \isoindolehi[BONDLIST]{SUBSLIST}
+%
+% \indolizineh[BONDLIST]{SUBSLIST}
+% \indolizinehi[BONDLIST]{SUBSLIST}
+% (different from the IUPAC numbering)
+%
+% \purineh[BONDLIST]{SUBSLIST}
+% \purinehi[BONDLIST]{SUBSLIST}
+% (different from the IUPAC numbering)
+%
+% O-heterocycles:
+%
+% \benzofuraneh[BONDLIST]{SUBSLIST}
+% \benzofuranehi[BONDLIST]{SUBSLIST}
+%
+% \isobenzofuranehi[BONDLIST]{SUBSLIST}
+%
+% \benzoxazoleh[BONDLIST]{SUBSLIST}
+% \benzoxazolehi[BONDLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one
+% character selected from a to j, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The optiona `A' typesets an aromatic circle.
+% The option
+% `$n+$' ($n=1$ to $9$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+% BONDLIST: list of bonds
+%
+% none or r : aromatic six-membered ring
+% [] : fully saturated form
+% a : 1,2-double bond b : 2,3-double bond
+% c : 3,3a-double bond d : 4,3a-double bond
+% e : 4,5-double bond f : 5,6-double bond
+% g : 6,7-double bond h : 7,7a-double bond
+% i : 1,7a-double bond
+% j : 3a,4a-double bond
+% J : 3a,4a-double bond in the other ring
+% A : aromatic circle
+% {n+} : plus at the n-nitrogen atom (n = 1 to 9)
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 8
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+%
+% for 8 (3a position) and 9 (7a position)
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \indoleh{1==N}{1==Cl;2==F}
+% \indoleh[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+%
+% \begin{macro}{\purineh}
+% \begin{macro}{\purinehi}
+% \begin{macrocode}
+\def\purineh{\@ifnextchar[{\@purineh[@}{\@purineh[ra]}}%
+\def\@purineh[#1]#2{%
+\iforigpt \typeout{command `purineh' %
+ is based on `nonaheteroh'.}\fi%
+\nonaheteroh[#1]{1==N;3==N;5==N;7==N}{#2}}%
+\def\purinehi{\@ifnextchar[{\@purinehi[@}{\@purinehi[ra]}}%
+\def\@purinehi[#1]#2{%
+\iforigpt \typeout{command `purinehi' %
+ is based on `nonaheterohi'.}\fi%
+\nonaheterohi[#1]{1==N;3==N;5==N;7==N}{#2}}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\indoleh}
+% \begin{macro}{\indolehi}
+% \begin{macrocode}
+\def\indoleh{\@ifnextchar[{\@indoleh[@}{\@indoleh[rb]}}%
+\def\@indoleh[#1]#2{%
+\iforigpt \typeout{command `indoleh' %
+ is based on `nonaheteroh'.}\fi%
+\nonaheteroh[#1]{1==N}{#2}}%
+\def\indolehi{\@ifnextchar[{\@indolehi[@}{\@indolehi[rb]}}%
+\def\@indolehi[#1]#2{%
+\iforigpt \typeout{command `indolehi' %
+ is based on `nonaheterohi'.}\fi%
+\nonaheterohi[#1]{1==N}{#2}}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\indolizineh}
+% \begin{macro}{\indolizinehi}
+% \begin{macrocode}
+\def\indolizineh{%
+ \@ifnextchar[{\@indolizineh[@}{\@indolizineh[aceg]}}%
+\def\@indolizineh[#1]#2{%
+\iforigpt \typeout{command `indolizineh' %
+ is based on `nonaheteroh'.}\fi%
+\nonaheteroh[#1]{7a==N}{#2}}%
+\def\indolizinehi{%
+ \@ifnextchar[{\@indolizinehi[@}{\@indolizinehi[aceg]}}%
+\def\@indolizinehi[#1]#2{%
+\iforigpt \typeout{command `indolizinehi' %
+ is based on `nonaheterohi'.}\fi%
+\nonaheterohi[#1]{7a==N}{#2}}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\isoindoleh}
+% \begin{macro}{\isoindolehi}
+% \begin{macrocode}
+\def\isoindoleh{%
+ \@ifnextchar[{\@isoindoleh[@}{\@isoindoleh[cegi]}}%
+\def\@isoindoleh[#1]#2{%
+\iforigpt \typeout{command `isoindoleh' %
+ is based on `nonaheteroh'.}\fi%
+\nonaheteroh[#1]{2==N}{#2}}%
+\def\isoindolehi{%
+ \@ifnextchar[{\@isoindolehi[@}{\@isoindolehi[cegi]}}%
+\def\@isoindolehi[#1]#2{%
+\iforigpt \typeout{command `isoindolehi' %
+ is based on `nonaheterohi'.}\fi%
+\nonaheterohi[#1]{2==N}{#2}}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\benzofuraneh}
+% \begin{macro}{\benzofuranehi}
+% \begin{macrocode}
+\def\benzofuraneh{%
+ \@ifnextchar[{\@benzofuraneh[@}{\@benzofuraneh[rb]}}%
+\def\@benzofuraneh[#1]#2{%
+\iforigpt \typeout{command `benzofuraneh' %
+ is based on `nonaheteroh'.}\fi%
+\nonaheteroh[#1]{1==O}{#2}}%
+\def\benzofuranehi{%
+ \@ifnextchar[{\@benzofuranehi[@}{\@benzofuranehi[rb]}}%
+\def\@benzofuranehi[#1]#2{%
+\iforigpt \typeout{command `benzofuranehi' %
+ is based on `nonaheterohi'.}\fi%
+\nonaheterohi[#1]{1==O}{#2}}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\isobenzofuraneh}
+% \begin{macro}{\isobenzofuranehi}
+% \begin{macrocode}
+\def\isobenzofuraneh{\@ifnextchar[{\@isobenzofuraneh[@}%
+ {\@isobenzofuraneh[cegi]}}%
+\def\@isobenzofuraneh[#1]#2{%
+\iforigpt \typeout{command `isobenzofuraneh' %
+ is based on `nonaheteroh'.}\fi%
+\nonaheteroh[#1]{2==O}{#2}}%
+\def\isobenzofuranehi{\@ifnextchar[{\@isobenzofuranehi[@}%
+ {\@isobenzofuranehi[cegi]}}%
+\def\@isobenzofuranehi[#1]#2{%
+\iforigpt \typeout{command `isobenzofuranehi' %
+ is based on `nonaheterohi'.}\fi%
+\nonaheterohi[#1]{2==O}{#2}}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\benzoxazoleh}
+% \begin{macro}{\benzoxazolehi}
+% \begin{macrocode}
+\def\benzoxazoleh{%
+ \@ifnextchar[{\@benzoxazoleh[@}{\@benzoxazoleh[rb]}}%
+\def\@benzoxazoleh[#1]#2{%
+\iforigpt \typeout{command `benzoxazoleh' %
+ is based on `nonaheteroh'.}\fi%
+\nonaheteroh[#1]{1==O;3==N}{#2}}%
+\def\benzoxazolehi{%
+ \@ifnextchar[{\@benzoxazolehi[@}{\@benzoxazolehi[rb]}}%
+\def\@benzoxazolehi[#1]#2{%
+\iforigpt \typeout{command `benzoxazolehi' %
+ is based on `nonaheterohi'.}\fi%
+\nonaheterohi[#1]{1==O;3==N}{#2}}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \section{Building blocks}
+% \subsection{Six-membered ring unit}
+%
+% The old function (v1.01) of |\sixunitv| as a fusing ring unit
+% is succeeded by |\sixfusev| and |\sixfusevi|.
+% The command |\sixunitv| has been changed into a subsidiary
+% command of |\sixheterov| (v2.00).
+%
+% The macro |\sixunith| is a six-membered fragment that can be
+% fused to another
+% ring structure to produce a new ring system. The following
+% numbering is adopted in this macro.
+%
+% \begin{verbatim}
+% **********************
+% * six-membered unit *
+% * (horizontal type) *
+% **********************
+% b
+% 2 3
+% a ----- c
+% * *
+% the original point ===> 1 * * 4
+% (0,0) * * d
+% f -----
+% 6 5
+% e
+% \end{verbatim}
+%
+% The macro |\sixunith| has three arguments |ATOMLIST|, |SUBSLIST|
+% and |OMIT|
+% as well as an optional argument |BONDLIST|.
+%
+% \begin{verbatim}
+% \sixunith[BONDLIST]{ATOMLIST}{SUBSLIST}{OMIT}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one
+% character selected from a to f, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `$n+$' ($n=1$ to $6$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% none : fully saturated
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,6-double bond
+% f : 6,1-double bond
+% {n+} : plus at the n-nitrogen atom (n = 1 to 6)
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 6 atoms)
+%
+% for n = 1 to 6
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position,
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 6
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% The argument |OMIT| represents one bond to be omitted.
+% The omitted edge is regarded as a fused position.
+%
+% \begin{verbatim}
+% OMIT: one bond omitted (a, b, c, d, e, or f)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \sixhunitv{1==N}{1==Cl;2==F}{e}
+% \end{verbatim}
+%
+% The definition of |\sixunith| uses a picture environment and
+% consists of the same unit processes as shown in |\sixheteroh|:
+% \begin{enumerate}
+% \item treatment of atom list,
+% \item placing outer skeletons,
+% \item placing inner double bonds,
+% \item setting hetero atoms, and
+% \item placing substituents by using |\setsixringh|.
+% \end{enumerate}
+%
+% \begin{macro}{\sixunith}
+% \begin{macro}{\@sixunith}
+% \begin{macrocode}
+\def\sixunith{\@ifnextchar[{\@sixunith[@}{\@sixunith[@]}}
+\def\@sixunith[#1]#2#3#4{\sixheteroh[#1]{#2}{#3}[#4]}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \changes{v3.00}{2002/4/30}{\cs{sixunith}: Old definition deleted.}
+%
+% \subsection{Five-membered ring unit}
+% \subsubsection{Horizonatl type}
+%
+% The old function (v1.01) of |\fiveunith| as a fusing ring unit
+% is succeeded by |\fivefuseh|.
+% The command |\fiveunith| has been changed into a subsidiary
+% command of |\fiveheteroh| (v2.00).
+%
+% The macro |\fiveunith| is a five-membered fragment that can be
+% fused to another
+% ring structure to produce a new ring system. The following
+% numbering is adopted in this macro.
+%
+% \begin{verbatim}
+% **********************
+% * five-membered unit *
+% * (horizontal type) *
+% **********************
+%
+% 3 _____ 2
+% | *
+% | * 1 <===== the original point
+% | *
+% 4 ----- 5
+% \end{verbatim}
+%
+% The macro |\fiveunith| has three arguments |ATOMLIST|, |SUBSLIST|
+% and |OMIT|
+% as well as an optional argument |BONDLIST|.
+%
+% \begin{verbatim}
+% \fiveunith[BONDLIST]{ATOMLIST}{SUBSLIST}{OMIT}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one
+% character selected from a to e, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `$n+$' ($n=1$ to $5$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+% BONDLIST: list of inner double bonds
+%
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,1-double bond
+% A : aromatic circle
+% {n+} : plus at the n-nitrogen atom (n = 1 to 5)
+% {0+} : plus (or others) at the center
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 5 atoms)
+%
+% for n = 1 to 5
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 5
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% The argument |OMIT| represents one bond to be omitted.
+% The omitted edge is regarded as a fused position.
+%
+% \begin{verbatim}
+% OMIT: one bond omitted (a, b, c, d, e, or f)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \fiveunith{1==N}{1==H;2==F}{a}
+% \end{verbatim}
+%
+% The definition of |\fiveunith| uses a picture environment and
+% consists of the same unit processes as shown in |\sixheteroh|:
+% \begin{enumerate}
+% \item treatment of atom list,
+% \item placing outer skeletons,
+% \item placing inner double bonds,
+% \item setting hetero atoms, and
+% \item placing substituents by using |\setsixringh| partially.
+% \end{enumerate}
+%
+% \begin{macro}{\fiveunith}
+% \begin{macro}{\@fiveunith}
+% \begin{macrocode}
+\def\fiveunith{\@ifnextchar[{\@fiveunith[@}{\@fiveunith[r]}}
+\def\@fiveunith[#1]#2#3#4{\fiveheteroh[#1]{#2}{#3}[#4]}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \changes{v3.00}{2002/4/30}{\cs{fiveunith}: Old definition deleted.}
+%
+% \subsubsection{Inverse horizontal type}
+%
+% The old function (v1.01) of |\fiveunithi| as a fusing ring unit
+% is succeeded by |\fivefusehi|.
+% The command |\fiveunithi| has been changed into a subsidiary
+% command of |\fiveheterohi| (v2.00).
+%
+% The macro |\fiveunithi| typesets a five-membered fragment that can be
+% fused to another
+% ring structure to produce a new ring system. The following
+% numbering is adopted in this macro.
+%
+% \begin{verbatim}
+% ************************************
+% * five-membered unit *
+% * (horizontal type, inverse type) *
+% ************************************
+%
+% 2 ----- 3
+% * |
+% the original point 1 * |
+% * |
+% _____|
+% 5 4
+% \end{verbatim}
+%
+% The macro |\fiveunithi| has three arguments |ATOMLIST|, |SUBSLIST|
+% and |OMIT|
+% as well as an optional argument |BONDLIST|.
+%
+% \begin{verbatim}
+% \fiveunithi[BONDLIST]{ATOMLIST}{SUBSLIST}{OMIT}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one
+% character selected from a to e, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `$n+$' ($n=1$ to $5$) represents a plus charge on a hetero atom
+% at the $n$-position.
+%
+% \begin{verbatim}
+% BONDLIST: list of inner double bonds
+%
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,1-double bond
+% A : aromatic circle
+% {n+} : plus at the n-nitrogen atom (n = 1 to 5)
+% {0+} : plus (or others) at the center
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 5 atoms)
+%
+% for n = 1 to 5
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 5
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% The argument |OMIT| represents one bond to be omitted.
+% The omitted edge is regarded as a fused position.
+%
+% \begin{verbatim}
+% OMIT: one bond omitted (a, b, c, d, e, or f)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \fiveunithi{1==N}{1==H;2==F}{a}
+% \end{verbatim}
+%
+% The definition of |\fiveunithi| uses a picture environment and
+% consists of the same unit processes as shown in |\sixheteroh|:
+% \begin{enumerate}
+% \item treatment of atom list,
+% \item placing outer skeletons,
+% \item placing inner double bonds,
+% \item setting hetero atoms, and
+% \item placing substituents by using |\setsixringh| partially.
+% \end{enumerate}
+%
+% \begin{macro}{\fiveunithi}
+% \begin{macro}{\@fiveunithi}
+% \begin{macrocode}
+\def\fiveunithi{\@ifnextchar[{\@fiveunithi[@}{\@fiveunithi[r]}}
+\def\@fiveunithi[#1]#2#3#4{\fiveheterohi[#1]{#2}{#3}[#4]}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \changes{v3.00}{2002/4/30}{\cs{fiveunithi}: Old definition deleted.}
+%
+% \section{Three-membered heterocycles}
+% \subsection{Horizontal type}
+%
+% The macro |\threeheteroh| typesets a three-membered ring. The following
+% numbering is adopted in this macro.
+%
+% \begin{verbatim}
+% ****************************
+% * thereehetero derivatives *
+% * (horizontal type) *
+% ****************************
+
+% aaa fff
+% 3
+% | ` c
+% b | 1 bbb ccc
+% | / a
+% 2/
+% ddd eee
+%
+% -- --
+% | cf. threeehetero |
+% | fff 3--------2bbb |
+% | ` / |
+% | ddd `1/ <===== the original point |
+% | |
+% -- --
+% \end{verbatim}
+%
+% The macro |\threeheteroh| has two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \threeheteroh(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `c' and a uppercase
+% character `A' or `B'.
+%
+% The |BONDLIST| argument contains one
+% character selected from a to c, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `$n+$' ($n=1$ to $3$) represents a plus charge on a hetero atom
+% at the $n$-position.
+% The option `$n+$' ($n=4$ to $6$) represents a plus charge outside the ring.
+% The option `$0+$' typesets a plus charge at the center of the ring.
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% none : saturated
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 3,1-double bond
+% A : aromatic circle
+% {n+} : plus at the n-hetero atom (n = 1 to 3)
+% : n=4 -- outer plus at 1 position
+% : n=5 -- outer plus at 2 position
+% : n=6 -- outer plus at 3 position
+% {0+} : plus at the center of a cyclopropane ring
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 3 atoms)
+%
+% for n = 1 to 3
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position,
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 3
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges may be regarded as both fused and non-fused
+% positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a to c; see BONDLIST)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \threeheteroh{1==N}{1==Cl;2==F}
+% \threeheteroh[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \threeheteroh{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl}
+% \end{verbatim}
+%
+% The definition of |\threeheteroh| uses a picture environment and
+% consists of the same unit processes as shown in |\sixheterov|:
+% \begin{enumerate}
+% \item treatment of atom list,
+% \item placing outer skeletons,
+% \item placing inner double bonds,
+% \item setting hetero atoms, and
+% \item placing substituents by using |\setsixringv| partially.
+% \end{enumerate}
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/12/5}{Add: spiro and fused rings}
+% \changes{v2.01}{2001/6/20}{The
+% \cs{storeclipinfo} command is added.}
+%
+% \begin{macro}{\threeheteroh}
+% \begin{macro}{\@three@heteroh}
+% \begin{macro}{\@three@@heteroh}
+% \begin{macro}{\@threeheteroh}
+% \begin{macrocode}
+\def\threeheteroh{\@ifnextchar({\@three@heteroh(@}{\@three@heteroh(@)}}
+\def\@three@heteroh(#1){\@ifnextchar[{\@three@@heteroh(#1)[@}%
+{\@three@@heteroh(#1)[@]}}
+\def\@three@@heteroh(#1)[#2]#3#4{\@ifnextchar[%
+{\@threeheteroh(#1)[#2]{#3}{#4}[@}%
+{\@threeheteroh(#1)[#2]{#3}{#4}[@]}}
+\def\@threeheteroh(#1)[#2]#3#4[#5]{%
+% \end{macrocode}
+%
+% The procedure of adusting substitution positions is based on
+% a horizontal six-membered ring, in which the positions
+% 4 (ddd), 6 (fff), 2 (bbb) are used in place of the positions
+% 1, 2, and 3 of the three-membered ring.
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+% % treatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniatom\iniflag%initialize
+\test@vertix@sixv{#3}{d}{f}{b}{@}{@}{@}%tentative use for six-h
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % adustment of subs positions %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\@reset@ylsw%
+\ylpositionh{#4}{3}{3}{5}{0}%subst 1
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{235}\def\@@yli{-103}\fi
+\else
+\ylpositionh{#4}{-1}{1}{3}{0}%subst 3
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{103}\def\@@yli{-29}\fi
+\else
+\ylpositionh{#4}{4}{5}{7}{0}%subst 2
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{103}\def\@@yli{-171}\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(580,700)(-200,-240){threeheteroh}%
+(200,240)%2002/4/30 by S. Fujita
+% \end{macrocode}
+%
+% The procedures of setting skeletal and inner bonds are based on
+% a vertical six-membered ring, where the bonds c, e, and a are
+% used in place of the bonds a, b, and c. Hence,
+% (1) the bond a of the latter should be related to |\bbb| and |\ccc| at
+% the one terminal and to |\eee| and |\ddd| at the other terminal;
+% (2) the bond b of the latter should be related to |\eee| and |\ddd| at
+% the one terminal and to |\aaa| and |\fff| at the other terminal; and
+% (3) the bond c of the latter should be related to |\bbb| and |\ccc| at
+% the one terminal and to |\aaa| and |\fff| at the other terminal.
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % retreatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniatom\iniflag%initialize
+\test@vertix@sixv{#3}{c}{e}{a}{@}{@}{@}%
+\test@vertix@sixv{#3}{b}{d}{f}{@}{@}{@}%
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+{\resetbdsw%
+\@bond@@omit{#5}%
+\Put@Direct(0,0){\set@skel@bond{#1}{a}{c}}%
+ % bond between 1 and 2 \@aaa -> \skbondc etc
+\Put@Direct(171,-103){\set@skel@bond{#1}{b}{e}}%
+ % bond between 2 and 3 \@bbb -> \skbonde etc
+\Put@Direct(0,-200){\set@skel@bond{#1}{c}{a}}%
+ % bond between 3 and 1 \@ccc -> \skbonda etc
+}%
+%
+% \Put@Direct(0,0){\skbondc}% bond between 1 and 2
+% \Put@Direct(0,-200){\skbonda}% bond between 1 and 3
+% \Put@Direct(171,-103){\skbonde}%bond between 2 and 3
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r\relax%
+\else\if\member a\relax\Put@Direct(0,0){\bondc}%
+\else\if\member b\relax\Put@Direct(171,-103){\bonde}%
+\else\if\member c\relax\Put@Direct(0,-200){\bonda}%
+\else\if\member A\relax% aromatic circle
+ \Put@oCircle(70,103){100}% %circle
+\else
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+% % inner bond attachment %
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+ \expandafter\twoCH@@R\member//%
+ \set@fusionadd@threeh
+\fi\fi\fi\fi\fi%
+}%
+% \end{macrocode}
+%
+% The proceduce of setting hetero atoms on the vertices of
+% a three-membered ring is based on the macro |\set@hetaromh@sixh|,
+% where the positions 4, 6, and 2 of a horizontal six-membered ring
+% are used in place of the positions 1, 2, and 3 of the three-membered ring.
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\iniflag
+%\Put@Direct(-235,103){\set@hetatom@sixh{#3}{3}{3}{5}{0}%
+\Put@Direct(-215,103){\set@hetatom@sixh{#3}{3}{3}{5}{0}%
+%\if@clip \global\@cliptrue\fi
+\storeclipinfo
+}%subst 1 <--six h 4
+\developclipinfo
+\Put@Direct(-103,29){\set@hetatom@sixh{#3}{-1}{1}{3}{0}%
+%\if@bclip \global\@bcliptrue\fi
+\storeclipinfo
+}%subst 3 <--six h 2
+\developclipinfo
+\Put@Direct(-103,171){\set@hetatom@sixh{#3}{4}{5}{7}{0}%
+%\if@fclip \global\@fcliptrue\fi
+\storeclipinfo
+}%subst 2 <--six h 6
+\developclipinfo
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\Put@Direct(-235,103){\setsixringh{#4}{3}{3}{5}{0}}%subst 1
+\Put@Direct(-103,29){\setsixringh{#4}{-1}{1}{3}{0}}%subst 3
+\Put@Direct(-103,171){\setsixringh{#4}{4}{5}{7}{0}}%subst 2
+\end{ShiftPicEnvB}%
+\iniatom\iniflag}% %end of \threeheteroh macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The macro |\set@fusionadd@threeh| is an inner command contained
+% in the definition of |\threeheteroh| etc., where
+% the macro is used for setting an additive
+% or a fused ring at each bond (designated by |\@@tmpa|). The
+% fused ring is typeset by the inner command |\set@fusion@threeh|.
+%
+% \begin{macro}{\set@fusionadd@threeh}
+% \changes{v2.00}{1998/12/5}{New command: \cs{set@fusionadd@threeh}}
+% \begin{macrocode}
+\def\set@fusionadd@threeh{%
+ \if\@@tmpa 0\relax%
+ \putratom{35}{85}{\scriptsize\@@tmpb}% % right type
+ \else\if\@@tmpa 1\relax%
+ \putratom{80}{85}{\scriptsize\@@tmpb}% % right type
+ \else\if\@@tmpa 2\relax%
+ \putratom{15}{50}{\scriptsize\@@tmpb}% % right type
+ \else\if\@@tmpa 3\relax%
+ \putratom{15}{120}{\scriptsize\@@tmpb}% % right type
+ \else\if\@@tmpa 4\relax%
+ \putratom{180}{130}{\scriptsize\@@tmpb}% % right type
+ \else\if\@@tmpa 5\relax%
+ \putratom{20}{-60}{\scriptsize\@@tmpb}% % right type
+ \else\if\@@tmpa 6\relax%
+ \putratom{20}{230}{\scriptsize\@@tmpb}% % right type
+ \else
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+ \set@fusion@threeh
+ \fi\fi\fi\fi\fi\fi\fi%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% The inner command |\set@fusion@threeh| is used for typesetting
+% a fused ring at each bond represented by |\@@tmpa|. Warnings
+% concerning mismatched ring-fusions are based on the command
+% |\FuseWarning|.
+%
+% \begin{macro}{\set@fusion@threeh}
+% \changes{v2.00}{1998/12/5}{New command: \cs{set@fusion@threeh}}
+% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring}
+% \begin{macrocode}
+\def\set@fusion@threeh{%
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+\if\@@tmpa b\relax%
+ \putlratom{0}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{0}{-200}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}%
+ \else\if\@@tmpa B\relax%
+ \putlratom{0}{200}{\@@tmpb}% % bond fused
+ \FuseWarning{0}{200}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}%
+ \else\if\@@tmpa a\relax%
+ \putlratom{171}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}%
+ \else\if\@@tmpa A\relax%
+ \putlratom{0}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}%
+ \else\if\@@tmpa c\relax%
+ \putlratom{0}{200}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c}%
+ \else\if\@@tmpa C\relax%
+ \putlratom{171}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C}%
+\fi\fi\fi\fi\fi\fi%
+\global\let\FuseWarning=\FuseW@rning%added 2010/10/01
+}% end of the macro \set@fusion@threeh
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v5.01}{2013/3/19}{added \cs{oxiraneh}, \cs{aziridineh}, and \cs{thiiraneh} }
+% \begin{macro}{\oxiraneh}
+% \begin{macro}{\aziridineh}
+% \begin{macro}{\thiiraneh}
+% \begin{macrocode}
+\def\oxiraneh{\@ifnextchar[{\@oxiraneh[@}{\@oxiraneh[]}}
+\def\@oxiraneh[#1]#2{%
+\iforigpt \typeout{command `oxiraneh' %
+ is based on `threeheteroh'.}\fi%
+\threeheteroh[#1]{1==O}{#2}}
+\def\aziridineh{\@ifnextchar[{\@aziridineh[@}{\@aziridineh[]}}
+\def\@aziridineh[#1]#2{%
+\iforigpt \typeout{command `aziridineh' %
+ is based on `threeheteroh'.}\fi%
+\threeheteroh[#1]{1==N}{#2}}
+\def\thiiraneh{\@ifnextchar[{\@thiiraneh[@}{\@thiiraneh[]}}
+\def\@thiiraneh[#1]#2{%
+\iforigpt \typeout{command `thiiraneh' %
+ is based on `threeheteroh'.}\fi%
+\threeheteroh[#1]{1==S}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Inverse horizontal type}
+%
+% The macro |\threeheterohi| typesets a three-membered ring. The following
+% numbering is adopted in this macro.
+%
+% \begin{verbatim}
+% *******************************
+% * thereehetero derivatives *
+% * (vertical horizontal type) *
+% *******************************
+%
+% aaa bbb
+% c 3
+% / |
+% eee 1 | b
+% fff a` |
+% 2 <---original point
+% ccc ddd
+% \end{verbatim}
+%
+% The macro |\threeheterohi| has two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+% Two optional arguments |SKBONDLIST| and |OMIT| are added to
+% treat stereochemical information or other bond situations.
+%
+% \begin{verbatim}
+% \threeheterohi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT]
+% \end{verbatim}
+%
+% The |SKBONDLIST| argument contains pairs of two alphabets in
+% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase
+% character selected from bond specifiers `a' to `c' and a uppercase
+% character `A' or `B'.
+%
+% The |BONDLIST| argument contains one
+% character selected from a to c, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `$n+$' ($n=1$ to $3$) represents a plus charge on a hetero atom
+% at the $n$-position.
+% The option `$n+$' ($n=4$ to $6$) represents a plus charge outside the ring.
+% The option `$0+$' typesets a plus charge at the center of the ring.
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% none : saturated
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 3,1-double bond
+% A : aromatic circle
+% {n+} : plus at the n-hetero atom (n = 1 to 3)
+% : n=4 -- outer plus at 1 position
+% : n=5 -- outer plus at 2 position
+% : n=6 -- outer plus at 3 position
+% {0+} : plus at the center of a cyclopropane ring
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% ATOMLIST: list of heteroatoms (max 3 atoms)
+%
+% for n = 1 to 3
+%
+% n : Hetero atom, e.g. N, O, etc. at n-position,
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 3
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% nSd : alpha single bond at n-atom (dotted line)
+% with an alternative direction to nSA
+% nSu : beta single bond at n-atom (boldface)
+% with an alternative direction to nSB
+% nFA : alpha single bond at n-atom (dotted line)
+% for ring fusion
+% nFB : beta single bond at n-atom (boldface)
+% for ring fusion
+% nGA : alpha single bond at n-atom (dotted line)
+% for the other ring fusion
+% nGB : beta single bond at n-atom (boldface)
+% for the other ring fusion
+% \end{verbatim}
+%
+% The argument |OMIT| represents one or more bonds to be omitted.
+% The omitted edges may be regarded as both fused and non-fused
+% positions.
+%
+% \begin{verbatim}
+% OMIT: one or more bonds omitted (a to c; see BONDLIST)
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \threeheterohi{1==N}{1==Cl;2==F}
+% \threeheterohi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \threeheterohi{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl}
+% \end{verbatim}
+%
+% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw},
+% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii},
+% \cs{yl@xdiff} and \cs{yl@ydiff}}
+% \changes{v2.00}{1998/12/5}{Add: spiro and fused rings}
+% \changes{v2.01}{2001/6/20}{The
+% \cs{storeclipinfo} command is added.}
+%
+% \begin{macro}{\threeheterohi}
+% \begin{macro}{\@three@heterohi}
+% \begin{macro}{\@three@@heterohi}
+% \begin{macro}{\@threeheterohi}
+% \begin{macrocode}
+\def\threeheterohi{\@ifnextchar({\@three@heterohi(@}{\@three@heterohi(@)}}
+\def\@three@heterohi(#1){\@ifnextchar[{\@three@@heterohi(#1)[@}%
+{\@three@@heterohi(#1)[@]}}
+\def\@three@@heterohi(#1)[#2]#3#4{\@ifnextchar[%
+{\@threeheterohi(#1)[#2]{#3}{#4}[@}%
+{\@threeheterohi(#1)[#2]{#3}{#4}[@]}}
+\def\@threeheterohi(#1)[#2]#3#4[#5]{%
+% \end{macrocode}
+%
+% The procedure of adusting substitution positions is based on
+% a horizontal six-membered ring, in which the positions
+% 1 (aaa), 5 (eee), 3 (ccc) are used in place of the positions
+% 1, 2, and 3 of the three-membered ring.
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+% % treatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniatom\iniflag%initialize
+\test@vertix@sixv{#3}{a}{e}{c}{@}{@}{@}%tentative use for six-h
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % adustment of subs positions %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\@reset@ylsw%
+\ylpositionh{#4}{0}{0}{2}{0}%subst 1
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{171}\def\@@yli{-103}\fi
+\else
+\ylpositionh{#4}{0}{2}{4}{0}%subst 3
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{303}\def\@@yli{-29}\fi
+\else
+\ylpositionh{#4}{3}{4}{6}{0}%subst 2
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{303}\def\@@yli{-171}\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(580,700)(-400,-240){threeheterohi}%
+(400,240)%2002/4/30 by S. Fujita
+% \end{macrocode}
+%
+% The procedures of setting skeletal and inner bonds are based on
+% a vertical six-membered ring, where the bonds d, b, and f are
+% used in place of the bonds a, b, and c.
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% % retreatment of atom list %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\iniatom\iniflag%initialize
+\test@vertix@sixv{#3}{e}{c}{a}{@}{@}{@}%
+\test@vertix@sixv{#3}{f}{d}{b}{@}{@}{@}%
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+{\resetbdsw%
+\@bond@@omit{#5}%
+\Put@Direct(0,0){\set@skel@bond{#1}{a}{d}}%
+ % bond between 1 and 2 \@aaa -> \skbondd etc
+\Put@Direct(-171,-103){\set@skel@bond{#1}{b}{b}}%
+ % bond between 2 and 3 \@bbb -> \skbondb etc
+\Put@Direct(0,-200){\set@skel@bond{#1}{c}{f}}%
+ % bond between 3 and 1 \@ccc -> \skbondf etc
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\@tfor\member:=#2\do{%
+\if\member r\relax%
+\else\if\member a\relax\Put@Direct(0,0){\bondd}%
+\else\if\member b\relax\Put@Direct(-171,-103){\bondb}%
+\else\if\member c\relax\Put@Direct(0,-200){\bondf}%
+\else\if\member A\relax% aromatic circle
+ \Put@oCircle(70,103){100}% %circle
+\else
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+% % inner bond attachment %
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+ \expandafter\twoCH@@R\member//%
+ \set@fusionadd@threehi
+\fi\fi\fi\fi\fi%
+}%
+% \end{macrocode}
+%
+% The proceduce of setting hetero atoms on the vertices of
+% a three-membered ring is based on the macro |\set@hetaromh@sixh|,
+% where the positions 1, 5, and 3 of a horizontal six-membered ring
+% are used in place of the positions 1, 2, and 3 of the three-membered ring.
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\iniflag
+\Put@Direct(-171,103){\set@hetatom@sixh{#3}{0}{0}{2}{0}%
+%\if@aclip \global\@acliptrue\fi
+\storeclipinfo
+}%subst 1 <--six h 1
+\developclipinfo
+\Put@Direct(-303,29){\set@hetatom@sixh{#3}{0}{2}{4}{0}%
+%\if@cclip \global\@ccliptrue\fi
+\storeclipinfo
+\developclipinfo
+}%subst 3 <--six h 3
+\Put@Direct(-303,171){\set@hetatom@sixh{#3}{3}{4}{6}{0}%
+%\if@eclip \global\@ecliptrue\fi
+\storeclipinfo
+}%subst 2 <--six h 5
+\developclipinfo
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\Put@Direct(-171,103){\setsixringh{#4}{0}{0}{2}{0}}%subst 1
+\Put@Direct(-303,29){\setsixringh{#4}{0}{2}{4}{0}}%subst 3
+\Put@Direct(-303,171){\setsixringh{#4}{3}{4}{6}{0}}%subst 2
+\end{ShiftPicEnvB}%
+\iniatom\iniflag}% %end of \threeheterohi macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The macro |\set@fusionadd@threehi| is an inner command contained
+% in the definition of |\threeheterohi| etc., where
+% the macro is used for setting an additive
+% or a fused ring at each bond (designated by |\@@tmpa|). The
+% fused ring is typeset by the inner command |\set@fusion@threehi|.
+%
+% \begin{macro}{\set@fusionadd@threeh}
+% \changes{v2.00}{1998/12/5}{New command: \cs{set@fusionadd@threehi}}
+% \begin{macrocode}
+\def\set@fusionadd@threehi{%
+ \if\@@tmpa 0\relax%
+ \putlatom{-35}{85}{\scriptsize\@@tmpb}% % left type
+ \else\if\@@tmpa 1\relax%
+ \putlatom{-80}{85}{\scriptsize\@@tmpb}% % left type
+ \else\if\@@tmpa 2\relax%
+ \putlatom{-15}{50}{\scriptsize\@@tmpb}% % left type
+ \else\if\@@tmpa 3\relax%
+ \putlatom{-15}{120}{\scriptsize\@@tmpb}% % left type
+ \else\if\@@tmpa 4\relax%
+ \putlatom{-180}{130}{\scriptsize\@@tmpb}% % left type
+ \else\if\@@tmpa 5\relax%
+ \putlatom{-20}{-60}{\scriptsize\@@tmpb}% % left type
+ \else\if\@@tmpa 6\relax%
+ \putlatom{-20}{230}{\scriptsize\@@tmpb}% % left type
+ \else
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+ \set@fusion@threehi
+ \fi\fi\fi\fi\fi\fi\fi%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% The inner command |\set@fusion@threehi| is used for typesetting
+% a fused ring at each bond represented by |\@@tmpa|. Warnings
+% concerning mismatched ring-fusions are based on the command
+% |\FuseWarning|.
+%
+% \begin{macro}{\set@fusion@threehi}
+% \changes{v2.00}{1998/12/5}{New command: \cs{set@fusion@threehi}}
+% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring}
+% \begin{macrocode}
+\def\set@fusion@threehi{%
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+\if\@@tmpa b\relax%
+ \putlratom{0}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{0}{-200}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}%
+ \else\if\@@tmpa B\relax%
+ \putlratom{0}{200}{\@@tmpb}% % bond fused
+ \FuseWarning{0}{200}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}%
+ \else\if\@@tmpa a\relax%
+ \putlratom{-171}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}%
+ \else\if\@@tmpa A\relax%
+ \putlratom{0}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}%
+ \else\if\@@tmpa c\relax%
+ \putlratom{0}{200}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c}%
+ \else\if\@@tmpa C\relax%
+ \putlratom{-171}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C}%
+\fi\fi\fi\fi\fi\fi%
+\global\let\FuseWarning=\FuseW@rning%added 2010/10/01
+}% end of the macro \set@fusion@threehi
+%</hetaromh>
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v5.01}{2013/3/19}{added \cs{oxiranehi}, \cs{aziridinehi}, and \cs{thiiranehi} }
+% \begin{macro}{\oxiranehi}
+% \begin{macro}{\aziridinehi}
+% \begin{macro}{\thiiranehi}
+% \begin{macrocode}
+\def\oxiranehi{\@ifnextchar[{\@oxiranehi[@}{\@oxiranehi[]}}
+\def\@oxiranehi[#1]#2{%
+\iforigpt \typeout{command `oxiranehi' %
+ is based on `threeheterohi'.}\fi%
+\threeheterohi[#1]{1==O}{#2}}
+\def\aziridinehi{\@ifnextchar[{\@aziridinehi[@}{\@aziridinehi[]}}
+\def\@aziridinehi[#1]#2{%
+\iforigpt \typeout{command `aziridinehi' %
+ is based on `threeheterohi'.}\fi%
+\threeheterohi[#1]{1==N}{#2}}
+\def\thiiranehi{\@ifnextchar[{\@thiiranehi[@}{\@thiiranehi[]}}
+\def\@thiiranehi[#1]#2{%
+\iforigpt \typeout{command `thiiranehi' %
+ is based on `threeheterohi'.}\fi%
+\threeheterohi[#1]{1==S}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \Finale
+%
+\endinput
diff --git a/Master/texmf-dist/source/latex/xymtex/base/hetaromh.ins b/Master/texmf-dist/source/latex/xymtex/base/hetaromh.ins
new file mode 100644
index 00000000000..bb8486a8e4b
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/hetaromh.ins
@@ -0,0 +1,58 @@
+\def\batchfile{hetaromh.ins}
+\input docstrip.tex
+\preamble
+
+This is a generated file.
+
+Copyright 1996,1998,2000,2001,2002, 2004, 2006, 2010, 2013 by Shinsaku Fujita
+all rights reserved.
+This style file is created for drawing chemical structural formulas
+This style file is to be contained in the ``xymtex'' directory which
+is an input directory for TeX.
+
+This file is part of the XyMTeX system.
+=======================================
+
+Old Versions:
+Version 1.01 Released on August 16, 1996
+Version 1.02 Released on October 31, 1996 (private version)
+Version 2.00 Released on December 25, 1998
+Version 2.00a Released on November 11, 2000
+Version 2.01 Released on June 20, 2001 (private version)
+Version 3.00 Released on April 30, 2002
+Version 4.00 Released on May 30, 2002 (private version)
+Version 4.01 Released on August 30, 2004
+Version 4.02 Released on December 20, 2004
+Version 4.03b Released on September 5, 2006
+Version 5.00 Released on October 01, 2010
+
+The Present Version:
+Version 5.01 Released on March 19, 2013
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3
+of this license or (at your option) any later version.
+The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of LaTeX
+version 2005/12/01 or later.
+
+This work has the LPPL maintenance status `maintained'.
+The Current Maintainer of this work is Shinsaku Fujita.
+
+This work consists of the files hetaromh.dtx and hetaromh.ins
+and the derived file hetaromh.sty.
+
+=======================================
+
+\endpreamble
+
+\keepsilent
+
+\generateFile{hetaromh.drv}{t}{%
+ \from{hetaromh.dtx}{driver}}
+
+\generateFile{hetaromh.sty}{t}{%
+ \from{hetaromh.dtx}{hetaromh}}
+
+\endinput
diff --git a/Master/texmf-dist/source/latex/xymtex/base/lewisstruc.dtx b/Master/texmf-dist/source/latex/xymtex/base/lewisstruc.dtx
new file mode 100644
index 00000000000..c09cf229bb1
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/lewisstruc.dtx
@@ -0,0 +1,1242 @@
+% \iffalse meta-comment
+%% File: lewisstruc.dtx
+%
+% Copyright 2009, 2010, 2013 by Shinsaku Fujita
+%
+% This file is part of XyMTeX system.
+% -------------------------------------
+%
+% This file (lewisstruc.sty) is a successor to:
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \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].
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+% The Current Maintainer of this work is Shinsaku Fujita.
+%
+% This work consists of the files lewisstruc.dtx and lewisstruc.ins
+% and the derived file lewisstruc.sty.
+%
+% Please report any bugs, comments, suggestions, etc. to:
+% Shinsaku Fujita,
+% Shonan Institute of Chemoinformatics and Mathematical Chemistry
+% Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun, Kanagawa 250-0019 Japan
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{lewisstruc}
+% \def\versi@ndate{November 03, 2009}
+% \def\versi@nno{ver1.00}
+% \def\copyrighth@lder{SF}% Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{lewisstruc}
+% \def\versi@ndate{October 01, 2010}
+% \def\versi@nno{ver5.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \fi
+%
+% \CheckSum{1697}
+%% \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.00}{2009/11/03}{first edition for LaTeX2e}
+% \changes{v5.00}{2010/10/01}{the LaTeX Project Public License}
+% \changes{v5.01}{2013/08/02}{bug fix}
+% \fi
+%
+% \iffalse
+%<*driver>
+\NeedsTeXFormat{pLaTeX2e}
+% \fi
+\ProvidesFile{lewisstruc.dtx}[2013/08/02 v5.01 lewisstruc package file]
+% \iffalse
+\documentclass{ltxdoc}
+\GetFileInfo{lewisstruc.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{Lewis Structures by {\sffamily lewisstruc.sty}
+(\fileversion) of \XyMTeX{}}
+\author{Shinsaku Fujita \\
+Shonan Institute of Chemoinformatics and
+Mathematical Chemistry \\
+Kanagawa, 258-0019 Japan
+}
+\date{\filedate}
+%
+\begin{document}
+ \maketitle
+ \DocInput{lewisstruc.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \section{Introduction}\label{lewisstruc:intro}
+%
+% \subsection{Options for {\sffamily docstrip}}
+%
+% \DeleteShortVerb{\|}
+% \begin{center}
+% \begin{tabular}{|l|l|}
+% \hline
+% \emph{option} & \emph{function}\\ \hline
+% lewisstruc & lewisstruc.sty \\
+% driver & driver for this dtx file \\
+% \hline
+% \end{tabular}
+% \end{center}
+% \MakeShortVerb{\|}
+%
+% \subsection{Version Information}
+%
+% \begin{macrocode}
+%<*lewisstruc>
+\typeout{Part of XyMTeX for Drawing Chemical Structural Formulas. Version 5.01}
+\typeout{ -- Released August 02, 2013 by Shinsaku Fujita}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\j@urnalname{lewisstruc}
+\def\versi@ndate{August 02, 2013}
+\def\versi@nno{ver5.01}
+\def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\typeout{XyMTeX Macro File `\j@urnalname' (\versi@nno) <\versi@ndate>%
+\space[\copyrighth@lder]}
+% \end{macrocode}
+%
+% The definition of the macro \verb/\LewisTetrahedralA/ uses the command
+% \verb/\tetrahedral/ defined in the \textsf{aliphat} package of
+% the \XyMTeX{} system.
+%
+% \begin{macrocode}
+\RequirePackage{aliphat}
+%\@ifundefined{tetrahedral}{\input aliphat.sty\relax}{}
+% \end{macrocode}
+%
+% \section{Basic Macros}
+% \subsection{Lone Pairs}
+%
+% \begin{macro}{\dotnodimension}
+% A basic command \verb/\dotnodimension/ is used to draw a dot (an electron).
+% \begin{macrocode}
+\def\dotnodimension{\smash{\hbox to0pt{\hss.\hss}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\verticalpair}
+% The command \verb/\verticalpair/ is used to draw a vertical lone pair.
+% \begin{macro}{\horizontalpair}
+% The command \verb/\horizontalpair/ is used to draw a vertical lone pair.
+% \begin{macrocode}
+\def\verticalpair{\vbox{%
+\dotnodimension
+\nointerlineskip
+\kern0.3em
+\dotnodimension}}
+\def\horizontalpair{%
+\hbox{\dotnodimension\kern0.3em\dotnodimension}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\nwlonepair}
+% The command \verb/\nwlonepair/ is used to draw a lone pair located at
+% the northwest position.
+% \begin{macro}{\selonepair}
+% The command \verb/\selonepair/ is used to draw a lone pair at
+% the southest posistion.
+% \begin{macro}{\swlonepair}
+% The command \verb/\swlonepair/ is used to draw a lone pair at
+% the southwest position.
+% \begin{macro}{\nelonepair}
+% The command \verb/\nelonepair/ is used to draw a lone pair at
+% the northeast position.
+% \begin{macrocode}
+\def\nwlonepair{%
+\vtop{\hbox to0.21em{\hss\dotnodimension}%
+\nointerlineskip
+\kern0.21em
+\hbox to0.21em{\dotnodimension\hss}%
+}}
+\def\selonepair{%
+\vbox{\hbox to0.21em{\hss\dotnodimension}%
+\nointerlineskip
+\kern0.21em
+\hbox to0.21em{\dotnodimension\hss}%
+}}
+\def\swlonepair{%
+\vbox{\hbox to0.21em{\dotnodimension\hss}%
+\nointerlineskip
+\kern0.21em
+\hbox to0.21em{\hss\dotnodimension}%
+}}
+\def\nelonepair{%
+\vtop{\hbox to0.21em{\dotnodimension\hss}%
+\nointerlineskip
+\kern0.21em
+\hbox to0.21em{\hss\dotnodimension}%
+}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\LewisSbond}
+% The command \verb/\LewisSbond/ is used to draw a vertical lone pair
+% used in a horizontal position. For example, \verb/H\LewisSbond H/
+% outputs H:H for representing a hydrogen molecule.
+% \begin{macrocode}
+\def\LewisSbond{\raise0.12em\hbox to0.25em{\hss\verticalpair\hss}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\overpair}
+% The command \verb/\overpair/ is used to draw a horizontal lone pair
+% at the head of an atom specified by its argument.
+% \begin{macro}{\underpair}
+% The command \verb/\underpair/ is used to draw a horizontal lone pair
+% under an atom specified by its argument.
+% \begin{macrocode}
+\def\overpair#1{\leavevmode\setbox0=\hbox{#1}%
+\vbox{\hbox to\wd0{\hss\horizontalpair\hss}%
+\nointerlineskip\kern0.08em
+\box0}}
+\def\underpair#1{\leavevmode\setbox0=\hbox{#1}%
+\dimen0=\wd0
+\vbox to\ht0{\box0
+\nointerlineskip
+\hbox{\vbox to0pt{\kern0.2em
+\hbox to\dimen0{\hss\horizontalpair\hss}\vss}}%
+\vss}}%bug fix 2013/08/02 \vss added
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Atoms Linked by a Lewis Bond}
+%
+% An atom (\verb/OverAtom/) which is attached to the top of an atom (\verb/BaseAtom/)
+% through a Lewis bond is drawn by the following \verb/\overpairover/ command.
+%
+% \begin{verbatim}
+% \overpairover{BaseAtom}{OverAtom}
+% \end{verbatim}
+%
+% \begin{macro}{\overpairover}
+% \begin{macrocode}
+\def\overpairover#1#2{\leavevmode\setbox0=\hbox{#1}%
+\edef\temp@@a{#2}%
+\dimen0=\wd0%
+\ifx\temp@@a\empty\box0\else%
+\vbox{%
+\hbox to\dimen0{\hss#2\hss}%
+\nointerlineskip\kern0.2em
+\hbox to\dimen0{\hss\horizontalpair\hss}%
+\nointerlineskip\kern0.08em
+\hbox{\box0}}\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% An atom (\verb/UnderAtom/) which is attached to the bottom of an atom (\verb/BaseAtom/)
+% through a Lewis bond is drawn by the following \verb/\overpairover/ command.
+%
+% \begin{verbatim}
+% \underpairunder{BaseAtom}{UnderAtom}
+% \end{verbatim}
+%
+% \begin{macro}{\underpairunder}
+% \begin{macrocode}
+\def\underpairunder#1#2{\leavevmode\setbox0=\hbox{#1}%
+\edef\temp@@a{#2}%
+\dimen0=\wd0\dimen1=\ht0
+\ifx\temp@@a\empty\box0\else%
+\vbox to\dimen1{\hbox{\box0}%
+\nointerlineskip
+\hbox{\vbox to0pt{\kern0.18em
+\hbox to\dimen0{\hss\horizontalpair\hss}%
+\nointerlineskip\kern0.08em
+\hbox to\dimen0{\hss#2\hss}%
+\vss}}%
+\vss}\fi}%bug fix2013/08/02
+% \end{macrocode}
+% \end{macro}
+%
+%
+% An atom (\verb/NWAtom/) which is attached to the northwest of an atom (\verb/BaseAtom/)
+% through a Lewis bond is drawn by the following \verb/\leftlonepairover/ command.
+%
+% \begin{verbatim}
+% \leftlonepairover{BaseAtom}{NWAtom}
+% \end{verbatim}
+%
+% \begin{macro}{\leftlonepairover}
+% \begin{macrocode}
+\def\leftlonepairover#1#2{\leavevmode%
+\edef\temp@@{#2}%
+\ifx\temp@@\empty#1\else
+\hbox to0pt{\hss\raise0.9em\hbox{#2}\kern-0.05em\raise0.8em\hbox{\nwlonepair}\kern-0.1em}#1\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% An atom (\verb/NEAtom/) which is attached to the northeast of an atom (\verb/BaseAtom/)
+% through a Lewis bond is drawn by the following \verb/\rightlonepairover/ command.
+%
+% \begin{verbatim}
+% \rightlonepairover{BaseAtom}{NEAtom}
+% \end{verbatim}
+%
+% \begin{macro}{\rightlonepairover}
+% \begin{macrocode}
+\def\rightlonepairover#1#2{\leavevmode%
+#1%
+\edef\temp@@{#2}%
+\ifx\temp@@\empty\else
+\hbox to0pt{\kern-0.1em\raise0.8em\hbox{\nelonepair}\kern-0.05em%
+\raise0.9em\hbox{#2}\hss}\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% An atom (\verb/SWAtom/) which is attached to the southwest of an atom (\verb/BaseAtom/)
+% through a Lewis bond is drawn by the following \verb/\leftlonepairunder/ command.
+%
+% \begin{verbatim}
+% \leftlonepairunder{BaseAtom}{NEAtom}
+% \end{verbatim}
+%
+% \begin{macro}{\leftlonepairunder}
+% \begin{macrocode}
+\def\leftlonepairunder#1#2{\leavevmode%
+\edef\temp@@{#2}%
+\ifx\temp@@\empty#1\else
+\hbox to0pt{\hss\lower0.9em\hbox{#2}\kern-0.05em%
+\lower0.2em\hbox{\swlonepair}\kern-0.1em}#1\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% An atom (\verb/SEAtom/) which is attached to the southeast of an atom (\verb/BaseAtom/)
+% through a Lewis bond is drawn by the following \verb/\rightlonepairunder/ command.
+%
+% \begin{verbatim}
+% \rightlonepairunder{BaseAtom}{SEAtom}
+% \end{verbatim}
+%
+% \begin{macro}{\rightlonepairunder}
+% \begin{macrocode}
+\def\rightlonepairunder#1#2{\leavevmode%
+#1%
+\edef\temp@@{#2}%
+\ifx\temp@@\empty\else
+\hbox to0pt{\kern-0.1em\lower0.2em\hbox{\selonepair}\kern-0.05em%
+\lower0.9em\hbox{#2}\hss}\fi}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% Atoms (W, X, Y, and Z) which are attached to a central atom (A)
+% through Lewis bonds are drawn by the following \verb/\LewistetrahedralA/ command.
+%
+% \begin{verbatim}
+% \LewistetrahedralA{0==A;1==W;2==X;3==Y;4==Z}
+% \end{verbatim}
+%
+% \begin{verbatim}
+% 1
+% W
+% :
+% 4 Z : A : X 2
+% :
+% Y
+% 3
+% \end{verbatim}
+%
+% Each of the atoms can be omitted.
+%
+% \begin{macro}{\LewistetrahedralA}
+% \begin{macrocode}
+\def\LewistetrahedralA#1{\begingroup%
+\let\temp@a=\empty%
+\let\temp@b=\empty%
+\let\temp@c=\empty%
+\let\temp@d=\empty%
+\let\temp@e=\empty%
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifx\@memberb\@yl\else
+\ifcase\@tmpa \edef\temp@a{\@memberb}%central atom
+\or\edef\temp@b{\@memberb}%
+\or\edef\temp@c{\@memberb}%
+\or\edef\temp@d{\@memberb}%
+\or\edef\temp@e{\@memberb}%
+\fi%end of ifcase
+\fi\fi
+}%
+\leavevmode%
+\ifx\temp@e\empty
+\ifx\temp@c\empty
+\underpairunder{\overpairover{\temp@a}{\temp@b}}{\temp@d}%
+\else%c not empty
+\underpairunder{\overpairover{\temp@a}{\temp@b}}{\temp@d}%
+\LewisSbond\temp@c
+\fi
+\else%e not empty
+\ifx\temp@c\empty
+\temp@e\LewisSbond\underpairunder{\overpairover{\temp@a}{\temp@b}}{\temp@d}%
+\else
+\temp@e\LewisSbond\underpairunder{\overpairover{\temp@a}{\temp@b}}{\temp@d}%
+\LewisSbond\temp@c
+\fi\fi
+\endgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+% Atoms (W, X, Y, and Z) which are attached to a central atom (A)
+% through Lewis bonds are drawn by the following \verb/\LewistetrahedralB/ command.
+%
+% \begin{verbatim}
+% \LewistetrahedralB{0==A;1==W;2==X;3==Y;4==Z}
+% \end{verbatim}
+%
+% \begin{verbatim}
+%
+% 4 Z W 1
+% : :
+% A
+% : :
+% 3 Y X 2
+%
+% \end{verbatim}
+%
+% Each of the atoms can be omitted.
+%
+% \begin{macro}{\LewistetrahedralB}
+% \begin{macrocode}
+\def\LewistetrahedralB#1{\begingroup%
+\let\temp@a=\empty%
+\let\temp@b=\empty%
+\let\temp@c=\empty%
+\let\temp@d=\empty%
+\let\temp@e=\empty%
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifx\@memberb\@yl\else
+\ifcase\@tmpa \edef\temp@a{\@memberb}%central atom
+\or\edef\temp@b{\@memberb}%
+\or\edef\temp@c{\@memberb}%
+\or\edef\temp@d{\@memberb}%
+\or\edef\temp@e{\@memberb}%
+\fi%end of ifcase
+\fi\fi
+}%
+\leavevmode%
+\rightlonepairover{%
+\leftlonepairover{\leftlonepairunder{%
+\rightlonepairunder{\temp@a}{\temp@c}}{\temp@d}}{\temp@e}}{\temp@b}%
+\endgroup}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Lone Pairs around an Atom}
+%
+% Four lone pairs which are attached to a central atom (A)
+% are drawn by the following \verb/\lonepairAitoiv/ command,
+% where each of the top four argumets takes 0 (absence) or 1 (presence) for
+% representing the absence or presece of a lone pair. The larst argument
+% represents the central atom.
+%
+% \begin{verbatim}
+% \lonepairAitoiv{0 or 1}{0 or 1}{0 or 1}{0 or 1}{A}
+% \end{verbatim}
+%
+% \begin{verbatim}
+% 1
+% :
+% 4 : A : 2
+% :
+% 3
+% \end{verbatim}
+%
+% \begin{macro}{\lonepairAitoiv}
+% \begin{macrocode}
+\def\lonepairAitoiv#1#2#3#4#5{\leavevmode
+\begingroup\setbox0=\hbox{#5}%
+\dimen0=\ht0
+\dimen1=1.22\wd0%
+\setbox1=\hbox to\wd0{\hss%
+\smash{%\raise0.01em
+\hbox to\wd0{\hss%
+\ifnum#4=0\relax
+\phantom{\lower0.05em\hbox to0pt{\hss\vbox to\dimen0{\vss\verticalpair\vss}}}%
+\else
+\lower0.05em\hbox to0pt{\hss\vbox to\dimen0{\vss\verticalpair\vss}}%
+\fi%
+\lower0.2em\hbox{\vbox{\ifnum#1=0\relax
+\phantom{\hbox to\dimen1{\hss\horizontalpair\hss}}%
+\else
+\hbox to\dimen1{\hss\horizontalpair\hss}\fi%
+\nointerlineskip
+\kern0.08em
+\hbox to\dimen1{\hss#5\hss}%
+\nointerlineskip
+\kern0.2em
+\ifnum#3=0\relax
+\phantom{\hbox to\dimen1{\hss\horizontalpair\hss}}%
+\else
+\hbox to\dimen1{\hss\horizontalpair\hss}%
+\fi
+}}%
+\ifnum#2=0\relax
+\phantom{\lower0.05em\hbox to0pt{\vbox to\dimen0{\vss\verticalpair\vss}\hss}}%
+\else
+\lower0.05em\hbox to0pt{\vbox to\dimen0{\vss\verticalpair\vss}\hss}\fi%
+\hss}}\hss}%
+\wd1=\wd0 \ht1=\ht0\box1\endgroup}
+% \end{macrocode}
+% \end{macro}
+%
+% A common code for transforming a command to another command is
+% defined as the command \verb/\fromfourobjects/
+%
+% \begin{macro}{\fromfourobjects}
+% \begin{macrocode}
+\def\fromfourobjects#1#2{%
+\ifnum#1=1234\relax
+\TEMP@Command{1}{1}{1}{1}{#2}%
+\else\ifnum#1=123\relax
+\TEMP@Command{1}{1}{1}{0}{#2}%
+\else\ifnum#1=124\relax
+\TEMP@Command{1}{1}{0}{1}{#2}%
+\else\ifnum#1=134\relax
+\TEMP@Command{1}{0}{1}{1}{#2}%
+\else\ifnum#1=234\relax
+\TEMP@Command{0}{1}{1}{1}{#2}%
+\else\ifnum#1=12\relax
+\TEMP@Command{1}{1}{0}{0}{#2}%
+\else\ifnum#1=13\relax
+\TEMP@Command{1}{0}{1}{0}{#2}%
+\else\ifnum#1=14\relax
+\TEMP@Command{1}{0}{0}{1}{#2}%
+\else\ifnum#1=23\relax
+\TEMP@Command{0}{1}{1}{0}{#2}%
+\else\ifnum#1=24\relax
+\TEMP@Command{0}{1}{0}{1}{#2}%
+\else\ifnum#1=34\relax
+\TEMP@Command{0}{0}{1}{1}{#2}%
+\else\ifnum#1=1\relax
+\TEMP@Command{1}{0}{0}{0}{#2}%
+\else\ifnum#1=2\relax
+\TEMP@Command{0}{1}{0}{0}{#2}%
+\else\ifnum#1=3\relax
+\TEMP@Command{0}{0}{1}{0}{#2}%
+\else\ifnum#1=4\relax
+\TEMP@Command{0}{0}{0}{1}{#2}%
+\else
+\TEMP@Command{1}{1}{1}{1}{#2}%
+\fi\fi\fi\fi\fi
+\fi\fi\fi\fi\fi
+\fi\fi\fi\fi\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% The command \verb/\lonepairAitoiv/ is converted into
+% the command \verb/\lonepairA/, where four lone pairs are
+% specified by a set of numbers 1234, 234, etc as an optional
+% argument. The main argument specifies a central atom.
+%
+% \begin{verbatim}
+% \lonepairA[1234, etc.]{A}
+% \end{verbatim}
+%
+% \begin{verbatim}
+% 1
+% :
+% 4 : A : 2
+% :
+% 3
+% \end{verbatim}
+%
+% \begin{macro}{\lonepairA}
+% \begin{macrocode}
+\def\lonepairA{\@ifnextchar[{\l@nepairA}{\l@nepairA[1234]}}
+\def\l@nepairA[#1]#2{\leavevmode%
+\begingroup\let\TEMP@Command=\lonepairAitoiv%
+\fromfourobjects{#1}{#2}\endgroup}
+% \end{macrocode}
+% \end{macro}
+%
+% Four unpaired electron which are attached to a central atom (A)
+% are drawn by the following \verb/\tetraradical/ command,
+% where each of the top four argumets takes 0 (absence) or 1 (presence) for
+% representing the absence or presece of an unpaired electron. The larst argument
+% represents the central atom.
+%
+% \begin{verbatim}
+% \tetraradical{0 or 1}{0 or 1}{0 or 1}{0 or 1}{A}
+% \end{verbatim}
+%
+% \begin{verbatim}
+% 1
+% .
+% 4 . A . 2
+% .
+% 3
+% \end{verbatim}
+%
+% \begin{macro}{\chemradical}
+% \begin{macro}{\tetraradical}
+% \begin{macrocode}
+\def\chemradical{\hbox to0pt{\hss.\hss}}
+\def\tetraradical#1#2#3#4#5{\leavevmode\setbox0=\hbox{#5}%
+\dimen0=\ht0
+\dimen1=1.22\wd0%
+\setbox1=\hbox to\wd0{\hss%
+\smash{%\raise0.01em
+\hbox to\wd0{\hss%
+\ifnum#4=0\relax
+\phantom{\raise0.02em\hbox to0pt{\hss\vbox to\dimen0{\vss\chemradical\vss}}}%
+\else
+\raise0.02em\hbox to0pt{\hss\vbox to\dimen0{\vss\chemradical\vss}}%
+\fi%
+%\kern0pt
+\lower0.22em\hbox{\vbox{%
+\ifnum#1=0\relax
+\phantom{\hbox to\dimen1{\hss\chemradical\hss}}%
+\else
+\hbox to\dimen1{\hss\chemradical\hss}\fi%
+\nointerlineskip
+\kern0.08em
+\hbox to\dimen1{\hss#5\hss}%
+\nointerlineskip
+%\kern0.2em
+\kern0.12em
+\ifnum#3=0\relax
+\phantom{\hbox to\dimen1{\hss\chemradical\hss}}%
+\else
+\hbox to\dimen1{\hss\chemradical\hss}%
+\fi
+}}%
+%\kern0pt
+\ifnum#2=0\relax
+\phantom{\raise0.02em\hbox to0pt{\vbox to\dimen0{\vss\chemradical\vss}\hss}}%
+\else
+\raise0.02em\hbox to0pt{\vbox to\dimen0{\vss\chemradical\vss}\hss}\fi%
+\hss}}\hss}%
+\wd1=\wd0 \ht1=\ht0\box1}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The command \verb/\tetraradical/ is converted into
+% the command \verb/\chemradicalA/, where four unpaired electrons are
+% specified by a set of numbers 1234, 234, etc. as an optional
+% argument. The main argument specifies a central atom.
+%
+% \begin{verbatim}
+% \chemradicalA[1234, etc.]{A}
+% \end{verbatim}
+%
+% \begin{verbatim}
+% 1
+% .
+% 4 . A . 2
+% .
+% 3
+% \end{verbatim}
+%
+% \begin{macro}{\chemradicalA}
+% \begin{macrocode}
+\def\chemradicalA{\@ifnextchar[{\chemr@dicalA}{\chemr@dicalA[1234]}}
+\def\chemr@dicalA[#1]#2{\leavevmode
+\begingroup\let\TEMP@Command=\tetraradical%
+\fromfourobjects{#1}{#2}\endgroup}
+% \end{macrocode}
+% \end{macro}
+%
+% Four lone pairs which are attached to a central atom (A) in another mode
+% are drawn by the following \verb/\lonepairBitoiv/ command,
+% where each of the top four argumets takes 0 (absence) or 1 (presence) for
+% representing the absence or presece of a lone pair. The larst argument
+% represents the central atom.
+%
+% \begin{verbatim}
+% \lonepairBitoiv{0 or 1}{0 or 1}{0 or 1}{0 or 1}{A}
+% \end{verbatim}
+%
+% \begin{verbatim}
+% 4 1
+% : :
+% A
+% : :
+% 3 2
+% \end{verbatim}
+%
+% \begin{macro}{\lonepairBitoiv}
+% \begin{macrocode}
+\def\lonepairBitoiv#1#2#3#4#5{\begingroup\setbox0=\hbox{#5}%
+\dimen0=\ht0 \dimen1=1.22\wd0%
+\setbox1=\hbox to\wd0{\hss%
+\smash{\lower0.04em\hbox to0pt{%
+\hss\vbox to\dimen0{\vss%
+\ifnum#4=0\relax \phantom{\nwlonepair}\else
+\nwlonepair\fi%
+\nointerlineskip
+\kern0.45em
+\ifnum#3=0\relax \phantom{\swlonepair}\else
+\swlonepair\fi
+\vss}\kern-0.2em}%
+\hbox to\dimen1{\hss#5\hss}%
+\lower0.04em\hbox to0pt{\kern-0.22em%
+\vbox to\dimen0{\vss%
+\ifnum#1=0\relax \phantom{\nelonepair}\else
+\nelonepair\fi%
+\nointerlineskip
+\kern0.45em
+\ifnum#2=0\relax \phantom{\selonepair}\else
+\selonepair\fi\vss}\hss}%
+}\hss}%
+\ht1=\ht0\box1\endgroup}
+% \end{macrocode}
+% \end{macro}
+%
+% The command \verb/\lonepairBitoiv/ is converted into
+% the command \verb/\lonepairB/, where four lone pairs are
+% specified by a set of numbers 1234, 234, etc as an optional
+% argument. The main argument specifies a central atom.
+%
+% \begin{verbatim}
+% \lonepairB[1234, etc.]{A}
+% \end{verbatim}
+%
+% \begin{verbatim}
+% 4 1
+% : :
+% A
+% : :
+% 3 2
+% \end{verbatim}
+%
+% \begin{macro}{\lonepairB}
+% \begin{macrocode}
+\def\lonepairB{\@ifnextchar[{\l@nepairB}{\l@nepairB[1234]}}
+\def\l@nepairB[#1]#2{\leavevmode%
+\begingroup\let\TEMP@Command=\lonepairBitoiv%
+\fromfourobjects{#1}{#2}\endgroup}
+% \end{macrocode}
+% \end{macro}
+%
+% Four unpaired electron which are attached to a central atom (A) in an alternative mode
+% are drawn by the following \verb/\tetraradicalB/ command,
+% where each of the top four argumets takes 0 (absence) or 1 (presence) for
+% representing the absence or presece of an unpaired electron. The larst argument
+% represents the central atom.
+%
+% \begin{verbatim}
+% \tetraradicalB{0 or 1}{0 or 1}{0 or 1}{0 or 1}{A}
+% \end{verbatim}
+%
+% \begin{verbatim}
+% 4 1
+% . .
+% A
+% . .
+% 3 2
+% \end{verbatim}
+%
+% \begin{macro}{\tetraradicalB}
+% \begin{macrocode}
+\def\tetraradicalB#1#2#3#4#5{\setbox0=\hbox{#5}%
+\dimen0=\ht0 \dimen1=1.22\wd0%
+\setbox1=\hbox to\wd0{\hss%
+\smash{\lower0.009em\hbox to0pt{%
+\hss\vbox to\dimen0{\vss%
+\ifnum#4=0\relax \phantom{\chemradical}\else
+\chemradical\fi%
+\nointerlineskip
+\kern0.7em
+\ifnum#3=0\relax \phantom{\chemradical}\else
+\chemradical\fi
+\vss}\kern-0.05em}%
+\hbox to\dimen1{\hss#5\hss}%
+\lower0.009em\hbox to0pt{\kern-0.05em%
+\vbox to\dimen0{\vss%
+\ifnum#1=0\relax \phantom{\chemradical}\else
+\chemradical\fi%
+\nointerlineskip
+\kern0.7em
+\ifnum#2=0\relax \phantom{\chemradical}\else
+\chemradical\fi\vss}\hss}%
+}\hss}%
+\ht1=\ht0\box1}
+% \end{macrocode}
+% \end{macro}
+%
+% The command \verb/\tetraradicalB/ is converted into
+% the command \verb/\chemradicalB/, where four unpaired electrons are
+% specified by a set of numbers 1234, 234, etc. as an optional
+% argument. The main argument specifies a central atom.
+%
+% \begin{verbatim}
+% \chemradicalB[1234, etc.]{A}
+% \end{verbatim}
+%
+% \begin{verbatim}
+% 4 1
+% . .
+% A
+% . .
+% 3 2
+% \end{verbatim}
+%
+% \begin{macro}{\chemradicalA}
+% \begin{macrocode}
+\def\chemradicalB{\@ifnextchar[{\chemr@dicalB}{\chemr@dicalB[1234]}}
+\def\chemr@dicalB[#1]#2{\leavevmode
+\begingroup\let\TEMP@Command=\tetraradicalB%
+\fromfourobjects{#1}{#2}\endgroup}
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Macros for Nested Structures}
+%
+% The macro \verb/\LewisTetrahedralA/ is defined as an extension of
+% \verb/\LewistetrahedralA/, where it supports a nestec structures.
+% As a basic function of \verb/\LewisTetrahedralA/,
+% atoms (W, X, Y, and Z) which are attached to a central atom (A)
+% through Lewis bonds are drawn by the following \verb/\LewisTetrahedralA/ command.
+%
+% \begin{verbatim}
+% \LewisTetrahedralA{0==A;1==W;2==X;3==Y;4==Z}
+% \end{verbatim}
+%
+% \begin{verbatim}
+% 1
+% W
+% :
+% 4 Z : A : X 2
+% :
+% Y
+% 3
+% \end{verbatim}
+%
+% Each of the atoms can be omitted. The argument of
+% of the macro \verb/\LewisTetrahedralA/ can accommodate a so-called (yl)-function,
+% which can draw a nested structure.
+%
+% \begin{macro}{\LewisTetrahedralA}
+% This macro is based on the definition of the macro \verb/\tetrahedral/
+% defined in the \textsf{aliphat} package.
+% \begin{macrocode}
+\def\LewisTetrahedralA{%
+\@ifnextchar[{\@LewisTetrahedralA[r}{\@LewisTetrahedralA[r]}}
+\def\@LewisTetrahedralA#1]#2{%
+\@ifnextchar<{\@@LewisTetrahedralA#1]{#2}}{\@@LewisTetrahedralA#1]{#2}<,,,>}}
+\def\@@LewisTetrahedralA#1]#2<#3,#4,#5,#6>{%
+\begingroup
+\let\Northbond=\Northlonepair
+\let\Southbond=\Southlonepair
+\let\Eastbond=\Eastlonepair
+\let\Westbond=\Westlonepair
+\let\yltetrahedralposition=\ylLewisTetrahedralAposition
+\@@tetrahedral#1]#2<#3,#4,#5,#6>%
+\endgroup
+\West@bondfalse
+\East@bondfalse
+}%end of macro LewisTetrahedralA
+% \end{macrocode}
+% \end{macro}
+%
+% Note that the innermacros \verb/\Northbond/ etc.\ used in the definition of \verb/\tetrahedral/
+% are replaced by \verb/\Northlonepair/ etc.
+%
+% \begin{macro}{\Northlonepair}
+% \begin{macrocode}
+\def\Northlonepair{%
+\@ifnextchar[{\N@rthlonepair}{\N@rthlonepair[]}}
+\def\N@rthlonepair[#1]{%
+ \if\@tmpb D\relax%
+ \put(0,60){\hbox to0pt{\hss\horizontalpair\hss}}%
+ \put(0,90){\hbox to0pt{\hss\horizontalpair\hss}}%
+ \putlratom{-40}{120}{\@memberb}%==1 upper substituent
+ \else\if\@tmpb T\relax%
+ \put(0,60){\hbox to0pt{\hss\horizontalpair\hss}}%
+ \put(0,90){\hbox to0pt{\hss\horizontalpair\hss}}%
+ \put(0,120){\hbox to0pt{\hss\horizontalpair\hss}}%
+ \putlratom{-40}{150}{\@memberb}%==1 upper substituent
+ \else\if\@tmpb N\relax%normal single bond
+ \Put@Line(0,52)(0,1){110}%
+ \putlratom{-40}{171}{\@memberb}%==1 upper substituent
+ \else
+ \put(0,60){\hbox to0pt{\hss\horizontalpair\hss}}%
+ \putlratom{-40}{90}{\@memberb}%==1 upper substituent
+ \fi\fi\fi%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Southlonepair}
+% \begin{macrocode}
+\def\Southlonepair{%
+\@ifnextchar[{\S@uthlonepair}{\S@uthlonepair[]}}
+\def\S@uthlonepair[#1]{%
+ \if\@tmpb D\relax%
+ \put(0,-60){\hbox to0pt{\hss\horizontalpair\hss}}%
+ \put(0,-90){\hbox to0pt{\hss\horizontalpair\hss}}%
+ \putlratom{-40}{-180}{\@memberb}%==3 down substituent
+ \else\if\@tmpb T\relax%
+ \put(0,-60){\hbox to0pt{\hss\horizontalpair\hss}}%
+ \put(0,-90){\hbox to0pt{\hss\horizontalpair\hss}}%
+ \put(0,-120){\hbox to0pt{\hss\horizontalpair\hss}}%
+ \putlratom{-40}{-210}{\@memberb}%==3 down substituent
+ \else\if\@tmpb N\relax%normal single bond
+ \Put@Line(0,-48)(0,-1){110}%
+ \putlratom{-40}{-250}{\@memberb}%==1 upper substituent
+ \else
+ \put(0,-60){\hbox to0pt{\hss\horizontalpair\hss}}%
+ \putlratom{-40}{-150}{\@memberb}%==3 down substituent
+ \fi\fi\fi%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Eastlonepair}
+% \begin{macrocode}
+\def\Eastlonepair{%
+\@ifnextchar[{\E@stlonepair}{\E@stlonepair[]}}
+\def\E@stlonepair[#1]{%
+ \if\@tmpb D\relax%
+ \put(60,-18){\hbox to0pt{\hss\verticalpair\hss}}%
+ \put(90,-18){\hbox to0pt{\hss\verticalpair\hss}}%
+ \putratom{120}{-33}{\@memberb}%==3 down substituent
+ \else\if\@tmpb T\relax%
+ \put(60,-18){\hbox to0pt{\hss\verticalpair\hss}}%
+ \put(90,-18){\hbox to0pt{\hss\verticalpair\hss}}%
+ \put(120,-18){\hbox to0pt{\hss\verticalpair\hss}}%
+ \putratom{150}{-33}{\@memberb}%==3 down substituent
+ \else\if\@tmpb N\relax%normal single bond
+ \Put@Line(50,0)(1,0){140}%
+ \putratom{190}{-33}{\@memberb}%==1 upper substituent
+ \else
+ \put(60,-18){\hbox to0pt{\hss\verticalpair\hss}}%
+ \putratom{90}{-33}{\@memberb}%==3 down substituent
+ \fi\fi\fi%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Westlonepair}
+% \begin{macrocode}
+\def\Westlonepair{%
+\@ifnextchar[{\W@stlonepair}{\W@stlonepair[]}}
+\def\W@stlonepair[#1]{%
+ \if\@tmpb D\relax%
+ \put(-65,-18){\hbox to0pt{\hss\verticalpair\hss}}%
+ \put(-95,-18){\hbox to0pt{\hss\verticalpair\hss}}%
+ \putlatom{-120}{-33}{\@memberb}%==3 down substituent
+ \else\if\@tmpb T\relax%
+ \put(-65,-18){\hbox to0pt{\hss\verticalpair\hss}}%
+ \put(-95,-18){\hbox to0pt{\hss\verticalpair\hss}}%
+ \put(-125,-18){\hbox to0pt{\hss\verticalpair\hss}}%
+ \putlatom{-150}{-33}{\@memberb}%==3 down substituent
+ \else\if\@tmpb N\relax%normal single bond
+ \Put@Line(-50,0)(-1,0){140}%
+ \putlatom{-190}{-33}{\@memberb}%==1 upper substituent
+ \else
+ \put(-65,-18){\hbox to0pt{\hss\verticalpair\hss}}%
+ \putlatom{-90}{-33}{\@memberb}%==3 down substituent
+ \fi\fi\fi%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% The macro \verb/\LewisTetrahedralA/ supports a (yl)-function, which
+% is based on the x,y-adjustment due to the \verb/\ylLewisTetrahedralAposition/,
+% which is defined in a similar way to \verb/\yltetrahedralposition/ used in
+% the definition of the macro \verb/\tetrahedral/. The original values are
+% left as commented lines in order to compare with the \textsf{aliphat} package
+% of the \XyMTeX{} system.
+%
+% \begin{macro}{\ylLewisTetrahedralAposition}
+% \begin{macrocode}
+\def\ylLewisTetrahedralAposition#1{%
+\@@ylswfalse%%%\@reset@ylsw
+\West@bondfalse
+\East@bondfalse
+\@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%1
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%N subst. on 1
+ \else%
+% \gdef\@ylii{0}\gdef\@yli{-52}\global\@ylswtrue%N subst. on 1
+ \gdef\@ylii{45}\gdef\@yli{33}\global\@ylswtrue%N subst. on 1
+ \fi%
+ \or%2
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%
+ \else%
+% \gdef\@ylii{52}\gdef\@yli{0}\global\@ylswtrue%
+ \gdef\@ylii{40}\gdef\@yli{30}\global\@ylswtrue%
+ \fi%
+ \East@bondtrue%W subst. on 1
+ \or%3
+ \ifno@centeratom%
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%S subst. on 1
+ \else%
+% \gdef\@ylii{0}\gdef\@yli{52}\global\@ylswtrue%S subst. on 1
+ \gdef\@ylii{35}\gdef\@yli{40}\global\@ylswtrue%S subst. on 1
+ \fi%
+ \or%4
+ \ifno@centeratom%
+ \gdef\@ylii{-72}\gdef\@yli{0}\global\@ylswtrue%??????
+ \else%
+% \gdef\@ylii{-52}\gdef\@yli{0}\global\@ylswtrue%
+ \gdef\@ylii{-40}\gdef\@yli{32}\global\@ylswtrue%
+ \fi%
+ \West@bondtrue%E subst. on 1
+\fi%end of ifcase
+\fi\fi\fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% The macro \verb/\LewisTetrahedralB/ is defined as an extension of
+% \verb/\LewistetrahedralB/, where it supports a nestec structures.
+% As a basic function of \verb/\LewisTetrahedralB/,
+% atoms (W, X, Y, and Z) which are attached to a central atom (A)
+% through Lewis bonds are drawn by the following \verb/\LewisTetrahedralB/ command.
+%
+% \begin{verbatim}
+% \LewisteTrahedralB{0==A;1==W;2==X;3==Y;4==Z}
+% \end{verbatim}
+%
+% \begin{verbatim}
+%
+% 4 Z W 1
+% : :
+% A
+% : :
+% 3 Y X 2
+%
+% \end{verbatim}
+%
+% Each of the atoms can be omitted.
+%
+% \begin{macro}{\LewisTetrahedralB}
+% \begin{macrocode}
+\def\LewisTetrahedralB{%
+\@ifnextchar[{\@LewisTetrahedralB[r}{\@LewisTetrahedralB[r]}}
+\def\@LewisTetrahedralB#1]#2{%
+\begingroup
+\let\NEbond=\NEbondlonepair
+\let\SEbond=\SEbondlonepair
+\let\SWbond=\SWbondlonepair
+\let\NWbond=\NWbondlonepair
+\let\ylsquareposition=\ylLewisTetrahedralBposition
+\@squareplanar#1]{#2}%
+\endgroup
+}%end of macro LewisTetrahedralB
+% \end{macrocode}
+% \end{macro}
+%
+% Note that the inner macros \verb/\NEbond/ etc.\ used in the definition of \verb/\squareplanar/
+% are replaced by \verb/\NEbondlonepair/ etc.
+%
+% \begin{macro}{\NEbondlonepair}
+% \begin{macrocode}
+\def\NEbondlonepair{%
+\begin{sfpicture}(100,300)(0,0)%
+ \if\@tmpb D\relax%
+ \put(50,50){\hbox to0pt{\hss\nelonepair\hss}}%
+ \put(75,75){\hbox to0pt{\hss\nelonepair\hss}}%
+ \putratom{90}{82}{\@memberb}%==1 northeast substituent
+ \else\if\@tmpb T\relax%
+ \put(50,50){\hbox to0pt{\hss\nelonepair\hss}}%
+ \put(75,75){\hbox to0pt{\hss\nelonepair\hss}}%
+ \put(100,100){\hbox to0pt{\hss\nelonepair\hss}}%
+ \putratom{115}{107}{\@memberb}%==1 northeast substituent
+ \else\if\@tmpb N\relax%normal single bond
+ \Put@Line(40,47)(1,1){95}%
+ \putratom{145}{137}{\@memberb}%==1 (northeast substituent)
+ \else
+ \put(50,50){\hbox to0pt{\hss\nelonepair\hss}}%
+ \putratom{65}{57}{\@memberb}%==1 northeast substituent
+ \fi\fi\fi%
+\end{sfpicture}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\SEbondlonepair}
+% \begin{macrocode}
+\def\SEbondlonepair{%
+\begin{sfpicture}(100,300)(0,0)%
+ \if\@tmpb D\relax%
+ \put(50,-50){\hbox to0pt{\hss\selonepair\hss}}%
+ \put(75,-75){\hbox to0pt{\hss\selonepair\hss}}%
+ \putratom{90}{-148}{\@memberb}%==2 southeast substituent
+ \else\if\@tmpb T\relax%
+ \put(50,-50){\hbox to0pt{\hss\selonepair\hss}}%
+ \put(75,-75){\hbox to0pt{\hss\selonepair\hss}}%
+ \put(100,-100){\hbox to0pt{\hss\selonepair\hss}}%
+ \putratom{115}{-173}{\@memberb}%==2 southeast substituent
+ \else\if\@tmpb N\relax%normal single bond
+ \Put@Line(40,-47)(1,-1){95}%
+ \putratom{145}{-203}{\@memberb}%==2 (southeast substituent)
+ \else
+ \put(50,-50){\hbox to0pt{\hss\selonepair\hss}}%
+ \putratom{65}{-123}{\@memberb}%==2 southeast substituent
+ \fi\fi\fi%
+\end{sfpicture}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\SWbondlonepair}
+% \begin{macrocode}
+\def\SWbondlonepair{%
+\begin{sfpicture}(100,300)(0,0)%
+ \if\@tmpb D\relax%
+ \put(-50,-50){\hbox to0pt{\hss\swlonepair\hss}}%
+ \put(-75,-75){\hbox to0pt{\hss\swlonepair\hss}}%
+ \putlatom{-90}{-148}{\@memberb}%==3 southeast substituent
+ \else\if\@tmpb T\relax%
+ \put(-50,-50){\hbox to0pt{\hss\swlonepair\hss}}%
+ \put(-75,-75){\hbox to0pt{\hss\swlonepair\hss}}%
+ \put(-100,-100){\hbox to0pt{\hss\swlonepair\hss}}%
+ \putlatom{-115}{-173}{\@memberb}%==3 southeast substituent
+ \else\if\@tmpb N\relax%normal single bond
+ \Put@Line(-50,-47)(-1,-1){95}%
+ \putlatom{-163}{-203}{\@memberb}%==3 (southwest substituent)
+ \else
+ \put(-50,-50){\hbox to0pt{\hss\swlonepair\hss}}%
+ \putlatom{-65}{-123}{\@memberb}%==3 southeast substituent
+ \fi\fi\fi%
+\end{sfpicture}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\NWbondlonepair}
+% \begin{macrocode}
+\def\NWbondlonepair{%
+\begin{sfpicture}(100,300)(0,0)%
+ \if\@tmpb D\relax%
+ \put(-50,50){\hbox to0pt{\hss\nwlonepair\hss}}%
+ \put(-75,75){\hbox to0pt{\hss\nwlonepair\hss}}%
+ \putlatom{-90}{82}{\@memberb}%==4 northwest substituent
+ \else\if\@tmpb T\relax%
+ \put(-50,50){\hbox to0pt{\hss\nwlonepair\hss}}%
+ \put(-75,75){\hbox to0pt{\hss\nwlonepair\hss}}%
+ \put(-100,100){\hbox to0pt{\hss\nwlonepair\hss}}%
+ \putlatom{-115}{107}{\@memberb}%==4 northwest substituent
+ \else\if\@tmpb N\relax%normal single bond
+ \Put@Line(-40,47)(-1,1){95}%
+ \putlatom{-145}{137}{\@memberb}%==4 (northwest substituent)
+ \else
+ \put(-50,50){\hbox to0pt{\hss\nwlonepair\hss}}%
+ \putlatom{-65}{57}{\@memberb}%==1 northwest substituent
+ \fi\fi\fi%
+\end{sfpicture}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% The macro \verb/\LewisTetrahedralB/ supports a (yl)-function, which
+% is based on the x,y-adjustment due to the \verb/\ylLewisTetrahedralBposition/,
+% which is defined in a similar way to \verb/\ylsquareposition/ used in
+% the definition of the macro \verb/\squaraplanar/ (renamed from \verb/\square/).
+% The original values are left as commented lines in order to compare
+% with the \textsf{aliphat} package of the \XyMTeX{} system.
+%
+% \begin{macro}{\ylLewisTetrahedralBposition}
+% \begin{macrocode}
+\def\ylLewisTetrahedralBposition#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
+ \gdef\@ylii{-28}\gdef\@yli{40}\global\@ylswtrue% NE subst. on 1
+ \or%2
+% \gdef\@ylii{-40}\gdef\@yli{47}\global\@ylswtrue% SE subst. on 2
+ \gdef\@ylii{-28}\gdef\@yli{35}\global\@ylswtrue% SE subst. on 2
+ \or%3
+% \gdef\@ylii{50}\gdef\@yli{47}\global\@ylswtrue% SW subst. on 3
+ \gdef\@ylii{35}\gdef\@yli{22}\global\@ylswtrue% SW subst. on 3
+ \or%4
+% \gdef\@ylii{50}\gdef\@yli{-47}\global\@ylswtrue% NW subst. on 4
+ \gdef\@ylii{35}\gdef\@yli{40}\global\@ylswtrue% NW subst. on 4
+\fi%end of ifcase
+\fi\fi\fi}}%
+\endinput
+%</lewisstruc>
+% \end{macrocode}
+% \end{macro}
+%
+% \Finale
+%
+\endinput
diff --git a/Master/texmf-dist/source/latex/xymtex/base/lewisstruc.ins b/Master/texmf-dist/source/latex/xymtex/base/lewisstruc.ins
new file mode 100644
index 00000000000..96723624e70
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/lewisstruc.ins
@@ -0,0 +1,48 @@
+\def\batchfile{lewisstruc.ins}
+\input docstrip.tex
+\preamble
+
+This is a generated file.
+
+Copyright 2009,2010,2013 by Shinsaku Fujita
+all rights reserved.
+This style file is created for drawing chemical structural formulas
+This style file is to be contained in the ``xymtex'' directory which
+is an input directory for TeX.
+
+This file is part of the XyMTeX system.
+=======================================
+Old Versions:
+Version 1.00 Released on November 03, 2009
+Version 5.00 Released on October 01, 2010
+
+The Present Version:
+Version 5.01 Released on August 02, 2013
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3
+of this license or (at your option) any later version.
+The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of LaTeX
+version 2005/12/01 or later.
+
+This work has the LPPL maintenance status `maintained'.
+The Current Maintainer of this work is Shinsaku Fujita.
+
+This work consists of the files lewisstruc.dtx and lewisstruc.ins
+and the derived file lewisstruc.sty.
+
+=======================================
+
+\endpreamble
+
+\keepsilent
+
+\generateFile{lewisstruc.drv}{t}{%
+ \from{lewisstruc.dtx}{driver}}
+
+\generateFile{lewisstruc.sty}{t}{%
+ \from{lewisstruc.dtx}{lewisstruc}}
+
+\endinput
diff --git a/Master/texmf-dist/source/latex/xymtex/base/locant.dtx b/Master/texmf-dist/source/latex/xymtex/base/locant.dtx
new file mode 100644
index 00000000000..4f19a5c4c79
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/locant.dtx
@@ -0,0 +1,343 @@
+% \iffalse meta-comment
+%% File: locant.dtx
+%
+% Copyright 1993,1996,2001,2002, 2004, 2010 by Shinsaku Fujita
+%
+% This file is part of XyMTeX system.
+% -------------------------------------
+%
+% This file is a successor to:
+%
+% locant.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].
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+% The Current Maintainer of this work is Shinsaku Fujita.
+%
+% This work consists of the files locant.dtx and locant.ins
+% and the derived file locant.sty.
+%
+% Please report any bugs, comments, suggestions, etc. to:
+% Shinsaku Fujita,
+% Shonan Institute of Chemoinformatics and Mathematical Chemistry
+% Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun, Kanagawa 250-0019 Japan
+% (old address)
+% Ashigara Research Laboratories, Fuji Photo Film Co., Ltd.,
+% Minami-Ashigara, Kanagawa-ken, 250-01, Japan.
+% (old address)
+% Department of Chemistry and Materials Technology,
+% Kyoto Institute of Technology, \\
+% Matsugasaki, Sakyoku, Kyoto, 606 Japan
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{locant}
+% \def\versi@ndate{December 01, 1993}
+% \def\versi@nno{ver1.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{locant}
+% \def\versi@ndate{August 16, 1996}
+% \def\versi@nno{ver1.01}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{locant}
+% \def\versi@ndate{June 20, 2001}
+% \def\versi@nno{ver2.01}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{locant}
+% \def\versi@ndate{April 30, 2002}
+% \def\versi@nno{ver3.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{locant}
+% \def\versi@ndate{May 30, 2002}
+% \def\versi@nno{ver4.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{locant}
+% \def\versi@ndate{August 30, 2004}
+% \def\versi@nno{ver4.01}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \fi
+%
+% \CheckSum{136}
+%% \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{v2.01}{2001/06/20}{Size reduction and Clip information}
+% \changes{v3.00}{2002/04/30}{sfpicture environment etc.}
+% \changes{v4.00}{2002/05/30}{PostScript output and ShiftPicEnv}
+% \changes{v4.01}{2004/08/30}{Minor additions}
+% \changes{v5.00}{2010/10/01}{the LaTeX Project Public License}
+% \fi
+%
+% \iffalse
+%<*driver>
+\NeedsTeXFormat{pLaTeX2e}
+% \fi
+\ProvidesFile{locant.dtx}[2010/10/01 v5.00 XyMTeX{} package file]
+% \iffalse
+\documentclass{ltxdoc}
+\GetFileInfo{locant.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{Setting locant numbers by {\sffamily locant.sty}
+(\fileversion) of \XyMTeX{}}
+\author{Shinsaku Fujita \\
+Shonan Institute of Chemoinformatics and Mathematical Chemistry, \\
+Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun, Kanagawa 250-0019 Japan
+% % (old address)
+% %Department of Chemistry and Materials Technology, \\
+% %Kyoto Institute of Technology, \\
+% %Matsugasaki, Sakyoku, Kyoto, 606-8585 Japan
+% %% (old address)
+% %% Ashigara Research Laboratories,
+% %% Fuji Photo Film Co., Ltd., \\
+% %% Minami-Ashigara, Kanagawa, 250-01 Japan
+}
+\date{\filedate}
+%
+\begin{document}
+ \maketitle
+ \DocInput{locant.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \section{Introduction}\label{locant:intro}
+%
+% \subsection{Options for {\sffamily docstrip}}
+%
+% \DeleteShortVerb{\|}
+% \begin{center}
+% \begin{tabular}{|l|l|}
+% \hline
+% \emph{option} & \emph{function}\\ \hline
+% locant & locant.sty \\
+% driver & driver for this dtx file \\
+% \hline
+% \end{tabular}
+% \end{center}
+% \MakeShortVerb{\|}
+%
+% \subsection{Version Information}
+%
+% \begin{macrocode}
+%<*locant>
+\typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 5.00}
+\typeout{ -- Released October 01, 2010 by Shinsaku Fujita}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\j@urnalname{locant}
+\def\versi@ndate{October 01, 2010}
+\def\versi@nno{ver4.00}
+\def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\typeout{XyMTeX Macro File `\j@urnalname' (\versi@nno) <\versi@ndate>%
+\space[\copyrighth@lder]}
+% \end{macrocode}
+%
+% \section{Macros for designating locant numbers}
+%
+% \subsection{Font Size of Locant Numbers}
+% \changes{v2.01}{2001/06/20}{New command: \cs{locantnumsize}}
+%
+% To change the font size of locant numbers, we can use
+% |\locantnumsize|, into which a size command (|\scriptsize| etc.)
+% is introduced by using the |\let| command.
+% The default setting is |\scriptsize| as follows:
+%
+% \begin{macro}{\locantnumsize}
+% \begin{macrocode}
+\let\locantnumsize=\scriptsize
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Bond indicators for vertical formulas}
+%
+% \begin{macro}{\dbloocant}
+% \begin{macro}{\dblocant}
+% The macro |\dbloocant| is used to designate six edges (inner double bonds)
+% of a six-membered ring. Any character can be asigned to the respective
+% bond.
+% The macro |\dblocant| provides a fixed set of aliphabetical charactors
+% on the six edges.
+% \changes{v2.01}{2001/06/20}{The domain of a picture environment
+% has been changed from (800,880) to (0,0).}
+% \begin{macrocode}
+\def\bdloocant#1#2#3#4#5#6{%
+%\begin{sfpicture}(800,880)(-\shiftii,-\shifti)
+\begin{sfpicture}(0,0)(-\shiftii,-\shifti)
+\putratom{90}{380}{\locantnumsize #1}%
+\putratom{200}{180}{\locantnumsize #2}%
+\putratom{90}{-20}{\locantnumsize #3}%
+\putlatom{-90}{380}{\locantnumsize #6}%
+\putlatom{-200}{180}{\locantnumsize #5}%
+\putlatom{-90}{-20}{\locantnumsize #4}%
+\end{sfpicture}}%
+\def\bdlocant{\bdloocant{a}{b}{c}{d}{e}{f}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Atom indicators for vertical formulas}
+% \begin{macro}{\sxloocant}
+% \begin{macro}{\sxlocant}
+% The macro |\sxloocant| is used to designate six vertices
+% of a six-membered ring. Any character can be asigned to the respective
+% bond.
+% The macro |\sxlocant| provides a fixed set of arabic numerals
+% on the six edges.
+% \changes{v2.01}{2001/06/20}{The domain of a picture environment
+% has been changed from (800,880) to (0,0).}
+% \begin{macrocode}
+\def\sxloocant#1#2#3#4#5#6{%
+%\begin{sfpicture}(800,880)(-\shiftii,-\shifti)%
+\begin{sfpicture}(0,0)(-\shiftii,-\shifti)%
+\putratom{-10}{340}{\locantnumsize #1}%
+\putlatom{150}{260}{\locantnumsize #2}%
+\putlatom{150}{110}{\locantnumsize #3}%
+\putratom{-10}{40}{\locantnumsize #4}%
+\putratom{-150}{110}{\locantnumsize #5}%
+\putratom{-150}{260}{\locantnumsize #6}%
+\end{sfpicture}}%
+\def\sxlocant{\sxloocant{1}{2}{3}{4}{5}{6}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Bond indicators for horizontal formulas}
+%
+% \begin{macro}{\dbloocanth}
+% \begin{macro}{\dblocanth}
+% The macro |\dbloocanth| is used to designate six edges (inner double bonds)
+% of a horizontal six-membered ring.
+% Any character can be asigned to the respective bond.
+% The macro |\dblocanth| provides a fixed set of aliphabetical charactors
+% on the six edges.
+% \changes{v2.01}{2001/06/20}{The domain of a picture environment
+% has been changed from (800,880) to (0,0).}
+% \begin{macrocode}
+\def\bdloocnth#1#2#3#4#5#6{%
+%\begin{sfpicture}(880,800)(-\shifti,-\shiftii)%
+\begin{sfpicture}(0,0)(-\shifti,-\shiftii)%
+\putlatom{10}{80}{\locantnumsize #1}%
+\putratom{180}{210}{\locantnumsize #2}%
+\putratom{380}{80}{\locantnumsize #3}%
+\putratom{380}{-120}{\locantnumsize #4}%
+\putratom{180}{-260}{\locantnumsize #5}%
+\putlatom{10}{-120}{\locantnumsize #6}%
+\end{sfpicture}}%
+\def\bdlocnth{\bdloocnth{a}{b}{c}{d}{e}{f}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Atom indicators for horizontal formulas}
+% \begin{macro}{\sxloocanth}
+% \begin{macro}{\sixsghlocant}
+% The macro |\sxloocanth| is used to designate six vertices
+% of a horizontal six-membered ring.
+% Any character can be asigned to the respective bond.
+% The macro |\sixsghlocant| provides a fixed set of arabic numerals
+% on the six edges.
+% \changes{v2.01}{2001/06/20}{The domain of a picture environment
+% has been changed from (800,880) to (0,0).}
+% \begin{macrocode}
+\def\sxloocnth#1#2#3#4#5#6{%
+%\begin{sfpicture}(880,800)(-\shifti,-\shiftii)%
+\begin{sfpicture}(0,0)(-\shifti,-\shiftii)%
+\putratom{40}{-20}{\locantnumsize #1}%
+\putratom{110}{100}{\locantnumsize #2}%
+\putlatom{290}{100}{\locantnumsize #3}%
+\putlatom{380}{-20}{\locantnumsize #4}%
+\putratom{110}{-140}{\locantnumsize #6}%
+\putlatom{290}{-140}{\locantnumsize #5}%
+\end{sfpicture}}%
+\def\sxlocnth{\sxloocnth{1}{2}{3}{4}{5}{6}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Locant Numbers for Cyclic Sugars}
+%
+% \changes{v2.01}{2001/06/20}{New command: \cs{sixsugarhlocant}}
+% \begin{macro}{\sixsugarhloocnt}
+% \begin{macro}{\sixsugarhlocant}
+% The macro |\sixsugarhloocnt| is used to designate six vertices
+% of a horizontal six-membered sugar ring.
+% Any character can be asigned to the respective bond.
+% The macro |\sixsugarhlocant| provides a fixed set of arabic numerals
+% on the six edges.
+% \begin{macrocode}
+\def\sixsugarhloocnt#1#2#3#4#5#6{%
+\begin{sfpicture}(0,0)(-\shifti,-\shiftii)%
+\putratom{40}{-20}{\locantnumsize #1}%
+\putratom{120}{125}{\locantnumsize #2}%
+\putlatom{400}{125}{\locantnumsize #3}%
+\putlatom{492}{-20}{\locantnumsize #4}%
+\putratom{120}{-160}{\locantnumsize #6}%
+\putlatom{400}{-160}{\locantnumsize #5}%
+\end{sfpicture}}%
+\def\sixsugarhlocant{\sixsugarhloocnt{4}{5}{6}{1}{2}{3}}
+%</locant>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \Finale
+%
+\endinput
diff --git a/Master/texmf-dist/source/latex/xymtex/base/locant.ins b/Master/texmf-dist/source/latex/xymtex/base/locant.ins
new file mode 100644
index 00000000000..d6c75dca397
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/locant.ins
@@ -0,0 +1,52 @@
+\def\batchfile{locant.ins}
+\input docstrip.tex
+\preamble
+
+This is a generated file.
+
+Copyright 1996, 2001, 2002, 2004, 2010 by Shinsaku Fujita
+all rights reserved.
+This style file is created for drawing chemical structural formulas
+This style file is to be contained in the ``xymtex'' directory which
+is an input directory for TeX.
+
+This file is part of the XyMTeX system.
+=======================================
+
+Old Versins:
+Released on August 16, 1996
+Released on June 20, 2001 (version 2.01) (private version)
+Released on April 30, 2002 (version 3.00)
+Version 4.00 Released on May 30, 2002 (private version)
+Version 4.01 Released on August 30, 2004
+
+The Present Version:
+Version 5.00 Released on October 01, 2010
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3
+of this license or (at your option) any later version.
+The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of LaTeX
+version 2005/12/01 or later.
+
+This work has the LPPL maintenance status `maintained'.
+The Current Maintainer of this work is Shinsaku Fujita.
+
+This work consists of the files locant.dtx and locant.ins
+and the derived file locant.sty.
+
+=======================================
+
+\endpreamble
+
+\keepsilent
+
+\generateFile{locant.drv}{t}{%
+ \from{locant.dtx}{driver}}
+
+\generateFile{locant.sty}{t}{%
+ \from{locant.dtx}{locant}}
+
+\endinput
diff --git a/Master/texmf-dist/source/latex/xymtex/base/lowcycle.dtx b/Master/texmf-dist/source/latex/xymtex/base/lowcycle.dtx
new file mode 100644
index 00000000000..3aac86549ea
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/lowcycle.dtx
@@ -0,0 +1,892 @@
+% \iffalse meta-comment
+%% File: lowcycle.dtx
+%
+% Copyright 1993,1996,1998,2001,2002,2004,2010 by Shinsaku Fujita
+%
+% This file is part of XyMTeX system.
+% -------------------------------------
+%
+% This file is a successor to:
+%
+% lowcycle.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].
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+% The Current Maintainer of this work is Shinsaku Fujita.
+%
+% This work consists of the files lowcycle.dtx and lowcycle.ins
+% and the derived file lowcycle.sty.
+%
+% Please report any bugs, comments, suggestions, etc. to:
+% Shinsaku Fujita,
+% Shonan Institute of Chemoinformatics and Mathematical Chemistry
+% Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun, Kanagawa 250-0019 Japan
+% (old address)
+% Ashigara Research Laboratories, Fuji Photo Film Co., Ltd.,
+% Minami-Ashigara, Kanagawa-ken, 250-01, Japan.
+% (old address)
+% Department of Chemistry and Materials Technology,
+% Kyoto Institute of Technology, \\
+% Matsugasaki, Sakyoku, Kyoto, 606 Japan
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{lowcycle}
+% \def\versi@ndate{December 01, 1993}
+% \def\versi@nno{ver1.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{lowcycle}
+% \def\versi@ndate{August 16, 1996}
+% \def\versi@nno{ver1.01}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{lowcycle}
+% \def\versi@ndate{October 31, 1998}
+% \def\versi@nno{ver1.02}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{lowcycle}
+% \def\versi@ndate{December 25, 1998}
+% \def\versi@nno{ver2.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{lowcycle}
+% \def\versi@ndate{June 20, 2001}
+% \def\versi@nno{ver2.01}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{lowcycle}
+% \def\versi@ndate{April 30, 2002}
+% \def\versi@nno{ver3.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{lowcycle}
+% \def\versi@ndate{May 30, 2002}
+% \def\versi@nno{ver4.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{lowcycle}
+% \def\versi@ndate{August 30, 2004}
+% \def\versi@nno{ver4.01}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \fi
+%
+% \CheckSum{175}
+%% \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}
+% \changes{v2.01}{2001/6/20}{Size reduction and Clip information}
+% \changes{v3.00}{2002/4/30}{sfpicture environment, etc.}
+% \changes{v4.00}{2002/05/30}{PostScript output and ShiftPicEnv}
+% \changes{v4.01}{2004/08/30}{Minor additions}
+% \changes{v5.00}{2010/10/01}{the LaTeX Project Public License}
+% \fi
+%
+% \iffalse
+%<*driver>
+\NeedsTeXFormat{pLaTeX2e}
+% \fi
+\ProvidesFile{lowcycle.dtx}[2010/10/01 v5.00 XyMTeX{} package file]
+% \iffalse
+\documentclass{ltxdoc}
+\GetFileInfo{lowcycle.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{Lower carbocyclic compounds by {\sffamily lowcycle.sty}
+(\fileversion) of \XyMTeX{}}
+\author{Shinsaku Fujita \\
+Shonan Institute of Chemoinformatics and Mathematical Chemistry, \\
+Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun, Kanagawa 250-0019 Japan
+% % (old address)
+% %Department of Chemistry and Materials Technology, \\
+% %Kyoto Institute of Technology, \\
+% %Matsugasaki, Sakyoku, Kyoto, 606-8585 Japan
+% %% (old address)
+% %% Ashigara Research Laboratories,
+% %% Fuji Photo Film Co., Ltd., \\
+% %% Minami-Ashigara, Kanagawa, 250-01 Japan
+}
+\date{\filedate}
+%
+\begin{document}
+ \maketitle
+ \DocInput{lowcycle.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \section{Introduction}\label{lowcycle:intro}
+%
+% \subsection{Options for {\sffamily docstrip}}
+%
+% \DeleteShortVerb{\|}
+% \begin{center}
+% \begin{tabular}{|l|l|}
+% \hline
+% \emph{option} & \emph{function}\\ \hline
+% lowcycle & lowcycle.sty \\
+% driver & driver for this dtx file \\
+% \hline
+% \end{tabular}
+% \end{center}
+% \MakeShortVerb{\|}
+%
+% \subsection{Version Information}
+%
+% \begin{macrocode}
+%<*lowcycle>
+\typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 5.00}
+\typeout{ -- Released October 01, 2010 by Shinsaku Fujita}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\j@urnalname{lowcycle}
+\def\versi@ndate{October 01, 2010}
+\def\versi@nno{ver5.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 lowcycle.sty}
+%
+% \begin{verbatim}
+% **********************************
+% * lowcycle.sty: list of commands *
+% **********************************
+%
+% \cyclopentanev \@cyclopentanev
+% \cyclopentanevi \@cyclopentanevi
+% \cyclopentaneh \@cyclopentaneh
+% \cyclopentanehi \@cyclopentanehi
+%
+% \cyclobutane \@cyclobutane
+%
+% \cyclopropane \@cyclopropane
+% \cyclopropanei \@cyclopropanei
+% \cyclopropaneh \@cyclopropaneh
+% \cyclopropanehi \@cyclopropanehi
+%
+% \indanev \@indanev
+% \indanevi \@indanevi
+% \indaneh \@indaneh
+% \indanehi \@indanehi
+% \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 lowcycle.sty} for the present case). Hence, the combination
+% of |\input| and |\@ifundefined| is used to crossload sty
+% files ({\sf chemstr.sty} etc. for the present case) in place of the
+% |\RequirePackage| command of \LaTeXe{}.
+%
+% \begin{macrocode}
+% *************************
+% * input of basic macros *
+% *************************
+\@ifundefined{setsixringv}{\input chemstr.sty\relax}{}
+\@ifundefined{threehetero}{\input hetarom.sty\relax}{}
+\@ifundefined{sixheteroh}{\input hetaromh.sty\relax}{}
+\unitlength=0.1pt
+% \end{macrocode}
+%
+% \section{Cyclopentane derivatives}
+% \subsection{Vertical type}
+%
+% The macros |\cyclopentanev| and |\cyclopentanevi| have an
+% argument |SUBSLIST| as well as an optional argument |BONDLIST|.
+% The macro |\cyclopentanev| draws a five-membered ring with a
+% flat top bond, while the macro |\cyclopentanevi| draws an
+% inverse ring with a flat bottom bond.
+% \begin{verbatim}
+% ******************************
+% * cyclopentane derivatives *
+% * (vertical type & inverse) *
+% ******************************
+%
+% \cyclopentanev[BONDLIST]{SUBSLIST}
+% \cyclopentanevi[BONDLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one or more
+% characters selected from a to e, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position. The
+% option `$n+$' ($n=1$--$5$) is used for designating a plus charge on
+% the $n$-carbon.
+% The option `$0+$'is used for designating a plus charge at the center
+% of the five-membered ring.
+% \begin{verbatim}
+% BONDLIST: list of inner double bonds
+%
+% none : mother nucleus (fully saturated form)
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,1-double bond
+% {n+} : plus at the n-carbon atom (n = 1 to 5)
+% {0+} : plus at the center
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 5
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \cyclopentanev{1==H;2==F}
+% \cyclopentanev[]{1==H;2==F}
+% \cyclopentanev[H]{1==H;2==F}
+% \end{verbatim}
+%
+% \begin{macro}{\cyclopentanev}
+% \begin{macro}{\cyclopentanevi}
+% \begin{macrocode}
+\def\cyclopentanev{\@ifnextchar[{\@cyclopentanev[@}{\@cyclopentanev[]}}
+\def\@cyclopentanev[#1]#2{%
+\iforigpt \typeout{command `cyclopentanev' %
+ is based on `fiveheterov'.}\fi%
+\fiveheterov[#1]{}{#2}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\cyclopentanevi{\@ifnextchar[{\@cyclopentanevi[@}{\@cyclopentanevi[]}}
+\def\@cyclopentanevi[#1]#2{%
+\iforigpt \typeout{command `cyclopentanevi' %
+ is based on `fiveheterovi'.}\fi%
+\fiveheterovi[#1]{}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Horizontal type}
+%
+% The macros |\cyclopentaneh| and |\cyclopentanehi| have an
+% argument |SUBSLIST| as well as an optional argument |BONDLIST|.
+% The macro |\cyclopentaneh| draws a five-membered ring with a
+% vertical left bond, while the macro |\cyclopentanehi| draws an
+% inverse ring with a vertical right bond.
+% \begin{verbatim}
+% ********************************
+% * cyclopentane derivatives *
+% * (horizontal type & inverse) *
+% ********************************
+%
+% \cyclopentaneh[BONDLIST]{SUBSLIST}
+% \cyclopentanehi[BONDLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one or more
+% characters selected from a to e, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position. The
+% option `$n+$' ($n=1$--$5$) is used for designating a plus charge on
+% the $n$-carbon.
+% The option `$0+$'is used for designating a plus charge at the center
+% of the five-membered ring.
+% \begin{verbatim}
+%
+% BONDLIST: list of inner double bonds
+%
+% none : mother nucleus (fully saturated form)
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% d : 4,5-double bond
+% e : 5,1-double bond
+% {n+} : plus at the n-carbon atom (n = 1 to 5)
+% {0+} : plus at the center
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 5
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+%
+% e.g.
+%
+% \cyclopentaneh{1==H;2==F}
+% \cyclopentanehi[]{1==H;2==F}
+% \cyclopentanehi[H]{1==H;2==F}
+%
+% \end{verbatim}
+%
+% \begin{macro}{\cyclopentaneh}
+% \begin{macro}{\cyclopentanehi}
+% \begin{macrocode}
+\def\cyclopentaneh{\@ifnextchar[{\@cyclopentaneh[@}{\@cyclopentaneh[]}}
+\def\@cyclopentaneh[#1]#2{%
+\iforigpt \typeout{command `cyclophentaneh' %
+ is based on `fiveheteroh'.}\fi%
+\fiveheteroh[#1]{}{#2}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\cyclopentanehi{%
+ \@ifnextchar[{\@cyclopentanehi[@}{\@cyclopentanehi[]}}
+\def\@cyclopentanehi[#1]#2{%
+\iforigpt \typeout{command `cyclopentanehi' %
+ is based on `fiveheterohi'.}\fi%
+\fiveheterohi[#1]{}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \section{Indan derivatives}
+% \subsection{Vertical type}
+%
+% The macros |\indanev| and |\indanevi| have an
+% argument |SUBSLIST| as well as an optional argument |BONDLIST|.
+% The macro |\indanev| draws a five-membered ring with a
+% flat top bond, while the macro |\indanevi| draws an
+% inverse ring with a flat bottom bond.
+% \begin{verbatim}
+% ***********************************************************
+% * indane derivatives (fused six- and five-membered rings) *
+% * (vertical type & inverse) *
+% ***********************************************************
+%
+% \indanev[BONDLIST]{SUBSLIST}
+% \indanevi[BONDLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one or more
+% characters selected from a to j, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `A' typesets a six-membered ring with an aromatic circle.
+% The option `$n+$' ($n=1$--$7$) is used for designating a plus charge on
+% the $n$-carbon.
+% \begin{verbatim}
+%
+% BONDLIST: list of bonds
+%
+% none or r : aromatic six-membered ring
+% H or [] : fully saturated form
+% a : 1,2-double bond b : 2,3-double bond
+% c : 3,3a-double bond d : 4,3a-double bond
+% e : 4,5-double bond f : 5,6-double bond
+% g : 6,7-double bond h : 7,7a-double bond
+% i : 1,7a-double bond j : 3a,4a-double bond
+% A : aromatic circle
+% {n+} : plus at the n-nitrogen atom (n = 1 to 7)
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents (max 7 substitution positions)
+%
+% for n = 1 to 8
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% for 8 (3a position) and 9 (7a position)
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+%
+% e.g.
+%
+% \indanev{1==Cl;2==F}
+% \indanev[c]{1==Cl;4==F;2==CH$_{3}$}
+% \indanev[eb]{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl}
+%
+% \end{verbatim}
+%
+% \begin{macro}{\indanev}
+% \begin{macro}{\indanevi}
+% \begin{macrocode}
+\def\indanev{\@ifnextchar[{\@indanev[@}{\@indanev[rb]}}
+\def\@indanev[#1]#2{%
+\iforigpt \typeout{command `indanev' %
+ is based on `nonaheterov'.}\fi%
+\nonaheterov[#1]{}{#2}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\indanevi{\@ifnextchar[{\@indanevi[@}{\@indanevi[rb]}}
+\def\@indanevi[#1]#2{%
+\iforigpt \typeout{command `indanevi' %
+ is based on `nonaheterovi'.}\fi%
+\nonaheterovi[#1]{}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Horizontal type}
+%
+% The macros |\indaneh| and |\indanehi| have an
+% argument |SUBSLIST| as well as an optional argument |BONDLIST|.
+% The macro |\indaneh| draws a five-membered ring with a
+% vertical left bond, while the macro |\indanehi| draws an
+% inverse ring with a vertical right bond.
+% \begin{verbatim}
+% ***********************************************************
+% * indane derivatives (fused six- and five-membered rings) *
+% * (horizontal type & inverse) *
+% ***********************************************************
+%
+% \indaneh[BONDLIST]{SUBSLIST}
+% \indanehi[BONDLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one or more
+% characters selected from a to j, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `A' typesets a six-membered ring with an aromatic circle.
+% The option `$n+$' ($n=1$--$7$) is used for designating a plus charge on
+% the $n$-carbon.
+% \begin{verbatim}
+%
+% BONDLIST: list of bonds
+%
+% none or r : aromatic six-membered ring
+% H or [] : fully saturated form
+% a : 1,2-double bond b : 2,3-double bond
+% c : 3,3a-double bond d : 4,3a-double bond
+% e : 4,5-double bond f : 5,6-double bond
+% g : 6,7-double bond h : 7,7a-double bond
+% i : 1,7a-double bond j : 3a,4a-double bond
+% A : aromatic circle
+% {n+} : plus at the n-nitrogen atom (n = 1 to 7)
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 8
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+%
+% for 8 (3a position) and 9 (7a position)
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \indaneh{1==Cl;2==F}
+% \indaneh[c]{1==Cl;4==F;2==CH$_{3}$}
+% \indaneh[eb]{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl}
+% \end{verbatim}
+%
+% \begin{macro}{\indaneh}
+% \begin{macro}{\indanehi}
+% \begin{macrocode}
+\def\indaneh{\@ifnextchar[{\@indaneh[@}{\@indaneh[rb]}}
+\def\@indaneh[#1]#2{%
+\iforigpt \typeout{command `indaneh' %
+ is based on `nonaheteroh'.}\fi%
+\nonaheteroh[#1]{}{#2}}
+\def\indanehi{\@ifnextchar[{\@indanehi[@}{\@indanehi[rb]}}
+\def\@indanehi[#1]#2{%
+\iforigpt \typeout{command `indanehi' %
+ is based on `nonaheterohi'.}\fi%
+\nonaheterohi[#1]{}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \section{Cyclobutane derivatives}
+%
+% The macros |\cyclobutane| has an
+% argument |SUBSLIST| as well as an optional argument |BONDLIST|.
+% This macro is based on the \verb/\fourhetero/ command for drawing
+% four-membered heterocycles.
+% \begin{verbatim}
+% ***************************
+% * cyclobutane derivatives *
+% ***************************
+% The following numbering is adopted in this macro.
+%
+% c
+% 4 _____ 3
+% d | | b
+% | |
+% 1 ----- 2<===== the original point
+% a
+%
+% \cyclobutane[BONDLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one or more
+% characters selected from a to e, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `$n+$' ($n=1$--$4$) is used for designating a plus charge on
+% the $n$-carbon.
+% \begin{verbatim}
+%
+% BONDLIST: list of inner double bonds
+%
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 4,3-double bond
+% e : 4,1-double bond
+%
+% {n+} : plus at the n-nitrogen atom (n = 1 to 4)
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents (max 5 substitution positions)
+%
+% for n = 1 to 4
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \cyclobutane{1==H;2==F}
+% \cyclobutane[c]{1==Cl;4==F;2==CH$_{3}$}
+% \cyclobutane[eb]{1D==O;4SA==MeO;4SB==OMe}
+% \end{verbatim}
+%
+% \begin{macro}{\cyclobutane}
+% \begin{macrocode}
+\def\cyclobutane{\@ifnextchar[{\@cyclobutane[@}{\@cyclobutane[]}}
+\def\@cyclobutane[#1]#2{%
+\iforigpt \typeout{command `cyclobutane' %
+ is based on `fourhetero'.}\fi%
+\fourhetero[#1]{}{#2}}
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Cyclopropane derivatives}
+%
+% The macros |\cyclopropane| has an
+% argument |SUBSLIST| as well as an optional argument |BONDLIST|.
+% This macro is based on the \verb/\threehetero/ command for drawing
+% three-membered heterocycles.
+% \begin{verbatim}
+% ****************************
+% * cyclopropane derivatives *
+% * (vertical type) *
+% ****************************
+% The following numbering is adopted in this macro.
+%
+% b
+% 3--------2
+% c ` / a
+% `1/ <===== the original point
+%
+%
+% \cyclopropane[BONDLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one or more
+% characters selected from a to c, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `A' is used for designating an aromatic character with a
+% circle.
+% The option `$n+$' ($n=1$--$3$) is used for designating a plus charge on
+% the $n$-carbon, while
+% the case $n=4$--$6$) indicates a plus charge outside the ring.
+% The option `0+' draws a plus symbol at the center of the ring.
+% \begin{verbatim}
+%
+% BONDLIST =
+%
+% none : saturated
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 3,1-double bond
+% A : aromatic circle
+% {n+} : plus at the n-hetero atom (n = 1 to 3)
+% : n=4 -- outer plus at 1 position
+% : n=5 -- outer plus at 2 position
+% : n=6 -- outer plus at 3 position
+% {0+} : plus at the center of a cyclopropane ring
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents (max 3 substitution positions)
+%
+% for n = 1 to 3
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+%
+% e.g.
+%
+% \cyclopropane{1==N}{1==Cl;2==F}
+%
+% \end{verbatim}
+%
+% \begin{macro}{\cyclopropane}
+% \begin{macro}{\cyclopropanev}
+% \begin{macrocode}
+\def\cyclopropane{\@ifnextchar[{\@cyclopropane[@}{\@cyclopropane[]}}
+\def\@cyclopropane[#1]#2{%
+\iforigpt \typeout{command `cyclopropane' %
+ is based on `threehetero'.}\fi%
+\threehetero[#1]{}{#2}}
+\let\cyclopropanev=\cyclopropane
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The macros |\cyclopropanei| has an
+% argument |SUBSLIST| as well as an optional argument |BONDLIST|.
+% This macro is based on the \verb/\threehetero/ command for drawing
+% three-membered heterocycles.
+% \begin{verbatim}
+% ****************************
+% * cyclopropane derivatives *
+% * (inverse vertical type) *
+% ****************************
+% The following numbering is adopted in this macro.
+%
+% /1` <===== the original point
+% c / ` a
+% 3--------2
+% b
+%
+% \cyclopropanei[BONDLIST]{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one or more
+% characters selected from a to c, each of which indicates the presence of
+% an inner (endcyclic) double bond on the corresponding position.
+% The option `A' is used for designating an aromatic character with a
+% circle.
+% The option `$n+$' ($n=1$--$3$) is used for designating a plus charge on
+% the $n$-carbon, while
+% the case $n=4$--$6$) indicates a plus charge outside the ring.
+% The option `0+' draws a plus symbol at the center of the ring.
+% \begin{verbatim}
+%
+% BONDLIST =
+%
+% none : saturated
+% a : 1,2-double bond
+% b : 2,3-double bond
+% c : 3,1-double bond
+% A : aromatic circle
+% {n+} : plus at the n-hetero atom (n = 1 to 3)
+% : n=4 -- outer plus at 1 position
+% : n=5 -- outer plus at 2 position
+% : n=6 -- outer plus at 3 position
+% {0+} : plus at the center of a cyclopropane ring
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents (max 3 substitution positions)
+%
+% for n = 1 to 3
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+%
+% e.g.
+%
+% \cyclopropanei{1==N}{1==Cl;2==F}
+%
+% \end{verbatim}
+% \changes{v1.02}{1998/10/20}{Newly added command}
+%
+% \begin{macro}{\cyclopropanei}
+% \begin{macro}{\cyclopropenevi}
+% \begin{macrocode}
+\def\cyclopropanei{\@ifnextchar[{\@cyclopropanei[@}{\@cyclopropanei[]}}
+\def\@cyclopropanei[#1]#2{%
+\iforigpt \typeout{command `cyclopropanei' %
+ is based on `threeheteroi'.}\fi%
+\threeheteroi[#1]{}{#2}}
+\let\cyclopropanevi=\cyclopropanei
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\cyclopropaneh}
+% \begin{macrocode}
+\def\cyclopropaneh{\@ifnextchar[{\@cyclopropaneh[@}{\@cyclopropaneh[]}}
+\def\@cyclopropaneh[#1]#2{%
+\iforigpt \typeout{command `cyclopropaneh' %
+ is based on `threeheteroh'.}\fi%
+\threeheteroh[#1]{}{#2}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\cyclopropanehi}
+% \begin{macrocode}
+\def\cyclopropanehi{\@ifnextchar[{\@cyclopropanehi[@}{\@cyclopropanehi[]}}
+\def\@cyclopropanehi[#1]#2{%
+\iforigpt \typeout{command `cyclopropanehi' %
+ is based on `threeheterohi'.}\fi%
+\threeheterohi[#1]{}{#2}}
+%</lowcycle>
+% \end{macrocode}
+% \end{macro}
+%
+% \Finale
+%
+\endinput
diff --git a/Master/texmf-dist/source/latex/xymtex/base/lowcycle.ins b/Master/texmf-dist/source/latex/xymtex/base/lowcycle.ins
new file mode 100644
index 00000000000..9421c429362
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/lowcycle.ins
@@ -0,0 +1,53 @@
+\def\batchfile{lowcycle.ins}
+\input docstrip.tex
+\preamble
+
+This is a generated file.
+
+Copyright 1996,1998,2001,2002,2004,2010 by Shinsaku Fujita
+all rights reserved.
+This style file is created for drawing chemical structural formulas
+This style file is to be contained in the ``xymtex'' directory which
+is an input directory for TeX.
+
+This file is part of the XyMTeX system.
+=======================================
+Old Versions:
+Version 1.01 Released on August 16, 1996
+Version 1.02 Released on October 31, 1996 (private version)
+Version 2.00 Released on December 25, 1998
+Version 2.01 Released on June 20, 2001 (private version)
+Version 3.00 Released on April 30, 2002
+Version 4.00 Released on May 30, 2002 (private version)
+Version 4.00 Released on August 30, 2004
+
+The Present Version:
+Version 5.00 Released on October 01, 2010
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3
+of this license or (at your option) any later version.
+The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of LaTeX
+version 2005/12/01 or later.
+
+This work has the LPPL maintenance status `maintained'.
+The Current Maintainer of this work is Shinsaku Fujita.
+
+This work consists of the files lowcycle.dtx and lowcycle.ins
+and the derived file lowcycle.sty.
+
+=======================================
+
+\endpreamble
+
+\keepsilent
+
+\generateFile{lowcycle.drv}{t}{%
+ \from{lowcycle.dtx}{driver}}
+
+\generateFile{lowcycle.sty}{t}{%
+ \from{lowcycle.dtx}{lowcycle}}
+
+\endinput
diff --git a/Master/texmf-dist/source/latex/xymtex/base/methylen.dtx b/Master/texmf-dist/source/latex/xymtex/base/methylen.dtx
new file mode 100644
index 00000000000..a1581b92206
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/methylen.dtx
@@ -0,0 +1,6419 @@
+% \iffalse meta-comment
+%% File: methylen.dtx
+%
+% Copyright 1998,2001,2002,2004,2005,2010,2013 by Shinsaku Fujita
+%
+% This file is part of XyMTeX system.
+% -------------------------------------
+%
+% 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].
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+% The Current Maintainer of this work is Shinsaku Fujita.
+%
+% This work consists of the files methylen.dtx and methylen.ins
+% and the derived file methylen.sty.
+%
+% Please report any bugs, comments, suggestions, etc. to:
+% Shinsaku Fujita,
+% Shonan Institute of Chemoinformatics and Mathematical Chemistry
+% Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun, Kanagawa 250-0019 Japan
+% (old address)
+% Ashigara Research Laboratories, Fuji Photo Film Co., Ltd.,
+% Minami-Ashigara, Kanagawa-ken, 250-01, Japan.
+% (old address)
+% Department of Chemistry and Materials Technology,
+% Kyoto Institute of Technology, \\
+% Matsugasaki, Sakyoku, Kyoto, 606 Japan
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{methylen}
+% \def\versi@ndate{October 31, 1998}
+% \def\versi@nno{ver1.02}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{methylen}
+% \def\versi@ndate{December 25, 1998}
+% \def\versi@nno{ver2.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{methylen}
+% \def\versi@ndate{June 20, 2001}
+% \def\versi@nno{ver2.01}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{methylen}
+% \def\versi@ndate{April 30, 2002}
+% \def\versi@nno{ver3.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{methylen}
+% \def\versi@ndate{May 30, 2002}
+% \def\versi@nno{ver4.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{methylen}
+% \def\versi@ndate{August 30, 2004}
+% \def\versi@nno{ver4.01}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{methylen}
+% \def\versi@ndate{July 20, 2005}
+% \def\versi@nno{ver4.03}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{methylen}
+% \def\versi@ndate{October 01, 2010}
+% \def\versi@nno{ver5.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{methylen}
+% \def\versi@ndate{March 29, 2013}
+% \def\versi@nno{ver5.01b}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{methylen}
+% \def\versi@ndate{June 27, 2013}
+% \def\versi@nno{ver5.01bbb}
+\def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \fi
+%
+% \CheckSum{8103}
+%% \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.02}{1998/10/31}{first edition for LaTeX2e}
+% \changes{v2.00}{1998/12/25}{enhanced edition for LaTeX2e}
+% \changes{v2.01}{2001/06/20}{Size reduction and Clip information}
+% \changes{v2.01}{2001/6/20}{Size reduction and clipping information}
+% \changes{v3.00}{2002/4/30}{sfpicture environment, etc.}
+% \changes{v4.00}{2002/05/30}{PostScript output and ShiftPicEnv}
+% \changes{v4.01}{2004/08/30}{Minor additions}
+% \changes{v4.03}{2005/07/20}{Wave bonds}
+% \changes{v5.00}{2010/10/01}{For bond coloring and the LaTeX Project Public License}
+% \changes{v5.01b}{2013/03/29}{bug fix for \cs{yltrimethyleneposition}}
+% \changes{v5.01bb}{2013/06/22}{another bug fix for \cs{yltrimethyleneposition} etc.}
+% \changes{v5.01bbb}{2013/06/27}{addition: Sd, Su, WU, WV, WA, WB etc. }
+% \changes{v5.01}{2013/07/20}{bug fix}
+% \fi
+%
+% \iffalse
+%<*driver>
+\NeedsTeXFormat{pLaTeX2e}
+% \fi
+\ProvidesFile{methylen.dtx}[2013/07/20 v5.01 XyMTeX{} package file]
+% \iffalse
+\documentclass{ltxdoc}
+\GetFileInfo{methylen.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{Methylene Chains by {\sffamily methylen.sty}
+(\fileversion) of \XyMTeX{}}
+\author{Shinsaku Fujita \\
+Shonan Institute of Chemoinformatics and Mathematical Chemistry, \\
+Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun, Kanagawa 250-0019 Japan
+% % (old address)
+% %Department of Chemistry and Materials Technology, \\
+% %Kyoto Institute of Technology, \\
+% %Matsugasaki, Sakyoku, Kyoto, 606-8585 Japan
+}
+\date{\filedate}
+%
+\begin{document}
+ \maketitle
+ \DocInput{methylen.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \section{Introduction}\label{methylen:intro}
+%
+% \subsection{Options for {\sffamily docstrip}}
+%
+% \DeleteShortVerb{\|}
+% \begin{center}
+% \begin{tabular}{|l|l|}
+% \hline
+% \emph{option} & \emph{function}\\ \hline
+% methylen & methylen.sty \\
+% driver & driver for this dtx file \\
+% \hline
+% \end{tabular}
+% \end{center}
+% \MakeShortVerb{\|}
+%
+% \subsection{Version Information}
+%
+% \begin{macrocode}
+%<*methylen>
+\typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 5.01}
+\typeout{ -- Released July 20, 2013 by Shinsaku Fujita}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\j@urnalname{methylen}
+\def\versi@ndate{July 20, 2013}
+\def\versi@nno{ver5.01}
+\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 methylen.sty}
+%
+% \begin{verbatim}
+% **********************************
+% * methylen.sty: list of commands *
+% **********************************
+%
+% <Switches for drawing substituents and bonds>
+%
+% \if@adoublebond \if@bdoublebond
+% \if@Adoublebond \if@adoublebond}
+% \reset@double
+% \if@linterchainsw \if@rinterchainsw}
+% \reset@interchainsw
+%
+% <Command for drawing substituents and bonds>
+%
+% \@methsubsta \@methsubstd \@methsubstdL
+% \SKbondA \SKbondB
+% \bondA \bondAA
+% \bondB \bondBB
+%
+% <Basic commands for typesetting aliphatic chains>
+%
+% \@@trimethylene
+% \@@dimethylene
+%
+% <Commands for adjusting substitution sites>
+%
+% \yltrimethyleneposition
+% \yldimethyleneposition
+%
+% <Commands for drawing aliphatic chains>
+%
+% \trimethylene \trimethylenei
+% \dimethylene \dimethylenei
+% \tetramethylene \tetramethylenei
+% \pentamethylene \pentamethylenei
+% \hexamethylene \hexamethylenei
+% \heptamethylene \heptamethylenei
+% \octamethylene octamethylenei
+% \nonamethylene \nonamethylenei
+% \decamethylene \decamethylenei
+%
+% \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 polymers.sty} for the present case). Hence, the combination
+% of |\input| and |\@ifundefined| is used to crossload sty
+% files ({\sf chemstr.sty} etc. for the present case) in place of the
+% |\RequirePackage| command of \LaTeXe{}.
+%
+% \begin{macrocode}
+% *************************
+% * input of basic macros *
+% *************************
+\@ifundefined{setsixringv}{\input chemstr.sty\relax}{}
+\@ifundefined{Westbond}{\input aliphat.sty\relax}{}
+\@ifundefined{bzdrv}{\input carom.sty\relax}{}
+\@ifundefined{hbonde}{\input hetaromh.sty\relax}{}
+\unitlength=0.1pt
+% \end{macrocode}
+%
+% \section{Setting Substituents}
+%
+% Substitutions on each methylene of a polymethylene chain
+% is typeset by macros |\@methsubsta| etc.
+% The macro |\@methsubsta| is used to place substituents on an
+% upper-side methylene. A new bond modifier ``W'' is added to
+% typeset a terminal substituent.
+%
+% \changes{v5.01}{2013/06/27}{Addition Su, Sd, WU, WA, WB}
+%
+% \begin{macro}{\@methsubsta}
+% \begin{macrocode}
+\newif\if@wrongbdWa \@wrongbdWafalse
+\newif\if@wrongbdWd \@wrongbdWdfalse
+\newif\if@wrongbdWaL \@wrongbdWaLfalse
+\newif\if@wrongbdWdL \@wrongbdWdLfalse
+\def\@methsubsta{%
+\if@aclip% %clipping
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \Put@Line(0,436)(0,1){110}% % single bond at 1
+ \putlratom{-31}{563}{\@memberb}% % left or right type
+ \else\if\@tmpc B%(B) beta
+ \yl@xdiff=-36\relax
+ \yl@ydiff=-27\relax
+ {%
+ \thicklines%
+ \Put@Line(-18,436)(-3,5){60}% % single bond at 1
+ }%
+ \putlatom{-42}{563}{\@memberb}% % left type
+ \else\if\@tmpc A%(A) alpha
+ \yl@xdiff=37\relax
+ \yl@ydiff=-27\relax
+ \dotorline(18,436)(3,5){60}/(18,436)(72,526)%
+ \putratom{41}{563}{\@memberb}% % right type
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=-36\relax
+ \yl@ydiff=-27\relax
+ \putlatom{-42}{563}{\@memberb}% % left type
+ \Put@Line(-18,436)(-3,5){60}% % single bond at 1
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=37\relax
+ \yl@ydiff=-27\relax
+ \Put@Line(18,436)(3,5){60}% % single bond at 1
+ \putratom{41}{563}{\@memberb}% % right type
+%2023/06/27
+ \else\if\@tmpc U% undefined
+ \yl@xdiff=-36\relax
+ \yl@ydiff=-27\relax
+ {%
+ \WaveBonds%
+ \Put@Line(-18,436)(-3,5){60}% % single bond at 1
+ }%
+ \putlatom{-42}{563}{\@memberb}% % left type
+ \else\if\@tmpc V% undefined
+ \yl@xdiff=37\relax
+ \yl@ydiff=-27\relax
+ {%
+ \WaveBonds%
+ \Put@Line(18,436)(3,5){60}% % wavy single bond at 1
+ }%
+ \putratom{41}{563}{\@memberb}% % right type
+ \else\if\@tmpc d%(d) alpha
+ \yl@xdiff=-36\relax
+ \yl@ydiff=-27\relax
+ \dotorline(-18,436)(-3,5){60}/(-18,436)(-72,536)%
+ \putlatom{-42}{563}{\@memberb}% % left type
+ \else\if\@tmpc u%(u) beta
+ \yl@xdiff=37\relax
+ \yl@ydiff=-27\relax
+ {%
+ \thicklines%
+ \Put@Line(18,436)(3,5){60}% % single bond at 1
+ }%
+ \putratom{41}{563}{\@memberb}% % right type
+%
+ \fi\fi
+ \fi\fi\fi\fi\fi\fi\fi%
+ \else\if\@tmpb D%double bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \putlratom{-31}{563}{\@memberb}% % left or right type
+ \Put@Line(-12,436)(0,1){110}% % double bond at 1
+ \Put@Line(12,436)(0,1){110}% % double bond at 1
+ \else\if\@tmpb B%beta single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \putlratom{-31}{563}{\@memberb}% % left or right type
+ {%
+ \thicklines%
+ \Put@Line(0,436)(0,1){110}% % single bond at 1
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \putlratom{-31}{563}{\@memberb}% % left or right type
+ \dotorline(0,436)(0,1){110}/(0,436)(0,546)%
+ \else\if\@tmpb U% undefined
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \putlratom{-31}{563}{\@memberb}% % left or right type
+ {%
+ \WaveBonds%
+ \Put@Line(0,436)(0,1){110}% % single bond at 1
+ }%
+ \else\if\@tmpb W%beta single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=-10\relax
+ \yl@ydiff=46\relax
+ \if@wrongbdWa
+ \XyMTeXWarning{Wrong Bond-Modifier (W)}%
+ \fi
+ \Put@Line(40,382)(5,-3){100}% % single bond at 1
+ \putratom{150}{276}{\@memberb}% % left or right type
+%2013/06/27
+ \else\if\@tmpc U%beta undefined
+ \yl@xdiff=-10\relax
+ \yl@ydiff=46\relax
+ {%
+ \WaveBonds%
+ \Put@Line(40,382)(5,-3){100}% % single bond at 1
+ }%
+ \putratom{150}{276}{\@memberb}% % left or right type
+ \else\if\@tmpc B%beta
+ \yl@xdiff=-10\relax
+ \yl@ydiff=46\relax
+ {%
+ \thicklines%
+ \Put@Line(40,382)(5,-3){100}% % single bond at 1
+ }%
+ \putratom{150}{276}{\@memberb}% % left or right type
+ \else\if\@tmpc A%alpha
+ \yl@xdiff=-10\relax
+ \yl@ydiff=46\relax
+ \dotorline(40,382)(5,-3){100}/(40,382)(140,322)%
+ \putratom{150}{276}{\@memberb}% % left or right type
+%
+ \fi\fi\fi\fi
+ \else%
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \putlratom{-31}{563}{\@memberb}% % left or right type
+ \Put@Line(0,436)(0,1){110}% % single bond at 1
+ \fi\fi\fi\fi\fi\fi%
+\else% % no clipping
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \Put@Line(0,406)(0,1){140}% % single bond at 1
+ \putlratom{-31}{563}{\@memberb}% % left or right type
+ \else\if\@tmpc B%(B) beta
+ \yl@xdiff=-30\relax
+ \yl@ydiff=-37\relax
+ \putlatom{-42}{563}{\@memberb}% % left type
+ {%
+ \thicklines%
+ \Put@Line(0,406)(-3,5){72}% % single bond at 1
+ }%
+ \else\if\@tmpc A%(A) alpha
+ \yl@xdiff=31\relax
+ \yl@ydiff=-37\relax
+ \putratom{41}{563}{\@memberb}% % right type
+ \dotorline(0,406)(3,5){72}/(0,406)(72,526)%
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=-30\relax
+ \yl@ydiff=-37\relax
+ \putlatom{-42}{563}{\@memberb}% % left type
+ \Put@Line(0,406)(-3,5){72}% % single bond at 1
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=31\relax
+ \yl@ydiff=-37\relax
+ \putratom{41}{563}{\@memberb}% % right type
+ \Put@Line(0,406)(3,5){72}% % single bond at 1
+%2023/06/27
+ \else\if\@tmpc U% undefined
+ \yl@xdiff=-30\relax
+ \yl@ydiff=-37\relax
+ {%
+ \WaveBonds%
+ \Put@Line(0,406)(-3,5){72}% % single bond at 1
+ }%
+ \putlatom{-42}{563}{\@memberb}% % left type
+ \else\if\@tmpc V% undefined
+ \yl@xdiff=31\relax
+ \yl@ydiff=-37\relax
+ {%
+ \WaveBonds%
+ \Put@Line(0,406)(3,5){72}% % wavy single bond at 1
+ }%
+ \putratom{41}{563}{\@memberb}% % right type
+ \else\if\@tmpc d%(d) alpha
+ \yl@xdiff=-30\relax
+ \yl@ydiff=-37\relax
+ \dotorline(0,406)(-3,5){72}/(0,406)(-72,526)%
+ \putlatom{-42}{563}{\@memberb}% % left type
+ \else\if\@tmpc u%(u) beta
+ \yl@xdiff=31\relax
+ \yl@ydiff=-37\relax
+ {%
+ \thicklines%
+ \Put@Line(0,406)(3,5){72}% % single bond at 1
+ }%
+ \putratom{41}{563}{\@memberb}% % right type
+%
+ \fi\fi\fi\fi
+ \fi\fi\fi\fi\fi%
+ \else\if\@tmpb D%double bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \putlratom{-31}{563}{\@memberb}% % left or right type
+ \Put@Line(-12,406)(0,1){140}% % double bond at 1
+ \Put@Line(12,406)(0,1){140}% % double bond at 1
+ \else\if\@tmpb B%beta single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \putlratom{-31}{563}{\@memberb}% % left or right type
+ {%
+ \thicklines%
+ \Put@Line(0,406)(0,1){140}% % single bond at 1
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \putlratom{-31}{563}{\@memberb}% % left or right type
+ \dotorline(0,406)(0,1){140}/(0,406)(0,546)%
+ \else\if\@tmpb U%undefined
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \putlratom{-31}{563}{\@memberb}% % left or right type
+ {%
+ \WaveBonds%
+ \Put@Line(0,406)(0,1){140}% % single bond at 1
+ }%
+ \else\if\@tmpb W%beta single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=-10\relax
+ \yl@ydiff=58\relax
+ \if@wrongbdWa
+ \XyMTeXWarning{Wrong Bond-Modifier (W)}%
+ \fi
+ \Put@Line(0,406)(5,-3){120}% % single bond at 1
+ \putratom{130}{276}{\@memberb}% % left or right type
+%2013/06/27
+ \else\if\@tmpc U%beta undefined
+ \yl@xdiff=-10\relax
+ \yl@ydiff=58\relax
+ {%
+ \WaveBonds%
+ \Put@Line(0,406)(5,-3){120}% % single bond at 1
+ }%
+ \putratom{130}{276}{\@memberb}% % left or right type
+ \else\if\@tmpc B%beta
+ \yl@xdiff=-10\relax
+ \yl@ydiff=58\relax
+ {%
+ \thicklines%
+ \Put@Line(0,406)(5,-3){120}% % single bond at 1
+ }%
+ \putratom{130}{276}{\@memberb}% % left or right type
+ \else\if\@tmpc A%alpha
+ \yl@xdiff=-10\relax
+ \yl@ydiff=58\relax
+ \dotorline(0,406)(5,-3){120}/(0,406)(120,334)%
+ \putratom{130}{276}{\@memberb}% % left or right type
+%
+ \fi\fi\fi\fi
+ \else%
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \putlratom{-31}{563}{\@memberb}% % left or right type
+ \Put@Line(0,406)(0,1){140}% % single bond at 1
+ \fi\fi\fi\fi\fi\fi%
+ \fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% The macro |\@methsubstd| is used to place substituents on a
+% down-side methylene. A new bond modifier ``W'' is added to
+% typeset a terminal substituent.
+%
+% \changes{v5.01}{2013/06/27}{Addition Su, Sd, WU, WA, WB}
+%
+% \begin{macro}{\@methsubstd}
+% \begin{macrocode}
+\def\@methsubstd{%
+\if@clip %clipping
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \putlratom{-31}{-230}{\@memberb}% % left or right type
+ \Put@Line(0,-30)(0,-1){110}% % single bond at 4
+ \else\if\@tmpc B%(B) beta
+ \yl@xdiff=-36\relax
+ \yl@ydiff=100\relax
+ {%
+ \thicklines%
+ \Put@Line(-18,-30)(-3,-5){60}% % single bond at 4
+ }%
+ \putlatom{-42}{-230}{\@memberb}% % left type
+ \else\if\@tmpc A%(A) alpha
+ \yl@xdiff=37\relax
+ \yl@ydiff=100\relax
+ \dotorline(18,-30)(3,-5){60}/(18,-30)(72,-120)%
+ \putratom{41}{-230}{\@memberb}% % right type
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=-36\relax
+ \yl@ydiff=100\relax
+ \putlatom{-42}{-230}{\@memberb}% % left type
+ \Put@Line(-18,-30)(-3,-5){60}% % single bond at 4
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=37\relax
+ \yl@ydiff=100\relax
+ \putratom{41}{-230}{\@memberb}% % right type
+ \Put@Line(18,-30)(3,-5){60}% % single bond at 4
+%2023/06/27
+ \else\if\@tmpc U% undefined
+ \yl@xdiff=-36\relax
+ \yl@ydiff=100\relax
+ {%
+ \WaveBonds%
+ \Put@Line(-18,-30)(-3,-5){60}% % single bond at 4
+ }%
+ \putlatom{-42}{-230}{\@memberb}% % left type
+ \else\if\@tmpc V% undefined
+ \yl@xdiff=37\relax
+ \yl@ydiff=100\relax
+ {%
+ \WaveBonds%
+ \Put@Line(18,-30)(3,-5){60}% % wavy single bond at 1
+ }%
+ \putratom{41}{-230}{\@memberb}% % right type
+ \else\if\@tmpc d%(d) alpha
+ \yl@xdiff=-36\relax
+ \yl@ydiff=100\relax
+ \dotorline(-18,-30)(-3,-5){60}/(-18,-30)(-78,-130)%
+ \putlatom{-42}{-230}{\@memberb}% % left type
+ \else\if\@tmpc u%(u) beta
+ \yl@xdiff=37\relax
+ \yl@ydiff=100\relax
+ {%
+ \thicklines%
+ \Put@Line(18,-30)(3,-5){60}% % single bond at 4
+ }%
+ \putratom{41}{-230}{\@memberb}% % right type
+%
+ \fi\fi\fi\fi
+ \fi\fi\fi\fi\fi%
+ \else\if\@tmpb D%double bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \putlratom{-31}{-230}{\@memberb}% % left or right type
+ \Put@Line(-12,-30)(0,-1){110}% % double bond at 4
+ \Put@Line(12,-30)(0,-1){110}% % double bond at 4
+ \else\if\@tmpb B%beta single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \putlratom{-31}{-230}{\@memberb}% % left or right type
+ {%
+ \thicklines%
+ \Put@Line(0,-30)(0,-1){110}% % single bond at 4
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \putlratom{-31}{-230}{\@memberb}% % left or right type
+ \dotorline(0,-30)(0,-1){110}/(0,-30)(0,-140)%
+ \else\if\@tmpb U% undefined
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \putlratom{-31}{-230}{\@memberb}% % left or right type
+ {%
+ \WaveBonds%
+ \Put@Line(0,-30)(0,-1){110}% % single bond at 4
+ }%
+ \else\if\@tmpb W%beta single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=-10\relax
+ \yl@ydiff=30\relax
+ \putlratom{150}{54}{\@memberb}% % left or right type
+ \Put@Line(40,24)(5,3){100}% % single bond at 4
+ \if@wrongbdWd
+ \XyMTeXWarning{Wrong Bond-Modifier (W)}%
+ \fi
+%2013/06/27
+ \else\if\@tmpc U%beta undefined
+ \yl@xdiff=-10\relax
+ \yl@ydiff=30\relax
+ {%
+ \WaveBonds%
+ \Put@Line(40,24)(5,3){100}% % single bond at 4
+ }%
+ \putlratom{150}{54}{\@memberb}% % left or right type
+ \else\if\@tmpc B%beta
+ \yl@xdiff=-10\relax
+ \yl@ydiff=30\relax
+ {%
+ \thicklines%
+ \Put@Line(40,24)(5,3){100}% % single bond at 4
+ }%
+ \putlratom{150}{54}{\@memberb}% % left or right type
+ \else\if\@tmpc A%alpha
+ \yl@xdiff=-10\relax
+ \yl@ydiff=30\relax
+ \dotorline(40,24)(5,3){100}/(40,24)(140,84)%
+ \putlratom{150}{54}{\@memberb}% % left or right type
+%
+ \fi\fi\fi\fi
+ \else%
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \putlratom{-31}{-230}{\@memberb}% % left or right type
+ \Put@Line(0,-30)(0,-1){110}% % single bond at 4
+ \fi\fi\fi\fi\fi\fi%
+ \else% no clipping
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \putlratom{-31}{-230}{\@memberb}% % left or right type
+ \Put@Line(0,0)(0,-1){140}% % single bond at 4
+ \else\if\@tmpc B%(B) beta
+ \yl@xdiff=-30\relax
+ \yl@ydiff=110\relax
+ \putlatom{-42}{-230}{\@memberb}% % left type
+ {%
+ \thicklines%
+ \Put@Line(0,0)(-3,-5){72}% % single bond at 4
+ }%
+ \else\if\@tmpc A%(A) alpha
+ \yl@xdiff=31\relax
+ \yl@ydiff=110\relax
+ \putratom{41}{-230}{\@memberb}% % right type
+ \dotorline(0,0)(3,-5){72}/(0,0)(72,-120)%
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=-30\relax
+ \yl@ydiff=110\relax
+ \putlatom{-42}{-230}{\@memberb}% % left type
+ \Put@Line(0,0)(-3,-5){72}% % single bond at 4
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=31\relax
+ \yl@ydiff=110\relax
+ \putratom{41}{-230}{\@memberb}% % right type
+ \Put@Line(0,0)(3,-5){72}% % single bond at 4
+%2023/06/27
+ \else\if\@tmpc U% undefined
+ \yl@xdiff=-30\relax
+ \yl@ydiff=110\relax
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(-3,-5){72}% % single bond at 4
+ }%
+ \putlatom{-42}{-230}{\@memberb}% % left type
+ \else\if\@tmpc V% undefined
+ \yl@xdiff=31\relax
+ \yl@ydiff=110\relax
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(3,-5){72}% % wavy single bond at 1
+ }%
+ \putratom{41}{-230}{\@memberb}% % right type
+ \else\if\@tmpc d%(d) alpha
+ \yl@xdiff=-30\relax
+ \yl@ydiff=110\relax
+ \dotorline(0,0)(-3,-5){72}/(0,0)(-72,-120)%
+ \putlatom{-42}{-230}{\@memberb}% % left type
+ \else\if\@tmpc u%(u) beta
+ \yl@xdiff=31\relax
+ \yl@ydiff=110\relax
+ {%
+ \thicklines%
+ \Put@Line(0,0)(3,-5){72}% % single bond at 4
+ }%
+ \putratom{41}{-230}{\@memberb}% % right type
+%
+ \fi\fi\fi\fi
+ \fi\fi\fi\fi\fi%
+ \else\if\@tmpb D%double bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \putlratom{-31}{-230}{\@memberb}% % left or right type
+ \Put@Line(-12,0)(0,-1){140}% % double bond at 4
+ \Put@Line(12,0)(0,-1){140}% % double bond at 4
+ \else\if\@tmpb B%beta single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \putlratom{-31}{-230}{\@memberb}% % left or right type
+ {%
+ \thicklines%
+ \Put@Line(0,0)(0,-1){140}% % single bond at 4
+ }%
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \putlratom{-31}{-230}{\@memberb}% % left or right type
+ \dotorline(0,0)(0,-1){140}/(0,0)(0,-140)%
+ \else\if\@tmpb U% undefined
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \putlratom{-31}{-230}{\@memberb}% % left or right type
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(0,-1){140}% % single bond at 4
+ }%
+ \else\if\@tmpb W%beta single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=-10\relax
+ \yl@ydiff=30\relax
+ \putlratom{150}{54}{\@memberb}% % left or right type
+ \Put@Line(0,0)(5,3){140}% % single bond at 4
+ \if@wrongbdWd
+ \XyMTeXWarning{Wrong Bond-Modifier (W)}%
+ \fi
+%2013/06/27
+ \else\if\@tmpc U%beta undefined
+ \yl@xdiff=-10\relax
+ \yl@ydiff=30\relax
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(5,3){140}% % single bond at 4
+ }%
+ \putlratom{150}{54}{\@memberb}% % left or right type
+ \else\if\@tmpc B%beta
+ \yl@xdiff=-10\relax
+ \yl@ydiff=30\relax
+ {%
+ \thicklines%
+ \Put@Line(0,0)(5,3){140}% % single bond at 4
+ }%
+ \putlratom{150}{54}{\@memberb}% % left or right type
+ \else\if\@tmpc A%alpha
+ \yl@xdiff=-10\relax
+ \yl@ydiff=30\relax
+ \dotorline(0,0)(5,3){140}/(0,0)(140,84)%
+ \putlratom{150}{54}{\@memberb}% % left or right type
+%
+ \fi\fi\fi\fi
+ \else%
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \putlratom{-31}{-230}{\@memberb}% % left or right type
+ \Put@Line(0,0)(0,-1){140}% % single bond at 4
+ \fi\fi\fi\fi\fi\fi%
+ \fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% The macro |\@methsubstdL| is used to place substituents on a
+% left-teminal down-side methylene. A new bond modifier ``W'' is
+% added to typeset a terminal substituent.
+% \changes{v5.01}{2013/06/27}{bug fix SU to SV, SV to SU. Addition Su, Sd, WU, WA, WB}
+%
+% \begin{macro}{\@methsubstdL}
+% \begin{macrocode}
+\def\@methsubstdL{%
+\if@clip %clipping
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \Put@Line(0,-30)(0,-1){110}% % single bond at 4
+ \putlratom{-31}{-230}{\@memberb}% % left or right type
+ \else\if\@tmpc B%(B) beta
+ \yl@xdiff=-36\relax
+ \yl@ydiff=100\relax
+ {%
+ \thicklines%
+ \Put@Line(-18,-30)(-3,-5){60}% % single bond at 4
+ }%
+ \putlatom{-42}{-230}{\@memberb}% % left type
+ \else\if\@tmpc A%(A) alpha
+ \yl@xdiff=37\relax
+ \yl@ydiff=100\relax
+ \dotorline(18,-30)(3,-5){60}/(18,-30)(72,-120)%
+ \putratom{41}{-230}{\@memberb}% % right type
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=-36\relax
+ \yl@ydiff=100\relax
+ \Put@Line(-18,-30)(-3,-5){60}% % single bond at 4
+ \putlatom{-42}{-230}{\@memberb}% % left type
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=37\relax
+ \yl@ydiff=100\relax
+ \Put@Line(18,-30)(3,-5){60}% % single bond at 4
+ \putratom{41}{-230}{\@memberb}% % right type
+ \else\if\@tmpc U%(U) beta undefined%bug fix 2013/06/27 V-->U
+ \yl@xdiff=-36\relax
+ \yl@ydiff=100\relax
+ {%
+ \WaveBonds%
+ \Put@Line(-18,-30)(-3,-5){60}% % single bond at 4
+ }%
+ \putlatom{-42}{-230}{\@memberb}% % left type
+ \else\if\@tmpc V%(V) alpha undefined%bug fix 2013/06/27 U-->V
+ \yl@xdiff=37\relax
+ \yl@ydiff=100\relax
+ {%
+ \WaveBonds%
+ \Put@Line(18,-30)(3,-5){60}% % single bond at 4
+ }%
+ \putratom{41}{-230}{\@memberb}% % right type
+%2013/06/27
+ \else\if\@tmpc d%(d) alpha
+ \yl@xdiff=-36\relax
+ \yl@ydiff=100\relax
+ \dotorline(-18,-30)(-3,-5){60}/(-18,-30)(-78,-130)%
+ \putlatom{-42}{-230}{\@memberb}% % left type
+ \else\if\@tmpc u%(u) beta
+ \yl@xdiff=37\relax
+ \yl@ydiff=100\relax
+ {%
+ \thicklines%
+ \Put@Line(18,-30)(3,-5){60}% % single bond at 4
+ }%
+ \putratom{41}{-230}{\@memberb}% % right type
+%
+ \fi\fi
+ \fi\fi\fi\fi\fi\fi\fi%
+ \else\if\@tmpb D%double bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \Put@Line(-12,-30)(0,-1){110}% % double bond at 4
+ \Put@Line(12,-30)(0,-1){110}% % double bond at 4
+ \putlratom{-31}{-230}{\@memberb}% % left or right type
+ \else\if\@tmpb B%beta single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ {%
+ \thicklines%
+ \Put@Line(0,-30)(0,-1){110}% % single bond at 4
+ }%
+ \putlratom{-31}{-230}{\@memberb}% % left or right type
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \dotorline(0,-30)(0,-1){110}/(0,-30)(0,-140)%
+ \putlratom{-31}{-230}{\@memberb}% % left or right type
+ \else\if\@tmpb U% undefined
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ {%
+ \WaveBonds%
+ \Put@Line(0,-30)(0,-1){110}% % single bond at 4
+ }%
+ \putlratom{-31}{-230}{\@memberb}% % left or right type
+ \else\if\@tmpb W%beta single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=10\relax
+ \yl@ydiff=30\relax
+ \Put@Line(-40,24)(-5,3){100}% % single bond at 4
+ \putlatom{-150}{54}{\@memberb}% % lefttype
+ \if@wrongbdWdL
+ \XyMTeXWarning{Wrong Bond-Modifier (W)}%
+ \fi
+%2013/06/27
+ \else\if\@tmpc U%beta undefined
+ \yl@xdiff=10\relax
+ \yl@ydiff=30\relax
+ {%
+ \WaveBonds%
+ \Put@Line(-40,24)(-5,3){100}% % single bond at 4
+ }%
+ \putlatom{-150}{54}{\@memberb}% % left type
+ \else\if\@tmpc B%beta
+ \yl@xdiff=10\relax
+ \yl@ydiff=30\relax
+ {%
+ \thicklines%
+ \Put@Line(-40,24)(-5,3){100}% % single bond at 4
+ }%
+ \putlatom{-150}{54}{\@memberb}% % left type
+ \else\if\@tmpc A%alpha
+ \yl@xdiff=10\relax
+ \yl@ydiff=30\relax
+ \dotorline(-40,24)(-5,3){100}/(-40,24)(-140,84)%
+ \putlatom{-150}{54}{\@memberb}% % left type
+%
+ \fi\fi\fi\fi
+ \else%
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \Put@Line(0,-30)(0,-1){110}% % single bond at 4
+ \putlratom{-31}{-230}{\@memberb}% % left or right type
+ \fi\fi\fi\fi\fi\fi%
+\else% no clipping
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \Put@Line(0,0)(0,-1){140}% % single bond at 4
+ \putlratom{-31}{-230}{\@memberb}% % left or right type
+ \else\if\@tmpc B%(B) beta
+ \yl@xdiff=-30\relax
+ \yl@ydiff=110\relax
+ {%
+ \thicklines%
+ \Put@Line(0,0)(-3,-5){72}% % single bond at 4
+ }%
+ \putlatom{-42}{-230}{\@memberb}% % left type
+ \else\if\@tmpc A%(A) alpha
+ \yl@xdiff=31\relax
+ \yl@ydiff=110\relax
+ \dotorline(0,0)(3,-5){72}/(0,0)(72,-120)%
+ \putratom{41}{-230}{\@memberb}% % right type
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=-30\relax
+ \yl@ydiff=110\relax
+ \Put@Line(0,0)(-3,-5){72}% % single bond at 4
+ \putlatom{-42}{-230}{\@memberb}% % left type
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=31\relax
+ \yl@ydiff=110\relax
+ \Put@Line(0,0)(3,-5){72}% % single bond at 4
+ \putratom{41}{-230}{\@memberb}% % right type
+ \else\if\@tmpc U%(U) beta undefined%bug fix 2013/06/27 V-->U
+ \yl@xdiff=-30\relax
+ \yl@ydiff=110\relax
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(-3,-5){72}% % single bond at 4
+ }%
+ \putlatom{-42}{-230}{\@memberb}% % left type
+ \else\if\@tmpc V%(V) alpha undefined%bug fix 2013/06/27 U-->V
+ \yl@xdiff=31\relax
+ \yl@ydiff=110\relax
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(3,-5){72}% % single bond at 4
+ }%
+ \putratom{41}{-230}{\@memberb}% % right type
+%2013/06/27
+ \else\if\@tmpc d%(d) alpha
+ \yl@xdiff=-30\relax
+ \yl@ydiff=110\relax
+ \dotorline(0,0)(-3,-5){72}/(0,0)(-72,-120)%
+ \putlatom{-42}{-230}{\@memberb}% % left type
+ \else\if\@tmpc u%(u) beta
+ \yl@xdiff=31\relax
+ \yl@ydiff=110\relax
+ {%
+ \thicklines%
+ \Put@Line(0,0)(3,-5){72}% % single bond at 4
+ }%
+ \putratom{41}{-230}{\@memberb}% % right type
+%
+ \fi\fi
+ \fi\fi\fi\fi\fi\fi\fi%
+ \else\if\@tmpb D%double bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \Put@Line(-12,0)(0,-1){140}% % double bond at 4
+ \Put@Line(12,0)(0,-1){140}% % double bond at 4
+ \putlratom{-31}{-230}{\@memberb}% % left or right type
+ \else\if\@tmpb B%beta single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ {%
+ \thicklines%
+ \Put@Line(0,0)(0,-1){140}% % single bond at 4
+ }%
+ \putlratom{-31}{-230}{\@memberb}% % left or right type
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \dotorline(0,0)(0,-1){140}/(0,0)(0,-140)%
+ \putlratom{-31}{-230}{\@memberb}% % left or right type
+ \else\if\@tmpb U%beta undefined
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(0,-1){140}% % single bond at 4
+ }%
+ \putlratom{-31}{-230}{\@memberb}% % left or right type
+ \else\if\@tmpb W%beta single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=10\relax
+ \yl@ydiff=30\relax
+ \Put@Line(0,0)(-5,3){140}% % single bond at 4
+ \putlatom{-150}{54}{\@memberb}% % left type
+ \if@wrongbdWdL
+ \XyMTeXWarning{Wrong Bond-Modifier (W)}%
+ \fi
+%2013/06/27
+ \else\if\@tmpc U%beta undefined
+ \yl@xdiff=10\relax
+ \yl@ydiff=30\relax
+ {%
+ \WaveBonds%
+ \Put@Line(0,0)(-5,3){140}% % single bond at 4
+ }%
+ \putlatom{-150}{54}{\@memberb}% % left type
+ \else\if\@tmpc B%beta
+ \yl@xdiff=10\relax
+ \yl@ydiff=30\relax
+ {%
+ \thicklines%
+ \Put@Line(0,0)(-5,3){140}% % single bond at 4
+ }%
+ \putlatom{-150}{54}{\@memberb}% % left type
+ \else\if\@tmpc A%alpha
+ \yl@xdiff=10\relax
+ \yl@ydiff=30\relax
+ \dotorline(0,0)(-5,3){140}/(0,0)(-140,84)%
+ \putlatom{-150}{54}{\@memberb}% % left type
+%
+ \fi\fi\fi\fi
+ \else%
+ \yl@xdiff=31\relax
+ \yl@ydiff=90\relax
+ \Put@Line(0,0)(0,-1){140}% % single bond at 4
+ \putlratom{-31}{-230}{\@memberb}% % left or right type
+ \fi\fi\fi\fi\fi\fi%
+ \fi}%end of \@methsubstdL
+% \end{macrocode}
+% \end{macro}
+%
+% The macro |\@methsubstaL| is used to place substituents on a
+% left-teminal upper-side methylene. A new bond modifier ``W'' is
+% added to typeset a terminal substituent.
+% \changes{v5.01}{2013/06/27}{bug fix SU to SV, SV to SU. Addition Su, Sd, WU, WA, WB}
+%
+% \begin{macro}{\@methsubstaL}
+% \begin{macrocode}
+\def\@methsubstaL{%
+\if@aclip% %clipping
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \Put@Line(0,436)(0,1){110}% % single bond at 1
+ \putlratom{-31}{563}{\@memberb}% % left or right type
+ \else\if\@tmpc B%(B) beta
+ \yl@xdiff=-36\relax
+ \yl@ydiff=-27\relax
+ {%
+ \thicklines%
+ \Put@Line(-18,436)(-3,5){60}% % single bond at 1
+ }%
+ \putlatom{-42}{563}{\@memberb}% % left type
+ \else\if\@tmpc A%(A) alpha
+ \yl@xdiff=37\relax
+ \yl@ydiff=-27\relax
+ \dotorline(18,436)(3,5){60}/(18,436)(72,526)%
+ \putratom{41}{563}{\@memberb}% % right type
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=-36\relax
+ \yl@ydiff=-27\relax
+ \Put@Line(-18,436)(-3,5){60}% % single bond at 1
+ \putlatom{-42}{563}{\@memberb}% % left type
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=37\relax
+ \yl@ydiff=-27\relax
+ \Put@Line(18,436)(3,5){60}% % single bond at 1
+ \putratom{41}{563}{\@memberb}% % right type
+ \else\if\@tmpc U%(U) beta undefined%bug fix 2013/06/27 V-->U
+ \yl@xdiff=-36\relax
+ \yl@ydiff=-27\relax
+ {%
+ \WaveBonds%
+ \Put@Line(-18,436)(-3,5){60}% % single bond at 1
+ }%
+ \putlatom{-42}{563}{\@memberb}% % left type
+ \else\if\@tmpc V%(V) alpha undefined%bug fix 2013/06/27 U-->V
+ \yl@xdiff=37\relax
+ \yl@ydiff=-27\relax
+ {%
+ \WaveBonds%
+ \Put@Line(18,436)(3,5){60}% % single bond at 1
+ }%
+ \putratom{41}{563}{\@memberb}% % right type
+%2013/06/27
+ \else\if\@tmpc d%(d) alpha
+ \yl@xdiff=-36\relax
+ \yl@ydiff=-27\relax
+ \dotorline(-18,436)(-3,5){60}/(-18,436)(-78,536)%
+ \putlatom{-42}{563}{\@memberb}% % left type
+ \else\if\@tmpc u%(u) beta
+ \yl@xdiff=37\relax
+ \yl@ydiff=-27\relax
+ {%
+ \thicklines%
+ \Put@Line(18,436)(3,5){60}% % single bond at 1
+ }%
+ \putratom{41}{563}{\@memberb}% % right type
+%
+ \fi\fi
+ \fi\fi\fi\fi\fi\fi\fi%
+ \else\if\@tmpb D%double bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \Put@Line(-12,436)(0,1){110}% % double bond at 1
+ \Put@Line(12,436)(0,1){110}% % double bond at 1
+ \putlratom{-31}{563}{\@memberb}% % left or right type
+ \else\if\@tmpb B%beta single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ {%
+ \thicklines%
+ \Put@Line(0,436)(0,1){110}% % single bond at 1
+ }%
+ \putlratom{-31}{563}{\@memberb}% % left or right type
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \dotorline(0,436)(0,1){110}/(0,436)(0,546)%
+ \putlratom{-31}{563}{\@memberb}% % left or right type
+ \else\if\@tmpb U%beta undefined
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ {%
+ \WaveBonds%
+ \Put@Line(0,436)(0,1){110}% % single bond at 1
+ }%
+ \putlratom{-31}{563}{\@memberb}% % left or right type
+ \else\if\@tmpb W%beta single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=10\relax
+ \yl@ydiff=46\relax
+ \Put@Line(-40,382)(-5,-3){100}% % single bond at 1
+ \putlatom{-150}{276}{\@memberb}% % left type
+ \if@wrongbdWaL
+ \XyMTeXWarning{Wrong Bond-Modifier (W)}%
+ \fi
+%2013/06/27
+ \else\if\@tmpc U%undefined
+ \yl@xdiff=10\relax
+ \yl@ydiff=46\relax
+ {%
+ \WaveBonds%
+ \Put@Line(-40,382)(-5,-3){100}% % single bond at 1
+ }%
+ \putlatom{-150}{276}{\@memberb}% % left type
+ \else\if\@tmpc B%beta
+ \yl@xdiff=10\relax
+ \yl@ydiff=46\relax
+ {%
+ \thicklines%
+ \Put@Line(-40,382)(-5,-3){100}% % single bond at 1
+ }%
+ \putlatom{-150}{276}{\@memberb}% % left type
+ \else\if\@tmpc A%alpha
+ \yl@xdiff=10\relax
+ \yl@ydiff=46\relax
+ \dotorline(-40,382)(-5,-3){100}/(-40,382)(-140,322)%
+ \putlatom{-150}{276}{\@memberb}% % left type
+%
+ \fi\fi\fi\fi
+ \else%
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \Put@Line(0,436)(0,1){110}% % single bond at 1
+ \putlratom{-31}{563}{\@memberb}% % left or right type
+ \fi\fi\fi\fi\fi\fi%
+\else% % no clipping
+ \if\@tmpb S%single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \Put@Line(0,406)(0,1){140}% % single bond at 1
+ \putlratom{-31}{563}{\@memberb}% % left or right type
+ \else\if\@tmpc B%(B) beta
+ \yl@xdiff=-30\relax
+ \yl@ydiff=-37\relax
+ {%
+ \thicklines%
+ \Put@Line(0,406)(-3,5){72}% % single bond at 1
+ }%
+ \putlatom{-42}{563}{\@memberb}% % left type
+ \else\if\@tmpc A%(A) alpha
+ \yl@xdiff=31\relax
+ \yl@ydiff=-37\relax
+ \dotorline(0,406)(3,5){72}/(0,406)(72,526)%
+ \putratom{41}{563}{\@memberb}% % right type
+ \else\if\@tmpc b%(b) beta
+ \yl@xdiff=-30\relax
+ \yl@ydiff=-37\relax
+ \Put@Line(0,406)(-3,5){72}% % single bond at 1
+ \putlatom{-42}{563}{\@memberb}% % left type
+ \else\if\@tmpc a%(a) alpha
+ \yl@xdiff=31\relax
+ \yl@ydiff=-37\relax
+ \Put@Line(0,406)(3,5){72}% % single bond at 1
+ \putratom{41}{563}{\@memberb}% % right type
+ \else\if\@tmpc V%(V) beta undefined
+ \yl@xdiff=-30\relax
+ \yl@ydiff=-37\relax
+ {%
+ \WaveBonds%
+ \Put@Line(0,406)(-3,5){72}% % single bond at 1
+ }%
+ \putlatom{-42}{563}{\@memberb}% % left type
+ \else\if\@tmpc U%(U) alpha undefined
+ \yl@xdiff=31\relax
+ \yl@ydiff=-37\relax
+ {%
+ \WaveBonds%
+ \Put@Line(0,406)(3,5){72}% % single bond at 1
+ }%
+ \putratom{41}{563}{\@memberb}% % right type
+%2013/06/27
+ \else\if\@tmpc d%(d) alpha
+ \yl@xdiff=-30\relax
+ \yl@ydiff=-37\relax
+ \dotorline(0,406)(-3,5){72}/(0,406)(-72,526)%
+ \putlatom{-42}{563}{\@memberb}% % left type
+ \else\if\@tmpc u%(u) beta
+ \yl@xdiff=31\relax
+ \yl@ydiff=-37\relax
+ {%
+ \thicklines%
+ \Put@Line(0,406)(3,5){72}% % single bond at 1
+ }%
+ \putratom{41}{563}{\@memberb}% % right type
+%
+ \fi\fi
+ \fi\fi\fi\fi\fi\fi\fi%
+ \else\if\@tmpb D%double bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \Put@Line(-12,406)(0,1){140}% % double bond at 1
+ \Put@Line(12,406)(0,1){140}% % double bond at 1
+ \putlratom{-31}{563}{\@memberb}% % left or right type
+ \else\if\@tmpb B%beta single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ {%
+ \thicklines%
+ \Put@Line(0,406)(0,1){140}% % single bond at 1
+ }%
+ \putlratom{-31}{563}{\@memberb}% % left or right type
+ \else\if\@tmpb A%alpha single bond
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \dotorline(0,406)(0,1){140}/(0,406)(0,546)%
+ \putlratom{-31}{563}{\@memberb}% % left or right type
+ \else\if\@tmpb U%beta undefined
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ {%
+ \WaveBonds%
+ \Put@Line(0,406)(0,1){140}% % single bond at 1
+ }%
+ \putlratom{-31}{563}{\@memberb}% % left or right type
+ \else\if\@tmpb W%beta single bond
+ \ifx\@tmpc\empty%
+ \yl@xdiff=10\relax
+ \yl@ydiff=58\relax
+ \Put@Line(0,406)(-5,-3){120}% % single bond at 1
+ \putlatom{-130}{276}{\@memberb}% % left type
+ \if@wrongbdWaL
+ \XyMTeXWarning{Wrong Bond-Modifier (W)}%
+ \fi
+%2013/06/27
+ \else\if\@tmpc U%undefined
+ \yl@xdiff=10\relax
+ \yl@ydiff=58\relax
+ {%
+ \WaveBonds%
+ \Put@Line(0,406)(-5,-3){120}% % single bond at 1
+ }%
+ \putlatom{-130}{276}{\@memberb}% % left type
+ \else\if\@tmpc B%beta
+ \yl@xdiff=10\relax
+ \yl@ydiff=58\relax
+ {%
+ \thicklines%
+ \Put@Line(0,406)(-5,-3){120}% % single bond at 1
+ }%
+ \putlatom{-130}{276}{\@memberb}% % left type
+ \else\if\@tmpc A%alpha
+ \yl@xdiff=10\relax
+ \yl@ydiff=58\relax
+ \dotorline(0,406)(-5,-3){120}/(0,406)(-120,334)%
+ \putlatom{-130}{276}{\@memberb}% % left type
+%
+ \fi\fi\fi\fi
+ \else%
+ \yl@xdiff=31\relax
+ \yl@ydiff=-17\relax
+ \Put@Line(0,406)(0,1){140}% % single bond at 1
+ \putlratom{-31}{563}{\@memberb}% % left or right type
+ \fi\fi\fi\fi\fi\fi%
+ \fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Setting Bonds}
+% \subsection{Outer Skeletal Bonds}
+%
+% The macros |\SKbondB| and |\SKbondA| are used to typeset
+% outer skeletal bonds of a methylene chain (|\..methylene|)
+%
+% \begin{macro}{\SKbondB}
+% \begin{macrocode}
+\def\SKbondB{%
+ \ifx\bbb\empty%
+ \ifx\ccc\empty%
+ \Put@Line(0,406)(5,-3){171}% %bond 1-2
+ \else%
+ \Put@Line(0,406)(5,-3){136}% %bond 1-2
+ \fi%
+ \else%
+ \ifx\ccc\empty%
+ \Put@Line(35,385)(5,-3){136}% %bond 1-2
+ \else%
+ \Put@Line(35,385)(5,-3){100}% %bond 1-2
+ \fi%
+ \fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\SKbondA}
+% \begin{macrocode}
+\def\SKbondA{%
+ \ifx\bbb\empty%
+ \ifx\aaa\empty%
+ \Put@Line(0,406)(-5,-3){171}% %bond 1-6
+ \else%
+ \Put@Line(0,406)(-5,-3){136}% %bond 1-6
+ \fi%
+ \else%
+ \ifx\aaa\empty%
+ \Put@Line(-35,385)(-5,-3){136}% %bond 1-6
+ \else%
+ \Put@Line(-35,385)(-5,-3){100}% %bond 1-6
+ \fi%
+ \fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% The macros |\SKbondBi| and |\SKbondAi| are used to typeset
+% outer skeletal bonds of a methylene chain (inverse type |\..methylenei|).
+%
+% \begin{macro}{\SKbondBi}
+% \begin{macrocode}
+\def\SKbondBi{%
+ \begin{sfpicture}(0,0)(0,0)
+ \ifx\bbb\empty%
+ \ifx\ccc\empty%
+ \Put@Line(0,0)(5,3){171}% %bond 4-3
+ \else%
+ \Put@Line(0,0)(5,3){136}% %bond 4-3
+ \fi%
+ \else%
+ \ifx\ccc\empty%
+ \Put@Line(35,21)(5,3){138}% %bond 4-3
+ \else%
+ \Put@Line(35,21)(5,3){100}% %bond 4-3
+ \fi%
+ \fi\end{sfpicture}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\SKbondAi}
+% \begin{macrocode}
+\def\SKbondAi{%
+ \begin{sfpicture}(0,0)(0,0)
+ \ifx\bbb\empty%
+ \ifx\aaa\empty%
+ \Put@Line(0,0)(-5,3){171}% %bond 4-5
+ \else%
+ \Put@Line(0,0)(-5,3){136}% %bond 4-5
+ \fi%
+ \else%
+ \ifx\aaa\empty%
+ \Put@Line(-35,21)(-5,3){138}% %bond 4-5
+ \else%
+ \Put@Line(-35,21)(-5,3){100}% %bond 4-5
+ \fi%
+ \fi\end{sfpicture}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Inner Double Bonds}
+%
+% The macros |\bondB| is used to place a line of
+% a double bond in the (5,-3) direction at the lower side
+% of an outer skeletal bond.
+%
+% \begin{macro}{\bondB}
+% \begin{macrocode}
+\def\bondB{%
+ \ifx\bbb\empty%
+ \ifx\ccc\empty%
+ \Put@Line(6,364)(5,-3){126}% %double bond 1-2
+ \else%
+ \Put@Line(6,364)(5,-3){100}% %double bond 1-2
+ \fi%
+ \else%
+ \ifx\ccc\empty%
+ \Put@Line(35,340)(5,-3){100}% %double bond 1-2
+ \else%
+ \Put@Line(35,352)(5,-3){100}% %double bond 1-2
+ \fi% % line <1OO not available
+ \fi%
+ }%
+% \end{macrocode}
+% \end{macro}
+%
+% The macros |\bondBB| is used to place a line of
+% a double bond in the (5,-3) direction at the upper side
+% of an outer skeletal bond.
+%
+% \begin{macro}{\bondBB}
+% \begin{macrocode}
+\def\bondBB{%
+ \ifx\bbb\empty%
+ \ifx\ccc\empty%
+ \Put@Line(42,420)(5,-3){126}% %double bond 1-2
+ \else%
+ \Put@Line(42,420)(5,-3){100}% %double bond 1-2
+ \fi%
+ \else%
+ \ifx\ccc\empty%
+ \Put@Line(52,412)(5,-3){110}% %double bond 1-2
+ \else%
+ \Put@Line(52,412)(5,-3){100}% %double bond 1-2
+ \fi% % line <1OO not available
+ \fi%
+ }%
+% \end{macrocode}
+% \end{macro}
+%
+% The macros |\bondA| is used to place a line of
+% a double bond in the (-5,-3) direction at the lower
+% side of an outer skeletal bond.
+%
+% \begin{macro}{\bondA}
+% \begin{macrocode}
+\def\bondA{%
+ \ifx\bbb\empty%
+ \ifx\aaa\empty%
+ \Put@Line(-6,364)(-5,-3){126}% %double bond 1-6
+ \else%
+ \Put@Line(-6,364)(-5,-3){100}% %double bond 1-6
+ \fi%
+ \else%
+ \ifx\aaa\empty%
+ \Put@Line(-35,340)(-5,-3){100}% %double bond 1-6
+ \else%
+ \Put@Line(-35,352)(-5,-3){100}% %double bond 1-6
+ \fi% % line <1OO not available
+ \fi%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% The macros |\bondAA| is used to place a line of
+% a double bond in the (-5,-3) direction at the upper side
+% of an outer skeletal bond.
+%
+% \begin{macro}{\bondAA}
+% \begin{macrocode}
+\def\bondAA{%
+ \ifx\bbb\empty%
+ \ifx\aaa\empty%
+ \Put@Line(-42,420)(-5,-3){126}% %double bond 1-6
+ \else%
+ \Put@Line(-42,420)(-5,-3){100}% %double bond 1-6
+ \fi%
+ \else%
+ \ifx\aaa\empty%
+ \Put@Line(-52,412)(-5,-3){100}% %double bond 1-6
+ \else%
+ \Put@Line(-52,412)(-5,-3){100}% %double bond 1-6
+ \fi% % line <1OO not available
+ \fi%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% The bond-setting commands with sufix ``i'' are used in the definitions
+% of commands such as |\...methylenei|.
+%
+% The macros |\bondBi| is used to place a line of
+% a double bond in the (5,3) direction at the upper side
+% of an outer skeletal bond.
+%
+% \begin{macro}{\bondBi}
+% \begin{macrocode}
+ \def\bondBi{%
+ \ifx\bbb\empty%
+ \ifx\ccc\empty%
+ \Put@Line(6,42)(5,3){126}% %double bond 4-3
+ \else%
+ \Put@Line(6,42)(5,3){100}% %double bond 4-3
+ \fi%
+ \else%
+ \ifx\ccc\empty%
+ \Put@Line(35,66)(5,3){100}% %double bond 4-3
+ \else%
+ \Put@Line(35,60)(5,3){100}% %double bond 4-3
+ \fi% % line <1OO not available
+ \fi%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% The macros |\bondBBi| is used to place a line of
+% a double bond in the (5,3) direction at the lower
+% side of an outer skeletal bond.
+%
+% \begin{macro}{\bondBBi}
+% \begin{macrocode}
+ \def\bondBBi{%
+ \ifx\bbb\empty%
+ \ifx\ccc\empty%
+% \Put@Line(6,42)(5,3){126}% %double bond 4-3
+ \Put@Line(42,-14)(5,3){126}% %double bond 1-6
+ \else%
+% \Put@Line(6,42)(5,3){100}% %double bond 4-3
+% \Put@Line(42,-14)(5,3){100}% %double bond 1-6
+ \Put@Line(30,-14)(5,3){100}% %double bond 1-6
+ \fi%
+ \else%
+ \ifx\ccc\empty%
+% \Put@Line(35,66)(5,3){100}% %double bond 4-3
+% \Put@Line(52,6)(5,3){100}% %double bond 1-6
+ \Put@Line(52,0)(5,3){100}% %double bond 1-6
+ \else%
+% \Put@Line(35,60)(5,3){100}% %double bond 4-3
+ \Put@Line(52,0)(5,3){100}% %double bond 4-5
+ \fi% % line <1OO not available
+ \fi%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% The macros |\bondAi| is used to place a line of
+% a double bond in the (-5,3) direction at the upper
+% side of an outer skeletal bond.
+
+% \begin{macro}{\bondAi}
+% \begin{macrocode}
+ \def\bondAi{%
+ \ifx\bbb\empty%
+ \ifx\aaa\empty%
+ \Put@Line(-6,42)(-5,3){126}% %double bond 4-5
+ \else%
+ \Put@Line(-6,42)(-5,3){100}% %double bond 4-5
+ \fi%
+ \else%
+ \ifx\aaa\empty%
+ \Put@Line(-35,66)(-5,3){100}% %double bond 4-5
+ \else%
+ \Put@Line(-35,60)(-5,3){100}% %double bond 4-5
+ \fi% % line <1OO not available
+ \fi%
+ }%
+% \end{macrocode}
+% \end{macro}
+%
+% The macros |\bondAAi| is used to place a line of
+% a double bond in the (-5,3) direction at the lower
+% side of an outer skeletal bond.
+%
+% \begin{macro}{\bondAAi}
+% \begin{macrocode}
+ \def\bondAAi{%
+ \ifx\bbb\empty%
+ \ifx\aaa\empty%
+% \Put@Line(-6,42)(-5,3){126}% %double bond 4-5
+ \Put@Line(-42,-14)(-5,3){126}% %double bond 1-6
+ \else%
+% \Put@Line(-6,42)(-5,3){100}% %double bond 4-5
+ \Put@Line(-42,-14)(-5,3){100}% %double bond 1-6
+ \fi%
+ \else%
+ \ifx\aaa\empty%
+% \Put@Line(-35,66)(-5,3){100}% %double bond 4-5
+ \Put@Line(-52,6)(-5,3){100}% %double bond 1-6
+ \else%
+% \Put@Line(-35,60)(-5,3){100}% %double bond 4-5
+ \Put@Line(-52,0)(-5,3){100}% %double bond 4-5
+ \fi% % line <1OO not available
+ \fi%
+ }%
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Switches}
+%
+% \begin{macro}{\if@adoublebond}
+% \begin{macro}{\if@bdoublebond}
+% \begin{macro}{\if@Adoublebond}
+% \begin{macro}{\if@adoublebond}
+% \begin{macro}{\reset@double}
+% \begin{macrocode}
+\newif\if@adoublebond \@adoublebondfalse
+\newif\if@bdoublebond \@bdoublebondfalse
+\newif\if@Adoublebond \@Adoublebondfalse
+\newif\if@Bdoublebond \@Bdoublebondfalse
+\def\reset@double{%
+\@adoublebondfalse\@bdoublebondfalse
+\@Adoublebondfalse\@Bdoublebondfalse}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\if@linterchainsw}
+% \begin{macro}{\if@rinterchainsw}
+% \begin{macro}{\reset@interchainsw}
+% \begin{macrocode}
+\newif\if@linterchainsw \@linterchainswfalse
+\newif\if@rinterchainsw \@rinterchainswfalse
+\def\reset@interchainsw{\@linterchainswfalse\@rinterchainswfalse}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \section{Trimethylene}
+% \subsection{Normal direction}
+%
+% A trimethylene (or propane) and its hetera analogs can be typeset
+% by the command |\trimethylene|, which is mainly based on
+% two inner commands: |\yltrimethyleneposition| for adjusting a
+% substitution site and |\@@trimethylene| for
+% placing hetero atoms, double bonds, and substituents.
+%
+% \begin{macro}{\@@trimethylene}
+% \begin{verbatim}
+% \@@trimethylene{ATOMLIST}{BONDLIST}{TERMswitch}{Adjust}
+%
+% <TERMswitch>
+% 0: all positions
+% 1: positions bbb and ccc
+% 2: positions aaa and bbb
+%
+% bbb
+% 2
+% a / ` b
+% 1 3
+% aaa ccc
+%
+% <Adjust>
+% a positive or negative integer to adjust locant numbers
+% \end{verbatim}
+%
+% \changes{v5.00}{2010/10/01}{For bond coloring}
+% \begin{macrocode}
+\def\@@trimethylene#1#2#3#4{%
+\leavevmode
+\iniatom\iniflag%initialize
+\test@vrtx@trimethy{#1}{#4}%
+%\test@vertix@sixv{#1}{a}{b}{c}{@}{@}{@}%
+\begin{sfpicture}(450,480)(0,0)%
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+ \Put@Direct(171,-303){\SKbondB}% bond between 1 and 2
+ \Put@Direct(171,-303){\SKbondA}% bond between 1 and 6
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\if@adoublebond\relax\Put@Direct(171,-303){\bondA}\fi
+\if@bdoublebond\relax\Put@Direct(171,-303){\bondB}\fi
+\if@Adoublebond\relax\Put@Direct(171,-303){\bondAA}\fi
+\if@Bdoublebond\relax\Put@Direct(171,-303){\bondBB}\fi
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\test@termcnt=#3\relax
+%\set@hetatom@methyl{#1}{0}{0}{4}{0}%
+\set@hetatom@methyl{#1}{#4}{0}{4}{0}%
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\@forsemicol\member:=#2\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\@tmpaa=\@tmpa \advance\@tmpaa by#4\relax
+\ifx\@memberb\@yl\else
+\ifcase\@tmpaa%0 omit
+\or
+ \ifcase#3
+ \setBScolor{\if@aclip \@cliptrue \else \@clipfalse\fi
+ \Put@Direct(0,0){\@methsubstdL}}%
+ \or\relax
+ \or
+ \setBScolor{\if@aclip \@cliptrue \else \@clipfalse\fi
+ \Put@Direct(0,0){\@methsubstdL}}%
+ \fi
+\or
+\setBScolor{\if@bclip \@acliptrue \else \@aclipfalse\fi
+ \Put@Direct(171,-303){\@methsubsta}}%
+\or
+ \ifcase#3
+ \setBScolor{\if@cclip \@cliptrue\else \@clipfalse\fi
+ \Put@Direct(342,0){\@methsubstd}}%
+ \or
+ \setBScolor{\if@cclip \@cliptrue\else \@clipfalse\fi
+ \Put@Direct(342,0){\@methsubstd}}%
+ \or\relax
+ \fi
+\fi%end of ifcase
+\fi\fi
+}%
+\end{sfpicture}}% end of \@@trimethylene
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\test@vrtx@trimethy}
+% \changes{v2.00}{1998/12/21}{New command: \cs{test@vrtx@trimethy}}
+% \begin{macrocode}
+\def\test@vrtx@trimethy#1#2{%
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\twoch@r\@membera{}%
+\@tmpaa=\@tmpa \advance\@tmpaa by#2\relax
+\ifcase\@tmpaa%
+ \or \if\@tmpb s\relax \xdef\aaa{}\else\if\@tmpb h\relax
+ \xdef\aaa{@}\else\xdef\aaa{@}\fi\fi
+ \or \if\@tmpb s\relax \xdef\bbb{}\else\if\@tmpb h\relax
+ \xdef\bbb{@}\else\xdef\bbb{@}\fi\fi
+ \or \if\@tmpb s\relax \xdef\ccc{}\else\if\@tmpb h\relax
+ \xdef\ccc{@}\else\xdef\ccc{@}\fi\fi
+\fi\fi}}
+% \end{macrocode}
+% \end{macro}
+%
+% The |\yltrimethyleneposition| is used to adjust
+% substitution sites for the command |\@@trimethylene|.
+% \changes{v5.01}{2013/06/22}{bug fix}
+%
+% \begin{macro}{\yltrimethyleneposition}
+% \begin{verbatim}
+% \yltrimethylene{ATOMLIST}{BONDLIST}{TERMswitch}{Adjust}
+%
+% <TERMswitch>
+% 0: all positions
+% 1: positions bbb and ccc
+% 2: positions aaa and bbb
+%
+% bbb
+% 2
+% a / ` b
+% 1 3
+% aaa ccc
+%
+% <Adjust>
+% a positive or negative integer to adjust locant numbers
+% \end{verbatim}
+%
+% \changes{v5.01}{2013/03/29}{bug fix on a terminal position}
+% \changes{v5.01}{2013/07/20}{bug fix}
+% \begin{macrocode}%
+\def\yltrimethyleneposition#1#2#3#4{%
+\iniatom\iniflag%initialize2013/06/22
+\reset@@yl%%2013/07/20bug fix
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\twoch@r\@membera{}%
+\@tmpaa=\@tmpa \advance\@tmpaa by#4\relax
+\if\@tmpb s\else%2013/06/22added for bug fix
+\ifcase\@tmpaa%
+ \or \def\aaa{@}%\def\aaa{\@memberb}%
+ \or \def\bbb{@}%\def\bbb{\@memberb}%
+ \or \def\ccc{@}%\def\ccc{\@memberb}%
+\fi\fi
+\fi
+}%
+\@@ylswfalse%%%\@reset@ylsw
+\@forsemicol\member:=#2\do{\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\@tmpaa=\@tmpa \advance\@tmpaa by#4\relax
+\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi
+\if@@ylsw
+\ifcase\@tmpaa%0 omit
+\or
+ \ifcase#3
+ \ifx\aaa\empty
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% subst. on 1
+ \else
+ \if@linterchainsw%interchain position
+ \gdef\@ylii{0}\gdef\@yli{40}\global\@ylswtrue% subst. on 1
+ \else% terminal position
+% \gdef\@ylii{40}\gdef\@yli{-24}\global\@ylswtrue% subst. on 1
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% subst. on 1%bug fix 2013/03/29
+ \fi
+ \fi
+ \or\relax
+ \or
+ \ifx\aaa\empty
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% subst. on 1
+ \else
+ \if@linterchainsw%interchain position
+ \gdef\@ylii{0}\gdef\@yli{40}\global\@ylswtrue% subst. on 1
+ \else% terminal position
+ \gdef\@ylii{40}\gdef\@yli{-24}\global\@ylswtrue% subst. on 1
+ \fi
+ \fi
+ \fi
+\or
+ \ifx\bbb\empty
+ \gdef\@ylii{-171}\gdef\@yli{-103}\global\@ylswtrue% subst. on 2
+ \else
+ \gdef\@ylii{-171}\gdef\@yli{-133}\global\@ylswtrue% subst. on 2
+ \fi
+\or
+ \ifcase#3
+ \ifx\ccc\empty
+ \gdef\@ylii{-342}\gdef\@yli{0}\global\@ylswtrue% subst. on 3
+ \else
+ \if@rinterchainsw%interchain position
+ \gdef\@ylii{-342}\gdef\@yli{40}\global\@ylswtrue% subst. on 3
+ \else
+ \gdef\@ylii{-382}\gdef\@yli{-24}\global\@ylswtrue% subst. on 3
+ \fi
+ \fi
+ \or
+ \ifx\ccc\empty
+ \gdef\@ylii{-342}\gdef\@yli{0}\global\@ylswtrue% subst. on 3
+ \else
+ \if@rinterchainsw%interchain position
+ \gdef\@ylii{-342}\gdef\@yli{40}\global\@ylswtrue% subst. on 3
+ \else
+ \gdef\@ylii{-382}\gdef\@yli{-24}\global\@ylswtrue% subst. on 3
+ \fi
+ \fi
+ \or\relax
+ \fi
+\fi%end of ifcase
+\fi}}% end of \yltrimethyleneposition
+% \end{macrocode}
+% \end{macro}
+%
+% The counter |\test@termcnt|, which is equal to
+% the argument \#3 of command |\@@trimethylene|,
+% is used for testing a terminal point.
+%
+% \begin{macro}{\test@termcnt}
+% \changes{v2.00}{1998/12/21}{New command: \cs{test@termcnt}}
+% \begin{macrocode}
+\newcount\test@termcnt
+% \end{macrocode}
+% \end{macro}
+%
+% The |\set@hetatom@methyl| is used to set a hetero atom
+% at each vertex in the command |\@@trimethylene|.
+%
+% \begin{macro}{\set@hetatom@methyl}
+% \changes{v2.00}{1998/12/20}{New command: \cs{set@hetatom@methyl}}
+% \begin{macrocode}
+\def\set@hetatom@methyl#1#2#3#4#5{%
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+%\expandafter\twoch@r\@membera{}%
+\expandafter\twoCH@R\@membera//%
+\ifnum#5 < 0\relax%
+\@tmpaa=-\@tmpa\relax \advance\@tmpaa by#2\relax%
+\else\@tmpaa=\@tmpa\relax \advance\@tmpaa by#2\relax \fi
+\ifnum\@tmpaa >#3\relax%
+\ifnum\@tmpaa <#4\relax%
+\ifcase\@tmpaa%
+\or%position 1 <--- position 6 of set@hetatom@sixv
+ \ifnum\test@termcnt=1\else%not terminal point (left)
+ \if\@tmpb h\relax%
+ \@acliptrue%
+ \putlatom{0}{30}{\@memberb}% % right type
+ \else\if\@tmpb s\relax%
+ \@aclipfalse%
+% \putlatom{-4}{0}{\@memberb}% % right type
+ \putlatom{0}{0}{\@memberb}% % right type
+ \else\if\@tmpb a\relax%omit fused position
+ \else
+ \@acliptrue%
+ \putlatom{36}{-23}{\@memberb}% % left type
+ \fi\fi\fi
+ \fi
+\or%position 2 <--- position 1 of set@hetatom@sixv
+ \if\@tmpb h\relax%
+ \@bcliptrue%
+ \putratom{171}{53}{\@memberb}% % right type
+ \else\if\@tmpb s\relax%
+ \@bclipfalse%
+ \putratom{171}{103}{\@memberb}% % right type
+ \else\if\@tmpb a\relax%omit fused position
+ \else
+ \@bcliptrue%
+% \putratom{140}{53}{\@memberb}% % right type
+ \putratom{140}{65}{\@memberb}% % right type
+ \fi\fi\fi
+\or%position 3 <--- position 2 of set@hetatom@sixv
+ \ifnum\test@termcnt=2\else%not terminal point (right)
+ \if\@tmpb h\relax
+ \@ccliptrue%
+% \putratom{320}{30}{\@memberb}% % right type
+ \putratom{330}{30}{\@memberb}% % right type
+ \else\if\@tmpb s\relax
+ \@cclipfalse%
+ \putratom{346}{0}{\@memberb}% % right type
+ \else\if\@tmpb a\relax%omit fused position
+ \else
+ \@ccliptrue%
+ \putratom{306}{-23}{\@memberb}% % right type
+ \fi\fi\fi
+ \fi
+\fi% end of ifcase
+\fi\fi\fi}}% end of the macro \set@hetatom@methyl
+% \end{macrocode}
+% \end{macro}
+%
+% The macro |\trimethylene| has two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+%
+% \begin{macro}{\trimethylene}
+% \begin{macro}{\@trimethylene}
+%
+% \begin{verbatim}
+%
+% bbb
+% 2
+% a / ` b (or uppercase letters)
+% / `
+% 1 3
+% aaa ccc
+% \end{verbatim}
+%
+%
+% \begin{verbatim}
+% \trimethylene[BONDLIST]{ATOMLIST}{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one character a, A, b, or B
+% each of which indicates the presence of an inner (endcyclic) double
+% bond on the corresponding position. A lowercase letter is used
+% to typeset a double bond at a lower-side of an outer skeletal bond,
+% while an uppercase letter typesets a double bond at a upper-side of
+% an outer skeletal bond.
+% (Note that the option `A' represents an aromatic circle in
+% commands |\sixheterov| etc.
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% [] or none : no double bond
+% a : 1,2-double bond
+% A : 1,2-double bond in an opposite side
+% b : 2,3-double bond
+% B : 1,2-double bond in an opposite side
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+%
+% ATOMLIST: list of heteroatoms (max 3 atoms)
+%
+% for n = 1 to 3
+%
+% n==? : Hetero atom, e.g. N, O, etc. at n-position,
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 3
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+% nW : terminal single bond (n=1 or 3)
+%
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \trimethylene{1==N}{1==Cl;2==F}
+% \trimethylene[b]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+%
+% The definition of |\trimethylene| uses a picture environment and
+% consists of the following unit processes:
+% \begin{enumerate}
+% \item adjusting substitution site by
+% |\yltrimethyleneposition|
+% \item treating atom list,
+% placing outer skeletons, inner double bonds,
+% setting hetero atoms, and
+% placing substituents by |\@@trimethylene|.
+% \end{enumerate}
+%
+% \changes{v3.01}{2002/4/30}{Replaced by \cs{ShiftPicEnv}}
+%
+% \begin{macrocode}
+\def\trimethylene{%
+\@ifnextchar[{\@trimethylene[@}{\@trimethylene[]}}
+\def\@trimethylene[#1]#2#3{%
+\iniflag\iniatom%
+\@reset@ylsw%
+\reset@interchainsw%
+\yltrimethyleneposition{#2}{#3}{0}{0}%
+\begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(450,480)(-50,-180){trimethylene}%2002/4/30 by S. Fujita
+(50,180)%
+\reset@double%
+\@tfor\member:=#1\do{%
+\if\member a\relax
+\@adoublebondtrue
+\else\if\member b\relax
+\@bdoublebondtrue
+\else\if\member A\relax
+\@Adoublebondtrue
+\else\if\member B\relax
+\@Bdoublebondtrue%
+%\else
+% \expandafter\twoCH@@R\member//%
+% \set@fusion@trimeth%
+\fi\fi\fi\fi}%
+\@wrongbdWatrue%
+\@wrongbdWdfalse%
+ \Put@Direct(0,0){\@@trimethylene{#2}{#3}{0}{0}}%
+%
+%for fused rings
+%shifted for coloring skeletal bond 2010/10/01
+%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member a\relax%dummy
+\else\if\member b\relax%dummy
+\else\if\member A\relax%dummy
+\else\if\member B\relax%dummy
+\else
+ \expandafter\twoCH@@R\member//%
+ \set@fusion@trimeth%
+\fi\fi\fi\fi}}%
+\end{ShiftPicEnv}%
+}% end of \trimethylene \@trimethylene
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The inner command |\set@fusion@trimeth| is used for typesetting
+% a fused ring at each bond represented by |\@@tmpa|. Warnings
+% concerning mismatched ring-fusions are based on the command
+% |\FuseWarning|.
+%
+% \begin{macro}{\set@fusion@trimeth}
+% \changes{v2.00}{1998/12/21}{New command: \cs{set@fusion@trimeth}}
+% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring}
+% \begin{macrocode}
+\def\set@fusion@trimeth{%
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+\if\@@tmpa a\relax%
+ \putlratom{0}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}%
+ \else\if\@@tmpa A\relax%
+ \putlratom{171}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}%
+ \else\if\@@tmpa b\relax%
+ \putlratom{171}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}%
+ \else\if\@@tmpa B\relax%
+ \putlratom{342}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}%
+ \fi\fi\fi\fi
+\global\let\FuseWarning=\FuseW@rning%added 2010/10/01
+}% end of the macro \set@fusion@trimeth
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Inverse direction}
+%
+% A trimethylene (or propane) and its hetera analogs can be typeset
+% by the command |\trimethylenei|, which is mainly based on
+% two inner commands: |\yltrimethyleneiposition| for adjusting a
+% substitution site and |\@@trimethylenei| for
+% placing hetero atoms, double bonds, and substituents.
+%
+% \begin{macro}{\@@trimethylenei}
+% \begin{verbatim}
+% \@@trimethylenei{ATOMLIST}{BONDLIST}{TERMswitch}{Adjust}
+%
+% <TERMswitch>
+% 0: all positions
+% 1: positions bbb and ccc
+% 2: positions aaa and bbb
+%
+% aaa ccc
+% 1 3
+% a ` / b
+% ` /
+% 2
+% bbb
+%
+% <Adjust>
+% a positive or negative integer to adjust locant numbers
+% \end{verbatim}
+%
+% \changes{v5.00}{2010/10/01}{For bond coloring}
+% \begin{macrocode}
+\def\@@trimethylenei#1#2#3#4{%
+\leavevmode
+\iniatom\iniflag%initialize
+\test@vrtx@trimethy{#1}{#4}%
+%\test@vertix@sixv{#1}{a}{b}{c}{@}{@}{@}%
+\begin{sfpicture}(450,480)(0,0)
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+ \Put@Direct(171,0){\SKbondAi}% bond between 1 and 2
+ \Put@Direct(171,0){\SKbondBi}% bond between 2 and 3
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\if@adoublebond\relax\Put@Direct(171,0){\bondAi}\fi
+\if@bdoublebond\relax\Put@Direct(171,0){\bondBi}\fi
+\if@Adoublebond\relax\Put@Direct(171,0){\bondAAi}\fi
+\if@Bdoublebond\relax\Put@Direct(171,0){\bondBBi}\fi
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\test@termcnt=#3\relax
+%\set@hetatom@methyli{#1}{0}{0}{4}{0}%
+\set@hetatom@methyli{#1}{#4}{0}{4}{0}%
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\@forsemicol\member:=#2\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\@tmpaa=\@tmpa \advance\@tmpaa by#4\relax
+\ifx\@memberb\@yl\else
+\ifcase\@tmpaa%0 omit
+\or
+ \ifcase#3
+ \setBScolor{\Put@Direct(0,-303){\@methsubstaL}}%
+ \or\relax
+ \or
+ \setBScolor{\Put@Direct(0,-303){\@methsubstaL}}%
+ \fi
+\or
+\setBScolor{\if@bclip \@cliptrue \else \@clipfalse\fi
+ \Put@Direct(171,0){\@methsubstd}}%
+\or
+ \ifcase#3
+ \setBScolor{\if@cclip \@acliptrue\else \@aclipfalse\fi
+ \Put@Direct(342,-303){\@methsubsta}}%
+ \or
+ \setBScolor{\if@cclip \@acliptrue\else \@aclipfalse\fi
+ \Put@Direct(342,-303){\@methsubsta}}%
+ \or\relax
+ \fi
+\fi%end of ifcase
+\fi\fi
+}%
+\end{sfpicture}}% end of \@@trimethylenei
+% \end{macrocode}
+% \end{macro}
+%
+% The |\yltrimethyleneiposition| is used to adjust
+% substitution sites.
+% \changes{v5.01}{2013/06/22}{bug fix}
+% \changes{v5.01}{2013/07/20}{bug fix}
+%
+% \begin{macro}{\yltrimethyleneiposition}
+% \begin{verbatim}
+% \yltrimethylenei{ATOMLIST}{BONDLIST}{TERMswitch}{Adjust}
+%
+% <TERMswitch>
+% 0: all positions
+% 1: positions bbb and ccc
+% 2: positions aaa and bbb
+%
+% aaa ccc
+% 1 3
+% a ` / b
+% ` /
+% 2
+% bbb
+%
+% <Adjust>
+% a positive or negative integer to adjust locant numbers
+% \end{verbatim}
+%
+% \begin{macrocode}%
+\def\yltrimethyleneiposition#1#2#3#4{%
+\iniatom\iniflag%initialize2013/06/22
+\reset@@yl%%2013/07/20bug fix
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+%\expandafter\twoch@r\@membera{}%
+\expandafter\twoCH@R\@membera//%
+\@tmpaa=\@tmpa \advance\@tmpaa by#4\relax
+\if\@tmpb s\else%2013/06/22added for bug fix
+\ifcase\@tmpaa%
+ \or \def\aaa{@}%\def\aaa{\@memberb}%
+ \or \def\bbb{@}%\def\bbb{\@memberb}%
+ \or \def\ccc{@}%\def\ccc{\@memberb}%
+\fi\fi
+\fi
+}%
+\@@ylswfalse%%%\@reset@ylsw
+\@forsemicol\member:=#2\do{\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\@tmpaa=\@tmpa \advance\@tmpaa by#4\relax
+\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi
+\if@@ylsw
+\ifcase\@tmpaa%0 omit
+\or%%%%%%position 1
+ \ifcase#3
+ \ifx\aaa\empty
+%% \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% subst. on 1
+ \gdef\@ylii{0}\gdef\@yli{-103}\global\@ylswtrue% subst. on 1
+ \else
+ \if@linterchainsw%interchain position
+% \gdef\@ylii{0}\gdef\@yli{40}\global\@ylswtrue% subst. on 1
+ \gdef\@ylii{0}\gdef\@yli{-133}\global\@ylswtrue% subst. on 1
+ \else% terminal position
+%% \gdef\@ylii{40}\gdef\@yli{-24}\global\@ylswtrue% subst. on 1
+ \gdef\@ylii{40}\gdef\@yli{-79}\global\@ylswtrue% subst. on 1
+ \fi
+ \fi
+ \or\relax
+ \or
+ \ifx\aaa\empty
+%% \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% subst. on 1
+ \gdef\@ylii{0}\gdef\@yli{-103}\global\@ylswtrue% subst. on 1
+ \else
+ \if@linterchainsw%interchain position
+ \gdef\@ylii{0}\gdef\@yli{-133}\global\@ylswtrue% subst. on 1
+% \gdef\@ylii{0}\gdef\@yli{40}\global\@ylswtrue% subst. on 1
+ \else% terminal position
+%% \gdef\@ylii{40}\gdef\@yli{-24}\global\@ylswtrue% subst. on 1
+ \gdef\@ylii{40}\gdef\@yli{-79}\global\@ylswtrue% subst. on 1
+ \fi
+ \fi
+ \fi
+\or%%%%%%%%position 2
+ \ifx\bbb\empty
+%% \gdef\@ylii{-171}\gdef\@yli{-103}\global\@ylswtrue% subst. on 2
+ \gdef\@ylii{-171}\gdef\@yli{0}\global\@ylswtrue% subst. on 2
+ \else
+%% \gdef\@ylii{-171}\gdef\@yli{-133}\global\@ylswtrue% subst. on 2
+ \gdef\@ylii{-171}\gdef\@yli{50}\global\@ylswtrue% subst. on 2
+ \fi
+\or%%%%%%%%position 3
+ \ifcase#3
+ \ifx\ccc\empty
+%% \gdef\@ylii{-342}\gdef\@yli{0}\global\@ylswtrue% subst. on 3
+ \gdef\@ylii{-342}\gdef\@yli{-103}\global\@ylswtrue% subst. on 3
+ \else
+ \if@rinterchainsw%interchain position
+%% \gdef\@ylii{-342}\gdef\@yli{40}\global\@ylswtrue% subst. on 3
+ \gdef\@ylii{-342}\gdef\@yli{-133}\global\@ylswtrue% subst. on 3
+ \else
+%% \gdef\@ylii{-382}\gdef\@yli{-24}\global\@ylswtrue% subst. on 3
+ \gdef\@ylii{-382}\gdef\@yli{-79}\global\@ylswtrue% subst. on 3
+ \fi
+ \fi
+ \or
+ \ifx\ccc\empty
+% \gdef\@ylii{-342}\gdef\@yli{0}\global\@ylswtrue% subst. on 3
+ \gdef\@ylii{-342}\gdef\@yli{-103}\global\@ylswtrue% subst. on 3
+ \else
+ \if@rinterchainsw%interchain position
+% \gdef\@ylii{-342}\gdef\@yli{40}\global\@ylswtrue% subst. on 3
+ \gdef\@ylii{-342}\gdef\@yli{-133}\global\@ylswtrue% subst. on 3
+ \else
+% \gdef\@ylii{-382}\gdef\@yli{-24}\global\@ylswtrue% subst. on 3
+ \gdef\@ylii{-382}\gdef\@yli{-79}\global\@ylswtrue% subst. on 3
+ \fi
+ \fi
+ \or\relax
+ \fi
+\fi%end of ifcase
+\fi}}% end of \yltrimethyleneiposition
+% \end{macrocode}
+% \end{macro}
+%
+% The |\set@hetatom@methyli| is used to set a hetero atom
+% at each vertex in the command |\@@trimethylenei|.
+%
+% \begin{macro}{\set@hetatom@methyli}
+% \changes{v2.00}{1998/12/20}{New command: \cs{set@hetatom@methyli}}
+% \begin{macrocode}
+\def\set@hetatom@methyli#1#2#3#4#5{%
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\twoch@r\@membera{}%
+\ifnum#5 < 0\relax%
+\@tmpaa=-\@tmpa\relax \advance\@tmpaa by#2\relax%
+\else\@tmpaa=\@tmpa\relax \advance\@tmpaa by#2\relax \fi
+\ifnum\@tmpaa >#3\relax%
+\ifnum\@tmpaa <#4\relax%
+\ifcase\@tmpaa%
+\or%position 1 <-- \set@hetatom@sixv position 5
+ \ifnum\test@termcnt=1\else%not terminal point (left)
+ \if\@tmpb h\relax
+ \@acliptrue%
+ \putlatom{0}{70}{\@memberb}% % right type
+ \else\if\@tmpb s\relax
+ \@aclipfalse%
+ \putlatom{0}{103}{\@memberb}% % right type
+ \else\if\@tmpb a\relax%omit fused position
+ \else
+ \@acliptrue%
+ \putlatom{36}{65}{\@memberb}% % left type
+ \fi\fi\fi
+ \fi
+\or%position 2 <-- \set@hetatom@sixv position 4
+ \if\@tmpb h\relax
+ \@bcliptrue%
+ \putratom{171}{50}{\@memberb}% % right type
+ \else\if\@tmpb s\relax
+ \@bclipfalse%
+ \putratom{171}{0}{\@memberb}% % right type
+ \else\if\@tmpb a\relax%omit fused position
+ \else
+ \@bcliptrue%
+% \putratom{140}{-10}{\@memberb}% % right type
+ \putratom{140}{-23}{\@memberb}% % right type
+ \fi\fi\fi
+\or%position 3 <-- \set@hetatom@sixv position 3
+ \ifnum\test@termcnt=2\else%not terminal point (right)
+ \if\@tmpb h\relax
+ \@ccliptrue%
+ \putratom{342}{70}{\@memberb}% % right type
+ \else\if\@tmpb s\relax
+ \@cclipfalse%
+ \putratom{342}{103}{\@memberb}% % right type
+ \else\if\@tmpb a\relax%omit fused position
+ \else
+ \@ccliptrue%
+ \putratom{306}{65}{\@memberb}% % right type
+ \fi\fi\fi
+ \fi
+\fi% end of ifcase
+\fi\fi\fi}}% end of the macro \set@hetatom@methyli
+% \end{macrocode}
+% \end{macro}
+%
+% The macro |\trimethylenei| has two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+%
+% \begin{macro}{\trimethylenei}
+% \begin{macro}{\@trimethylenei}
+%
+% \begin{verbatim}
+% aaa ccc
+% 1 3
+% a ` / b (or uppercase letters)
+% ` /
+% 2
+% bbb
+% \end{verbatim}
+%
+%
+% \begin{verbatim}
+% \trimethylenei[BONDLIST]{ATOMLIST}{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one character a, A, b, or B
+% each of which indicates the presence of an inner (endcyclic) double
+% bond on the corresponding position. A lowercase letter is used
+% to typeset a double bond at a upper-side of an outer skeletal bond,
+% while a uppercase letter typesets a double bond at a lower-side of
+% an outer skeletal bond.
+% (Note that the option `A' represents an aromatic circle in
+% commands |\sixheterov| etc.
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% [] or none : no double bond
+% a : 1,2-double bond
+% A : 1,2-double bond in an opposite side
+% b : 2,3-double bond
+% B : 1,2-double bond in an opposite side
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+%
+% ATOMLIST: list of heteroatoms (max 3 atoms)
+%
+% for n = 1 to 3
+%
+% n==? : Hetero atom, e.g. N, O, etc. at n-position,
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 3
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+% nW : terminal single bond (n=1 or 3)
+%
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \trimethylenei{1==N}{1==Cl;2==F}
+% \trimethylenei[b]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+%
+% The definition of |\trimethylene| uses a picture environment and
+% consists of the following unit processes:
+% \begin{enumerate}
+% \item adjusting substitution site by
+% |\yltrimethyleneiposition|
+% \item treating atom list,
+% placing outer skeletons, inner double bonds,
+% setting hetero atoms, and
+% placing substituents by |\@@trimethylenei|.
+% \end{enumerate}
+%
+% \begin{macrocode}
+\def\trimethylenei{%
+\@ifnextchar[{\@trimethylenei[@}{\@trimethylenei[]}}
+\def\@trimethylenei[#1]#2#3{%
+\iniflag\iniatom%
+\@reset@ylsw%
+\reset@interchainsw%
+\yltrimethyleneiposition{#2}{#3}{0}{0}%
+\begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(450,480)(-50,-180){trimethylenei}%2002/4/30 by S. Fujita
+(50,180)%
+\reset@double%
+%\@adoublebondfalse
+%\@bdoublebondfalse
+%\@Adoublebondfalse
+%\@Bdoublebondfalse
+\@tfor\member:=#1\do{%
+\if\member a\relax
+\@adoublebondtrue
+\else\if\member b\relax
+\@bdoublebondtrue
+\else\if\member A\relax
+\@Adoublebondtrue
+\else\if\member B\relax
+\@Bdoublebondtrue
+%\else
+% \expandafter\twoCH@@R\member//%
+% \set@fusion@trimethi
+\fi\fi\fi\fi}%
+\@wrongbdWafalse
+\@wrongbdWdtrue
+ \Put@Direct(0,0){\@@trimethylenei{#2}{#3}{0}{0}}%
+%
+%originally for fused rings
+%shifted for coloring skeletal bond 2010/10/01
+%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member a\relax%dummy
+\else\if\member b\relax%dummy
+\else\if\member A\relax%dummy
+\else\if\member B\relax%dummy
+\else
+ \expandafter\twoCH@@R\member//%
+ \set@fusion@trimethi
+\fi\fi\fi\fi}}%
+\end{ShiftPicEnv}%
+}% end of \trimethylenei
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The inner command |\set@fusion@trimethi| is used for typesetting
+% a fused ring at each bond represented by |\@@tmpa|. Warnings
+% concerning mismatched ring-fusions are based on the command
+% |\FuseWarning|.
+%
+% \begin{macro}{\set@fusion@trimethi}
+% \changes{v2.00}{1998/12/21}{New command: \cs{set@fusion@trimethi}}
+% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring}
+% \begin{macrocode}
+\def\set@fusion@trimethi{%
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+\if\@@tmpa a\relax%
+ \putlratom{0}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}%
+ \else\if\@@tmpa A\relax%
+ \putlratom{171}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}%
+ \else\if\@@tmpa b\relax%
+ \putlratom{171}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}%
+ \else\if\@@tmpa B\relax%
+ \putlratom{342}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}%
+ \fi\fi\fi\fi
+\global\let\FuseWarning=\FuseW@rning%added 2010/10/01
+}% end of the macro \set@fusion@trimethi
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Dimethylene}
+% \subsection{Normal direction}
+%
+% A dimethylene (or ethane) and its hetera analogs can be typeset
+% by the command |\dimethylene|, which is mainly based on
+% two inner commands: |\yldimethyleneposition| for adjusting a
+% substitution site and |\@@dimethylene| for
+% placing hetero atoms, double bonds, and substituents.
+%
+% \begin{macro}{\@@dimethylene}
+% \begin{verbatim}
+% \@@dimethylene{ATOMLIST}{BONDLIST}{TERMswitch}{Adjust}
+%
+% <TERMswitch>
+% 0: all positions
+% 1: position bbb
+% 2: position aaa
+%
+% bbb
+% 2
+% a /
+% 1
+% aaa
+%
+% <Adjust>
+% a positive or negative integer to adjust locant numbers
+% \end{verbatim}
+%
+% \changes{v5.00}{2010/10/01}{For bond coloring}
+% \begin{macrocode}
+\def\@@dimethylene#1#2#3#4{%
+\leavevmode
+\iniatom\iniflag%initialize
+\test@vrtx@dimethy{#1}{#4}%
+%\test@vertix@sixv{#1}{a}{b}{@}{@}{@}{@}%
+\begin{sfpicture}(250,480)(0,0)%
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+ \Put@Direct(171,-303){\SKbondA}% bond between 1 and 2
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\if@adoublebond
+ \Put@Direct(171,-303){\bondA}%upper side double bond
+\else\if@Adoublebond
+ \Put@Direct(171,-303){\bondAA}%lower side double bond
+\fi\fi%
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\test@termcnt=#3\relax
+%\set@hetatom@methyl{#1}{0}{0}{3}{0}%
+\set@hetatom@methyl{#1}{#4}{0}{3}{0}%
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\@forsemicol\member:=#2\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\@tmpaa=\@tmpa \advance\@tmpaa by#4\relax
+\ifx\@memberb\@yl\else
+\ifcase\@tmpaa%0 omit
+\or
+ \ifcase#3
+ \setBScolor{\if@aclip \@cliptrue \else \@clipfalse\fi
+ \Put@Direct(0,0){\@methsubstdL}}%
+ \or\relax
+ \or
+ \setBScolor{\if@aclip \@cliptrue \else \@clipfalse\fi
+ \Put@Direct(0,0){\@methsubstdL}}%
+ \fi
+\or
+ \ifcase#3
+ \setBScolor{\if@bclip \@acliptrue \else \@aclipfalse\fi
+ \Put@Direct(171,-303){\@methsubsta}}%
+ \or
+ \setBScolor{\if@bclip \@acliptrue \else \@aclipfalse\fi
+ \Put@Direct(171,-303){\@methsubsta}}%
+ \or\relax
+ \fi
+\fi%end of ifcase
+\fi\fi%
+}%
+\end{sfpicture}}% end of \@@dimethylene
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\test@vrtx@dimethy}
+% \changes{v2.00}{1998/12/21}{New command: \cs{test@vrtx@dimethy}}
+% \begin{macrocode}
+\def\test@vrtx@dimethy#1#2{%
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\twoch@r\@membera{}%
+\@tmpaa=\@tmpa \advance\@tmpaa by#2\relax
+\ifcase\@tmpaa%
+ \or \if\@tmpb s\relax \xdef\aaa{}\else\if\@tmpb h\relax
+ \xdef\aaa{@}\else\xdef\aaa{@}\fi\fi
+ \or \if\@tmpb s\relax \xdef\bbb{}\else\if\@tmpb h\relax
+ \xdef\bbb{@}\else\xdef\bbb{@}\fi\fi
+\fi\fi}}
+% \end{macrocode}
+% \end{macro}
+%
+% The |\yldimethyleneposition| is used to adjust
+% substitution sites.
+% \changes{v5.01}{2013/06/22}{bug fix}
+%
+% \begin{macro}{\yldimethyleneposition}
+% \begin{verbatim}
+% \yldimethylene{ATOMLIST}{BONDLIST}{TERMswitch}{Adjust}
+%
+% <TERMswitch>
+% 0: all positions
+% 1: position bbb
+% 2: position aaa
+%
+% bbb
+% 2
+% a /
+% 1
+% aaa
+%
+% <Adjust>
+% a positive or negative integer to adjust locant numbers
+% \end{verbatim}
+%
+% \changes{v5.01}{2013/07/20}{Bug fix}
+%
+% \begin{macrocode}%
+\def\yldimethyleneposition#1#2#3#4{%
+\iniatom\iniflag%initialize2013/06/22
+\reset@@yl%%2013/07/20bug fix
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\twoch@r\@membera{}%
+\@tmpaa=\@tmpa \advance\@tmpaa by#4\relax
+\if\@tmpb s\else%2013/06/22added for bug fix
+\ifcase\@tmpaa%
+ \or \def\aaa{@}%\def\aaa{\@memberb}%2013/06/22
+ \or \def\bbb{@}%\def\bbb{\@memberb}%2013/06/22
+\fi\fi
+\fi
+}%
+\@@ylswfalse%%%\@reset@ylsw
+\@forsemicol\member:=#2\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\@tmpaa=\@tmpa \advance\@tmpaa by#4\relax
+\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi
+\if@@ylsw
+\ifcase\@tmpaa%0 omit
+\or
+ \ifcase#3
+ \ifx\aaa\empty
+% \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% subst. on 1
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% subst. on 1
+ \else
+ \if@linterchainsw%interchain position
+ \gdef\@ylii{0}\gdef\@yli{40}\global\@ylswtrue% subst. on 1
+ \else%terminal position
+ \gdef\@ylii{40}\gdef\@yli{-24}\global\@ylswtrue% subst. on 1
+ \fi
+ \fi
+ \or\relax
+ \or
+ \ifx\aaa\empty
+ \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% subst. on 1
+ \else
+ \if@linterchainsw%interchain position
+ \gdef\@ylii{0}\gdef\@yli{40}\global\@ylswtrue% subst. on 1
+ \else%terminal position
+ \gdef\@ylii{40}\gdef\@yli{-24}\global\@ylswtrue% subst. on 1
+ \fi
+ \fi
+ \fi
+\or
+ \ifcase#3
+ \ifx\bbb\empty
+ \gdef\@ylii{-171}\gdef\@yli{-103}\global\@ylswtrue% subst. on 2
+ \else
+ \if@rinterchainsw%interchain position
+ \gdef\@ylii{-171}\gdef\@yli{-133}\global\@ylswtrue% subst. on 2
+ \else%terminal position
+ \gdef\@ylii{-211}\gdef\@yli{-93}\global\@ylswtrue% subst. on 2
+ \fi
+ \fi
+ \or
+ \ifx\bbb\empty
+ \gdef\@ylii{-171}\gdef\@yli{-103}\global\@ylswtrue% subst. on 2
+ \else
+ \if@rinterchainsw%interchain position
+ \gdef\@ylii{-171}\gdef\@yli{-133}\global\@ylswtrue% subst. on 2
+ \else%terminal position
+ \gdef\@ylii{-211}\gdef\@yli{-93}\global\@ylswtrue% subst. on 2
+ \fi
+ \fi
+ \or \relax
+ \fi
+\fi%end of ifcase
+\fi\fi}}% end of \yldimethyleneposition
+% \end{macrocode}
+% \end{macro}
+%
+%
+% The macro |\dimethylene| has two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+%
+% \begin{macro}{\dimethylene}
+% \begin{macro}{\@dimethylene}
+% \begin{verbatim}
+%
+% bbb
+% 2
+% a / (or uppercase letters)
+% /
+% 1
+% aaa
+% \end{verbatim}
+%
+%
+% \begin{verbatim}
+% \dimethylene[BONDLIST]{ATOMLIST}{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one character a or A,
+% each of which indicates the presence of an inner (endcyclic) double
+% bond on the corresponding position. A lowercase letter is used
+% to typeset a double bond at a lower-side of an outer skeletal bond,
+% while an uppercase letter typesets a double bond at a upper-side of
+% an outer skeletal bond.
+% (Note that the option `A' represents an aromatic circle in
+% commands |\sixheterov| etc. )
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% [] or none : no double bond
+% a : 1,2-double bond
+% A : 1,2-double bond in an opposite side
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+%
+% ATOMLIST: list of heteroatoms (max 2 atoms)
+%
+% for n = 1 and 2
+%
+% n==? : Hetero atom, e.g. N, O, etc. at n-position,
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents
+%
+% for n = 1 and 2
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+% nW : terminal single bond (n=1 or 2)
+%
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \dimethylene{1==N}{1==Cl;2==F}
+% \dimethylene[a]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+%
+% The definition of |\dimethylene| uses a picture environment and
+% consists of the following unit processes:
+% \begin{enumerate}
+% \item adjusting substitution site by
+% |\yldimethyleneposition|
+% \item treating atom list,
+% placing outer skeletons, inner double bonds,
+% setting hetero atoms, and
+% placing substituents by |\@@dimethylene|.
+% \end{enumerate}
+%
+% \begin{macrocode}
+\def\dimethylene{%
+\@ifnextchar[{\@dimethylene[@}{\@dimethylene[]}}
+\def\@dimethylene[#1]#2#3{%
+\iniflag\iniatom%
+\@reset@ylsw%
+\reset@interchainsw%
+\yldimethyleneposition{#2}{#3}{0}{0}%
+\begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(250,480)(-50,-180){dimethylene}%2002/4/30 by S. Fujita
+(50,180)%
+\reset@double%
+\@tfor\member:=#1\do{%
+\if\member a\relax
+\@adoublebondtrue
+\else\if\member A\relax
+\@Adoublebondtrue
+%\else
+% \expandafter\twoCH@@R\member//%
+% \set@fusion@dimeth
+\fi\fi}%
+\@wrongbdWafalse
+\@wrongbdWdfalse
+ \Put@Direct(0,0){\@@dimethylene{#2}{#3}{0}{0}}%
+%
+%originally for fused rings
+%shifted for coloring skeletal bond 2010/10/01
+%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member a\relax%dummy
+\else\if\member A\relax%dummy
+\else
+ \expandafter\twoCH@@R\member//%
+ \set@fusion@dimeth
+\fi\fi}}%
+\end{ShiftPicEnv}%
+}% end of \dimethylene
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The inner command |\set@fusion@dimeth| is used for typesetting
+% a fused ring at each bond represented by |\@@tmpa|. Warnings
+% concerning mismatched ring-fusions are based on the command
+% |\FuseWarning|.
+%
+% \begin{macro}{\set@fusion@dimeth}
+% \changes{v2.00}{1998/12/21}{New command: \cs{set@fusion@dimeth}}
+% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring}
+% \begin{macrocode}
+\def\set@fusion@dimeth{%
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+\if\@@tmpa a\relax%
+ \putlratom{0}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}%
+ \else\if\@@tmpa A\relax%
+ \putlratom{171}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}%
+ \fi\fi
+\global\let\FuseWarning=\FuseW@rning%added 2010/10/01
+}% end of the macro \set@fusion@dimeth
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Inverse direction}
+%
+% A dimethylene (or ethane) and its hetera analogs (of inverse direction)
+% can be typeset by the command |\dimethylenei|, which is mainly based on
+% two inner commands: |\yldimethyleneiposition| for adjusting a
+% substitution site and |\@@dimethylenei| for
+% placing hetero atoms, double bonds, and substituents.
+%
+% \begin{macro}{\@@dimethylenei}
+% \begin{verbatim}
+% \@@dimethylenei{ATOMLIST}{BONDLIST}{TERMswitch}{Adjust}
+%
+% <TERMswitch>
+% 0: all positions
+% 1: position bbb
+% 2: positions aaa
+%
+% aaa
+% 1
+% a `
+% `
+% 2
+% bbb
+%
+% <Adjust>
+% a positive or negative integer to adjust locant numbers
+% \end{verbatim}
+%
+% \changes{v5.00}{2010/10/01}{For bond coloring}
+% \begin{macrocode}
+\def\@@dimethylenei#1#2#3#4{%
+\leavevmode
+\iniatom\iniflag%initialize
+\test@vrtx@dimethy{#1}{#4}%
+%\test@vertix@sixv{#1}{a}{b}{@}{@}{@}{@}%
+\begin{sfpicture}(250,480)(0,0)%
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+ \Put@Direct(171,0){\SKbondAi}% bond between 1 and 2
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner double bond %
+% %%%%%%%%%%%%%%%%%%%%%
+\if@adoublebond
+ \Put@Direct(171,0){\bondAi}%upper side double bond
+\else\if@Adoublebond
+ \Put@Direct(171,0){\bondAAi}%lower side double bond
+\fi\fi%
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\test@termcnt=#3\relax
+%\set@hetatom@methyli{#1}{0}{0}{3}{0}%
+\set@hetatom@methyli{#1}{#4}{0}{3}{0}%
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\@forsemicol\member:=#2\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\@tmpaa=\@tmpa \advance\@tmpaa by#4\relax
+\ifx\@memberb\@yl\else
+\ifcase\@tmpaa%0 omit
+\or
+ \ifcase#3
+ \setBScolor{\Put@Direct(0,-303){\@methsubstaL}}%
+ \or\relax
+ \or
+ \setBScolor{\Put@Direct(0,-303){\@methsubstaL}}%
+ \fi
+\or
+ \ifcase#3
+ \setBScolor{\if@bclip \@cliptrue \else \@clipfalse\fi
+ \Put@Direct(171,0){\@methsubstd}}%
+ \or
+ \setBScolor{\if@bclip \@cliptrue \else \@clipfalse\fi
+ \Put@Direct(171,0){\@methsubstd}}%
+ \or\relax
+ \fi
+\fi%end of ifcase
+\fi\fi%
+}%
+\end{sfpicture}}% end of \@@dimethylenei
+% \end{macrocode}
+% \end{macro}
+%
+% The |\yldimethyleneiposition| is used to adjust
+% substitution sites.
+% \changes{v5.01}{2013/06/22}{bug fix}
+% \changes{v5.01}{2013/07/20}{bug fix}
+%
+% \begin{macro}{\yldimethyleneiposition}
+% \begin{verbatim}
+% \yldimethylenei{ATOMLIST}{BONDLIST}{TERMswitch}{Adjust}
+%
+% <TERMswitch>
+% 0: all positions
+% 1: position bbb
+% 2: position aaa
+%
+% aaa
+% 1
+% a `
+% `
+% 2
+% bbb
+%
+% <Adjust>
+% a positive or negative integer to adjust locant numbers
+% \end{verbatim}
+%
+% \begin{macrocode}%
+\def\yldimethyleneiposition#1#2#3#4{%
+\iniatom\iniflag%initialize2013/06/22
+\reset@@yl%%2013/07/20bug fix
+\@forsemicol\member:=#1\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\twoch@r\@membera{}%
+\@tmpaa=\@tmpa \advance\@tmpaa by#4\relax
+\if\@tmpb s\else%2013/06/22added for bug fix
+\ifcase\@tmpaa%
+ \or \def\aaa{@}%\def\aaa{\@memberb}%2013/06/22
+ \or \def\bbb{@}%\def\bbb{\@memberb}%2013/06/22
+\fi\fi
+\fi
+}%
+\@@ylswfalse%%%\@reset@ylsw
+\@forsemicol\member:=#2\do{\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\@tmpaa=\@tmpa \advance\@tmpaa by#4\relax
+\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi
+\if@@ylsw
+\ifcase\@tmpaa%0 omit
+\or%%%%%%%%position 1
+ \ifcase#3
+ \ifx\aaa\empty
+% \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% subst. on 1
+ \gdef\@ylii{0}\gdef\@yli{-103}\global\@ylswtrue% subst. on 1
+ \else
+ \if@linterchainsw%interchain position
+% \gdef\@ylii{0}\gdef\@yli{40}\global\@ylswtrue% subst. on 1
+ \gdef\@ylii{0}\gdef\@yli{-133}\global\@ylswtrue% subst. on 1
+ \else%terminal position
+% \gdef\@ylii{40}\gdef\@yli{-24}\global\@ylswtrue% subst. on 1
+ \gdef\@ylii{40}\gdef\@yli{-79}\global\@ylswtrue% subst. on 1
+ \fi
+ \fi
+ \or\relax
+ \or
+ \ifx\aaa\empty
+% \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% subst. on 1
+ \gdef\@ylii{0}\gdef\@yli{-103}\global\@ylswtrue% subst. on 1
+ \else
+ \if@linterchainsw%interchain position
+% \gdef\@ylii{0}\gdef\@yli{40}\global\@ylswtrue% subst. on 1
+ \gdef\@ylii{0}\gdef\@yli{-133}\global\@ylswtrue% subst. on 1
+ \else%terminal position
+% \gdef\@ylii{40}\gdef\@yli{-24}\global\@ylswtrue% subst. on 1
+ \gdef\@ylii{40}\gdef\@yli{-79}\global\@ylswtrue% subst. on 1
+ \fi
+ \fi
+ \fi
+\or%%%%%%%%position 2
+ \ifcase#3
+ \ifx\bbb\empty
+% \gdef\@ylii{-171}\gdef\@yli{-103}\global\@ylswtrue% subst. on 2
+ \gdef\@ylii{-171}\gdef\@yli{0}\global\@ylswtrue% subst. on 2
+ \else
+ \if@rinterchainsw%interchain position
+% \gdef\@ylii{-171}\gdef\@yli{-133}\global\@ylswtrue% subst. on 2
+ \gdef\@ylii{-171}\gdef\@yli{33}\global\@ylswtrue% subst. on 2
+ \else%terminal position
+ % \gdef\@ylii{-211}\gdef\@yli{-93}\global\@ylswtrue% subst. on 2
+ \gdef\@ylii{-211}\gdef\@yli{-10}\global\@ylswtrue% subst. on 2
+ \fi
+ \fi
+ \or
+ \ifx\bbb\empty
+% \gdef\@ylii{-171}\gdef\@yli{-103}\global\@ylswtrue% subst. on 2
+ \gdef\@ylii{-171}\gdef\@yli{0}\global\@ylswtrue% subst. on 2
+ \else
+ \if@rinterchainsw%interchain position
+% \gdef\@ylii{-171}\gdef\@yli{-133}\global\@ylswtrue% subst. on 2
+ \gdef\@ylii{-171}\gdef\@yli{33}\global\@ylswtrue% subst. on 2
+ \else%terminal position
+% \gdef\@ylii{-211}\gdef\@yli{-93}\global\@ylswtrue% subst. on 2
+ \gdef\@ylii{-211}\gdef\@yli{-10}\global\@ylswtrue% subst. on 2
+ \fi
+ \fi
+ \or \relax
+ \fi
+\fi%end of ifcase
+\fi}}% end of \yldimethyleneiposition
+% \end{macrocode}
+% \end{macro}
+%
+% The macro |\dimethylenei| has two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+%
+% \begin{macro}{\dimethylenei}
+% \begin{macro}{\@dimethylenei}
+% \begin{verbatim}
+%
+% aaa
+% 1
+% a ` (or uppercase letter)
+% `
+% 2
+% bbb
+% \end{verbatim}
+%
+% \begin{verbatim}
+% \dimethylenei[BONDLIST]{ATOMLIST}{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one character a or A,
+% each of which indicates the presence of an inner (endcyclic) double
+% bond on the corresponding position. A lowercase letter is used
+% to typeset a double bond at a upper-side of an outer skeletal bond,
+% while an uppercase letter typesets a double bond at a lower-side of
+% an outer skeletal bond.
+% (Note that the option `A' represents an aromatic circle in
+% commands |\sixheterov| etc. )
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% [] or none : no double bond
+% a : 1,2-double bond
+% A : 1,2-double bond in an opposite side
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+%
+% ATOMLIST: list of heteroatoms (max 2 atoms)
+%
+% for n = 1 and 2
+%
+% n==? : Hetero atom, e.g. N, O, etc. at n-position,
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents
+%
+% for n = 1 and 2
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+% nW : terminal single bond (n=1 or 2)
+%
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \dimethylenei{1==N}{1==Cl;2==F}
+% \dimethylenei[a]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+%
+% The definition of |\dimethylenei| uses a picture environment and
+% consists of the following unit processes:
+% \begin{enumerate}
+% \item adjusting substitution site by
+% |\yldimethyleneposition|
+% \item treating atom list,
+% placing outer skeletons, inner double bonds,
+% setting hetero atoms, and
+% placing substituents by |\@@dimethylene|.
+% \end{enumerate}
+%
+% \begin{macrocode}
+\def\dimethylenei{%
+\@ifnextchar[{\@dimethylenei[@}{\@dimethylenei[]}}
+\def\@dimethylenei[#1]#2#3{%
+\iniflag\iniatom%
+\@reset@ylsw%
+\reset@interchainsw%
+\yldimethyleneiposition{#2}{#3}{0}{0}%
+\begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(250,480)(-50,-180){dimethylenei}%2002/4/30 by S. Fujita
+(50,180)%
+\reset@double%
+\@tfor\member:=#1\do{%
+\if\member a\relax
+\@adoublebondtrue
+\else\if\member A\relax
+\@Adoublebondtrue
+%\else
+% \expandafter\twoCH@@R\member//%
+% \set@fusion@dimethi
+\fi\fi}%
+\@wrongbdWafalse
+\@wrongbdWdfalse
+ \Put@Direct(0,0){\@@dimethylenei{#2}{#3}{0}{0}}%
+%
+%originally for fused rings
+%shifted for coloring skeletal bond 2010/10/01
+%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member a\relax%dummy
+\else\if\member A\relax%dummy
+\else
+ \expandafter\twoCH@@R\member//%
+ \set@fusion@dimethi
+\fi\fi}}%
+\end{ShiftPicEnv}%
+}% end of \dimethylenei
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The inner command |\set@fusion@dimethi| is used for typesetting
+% a fused ring at each bond represented by |\@@tmpa|. Warnings
+% concerning mismatched ring-fusions are based on the command
+% |\FuseWarning|.
+%
+% \begin{macro}{\set@fusion@dimethi}
+% \changes{v2.00}{1998/12/21}{New command: \cs{set@fusion@dimethi}}
+% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring}
+% \begin{macrocode}
+\def\set@fusion@dimethi{%
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+\if\@@tmpa a\relax%
+ \putlratom{0}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}%
+ \else\if\@@tmpa A\relax%
+ \putlratom{171}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}%
+\fi\fi
+\global\let\FuseWarning=\FuseW@rning%added 2010/10/01
+}% end of the macro \set@fusion@dimethi
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Tetramethylenes}
+% \subsection{Normal direction}
+%
+% The macro |\tetramethylene| has two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+%
+% \begin{macro}{\tetramethylene}
+% \begin{macro}{\@tetramethylene}
+%
+% \begin{verbatim}
+%
+% bbb ddd
+% 2 4
+% a / ` b / c (or uppercase letters)
+% / ` /
+% 1 3
+% aaa ccc
+% \end{verbatim}
+%
+% \begin{verbatim}
+% \tetramethylene[BONDLIST]{ATOMLIST}{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one character selected from
+% a to c (or A to C),
+% each of which indicates the presence of an inner (endcyclic) double
+% bond on the corresponding position. A lowercase letter is used
+% to typeset a double bond at a lower-side of an outer skeletal bond,
+% while an uppercase letter typesets a double bond at a upper-side of
+% an outer skeletal bond.
+% (Note that the option `A' represents an aromatic circle in
+% commands |\sixheterov| etc.)
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% [] or none : no double bond
+% a : 1,2-double bond
+% A : 1,2-double bond in an opposite side
+% b : 2,3-double bond
+% B : 2,3-double bond in an opposite side
+% c : 3,4-double bond
+% C : 3,4-double bond in an opposite side
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+%
+% ATOMLIST: list of heteroatoms (max 4 atoms)
+%
+% for n = 1 to 4
+%
+% n==? : Hetero atom, e.g. N, O, etc. at n-position,
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 4
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+% nW : terminal single bond (n=1 or 4)
+%
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \tetramethylene{1==N}{1==Cl;2==F}
+% \tetramethylene[b]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+%
+% The definition of |\tetramethylene| uses a picture environment and
+% is based on |\@@trimethylene| and |\@@dimethylene|, each of which
+% is consist of the following unit processes:
+% \begin{enumerate}
+% \item adjusting substitution site by
+% |\yltrimethyleneposition| or
+% |\yldimethyleneposition|
+% \item treating atom list,
+% placing outer skeletons, inner double bonds,
+% setting hetero atoms, and
+% placing substituents by |\@@trimethylene|or |\@@dimethylene|.
+% \end{enumerate}
+%
+% \begin{macrocode}
+\def\tetramethylene{%
+\@ifnextchar[{\@tetramethylene[@}{\@tetramethylene[]}}
+\def\@tetramethylene[#1]#2#3{%
+\iniflag\iniatom%
+\@reset@ylsw%
+{\@linterchainswfalse%
+\@rinterchainswtrue%
+\yltrimethyleneposition{#2}{#3}{0}{0}}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\else
+{\@rinterchainswfalse%
+\@linterchainswtrue%
+\yldimethyleneposition{#2}{#3}{1}{-2}}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-342}\def\@@yli{0}\fi\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(900,480)(-200,-180){tetramethylene}%2002/4/30 by S. Fujita
+(200,180)%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member a\relax
+\@adoublebondtrue
+\else\if\member b\relax
+\@bdoublebondtrue
+\else\if\member A\relax
+\@Adoublebondtrue
+\else\if\member B\relax
+\@Bdoublebondtrue
+%\else\if\member c\relax%dummy
+%\else\if\member C\relax%dummy
+%\else
+% \expandafter\twoCH@@R\member//%
+% \set@fusion@tetrameth
+%\fi\fi
+\fi\fi\fi\fi}%
+\@wrongbdWatrue
+\@wrongbdWdtrue
+\Put@Direct(0,0){\@@trimethylene{#2}{#3}{0}{0}}}%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member c\relax
+\@adoublebondtrue
+\else\if\member C\relax
+\@Adoublebondtrue
+\fi\fi}%
+\@wrongbdWafalse
+\@wrongbdWdtrue
+\Put@Direct(342,0){\@@dimethylene{#2}{#3}{1}{-2}}}%
+%
+%originally for fused rings
+%shifted for coloring skeletal bond 2010/10/01
+%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member a\relax%dummy
+\else\if\member b\relax%dummy
+\else\if\member A\relax%dummy
+\else\if\member B\relax%dummy
+\else\if\member c\relax%dummy
+\else\if\member C\relax%dummy
+\else
+ \expandafter\twoCH@@R\member//%
+ \set@fusion@tetrameth
+\fi\fi
+\fi\fi\fi\fi}}%
+\end{ShiftPicEnvB}%
+}% end of \tetramethylene
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The inner command |\set@fusion@tetrameth| is used for typesetting
+% a fused ring at each bond represented by |\@@tmpa|. Warnings
+% concerning mismatched ring-fusions are based on the command
+% |\FuseWarning|.
+%
+% \begin{macro}{\set@fusion@tetrameth}
+% \changes{v2.00}{1998/12/21}{New command: \cs{set@fusion@tetrameth}}
+% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring}
+% \begin{macrocode}
+\def\set@fusion@tetrameth{%
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+\if\@@tmpa a\relax%
+ \putlratom{0}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}%
+ \else\if\@@tmpa A\relax%
+ \putlratom{171}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}%
+ \else\if\@@tmpa b\relax%
+ \putlratom{171}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}%
+ \else\if\@@tmpa B\relax%
+ \putlratom{342}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}%
+ \else\if\@@tmpa c\relax%
+ \putlratom{342}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c}%
+ \else\if\@@tmpa C\relax%
+ \putlratom{513}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C}%
+ \fi\fi
+ \fi\fi\fi\fi
+\global\let\FuseWarning=\FuseW@rning%added 2010/10/01
+}% end of the macro \set@fusion@tetrameth
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Inverse direction}
+%
+% The macro |\tetramethylenei| has two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+%
+% \begin{macro}{\tetramethylenei}
+% \begin{macro}{\@tetramethylenei}
+%
+% \begin{verbatim}
+%
+% aaa ccc
+% 1 3
+% a ` b / ` c (or uppercase letters)
+% ` / `
+% 2 4
+% bbb ddd
+% \end{verbatim}
+%
+% \begin{verbatim}
+% \tetramethylenei[BONDLIST]{ATOMLIST}{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one character selected from
+% a to c (or A to C),
+% each of which indicates the presence of an inner (endcyclic) double
+% bond on the corresponding position. A lowercase letter is used
+% to typeset a double bond at a lower-side of an outer skeletal bond,
+% while an uppercase letter typesets a double bond at a upper-side of
+% an outer skeletal bond.
+% (Note that the option `A' represents an aromatic circle in
+% commands |\sixheterov| etc.)
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% [] or none : no double bond
+% a : 1,2-double bond
+% A : 1,2-double bond in an opposite side
+% b : 2,3-double bond
+% B : 2,3-double bond in an opposite side
+% c : 3,4-double bond
+% C : 3,4-double bond in an opposite side
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+%
+% ATOMLIST: list of heteroatoms (max 4 atoms)
+%
+% for n = 1 to 4
+%
+% n==? : Hetero atom, e.g. N, O, etc. at n-position,
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 4
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+% nW : terminal single bond (n=1 or 4)
+%
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \tetramethylenei{1==N}{1==Cl;2==F}
+% \tetramethylenei[b]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+%
+% The definition of |\tetramethylenei| uses a picture environment and
+% is based on |\@@trimethylenei| and |\@@dimethylenei|, each of which
+% is consist of the following unit processes:
+% \begin{enumerate}
+% \item adjusting substitution site by
+% |\yltrimethylenieposition| or
+% |\yldimethyleneiposition|
+% \item treating atom list,
+% placing outer skeletons, inner double bonds,
+% setting hetero atoms, and
+% placing substituents by |\@@trimethylenei| or |\@@dimethylenei|.
+% \end{enumerate}
+%
+% \begin{macrocode}
+\def\tetramethylenei{%
+\@ifnextchar[{\@tetramethylenei[@}{\@tetramethylenei[]}}
+\def\@tetramethylenei[#1]#2#3{%
+\iniflag\iniatom%
+\@reset@ylsw%
+{\@linterchainswfalse%
+\@rinterchainswtrue%
+\yltrimethyleneiposition{#2}{#3}{0}{0}}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\else
+{\@rinterchainswfalse%
+\@linterchainswtrue%
+\yldimethyleneiposition{#2}{#3}{1}{-2}}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-342}\def\@@yli{0}\fi\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(900,480)(-200,-180){tetramethylenei}%2002/4/30 by S. Fujita
+(200,180)%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member a\relax
+\@adoublebondtrue
+\else\if\member b\relax
+\@bdoublebondtrue
+\else\if\member A\relax
+\@Adoublebondtrue
+\else\if\member B\relax
+\@Bdoublebondtrue
+%\else\if\member c\relax%dummy
+%\else\if\member C\relax%dummy
+%\else
+% \expandafter\twoCH@@R\member//%
+% \set@fusion@tetramethi
+%\fi\fi
+\fi\fi\fi\fi}%
+\@wrongbdWatrue
+\@wrongbdWdtrue
+\Put@Direct(0,0){\@@trimethylenei{#2}{#3}{0}{0}}}%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member c\relax
+\@adoublebondtrue
+\else\if\member C\relax
+\@Adoublebondtrue
+\fi\fi}%
+\@wrongbdWatrue
+\@wrongbdWdfalse
+\Put@Direct(342,0){\@@dimethylenei{#2}{#3}{1}{-2}}}%
+%
+%originally for fused rings
+%shifted for coloring skeletal bond 2010/10/01
+%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member a\relax
+\else\if\member b\relax
+\else\if\member A\relax
+\else\if\member B\relax
+\else\if\member c\relax%dummy
+\else\if\member C\relax%dummy
+\else
+ \expandafter\twoCH@@R\member//%
+ \set@fusion@tetramethi
+\fi\fi
+\fi\fi\fi\fi}}%
+\end{ShiftPicEnvB}%
+}%end of \tetramethylenei
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The inner command |\set@fusion@tetramethi| is used for typesetting
+% a fused ring at each bond represented by |\@@tmpa|. Warnings
+% concerning mismatched ring-fusions are based on the command
+% |\FuseWarning|.
+%
+% \begin{macro}{\set@fusion@tetramethi}
+% \changes{v2.00}{1998/12/21}{New command: \cs{set@fusion@tetramethi}}
+% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring}
+% \begin{macrocode}
+\def\set@fusion@tetramethi{%
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+\if\@@tmpa a\relax%
+ \putlratom{0}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}%
+ \else\if\@@tmpa A\relax%
+ \putlratom{171}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}%
+ \else\if\@@tmpa b\relax%
+ \putlratom{171}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}%
+ \else\if\@@tmpa B\relax%
+ \putlratom{342}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}%
+ \else\if\@@tmpa c\relax%
+ \putlratom{342}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c}%
+ \else\if\@@tmpa C\relax%
+ \putlratom{513}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C}%
+ \fi\fi
+ \fi\fi\fi\fi
+\global\let\FuseWarning=\FuseW@rning%added 2010/10/01
+}% end of the macro \set@fusion@tetramethi
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Cisoid types}
+%
+% The macros |\tetramethylenecup| and |\tetramethylenecap| are
+% used to draw tetramethylenes of cisoid types.
+%
+% \begin{verbatim}
+% Cup:
+% aaa ddd
+% 1 4
+% ` /
+% a ` / c (or uppercase letters)
+% 2------3
+% bbb b ccc
+%
+% Cap:
+% bbb b ccc
+% 2------3
+% a / ` c (or uppercase letters)
+% / `
+% 1 4
+% aaa ddd
+% \end{verbatim}
+%
+% The macros have two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+% \begin{verbatim}
+% \tetramethylenecup[BONDLIST]{ATOMLIST}{SUBSLIST}
+% \tetramethylenecap[BONDLIST]{ATOMLIST}{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one character selected from
+% a to c (or A to C),
+% each of which indicates the presence of an inner (endcyclic) double
+% bond on the corresponding position. A lowercase letter is used
+% to typeset a double bond at a lower-side of an outer skeletal bond,
+% while an uppercase letter typesets a double bond at a upper-side of
+% an outer skeletal bond.
+% (Note that the option `A' represents an aromatic circle in
+% commands |\sixheterov| etc.)
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% [] or none : no double bond
+% a : 1,2-double bond
+% A : 1,2-double bond in an opposite side
+% b : 2,3-double bond
+% B : 2,3-double bond in an opposite side
+% c : 3,4-double bond
+% C : 3,4-double bond in an opposite side
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+%
+% ATOMLIST: list of heteroatoms (max 4 atoms)
+%
+% for n = 1 to 4
+%
+% n==? : Hetero atom, e.g. N, O, etc. at n-position,
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 4
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+% nW : terminal single bond (n=1 or 4)
+%
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \tetramethylenecup{1==N}{1==Cl;2==F}
+% \tetramethylenecap[b]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+%
+% \begin{macro}{\tetramethylenecup}
+% \begin{macro}{\@tetramethylenecup}
+% \begin{macrocode}
+\def\tetramethylenecup{%
+\@ifnextchar[{\@tetramethylenecup[@}{\@tetramethylenecup[]}}
+\def\@tetramethylenecup[#1]#2#3{%
+\iniflag\iniatom%
+\@reset@ylsw%
+{\@linterchainswfalse%
+\@rinterchainswtrue%
+\yldimethyleneiposition{#2}{#3}{0}{0}}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\else
+{\@rinterchainswfalse%
+\@linterchainswtrue%
+\yldimethyleneposition{#2}{#3}{0}{-2}}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-371}\def\@@yli{0}\fi\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(900,480)(-200,-180){tetramethylenecup}%2002/4/30 by S. Fujita
+(200,180)%
+%bond a and atoms 1 and 2
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member a\relax
+\@adoublebondtrue
+\else\if\member A\relax
+\@Adoublebondtrue
+%\else\if\member b\relax%dummy
+%\else\if\member B\relax%dummy
+%\else\if\member c\relax%dummy
+%\else\if\member C\relax%dummy
+%\else
+% \expandafter\twoCH@@R\member//%
+% \set@fusion@tetracup% for all bonds
+%\fi\fi\fi\fi
+\fi\fi}%
+\@wrongbdWafalse
+\@wrongbdWdtrue
+\Put@Direct(0,0){\@@dimethylenei{#2}{#3}{0}{0}}}%
+%bond b
+{\@forsemicol\member:=#2\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\twoch@r\@membera{}%
+\ifcase\@tmpa%
+ \or \relax%
+ \or \if\@tmpb s\relax\else\if\@tmpb h\relax
+ \xdef\fff{@}\xdef\bbb{@}\else
+ \xdef\fff{@}\xdef\bbb{@}\fi\fi
+ \or \if\@tmpb s\relax\else\if\@tmpb h\relax
+ \xdef\eee{@}\xdef\ccc{@}\else
+ \xdef\eee{@}\xdef\ccc{@}\fi\fi
+\fi\fi}%
+\Put@Direct(68,171){\hskbonde}%
+\reset@double%
+\@tfor\member:=#1\do{%
+ \if\member b\relax
+ \@bdoublebondtrue
+ \Put@Direct(68,171){\hbonde}%
+ \else\if\member B\relax
+ \@bdoublebondtrue
+ \Put@Direct(68,-171){\hbondb}%
+ \fi\fi}}%
+%bond c and atoms 3 and 4
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member c\relax
+\@adoublebondtrue
+\else\if\member C\relax
+\@Adoublebondtrue
+\else\if\member d\relax
+\@bdoublebondtrue
+\else\if\member D\relax
+\@Bdoublebondtrue
+\fi\fi\fi\fi}%
+ \@wrongbdWafalse
+ \@wrongbdWdLtrue
+\Put@Direct(371,0){\@@dimethylene{#2}{#3}{0}{-2}}}%
+%
+%originally for fused rings
+%shifted for coloring skeletal bond 2010/10/01
+%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member a\relax%dummy
+\else\if\member A\relax%dummy
+\else\if\member b\relax%dummy
+\else\if\member B\relax%dummy
+\else\if\member c\relax%dummy
+\else\if\member C\relax%dummy
+\else
+ \expandafter\twoCH@@R\member//%
+ \set@fusion@tetracup% for all bonds
+\fi\fi\fi\fi
+\fi\fi}}%
+\end{ShiftPicEnvB}%
+}% end of \tetramethylenecup
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The inner command |\set@fusion@tetracup| is used for typesetting
+% a fused ring at each bond represented by |\@@tmpa|. Warnings
+% concerning mismatched ring-fusions are based on the command
+% |\FuseWarning|.
+%
+% \begin{macro}{\set@fusion@tetracup}
+% \changes{v2.00}{1998/12/21}{New command: \cs{set@fusion@tetracup}}
+% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring}
+% \begin{macrocode}
+\def\set@fusion@tetracup{%
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+\if\@@tmpa a\relax%
+ \putlratom{0}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}%
+ \else\if\@@tmpa A\relax%
+ \putlratom{171}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}%
+ \else\if\@@tmpa b\relax%
+ \putlratom{171}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{-200}{0}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}%
+ \else\if\@@tmpa B\relax%
+ \putlratom{371}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{200}{0}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}%
+ \else\if\@@tmpa c\relax%
+ \putlratom{371}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c}%
+ \else\if\@@tmpa C\relax%
+ \putlratom{542}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C}%
+ \fi\fi
+ \fi\fi\fi\fi
+\global\let\FuseWarning=\FuseW@rning%added 2010/10/01
+}% end of the macro \set@fusion@tetracup
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\tetramethylenecap}
+% \begin{macro}{\@tetramethylenecap}
+% \begin{macrocode}
+\def\tetramethylenecap{%
+\@ifnextchar[{\@tetramethylenecap[@}{\@tetramethylenecap[]}}
+\def\@tetramethylenecap[#1]#2#3{%
+\iniflag\iniatom%
+\@reset@ylsw%
+{\@linterchainswfalse%
+\@rinterchainswtrue%
+\yldimethyleneposition{#2}{#3}{0}{0}}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\else
+{\@rinterchainswfalse%
+\@linterchainswtrue%
+\yldimethyleneiposition{#2}{#3}{0}{-2}}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-371}\def\@@yli{0}\fi\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(900,480)(-200,-180){tetramethylenecap}%2002/4/30 by S. Fujita
+(200,180)%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member a\relax
+\@adoublebondtrue
+\else\if\member A\relax
+\@Adoublebondtrue
+%\else\if\member b\relax%dummy
+%\else\if\member B\relax%dummy
+%\else\if\member c\relax%dummy
+%\else\if\member C\relax%dummy
+%\else
+% \expandafter\twoCH@@R\member//%
+% \set@fusion@tetracap% for all bonds
+%\fi\fi\fi\fi
+\fi\fi}%
+\@wrongbdWatrue
+\Put@Direct(0,0){\@@dimethylene{#2}{#3}{0}{0}}}%
+{\@forsemicol\member:=#2\do{%
+\ifx\member\empty\else
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\twoch@r\@membera{}%
+\ifcase\@tmpa%
+ \or \relax%
+ \or \if\@tmpb s\relax\else\if\@tmpb h\relax
+ \xdef\fff{@}\xdef\bbb{@}\else
+ \xdef\fff{@}\xdef\bbb{@}\fi\fi
+ \or \if\@tmpb s\relax\else\if\@tmpb h\relax
+ \xdef\eee{@}\xdef\ccc{@}\else
+ \xdef\eee{@}\xdef\ccc{@}\fi\fi
+\fi\fi}%
+\Put@Direct(68,-68){\hskbondb}%
+\reset@double%
+\@tfor\member:=#1\do{%
+ \if\member b\relax
+ \@bdoublebondtrue
+ \Put@Direct(68,-68){\hbondb}%
+ \else\if\member B\relax
+ \@bdoublebondtrue
+ \Put@Direct(68,274){\hbonde}%
+ \fi\fi}}%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member c\relax
+\@adoublebondtrue
+\else\if\member C\relax
+\@Adoublebondtrue
+\else\if\member d\relax
+\@bdoublebondtrue
+\else\if\member D\relax
+\@Bdoublebondtrue
+\fi\fi\fi\fi}%
+ \@wrongbdWaLtrue
+\Put@Direct(371,0){\@@dimethylenei{#2}{#3}{0}{-2}}}%
+%
+%originally for fused rings
+%shifted for coloring skeletal bond 2010/10/01
+%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member a\relax%dummy
+\else\if\member A\relax%dummy
+\else\if\member b\relax%dummy
+\else\if\member B\relax%dummy
+\else\if\member c\relax%dummy
+\else\if\member C\relax%dummy
+\else
+ \expandafter\twoCH@@R\member//%
+ \set@fusion@tetracap% for all bonds
+\fi\fi\fi\fi
+\fi\fi}}%
+\end{ShiftPicEnvB}%
+}% end of \tetramethylenecap
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The inner command |\set@fusion@tetracap| is used for typesetting
+% a fused ring at each bond represented by |\@@tmpa|. Warnings
+% concerning mismatched ring-fusions are based on the command
+% |\FuseWarning|.
+%
+% \begin{macro}{\set@fusion@tetracap}
+% \changes{v2.00}{1998/12/21}{New command: \cs{set@fusion@tetracap}}
+% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring}
+% \begin{macrocode}
+\def\set@fusion@tetracap{%
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+\if\@@tmpa a\relax%
+ \putlratom{0}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}%
+ \else\if\@@tmpa A\relax%
+ \putlratom{171}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}%
+ \else\if\@@tmpa b\relax%
+ \putlratom{171}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{-200}{0}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}%
+ \else\if\@@tmpa B\relax%
+ \putlratom{371}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{200}{0}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}%
+ \else\if\@@tmpa c\relax%
+ \putlratom{371}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c}%
+ \else\if\@@tmpa C\relax%
+ \putlratom{542}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C}%
+ \fi\fi
+ \fi\fi\fi\fi
+\global\let\FuseWarning=\FuseW@rning%added 2010/10/01
+}% end of the macro \set@fusion@tetracap
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Pentamethylene}
+% \subsection{Normal direction}
+%
+% The macro |\pentamethylene| has two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+%
+% \begin{macro}{\pentamethylene}
+% \begin{macro}{\@pentamethylene}
+%
+% \begin{verbatim}
+%
+% bbb ddd
+% 2 4
+% a / ` b / c` d (or uppercase letters)
+% / ` / `
+% 1 3 5
+% aaa ccc
+% \end{verbatim}
+%
+%
+% \begin{verbatim}
+% \pentamethylene[BONDLIST]{ATOMLIST}{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one character selected from
+% a to d (or A to D),
+% each of which indicates the presence of an inner (endcyclic) double
+% bond on the corresponding position. A lowercase letter is used
+% to typeset a double bond at a lower-side of an outer skeletal bond,
+% while an uppercase letter typesets a double bond at a upper-side of
+% an outer skeletal bond.
+% (Note that the option `A' represents an aromatic circle in
+% commands |\sixheterov| etc.)
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% [] or none : no double bond
+% a : 1,2-double bond
+% A : 1,2-double bond in an opposite side
+% b : 2,3-double bond
+% B : 2,3-double bond in an opposite side
+% c : 3,4-double bond
+% C : 3,4-double bond in an opposite side
+% d : 4,5-double bond
+% D : 4,5-double bond in an opposite side
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+%
+% ATOMLIST: list of heteroatoms (max 5 atoms)
+%
+% for n = 1 to 5
+%
+% n==? : Hetero atom, e.g. N, O, etc. at n-position,
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 5
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+% nW : terminal single bond (n=1 or 5)
+%
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \pentamethylene{1==N}{1==Cl;2==F}
+% \pentamethylene[b]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+%
+% The definition of |\pentamethylene| uses a picture environment and
+% is based on two |\@@trimethylene| commands, each of which
+% is consist of the following unit processes:
+% \begin{enumerate}
+% \item adjusting substitution site by
+% |\yltrimethyleneposition|
+% \item treating atom list,
+% placing outer skeletons, inner double bonds,
+% setting hetero atoms, and
+% placing substituents by |\@@trimethylene|.
+% \end{enumerate}
+%
+% \begin{macrocode}
+\def\pentamethylene{%
+\@ifnextchar[{\@pentamethylene[@}{\@pentamethylene[]}}
+\def\@pentamethylene[#1]#2#3{%
+\iniflag\iniatom%
+\@reset@ylsw%
+{\@linterchainswfalse%
+\@rinterchainswtrue%
+\yltrimethyleneposition{#2}{#3}{0}{0}}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\else
+{\@rinterchainswfalse%
+\@linterchainswtrue%
+\yltrimethyleneposition{#2}{#3}{1}{-2}}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-342}\def\@@yli{0}\fi\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(1100,480)(-200,-180){pentamethylene}%2002/4/30 by S. Fujita
+(200,180)%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member a\relax
+\@adoublebondtrue
+\else\if\member b\relax
+\@bdoublebondtrue
+\else\if\member A\relax
+\@Adoublebondtrue
+\else\if\member B\relax
+\@Bdoublebondtrue
+%\else\if\member c\relax%dummy
+%\else\if\member C\relax%dummy
+%\else\if\member d\relax%dummy
+%\else\if\member D\relax%dummy
+%\else
+% \expandafter\twoCH@@R\member//%
+% \set@fusion@pentameth% for all bonds
+%\fi\fi\fi\fi
+\fi\fi\fi\fi}%
+\@wrongbdWatrue
+\@wrongbdWdtrue
+\Put@Direct(0,0){\@@trimethylene{#2}{#3}{0}{0}}}%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member c\relax
+\@adoublebondtrue
+\else\if\member d\relax
+\@bdoublebondtrue
+\else\if\member C\relax
+\@Adoublebondtrue
+\else\if\member D\relax
+\@Bdoublebondtrue
+\fi\fi\fi\fi}%
+\@wrongbdWatrue
+\@wrongbdWdfalse
+\Put@Direct(342,0){\@@trimethylene{#2}{#3}{1}{-2}}}%
+%
+%originally for fused rings
+%shifted for coloring skeletal bond 2010/10/01
+%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member a\relax%dummy
+\else\if\member b\relax%dummy
+\else\if\member A\relax%dummy
+\else\if\member B\relax%dummy
+\else\if\member c\relax%dummy
+\else\if\member C\relax%dummy
+\else\if\member d\relax%dummy
+\else\if\member D\relax%dummy
+\else
+ \expandafter\twoCH@@R\member//%
+ \set@fusion@pentameth% for all bonds
+\fi\fi\fi\fi
+\fi\fi\fi\fi}}%
+\end{ShiftPicEnvB}%
+}% end of \pentamethylene
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The inner command |\set@fusion@pentameth| is used for typesetting
+% a fused ring at each bond represented by |\@@tmpa|. Warnings
+% concerning mismatched ring-fusions are based on the command
+% |\FuseWarning|.
+%
+% \begin{macro}{\set@fusion@pentameth}
+% \changes{v2.00}{1998/12/21}{New command: \cs{set@fusion@pentameth}}
+% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring}
+% \begin{macrocode}
+\def\set@fusion@pentameth{%
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+\if\@@tmpa a\relax%
+ \putlratom{0}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}%
+ \else\if\@@tmpa A\relax%
+ \putlratom{171}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}%
+ \else\if\@@tmpa b\relax%
+ \putlratom{171}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}%
+ \else\if\@@tmpa B\relax%
+ \putlratom{342}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}%
+ \else\if\@@tmpa c\relax%
+ \putlratom{342}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c}%
+ \else\if\@@tmpa C\relax%
+ \putlratom{513}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C}%
+ \else\if\@@tmpa d\relax%
+ \putlratom{513}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{d}%
+ \else\if\@@tmpa D\relax%
+ \putlratom{684}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{D}%
+ \fi\fi\fi\fi
+ \fi\fi\fi\fi
+\global\let\FuseWarning=\FuseW@rning%added 2010/10/01
+}% end of the macro \set@fusion@pentameth
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Inverse direction}
+%
+% The macro |\pentamethylenei| has two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+%
+% \begin{macro}{\pentamethylenei}
+% \begin{macro}{\@pentamethylenei}
+%
+% \begin{verbatim}
+%
+% (aaa)
+% aaa ccc eee (ccc)
+% 1 3 5
+% a ` b / ` c / d
+% ` / ` /
+% 2 4
+% bbb ddd (bbb)
+% \end{verbatim}
+%
+% \begin{verbatim}
+% \pentamethylenei[BONDLIST]{ATOMLIST}{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one character selected from
+% a to d (or A to D),
+% each of which indicates the presence of an inner (endcyclic) double
+% bond on the corresponding position. A lowercase letter is used
+% to typeset a double bond at the upper-side of an outer skeletal bond,
+% while an uppercase letter typesets a double bond at the lower-side of
+% an outer skeletal bond.
+% (Note that the option `A' represents an aromatic circle in
+% commands |\sixheterov| etc.)
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% [] or none : no double bond
+% a : 1,2-double bond
+% A : 1,2-double bond in an opposite side
+% b : 2,3-double bond
+% B : 2,3-double bond in an opposite side
+% c : 3,4-double bond
+% C : 3,4-double bond in an opposite side
+% d : 4,5-double bond
+% D : 4,5-double bond in an opposite side
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+%
+% ATOMLIST: list of heteroatoms (max 5 atoms)
+%
+% for n = 1 to 5
+%
+% n==? : Hetero atom, e.g. N, O, etc. at n-position,
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 5
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+% nW : terminal single bond (n=1 or 5)
+%
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \pentamethylenei{1==N}{1==Cl;2==F}
+% \pentamethylenei[b]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+%
+% The definition of |\pentamethylenei| uses a picture environment and
+% is based on two |\@@trimethylenei| commands, each of which
+% is consist of the following unit processes:
+% \begin{enumerate}
+% \item adjusting substitution site by
+% |\yltrimethyleneiposition|
+% \item treating atom list,
+% placing outer skeletons, inner double bonds,
+% setting hetero atoms, and
+% placing substituents by |\@@trimethylenei|.
+% \end{enumerate}
+%
+% \begin{macrocode}
+\def\pentamethylenei{%
+\@ifnextchar[{\@pentamethylenei[@}{\@pentamethylenei[]}}
+\def\@pentamethylenei[#1]#2#3{%
+\iniflag\iniatom%
+\@reset@ylsw%
+{\@linterchainswfalse%
+\@rinterchainswtrue%
+\yltrimethyleneiposition{#2}{#3}{0}{0}}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\else
+{\@rinterchainswfalse%
+\@linterchainswtrue%
+\yltrimethyleneiposition{#2}{#3}{1}{-2}}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-342}\def\@@yli{0}\fi\fi
+\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(1100,480)(-200,-180){pentamethylenei}%2002/4/30 by S. Fujita
+(200,180)%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member a\relax
+\@adoublebondtrue
+\else\if\member b\relax
+\@bdoublebondtrue
+\else\if\member A\relax
+\@Adoublebondtrue
+\else\if\member B\relax
+\@Bdoublebondtrue
+%\else\if\member c\relax%dummy
+%\else\if\member C\relax%dummy
+%\else\if\member d\relax%dummy
+%\else\if\member D\relax%dummy
+%\else
+% \expandafter\twoCH@@R\member//%
+% \set@fusion@pentamethi% for all bonds
+%\fi\fi\fi\fi
+\fi\fi\fi\fi}%
+\@wrongbdWatrue
+\@wrongbdWdtrue
+\Put@Direct(0,0){\@@trimethylenei{#2}{#3}{0}{0}}}%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member c\relax
+\@adoublebondtrue
+\else\if\member d\relax
+\@bdoublebondtrue
+\else\if\member C\relax
+\@Adoublebondtrue
+\else\if\member D\relax
+\@Bdoublebondtrue
+\fi\fi\fi\fi}%
+\@wrongbdWafalse
+\@wrongbdWdtrue
+\Put@Direct(342,0){\@@trimethylenei{#2}{#3}{1}{-2}}}%
+%
+%originally for fused rings
+%shifted for coloring skeletal bond 2010/10/01
+%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member a\relax%dummy
+\else\if\member b\relax%dummy
+\else\if\member A\relax%dummy
+\else\if\member B\relax%dummy
+\else\if\member c\relax%dummy
+\else\if\member C\relax%dummy
+\else\if\member d\relax%dummy
+\else\if\member D\relax%dummy
+\else
+ \expandafter\twoCH@@R\member//%
+ \set@fusion@pentamethi% for all bonds
+\fi\fi\fi\fi
+\fi\fi\fi\fi}}%
+\end{ShiftPicEnvB}%
+}% end of \pentamethylenei
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The inner command |\set@fusion@pentamethi| is used for typesetting
+% a fused ring at each bond represented by |\@@tmpa|. Warnings
+% concerning mismatched ring-fusions are based on the command
+% |\FuseWarning|.
+%
+% \begin{macro}{\set@fusion@pentamethi}
+% \changes{v2.00}{1998/12/21}{New command: \cs{set@fusion@pentamethi}}
+% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring}
+% \begin{macrocode}
+\def\set@fusion@pentamethi{%
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+\if\@@tmpa a\relax%
+ \putlratom{0}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}%
+ \else\if\@@tmpa A\relax%
+ \putlratom{171}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}%
+ \else\if\@@tmpa b\relax%
+ \putlratom{171}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}%
+ \else\if\@@tmpa B\relax%
+ \putlratom{342}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}%
+ \else\if\@@tmpa c\relax%
+ \putlratom{342}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c}%
+ \else\if\@@tmpa C\relax%
+ \putlratom{513}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C}%
+ \else\if\@@tmpa d\relax%
+ \putlratom{513}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{d}%
+ \else\if\@@tmpa D\relax%
+ \putlratom{684}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{D}%
+ \fi\fi\fi\fi
+ \fi\fi\fi\fi
+\global\let\FuseWarning=\FuseW@rning%added 2010/10/01
+}% end of the macro \set@fusion@pentamethi
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Switches for Selecting Normal and Inverse Directions}
+%
+% The switch |\@normorinvsw| is used to select normal or
+% inverse direction in the definition of commands for drawing
+% hexametylenes and higher homologs. The value of this switch is
+% false for normal direction and true for inverse direction.
+%
+% \begin{macro}{\if@normorinvsw}
+% \begin{macrocode}
+\newif\if@normorinvsw \@normorinvswfalse
+% \end{macrocode}
+% \end{macro}
+%
+% The macro |\set@normaldirection| assigns active commands to
+% temporary commands in the definition of a command for drawing
+% hexametylenes or higher homologs of normal direction.
+% \begin{macro}{\set@normaldirection}
+% \begin{macrocode}
+\def\set@normaldirection{%
+\@normorinvswfalse
+\let\@yltrinormorinv=\yltrimethyleneposition
+\let\@yldinormorinv=\yldimethyleneposition
+\let\@@trinormorinv=\@@trimethylene
+\let\@@dinormorinv=\@@dimethylene}
+% \end{macrocode}
+% \end{macro}
+%
+% The macro |\set@inversedirection| assigns active commands to
+% temporary commands in the definition of a command for drawing
+% hexametylenes or higher homologs of inverse direction.
+% \begin{macro}{\set@inversedirection}
+% \begin{macrocode}
+\def\set@inversedirection{%
+\@normorinvswtrue
+\let\@yltrinormorinv=\yltrimethyleneiposition
+\let\@yldinormorinv=\yldimethyleneiposition
+\let\@@trinormorinv=\@@trimethylenei
+\let\@@dinormorinv=\@@dimethylenei}
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Hexamethylenes of normal and inverse direction}
+%
+% Hexamethylene and hetera derivatives are typeset with the commands
+% |\hexamethylene| and |\hexamethylenei|. The former macro
+% is to draw hexamethylenes of normal direction, while the latter
+% is to draw ones of inverse directions.
+%
+% \begin{verbatim}
+% Normal direction:
+%
+% (bbb) ((bbb))
+% bbb ddd fff
+% 2 4 6
+% a / ` b / c` d / e
+% / ` / ` /
+% 1 3 5
+% aaa ccc eee
+% (aaa) (ccc)
+% ((aaa))
+%
+% Inverse direction:
+%
+% (aaa)
+% aaa ccc eee (ccc) ((aaa))
+% 1 3 5
+% a ` b / ` c / d ` e
+% ` / ` / `
+% 2 4 6
+% bbb ddd (bbb) fff((bbb))
+% \end{verbatim}
+%
+% The macros have two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+%
+% \begin{verbatim}
+% \hexamethylene[BONDLIST]{ATOMLIST}{SUBSLIST}
+% \hexamethylenei[BONDLIST]{ATOMLIST}{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one character selected from
+% a to e (or A to E),
+% each of which indicates the presence of an inner (endcyclic) double
+% bond on the corresponding position. A lowercase letter is used
+% to typeset a double bond at the upper-side of an outer skeletal bond,
+% while an uppercase letter typesets a double bond at the lower-side of
+% an outer skeletal bond.
+% (Note that the option `A' represents an aromatic circle in
+% commands |\sixheterov| etc.)
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% [] or none : no double bond
+% a : 1,2-double bond
+% A : 1,2-double bond in an opposite side
+% b : 2,3-double bond
+% B : 2,3-double bond in an opposite side
+% c : 3,4-double bond
+% C : 3,4-double bond in an opposite side
+% d : 4,5-double bond
+% D : 4,5-double bond in an opposite side
+% e : 5,6-double bond
+% E : 5,6-double bond in an opposite side
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+%
+% ATOMLIST: list of heteroatoms (max 6 atoms)
+%
+% for n = 1 to 6
+%
+% n==? : Hetero atom, e.g. N, O, etc. at n-position,
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 6
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+% nW : terminal single bond (n=1 or 6)
+%
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \hexamethylene{1==N}{1==Cl;2==F}
+% \hexamethylenei[b]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+%
+% The macros |\hexamethylene| and |\hexamethylenei| are
+% based on a common inner macro |\@hexamethylene|,
+% the definition of which uses a picture environment.
+%
+% \begin{macro}{\hexamethylene}
+% \begin{macrocode}
+\def\hexamethylene{%
+\@ifnextchar[{\set@normaldirection\@hexamethylene[@}{%
+\set@normaldirection\@hexamethylene[]}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hexamethylenei}
+% \begin{macrocode}
+\def\hexamethylenei{%
+\@ifnextchar[{\set@inversedirection\@hexamethylene[@}{%
+\set@inversedirection\@hexamethylene[]}}
+% \end{macrocode}
+% \end{macro}
+%
+% Inner temporary commands such as |\@@trinormorinv| and
+% |\@@dinormorinv| in the common |\@hexamethylene| macro
+% are replaced by active commands such as |\@@trimethylene| and
+% |\@@dimethylene|. They carry out the following unit processes.
+% \begin{enumerate}
+% \item Adjusting substitution site:
+% |\yltrimethyleneposition|
+% or |\yldimethyleneposition| for normal direction;
+% |\yltrimethyleneiposition|
+% or |\yldimethyleneiposition| for inverse direction.
+% \item Treating atom list,
+% placing outer skeletons, inner double bonds,
+% setting hetero atoms, and
+% placing substituents:
+% |\@@trimethylene|
+% or |\@@dimethylene| for normal direction;
+% |\@@trimethylenei|
+% or |\@@dimethylenei| for normal direction.
+% \end{enumerate}
+%
+% \begin{macro}{\@hexamethylene}
+% \begin{macrocode}
+\def\@hexamethylene[#1]#2#3{%
+\iniflag\iniatom%
+\@reset@ylsw%
+{\@linterchainswfalse%
+\@rinterchainswtrue%
+\@yltrinormorinv{#2}{#3}{0}{0}}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\else
+{\@rinterchainswtrue%
+\@linterchainswtrue%
+\@yltrinormorinv{#2}{#3}{1}{-2}}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-342}\def\@@yli{0}\fi
+\else
+{\@rinterchainswfalse%
+\@linterchainswtrue%
+\@yldinormorinv{#2}{#3}{1}{-4}}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-684}\def\@@yli{0}\fi\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(1100,480)(-200,-180){hexamethylene}%2002/4/30 by S. Fujita
+(200,180)%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member a\relax
+\@adoublebondtrue
+\else\if\member b\relax
+\@bdoublebondtrue
+\else\if\member A\relax
+\@Adoublebondtrue
+\else\if\member B\relax
+\@Bdoublebondtrue
+%\else\if\member c\relax%dummy
+%\else\if\member C\relax%dummy
+%\else\if\member d\relax%dummy
+%\else\if\member D\relax%dummy
+%\else\if\member e\relax%dummy
+%\else\if\member E\relax%dummy
+%\else
+% \expandafter\twoCH@@R\member//%
+% \set@fusion@hexameth% for all bonds
+%\fi\fi\fi\fi\fi\fi
+\fi\fi\fi\fi}%
+\@wrongbdWatrue
+\@wrongbdWdtrue
+\Put@Direct(0,0){\@@trinormorinv{#2}{#3}{0}{0}}}%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member c\relax
+\@adoublebondtrue
+\else\if\member d\relax
+\@bdoublebondtrue
+\else\if\member C\relax
+\@Adoublebondtrue
+\else\if\member D\relax
+\@Bdoublebondtrue
+\fi\fi\fi\fi}%
+\@wrongbdWatrue
+\@wrongbdWdtrue
+\Put@Direct(342,0){\@@trinormorinv{#2}{#3}{1}{-2}}}%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member e\relax
+\@adoublebondtrue
+\else\if\member E\relax
+\@Adoublebondtrue
+\fi\fi}%
+\if@normorinvsw% inverse
+ \@wrongbdWatrue
+ \@wrongbdWdfalse
+\else% normal
+ \@wrongbdWafalse
+ \@wrongbdWdtrue
+\fi
+\Put@Direct(684,0){\@@dinormorinv{#2}{#3}{1}{-4}}}%
+%
+%originally for fused rings
+%shifted for coloring skeletal bond 2010/10/01
+%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member a\relax%dummy
+\else\if\member b\relax%dummy
+\else\if\member A\relax%dummy
+\else\if\member B\relax%dummy
+\else\if\member c\relax%dummy
+\else\if\member C\relax%dummy
+\else\if\member d\relax%dummy
+\else\if\member D\relax%dummy
+\else\if\member e\relax%dummy
+\else\if\member E\relax%dummy
+\else
+ \expandafter\twoCH@@R\member//%
+ \set@fusion@hexameth% for all bonds
+\fi\fi\fi\fi\fi\fi
+\fi\fi\fi\fi}}%
+\end{ShiftPicEnvB}%
+}% end of \@hexamethylene
+% \end{macrocode}
+% \end{macro}
+%
+% The inner command |\set@fusion@hexameth| is used for typesetting
+% a fused ring at each bond represented by |\@@tmpa|. Warnings
+% concerning mismatched ring-fusions are based on the command
+% |\FuseWarning|.
+%
+% \begin{macro}{\set@fusion@hexameth}
+% \changes{v2.00}{1998/12/21}{New command: \cs{set@fusion@hexameth}}
+% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring}
+% \begin{macrocode}
+\def\set@fusion@hexameth{%
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+\if@normorinvsw
+ \if\@@tmpa e\relax%
+ \putlratom{684}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{e}%
+ \else\if\@@tmpa E\relax%
+ \putlratom{855}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{E}%
+ \else
+ \set@fusion@pentamethi
+ \fi\fi
+\else
+ \if\@@tmpa e\relax%
+ \putlratom{684}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{e}%
+ \else\if\@@tmpa E\relax%
+ \putlratom{855}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{E}%
+ \else
+ \set@fusion@pentameth
+ \fi\fi
+\fi
+\global\let\FuseWarning=\FuseW@rning%added 2010/10/01
+}% end of the macro \set@fusion@hexameth
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Heptamethylenes of normal and inverse direction}
+%
+% Heptamethylene and hetera derivatives are typeset with the commands
+% |\heptamethylene| and |\heptamethylenei|. The former macro
+% is to draw heptamethylenes of normal direction, while the latter
+% is to draw ones of inverse directions.
+%
+% \begin{verbatim}
+% Normal direction:
+%
+% (bbb) ((bbb))
+% bbb ddd fff
+% 2 4 6
+% a / ` b / c` d / e ` f
+% / ` / ` / `
+% 1 3 5 7
+% aaa ccc eee gggg
+% (aaa) (ccc) ((ccc))
+% ((aaa))
+%
+% Inverse direction:
+%
+% (aaa) ((aaa)) ((ccc))
+% aaa ccc eee (ccc) ggg
+% 1 3 5 7
+% a ` b / ` c / d ` e /f
+% ` / ` / ` /
+% 2 4 6
+% bbb ddd (bbb) fff((bbb))
+% (aaa)
+% \end{verbatim}
+%
+% The macros have two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+% \begin{verbatim}
+% \heptamethylene[BONDLIST]{ATOMLIST}{SUBSLIST}
+% \heptamethylenei[BONDLIST]{ATOMLIST}{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one character selected from
+% a to f (or A to F),
+% each of which indicates the presence of an inner (endcyclic) double
+% bond on the corresponding position. A lowercase letter is used
+% to typeset a double bond at the upper-side of an outer skeletal bond,
+% while an uppercase letter typesets a double bond at the lower-side of
+% an outer skeletal bond.
+% (Note that the option `A' represents an aromatic circle in
+% commands |\sixheterov| etc.)
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% [] or none : no double bond
+% a : 1,2-double bond
+% A : 1,2-double bond in an opposite side
+% b : 2,3-double bond
+% B : 2,3-double bond in an opposite side
+% c : 3,4-double bond
+% C : 3,4-double bond in an opposite side
+% d : 4,5-double bond
+% D : 4,5-double bond in an opposite side
+% e : 5,6-double bond
+% E : 5,6-double bond in an opposite side
+% f : 6,7-double bond
+% F : 6,7-double bond in an opposite side
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+%
+% ATOMLIST: list of heteroatoms (max 7 atoms)
+%
+% for n = 1 to 7
+%
+% n==? : Hetero atom, e.g. N, O, etc. at n-position,
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 7
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+% nW : terminal single bond (n=1 or 7)
+%
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \heptamethylene{1==N}{1==Cl;2==F}
+% \heptamethylenei[b]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+%
+% The macros |\heptamethylene| and |\heptamethylenei| are
+% based on a common inner macro |\@heptamethylene|,
+% the definition of which uses a picture environment.
+%
+% \begin{macro}{\heptamethylene}
+% \begin{macrocode}
+\def\heptamethylene{%
+\@ifnextchar[{\set@normaldirection\@heptamethylene[@}{%
+\set@normaldirection\@heptamethylene[]}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\heptamethylenei}
+% \begin{macrocode}
+\def\heptamethylenei{%
+\@ifnextchar[{\set@inversedirection\@heptamethylene[@}{%
+\set@inversedirection\@heptamethylene[]}}
+% \end{macrocode}
+% \end{macro}
+%
+% Inner temporary commands such as |\@@trinormorinv| and
+% |\@@dinormorinv| in the common |\@heptamethylene| macro
+% are replaced by active commands such as |\@@trimethylene| and
+% |\@@dimethylene|. They carry out the following unit processes.
+% \begin{enumerate}
+% \item Adjusting substitution site:
+% |\yltrimethyleneposition|
+% or |\yldimethyleneposition| for normal direction;
+% |\yltrimethyleneiposition|
+% or |\yldimethyleneiposition| for inverse direction.
+% \item Treating atom list,
+% placing outer skeletons, inner double bonds,
+% setting hetero atoms, and
+% placing substituents:
+% |\@@trimethylene|
+% or |\@@dimethylene| for normal direction;
+% |\@@trimethylenei|
+% or |\@@dimethylenei| for normal direction.
+% \end{enumerate}
+%
+% \begin{macro}{\@heptamethylene}
+% \begin{macrocode}
+\def\@heptamethylene[#1]#2#3{%
+\iniflag\iniatom%
+\@reset@ylsw%
+{\@linterchainswfalse%
+\@rinterchainswtrue%
+\@yltrinormorinv{#2}{#3}{0}{0}}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\else
+{\@rinterchainswtrue%
+\@linterchainswtrue%
+\@yltrinormorinv{#2}{#3}{1}{-2}}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-342}\def\@@yli{0}\fi
+\else
+{\@rinterchainswfalse%
+\@linterchainswtrue%
+\@yltrinormorinv{#2}{#3}{1}{-4}}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-684}\def\@@yli{0}\fi\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(1450,480)(-200,-180){heptamethylene}%2002/4/30 by S. Fujita
+(200,180)%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member a\relax
+\@adoublebondtrue
+\else\if\member b\relax
+\@bdoublebondtrue
+\else\if\member A\relax
+\@Adoublebondtrue
+\else\if\member B\relax
+\@Bdoublebondtrue
+%\else\if\member c\relax%dummy
+%\else\if\member C\relax%dummy
+%\else\if\member d\relax%dummy
+%\else\if\member D\relax%dummy
+%\else\if\member e\relax%dummy
+%\else\if\member E\relax%dummy
+%\else\if\member f\relax%dummy
+%\else\if\member F\relax%dummy
+%\else
+% \expandafter\twoCH@@R\member//%
+% \set@fusion@heptameth% for all bonds
+%\fi\fi\fi\fi\fi\fi\fi\fi
+\fi\fi\fi\fi}%
+\@wrongbdWatrue
+\@wrongbdWdtrue
+\Put@Direct(0,0){\@@trinormorinv{#2}{#3}{0}{0}}}%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member c\relax
+\@adoublebondtrue
+\else\if\member d\relax
+\@bdoublebondtrue
+\else\if\member C\relax
+\@Adoublebondtrue
+\else\if\member D\relax
+\@Bdoublebondtrue
+\fi\fi\fi\fi}%
+\@wrongbdWatrue
+\@wrongbdWdtrue
+\Put@Direct(342,0){\@@trinormorinv{#2}{#3}{1}{-2}}}%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member e\relax
+\@adoublebondtrue
+\else\if\member E\relax
+\@Adoublebondtrue
+\else\if\member f\relax
+\@bdoublebondtrue
+\else\if\member F\relax
+\@Bdoublebondtrue
+\fi\fi\fi\fi}%
+\if@normorinvsw% inverse
+\@wrongbdWafalse
+\@wrongbdWdtrue
+\else%normal
+\@wrongbdWatrue
+\@wrongbdWdfalse
+\fi
+\Put@Direct(684,0){\@@trinormorinv{#2}{#3}{1}{-4}}}%
+%
+%originally for fused rings
+%shifted for coloring skeletal bond 2010/10/01
+%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member a\relax%dummy
+\else\if\member b\relax%dummy
+\else\if\member A\relax%dummy
+\else\if\member B\relax%dummy
+\else\if\member c\relax%dummy
+\else\if\member C\relax%dummy
+\else\if\member d\relax%dummy
+\else\if\member D\relax%dummy
+\else\if\member e\relax%dummy
+\else\if\member E\relax%dummy
+\else\if\member f\relax%dummy
+\else\if\member F\relax%dummy
+\else
+ \expandafter\twoCH@@R\member//%
+ \set@fusion@heptameth% for all bonds
+\fi\fi\fi\fi\fi\fi\fi\fi
+\fi\fi\fi\fi}}%
+\end{ShiftPicEnvB}%
+}% end of \@heptamethylene
+% \end{macrocode}
+% \end{macro}
+%
+% The inner command |\set@fusion@heptameth| is used for typesetting
+% a fused ring at each bond represented by |\@@tmpa|. Warnings
+% concerning mismatched ring-fusions are based on the command
+% |\FuseWarning|.
+%
+% \begin{macro}{\set@fusion@heptameth}
+% \changes{v2.00}{1998/12/21}{New command: \cs{set@fusion@heptameth}}
+% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring}
+% \begin{macrocode}
+\def\set@fusion@heptameth{%
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+\if@normorinvsw
+ \if\@@tmpa e\relax%
+ \putlratom{684}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{e}%
+ \else\if\@@tmpa E\relax%
+ \putlratom{855}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{E}%
+ \else\if\@@tmpa f\relax%
+ \putlratom{855}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{f}%
+ \else\if\@@tmpa F\relax%
+ \putlratom{1027}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{F}%
+ \else
+ \set@fusion@pentamethi
+ \fi\fi\fi\fi
+\else
+ \if\@@tmpa e\relax%
+ \putlratom{684}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{e}%
+ \else\if\@@tmpa E\relax%
+ \putlratom{855}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{E}%
+ \else\if\@@tmpa f\relax%
+ \putlratom{855}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{f}%
+ \else\if\@@tmpa F\relax%
+ \putlratom{1027}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{F}%
+ \else
+ \set@fusion@pentameth
+ \fi\fi\fi\fi
+\fi
+\global\let\FuseWarning=\FuseW@rning%added 2010/10/01
+}% end of the macro \set@fusion@heptameth
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Octamethylenes of normal and inverse directions}
+%
+% Octamethylene and hetera derivatives are typeset with the commands
+% |\octamethylene| and |\octamethylenei|. The former macro
+% is to draw octamethylenes of normal direction, while the latter
+% is to draw ones of inverse directions.
+%
+% \begin{verbatim}
+% Normal direction:
+%
+% (bbb) ((bbb)) (((bbb)))
+% bbb ddd fff hhh
+% 2 4 6 8
+% a / ` b / c` d / e ` f /g
+% / ` / ` / ` /
+% 1 3 5 7
+% aaa ccc eee gggg
+% (aaa) (ccc) ((ccc))
+% ((aaa)) (((aaa)))
+%
+% Inverse direction:
+% (((aaa)))
+% (aaa) ((aaa)) ((ccc))
+% aaa ccc eee (ccc) ggg
+% 1 3 5 7
+% a ` b / ` c / d ` e /f ` g
+% ` / ` / ` / `
+% 2 4 6 8
+% bbb ddd fff hhh
+% (bbb) ((bbb)) (((bbb)))
+% \end{verbatim}
+%
+% The macros has two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+% \begin{verbatim}
+% \octamethylene[BONDLIST]{ATOMLIST}{SUBSLIST}
+% \octamethylenei[BONDLIST]{ATOMLIST}{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one character selected from
+% a to g (or A to G),
+% each of which indicates the presence of an inner (endcyclic) double
+% bond on the corresponding position. A lowercase letter is used
+% to typeset a double bond at the upper-side of an outer skeletal bond,
+% while an uppercase letter typesets a double bond at the lower-side of
+% an outer skeletal bond.
+% (Note that the option `A' represents an aromatic circle in
+% commands |\sixheterov| etc.)
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% [] or none : no double bond
+% a : 1,2-double bond
+% A : 1,2-double bond in an opposite side
+% b : 2,3-double bond
+% B : 2,3-double bond in an opposite side
+% c : 3,4-double bond
+% C : 3,4-double bond in an opposite side
+% d : 4,5-double bond
+% D : 4,5-double bond in an opposite side
+% e : 5,6-double bond
+% E : 5,6-double bond in an opposite side
+% f : 6,7-double bond
+% F : 6,7-double bond in an opposite side
+% g : 7,8-double bond
+% G : 7,8-double bond in an opposite side
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+%
+% ATOMLIST: list of heteroatoms (max 8 atoms)
+%
+% for n = 1 to 8
+%
+% n==? : Hetero atom, e.g. N, O, etc. at n-position,
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 8
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+% nW : terminal single bond (n=1 or 8)
+%
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \octamethylene{1==N}{1==Cl;2==F}
+% \octamethylenei[b]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+%
+% The macros |\octamethylene| and |\octamethylenei| are
+% based on a common inner macro |\@octamethylene|,
+% the definition of which uses a picture environment.
+%
+% \begin{macro}{\octamethylene}
+% \begin{macrocode}
+\def\octamethylene{%
+\@ifnextchar[{\set@normaldirection\@octamethylene[@}{%
+\set@normaldirection\@octamethylene[]}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\octamethylenei}
+% \begin{macrocode}
+\def\octamethylenei{%
+\@ifnextchar[{\set@inversedirection\@octamethylene[@}{%
+\set@inversedirection\@octamethylene[]}}
+% \end{macrocode}
+% \end{macro}
+%
+% Inner temporary commands such as |\@@trinormorinv| and
+% |\@@dinormorinv| in the common |\@octamethylene| macro
+% are replaced by active commands such as |\@@trimethylene| and
+% |\@@dimethylene|. They carry out the following unit processes.
+% \begin{enumerate}
+% \item Adjusting substitution site:
+% |\yltrimethyleneposition|
+% or |\yldimethyleneposition| for normal direction;
+% |\yltrimethyleneiposition|
+% or |\yldimethyleneiposition| for inverse direction.
+% \item Treating atom list,
+% placing outer skeletons, inner double bonds,
+% setting hetero atoms, and
+% placing substituents:
+% |\@@trimethylene|
+% or |\@@dimethylene| for normal direction;
+% |\@@trimethylenei|
+% or |\@@dimethylenei| for normal direction.
+% \end{enumerate}
+%
+% \begin{macro}{\@octamethylene}
+% \begin{macrocode}
+\def\@octamethylene[#1]#2#3{%
+\iniflag\iniatom%
+\@reset@ylsw%
+{\@linterchainswfalse%
+\@rinterchainswtrue%
+\@yltrinormorinv{#2}{#3}{0}{0}}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\else
+{\@rinterchainswtrue%
+\@linterchainswtrue%
+\@yltrinormorinv{#2}{#3}{1}{-2}}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-342}\def\@@yli{0}\fi
+\else
+{\@rinterchainswtrue%
+\@linterchainswtrue%
+\@yltrinormorinv{#2}{#3}{1}{-4}}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-684}\def\@@yli{0}\fi
+\else
+{\@rinterchainswfalse%
+\@linterchainswtrue%
+\@yldinormorinv{#2}{#3}{1}{-6}}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-1026}\def\@@yli{0}\fi\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(1620,480)(-200,-180){octamethylene}%2002/4/30 by S. Fujita
+(200,180)%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member a\relax
+\@adoublebondtrue
+\else\if\member b\relax
+\@bdoublebondtrue
+\else\if\member A\relax
+\@Adoublebondtrue
+\else\if\member B\relax
+\@Bdoublebondtrue
+%\else\if\member c\relax%dummy
+%\else\if\member C\relax%dummy
+%\else\if\member d\relax%dummy
+%\else\if\member D\relax%dummy
+%\else\if\member e\relax%dummy
+%\else\if\member E\relax%dummy
+%\else\if\member f\relax%dummy
+%\else\if\member F\relax%dummy
+%\else\if\member g\relax%dummy
+%\else\if\member G\relax%dummy
+%\else
+% \expandafter\twoCH@@R\member//%
+% \set@fusion@octameth% for all bonds
+%\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+\fi\fi\fi\fi}%
+\@wrongbdWatrue
+\@wrongbdWdtrue
+\Put@Direct(0,0){\@@trinormorinv{#2}{#3}{0}{0}}}%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member c\relax
+\@adoublebondtrue
+\else\if\member d\relax
+\@bdoublebondtrue
+\else\if\member C\relax
+\@Adoublebondtrue
+\else\if\member D\relax
+\@Bdoublebondtrue
+\fi\fi\fi\fi}%
+\@wrongbdWatrue
+\@wrongbdWdtrue
+\Put@Direct(342,0){\@@trinormorinv{#2}{#3}{1}{-2}}}%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member e\relax
+\@adoublebondtrue
+\else\if\member E\relax
+\@Adoublebondtrue
+\else\if\member f\relax
+\@bdoublebondtrue
+\else\if\member F\relax
+\@Bdoublebondtrue
+\fi\fi\fi\fi}%
+\@wrongbdWatrue
+\@wrongbdWdtrue
+\Put@Direct(684,0){\@@trinormorinv{#2}{#3}{1}{-4}}}%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member g\relax
+\@adoublebondtrue
+\else\if\member G\relax
+\@Adoublebondtrue
+\fi\fi}%
+\if@normorinvsw% inverse
+\@wrongbdWatrue
+\@wrongbdWdfalse
+\else% normal
+\@wrongbdWafalse
+\@wrongbdWdtrue
+\fi
+\Put@Direct(1026,0){\@@dinormorinv{#2}{#3}{1}{-6}}}%
+%
+%originally for fused rings
+%shifted for coloring skeletal bond 2010/10/01
+%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member a\relax%dummy
+\else\if\member b\relax%dummy
+\else\if\member A\relax%dummy
+\else\if\member B\relax%dummy
+\else\if\member c\relax%dummy
+\else\if\member C\relax%dummy
+\else\if\member d\relax%dummy
+\else\if\member D\relax%dummy
+\else\if\member e\relax%dummy
+\else\if\member E\relax%dummy
+\else\if\member f\relax%dummy
+\else\if\member F\relax%dummy
+\else\if\member g\relax%dummy
+\else\if\member G\relax%dummy
+\else
+ \expandafter\twoCH@@R\member//%
+ \set@fusion@octameth% for all bonds
+\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+\fi\fi\fi\fi}}%
+\end{ShiftPicEnvB}%
+}% end of \@octamethylene
+% \end{macrocode}
+% \end{macro}
+%
+% The inner command |\set@fusion@octameth| is used for typesetting
+% a fused ring at each bond represented by |\@@tmpa|. Warnings
+% concerning mismatched ring-fusions are based on the command
+% |\FuseWarning|.
+%
+% \begin{macro}{\set@fusion@octameth}
+% \changes{v2.00}{1998/12/21}{New command: \cs{set@fusion@octameth}}
+% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring}
+% \begin{macrocode}
+\def\set@fusion@octameth{%
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+\if@normorinvsw
+ \if\@@tmpa e\relax%
+ \putlratom{684}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{e}%
+ \else\if\@@tmpa E\relax%
+ \putlratom{855}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{E}%
+ \else\if\@@tmpa f\relax%
+ \putlratom{855}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{f}%
+ \else\if\@@tmpa F\relax%
+ \putlratom{1027}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{F}%
+ \else\if\@@tmpa g\relax%
+ \putlratom{1027}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{g}%
+ \else\if\@@tmpa G\relax%
+ \putlratom{1198}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{G}%
+ \else
+ \set@fusion@pentamethi
+ \fi\fi\fi\fi\fi\fi
+\else
+ \if\@@tmpa e\relax%
+ \putlratom{684}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{e}%
+ \else\if\@@tmpa E\relax%
+ \putlratom{855}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{E}%
+ \else\if\@@tmpa f\relax%
+ \putlratom{855}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{f}%
+ \else\if\@@tmpa F\relax%
+ \putlratom{1027}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{F}%
+ \else\if\@@tmpa g\relax%
+ \putlratom{1027}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{g}%
+ \else\if\@@tmpa G\relax%
+ \putlratom{1198}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{G}%
+ \else
+ \set@fusion@pentameth
+ \fi\fi\fi\fi\fi\fi
+\fi
+\global\let\FuseWarning=\FuseW@rning%added 2010/10/01
+}% end of the macro \set@fusion@octameth
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Nonamethylenes of normal and inverse direction}
+%
+% Nonamethylene and hetera derivatives are typeset with the commands
+% |\nonamethylene| and |\nonamethylenei|. The former macro
+% is to draw nonamethylenes of normal direction, while the latter
+% is to draw ones of inverse directions.
+%
+% \begin{verbatim}
+% Normal direction:
+%
+% (bbb) ((bbb)) (((bbb)))
+% bbb ddd fff hhh
+% 2 4 6 8
+% a / ` b / c` d / e ` f /g` h
+% / ` / ` / ` / `
+% 1 3 5 7 9
+% aaa ccc eee gggg (((ccc)))
+% (aaa) (ccc) ((ccc))
+% ((aaa)) (((aaa)))
+%
+% Inverse direction:
+% (((aaa)))
+% (aaa) ((aaa)) ((ccc))
+% aaa ccc eee (ccc) ggg (((ccc)))
+% 1 3 5 7 9
+% a ` b / ` c / d ` e /f ` g / h
+% ` / ` / ` / ` /
+% 2 4 6 8
+% bbb ddd fff hhh
+% (bbb) ((bbb)) (((bbb)))
+% (aaa) ((aaa)) ((ccc))
+% \end{verbatim}
+%
+% The macros have two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+%
+% \begin{verbatim}
+% \nonamethylene[BONDLIST]{ATOMLIST}{SUBSLIST}
+% \nonamethylenei[BONDLIST]{ATOMLIST}{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one character selected from
+% a to h (or A to H),
+% each of which indicates the presence of an inner (endcyclic) double
+% bond on the corresponding position. A lowercase letter is used
+% to typeset a double bond at the upper-side of an outer skeletal bond,
+% while an uppercase letter typesets a double bond at the lower-side of
+% an outer skeletal bond.
+% (Note that the option `A' represents an aromatic circle in
+% commands |\sixheterov| etc.)
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% [] or none : no double bond
+% a : 1,2-double bond
+% A : 1,2-double bond in an opposite side
+% b : 2,3-double bond
+% B : 2,3-double bond in an opposite side
+% c : 3,4-double bond
+% C : 3,4-double bond in an opposite side
+% d : 4,5-double bond
+% D : 4,5-double bond in an opposite side
+% e : 5,6-double bond
+% E : 5,6-double bond in an opposite side
+% f : 6,7-double bond
+% F : 6,7-double bond in an opposite side
+% g : 7,8-double bond
+% G : 7,8-double bond in an opposite side
+% h : 8,9-double bond
+% H : 8,9-double bond in an opposite side
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+%
+% ATOMLIST: list of heteroatoms (max 9 atoms)
+%
+% for n = 1 to 9
+%
+% n==? : Hetero atom, e.g. N, O, etc. at n-position,
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 9
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+% nW : terminal single bond (n=1 or 9)
+%
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \nonamethylene{1==N}{1==Cl;2==F}
+% \nonamethylenei[b]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+%
+% The macros |\nonamethylene| and |\nonamethylenei| are
+% based on a common inner macro |\@nonamethylene|,
+% the definition of which uses a picture environment.
+%
+% \begin{macro}{\nonamethylene}
+% \begin{macrocode}
+\def\nonamethylene{%
+\@ifnextchar[{\set@normaldirection\@nonamethylene[@}{%
+\set@normaldirection\@nonamethylene[]}}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\nonamethylenei}
+% \begin{macrocode}
+\def\nonamethylenei{%
+\@ifnextchar[{\set@inversedirection\@nonamethylene[@}{%
+\set@inversedirection\@nonamethylene[]}}
+% \end{macrocode}
+% \end{macro}
+%
+% Inner temporary commands such as |\@@trinormorinv| and
+% |\@@dinormorinv| in the common |\@nonamethylene| macro
+% are replaced by active commands such as |\@@trimethylene| and
+% |\@@dimethylene|. They carry out the following unit processes.
+% \begin{enumerate}
+% \item Adjusting substitution site:
+% |\yltrimethyleneposition|
+% or |\yldimethyleneposition| for normal direction;
+% |\yltrimethyleneiposition|
+% or |\yldimethyleneiposition| for inverse direction.
+% \item Treating atom list,
+% placing outer skeletons, inner double bonds,
+% setting hetero atoms, and
+% placing substituents:
+% |\@@trimethylene|
+% or |\@@dimethylene| for normal direction;
+% |\@@trimethylenei|
+% or |\@@dimethylenei| for normal direction.
+% \end{enumerate}
+%
+% \begin{macro}{\@nonamethylene}
+% \begin{macrocode}
+\def\@nonamethylene[#1]#2#3{%
+\iniflag\iniatom%
+\@reset@ylsw%
+{\@linterchainswfalse%
+\@rinterchainswtrue%
+\@yltrinormorinv{#2}{#3}{0}{0}}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\else
+{\@rinterchainswtrue%
+\@linterchainswtrue%
+\@yltrinormorinv{#2}{#3}{1}{-2}}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-342}\def\@@yli{0}\fi
+\else
+{\@rinterchainswtrue%
+\@linterchainswtrue%
+\@yltrinormorinv{#2}{#3}{1}{-4}}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-684}\def\@@yli{0}\fi
+\else
+{\@rinterchainswfalse%
+\@linterchainswtrue%
+\@yltrinormorinv{#2}{#3}{1}{-6}}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-1026}\def\@@yli{0}\fi\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(1790,480)(-200,-180){nonamethylene}%2002/4/30 by S. Fujita
+(200,180)%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member a\relax
+\@adoublebondtrue
+\else\if\member b\relax
+\@bdoublebondtrue
+\else\if\member A\relax
+\@Adoublebondtrue
+\else\if\member B\relax
+\@Bdoublebondtrue
+%\else\if\member c\relax%dummy
+%\else\if\member C\relax%dummy
+%\else\if\member d\relax%dummy
+%\else\if\member D\relax%dummy
+%\else\if\member e\relax%dummy
+%\else\if\member E\relax%dummy
+%\else\if\member f\relax%dummy
+%\else\if\member F\relax%dummy
+%\else\if\member g\relax%dummy
+%\else\if\member G\relax%dummy
+%\else\if\member h\relax%dummy
+%\else\if\member H\relax%dummy
+%\else
+% \expandafter\twoCH@@R\member//%
+% \set@fusion@nonameth% for all bonds
+%\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+\fi\fi\fi\fi}%
+\@wrongbdWatrue
+\@wrongbdWdtrue
+\Put@Direct(0,0){\@@trinormorinv{#2}{#3}{0}{0}}}%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member c\relax
+\@adoublebondtrue
+\else\if\member d\relax
+\@bdoublebondtrue
+\else\if\member C\relax
+\@Adoublebondtrue
+\else\if\member D\relax
+\@Bdoublebondtrue
+\fi\fi\fi\fi}%
+\@wrongbdWatrue
+\@wrongbdWdtrue
+\Put@Direct(342,0){\@@trinormorinv{#2}{#3}{1}{-2}}}%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member e\relax
+\@adoublebondtrue
+\else\if\member E\relax
+\@Adoublebondtrue
+\else\if\member f\relax
+\@bdoublebondtrue
+\else\if\member F\relax
+\@Bdoublebondtrue
+\fi\fi\fi\fi}%
+\@wrongbdWatrue
+\@wrongbdWdtrue
+\Put@Direct(684,0){\@@trinormorinv{#2}{#3}{1}{-4}}}%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member g\relax
+\@adoublebondtrue
+\else\if\member G\relax
+\@Adoublebondtrue
+\else\if\member h\relax
+\@bdoublebondtrue
+\else\if\member H\relax
+\@Bdoublebondtrue
+\fi\fi\fi\fi}%
+\if@normorinvsw% inverse
+\@wrongbdWafalse
+\@wrongbdWdtrue
+\else% normal
+\@wrongbdWatrue
+\@wrongbdWdfalse
+\fi
+\Put@Direct(1026,0){\@@trinormorinv{#2}{#3}{1}{-6}}}%
+%
+%originally for fused rings
+%shifted for coloring skeletal bond 2010/10/01
+%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member a\relax%dummy
+\else\if\member b\relax%dummy
+\else\if\member A\relax%dummy
+\else\if\member B\relax%dummy
+\else\if\member c\relax%dummy
+\else\if\member C\relax%dummy
+\else\if\member d\relax%dummy
+\else\if\member D\relax%dummy
+\else\if\member e\relax%dummy
+\else\if\member E\relax%dummy
+\else\if\member f\relax%dummy
+\else\if\member F\relax%dummy
+\else\if\member g\relax%dummy
+\else\if\member G\relax%dummy
+\else\if\member h\relax%dummy
+\else\if\member H\relax%dummy
+\else
+ \expandafter\twoCH@@R\member//%
+ \set@fusion@nonameth% for all bonds
+\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+\fi\fi\fi\fi}}%
+\end{ShiftPicEnvB}%
+}% end of \@nonamethylene
+% \end{macrocode}
+% \end{macro}
+%
+% The inner command |\set@fusion@nonameth| is used for typesetting
+% a fused ring at each bond represented by |\@@tmpa|. Warnings
+% concerning mismatched ring-fusions are based on the command
+% |\FuseWarning|.
+%
+% \begin{macro}{\set@fusion@nonameth}
+% \changes{v2.00}{1998/12/21}{New command: \cs{set@fusion@nonameth}}
+% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring}
+% \begin{macrocode}
+\def\set@fusion@nonameth{%
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+\if@normorinvsw
+ \if\@@tmpa h\relax%
+ \putlratom{1198}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{h}%
+ \else\if\@@tmpa H\relax%
+ \putlratom{1369}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{H}%
+ \else
+ \set@fusion@octameth
+ \fi\fi
+\else
+ \if\@@tmpa h\relax%
+ \putlratom{1198}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{h}%
+ \else\if\@@tmpa H\relax%
+ \putlratom{1369}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{H}%
+ \else
+ \set@fusion@octameth
+ \fi\fi
+\fi
+\global\let\FuseWarning=\FuseW@rning%added 2010/10/01
+}% end of the macro \set@fusion@nonameth
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Decamethylenes of normal and inverse directions}
+%
+% Decamethylene and hetera derivatives are typeset with the commands
+% |\decamethylene| and |\decamethylenei|. The former macro
+% is to draw decamethylenes of normal direction, while the latter
+% is to draw ones of inverse directions.
+%
+% \begin{verbatim}
+% Normal direction:
+%
+% (bbb) ((bbb)) (((bbb)))
+% bbb ddd fff hhh <bbb>
+% 2 4 6 8 10
+% a / ` b / c` d / e ` f /g ` h / i
+% / ` / ` / ` / ` /
+% 1 3 5 7 9
+% aaa ccc eee gggg (((ccc)))
+% (aaa) (ccc) ((ccc)) <aaa>
+% ((aaa)) (((aaa)))
+%
+% Inverse direction:
+% (((aaa)))
+% (aaa) ((aaa)) ((ccc)) <aaa>
+% aaa ccc eee (ccc) ggg (((ccc)))
+% 1 3 5 7 9
+% a ` b / ` c / d ` e /f ` g / h ` i
+% ` / ` / ` / ` / `
+% 2 4 6 8 10
+% bbb ddd fff hhh <bbb>
+% (bbb) ((bbb)) (((bbb)))
+% \end{verbatim}
+%
+% The macros have two arguments |ATOMLIST| and |SUBSLIST|
+% as well as an optional argument |BONDLIST|.
+% \begin{verbatim}
+% \decamethylene[BONDLIST]{ATOMLIST}{SUBSLIST}
+% \decamethylenei[BONDLIST]{ATOMLIST}{SUBSLIST}
+% \end{verbatim}
+%
+% The |BONDLIST| argument contains one character selected from
+% a to i (or A to I),
+% each of which indicates the presence of an inner (endcyclic) double
+% bond on the corresponding position. A lowercase letter is used
+% to typeset a double bond at the upper-side of an outer skeletal bond,
+% while an uppercase letter typesets a double bond at the lower-side of
+% an outer skeletal bond.
+% (Note that the option `A' represents an aromatic circle in
+% commands |\sixheterov| etc.)
+%
+% \begin{verbatim}
+% BONDLIST =
+%
+% [] or none : no double bond
+% a : 1,2-double bond
+% A : 1,2-double bond in an opposite side
+% b : 2,3-double bond
+% B : 2,3-double bond in an opposite side
+% c : 3,4-double bond
+% C : 3,4-double bond in an opposite side
+% d : 4,5-double bond
+% D : 4,5-double bond in an opposite side
+% e : 5,6-double bond
+% E : 5,6-double bond in an opposite side
+% f : 6,7-double bond
+% F : 6,7-double bond in an opposite side
+% g : 7,8-double bond
+% G : 7,8-double bond in an opposite side
+% h : 8,9-double bond
+% H : 8,9-double bond in an opposite side
+% i : 9,10-double bond
+% I : 9,10-double bond in an opposite side
+% \end{verbatim}
+%
+% The |ATOMLIST| argument contains one or more heteroatom descriptors
+% which are separated from each other by a semicolon. Each heteroatom
+% descriptor consists of a locant number and a heteroatom,
+% where these are separated with a double equality symbol.
+%
+% \begin{verbatim}
+%
+% ATOMLIST: list of heteroatoms (max 10 atoms)
+%
+% for n = 1 to 10
+%
+% n==? : Hetero atom, e.g. N, O, etc. at n-position,
+% e.g. 1==N for N at 1-position
+% \end{verbatim}
+%
+% The |SUBSLIST| argument contains one or more substitution descriptors
+% which are separated from each other by a semicolon. Each substitution
+% descriptor has a locant number with a bond modifier and a substituent,
+% where these are separated with a double equality symbol.
+% \begin{verbatim}
+%
+% SUBSLIST: list of substituents
+%
+% for n = 1 to 10
+%
+% nD : exocyclic double bond at n-atom
+% n or nS : exocyclic single bond at n-atom
+% nA : alpha single bond at n-atom
+% nB : beta single bond at n-atom
+% nSA : alpha single bond at n-atom (boldface)
+% nSB : beta single bond at n-atom (dotted line)
+% nSa : alpha (not specified) single bond at n-atom
+% nSb : beta (not specified) single bond at n-atom
+% nW : terminal single bond (n=1 or 10)
+%
+% \end{verbatim}
+%
+% Several examples are shown as follows.
+% \begin{verbatim}
+% e.g.
+%
+% \decamethylene{1==N}{1==Cl;2==F}
+% \decamethylenei[b]{1==N}{1==Cl;4==F;2==CH$_{3}$}
+% \end{verbatim}
+%
+% The macros |\decamethylene| and |\decamethylenei| are
+% based on a common inner macro |\@decamethylene|,
+% the definition of which uses a picture environment.
+% \begin{macro}{\decamethylene}
+% \begin{macrocode}
+\def\decamethylene{%
+\@ifnextchar[{\set@normaldirection\@decamethylene[@}{%
+\set@normaldirection\@decamethylene[]}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\decamethylenei}
+% \begin{macrocode}
+\def\decamethylenei{%
+\@ifnextchar[{\set@inversedirection\@decamethylene[@}{%
+\set@inversedirection\@decamethylene[]}}
+% \end{macrocode}
+% \end{macro}
+%
+% Inner temporary commands such as |\@@trinormorinv| and
+% |\@@dinormorinv| in the common |\@decamethylene| macro
+% are replaced by active commands such as |\@@trimethylene| and
+% |\@@dimethylene|. They carry out the following unit processes.
+% \begin{enumerate}
+% \item Adjusting substitution site:
+% |\yltrimethyleneposition|
+% or |\yldimethyleneposition| for normal direction;
+% |\yltrimethyleneiposition|
+% or |\yldimethyleneiposition| for inverse direction.
+% \item Treating atom list,
+% placing outer skeletons, inner double bonds,
+% setting hetero atoms, and
+% placing substituents:
+% |\@@trimethylene|
+% or |\@@dimethylene| for normal direction;
+% |\@@trimethylenei|
+% or |\@@dimethylenei| for normal direction.
+% \end{enumerate}
+%
+% \begin{macro}{\@decamethylene}
+% \begin{macrocode}
+\def\@decamethylene[#1]#2#3{%
+\iniflag\iniatom%
+\@reset@ylsw%
+{\@linterchainswfalse%
+\@rinterchainswtrue%
+\@yltrinormorinv{#2}{#3}{0}{0}}%
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{0}\def\@@yli{0}\fi
+\else
+{\@rinterchainswtrue%
+\@linterchainswtrue%
+\@yltrinormorinv{#2}{#3}{1}{-2}}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-342}\def\@@yli{0}\fi
+\else
+{\@rinterchainswtrue%
+\@linterchainswtrue%
+\@yltrinormorinv{#2}{#3}{1}{-4}}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-684}\def\@@yli{0}\fi
+\else
+{\@rinterchainswtrue%
+\@linterchainswtrue%
+\@yltrinormorinv{#2}{#3}{1}{-6}}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-1026}\def\@@yli{0}\fi
+\else
+{\@rinterchainswfalse%
+\@linterchainswtrue%
+\@yldinormorinv{#2}{#3}{1}{-8}}%
+\fi
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-1368}\def\@@yli{0}\fi\fi
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(1960,480)(-200,-180){decamethylene}%2002/4/30 by S. Fujita
+(200,180)%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member a\relax
+\@adoublebondtrue
+\else\if\member b\relax
+\@bdoublebondtrue
+\else\if\member A\relax
+\@Adoublebondtrue
+\else\if\member B\relax
+\@Bdoublebondtrue
+%\else\if\member c\relax%dummy
+%\else\if\member C\relax%dummy
+%\else\if\member d\relax%dummy
+%\else\if\member D\relax%dummy
+%\else\if\member e\relax%dummy
+%\else\if\member E\relax%dummy
+%\else\if\member f\relax%dummy
+%\else\if\member F\relax%dummy
+%\else\if\member g\relax%dummy
+%\else\if\member G\relax%dummy
+%\else\if\member h\relax%dummy
+%\else\if\member H\relax%dummy
+%\else\if\member i\relax%dummy
+%\else\if\member I\relax%dummy
+%\else
+% \expandafter\twoCH@@R\member//%
+% \set@fusion@decameth% for all bonds
+%\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+\fi\fi\fi\fi}%
+\@wrongbdWatrue
+\@wrongbdWdtrue
+\Put@Direct(0,0){\@@trinormorinv{#2}{#3}{0}{0}}}%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member c\relax
+\@adoublebondtrue
+\else\if\member d\relax
+\@bdoublebondtrue
+\else\if\member C\relax
+\@Adoublebondtrue
+\else\if\member D\relax
+\@Bdoublebondtrue
+\fi\fi\fi\fi}%
+\@wrongbdWatrue
+\@wrongbdWdtrue
+\Put@Direct(342,0){\@@trinormorinv{#2}{#3}{1}{-2}}}%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member e\relax
+\@adoublebondtrue
+\else\if\member E\relax
+\@Adoublebondtrue
+\else\if\member f\relax
+\@bdoublebondtrue
+\else\if\member F\relax
+\@Bdoublebondtrue
+\fi\fi\fi\fi}%
+\@wrongbdWatrue
+\@wrongbdWdtrue
+\Put@Direct(684,0){\@@trinormorinv{#2}{#3}{1}{-4}}}%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member g\relax
+\@adoublebondtrue
+\else\if\member G\relax
+\@Adoublebondtrue
+\else\if\member h\relax
+\@bdoublebondtrue
+\else\if\member H\relax
+\@Bdoublebondtrue
+\fi\fi\fi\fi}%
+\@wrongbdWatrue
+\@wrongbdWdtrue
+\Put@Direct(1026,0){\@@trinormorinv{#2}{#3}{1}{-6}}}%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member i\relax
+\@adoublebondtrue
+\else\if\member I\relax
+\@Adoublebondtrue
+\fi\fi}%
+\if@normorinvsw% inverse
+\@wrongbdWatrue
+\@wrongbdWdfalse
+\else% normal
+\@wrongbdWafalse
+\@wrongbdWdtrue
+\fi
+\Put@Direct(1368,0){\@@dinormorinv{#2}{#3}{1}{-8}}}%
+%
+%originally for fused rings
+%shifted for coloring skeletal bond 2010/10/01
+%
+{\reset@double%
+\@tfor\member:=#1\do{%
+\if\member a\relax%dummy
+\else\if\member b\relax%dummy
+\else\if\member A\relax%dummy
+\else\if\member B\relax%dummy
+\else\if\member c\relax%dummy
+\else\if\member C\relax%dummy
+\else\if\member d\relax%dummy
+\else\if\member D\relax%dummy
+\else\if\member e\relax%dummy
+\else\if\member E\relax%dummy
+\else\if\member f\relax%dummy
+\else\if\member F\relax%dummy
+\else\if\member g\relax%dummy
+\else\if\member G\relax%dummy
+\else\if\member h\relax%dummy
+\else\if\member H\relax%dummy
+\else\if\member i\relax%dummy
+\else\if\member I\relax%dummy
+\else
+ \expandafter\twoCH@@R\member//%
+ \set@fusion@decameth% for all bonds
+\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+\fi\fi\fi\fi}}%
+\end{ShiftPicEnvB}%
+}% end \@decamethylene
+% \end{macrocode}
+% \end{macro}
+%
+% The inner command |\set@fusion@decameth| is used for typesetting
+% a fused ring at each bond represented by |\@@tmpa|. Warnings
+% concerning mismatched ring-fusions are based on the command
+% |\FuseWarning|.
+%
+% \begin{macro}{\set@fusion@decameth}
+% \changes{v2.00}{1998/12/21}{New command: \cs{set@fusion@decameth}}
+% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring}
+% \begin{macrocode}
+\def\set@fusion@decameth{%
+% %%%%%%%%%%%%%%%%%%%%%
+% % inner bond fusion %
+% %%%%%%%%%%%%%%%%%%%%%
+\if@normorinvsw
+ \if\@@tmpa h\relax%
+ \putlratom{1198}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{h}%
+ \else\if\@@tmpa H\relax%
+ \putlratom{1369}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{H}%
+ \else\if\@@tmpa i\relax%
+ \putlratom{1369}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{i}%
+ \else\if\@@tmpa I\relax%
+ \putlratom{1540}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{I}%
+ \else
+ \set@fusion@octameth
+ \fi\fi\fi\fi
+\else
+ \if\@@tmpa h\relax%
+ \putlratom{1198}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{h}%
+ \else\if\@@tmpa H\relax%
+ \putlratom{1369}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{H}%
+ \else\if\@@tmpa i\relax%
+ \putlratom{1369}{0}{\@@tmpb}% % bond fused
+ \FuseWarning{-171}{-103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{i}%
+ \else\if\@@tmpa I\relax%
+ \putlratom{1540}{103}{\@@tmpb}% % bond fused
+ \FuseWarning{171}{103}%
+ {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{I}%
+ \else
+ \set@fusion@octameth
+ \fi\fi\fi\fi
+\fi%
+\global\let\FuseWarning=\FuseW@rning%added 2010/10/01
+}% end of the macro \set@fusion@decameth
+%</methylen>
+% \end{macrocode}
+% \end{macro}
+%
+% \Finale
+%
+\endinput
diff --git a/Master/texmf-dist/source/latex/xymtex/base/methylen.ins b/Master/texmf-dist/source/latex/xymtex/base/methylen.ins
new file mode 100644
index 00000000000..d1053e0933c
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/methylen.ins
@@ -0,0 +1,57 @@
+\def\batchfile{methylen.ins}
+\input docstrip.tex
+\preamble
+
+This is a generated file.
+
+Copyright 1998, 2001,2002,2004,2005,2010,2013 by Shinsaku Fujita
+all rights reserved.
+This style file is created for drawing chemical structural formulas
+This style file is to be contained in the ``xymtex'' directory which
+is an input directory for TeX.
+
+This file is part of the XyMTeX system.
+=======================================
+Old Versions:
+Version 1.02 Released on October 31, 1996 (private version)
+Version 2.00 Released on December 25, 1998
+Version 2.01 Released on June 20, 2001 (private version)
+Version 3.00 Released on April 30, 2002
+Version 4.00 Released on May 30, 2002 (private version)
+Version 4.00 Released on August 30, 2004
+Version 4.03 Released on July 20, 2005
+Version 5.00 Released on October 01, 2010
+Version 5.01b Released on March 29, 2013
+Version 5.01bb Released on June 22, 2013
+Version 5.01bbb Released on June 27, 2013
+
+The Present Version:
+Version 5.01 Released on July 20, 2013
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3
+of this license or (at your option) any later version.
+The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of LaTeX
+version 2005/12/01 or later.
+
+This work has the LPPL maintenance status `maintained'.
+The Current Maintainer of this work is Shinsaku Fujita.
+
+This work consists of the files methylen.dtx and methylen.ins
+and the derived file methylen.sty.
+
+=======================================
+
+\endpreamble
+
+\keepsilent
+
+\generateFile{methylen.drv}{t}{%
+ \from{methylen.dtx}{driver}}
+
+\generateFile{methylen.sty}{t}{%
+ \from{methylen.dtx}{methylen}}
+
+\endinput
diff --git a/Master/texmf-dist/source/latex/xymtex/base/polymers.dtx b/Master/texmf-dist/source/latex/xymtex/base/polymers.dtx
new file mode 100644
index 00000000000..728a4c4bace
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/polymers.dtx
@@ -0,0 +1,750 @@
+% \iffalse meta-comment
+%% File: polymers.dtx
+%
+% Copyright 1996, 1998, 2001, 2002, 2004. 2010 by Shinsaku Fujita
+%
+% This file is part of XyMTeX system.
+% -------------------------------------
+%
+% 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].
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+% The Current Maintainer of this work is Shinsaku Fujita.
+%
+% This work consists of the files polymers.dtx and polymers.ins
+% and the derived file polymers.sty.
+%
+% Please report any bugs, comments, suggestions, etc. to:
+% Shinsaku Fujita,
+% Shonan Institute of Chemoinformatics and Mathematical Chemistry
+% Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun, Kanagawa 250-0019 Japan
+% (old address)
+% Ashigara Research Laboratories, Fuji Photo Film Co., Ltd.,
+% Minami-Ashigara, Kanagawa-ken, 250-01, Japan.
+% (old address)
+% Department of Chemistry and Materials Technology,
+% Kyoto Institute of Technology, \\
+% Matsugasaki, Sakyoku, Kyoto, 606 Japan
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{polymers}
+% \def\versi@ndate{August 16, 1996}
+% \def\versi@nno{ver1.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{polymers}
+% \def\versi@ndate{October 31, 1998}
+% \def\versi@nno{ver1.02}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{polymers}
+% \def\versi@ndate{December 25, 1998}
+% \def\versi@nno{ver2.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{polymers}
+% \def\versi@ndate{June 20, 2001}
+% \def\versi@nno{ver2.01}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{polymers}
+% \def\versi@ndate{April 30, 2002}
+% \def\versi@nno{ver3.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{polymers}
+% \def\versi@ndate{May 30, 2002}
+% \def\versi@nno{ver4.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{polymers}
+% \def\versi@ndate{August 30, 2004}
+% \def\versi@nno{ver4.01}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \fi
+%
+% \CheckSum{480}
+%% \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.00}{1996/07/07}{first edition for LaTeX2e}
+% \changes{v1.02}{1998/10/31}{revised edition for LaTeX2e}
+% \changes{v2.00}{1998/12/25}{enhanced edition for LaTeX2e}
+% \changes{v2.01}{2001/06/20}{Size reduction and Clip information}
+% \changes{v3.00}{2002/04/30}{sfpicture environment, etc.}
+% \changes{v4.00}{2002/05/30}{PostScript output and ShiftPicEnv}
+% \changes{v4.01}{2004/08/30}{Minor additions}
+% \changes{v5.00}{2010/10/01}{for bond coloring and the LaTeX Project Public License}
+% \fi
+%
+% \iffalse
+%<*driver>
+\NeedsTeXFormat{pLaTeX2e}
+% \fi
+\ProvidesFile{polymers.dtx}[2010/10/01 v5.00 XyMTeX{} package file]
+% \iffalse
+\documentclass{ltxdoc}
+\GetFileInfo{polymers.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{Polymers by {\sffamily polymers.sty}
+(\fileversion) of \XyMTeX{}}
+\author{Shinsaku Fujita \\
+Shonan Institute of Chemoinformatics and Mathematical Chemistry, \\
+Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun, Kanagawa 250-0019 Japan
+% % (old address)
+% %Department of Chemistry and Materials Technology, \\
+% %Kyoto Institute of Technology, \\
+% %Matsugasaki, Sakyoku, Kyoto, 606-8585 Japan
+% %% (old address)
+% %% Ashigara Research Laboratories,
+% %% Fuji Photo Film Co., Ltd., \\
+% %% Minami-Ashigara, Kanagawa, 250-01 Japan
+}
+\date{\filedate}
+%
+\begin{document}
+ \maketitle
+ \DocInput{polymers.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \section{Introduction}\label{polymers:intro}
+%
+% \subsection{Options for {\sffamily docstrip}}
+%
+% \DeleteShortVerb{\|}
+% \begin{center}
+% \begin{tabular}{|l|l|}
+% \hline
+% \emph{option} & \emph{function}\\ \hline
+% polymers & polymers.sty \\
+% driver & driver for this dtx file \\
+% \hline
+% \end{tabular}
+% \end{center}
+% \MakeShortVerb{\|}
+%
+% \subsection{Version Information}
+%
+% \begin{macrocode}
+%<*polymers>
+\typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 5.00}
+\typeout{ -- Released October 01, 2010 by Shinsaku Fujita}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\j@urnalname{polymers}
+\def\versi@ndate{October 01, 2010}
+\def\versi@nno{ver5.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 polymers.sty}
+%
+% \begin{verbatim}
+% **********************************
+% * polymers.sty: list of commands *
+% **********************************
+%
+% <Delimeters for polymer units>
+%
+% \leftPMdelim \rightPMdelim
+% \leftpmdelim \rightpmdelim
+%
+% \leftPolymer \leftpolymer
+% \rightPolymer \rightpolymer
+%
+% \leftsqrPolymer \leftSqrpolymer
+% \lsqrdelimiter \leftsqrpolymer
+%
+% \rightsqrPolymer \rightSqrpolymer
+% \rsqrdelimiter \rightsqrpolymer
+%
+% \@sqrpolymer
+% \sqrpolymer \Sqrpolymer
+% \mpolymer
+%
+% <Bonds for polymers>
+%
+% \WestPbond \EastPbond
+% \sbond
+%
+% <Polymers>
+%
+% \polyethylene \@polyethylene
+% \polystyrene \@polystyrene
+%
+% \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 polymers.sty} for the present case). Hence, the combination
+% of |\input| and |\@ifundefined| is used to crossload sty
+% files ({\sf chemstr.sty} etc. for the present case) in place of the
+% |\RequirePackage| command of \LaTeXe{}.
+%
+% \begin{macrocode}
+% *************************
+% * input of basic macros *
+% *************************
+\@ifundefined{setsixringv}{\input chemstr.sty\relax}{}
+\@ifundefined{Westbond}{\input aliphat.sty\relax}{}
+\@ifundefined{bzdrv}{\input carom.sty\relax}{}
+\unitlength=0.1pt
+% \end{macrocode}
+%
+% \begin{macrocode}
+% ****************************************************
+% * For separating an augument list to each argument *
+% ****************************************************
+%
+\def\@forsemicol#1:=#2\do#3{%
+%% \edef\@fortmp{#2}\ifx\@fortmp\@empty%
+ \expandafter\def\expandafter\@fortmp\expandafter{#2}%
+ \ifx\@fortmp\@empty%
+ \else%
+ \expandafter\@forl@@p#2;\@nil;\@nil\@@#1{#3}\fi}
+% \end{macrocode}
+%
+% \section{Delimeters for polymer units}
+%
+% \subsection{Right and left delimeters}
+%
+% A polymer structure has a unit surrounded by
+% parentheses or other delimeters. For drawing a
+% parenthesis as the part of a substituent,
+% the following commands are prepared.
+%
+% \subsubsection{Parentheses}
+%
+% \begin{macro}{\leftPMdelim}
+% \begin{macro}{\leftpmdelim}
+% \begin{macrocode}
+% ********************************
+% * Delimeters for polymer units *
+% ********************************
+\def\leftPMdelim#1{$\mathstrut #1$}
+\def\leftpmdelim{\leftPMdelim{\biggm(}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\rightPMdelim}
+% \begin{macro}{\rightpmdelim}
+% \begin{macrocode}
+\def\rightPMdelim#1#2{%
+ $\mathstrut #1_{\mkern-5mu #2}$}
+\def\rightpmdelim#1{\rightPMdelim{\biggm)}{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The command |\leftpolymer| typesets the left parenthesis of
+% a polymer unit.
+% The command |\leftPolymer| is the inner commend of |\leftpolymer|,
+% where a delimeter can be selected as an argument.
+%
+% \begin{macro}{\leftPolymer}
+% \begin{macro}{\leftpolymer}
+% \begin{macrocode}
+\def\leftPolymer#1#2{%
+\begin{sfpicture}(0,0)(0,0)
+\putlatom{0}{0}{#2}
+\putlatom{120}{0}{$#1$}
+\end{sfpicture}}
+\def\leftpolymer#1{\leftPolymer{\biggm(}{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The command |\rightpolymer| typesets the left parenthesis of
+% a polymer unit along with a repeating number as a subscript.
+% The command |\rightPolymer| is the inner commend of |\rightpolymer|,
+% where a delimeter can be selected as an argument.
+%
+% \begin{macro}{\Rightpolymer}
+% \begin{macro}{\rightpolymer}
+% \begin{macrocode}
+\def\rightPolymer#1#2#3{%
+\begin{sfpicture}(0,0)(0,0)
+\putratom{0}{0}{#2}
+\putratom{-150}{0}{%
+% $\mathstrut#1_{\mkern-3mu \mbox{\scriptsize\rm #3}}$}
+ $\mathstrut#1_{\mkern-2mu #3}$}
+\end{sfpicture}}
+\def\rightpolymer#1#2{\rightPolymer{\biggm)}{#1}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{Brackets}
+%
+% The command |\leftSqrpolymer| typesets the left bracket of
+% a polymer unit.
+% The command |\leftsqrPolymer| is the inner commend of |\leftSqrpolymer|,
+% where a delimeter can be selected as an argument.
+% The bracket selected by the command |\leftSqrpolymer| is
+% a \TeX{} big mathematical symbol,
+% the line of which is
+% boldfaced.
+%
+% \begin{macro}{\leftsqrPolymer}
+% \begin{macro}{\leftSqrpolymer}
+% \begin{macrocode}
+\def\leftsqrPolymer#1#2{%
+\begin{sfpicture}(0,0)(0,0)
+\putlatom{0}{0}{#2}
+\putlatom{120}{0}{$#1$}
+\end{sfpicture}}
+\def\leftSqrpolymer#1{\leftsqrPolymer{\Biggm[}{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The command |\rightSqrpolymer| typesets the right bracket of
+% a polymer unit.
+% The command |\rightsqrPolymer| is the inner commend of |\rightSqrpolymer|,
+% where a delimeter can be selected as an argument.
+% The bracket selected by the command |\rightSqrpolymer| is
+% a \TeX{} big mathematical symbol,
+% the line of which is boldfaced.
+%
+% \begin{macro}{\rightsqrPolymer}
+% \begin{macro}{\rightSqrpolymer}
+% \begin{macrocode}
+\def\rightsqrPolymer#1#2#3{%
+\begin{sfpicture}(0,0)(0,0)
+\putratom{0}{0}{#2}
+\putratom{-150}{0}{%
+% $\mathstrut #1_{\mbox{\scriptsize\rm #3}}$}
+ $\mathstrut #1_{#3}$}
+\end{sfpicture}}
+\def\rightSqrpolymer#1#2{\rightsqrPolymer{\Biggm]}{#1}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% For drawing polymer brackets of thin line width,
+% we prepare the command |\lsqrdelimiter|. The height of
+% the bracket can be designated by the argument of this
+% command. The command
+% is used to define the command |\leftsqrpolymer|.
+% This command typesets a left bracket of thin line width.
+%
+% \begin{macro}{\lsqrdelimiter}
+% \begin{macro}{\leftsqrpolymer}
+% \begin{macrocode}
+\def\lsqrdelimiter#1{%
+\hbox{\vrule \@width\fboxrule
+$\vcenter to#1{%
+\hrule \@height\fboxrule \@width\fboxsep
+\vfill
+\hrule \@height\fboxrule \@width\fboxsep}$}}
+\def\leftsqrpolymer#1{%
+ \leftsqrPolymer{\lsqrdelimiter{300\unitlength}}{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The command |\rsqrdelimiter| is
+% used to define the command |\rightsqrpolymer|, which
+% typesets a right bracket of thin line width.
+%
+% \begin{macro}{\rsqrdelimiter}
+% \begin{macro}{\rightsqrpolymer}
+% \begin{macrocode}
+\def\rsqrdelimiter#1{%
+\hbox{$\vcenter to#1{%
+\hrule \@height\fboxrule \@width\fboxsep \vfill
+\hrule \@height\fboxrule \@width\fboxsep}$\kern-\fboxrule
+\vrule \@width\fboxrule\kern2pt}}
+\def\rightsqrpolymer#1#2{%
+\rightsqrPolymer{\rsqrdelimiter{300\unitlength}}{#1}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Pairs of delimeters}
+%
+% The command |\sqrpolymer| typesets a pair of thin-line brackets that
+% surrounds a polymer unit after measuring the height of
+% the unit. On the other hand,
+% the command |\Sqrpolymer| typesets a pair of thick-line brackets.
+% Both of the commands are based on the inner macro |\@sqrpolymer|,
+% in which a line width is designated by means of an argument.
+%
+% \begin{macro}{\@sqrpolymer}
+% \begin{macro}{\sqrpolymer}
+% \begin{macro}{\Sqrpolymer}
+% \begin{macrocode}
+\long\def\@sqrpolymer#1#2#3{%
+\begingroup \fboxrule=#1
+ \leavevmode\setbox\@tempboxa\hbox{#2}\@tempdima\fboxrule
+ \advance\@tempdima \fboxsep \advance\@tempdima \dp\@tempboxa
+ \@tempdimb=\wd\@tempboxa
+ \advance\@tempdimb by \fboxsep
+ \advance\@tempdimb by \fboxsep
+ \advance\@tempdimb by \fboxrule
+ \advance\@tempdimb by \fboxrule
+ \hbox{\lower \@tempdima\hbox
+ {\vbox{
+ \hbox to\@tempdimb{%
+ \vrule \@height \fboxrule \@width\fboxsep\hfill
+ \vrule \@height \fboxrule \@width\fboxsep}
+ \nointerlineskip
+ \hbox{\vrule \@width \fboxrule \hskip\fboxsep
+ \vbox{\vskip\fboxsep \copy\@tempboxa\vskip\fboxsep}\hskip
+ \fboxsep\vrule \@width \fboxrule}
+ \nointerlineskip
+ \hbox to\@tempdimb{%
+ \vrule \@height \fboxrule \@width\fboxsep\hfill
+ \vrule \@height \fboxrule \@width\fboxsep}}}}%
+\kern2pt\lower\@tempdima\hbox{\scriptsize$#3$}\endgroup}
+\long\def\sqrpolymer#1#2{\@sqrpolymer{0.4pt}{#1}{#2}}
+\long\def\Sqrpolymer#1#2{\@sqrpolymer{1pt}{#1}{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The command |\mpolymer| typesets a pair of parentheses that
+% surrounds a polymer unit after measuring the height of
+% the unit.
+%
+% \begin{macro}{\mpolymer}
+% \begin{macrocode}
+\long\def\mpolymer#1#2{%
+ \leavevmode\setbox\@tempboxa\hbox{#1}\@tempdima\fboxrule
+ \advance\@tempdima \fboxsep \advance\@tempdima \dp\@tempboxa
+ \hbox{\lower \@tempdima\hbox{\vbox{\hbox{\hskip\fboxsep%
+ $\left(\vcenter{\vskip\fboxsep \copy\@tempboxa\vskip\fboxsep}%
+ \right)_{#2}$}}}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Commands for drawing polymers}
+%
+% \subsection{Bonds for polymers}
+%
+% The original commands
+% |\Westbond| and |\Eastbond| are changed into
+% |\WestPbond| and |\EastPbond|, where each bond is lengthened
+% for making a space for drawing delimiters.
+%
+% \begin{macro}{\WestPbond}
+% \begin{macro}{\EastPbond}
+% \begin{macro}{\sbond}
+% \begin{macrocode}
+% **********************
+% * Bonds for polymers *
+% **********************
+\def\WestPbond{%
+\begin{sfpicture}(100,100)(0,0)%
+\Put@Direct(-100,0){\Westbond}%
+\Put@Line(-60,0)(-1,0){90}%
+\end{sfpicture}}%
+\def\EastPbond{%
+\begin{sfpicture}(100,100)(0,0)%
+\Put@Direct(100,0){\Eastbond}%
+\Put@Line(60,0)(1,0){90}%
+\end{sfpicture}}%
+\def\sbond{%
+\begin{sfpicture}(160,0)(0,0)%
+\Put@Line(0,33)(1,0){160}%
+\end{sfpicture}}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Polyethylene unit}
+%
+% The command |\polyethylene| is used to draw polyethylene derivatives,
+% in which each substituent is designated by the |SUBSLIST|.
+% The following numbering is used in this macro.
+%
+% \begin{verbatim}
+% ********************
+% * polyethylene unit*
+% ********************
+%
+% The following numbering is adopted in this macro.
+%
+% | 1 6 |
+% | |
+% | | | |
+% 2 ---- (1) -- (2) ---- 5
+% | | (0) | |
+% | |
+% | 3 4 |0
+% \end{verbatim}
+%
+% The command |\polyethylene| has arguments,
+% |CALIST| and |SUBSLIST|, as well as an optional argument |AUXLIST|.
+% \begin{verbatim}
+% \polyethylene[AUXLIST]{CALIST}{SUBSLIST}
+% \end{verbatim}
+%
+% The optional argument |AUXLIST| is used for
+% typesetting auxiliary symbols on central atoms.
+% \begin{verbatim}
+% AUXLIST =
+%
+% {n+} : + charge (or another one chararacter) on the center
+% \end{verbatim}
+%
+% The argument |CALIST| is used for indicating center atoms.
+% \begin{verbatim}
+% CALIST: central atom list
+%
+% for 1 : cetral atom (e.g. 1==C)
+% 2 : cetral atom (e.g. 2==C)
+% 0 : cetral bond (e.g. 0D==)
+% \end{verbatim}
+%
+% The argument |SUBSLIST| is used for indicating substituents.
+% \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{macro}{\if@centbondsw}
+% \begin{macro}{\if@centatswi}
+% \begin{macro}{\if@centatswii}
+% \begin{macrocode}
+\newif\if@centbondsw \@centbondswfalse
+\newif\if@centatswi \@centatswifalse
+\newif\if@centatswii \@centatswiifalse
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \changes{v5.00}{2010/10/01}{for bond coloring}
+% \begin{macro}{\polyethylene}
+% \begin{macro}{\@polyethylene}
+% \begin{macrocode}
+\def\polyethylene{\@ifnextchar[{\@polyethylene}{\@polyethylene[]}}
+\def\@polyethylene[#1]#2#3{%
+ \begin{sfpicture}(1100,600)(-400,-300)%
+ \OrigptOutput(400,300){polyethylene}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% ************
+% * aux list *
+% ************
+\def\@@@temp{#1}%
+\ifx\@@@temp\empty\else
+\@tfor\member:=#1\do{%
+ \expandafter\twoch@@r\member{}{}%
+ \ifcase\@@tmpa%
+ \or\relax\putratom{47}{50}{\scriptsize\@@tmpb}%
+ \or\relax\putratom{347}{50}{\scriptsize\@@tmpb}%
+\fi}\fi%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% *****************
+% * central atoms *
+% *****************
+\@forsemicol\member:=#2\do{%
+\ifx\member\empty\else%
+\expandafter\@m@mb@r\member;\relax%
+ \expandafter\threech@r\@membera{}{}%
+ \ifcase\@tmpa \global\@centbondswtrue\Put@Direct(20,0){\Eastbond}%
+ \or\global\@centatswitrue\putlratom{-40}{-33}{\@memberb}%
+ \or\global\@centatswiitrue\putlratom{260}{-33}{\@memberb}%
+\fi\fi}%
+\if@centatswi \else\putlratom{-40}{-33}{C}\fi%
+\if@centatswii \else\putlratom{260}{-33}{C}\fi%
+\if@centbondsw \else\Put@Line(70,0)(1,0){160}\fi%
+\global\@centbondswfalse%
+\global\@centatswifalse%
+\global\@centatswiifalse%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% ****************
+% * Substituents *
+% ****************
+\gdef\numrepeated{x}%
+\@forsemicol\member:=#3\do{%
+\ifx\member\empty\else%
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\ifcase\@tmpa \gdef\numrepeated{\@memberb}%
+\or\setBScolor{\Put@Direct(0,0){\Northbond}}%
+\or\setBScolor{\Put@Direct(0,0){\WestPbond}}%
+\or\setBScolor{\Put@Direct(0,0){\Southbond}}%
+\or\setBScolor{\Put@Direct(300,0){\Southbond}}%
+\or\setBScolor{\Put@Direct(300,0){\EastPbond}}%
+\or\setBScolor{\Put@Direct(300,0){\Northbond}}%
+\fi\fi}%end of ifcase
+% \end{macrocode}
+%
+% \begin{macrocode}
+% **************
+% * Delimeters *
+% **************
+\Put@Direct(-200,-33){\leftpmdelim}%
+\Put@Direct(400,-33){\rightpmdelim{\numrepeated}}%
+\end{sfpicture}}%end of macro polyethylene
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Polyestyrene unit}
+%
+% The command |\polyestrene| is used to draw polystyrene derivatives,
+% in which substituents on both the polymer chain and the phenyl group
+% are designated by the |SUBSLIST| and |PHSUBSLIST|, respectively.
+% The following numbering is adopted in this macro.
+% \begin{verbatim}
+% ********************
+% * polystyrene unit *
+% ********************
+%
+% | 1 6 |
+% | |
+% | | | |
+% 2 ---- (1) -- (2) ---- 5
+% | | (0) | |
+% | | |
+% | 3 | |0
+% / `
+% 6 | | 2
+% | |
+% 5 ` / 3
+% `
+% 4
+% \end{verbatim}
+%
+% The command |\polyethylene| has arguments,
+% |CALIST|, |SUBSLIST| and |PHSUBSLIST|,
+% as well as an optional argument |AUXLIST|.
+% \begin{verbatim}
+% \polystyrene[AUXLIST]{CALIST}{SUBSLIST}{PHSUBSLIST}
+% \end{verbatim}
+%
+% The optional argument |AUXLIST| is used for
+% typesetting auxiliary symbols on central atoms.
+% \begin{verbatim}
+% AUXLIST =
+%
+% {n+} : + charge (or another one chararacter) on the center
+% \end{verbatim}
+%
+% The argument |CALIST| is used for indicating center atoms.
+% \begin{verbatim}
+% CALIST: central atom list
+%
+% for 1 : cetral atom (e.g. 1==C)
+% 2 : cetral atom (e.g. 2==C)
+% 0 : cetral bond (e.g. 0D==)
+% \end{verbatim}
+%
+% The argument |SUBSLIST| is used for indicating substituents on
+% the polymer chain.
+% \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 argument |PHSUBSLIST| is used for indicating substituents on
+% the phenyl group.
+% \begin{verbatim}
+% PHSUBSLIST: list of phenyl substituents
+%
+% for n = 2 to 6
+%
+% n or nS : single bond at n-atom
+% \end{verbatim}
+%
+% \begin{macro}{\polyethylene}
+% \begin{macro}{\@polyethylene}
+% \begin{macrocode}
+\def\polystyrene{\@ifnextchar[{\@polystyrene}{\@polystyrene[]}}
+\def\@polystyrene[#1]#2#3#4{%
+\begin{sfpicture}(1100,1200)(0,-640)%
+ \OrigptOutput(0,640){polystyrene}%
+\begingroup \origptfalse
+\Put@Direct(0,0){\polyethylene[#1]{#2}{#3}}%
+\Put@Line(700,0)(0,1){240}%
+\Put@Direct(300,-646){\bzdrv{#4}}%
+\endgroup
+\end{sfpicture}}%end of macro polystyrene
+%</polymers>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \Finale
+%
+\endinput
diff --git a/Master/texmf-dist/source/latex/xymtex/base/polymers.ins b/Master/texmf-dist/source/latex/xymtex/base/polymers.ins
new file mode 100644
index 00000000000..f0811a9020e
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/polymers.ins
@@ -0,0 +1,53 @@
+\def\batchfile{polymers.ins}
+\input docstrip.tex
+\preamble
+
+This is a generated file.
+
+Copyright 1996,1998,2001,2002,2004,2010 by Shinsaku Fujita
+all rights reserved.
+This style file is created for drawing chemical structural formulas
+This style file is to be contained in the ``xymtex'' directory which
+is an input directory for TeX.
+
+This file is part of the XyMTeX system.
+=======================================
+Old Versions:
+Version 1.01 Released on August 16, 1996
+Version 1.02 Released on October 31, 1996 (private version)
+Version 2.00 Released on December 25, 1998
+Version 2.01 Released on June 20, 2001 (private version)
+Version 3.00 Released on April 30, 2002
+Version 4.00 Released on May 30, 2002 (private version)
+Version 4.00 Released on August 30, 2004
+
+The Present Version:
+Version 5.00 Released on October 01, 2010
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3
+of this license or (at your option) any later version.
+The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of LaTeX
+version 2005/12/01 or later.
+
+This work has the LPPL maintenance status `maintained'.
+The Current Maintainer of this work is Shinsaku Fujita.
+
+This work consists of the files polymers.dtx and polymers.ins
+and the derived file polymers.sty.
+
+=======================================
+
+\endpreamble
+
+\keepsilent
+
+\generateFile{polymers.drv}{t}{%
+ \from{polymers.dtx}{driver}}
+
+\generateFile{polymers.sty}{t}{%
+ \from{polymers.dtx}{polymers}}
+
+\endinput
diff --git a/Master/texmf-dist/source/latex/xymtex/base/putline.sed b/Master/texmf-dist/source/latex/xymtex/base/putline.sed
new file mode 100644
index 00000000000..bb8c2dade07
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/putline.sed
@@ -0,0 +1,10 @@
+#
+# putline.sed 2002/4/15/
+#
+s/\\begin{picture}/\\begin{sfpicture}/g
+s/\\end{picture}/\\end{sfpicture}/g
+s/\\put(\(.*\)){\\line(\(.*\)){\(.*\)}}/\\Put@Line(\1)(\2){\3}/g
+s/\\put(\(.*\)){\\circle\*{\(.*\)}}/\\Put@sCircle(\1){\2}/g
+s/\\put(\(.*\)){\\circle{\(.*\)}}/\\Put@oCircle(\1){\2}/g
+s/\\put(/\\Put@Direct(/g
+s/\\multiput(/\\Multiput@Direct(/g
diff --git a/Master/texmf-dist/source/latex/xymtex/base/putput.bat b/Master/texmf-dist/source/latex/xymtex/base/putput.bat
new file mode 100755
index 00000000000..b8433d16f42
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/putput.bat
@@ -0,0 +1 @@
+sed -f putline.sed %1 > %2
diff --git a/Master/texmf-dist/source/latex/xymtex/base/sizeredc.dtx b/Master/texmf-dist/source/latex/xymtex/base/sizeredc.dtx
new file mode 100644
index 00000000000..fd6bf49f35a
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/sizeredc.dtx
@@ -0,0 +1,351 @@
+% \iffalse meta-comment
+%% File: sizeredc.dtx
+%
+% Copyright 1996, 2001, 2002, 2004, 2010 by Shinsaku Fujita
+%
+% This file is part of XyMTeX system.
+% -------------------------------------
+%
+% 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].
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+% The Current Maintainer of this work is Shinsaku Fujita.
+%
+% This work consists of the files sizeredc.dtx and sizeredc.ins
+% and the derived file sizeredc.sty.
+%
+% Please report any bugs, comments, suggestions, etc. to:
+% Shinsaku Fujita,
+% Shonan Institute of Chemoinformatics and Mathematical Chemistry
+% Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun, Kanagawa 250-0019 Japan
+% (old address)
+% Ashigara Research Laboratories, Fuji Photo Film Co., Ltd.,
+% Minami-Ashigara, Kanagawa-ken, 250-01, Japan.
+% (old address)
+% Department of Chemistry and Materials Technology,
+% Kyoto Institute of Technology, \\
+% Matsugasaki, Sakyoku, Kyoto, 606 Japan
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{sizeredc}
+% \def\versi@ndate{June 12, 2001}
+% \def\versi@nno{ver1.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{sizeredc}
+% \def\versi@ndate{April 30, 2002}
+% \def\versi@nno{ver1.01}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{sizeredc}
+% \def\versi@ndate{August 30, 2004}
+% \def\versi@nno{ver4.01}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \fi
+%
+% \CheckSum{428}
+%% \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.00}{2001/06/12}{first edition for LaTeX2e}
+% \changes{v1.01}{2002/04/30}{2nd edition for XyMTeX v3.00}
+% \changes{v4.01}{2004/08/30}{Adjust XyMTeX v4.01}
+% \changes{v5.00}{2010/10/01}{the LaTeX Project Public License}
+% \fi
+%
+% \iffalse
+%<*driver>
+\NeedsTeXFormat{pLaTeX2e}
+% \fi
+\ProvidesFile{sizeredc.dtx}[2010/10/01 v5.00 XyMTeX{} package file]
+% \iffalse
+\documentclass{ltxdoc}
+\GetFileInfo{sizeredc.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{Size Reduction of Structural Formulas
+by {\sffamily sizeredc.sty} (\fileversion) of \XyMTeX{}}
+\author{Shinsaku Fujita \\
+Shonan Institute of Chemoinformatics and Mathematical Chemistry, \\
+Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun, Kanagawa 250-0019 Japan
+% % (old address)
+% %Department of Chemistry and Materials Technology, \\
+% %Kyoto Institute of Technology, \\
+% %Matsugasaki, Sakyoku, Kyoto, 606-8585 Japan
+% %% (old address)
+% %% Ashigara Research Laboratories,
+% %% Fuji Photo Film Co., Ltd., \\
+% %% Minami-Ashigara, Kanagawa, 250-01 Japan
+}
+\date{\filedate}
+%
+\begin{document}
+ \maketitle
+ \DocInput{sizeredc.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \section{Introduction}\label{sizeredc:intro}
+%
+% \subsection{Options for {\sffamily docstrip}}
+%
+% \DeleteShortVerb{\|}
+% \begin{center}
+% \begin{tabular}{|l|l|}
+% \hline
+% \emph{option} & \emph{function}\\ \hline
+% sizeredc & sizeredc.sty \\
+% driver & driver for this dtx file \\
+% \hline
+% \end{tabular}
+% \end{center}
+% \MakeShortVerb{\|}
+%
+% \subsection{Version Information}
+%
+% \begin{macrocode}
+%<*sizeredc>
+\typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 5.00}
+\typeout{ -- Released October 01, 2010 by Shinsaku Fujita}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\j@urnalname{sizeredc}
+\def\versi@ndate{October 01, 2010}
+\def\versi@nno{ver5.00}
+\def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\typeout{XyMTeX Macro File `\j@urnalname' (\versi@nno) <\versi@ndate>%
+\space[\copyrighth@lder]}
+% \end{macrocode}
+%
+% \section{Macros for Size Reduction}
+% \subsection{Division of Integers}
+%
+% \begin{macro}{\DIVIDE}
+% The macro |\DIVIDE| is used to the devision of an integer
+% by a divisor. The result (rounded to an integer) is stored
+% in a control sequence such as |\Quatient|.
+% \begin{verbatim}
+% \DIVDE{integer}{divisor}\Quatient
+% \end{verbatim}
+%
+% \begin{macrocode}
+\newcount\@tempcntx \newcount\@tempcnty \newcount\@tempcntz
+\newif\ifseifuflag \seifuflagfalse
+\def\DIVIDE#1#2#3{%
+\seifuflagfalse \@tempcntx=#1
+\ifnum\@tempcntx<0 \@tempcntx=-\@tempcntx\seifuflagtrue\fi
+\divide\@tempcntx by#2\relax
+\ifnum\@tempcntx<0 \@tempcntx=-\@tempcntx
+\ifseifuflag \seifuflagfalse \else \seifuflagtrue\fi\fi
+\@tempcntz=\@tempcntx%%store
+\@tempcnty=\@tempcntx \multiply\@tempcnty by#2%
+\ifnum\@tempcnty<0 \@tempcnty=-\@tempcnty\fi
+\@tempcntx=#1%
+\ifnum\@tempcntx<0 \@tempcntx=-\@tempcntx\fi
+\advance\@tempcntx by-\@tempcnty%
+\multiply\@tempcntx by10 \edef\s{\the\@tempcntx}%
+\divide\@tempcntx by#2
+\ifnum\@tempcntx<0 \@tempcntx=-\@tempcntx\fi
+\ifnum\@tempcntx>4\relax \advance\@tempcntz by1\fi
+\ifseifuflag \xdef#3{-\the\@tempcntz}%
+\else\xdef#3{\the\@tempcntz}\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Size Reduction of Formulas}
+%
+% \begin{macro}{\LineTemp}
+% The macro |\LineTemp| is used to redefine the |\line| commond of
+% the \LaTeXe{} picture environment. Thereby, the macro
+% |\LineTemp(a,b){c}| is transformed into the macro
+% |\drawline(0,0)(c, ca/b)| for epic.sty, where |ca/b| is
+% calculated by the macro |\DIVIDE| defined above.
+%
+% \begin{macrocode}
+\newcount\@xArg \newcount\@yArg
+\def\LineTemp(#1,#2)#3{\begingroup
+\@xArg #1\relax \@yArg #2\relax
+\ifnum\@xArg<0 \@tempcntx=-#3 \else
+\ifnum\@xArg>0 \@tempcntx=#3 \else \@tempcntx=0 \fi\fi
+\@tempcnty=#3
+\multiply\@tempcnty by\@yArg\relax
+\ifnum\@tempcnty<0 \@tempcnty=-\@tempcnty\fi
+\ifnum\@xArg<0 \@xArg=-\@xArg\fi
+\ifnum\@xArg=0 \edef\RR{#3}\else
+{\DIVIDE{\@tempcnty}{\@xArg}\RR}\fi
+\@tempcnty=\RR%
+\ifnum\@yArg<0 \ifnum\@tempcnty>0 \@tempcnty=-\@tempcnty\fi\fi
+\drawline(0,0)(\the\@tempcntx,\the\@tempcnty)%
+\endgroup}
+% \end{macrocode}
+% \end{macro}
+%
+% The if-phrase |\ifsizereduction| is to determine whether
+% size-reduction is carried out or not.
+% Then, |\LineTemp| is substituted for the original |\line|
+% if |\sizereductiontrue| is declared and if |\unitlength|
+% is smaller than 0.1pt.
+%
+% \begin{macro}{\line}
+% \begin{macro}{\ifsizereduction}
+% \begin{macrocode}
+\RequirePackage{epic}%
+\newif\ifsizereduction \sizereductionfalse
+%\let\@ldline=\line
+\def\reduced@line(#1,#2)#3{\ifsizereduction
+\ifdim\unitlength<0.1pt \LineTemp(#1,#2){#3}\else
+\@ldline(#1,#2){#3}\fi
+\else\@ldline(#1,#2){#3}\fi}
+\let\line=\reduced@line
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The command |\changeunitlength| is used to set |\unitlength|
+% and to declare |\sizereductiontrue|
+% if |\unitlength| is smaller than 0.1pt.
+% The font size of substituents is changed by |\substfontsize|
+% according to the size reduction.
+%
+% \changes{v4.00}{2002/5/30}{Added: \cs{substfontsize}}
+%
+% \begin{macro}{\@changeunitlength}
+% \begin{macrocode}
+\def\@changeunitlength#1{\unitlength=#1\relax
+\ifdim\unitlength<0.1pt \sizereductiontrue
+\ifdim\unitlength<0.062pt \let\substfontsize=\tiny \else
+\ifdim\unitlength<0.072pt \let\substfontsize=\scriptsize \else
+\ifdim\unitlength<0.082pt \let\substfontsize=\footnotesize
+\fi\fi\fi
+\else\let\substfontsize=\normalsize
+\fi}
+\let\changeunitlength=\@changeunitlength
+% \end{macrocode}
+% \end{macro}
+%
+% The reduced setting is the original LaTeX picture environment but
+% include the size-reduction mechanism.
+% To switch the size-reduction meachism and the pstricks mechanism,
+% we can use a switching command such as |\originalpicture|.
+% \changes{v3.00}{2002/4/30}{New environment: sfpicture}
+%
+% \begin{macro}{\reducedsizepicture}
+% \begin{macrocode}
+\def\reducedsizepicture{%
+\@ifnextchar[{\reduced@picture}{\reduced@picture[0.1pt]}}
+\def\reduced@picture[#1]{%
+\sizereductiontrue
+\let\sfpicture=\picture
+\let\endsfpicture=\endpicture
+\let\Put@Direct=\put
+\let\Multiput@Direct=\multiput
+\let\thicklines=\@ldthicklines
+\let\thinlines=\@ldthinlines
+\let\line=\reduced@line
+\let\dotorline=\d@t@rline
+\let\Put@Line=\Put@@Line
+\let\Put@sCircle=\Put@@sCircle
+\let\Put@oCircle=\Put@@oCircle
+\xymtexpsswfalse
+\let\changeunitlength=\@changeunitlength
+\changeunitlength{#1}}
+\reducedsizepicture%size-reduction setting
+% \end{macrocode}
+% \end{macro}
+%
+%
+% The command |\lineslope| of epic.sty has been redefined
+% to give a more precise result.
+%
+% \begin{macro}{\lineslope}
+% \begin{macrocode}
+\let\oldlineslope=\lineslope%used only in the manual
+\def\lineslope(#1,#2){%
+\begingroup
+\ifdim #1 <0pt \@xdim= -#1 \else\@xdim=#1\fi
+\ifdim #2 <0pt \@ydim= -#2 \else\@ydim=#2\fi
+%\typeout{LLL= \the#1, \the#2}
+\multiply\@xdim by10\relax%by S. Fujita 2001/6/20
+\multiply\@ydim by10\relax%by S. Fujita 2001/6/20
+%\typeout{xdim,ydim= \the\@xdim, \the\@ydim}
+\ifdim\@xdim >\@ydim \@tempdima=\@xdim \@xdim=\@ydim \@ydim=\@tempdima
+\@flippedargstrue\else\@flippedargsfalse\fi% x < y
+\ifdim\@ydim >1pt \@tempcntx=\@ydim
+ \divide\@tempcntx by 65536% now \@tempcntx=integral part of #1.
+ \divide\@xdim \@tempcntx\fi
+%\typeout{xdim: \the\@xdim}%
+\ifdim\@xdim <.083333pt \@xarg=1 \@yarg=0
+ \else\ifdim\@xdim <.183333pt \@xarg=6 \@yarg=1
+ \else\ifdim\@xdim <.225pt \@xarg=5 \@yarg=1
+ \else\ifdim\@xdim <.291666pt \@xarg=4 \@yarg=1
+ \else\ifdim\@xdim <.366666pt \@xarg=3 \@yarg=1
+ \else\ifdim\@xdim <.45pt \@xarg=5 \@yarg=2
+ \else\ifdim\@xdim <.55pt \@xarg=2 \@yarg=1
+ \else\ifdim\@xdim <.633333pt \@xarg=5 \@yarg=3
+ \else\ifdim\@xdim <.708333pt \@xarg=3 \@yarg=2
+ \else\ifdim\@xdim <.775pt \@xarg=4 \@yarg=3
+ \else\ifdim\@xdim <.816666pt \@xarg=5 \@yarg=4
+ \else\ifdim\@xdim <.916666pt \@xarg=6 \@yarg=5
+ \else \@xarg=1 \@yarg=1%
+\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+\if@flippedargs\relax\else\@tempcntx=\@xarg \@xarg=\@yarg
+ \@yarg=\@tempcntx\fi
+\ifdim #1 <0pt \global\@xarg= -\@xarg\else\global\@xarg= \@xarg\fi
+\ifdim #2 <0pt \global\@yarg= -\@yarg\else\global\@yarg= \@yarg\fi
+%%\typeout{closest slope integers = \the\@xarg, \the\@yarg}
+\endgroup}
+%</sizeredc>
+% \end{macrocode}
+% \end{macro}
+%
+% \Finale
+%
+\endinput
diff --git a/Master/texmf-dist/source/latex/xymtex/base/sizeredc.ins b/Master/texmf-dist/source/latex/xymtex/base/sizeredc.ins
new file mode 100644
index 00000000000..8a24083df57
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/sizeredc.ins
@@ -0,0 +1,49 @@
+\def\batchfile{sizeredc.ins}
+\input docstrip.tex
+\preamble
+
+This is a generated file.
+
+Copyright 1996, 2001, 2002, 2004,2010 by Shinsaku Fujita
+all rights reserved.
+This style file is created for drawing chemical structural formulas
+This style file is to be contained in the ``xymtex'' directory which
+is an input directory for TeX.
+
+This file is part of the XyMTeX system.
+=======================================
+Old Versions:
+Released on June 20, 2001 version 1.00
+Released on April 30, 2002 version 1.01
+Released on Auguts 30, 2004 version 4.01 (for XyMTeX 4.01)
+
+The Present Version:
+Version 5.00 Released on October 01, 2010
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3
+of this license or (at your option) any later version.
+The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of LaTeX
+version 2005/12/01 or later.
+
+This work has the LPPL maintenance status `maintained'.
+The Current Maintainer of this work is Shinsaku Fujita.
+
+This work consists of the files sizeredc.dtx and sizeredc.ins
+and the derived file sizeredc.sty.
+
+=======================================
+
+\endpreamble
+
+\keepsilent
+
+\generateFile{sizeredc.drv}{t}{%
+ \from{sizeredc.dtx}{driver}}
+
+\generateFile{sizeredc.sty}{t}{%
+ \from{sizeredc.dtx}{sizeredc}}
+
+\endinput
diff --git a/Master/texmf-dist/source/latex/xymtex/base/steroid.dtx b/Master/texmf-dist/source/latex/xymtex/base/steroid.dtx
new file mode 100644
index 00000000000..20f8f200ab6
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/steroid.dtx
@@ -0,0 +1,1317 @@
+% \iffalse meta-comment
+%% File: steroid.dtx
+%
+% Copyright 2009, 2010 by Shinsaku Fujita
+% Copyright for the XyMTeX system 1993,1996,1998,2001,2002,2004,2005,2009 by Shinsaku Fujita
+%
+% This file is part of XyMTeX system.
+% -------------------------------------
+%
+% This file is a successor to:
+%
+% steroid.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].
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+% The Current Maintainer of this work is Shinsaku Fujita.
+%
+% This work consists of the files steroid.dtx and steroid.ins
+% and the derived file steroid.sty.
+%
+% Please report any bugs, comments, suggestions, etc. to:
+% Shinsaku Fujita,
+% Shonan Institute of Chemoinformatics and Mathematical Chemistry
+% Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun, Kanagawa 250-0019 Japan
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{steroid}
+% \def\versi@ndate{June 15, 2009}
+% \def\versi@nno{ver1.00}
+% \def\copyrighth@lder{SF}% Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \fi
+%
+% \CheckSum{1778}
+%% \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.00}{2009/06/15}{The first version}
+% \changes{v5.00}{2010/10/01}{for bond coloring and the LaTeX Project Public License}
+% \fi
+%
+% \iffalse
+%<*driver>
+\NeedsTeXFormat{pLaTeX2e}
+% \fi
+\ProvidesFile{steroid.dtx}[2010/10/01 v5.00 XyMTeX{} package file]
+% \iffalse
+\documentclass{ltxdoc}
+\GetFileInfo{steroid.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{Steroid derivatives by {\sffamily steroid.sty}
+of \XyMTeX{} (\fileversion) }
+\author{Shinsaku Fujita \\
+Shonan Institute of Chemoinformatics and Mathematical Chemistry, \\
+Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun Kanagawa-ken, 258-0019, Japan.
+}
+\date{\filedate}
+%
+\begin{document}
+ \maketitle
+ \DocInput{steroid.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \section{Introduction}\label{steroid:intro}
+%
+% \subsection{Options for {\sffamily docstrip}}
+%
+% \DeleteShortVerb{\|}
+% \begin{center}
+% \begin{tabular}{|l|l|}
+% \hline
+% \emph{option} & \emph{function}\\ \hline
+% steroid & steroid.sty \\
+% driver & driver for this dtx file \\
+% \hline
+% \end{tabular}
+% \end{center}
+% \MakeShortVerb{\|}
+%
+% \subsection{Version Information}
+%
+% \begin{macrocode}
+%<*steroid>
+\typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 5.00}
+\typeout{ -- Released October 01, 2010 by Shinsaku Fujita}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\j@urnalname{steroid}
+\def\versi@ndate{October 01, 2010}
+\def\versi@nno{ver5.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 steroid.sty}
+%
+% \begin{verbatim}
+% *********************************
+% * steroid.sty: list of commands *
+% *********************************
+%
+% <Macros for drawing basic steroids>
+%
+% \gonane
+% \gonanealpha
+% \gonanebeta
+%
+% \estrane
+% \estranealpha
+% \estranebeta
+%
+% \steroidnochainandrostane
+% \androstane
+% \androstanealpha
+% \androstanebeta
+%
+% \steroidethylchain
+% \steroidethylchainpregnane
+% \pregnane
+% \pregnanealpha
+% \pregnanebeta
+%
+% <Macros for drawing steroids with chains (modern type)>
+% C22-C23: transoid
+%
+% \steroidChain
+% \steroidChaindiMe
+% \cholestaneAlpha
+% \cholestaneBeta
+% \cholestane
+%
+% \ergostaneAlpha
+% \ergostaneBeta
+% \ergostane
+%
+% \campestaneAlpha
+% \campestaneBeta
+% \campestane
+%
+% \poriferastaneAlpha
+% \poriferastaneBeta
+% \poriferastane
+%
+% \stigmastaneAlpha
+% \stigmastaneBeta
+% \stigmastane
+%
+% <Macros for drawing steroids with short chains (modern type)>
+% C22-C23: transoid
+%
+% \steroidShortChain
+% \steroidShortChainMe
+% \cholaneAlpha
+% \cholaneBeta
+%
+% <Macros for drawing steroids with short chains (old type)>
+% C22-C23: transoid
+%
+% \steroidshortchain
+% \steroidshortchainMe
+% \cholanealpha
+% \cholanebeta
+% \cholanE
+%
+% <Macros for drawing steroids with chains (old type)>
+% C22-C23: cisoid
+%
+% \steroidchaindiMe
+% \cholestanealpha
+% \cholestanebeta
+% \cholestanE
+%
+% \ergostanealpha
+% \ergostanebeta
+% \ergostanE
+%
+% \campestanealpha
+% \campestanebeta
+% \campestanE
+%
+% \poriferastanealpha
+% \poriferastanebeta
+% \poriferastanE
+%
+% \stigmastanealpha
+% \stigmastanebeta
+% \stigmastanE
+%
+% <Macros for drawing spirostans>
+%
+% \steroidspiro
+% \steroidspirotriMe
+% \spirostanalpha
+% \spirostanbeta
+% \spirostan
+% \spirostannor
+%
+% <Macros for drawing furostans>
+%
+% \steroidfuros
+% \steroidspirotriMe
+% \furostanalpha
+% \furostanbeta
+% \furostan
+%
+% <Macros for drawing spiro pyranoses>
+%
+% \pyranoseChairi
+% \pyranoseChairii
+%
+% \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 steroid.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}{}
+\@ifundefined{steroidchain}{\input carom.sty\relax}{}
+\@ifundefined{ylchairiposition}{\input ccycle.sty\relax}{}
+\unitlength=0.1pt
+% \end{macrocode}
+%
+% The commands |\steroid| and |\steroidchain| for drawing raw skeletons of
+% steroid derivatives have been already defined in {\sf carom.sty}, which
+% is loaded automatically as above.
+%
+% \section{Macros for Steroids with No Side Chains}
+%
+% By starting from the commands |\steroid| defined in the {\sf carom.sty},
+% several intermediate commands are defined to draw steroid derivatives
+% without side chains.
+%
+% \begin{macro}{\gonane}
+% \begin{macro}{\gonanealpha}
+% \begin{macro}{\gonanebeta}
+% \begin{macro}{\estrane}
+% \begin{macro}{\estranealpha}
+% \begin{macro}{\estranebeta}
+% \begin{macrocode}
+% ***********************************************
+% * For drawing side chains of the common style *
+% ***********************************************
+% *******************
+% * gonane, estrane *
+% *******************
+\def\gonanealpha{\@ifnextchar[{\@gonanealpha}{\@gonanealpha[]}}
+\def\@gonanealpha[#1]#2{%
+\steroid[#1]{#2;5A==H;8B==H;9A==H;{10}B==H;{13}B==H;{14}A==H}}
+\def\gonanebeta{\@ifnextchar[{\@gonanebeta}{\@gonanebeta[]}}
+\def\@gonanebeta[#1]#2{%
+\steroid[#1]{#2;5B==H;8B==H;9A==H;{10}B==H;{13}B==H;{14}A==H}}
+\def\gonane{\@ifnextchar[{\@gonane}{\@gonane[]}}
+\def\@gonane[#1]#2{%
+\steroid[#1]{#2;8B==H;9A==H;{10}B==H;{13}B==H;{14}A==H}}
+\def\estranealpha{\@ifnextchar[{\@estranealpha}{\@estranealpha[]}}
+\def\@estranealpha[#1]#2{%
+\steroid[#1]{#2;5A==H;8B==H;9A==H;{10}B==H;{13}B==CH$_{3}$;{14}A==H}}
+\def\estranebeta{\@ifnextchar[{\@estranebeta}{\@estranebeta[]}}
+\def\@estranebeta[#1]#2{
+\steroid[#1]{#2;5B==H;8B==H;9A==H;{10}B==H;{13}B==CH$_{3}$;{14}A==H}}
+\def\estrane{\@ifnextchar[{\@estrane}{\@estrane[]}}
+\def\@estrane[#1]#2{
+\steroid[#1]{#2;8B==H;9A==H;{10}B==H;{13}B==CH$_{3}$;{14}A==H}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\steroidnochainandrostane}
+% \begin{macro}{\androstane}
+% \begin{macro}{\androstanealpha}
+% \begin{macro}{\androstanebeta}
+% \begin{macrocode}
+% **************
+% * androstane *
+% **************
+\def\steroidnochainandrostane[#1]#2{%
+\steroid[#1]{#2;8B==H;9A==H;{10}B==CH$_{3}$;{13}B==CH$_{3}$;{14}A==H}}
+\def\androstanealpha{\@ifnextchar[{\@androstanealpha}{\@androstanealpha[]}}
+\def\@androstanealpha[#1]#2{\steroidnochainandrostane[#1]{#2;5A==H}}
+\def\androstanebeta{\@ifnextchar[{\@androstanebeta}{\@androstanebeta[]}}
+\def\@androstanebeta[#1]#2{\steroidnochainandrostane[#1]{#2;5B==H}}
+\def\androstane{\@ifnextchar[{\@androstane}{\@androstane[]}}
+\def\@androstane[#1]#2{\steroidnochainandrostane[#1]{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \section{Macros for Steroids with a Ethyl Chain}
+%
+% After the definition of the macro |\steroidethylchain| for
+% drawing steroids with an ethyl chain, several commands for
+% drawing pregnane derivative are defined.
+%
+% \begin{macro}{\steroidethylchain}
+% \begin{macrocode}
+\def\steroidethylchain{\@ifnextchar[{\@steroidethylchain[@}{\@steroidethylchain[Z]}}
+\def\@steroidethylchain[#1]#2{%
+\@reset@ylsw\reset@@yl
+\yl@steroidposition{#2}%
+\ylposition{#2}{-21}{0}{3}{0}%for 22 and 23 positions
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-1026}\def\@@yli{-606}\fi
+\else
+\ylposition{#2}{-14}{5}{7}{0}%for 20 position
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-1026}\def\@@yli{-606}\fi\else
+\ylposition{#2}{-20}{3}{5}{0}%for 24 position
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-1397}\def\@@yli{-709}\fi\fi
+\if@ylsw
+ \yl@shiftii=\@ylii
+ \ifx\@@ylii\empty\else
+ \advance\yl@shiftii\@@ylii\fi
+ \yl@shifti=\@yli
+ \ifx\@@yli\empty\else
+ \advance\yl@shifti\@@yli\fi
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{sfpicture}(0,0)(-\yl@shiftii,-\yl@shifti)%
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+ \begin{sfpicture}(1850,1500)(-\shiftii,-\shifti)%
+ \iforigpt \typeout{command `steroidethylchain' is based on `steroid'.}\fi%
+\fi
+ \Put@Direct(0,0){\@steroidskeleton{#1}{#2}}%
+ \Put@Line(855,709)(0,1){200}% %bond 17-20
+ \Put@Line(1026,1012)(-5,-3){171}% %bond 22-20
+\@tfor\member:=#1\do{%
+\expandafter\twoCH@R\member//\relax%
+\if\@tmpa Z\relax%
+ \ifx\@tmpb\empty%no action
+ \else\if\@tmpb a%
+ \Put@Line(888,735)(0,1){148}% %double bond 17-20
+ \else\if\@tmpb b%
+ \Put@Line(1020,970)(-5,-3){126}% %double bond 22-20
+ \fi\fi\fi\fi}%
+\Put@Direct(1026,606){\setsixringv{#2}{-21}{0}{3}{0}}%for 22 and 23 positions
+\Put@Direct(1026,606){\setsixringv{#2}{-14}{5}{7}{0}}%for 20 position
+%\Put@Direct(1197,709){\setsixringv{#2}{-20}{3}{5}{0}}%for 24 position
+%\Put@Direct(1397,709){\setatombond{#2}{-24}{4}}% % for 25
+\end{sfpicture}}% %end of \steroidethylchain macro%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\steroidethylchainpregnane}
+% \begin{macro}{\pregnane}
+% \begin{macro}{\pregnanealpha}
+% \begin{macro}{\pregnanebeta}
+% \begin{macrocode}
+% ************
+% * pregnane *
+% ************
+\def\steroidethylchainpregnane[#1]#2{%
+\steroidethylchain[#1]{#2;8B==H;9A==H;{10}B==CH$_{3}$;{13}B==CH$_{3}$;{14}A==H;%
+{17}SA==\raisebox{-4pt}{~H}}}
+\def\pregnanealpha{\@ifnextchar[{\@pregnanealpha}{\@pregnanealpha[]}}
+\def\@pregnanealpha[#1]#2{\steroidethylchainpregnane[#1]{#2;5A==H}}
+\def\pregnanebeta{\@ifnextchar[{\@pregnanebeta}{\@pregnanebeta[]}}
+\def\@pregnanebeta[#1]#2{\steroidethylchainpregnane[#1]{#2;5B==H}}
+\def\pregnane{\@ifnextchar[{\@pregnane}{\@pregnane[]}}
+\def\@pregnane[#1]#2{\steroidethylchainpregnane[#1]{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \section{Macros for Steroids with Chains (Modern Types)}
+%
+% For drawing steroids with side chains of modern expressions, the command |\steroidChain|
+% is created in addition to the previous command |\steroidchain| for drawing a side chain
+% of an old expression.
+%
+% \begin{macro}{\steroidChain}
+% \begin{macrocode}
+% ************************************************************
+% * Raw Skeleton for drawing side chains of the modern style *
+% ************************************************************
+\def\steroidChain{\@ifnextchar[{\@steroidChain[@}{\@steroidChain[Z]}}
+\def\@steroidChain[#1]#2{%
+\@reset@ylsw\reset@@yl
+\yl@steroidposition{#2}%
+\ylposition{#2}{-21}{0}{3}{0}%for 22 and 23 positions
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-1026}\def\@@yli{-606}\fi
+\else
+\ylposition{#2}{-14}{5}{7}{0}%for 20 position
+\fi
+\if@ylsw
+\ifx\@@ylii\empty
+\def\@@ylii{-1026}\def\@@yli{-606}\fi%%set 20 position
+\else
+\ylposition{#2}{-23}{0}{2}{0}%for 24 position
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-1368}\def\@@yli{-606}\fi%%set 24 positions
+\else
+\ylatombondposition{#2}{-24}{4}% % for 25
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-1539}\def\@@yli{-909}\fi%%set 25 positions
+\else
+\ylatombondposition{#2}{-25}{4}% % for 26
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-1710}\def\@@yli{-1012}\fi%%set 26 positions
+\else
+\ylatombondposition{#2}{-26}{4}% % for 27
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-1539}\def\@@yli{-709}\fi%%set 27 positions
+\fi
+\if@ylsw
+ \yl@shiftii=\@ylii
+ \ifx\@@ylii\empty\else
+ \advance\yl@shiftii\@@ylii\fi
+ \yl@shifti=\@yli
+ \ifx\@@yli\empty\else
+ \advance\yl@shifti\@@yli\fi
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{sfpicture}(0,0)(-\yl@shiftii,-\yl@shifti)%
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+ \begin{sfpicture}(2300,1500)(-\shiftii,-\shifti)%
+ \iforigpt \typeout{command `steroidChain' is based on `steroid'.}\fi%
+\fi
+ \Put@Direct(0,0){\@steroidskeleton{#1}{#2}}%
+ \Put@Line(855,709)(0,1){200}% %bond 17-20
+ \Put@Line(1026,1012)(-5,-3){171}% %bond 22-20
+ \Put@Line(1026,1012)(5,-3){171}% %bond 22-23
+ \Put@Line(1197,909)(5,3){171}% %bond 23-24
+ \Put@Line(1368,1012)(5,-3){171}% %bond 24-25
+ \Put@Line(1539,909)(5,3){171}% %bond 25-26
+ \Put@Line(1539,909)(0,-1){200}% %bond 25-27
+\@tfor\member:=#1\do{%
+\expandafter\twoCH@R\member//\relax%
+\if\@tmpa Z\relax%
+ \ifx\@tmpb\empty%no action
+ \else\if\@tmpb a%
+ \Put@Line(888,735)(0,1){148}% %double bond 17-20
+ \else\if\@tmpb b%
+ \Put@Line(1020,970)(-5,-3){126}% %double bond 22-20
+ \else\if\@tmpb c%
+ \Put@Line(1032,970)(5,-3){126}% %double bond 22-23
+ \else\if\@tmpb d%
+ \Put@Line(1203,952)(5,3){126}% %double bond 23-24
+ \else\if\@tmpb e%
+ \Put@Line(1372,970)(5,-3){126}% %double bond 24-25
+ \else\if\@tmpb f%
+ \Put@Line(1545,952)(5,3){126}% %double bond 25-26
+ \else\if\@tmpb F%
+ \Put@Line(1580,890)(5,3){126}% %double bond 25-26(alternative)
+ \else\if\@tmpb g%
+ \Put@Line(1580,890)(0,-1){148}% %double bond 25-27
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}%
+\Put@Direct(1026,606){\setsixringv{#2}{-21}{0}{2}{0}}%for 22 position
+\Put@Direct(1192,909){\setsixringv{#2}{-19}{3}{5}{0}}%for 23 position
+\Put@Direct(1368,606){\setsixringv{#2}{-23}{0}{2}{0}}%for 24 position
+\Put@Direct(1539,909){\setatombond{#2}{-24}{5}}% % for 25
+\Put@Direct(1026,606){\setsixringv{#2}{-14}{5}{7}{0}}%for 20 position
+\end{sfpicture}}% %end of \steroidChain macro%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\steroidChaindiMe}
+% \begin{macrocode}
+\def\steroidChaindiMe[#1]#2{%
+\steroidChain[#1]{#2;8B==H;9A==H;{10}B==CH$_{3}$;{13}B==CH$_{3}$;{14}A==H;%
+{17}SA==\raisebox{-4pt}{~H};{20}SA==H$_{3}$C;{20}SB==H}}
+% \end{macrocode}
+% \end{macro}
+%
+% Sometimes, |\cholestane[{Z}{Zb}]{}| may be used in place of
+% |\cholestane[{Zb}]{}| because the latter gives an erroneous
+% result.
+%
+%
+% \begin{macro}{\cholestaneAlpha}
+% \begin{macro}{\cholestaneBeta}
+% \begin{macro}{\cholestane}
+% \begin{macro}{\ergostaneAlpha}
+% \begin{macro}{\ergostaneBeta}
+% \begin{macro}{\ergostane}
+% \begin{macro}{\campestaneAlpha}
+% \begin{macro}{\campestaneBeta}
+% \begin{macro}{\campestane}
+% \begin{macro}{\poriferastaneAlpha}
+% \begin{macro}{\poriferastaneBeta}
+% \begin{macro}{\poriferastane}
+% \begin{macro}{\stigmastaneAlpha}
+% \begin{macro}{\stigmastaneBeta}
+% \begin{macro}{\stigmastane}
+% \begin{macrocode}
+% *****************************************************
+% * Intermediate skeletons for drawing *
+% * cholestane, ergostane, campestane, poriferastane, *
+% * and stigmastane (the modern type) *
+% *****************************************************
+\def\cholestaneAlpha{\@ifnextchar[{\@cholestaneAlpha}{\@cholestaneAlpha[]}}
+\def\@cholestaneAlpha[#1]#2{\steroidChaindiMe[#1]{#2;5A==H}}
+\def\cholestaneBeta{\@ifnextchar[{\@cholestaneBeta}{\@cholestaneBeta[]}}
+\def\@cholestaneBeta[#1]#2{\steroidChaindiMe[#1]{#2;5B==H}}
+\def\cholestane{\@ifnextchar[{\@cholestane}{\@cholestane[]}}
+\def\@cholestane[#1]#2{\steroidChaindiMe[#1]{#2}}
+\def\ergostaneAlpha{\@ifnextchar[{\@ergostaneAlpha}{\@ergostaneAlpha[]}}
+\def\@ergostaneAlpha[#1]#2{%
+\@cholestaneAlpha[#1]{#2;{24}SA==CH$_{3}$;{24}SB==H}}
+\def\ergostaneBeta{\@ifnextchar[{\@ergostaneBeta}{\@ergostaneBeta[]}}
+\def\@ergostaneBeta[#1]#2{%
+\@cholestaneBeta[#1]{#2;{24}SA==CH$_{3}$;{24}SB==H}}
+\def\ergostane{\@ifnextchar[{\@ergostane}{\@ergostane[]}}
+\def\@ergostane[#1]#2{%
+\@cholestane[#1]{#2;{24}SA==CH$_{3}$;{24}SB==H}}
+\def\campestaneAlpha{\@ifnextchar[{\@campestaneAlpha}{\@campestaneAlpha[]}}
+\def\@campestaneAlpha[#1]#2{%
+\@cholestaneAlpha[#1]{#2;{24}Su==\mbox{C\rlap{H$_{3}$}\kern20\unitlength};{24}Sd==~H}}
+\def\campestaneBeta{\@ifnextchar[{\@campestaneBeta}{\@campestaneBeta[]}}
+\def\@campestaneBeta[#1]#2{%
+\@cholestaneBeta[#1]{#2;{24}Su==\mbox{C\rlap{H$_{3}$}\kern20\unitlength};{24}Sd==~H}}
+\def\campestane{\@ifnextchar[{\@campestane}{\@campestane[]}}
+\def\@campestane[#1]#2{%
+\@cholestane[#1]{#2;{24}Su==\mbox{C\rlap{H$_{3}$}\kern20\unitlength};{24}Sd==~H}}
+\def\poriferastaneAlpha{\@ifnextchar[{\@poriferastaneAlpha}{\@poriferastaneAlpha[]}}
+\def\@poriferastaneAlpha[#1]#2{%
+\@cholestaneAlpha[#1]{#2;{24}SA==\dimethylene{}{1==(yl)};{24}SB==H}}
+\def\poriferastaneBeta{\@ifnextchar[{\@poriferastaneBeta}{\@poriferastaneBeta[]}}
+\def\@poriferastaneBeta[#1]#2{%
+\@cholestaneBeta[#1]{#2;{24}SA==\dimethylene{}{1==(yl)};{24}SB==H}}
+\def\poriferastane{\@ifnextchar[{\@poriferastane}{\@poriferastane[]}}
+\def\@poriferastane[#1]#2{%
+\@cholestane[#1]{#2;{24}SA==\dimethylene{}{1==(yl)};{24}SB==H}}
+\def\stigmastaneAlpha{\@ifnextchar[{\@stigmastaneAlpha}{\@stigmastaneAlpha[]}}
+\def\@stigmastaneAlpha[#1]#2{%
+\@cholestaneAlpha[#1]{#2;{24}Su==\dimethylene{}{1==(yl)};{24}Sd==H}}
+\def\stigmastaneBeta{\@ifnextchar[{\@stigmastaneBeta}{\@stigmastaneBeta[]}}
+\def\@stigmastaneBeta[#1]#2{%
+\@cholestaneBeta[#1]{#2;{24}Su==\dimethylene{}{1==(yl)};{24}Sd==H}}
+\def\stigmastane{\@ifnextchar[{\@stigmastane}{\@stigmastane[]}}
+\def\@stigmastane[#1]#2{%
+\@cholestane[#1]{#2;{24}Su==\dimethylene{}{1==(yl)};{24}Sd==H}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \section{Macros for Steroids with Short Chains (Modern Types)}
+%
+%
+% \begin{macro}{\steroidShortChain}
+% \begin{macrocode}
+% ******************************************************************
+% * Raw Skeleton for drawing short side chains of the modern style *
+% ******************************************************************
+\def\steroidShortChain{\@ifnextchar[{\@steroidShortChain[@}{\@steroidShortChain[Z]}}
+\def\@steroidShortChain[#1]#2{%
+\@reset@ylsw\reset@@yl
+\yl@steroidposition{#2}%
+\ylposition{#2}{-21}{0}{3}{0}%for 22 and 23 positions
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-1026}\def\@@yli{-606}\fi
+\else
+\ylposition{#2}{-14}{5}{7}{0}%for 20 position
+\fi
+\if@ylsw
+\ifx\@@ylii\empty
+\def\@@ylii{-1026}\def\@@yli{-606}\fi%%set 20 position
+\else
+\ylposition{#2}{-23}{0}{2}{0}%for 24 position
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-1368}\def\@@yli{-606}\fi%%set 24 positions
+\fi
+\if@ylsw
+ \yl@shiftii=\@ylii
+ \ifx\@@ylii\empty\else
+ \advance\yl@shiftii\@@ylii\fi
+ \yl@shifti=\@yli
+ \ifx\@@yli\empty\else
+ \advance\yl@shifti\@@yli\fi
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{sfpicture}(0,0)(-\yl@shiftii,-\yl@shifti)%
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+ \begin{sfpicture}(2000,1500)(-\shiftii,-\shifti)%
+ \iforigpt \typeout{command `steroidChain' is based on `steroid'.}\fi%
+\fi
+ \Put@Direct(0,0){\@steroidskeleton{#1}{#2}}%
+ \Put@Line(855,709)(0,1){200}% %bond 17-20
+ \Put@Line(1026,1012)(-5,-3){171}% %bond 22-20
+ \Put@Line(1026,1012)(5,-3){171}% %bond 22-23
+ \Put@Line(1197,909)(5,3){171}% %bond 23-24
+\@tfor\member:=#1\do{%
+\expandafter\twoCH@R\member//\relax%
+\if\@tmpa Z\relax%
+ \ifx\@tmpb\empty%no action
+ \else\if\@tmpb a%
+ \Put@Line(888,735)(0,1){148}% %double bond 17-20
+ \else\if\@tmpb b%
+ \Put@Line(1020,970)(-5,-3){126}% %double bond 22-20
+ \else\if\@tmpb c%
+ \Put@Line(1032,970)(5,-3){126}% %double bond 22-23
+ \else\if\@tmpb d%
+ \Put@Line(1203,952)(5,3){126}% %double bond 23-24
+ \fi\fi\fi\fi\fi\fi}%
+\Put@Direct(1026,606){\setsixringv{#2}{-21}{0}{2}{0}}%for 22 position
+\Put@Direct(1192,909){\setsixringv{#2}{-19}{3}{5}{0}}%for 23 position
+\Put@Direct(1368,606){\setsixringv{#2}{-23}{0}{2}{0}}%for 24 position
+%\Put@Direct(1539,909){\setatombond{#2}{-24}{5}}% % for 25
+\Put@Direct(1026,606){\setsixringv{#2}{-14}{5}{7}{0}}%for 20 position
+\end{sfpicture}}% %end of \steroidShortChain macro%
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\steroidShortChainMe}
+% \begin{macrocode}
+\def\steroidShortChainMe[#1]#2{%
+\steroidShortChain[#1]{#2;8B==H;9A==H;{10}B==CH$_{3}$;{13}B==CH$_{3}$;{14}A==H;%
+{17}SA==\raisebox{-4pt}{~H};{20}SA==H$_{3}$C;{20}SB==H}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\cholaneAlpha}
+% \begin{macro}{\cholaneBeta}
+% \begin{macro}{\cholane}
+% \begin{macrocode}
+% *****************************************************************
+% * Intermediate skeletons for drawing choranes (the modern type) *
+% *****************************************************************
+\def\cholaneAlpha{\@ifnextchar[{\@cholaneAlpha}{\@cholaneAlpha[]}}
+\def\@cholaneAlpha[#1]#2{\steroidShortChainMe[#1]{#2;5A==H}}
+\def\cholaneBeta{\@ifnextchar[{\@cholaneBeta}{\@cholaneBeta[]}}
+\def\@cholaneBeta[#1]#2{\steroidShortChainMe[#1]{#2;5B==H}}
+\def\cholane{\@ifnextchar[{\@cholane}{\@cholane[]}}
+\def\@cholane[#1]#2{\steroidShortChainMe[#1]{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \section{Macros for Steroids with Short Chains (Old Types)}
+%
+% \begin{macro}{\steroidshortchain}
+% \begin{macrocode}
+% ******************************************************
+% * Raw skeletons drawing side chains of the old style *
+% ******************************************************
+\def\steroidshortchain{\@ifnextchar[{\@steroidshortchain[@}{\@steroidshortchain[Z]}}
+\def\@steroidshortchain[#1]#2{%
+\@reset@ylsw\reset@@yl
+\yl@steroidposition{#2}%
+\ylposition{#2}{-21}{0}{3}{0}%for 22 and 23 positions
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-1026}\def\@@yli{-606}\fi
+\else
+\ylposition{#2}{-14}{5}{7}{0}%for 20 position
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-1026}\def\@@yli{-606}\fi\else
+\ylposition{#2}{-20}{3}{5}{0}%for 24 position
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-1397}\def\@@yli{-709}\fi\fi
+\if@ylsw
+ \yl@shiftii=\@ylii
+ \ifx\@@ylii\empty\else
+ \advance\yl@shiftii\@@ylii\fi
+ \yl@shifti=\@yli
+ \ifx\@@yli\empty\else
+ \advance\yl@shifti\@@yli\fi
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{sfpicture}(0,0)(-\yl@shiftii,-\yl@shifti)%
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+ \begin{sfpicture}(1850,1500)(-\shiftii,-\shifti)%
+ \iforigpt \typeout{command `steroidshortchain' is based on `steroid'.}\fi%
+\fi
+ \Put@Direct(0,0){\@steroidskeleton{#1}{#2}}%
+ \Put@Line(855,709)(0,1){200}% %bond 17-20
+ \Put@Line(1026,1012)(-5,-3){171}% %bond 22-20
+ \Put@Line(1026,1012)(5,-3){171}% %bond 22-23
+ \Put@Line(1197,709)(0,1){200}% %bond 24-23
+\@tfor\member:=#1\do{%
+\expandafter\twoCH@R\member//\relax%
+\if\@tmpa Z\relax%
+ \ifx\@tmpb\empty%no action
+ \else\if\@tmpb a%
+ \Put@Line(888,735)(0,1){148}% %double bond 17-20
+ \else\if\@tmpb b%
+ \Put@Line(1020,970)(-5,-3){126}% %double bond 22-20
+ \else\if\@tmpb c%
+ \Put@Line(1032,970)(5,-3){126}% %double bond 22-23
+ \else\if\@tmpb d%
+ \Put@Line(1164,735)(0,1){148}% %double bond 24-23
+ \fi\fi\fi\fi\fi\fi}%
+\Put@Direct(1026,606){\setsixringv{#2}{-21}{0}{3}{0}}%for 22 and 23 positions
+\Put@Direct(1026,606){\setsixringv{#2}{-14}{5}{7}{0}}%for 20 position
+\Put@Direct(1197,709){\setsixringv{#2}{-20}{3}{5}{0}}%for 24 position
+\end{sfpicture}}% %end of \steroidshortchain macro%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\steroidshortchainMe}
+% \begin{macro}{\cholanealpha}
+% \begin{macro}{\cholanebeta}
+% \begin{macro}{\cholanE}
+% \begin{macrocode}
+% ***********
+% * cholane *
+% ***********
+\def\steroidshortchainMe[#1]#2{%
+\steroidshortchain[#1]{#2;8B==H;9A==H;{10}B==CH$_{3}$;{13}B==CH$_{3}$;{14}A==H;%
+{17}SA==\raisebox{-4pt}{~H};{20}SA==H$_{3}$C;{20}SB==H}}
+\def\cholanealpha{\@ifnextchar[{\@cholanealpha}{\@cholanealpha[]}}
+\def\@cholanealpha[#1]#2{\steroidshortchainMe[#1]{#2;5A==H}}
+\def\cholanebeta{\@ifnextchar[{\@cholanebeta}{\@cholanebeta[]}}
+\def\@cholanebeta[#1]#2{\steroidshortchainMe[#1]{#2;5B==H}}
+\def\cholanE{\@ifnextchar[{\@cholanE}{\@cholanE[]}}
+\def\@cholanE[#1]#2{\steroidshortchainMe[#1]{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \section{Macros for Steroids with Chains (Old Types)}
+%
+% For drawing steroids with side chains of old expressions, the command |\steroidchain|
+% defined in {\sf carom.sty} is used.
+%
+% \begin{macro}{\steroidchaindiMe}
+% \begin{macro}{\cholestanealpha}
+% \begin{macro}{\cholestanebeta}
+% \begin{macro}{\cholestanE}
+% \begin{macro}{\ergostanealpha}
+% \begin{macro}{\ergostanebeta}
+% \begin{macro}{\ergostanE}
+% \begin{macro}{\campestanealpha}
+% \begin{macro}{\campestanebeta}
+% \begin{macro}{\campestanE}
+% \begin{macrocode}
+% ************************************************
+% * cholestane, ergostane, campestane (old type) *
+% ************************************************
+\def\steroidchaindiMe[#1]#2{%
+\steroidchain[#1]{#2;8B==H;9A==H;{10}B==CH$_{3}$;{13}B==CH$_{3}$;{14}A==H;%
+{17}SA==\raisebox{-4pt}{~H};{20}SA==H$_{3}$C;{20}SB==H}}
+\def\cholestanealpha{\@ifnextchar[{\@cholestanealpha}{\@cholestanealpha[]}}
+\def\@cholestanealpha[#1]#2{\steroidchaindiMe[#1]{#2;5A==H}}
+\def\cholestanebeta{\@ifnextchar[{\@cholestanebeta}{\@cholestanebeta[]}}
+\def\@cholestanebeta[#1]#2{\steroidchaindiMe[#1]{#2;5B==H}}
+\def\cholestanE{\@ifnextchar[{\@cholestanE}{\@cholestanE[]}}
+\def\@cholestanE[#1]#2{\steroidchaindiMe[#1]{#2}}
+\def\ergostanealpha{\@ifnextchar[{\@ergostanealpha}{\@ergostanealpha[]}}
+\def\@ergostanealpha[#1]#2{%
+\@cholestanealpha[#1]{#2;{24}Su==CH$_{3}$;{24}Sd==H}}
+\def\ergostanebeta{\@ifnextchar[{\@ergostanebeta}{\@ergostanebeta[]}}
+\def\@ergostanebeta[#1]#2{%
+\@cholestanebeta[#1]{#2;{24}Su==CH$_{3}$;{24}Sd==H}}
+\def\ergostanE{\@ifnextchar[{\@ergostanE}{\@ergostanE[]}}
+\def\@ergostanE[#1]#2{%
+\@cholestanE[#1]{#2;{24}Su==CH$_{3}$;{24}Sd==H}}
+\def\campestanealpha{\@ifnextchar[{\@campestanealpha}{\@campestanealpha[]}}
+\def\@campestanealpha[#1]#2{%
+\@cholestanealpha[#1]{#2;{24}Sd==\mbox{C\rlap{H$_{3}$}\kern20\unitlength};{24}Su==~H}}
+\def\campestanebeta{\@ifnextchar[{\@campestanebeta}{\@campestanebeta[]}}
+\def\@campestanebeta[#1]#2{%
+\@cholestanebeta[#1]{#2;{24}Sd==\mbox{C\rlap{H$_{3}$}\kern20\unitlength};{24}Su==~H}}
+\def\campestanE{\@ifnextchar[{\@campestanE}{\@campestanE[]}}
+\def\@campestanE[#1]#2{%
+\@cholestanE[#1]{#2;{24}Sd==\mbox{C\rlap{H$_{3}$}\kern20\unitlength};{24}Su==~H}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\poriferastanealpha}
+% \begin{macro}{\poriferastanebeta}
+% \begin{macro}{\poriferastanE}
+% \begin{macro}{\stigmastanealpha}
+% \begin{macro}{\stigmastanebeta}
+% \begin{macro}{\stigmastanE}
+% \begin{macrocode}
+% *****************************************
+% * poriferastane, stigmastane (old type) *
+% *****************************************
+\def\poriferastanealpha{\@ifnextchar[{\@poriferastanealpha}{\@poriferastanealpha[]}}
+\def\@poriferastanealpha[#1]#2{%
+\@cholestanealpha[#1]{#2;{24}Su==\dimethylenei{}{1==(yl)};{24}Sd==H}}
+\def\poriferastanebeta{\@ifnextchar[{\@poriferastanebeta}{\@poriferastanebeta[]}}
+\def\@poriferastanebeta[#1]#2{%
+\@cholestanebeta[#1]{#2;{24}Su==\dimethylenei{}{1==(yl)};{24}Sd==H}}
+\def\poriferastanE{\@ifnextchar[{\@poriferastanE}{\@poriferastanE[]}}
+\def\@poriferastanE[#1]#2{%
+\@cholestanE[#1]{#2;{24}Su==\dimethylenei{}{1==(yl)};{24}Sd==H}}
+\def\stigmastanealpha{\@ifnextchar[{\@stigmastanealpha}{\@stigmastanealpha[]}}
+\def\@stigmastanealpha[#1]#2{%
+\@cholestanealpha[#1]{#2;{24}SA==\dimethylenei{}{1==(yl)};{24}SB==H}}
+\def\stigmastanebeta{\@ifnextchar[{\@stigmastanebeta}{\@stigmastanebeta[]}}
+\def\@stigmastanebeta[#1]#2{%
+\@cholestanebeta[#1]{#2;{24}SA==\dimethylenei{}{1==(yl)};{24}SB==H}}
+\def\stigmastanE{\@ifnextchar[{\@stigmastanE}{\@stigmastanE[]}}
+\def\@stigmastanE[#1]#2{%
+\@cholestanE[#1]{#2;{24}SA==\dimethylenei{}{1==(yl)};{24}SB==H}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \section{Macros for Spirostans}
+%
+% After the macro |\steroidspiro| is defined as a basic macro
+% several macros for drawing spirostans are defined.
+%
+% \begin{macro}{\steroidspiro}
+% \begin{macrocode}
+% ***************************************
+% * Raw skeleton for drawing spirostans *
+% ***************************************
+\def\steroidspiro{\@ifnextchar[{\@steroidspiro[@}{\@steroidspiro[Z]}}
+\def\@steroidspiro[#1]#2{%
+\@reset@ylsw\reset@@yl
+\yl@steroidposition{#2}%
+\ylposition{#2}{-20}{1}{3}{0}%for 22 position
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-1026}\def\@@yli{-606}\fi
+\else
+\ylposition{#2}{-14}{5}{7}{0}%for 20 position
+\fi
+\if@ylsw
+\ifx\@@ylii\empty
+\def\@@ylii{-1026}\def\@@yli{-606}\fi%%set 20 position
+\else
+\ylposition{#2}{-22}{0}{2}{0}%for 23 position
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-1368}\def\@@yli{-400}\fi%%set 23 position
+\else
+\ylatombondposition{#2}{-23}{4}% % for 24
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-1539}\def\@@yli{-909}\fi%%set 24 position
+\else
+\ylatombondposition{#2}{-24}{4}% % for 25
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-1539}\def\@@yli{-1109}\fi%%set 25 position
+\else
+\ylatombondposition{#2}{-25}{4}% % for 26
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-1368}\def\@@yli{-1212}\fi%%set 26 position
+\fi
+\if@ylsw
+ \yl@shiftii=\@ylii
+ \ifx\@@ylii\empty\else
+ \advance\yl@shiftii\@@ylii\fi
+ \yl@shifti=\@yli
+ \ifx\@@yli\empty\else
+ \advance\yl@shifti\@@yli\fi
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{sfpicture}(0,0)(-\yl@shiftii,-\yl@shifti)%
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+ \begin{sfpicture}(2300,1500)(-\shiftii,-\shifti)%
+ \iforigpt \typeout{command `steroidspiro' is based on `steroid'.}\fi%
+\fi
+ \Put@Direct(0,0){\@steroidskeleton{#1}{#2}}%
+ \Put@Line(855,709)(0,1){200}% %bond 17-20
+ \Put@Line(855,909)(1,0){342}% %bond 20-22
+ \Put@Line(1197,909)(0,-1){140}% %bond 22-O (down)
+ \Put@Line(1026,606)(5,3){120}% %bond 16-O
+ \Put@Direct(1197,709){\makebox(0,0){O}}%
+ \dotorline(1197,909)(0,1){140}/(1197,909)(1197,1049)% 22-O (up)
+ {\thicklines
+ \Put@Line(1197,909)(5,-3){171}% %bond 22-23
+ }%
+ \Put@Line(1539,909)(-5,-3){171}% %bond 24-23
+ \Put@Line(1539,909)(0,1){200}% %bond 24-25
+ \Put@Line(1539,1109)(-5,3){171}% %bond 25-26
+ \Put@Line(1368,1212)(-5,-3){120}% %bond 26-O (down)
+ \Put@Direct(1197,1109){\makebox(0,0){O}}%
+\@tfor\member:=#1\do{%
+\expandafter\twoCH@R\member//\relax%
+\if\@tmpa Z\relax%
+ \ifx\@tmpb\empty%no action
+ \else\if\@tmpb a%
+ \Put@Line(888,735)(0,1){148}% %double bond 17-20
+ \else\if\@tmpb b%
+ \Put@Line(888,880)(1,0){276}% %double bond 20-22
+ \else\if\@tmpb c%
+ \Put@Line(1164,880)(0,-1){116}% %double bond 22-O
+ \else\if\@tmpb d%
+ \Put@Line(1039,650)(5,3){100}% %double bond 16-O
+ \else\if\@tmpb e%
+ \Put@Line(1240,930)(5,-3){126}% %double bond 22-23
+ \else\if\@tmpb f%
+ \Put@Line(1366,848)(5,3){140}% %double bond 23-24
+ \else\if\@tmpb g%
+ \Put@Line(1504,930)(0,1){148}% %double bond 24-25
+ \else\if\@tmpb h%
+ \Put@Line(1366,1166)(5,-3){140}% %double bond 26-25
+ \else\if\@tmpb i%
+ \Put@Line(1366,1166)(-5,-3){110}% %double bond 26-O
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}%
+\Put@Direct(1026,606){\setsixringv{#2}{-14}{5}{7}{0}}%for 20 position
+\Put@Direct(1026,606){\setsixringv{#2}{-112}{4}{6}{0}}%for 17 position (117 as Exception)
+\Put@Direct(1368,806){\setsixringv{#2}{-25}{0}{2}{0}}%for 26
+\Put@Direct(1368,806){\setsixringv{#2}{-23}{1}{3}{0}}%for 25
+\Put@Direct(1368,806){\setsixringv{#2}{-21}{2}{4}{0}}%for 24
+\Put@Direct(1368,806){\setsixringv{#2}{-19}{3}{5}{0}}%for 23
+\end{sfpicture}}% %end of \steroidspiro macro%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\steroidspirotriMe}
+% \begin{macro}{\spirostanalpha}
+% \begin{macro}{\spirostanbeta}
+% \begin{macro}{\spirostan}
+% \begin{macro}{\spirostannor}
+% \begin{macrocode}
+% **************
+% * spirostans *
+% **************
+\def\steroidspirotriMe[#1]#2{%
+\steroidspiro[#1]{#2;8B==H;9A==H;{10}B==CH$_{3}$;{13}B==CH$_{3}$;{14}A==H;%
+{117}FA==H;{20}A==H$_{3}$C;{16}FA==H}}
+\def\spirostanalpha{\@ifnextchar[{\@spirostanalpha}{\@spirostanalpha[]}}
+\def\@spirostanalpha[#1]#2{\steroidspirotriMe[#1]{#2;5A==H;{25}B==CH$_{3}$}}
+\def\spirostanbeta{\@ifnextchar[{\@spirostanbeta}{\@spirostanbeta[]}}
+\def\@spirostanbeta[#1]#2{\steroidspirotriMe[#1]{#2;5B==H;{25}B==CH$_{3}$}}
+\def\spirostan{\@ifnextchar[{\@spirostan}{\@spirostan[]}}
+\def\@spirostan[#1]#2{\steroidspirotriMe[#1]{#2;{{25}}==\null}}
+\def\spirostannor{\@ifnextchar[{\@spirostannor}{\@spirostannor[]}}
+\def\@spirostannor[#1]#2{\steroidspirotriMe[#1]{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \section{Macros for Furostans}
+%
+% After the macro |\steroidfuros| is defined as a basic macro,
+% several macros for drawing furostans are defined.
+%
+% \begin{macro}{\steroidfuros}
+% \begin{macrocode}
+% **************************************
+% * Raw skeleton for drawing furostans *
+% **************************************
+\def\steroidfuros{\@ifnextchar[{\@steroidfuros[@}{\@steroidfuros[Z]}}
+\def\@steroidfuros[#1]#2{%
+\@reset@ylsw\reset@@yl
+\yl@steroidposition{#2}%
+\ylposition{#2}{-20}{1}{3}{0}%for 22 position
+\if@ylsw \ifx\@@ylii\empty
+\def\@@ylii{-1026}\def\@@yli{-606}\fi
+\else
+\ylposition{#2}{-14}{5}{7}{0}%for 20 position
+\fi
+\if@ylsw
+\ifx\@@ylii\empty
+\def\@@ylii{-1026}\def\@@yli{-606}\fi%%set 20 position
+\else
+\ylposition{#2}{-22}{0}{2}{0}%for 23 position
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-1368}\def\@@yli{-606}\fi%%set 23 position
+\else
+\ylatombondposition{#2}{-23}{4}% % for 24
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-1539}\def\@@yli{-909}\fi%%set 24 position
+\else
+\ylatombondposition{#2}{-24}{4}% % for 25
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-1710}\def\@@yli{-1012}\fi%%set 25 position
+\else
+\ylatombondposition{#2}{-25}{4}% % for 26
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-1710}\def\@@yli{-1212}\fi%%set 26 position
+\else
+\ylatombondposition{#2}{-26}{4}% % for 27
+\fi
+\if@ylsw\ifx\@@ylii\empty
+\def\@@ylii{-1881}\def\@@yli{-909}\fi%%set 27 position
+\fi
+\if@ylsw
+ \yl@shiftii=\@ylii
+ \ifx\@@ylii\empty\else
+ \advance\yl@shiftii\@@ylii\fi
+ \yl@shifti=\@yli
+ \ifx\@@yli\empty\else
+ \advance\yl@shifti\@@yli\fi
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{sfpicture}(0,0)(-\yl@shiftii,-\yl@shifti)%
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+ \begin{sfpicture}(2300,1500)(-\shiftii,-\shifti)%
+ \iforigpt \typeout{command `steroidfuros' is based on `steroid'.}\fi%
+\fi
+ \Put@Direct(0,0){\@steroidskeleton{#1}{#2}}%
+ \Put@Line(855,709)(0,1){200}% %bond 17-20
+ \Put@Line(855,909)(1,0){342}% %bond 20-22
+ \Put@Line(1197,909)(0,-1){140}% %bond 22-O (down)
+ \Put@Line(1026,606)(5,3){120}% %bond 16-O
+ \Put@Direct(1197,709){\makebox(0,0){O}}%
+ \Put@Line(1197,909)(5,3){171}% %bond 22-23
+ \Put@Line(1368,1012)(5,-3){171}% %bond 23-24
+ \Put@Line(1539,909)(5,3){171}% %bond 24-25
+ \Put@Line(1710,1012)(5,-3){171}% %bond 25-27
+ \Put@Line(1710,1012)(0,1){200}% %bond 25-27
+\@tfor\member:=#1\do{%
+\expandafter\twoCH@R\member//\relax%
+\if\@tmpa Z\relax%
+ \ifx\@tmpb\empty%no action
+ \else\if\@tmpb a%
+ \Put@Line(888,735)(0,1){148}% %double bond 17-20
+ \else\if\@tmpb b%
+ \Put@Line(888,880)(1,0){276}% %double bond 20-22
+ \else\if\@tmpb c%
+ \Put@Line(1164,880)(0,-1){116}% %double bond 22-O
+ \else\if\@tmpb d%
+ \Put@Line(1039,650)(5,3){100}% %double bond 16-O
+ \else\if\@tmpb e%
+ \Put@Line(1240,900)(5,3){126}% %double bond 22-23
+ \else\if\@tmpb f%
+ \Put@Line(1410,1022)(5,-3){126}% %double bond 23-24
+ \else\if\@tmpb g%
+ \Put@Line(1582,900)(5,3){126}% %double bond 24-25
+ \else\if\@tmpb h%
+ \Put@Line(1740,1035)(0,1){150}% %double bond 25-26
+ \else\if\@tmpb i%
+ \Put@Line(1752,1022)(5,-3){126}% %double bond 25-27
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}%
+\Put@Direct(1026,606){\setsixringv{#2}{-14}{5}{7}{0}}%for 20 position
+\Put@Direct(1026,606){\setsixringv{#2}{-112}{4}{6}{0}}%for 17 position (117 as Exception)
+\Put@Direct(1197,503){\setsixringv{#2}{-21}{0}{2}{0}}%for 22
+\Put@Direct(1368,606){\setsixringv{#2}{-22}{0}{2}{0}}%for 23
+\Put@Direct(1539,909){\setsixringv{#2}{-20}{3}{5}{0}}%for 24
+\Put@Direct(1710,1012){\setatombond{#2}{-24}{3}}% % for 25
+\Put@Direct(1539,909){\setsixringv{#2}{-24}{1}{3}{0}}%for 26
+\Put@Direct(1710,606){\setsixringv{#2}{-25}{1}{3}{0}}%for 27
+\end{sfpicture}}% %end of \steroidfuros macro%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\steroidfurostriMe}
+% \begin{macro}{\furostanalpha}
+% \begin{macro}{\furostanbeta}
+% \begin{macro}{\furostan}
+% \begin{macrocode}
+% *************
+% * furostans *
+% *************
+\def\steroidfurostriMe[#1]#2{%
+\steroidfuros[#1]{#2;8B==H;9A==H;{10}B==CH$_{3}$;{13}B==CH$_{3}$;{14}A==H;%
+{117}FA==H;{20}A==H$_{3}$C;{16}FA==H}}
+\def\furostanalpha{\@ifnextchar[{\@furostanalpha}{\@furostanalpha[]}}
+\def\@furostanalpha[#1]#2{\steroidfurostriMe[#1]{#2;5A==H}}
+\def\furostanbeta{\@ifnextchar[{\@furostanbeta}{\@furostanbeta[]}}
+\def\@furostanbeta[#1]#2{\steroidfurostriMe[#1]{#2;5B==H}}
+\def\furostan{\@ifnextchar[{\@furostan}{\@furostan[]}}
+\def\@furostan[#1]#2{\steroidfurostriMe[#1]{#2}}
+%</steroid>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \section{Macros for Spiro Pyranoses}
+%
+% The macro |\pyranoseChairi| is defined to draw steroid with spiro pyranose rings
+% The switch |\pyranoseChairalphatrue| is declared to draw an alpha bond (a dashed line).
+%
+% \changes{v5.00}{2010/10/01}{for bond coloring}
+% \begin{macro}{\ifpyranoseChairalpha}
+% \begin{macro}{\pyranoseChairi}
+% \begin{macrocode}
+\newif\ifpyranoseChairalpha
+\pyranoseChairalphatrue
+\def\pyranoseChairi{\@ifnextchar[{\@pyranoseChairi}{\@pyranoseChairi[r]}}
+\def\@pyranoseChairi[#1]#2{%
+\@reset@ylsw%
+\ylchairiposition{#2}%
+\def\@@ylii{0}\def\@@yli{0}%
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(1600,800)(-400,-319){chairi}%
+(400,319)%2002/4/30 by S. Fujita
+% skeletal bonds
+ \thinlines%
+\ifpyranoseChairalpha
+ \dotorline(0,0)(3,4){140}/(0,0)(140,187)% bond 1 to 6
+\else
+ \Put@Line(0,0)(3,4){140}% % bond 1 to 6
+\fi
+ \Put@Line(573,91)(-3,1){360}% % 5 to 6
+ \Put@Direct(130,190){O}%
+ \Put@Line(573,91)(3,1){270}% % 5 to 4
+ {\thicklines%
+ \molfronttrue%
+ \Put@Line(843,181)(-3,-4){170}% % 4 to 3
+ \Put@Line(673,-46)(-3,1){403}% % 3 to 2
+ \Put@Line(0,0)(3,1){270}% % 1 to 2
+ }%
+ \thinlines%
+% inner double bonds
+\@tfor\member:=#1\do{%
+\if\member r%no endcyclic bonds
+\else \if\member c%%%a%
+ \Put@Line(767,139)(-3,-4){110}% % double bond 3 to 4
+\else \if\member b%%%d%%%b%
+ \Put@Line(640,-5)(-3,1){343}% % 4 to 5
+\else \if\member a%%%e%%%%c%
+ \Put@Line(240,111)(-3,-1){190}% % 5 to 6
+\else \if\member f%%%d%
+ \Put@Line(63,40)(3,4){110}% % 6 to 7
+\else \if\member e%%%l%
+ \Put@Line(182,187)(3,-1){343}% % 7 to 10
+\else \if\member d%%%k%%%f%
+ \Put@Line(768,131)(-3,-1){170}% % 10 to 3
+\fi\fi\fi\fi\fi\fi\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%0 omit
+ \or\setBScolor{\@chairia}% subst. on 1
+ \or\setBScolor{\@chairib}% subst. on 2
+ \or\setBScolor{\@chairic}% subst. on 3
+ \or\setBScolor{\@chairid}% subst. on 4
+ \or\setBScolor{\@chairie}% subst. on 5
+ \or\setBScolor{\@chairif}% subst. on 6
+\fi %end of ifcase
+\fi\fi%
+}\end{ShiftPicEnvB}}% %end of \pyranoseChairi macro
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The macro |\pyranoseChairii| is defined to draw steroid with spiro pyranose rings
+%
+% \changes{v5.00}{2010/10/01}{for bond coloring}
+% \begin{macro}{\pyranoseChairii}
+% \begin{macrocode}
+\def\pyranoseChairii{\@ifnextchar[{\@pyranoseChairii}{\@pyranoseChairii[r]}}
+\def\@pyranoseChairii[#1]#2{%
+\@reset@ylsw%
+\ylchairiposition{#2}%
+\def\@@ylii{0}\def\@@yli{0}%
+\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
+(1600,800)(-400,-319){chairi}%
+(400,319)%2002/4/30 by S. Fujita
+% skeletal bonds
+ \thinlines%
+\ifpyranoseChairalpha
+ \dotorline(0,0)(3,4){170}/(0,0)(170,227)% bond 1 to 6
+\else
+ \Put@Line(0,0)(3,4){170}% % bond 1 to 6
+\fi
+ \Put@Line(170,226)(3,-1){403}% % 6 to 5
+ \Put@Line(573,91)(3,1){270}% % 5 to 4
+ \Put@Direct(230,50){O}%
+ {\thicklines%
+ \molfronttrue%
+ \Put@Line(843,181)(-3,-4){170}% % 4 to 3
+ \Put@Line(673,-46)(-3,1){360}% % 3 to 2
+ \Put@Line(0,0)(3,1){230}% % 1 to 2
+ }%
+ \thinlines%
+% inner double bonds
+\@tfor\member:=#1\do{%
+\if\member r%no endcyclic bonds
+\else \if\member c%%%a%
+ \Put@Line(767,139)(-3,-4){110}% % double bond 3 to 4
+\else \if\member b%%%d%%%b%
+ \Put@Line(640,-5)(-3,1){343}% % 4 to 5
+\else \if\member a%%%e%%%%c%
+ \Put@Line(240,111)(-3,-1){190}% % 5 to 6
+\else \if\member f%%%d%
+ \Put@Line(63,40)(3,4){110}% % 6 to 7
+\else \if\member e%%%l%
+ \Put@Line(182,187)(3,-1){343}% % 7 to 10
+\else \if\member d%%%k%%%f%
+ \Put@Line(768,131)(-3,-1){170}% % 10 to 3
+\fi\fi\fi\fi\fi\fi\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%0 omit
+ \or\setBScolor{\@chairia}% subst. on 1
+ \or\setBScolor{\@chairib}% subst. on 2
+ \or\setBScolor{\@chairic}% subst. on 3
+ \or\setBScolor{\@chairid}% subst. on 4
+ \or\setBScolor{\@chairie}% subst. on 5
+ \or\setBScolor{\@chairif}% subst. on 6
+\fi %end of ifcase
+\fi\fi%
+}\end{ShiftPicEnvB}}% %end of \pyranoseChairii macro
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v1.00}{2009/6/15}{Creating \cs{cholestanealfa} etc.}
+%
+% \Finale
+%
+\endinput
diff --git a/Master/texmf-dist/source/latex/xymtex/base/steroid.ins b/Master/texmf-dist/source/latex/xymtex/base/steroid.ins
new file mode 100644
index 00000000000..7d76f014b60
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/steroid.ins
@@ -0,0 +1,47 @@
+\def\batchfile{steroid.ins}
+\input docstrip.tex
+\preamble
+
+This is a generated file.
+
+Copyright 2009, 2010 by Shinsaku Fujita
+all rights reserved.
+This style file is created for drawing chemical structural formulas
+This style file is to be contained in the ``xymtex'' directory which
+is an input directory for TeX.
+
+This file is part of the XyMTeX system.
+=======================================
+Old Versions:
+Version 1.00 for XyMTeX version 4.04 Released on June 15, 2009
+
+The Present Version:
+Version 5.00 Released on October 01, 2010
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3
+of this license or (at your option) any later version.
+The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of LaTeX
+version 2005/12/01 or later.
+
+This work has the LPPL maintenance status `maintained'.
+The Current Maintainer of this work is Shinsaku Fujita.
+
+This work consists of the files steroid.dtx and steroid.ins
+and the derived file steroid.sty.
+
+=======================================
+
+\endpreamble
+
+\keepsilent
+
+\generateFile{steroid.drv}{t}{%
+ \from{steroid.dtx}{driver}}
+
+\generateFile{steroid.sty}{t}{%
+ \from{steroid.dtx}{steroid}}
+
+\endinput
diff --git a/Master/texmf-dist/source/latex/xymtex/base/xymtex.dtx b/Master/texmf-dist/source/latex/xymtex/base/xymtex.dtx
new file mode 100644
index 00000000000..a38ccd0a2af
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/xymtex.dtx
@@ -0,0 +1,308 @@
+% \iffalse
+%
+% xymtex.dtx
+%
+% Copyright (C) 1993-2004,2005,2009,2010,2011,2013 by Shinsaku Fujita All rights reserved.
+%
+% This file is part of the ChemSci system
+% ========================================
+%
+% This style file is created for submitting a manuscript to
+% scientific journals. This style file is to be contained in the
+% ``xymtex'' directory which is an input directory for TeX.
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+% The Current Maintainer of this work is Shinsaku Fujita.
+%
+% This work consists of the files xymtex.dtx and xymtex.ins
+% and the derived files: xymtex.sty, xymtexps.sty and xymtexpdf.sty.
+%
+%=======================================
+%
+% This file is a successor to:
+%
+% *********************************************************************
+% * Version 1.00 Released December 1, 1993 by Shinsaku Fujita %
+% * Version 1.00a Released May 22, 1996 by Shinsaku Fujita %
+% * Version 1.02 Released October 31, 1998 by Shinsaku Fujita %
+% * Version 2.00 Released December 25, 1998 by Shinsaku Fujita %
+% *********************************************************************
+% xymtex.sty
+%
+% Copyright (C) 1993, 1966, 1998, 2001,2004 by Shinsaku Fujita, all rights reserved.
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 1.00}
+% \typeout{ -- Released December 1, 1993 by Shinsaku Fujita}
+% \typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 1.00a}
+% \typeout{ -- Released May 22, 1996 by Shinsaku Fujita}
+% \typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 1.02}
+% \typeout{ -- Released October 31, 1998 by Shinsaku Fujita}
+% \typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 2.00}
+% \typeout{ -- Released December 25, 1998 by Shinsaku Fujita}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{xymtex.sty}
+% \def\versi@ndate{May 22, 1996}
+% \def\versi@nno{ver1.00a}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{xymtex.sty}
+% \def\versi@ndate{October 31, 1998}
+% \def\versi@nno{ver1.02}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{xymtex.sty}
+% \def\versi@ndate{December 25, 1998}
+% \def\versi@nno{ver2.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{xymtex.sty}
+% \def\versi@ndate{November 17, 2004}
+% \def\versi@nno{ver4.01b}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{xymtex.sty}
+% \def\versi@ndate{December 25, 2004}
+% \def\versi@nno{ver4.02}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %<xymtex>\def\j@urnalname{xymtex} \def\journalID{xymtex}
+% %<xymtexps>\def\j@urnalname{xymtexps} \def\journalID{xymtexps}
+% \def\versi@ndate{July 20, 2005}
+% \def\versi@nno{ver4.02}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %<xymtex>\def\j@urnalname{xymtex} \def\journalID{xymtex}
+% %<xymtexps>\def\j@urnalname{xymtexps} \def\journalID{xymtexps}
+% \def\versi@ndate{June 15, 2009}
+% \def\versi@nno{ver4.04}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %<xymtex>\def\j@urnalname{xymtex} \def\journalID{xymtex}
+% %<xymtexps>\def\j@urnalname{xymtexps} \def\journalID{xymtexps}
+% \def\versi@ndate{November 25, 2009}
+% \def\versi@nno{ver4.05}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %<xymtex>\def\j@urnalname{xymtex} \def\journalID{xymtex}
+% %<xymtexps>\def\j@urnalname{xymtexps} \def\journalID{xymtexps}
+% \def\versi@ndate{December 01, 2009}
+% \def\versi@nno{ver4.06}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %<xymtex>\def\j@urnalname{xymtex} \def\journalID{xymtex}
+% %<xymtexps>\def\j@urnalname{xymtexps} \def\journalID{xymtexps}
+% %<xymtexpdf>\def\j@urnalname{xymtexpdf} \def\journalID{xymtexpdf}
+% \def\versi@ndate{October 01, 2010}
+% \def\versi@nno{ver5.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %<xymtex>\def\j@urnalname{xymtex} \def\journalID{xymtex}
+% %<xymtexps>\def\j@urnalname{xymtexps} \def\journalID{xymtexps}
+% %<xymtexpdf>\def\j@urnalname{xymtexpdf} \def\journalID{xymtexpdf}
+% \def\versi@ndate{February 24, 2011}
+% \def\versi@nno{ver5.01beta}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% \typeout{Package `\j@urnalname' (\versi@nno) <\versi@ndate>\space
+% [\copyrighth@lder]}
+% %<xymtex> \typeout{xymtex.sty ver5.01beta (for LaTeX2e) 2011/02/24[SF]}
+% %<xymtexps> \typeout{xymtexps.sty ver5.01beta (for LaTeX2e) 2011/02/24[SF]}
+% %<xymtexpdf> \typeout{xymtexpdf.sty ver5.01beta (for LaTeX2e) 2011/02/24[SF]}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% This file is a part of the macro package ``XyMTeX'' which has been
+% designed for typesetting chemical structural formulas.
+%
+% For the review of XyMTeX, see
+% (1) Shinsaku Fujita, ``Typesetting structural formulas with the text
+% formatter TeX/LaTeX'', Computers and Chemistry, 18, 109--116 (1994).
+% 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].
+% (3) Shinskau Fujita, ``XyMTeX for drwoing chemical structural
+% formulas'', TUGboat, 16(1), 80--88 (1995).
+%
+% Please report any bugs, comments, suggestions, etc. to:
+% Old old address:
+% Shinsaku Fujita,
+% Ashigara Research Laboratories, Fuji Photo Film Co., Ltd.,
+% Minami-Ashigara, Kanagawa-ken, 250-01, Japan.
+%
+% Old address:
+% Shinsaku Fujita,
+% Department of Chemistry and Materials Technology,
+% Kyoto Institute of Technology, \\
+% Matsugasaki, Sakyoku, Kyoto, 606 Japan
+%
+% New address:
+% Shinsaku Fujita,
+% Shonan Institute of Chemoinformatics and Mathematical Chemistry
+% Kanagawa, 258-0019 Japan
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \fi
+% \CheckSum{70}
+%% \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 \~}
+%
+% \iffalse
+%%
+%% `xymtex.dtx' ver5.01 (for LaTeX2e) 2013/03/10
+%% by Shinsaku Fujita
+%%
+%
+% \section{Initial declaration}
+%
+% \changes{v4.01b}{2004/11/17}{Generaging xymtex.sty and xymtexps}
+% \changes{v4.02}{2004/12/20}{Wedged bonds for xymtx-ps.sty}
+% \changes{v4.03}{2005/07/20}{Wave bonds for xymtx-ps.sty}
+% \changes{v4.04}{2009/06/15}{steoroid.sty added for drawing steroids}
+% \changes{v4.05}{2009/11/25}{lewisstruc.sty added for drawing Lewis structures}
+% \changes{v4.06}{2009/12/01}{harpoons added in the chmst-ps package}
+% \changes{v5.00}{2010/10/01}{PDF mode, bond coloring}
+% \changes{v5.01beta}{2011/02/24}{Added the chemist package and the xcolor package}
+% \changes{v5.01}{2013/03/10}{Bug fix}
+%
+% \begin{macrocode}
+% \NeedsTeXFormat{LaTeX2e}
+% \end{macrocode}
+%
+% \begin{macrocode}
+% <xymtex>\ProvidesFile{xymtex.sty}
+% <xymtexps>\ProvidesFile{xymtexps.sty}
+%<driver>\ProvidesFile{xymtex.drv}
+%<driver> [2013/03/10 v5.01
+% <xymtex> ChemSci package ]
+% <xymtexps> ChemSci package ]
+% <xymtexpdf> ChemSci package ]
+%<driver> ChemSci package driver (English)
+% \end{macrocode}
+%
+%\setcounter{StandardModuleDepth}{1}
+%
+% \section{Driver file for this dtx file}
+%
+% \begin{macrocode}
+%<*driver>
+]
+\documentclass{ltxdoc}
+\GetFileInfo{xymtex.drv}
+\title{XyMTeX Packages for Chemists \space\fileversion}
+\author{Shinsaku Fujita \\
+Shonan Institute of Chemoinformatics and Mathematical Chemistry \\
+Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun, Kanagawa,
+258-0019 Japan
+%(old address)
+%Department of Chemistry and Materials Technology \\
+%Kyoto Institute of Technology \\
+%Matsugasaki, Sakyoku, Kyoto, 606-8585 Japan
+}
+\date{\filedate}
+\begin{document}
+\maketitle
+\tableofcontents
+\DocInput{xymtex.dtx}
+\end{document}
+%</driver>
+% \end{macrocode}
+%
+% \fi
+%
+% \StopEventually{}
+%
+% \section{{\sc docstrip} options}
+%
+% This dtx file provides the {\sffamily xymtex} package
+% by docstrip processing.
+%
+% \DeleteShortVerb{\|}
+% \begin{center}
+% \begin{tabular}{|l|l|}
+% \hline
+% argument & package name \\
+% \hline
+% xymtex & xymtex.sty \\
+% xymtexps & xymtexps.sty \\
+% xymtexpdf & xymtexpdf.sty \\
+% driver & a documentation driver file \\
+% \hline
+% \end{tabular}
+% \end{center}
+% \MakeShortVerb{\|}
+%
+% \section{Version information}
+%
+% The old process for typing out version information remains active.
+% \begin{macrocode}
+%<xymtex>\def\j@urnalname{xymtex} \def\journalID{xymtex}
+%<xymtexps>\def\j@urnalname{xymtexps} \def\journalID{xymtexps}
+%<xymtexpdf>\def\j@urnalname{xymtexpdf} \def\journalID{xymtexpdf}
+\def\versi@ndate{March 10, 2013}
+\def\versi@nno{ver5.01}
+\def\copyrighth@lder{SF} % Shinsaku Fujita
+\typeout{Package `\j@urnalname' (\versi@nno) <\versi@ndate>\space
+[\copyrighth@lder]}
+%<xymtex> \typeout{xymtex.sty ver5.01 (for LaTeX2e) 2013/03/10[SF]}
+%<xymtexps> \typeout{xymtexps.sty ver5.01 (for LaTeX2e) 2013/03/10[SF]}
+%<xymtexpdf> \typeout{xymtexpdf.sty ver5.01 (for LaTeX2e) 2013/03/10[SF]}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*xymtexpdf>
+\DeclareOption{pdf}{\def\pgfsysdriver{pgfsys-common-pdf.def}}
+\DeclareOption{dvipdfm}{\def\pgfsysdriver{pgfsys-dvipdfm.def}}
+\DeclareOption{pdftex}{\def\pgfsysdriver{pgfsys-pdftex.def}}
+\DeclareOption{ps}{\def\pgfsysdriver{pgfsys-common-postscript.def}}
+\DeclareOption{dvips}{\def\pgfsysdriver{pgfsys-dvips.def}}
+\ExecuteOptions{dvipdfm}
+\InputIfFileExists{pict2e.cfg}{}{}
+\ProcessOptions\relax
+%</xymtexpdf>
+\usepackage{epic}
+\usepackage{chemstr}
+\usepackage{carom}
+\usepackage{hetarom}
+\usepackage{hetaromh}
+\usepackage{lowcycle}
+\usepackage{ccycle}
+\usepackage{hcycle}
+\usepackage{aliphat}
+\usepackage{locant}
+\usepackage{polymers}
+\usepackage{methylen}
+\usepackage{fusering}
+\usepackage{sizeredc}
+\usepackage{steroid}
+\usepackage{lewisstruc}
+\usepackage{bondcolor}
+\usepackage{assurelatexmode}
+%<xymtexps>\usepackage{xymtx-ps}
+%<xymtexpdf>\usepackage{xymtx-pdf}
+%<xymtex>\usepackage{chemist}
+%<xymtex>\usepackage{xcolor}
+%<xymtexps>\usepackage{chmst-ps}
+%<xymtexpdf>\usepackage{chmst-pdf}
+% \end{macrocode}
+%
+% \Finale
+\endinput
diff --git a/Master/texmf-dist/source/latex/xymtex/base/xymtex.ins b/Master/texmf-dist/source/latex/xymtex/base/xymtex.ins
new file mode 100644
index 00000000000..a679b874673
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/base/xymtex.ins
@@ -0,0 +1,72 @@
+\def\batchfile{xymtex.ins}
+\input docstrip.tex
+\preamble
+
+This is a generated file.
+
+Copyright 2004, 2005, 2009, 2010, 2011, 2013 by Shinsaku Fujita
+
+This file is part of the ChemSci system.
+=======================================
+
+Old versions (.dtx and .ins files were not used):
+Version 1.00 Released December 1, 1993 by Shinsaku Fujita
+Version 1.00a Released May 22, 1996 by Shinsaku Fujita
+Version 1.02 Released October 31, 1998 by Shinsaku Fujita
+Version 2.00 Released December 25, 1998 by Shinsaku Fujita
+
+Old versions (.dtx and .ins files were used):
+Version 4.01b Released Novermber 17, 2004 by Shinsaku Fujita
+Version 4.02 Released December 20, 2004 by Shinsaku Fujita
+Version 4.03 Released July 20, 2005 by Shinsaku Fujita
+Version 4.04 Released June 15, 2009 by Shinsaku Fujita
+Version 4.05 Released November 25, 2009 by Shinsaku Fujita
+Version 4.06 Released December 01, 2009 by Shinsaku Fujita
+Version 5.00 Released October 01, 2010 by Shinsaku Fujita
+Version 5.01beta Released February 24, 2011 by Shinsaku Fujita
+
+Latest version (with .tex and .ins files)
+Version 5.01 Released March 03, 2013 by Shinsaku Fujita
+
+Copyright (C) 1993--2013 by Shinsaku Fujita, all rights reserved.
+This style file is created for submitting a manuscript to
+scientific journals. This style file is to be contained in the
+``chemist'' or ``xymtex'' directory which is an input directory for TeX.
+
+For using this file, see
+ Shinsaku Fujita, ``LaTeX for Chemists and Biochemists''
+ Tokyo Kagaku Dojin, Tokyo (1993), Chapter 16.
+
+For PostScript output, use chmst-ps.sty together with chemist.sty.
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3
+of this license or (at your option) any later version.
+The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of LaTeX
+version 2005/12/01 or later.
+
+This work has the LPPL maintenance status `maintained'.
+The Current Maintainer of this work is Shinsaku Fujita.
+
+This work consists of the files xymtex.dtx and xymtex.ins
+and the derived files: xymtex.sty, xymtexps.sty and xymtexpdf.sty.
+
+\endpreamble
+
+\keepsilent
+
+\generateFile{xymtex.drv}{t}{%
+ \from{xymtex.dtx}{driver}}
+
+\generateFile{xymtex.sty}{t}{%
+ \from{xymtex.dtx}{xymtex}}
+
+\generateFile{xymtexps.sty}{t}{%
+ \from{xymtex.dtx}{xymtexps}}
+
+\generateFile{xymtexpdf.sty}{t}{%
+ \from{xymtex.dtx}{xymtexpdf}}
+
+\endinput