summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/xymtex/fusering.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/xymtex/fusering.dtx')
-rw-r--r--Master/texmf-dist/source/latex/xymtex/fusering.dtx4575
1 files changed, 4575 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/xymtex/fusering.dtx b/Master/texmf-dist/source/latex/xymtex/fusering.dtx
new file mode 100644
index 00000000000..a7b6695ad70
--- /dev/null
+++ b/Master/texmf-dist/source/latex/xymtex/fusering.dtx
@@ -0,0 +1,4575 @@
+% \iffalse meta-comment
+%% File: fusering.dtx
+%
+% Copyright 1998 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].
+%
+% Copying of this file is authorized only if either
+% (1) you make absolutely no changes to your copy, including name and
+% directory name; or
+% (2) if you do make changes,
+% (a) you name it something other than the names included in the
+% ``xymtex'' directory and
+% (b) you are requested to leave this notice intact.
+% This restriction ensures that all standard styles are identical.
+%
+% Please report any bugs, comments, suggestions, etc. to:
+% Shinsaku Fujita,
+% Department of Chemistry and Materials Technology,
+% Kyoto Institute of Technology, \\
+% Matsugasaki, Sakyoku, Kyoto, 606 Japan
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \fi
+%
+% \CheckSum{4211}
+%% \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}
+% \fi
+%
+% \iffalse
+%<*driver>
+\NeedsTeXFormat{pLaTeX2e}
+% \fi
+\ProvidesFile{methylen.dtx}[1998/12/25 v2.00 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{Fusing Ring Units by {\sffamily fusering.sty}
+(\fileversion) of \XyMTeX{}}
+\author{Shinsaku Fujita \\
+Department of Chemistry and Materials Technology, \\
+Kyoto Institute of Technology, \\
+Matsugasaki, Sakyoku, Kyoto, 606 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 2.00}
+\typeout{ -- Released December 25, 1998 by Shinsaku Fujita}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\j@urnalname{methylen}
+\def\versi@ndate{December 25, 1998}
+\def\versi@nno{ver2.00}
+\def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\typeout{XyMTeX Macro File `\j@urnalname' (\versi@nno) <\versi@ndate>%
+\space[\copyrighth@lder]}
+% \end{macrocode}
+%
+% \section{List of commands for 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}%
+\if@sixfuseposv
+ \yl@shiftii=-\fuseAx
+ \yl@shifti=-\fuseAy
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+ \begin{picture}(800,880)(-\shiftii,-\shifti)%
+ \iforigpt \put(-\shiftii,-\shifti){\circle*{50}}%
+ \put(-\noshift,-\noshift){\circle{50}}%
+ \typeout{command `sixfusev' origin: %
+ (\the\noshift,\the\noshift) ---> (\the\shiftii,\the\shifti)}\fi%
+\fi
+% \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%left aromatic circle
+ \put(0,203){\circle{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{picture}%
+\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}
+%
+% \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}%
+\if@sixfuseposv
+ \yl@shiftii=-\fuseAx
+ \yl@shifti=-\fuseAy
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+ \begin{picture}(800,880)(-\shiftii,-\shifti)%
+ \iforigpt \put(-\shiftii,-\shifti){\circle*{50}}%
+ \put(-\noshift,-\noshift){\circle{50}}%
+ \typeout{command `sixfusev' origin: %
+ (\the\noshift,\the\noshift) ---> (\the\shiftii,\the\shifti)}\fi%
+\fi
+% \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(0,203){\circle{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{picture}%
+\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}
+%
+% \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}%
+\if@sixfuseposv
+ \yl@shiftii=-\fuseAx
+ \yl@shifti=-\fuseAy
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+ \begin{picture}(800,880)(-240,-400)%
+ \iforigpt \put(-\shifti,-\shiftii){\circle*{50}}%
+ \put(-\noshift,-\noshift){\circle{50}}%
+ \typeout{command `sixunith' origin: %
+ (\the\noshift,\the\noshift) ---> (\the\shifti,\the\shiftii)}\fi%
+\fi
+% \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(203,0){\circle{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{picture}%
+\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}
+%
+% \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}%
+\if@sixfuseposv
+ \yl@shiftii=-\fuseAx
+ \yl@shifti=-\fuseAy
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+ \begin{picture}(800,880)(-240,-400)%
+ \iforigpt \put(-\shifti,-\shiftii){\circle*{50}}%
+ \put(-\noshift,-\noshift){\circle{50}}%
+ \typeout{command `sixunith' origin: %
+ (\the\noshift,\the\noshift) ---> (\the\shifti,\the\shiftii)}\fi%
+\fi
+% \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(203,0){\circle{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{picture}%
+\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}
+%
+% \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}%
+\if@sixfuseposv
+ \yl@shiftii=-\fuseAx
+ \yl@shifti=-\fuseAy
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+ \begin{picture}(800,880)(-\shiftii,-\shifti)%
+ \iforigpt \put(-\shiftii,-\shifti){\circle*{50}}%
+ \put(-\noshift,-\noshift){\circle{50}}%
+ \typeout{command `fivefusev' origin: %
+ (\the\noshift,\the\noshift) ---> (\the\shiftii,\the\shifti)}\fi%
+\fi
+% \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{picture}%
+{\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}
+%
+% \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}%
+\if@sixfuseposv
+ \yl@shiftii=-\fuseAx
+ \yl@shifti=-\fuseAy
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+ \begin{picture}(800,880)(-\shiftii,-\shifti)%
+ \iforigpt \put(-\shiftii,-\shifti){\circle*{50}}%
+ \put(-\noshift,-\noshift){\circle{50}}%
+ \typeout{command `fivefusevi' origin: %
+ (\the\noshift,\the\noshift) ---> (\the\shiftii,\the\shifti)}\fi%
+\fi
+% \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{picture}%
+{\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}
+%
+% \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}%
+\if@sixfuseposv
+ \yl@shiftii=-\fuseAx
+ \yl@shifti=-\fuseAy
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+ \begin{picture}(800,880)(-240,-400)%
+ \iforigpt \put(-\shifti,-\shiftii){\circle*{50}}%
+ \put(-\noshift,-\noshift){\circle{50}}%
+ \typeout{command `fivefuseh' origin: %
+ (\the\noshift,\the\noshift) ---> (\the\shifti,\the\shiftii)}\fi%
+\fi
+% \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(233,0){\circle{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{picture}%
+{\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}
+%
+% \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}%
+\if@sixfuseposv
+ \yl@shiftii=-\fuseAx
+ \yl@shifti=-\fuseAy
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+ \begin{picture}(800,880)(-240,-400)%
+ \iforigpt \put(-\shifti,-\shiftii){\circle*{50}}%
+ \put(-\noshift,-\noshift){\circle{50}}%
+ \typeout{command `fivefusehi' origin: %
+ (\the\noshift,\the\noshift) ---> (\the\shifti,\the\shiftii)}\fi%
+\fi
+% \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(173,0){\circle{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{picture}%
+{\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}
+%
+% \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}%
+\if@sixfuseposv
+ \yl@shiftii=-\fuseAx
+ \yl@shifti=-\fuseAy
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+\begin{picture}(800,880)(-571,-137)%
+ \iforigpt\put(-571,-137){\circle*{50}}%
+ \put(-171,103){\circle{50}}%
+ \typeout{command `fourfuse' origin: %
+ (\the\noshift,\the\noshift) ---> (\the\shiftii,\the\shifti)}\fi%
+\fi
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+{\resetbdsw%
+\@bond@fuse@omit{#5}{#6}%
+\put(0,0){\set@skel@longbond{#1}{a}{skbondshorizi}}%
+ % bond between 1 and 2 \@aaa -> \skbondshorizi etc
+\put(-142,0){\set@skel@bond{#1}{b}{b}}%
+ % bond between 2 and 3 \@bbb -> \skbondb etc
+\put(0,0){\set@skel@longbond{#1}{c}{skbondshoriz}}%
+ % bond between 3 and 4 \@ccc -> \skbondshoriz etc
+\put(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(0,0){\bondshorizi}%
+\else\if\member b\relax \put(-142,0){\bondb}%
+\else\if\member c\relax \put(0,0){\bondshoriz}%
+\else\if\member d\relax \put(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(-142,0){\set@hetatom@sixv{#3}{5}{1}{4}{-1}}% for 2 to 3
+\put(0,0){\set@hetatom@sixv{#3}{4}{4}{6}{0}}% for 1
+\put(0,0){\set@hetatom@sixv{#3}{2}{5}{7}{0}}% for 4
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\put(-142,0){\setsixringv{#4}{5}{1}{4}{-1}}% for 2 to 3
+\put(0,0){\setsixringv{#4}{4}{4}{6}{0}}% for 1
+\put(0,0){\setsixringv{#4}{2}{5}{7}{0}}% for 4
+\end{picture}%
+\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}%
+\if@sixfuseposv
+ \yl@shiftii=-\fuseAx
+ \yl@shifti=-\fuseAy
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+\begin{picture}(800,580)(-468,-240)%
+ \iforigpt \put(-468,-240){\circle*{50}}%
+ \put(-68,0){\circle{50}}%
+ \typeout{command `threefusevv' origin: %
+ (68,0) ---> (468,240)}\fi%
+\fi
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+{\resetbdsw%
+\@bond@fuse@omit{#5}{#6}%
+\put(-68,0){\set@skel@longbond{#1}{a}{skbondtria}}%
+ % bond between 1 and 2 \@aaa -> \skbondtria etc
+\put(0,-132){\set@skel@longbond{#1}{b}{skbondshoriz}}%
+ % bond between 2 and 3 \@bbb -> \skbondb etc
+\put(-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(-68,0){\bondtria}%
+\else\if\member b\relax\put(0,-126){\bondshoriz}%
+\else\if\member c\relax\put(-68,0){\bondtrib}%
+\else\if\member A\relax% aromatic circle
+ \put(-70,108){\circle{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(-68,0){\set@hetatom@sixv{#3}{3}{3}{5}{0}%
+\if@clip\global\@cliptrue\fi
+}%subst 1
+\put(-142,-132){\set@hetatom@sixv{#3}{0}{1}{3}{0}%
+\if@bclip\global\@bcliptrue\fi
+}%subst 2
+\put(0,-132){\set@hetatom@sixv{#3}{3}{5}{7}{0}%
+\if@fclip\global\@fcliptrue\fi
+}%subst 3
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\put(-68,0){\setsixringv{#4}{3}{3}{5}{0}}%subst 1
+\put(-142,-132){\setsixringv{#4}{0}{1}{3}{0}}%subst 2
+\put(0,-132){\setsixringv{#4}{3}{5}{7}{0}}%subst 3
+\end{picture}%
+\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}%
+\if@sixfuseposv
+ \yl@shiftii=-\fuseAx
+ \yl@shifti=-\fuseAy
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+\begin{picture}(800,580)(-468,-340)%
+ \iforigpt \put(-468,-340){\circle*{50}}%
+ \put(-68,0){\circle{50}}%
+ \typeout{command `threefusevi' origin: %
+ (0,0) ---> (-468,-340)}\fi%
+\fi
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%
+% % outer skeleton %
+% %%%%%%%%%%%%%%%%%%
+{\resetbdsw%
+\@bond@fuse@omit{#5}{#6}%
+\put(-68,0){\set@skel@longbond{#1}{a}{skBondtria}}%
+ % bond between 1 and 2 \@aaa -> \skBondtria etc
+\put(0,-275){\set@skel@longbond{#1}{b}{skbondshorizi}}%
+ % bond between 2 and 3 \@bbb -> \skbondb etc
+\put(-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(-68,0){\Bondtria}%
+\else\if\member b\relax\put(0,-274){\bondshorizi}%
+\else\if\member c\relax\put(-68,0){\Bondtrib}%
+\else\if\member A\relax% aromatic circle
+ \put(-70,-108){\circle{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(-68,-406){\set@hetatom@sixv{#3}{0}{0}{2}{0}%
+\if@aclip\global\@acliptrue\fi
+}%subst 1
+\put(0,-275){\set@hetatom@sixv{#3}{2}{4}{6}{0}%
+\if@cclip\global\@ccliptrue\fi
+}%subst 3
+\put(-142,-275){\set@hetatom@sixv{#3}{1}{2}{4}{0}%
+\if@eclip\global\@ecliptrue\fi
+}%subst 2
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\put(-68,-406){\setsixringv{#4}{0}{0}{2}{0}}%subst 1
+\put(0,-275){\setsixringv{#4}{2}{4}{6}{0}}%subst 3
+\put(-142,-275){\setsixringv{#4}{1}{2}{4}{0}}%subst 2
+\end{picture}%
+\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}%
+\if@sixfuseposv
+ \yl@shiftii=-\fuseAx
+ \yl@shifti=-\fuseAy
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+\begin{picture}(580,700)(-200,-240)%
+ \iforigpt \put(-200,-200){\circle*{50}}%
+ \put(0,0){\circle{50}}%
+ \typeout{command `threefuseh' origin: %
+ (0,0) ---> (200,200)}\fi%
+\fi
+% \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(0,0){\set@skel@bond{#1}{a}{c}}%
+ % bond between 1 and 2 \@aaa -> \skbondc etc
+\put(171,-103){\set@skel@bond{#1}{b}{e}}%
+ % bond between 2 and 3 \@bbb -> \skbonde etc
+\put(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(0,0){\bondc}%
+\else\if\member b\relax\put(171,-103){\bonde}%
+\else\if\member c\relax\put(0,-200){\bonda}%
+\else\if\member A\relax% aromatic circle
+ \put(70,103){\circle{100}}% %circle
+\else
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+% % inner bond attachment %
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+ \expandafter\twoCH@@R\member//%
+ \set@fusionadd@threeh
+\fi\fi\fi\fi\fi%
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\iniflag
+%\put(-235,103){\set@hetatom@sixh{#3}{3}{3}{5}{0}%
+\put(-215,103){\set@hetatom@sixh{#3}{3}{3}{5}{0}%
+\if@clip \global\@cliptrue\fi}%subst 1 <--six h 4
+\put(-103,29){\set@hetatom@sixh{#3}{-1}{1}{3}{0}%
+\if@bclip \global\@bcliptrue\fi}%subst 3 <--six h 2
+\put(-103,171){\set@hetatom@sixh{#3}{4}{5}{7}{0}%
+\if@fclip \global\@fcliptrue\fi}%subst 2 <--six h 6
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\put(-235,103){\setsixringh{#4}{3}{3}{5}{0}}%subst 1
+\put(-103,29){\setsixringh{#4}{-1}{1}{3}{0}}%subst 3
+\put(-103,171){\setsixringh{#4}{4}{5}{7}{0}}%subst 2
+\end{picture}%
+\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}%
+\if@sixfuseposv
+ \yl@shiftii=-\fuseAx
+ \yl@shifti=-\fuseAy
+ \advance\yl@shiftii\yl@xdiff
+ \advance\yl@shifti\yl@ydiff
+ \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
+ \reset@yl@xydiff%1999/1/6 by S. Fujita
+\else
+\begin{picture}(580,700)(-400,-240)%
+ \iforigpt \put(-400,-200){\circle*{50}}%
+ \put(0,0){\circle{50}}%
+ \typeout{command `threefusehi' origin: %
+ (0,0) ---> (400,200)}\fi%
+\fi
+% \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(0,0){\set@skel@bond{#1}{a}{d}}%
+ % bond between 1 and 2 \@aaa -> \skbondd etc
+\put(-171,-103){\set@skel@bond{#1}{b}{b}}%
+ % bond between 2 and 3 \@bbb -> \skbondb etc
+\put(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(0,0){\bondd}%
+\else\if\member b\relax\put(-171,-103){\bondb}%
+\else\if\member c\relax\put(0,-200){\bondf}%
+\else\if\member A\relax% aromatic circle
+ \put(70,103){\circle{100}}% %circle
+\else
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+% % inner bond attachment %
+% %%%%%%%%%%%%%%%%%%%%%%%%%
+ \expandafter\twoCH@@R\member//%
+ \set@fusionadd@threehi
+\fi\fi\fi\fi\fi%
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting hetero atoms %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\iniflag
+\put(-171,103){\set@hetatom@sixh{#3}{0}{0}{2}{0}%
+\if@aclip \global\@acliptrue\fi}%subst 1 <--six h 1
+\put(-303,29){\set@hetatom@sixh{#3}{0}{2}{4}{0}%
+\if@cclip \global\@ccliptrue\fi}%subst 3 <--six h 3
+\put(-303,171){\set@hetatom@sixh{#3}{3}{4}{6}{0}%
+\if@eclip \global\@ecliptrue\fi}%subst 2 <--six h 5
+% \end{macrocode}
+%
+% \begin{macrocode}
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\put(-171,103){\setsixringh{#4}{0}{0}{2}{0}}%subst 1
+\put(-303,29){\setsixringh{#4}{0}{2}{4}{0}}%subst 3
+\put(-303,171){\setsixringh{#4}{3}{4}{6}{0}}%subst 2
+\end{picture}%
+\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
+ \ No newline at end of file