Fusing Ring Units by fusering.sty (v2.00) of XΥMTEX

Shinsaku Fujita Department of Chemistry and Materials Technology, Kyoto Institute of Technology, Matsugasaki, Sakyoku, Kyoto, 606 Japan

1998/12/25

1 Introduction

1.1 Options for docstrip

option function
fusering fusering.sty
driver  driver for this dtx file

1.2 Version Information

1 ⟨∗fusering⟩

2 \typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 2.00}
3 \typeout{       -- Released December 25, 1998 by Shinsaku Fujita}
4 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5 \def\j@urnalname{methylen}
6 \def\versi@ndate{December 25, 1998}
7 \def\versi@nno{ver2.00}
8 \def\copyrighth@lder{SF} % Shinsaku Fujita
9 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10 \typeout{XyMTeX Macro File `\j@urnalname' (\versi@nno) <\versi@ndate>%
11 \space[\copyrighth@lder]}

2 List of commands for fusering.sty

**********************************
* 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

3 Input of basic macros

To assure the compatibility to L^{A}TEX2.09 (the native mode), the commands added by L^{A}TEX 2ε have not been used in the resulting sty files (polymers.sty for the present case). Hence, the combination of \input and \@ifundefined is used to crossload sty files (chemstr.sty etc. for the present case) in place of the \RequirePackage command of L^{A}TEX 2ε.

12 % *************************
13 % * input of basic macros *
14 % *************************
15 \@ifundefined{setsixringv}{\input chemstr.sty\relax}{}
16 \@ifundefined{bzdrv}{\input carom.sty\relax}{}
17 \@ifundefined{hbonde}{\input hetaromh.sty\relax}{}
18 \@ifundefined{bonde}{\input hetarom.sty\relax}{}
19 \unitlength=0.1pt

4 Six-Membered Fusing Units

4.1 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.

 *****************************
 * six-membered fusing unit  *
 *  (vertical type)          *
 *****************************
          1
      f   *  a
     6  *   *  2
     d |     | b
       |     |
     5  *   *  3
       d  * c
          4 <===== the original point

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.

   \sixfusev(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[OMIT]

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’.

     SKBONDLIST =
            A:      dotted bond for an alpha (down) bond
            B:      boldfaced bond for a beta (upper) bond

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.

     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)

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.

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

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.

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

The argument FUSE represents one bond to be omitted. The omitted edge is regarded as a fused position.

FUSE:  one bond omitted (a, b, c, d, e, or f)

The argument OMIT represents one or more bonds to be omitted. The omitted edges are regarded as non-fused positions.

     OMIT:  one or more bonds omitted (a, b, c, d, e, or f)

Several examples are shown as follows.

       e.g.
        \sixfusev{1==N}{1==Cl;2==F}{e}

\if@skbondlist
20 %\newif\if@skbondlist
21 %\@skbondlistfalse

to hetarom.sty

\sixfusev
\@six@fusev
\@six@@fusev
\@sixfusev

22 \def\sixfusev{\@ifnextchar({\@six@fusev(@}{\@six@fusev(@)}}
23 \def\@six@fusev(#1){\@ifnextchar[{\@six@@fusev(#1)[@}%
24 {\@six@@fusev(#1)[@]}}
25 \def\@six@@fusev(#1)[#2]#3#4#5{\@ifnextchar[%
26 {\@sixfusev(#1)[#2]{#3}{#4}{#5}[@}%
27 {\@sixfusev(#1)[#2]{#3}{#4}{#5}[@]}}
28 \def\@sixfusev(#1)[#2]#3#4#5[#6]{%
29 % %%%%%%%%%%%%%%%%%%%%%%%%%%
30 % % treatment of atom list %
31 % %%%%%%%%%%%%%%%%%%%%%%%%%%
32 \iniatom\iniflag%initialize%
33 \test@vertix@sixv{#3}{a}{b}{c}{d}{e}{f}%
34 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
35 % % adjustment of attached positions %
36 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
37 \sixfuseposv{#5}%
38 \if@sixfuseposv
39 \yl@shiftii=-\fuseAx
40 \yl@shifti=-\fuseAy
41 \advance\yl@shiftii\yl@xdiff
42 \advance\yl@shifti\yl@ydiff
43 \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
44 \reset@yl@xydiff%1999/1/6 by S. Fujita
45 \else
46 \begin{picture}(800,880)(-\shiftii,-\shifti)%
47 \iforigpt \put(-\shiftii,-\shifti){\circle*{50}}%
48  \put(-\noshift,-\noshift){\circle{50}}%
49 \typeout{command `sixfusev' origin: %
50  (\the\noshift,\the\noshift) ---> (\the\shiftii,\the\shifti)}\fi%
51 \fi

52 % %%%%%%%%%%%%%%%%%%
53 % % outer skeleton %
54 % %%%%%%%%%%%%%%%%%%
55 % changed FUSE into a list 1993/11/21 by Shinsaku Fujita
56 {%
57 \resetbdsw%
58 \@bond@fuse@omit{#5}{#6}%
59 \set@skel@bond{#1}{a}{a}% bond between 1 and 2 \@aaa -> \skbonda etc
60 \set@skel@bond{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc
61 \set@skel@bond{#1}{c}{c}% bond between 3 and 4 \@ccc -> \skbondc etc
62 \set@skel@bond{#1}{d}{d}% bond between 4 and 5 \@ddd -> \skbondd etc
63 \set@skel@bond{#1}{e}{e}% bond between 5 and 6 \@eee -> \skbonde etc
64 \set@skel@bond{#1}{f}{f}% bond between 6 and 1 \@fff -> \skbondf etc
65 }%
66 % %%%%%%%%%%%%%%%%%%%%%
67 % % inner double bond %
68 % %%%%%%%%%%%%%%%%%%%%%
69 \@tfor\member:=#2\do{%
70 \if\member r\relax%
71 \else\if\member l\relax%
72 \else\if\member a\relax%
73 \bonda%
74 \else\if\member b\relax%
75 \bondb%
76 \else\if\member c\relax%
77 \bondc%
78 \else\if\member d\relax%
79 \bondd%
80 \else\if\member e\relax%
81 \bonde%
82 \else\if\member f\relax%
83 \bondf%
84 \else\if\member A%left aromatic circle
85 \put(0,203){\circle{240}}%               %circle
86 % %%%%%%%%%%%%%%%%%%%%%%%%%
87 % % inner bond attachment %
88 % %%%%%%%%%%%%%%%%%%%%%%%%%
89 \else \expandafter\twoCH@@R\member//%
90  \set@fusionadd@sixv
91 \fi\fi\fi\fi\fi\fi\fi\fi\fi%
92 }%
93 % %%%%%%%%%%%%%%%%%%%%%%%%
94 % % setting hetero atoms %
95 % %%%%%%%%%%%%%%%%%%%%%%%%
96 \set@hetatom@sixv{#3}{0}{0}{7}{0}%    %atom 1--6%
97 % %%%%%%%%%%%%%%%%%%%%%%%%
98 % % setting substituents %
99 % %%%%%%%%%%%%%%%%%%%%%%%%
100 \setsixringv{#4}{0}{0}{7}{0}%

101 \end{picture}%
102 \sixfuseposv{#5}%for FuseWaring when nested
103 \iniatom\iniflag}%     %end of \sixfusev 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.

\if@sixfuseposv
\sixfuseposv
104 \newif\if@sixfuseposv \@sixfuseposvfalse
105 \def\fuseAx{0}
106 \def\fuseAy{0}
107 \def\fuseBx{0}
108 \def\fuseBy{0}
109 \def\sixfuseposv#1{%
110 \global\@sixfuseposvfalse
111 {\resetbdsw%
112 \@tfor\memBer:=#1\do{%
113 \if\memBer a\relax
114 \if@sixfuseposv
115 \XyMTeXWarning{Double fused bond at bond `a'}%
116 \else
117 \gdef\fuseAx{0}\gdef\fuseAy{406}%
118 \gdef\fuseBx{171}\gdef\fuseBy{303}%
119 \global\@sixfuseposvtrue
120 \fi
121 \fi%
122 \if\memBer A\relax
123 \if@sixfuseposv
124 \XyMTeXWarning{Double fused bond at bond `A'}%
125 \else
126 \gdef\fuseBx{0}\gdef\fuseBy{406}%
127 \gdef\fuseAx{171}\gdef\fuseAy{303}%
128 \global\@sixfuseposvtrue
129 \fi
130 \fi%
131 \if\memBer b\relax
132 \if@sixfuseposv
133 \XyMTeXWarning{Double fused bond at bond `b'}%
134 \else
135 \gdef\fuseAx{171}\gdef\fuseAy{303}%
136 \gdef\fuseBx{171}\gdef\fuseBy{103}%
137 \global\@sixfuseposvtrue
138 \fi
139 \fi%
140 \if\memBer B\relax
141 \if@sixfuseposv
142 \XyMTeXWarning{Double fused bonds at bond `B'}%
143 \else

144 \gdef\fuseBx{171}\gdef\fuseBy{303}%
145 \gdef\fuseAx{171}\gdef\fuseAy{103}%
146 \global\@sixfuseposvtrue
147 \fi
148 \fi%
149 \if\memBer c\relax
150 \if@sixfuseposv
151 \XyMTeXWarning{Double fused bonds at bond `c'}%
152 \else
153 \gdef\fuseAx{171}\gdef\fuseAy{103}%
154 \gdef\fuseBx{0}\gdef\fuseBy{0}%
155 \global\@sixfuseposvtrue
156 \fi
157 \fi%
158 \if\memBer C\relax
159 \if@sixfuseposv
160 \XyMTeXWarning{Double fused bonds at bond `C'}%
161 \else
162 \gdef\fuseBx{171}\gdef\fuseBy{103}%
163 \gdef\fuseAx{0}\gdef\fuseAy{0}%
164 \global\@sixfuseposvtrue
165 \fi
166 \fi%
167 \if\memBer d\relax
168 \if@sixfuseposv
169 \XyMTeXWarning{Double fused bonds at bond `d'}%
170 \else
171 \gdef\fuseAx{0}\gdef\fuseAy{0}%
172 \gdef\fuseBx{-171}\gdef\fuseBy{103}%
173 \global\@sixfuseposvtrue
174 \fi
175 \fi%
176 \if\memBer D\relax
177 \if@sixfuseposv
178 \XyMTeXWarning{Double fused bonds at bond `D'}%
179 \else
180 \gdef\fuseBx{0}\gdef\fuseBy{0}%
181 \gdef\fuseAx{-171}\gdef\fuseAy{103}%
182 \global\@sixfuseposvtrue
183 \fi
184 \fi%
185 \if\memBer e\relax
186 \if@sixfuseposv
187 \XyMTeXWarning{Double fused bonds at bond `e'}%
188 \else
189 \gdef\fuseAx{-171}\gdef\fuseAy{103}%
190 \gdef\fuseBx{-171}\gdef\fuseBy{303}%
191 \global\@sixfuseposvtrue
192 \fi
193 \fi%

194 \if\memBer E\relax
195 \if@sixfuseposv
196 \XyMTeXWarning{Double fused bonds at bond `E'}%
197 \else
198 \gdef\fuseBx{-171}\gdef\fuseBy{103}%
199 \gdef\fuseAx{-171}\gdef\fuseAy{303}%
200 \global\@sixfuseposvtrue
201 \fi
202 \fi%
203 \if\memBer f\relax
204 \if@sixfuseposv
205 \XyMTeXWarning{Double fused bonds at bond `f'}%
206 \else
207 \gdef\fuseAx{-171}\gdef\fuseAy{303}%
208 \gdef\fuseBx{0}\gdef\fuseBy{406}%
209 \global\@sixfuseposvtrue
210 \fi
211 \fi%
212 \if\memBer F\relax
213 \if@sixfuseposv
214 \XyMTeXWarning{Double fused bonds at bond `F'}%
215 \else
216 \gdef\fuseBx{-171}\gdef\fuseBy{303}%
217 \gdef\fuseAx{0}\gdef\fuseAy{406}%
218 \global\@sixfuseposvtrue
219 \fi
220 \fi}}}% end of the macro \sixfuseposv

The macro \@bond@fuse@omit is used in \sixfusev etc. for detecting omitted bonds, where \@aaa etc. are empty if they are omitted.

\@bond@fuse@omit
221 \def\@bond@fuse@omit#1#2{%
222 \ifx#1a\relax\gdef\@aaa{}\fi
223 \ifx#1b\relax\gdef\@bbb{}\fi
224 \ifx#1c\relax\gdef\@ccc{}\fi
225 \ifx#1d\relax\gdef\@ddd{}\fi
226 \ifx#1e\relax\gdef\@eee{}\fi
227 \ifx#1f\relax\gdef\@fff{}\fi
228 \ifx#1A\relax\gdef\@aaa{}\fi
229 \ifx#1B\relax\gdef\@bbb{}\fi
230 \ifx#1C\relax\gdef\@ccc{}\fi
231 \ifx#1D\relax\gdef\@ddd{}\fi
232 \ifx#1E\relax\gdef\@eee{}\fi
233 \ifx#1F\relax\gdef\@fff{}\fi
234 %%%%
235 \@tfor\memBer:=#2\do{%
236 \if\memBer a\relax\gdef\@aaa{}%
237 \ifx#1a\relax
238 \XyMTeXWarning{Double spec. of bond `a' in FUSE and OMIT}\fi

239 \fi%
240 \if\memBer A\relax\gdef\@aaa{}%
241 \ifx#1a\relax
242 \XyMTeXWarning{Double spec. of bond `a' in FUSE and OMIT}\fi
243 \fi%
244 \if\memBer b\relax\gdef\@bbb{}%
245 \ifx#1b\relax
246 \XyMTeXWarning{Double spec. of bond `b' in FUSE and OMIT}\fi
247 \fi%
248 \if\memBer B\relax\gdef\@bbb{}%
249 \ifx#1b\relax
250 \XyMTeXWarning{Double spec. of bond `b' in FUSE and OMIT}\fi
251 \fi%
252 \if\memBer c\relax\gdef\@ccc{}%
253 \ifx#1c\relax
254 \XyMTeXWarning{Double spec. of bond `c' in FUSE and OMIT}\fi
255 \fi%
256 \if\memBer C\relax\gdef\@ccc{}%
257 \ifx#1c\relax
258 \XyMTeXWarning{Double spec. of bond `c' in FUSE and OMIT}\fi
259 \fi%
260 \if\memBer d\relax\gdef\@ddd{}%
261 \ifx#1d\relax
262 \XyMTeXWarning{Double spec. of bond `d' in FUSE and OMIT}\fi
263 \fi%
264 \if\memBer D\relax\gdef\@ddd{}%
265 \ifx#1d\relax
266 \XyMTeXWarning{Double spec. of bond `d' in FUSE and OMIT}\fi
267 \fi%
268 \if\memBer e\relax\gdef\@eee{}%
269 \ifx#1e\relax
270 \XyMTeXWarning{Double spec. of bond `e' in FUSE and OMIT}\fi
271 \fi%
272 \if\memBer E\relax\gdef\@eee{}%
273 \ifx#1e\relax
274 \XyMTeXWarning{Double spec. of bond `e' in FUSE and OMIT}\fi
275 \fi%
276 \if\memBer f\relax\gdef\@fff{}%
277 \ifx#1f\relax
278 \XyMTeXWarning{Double spec. of bond `f' in FUSE and OMIT}\fi
279 \fi%
280 \if\memBer F\relax\gdef\@fff{}%
281 \ifx#1f\relax
282 \XyMTeXWarning{Double spec. of bond `f' in FUSE and OMIT}\fi
283 \fi%
284 }}%

4.2 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.

 *****************************
 * six-membered fusing unit  *
 *  (inverse vertical type)  *
 *****************************
          4
       d  *  c
     5  *   *  3
     e |     | b
       |     |
     6  *   *  2
       f  * a
          1 <===== the original point

   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.

   \sixfusevi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[OMIT]

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’.

     SKBONDLIST =
            A:      dotted bond for an alpha (down) bond
            B:      boldfaced bond for a beta (upper) bond

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.

     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)

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.

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

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.

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

The argument FUSE represents one bond to be omitted. The omitted edge is regarded as a fused position.

      FUSE:  one bond omitted (a, b, c, d, e, or f)

The argument OMIT represents one or more bonds to be omitted. The omitted edges are regarded as non-fused positions.

      OMIT:  one or more bonds omitted (a, b, c, d, e, or f)

Several examples are shown as follows.

        e.g.
         \sixfusevi{1==N}{1==Cl;2==F}{e}

\sixfusevi
\@six@fusevi
\@six@@fusevi
\@sixfusevi

285 \def\sixfusevi{\@ifnextchar({\@six@fusevi(@}{\@six@fusevi(@)}}
286 \def\@six@fusevi(#1){\@ifnextchar[{\@six@@fusevi(#1)[@}%
287 {\@six@@fusevi(#1)[@]}}
288 \def\@six@@fusevi(#1)[#2]#3#4#5{\@ifnextchar[%
289 {\@sixfusevi(#1)[#2]{#3}{#4}{#5}[@}%
290 {\@sixfusevi(#1)[#2]{#3}{#4}{#5}[@]}}
291 \def\@sixfusevi(#1)[#2]#3#4#5[#6]{%
292 % %%%%%%%%%%%%%%%%%%%%%%%%%%
293 % % treatment of atom list %
294 % %%%%%%%%%%%%%%%%%%%%%%%%%%
295 \iniatom\iniflag%initialize%
296 \test@vertix@sixv{#3}{d}{c}{b}{a}{f}{e}%
297 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
298 % % adjustment of attached positions %
299 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
300 \sixfuseposvi{#5}%
301 \if@sixfuseposv
302 \yl@shiftii=-\fuseAx
303 \yl@shifti=-\fuseAy
304 \advance\yl@shiftii\yl@xdiff
305 \advance\yl@shifti\yl@ydiff
306 \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
307 \reset@yl@xydiff%1999/1/6 by S. Fujita
308 \else
309 \begin{picture}(800,880)(-\shiftii,-\shifti)%
310 \iforigpt \put(-\shiftii,-\shifti){\circle*{50}}%
311  \put(-\noshift,-\noshift){\circle{50}}%
312 \typeout{command `sixfusev' origin: %
313  (\the\noshift,\the\noshift) ---> (\the\shiftii,\the\shifti)}\fi%
314 \fi

315 % %%%%%%%%%%%%%%%%%%
316 % % outer skeleton %
317 % %%%%%%%%%%%%%%%%%%
318 % changed FUSE into a list 1993/11/21 by Shinsaku Fujita
319 {\resetbdsw%
320 \@bond@fuse@omit{#5}{#6}%
321 \set@skel@bond{#1}{a}{c}% bond between 1 and 2 \@aaa -> \skbondc etc
322 \set@skel@bond{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc
323 \set@skel@bond{#1}{c}{a}% bond between 3 and 4 \@ccc -> \skbonda etc
324 \set@skel@bond{#1}{d}{f}% bond between 4 and 5 \@ddd -> \skbondf etc
325 \set@skel@bond{#1}{e}{e}% bond between 5 and 6 \@eee -> \skbonde etc
326 \set@skel@bond{#1}{f}{d}% bond between 6 and 1 \@fff -> \skbondd etc

327 }%

328 % %%%%%%%%%%%%%%%%%%%%%
329 % % inner double bond %
330 % %%%%%%%%%%%%%%%%%%%%%
331 \@tfor\member:=#2\do{%
332 \if\member r\relax%
333 \else\if\member l\relax%
334 \else\if\member a\relax%
335 \bondc%
336 \else\if\member b\relax%
337 \bondb%
338 \else\if\member c\relax%
339 \bonda%
340 \else\if\member d\relax%
341 \bondf%
342 \else\if\member e\relax%
343 \bonde%
344 \else\if\member f\relax%
345 \bondd%
346 \else\if\member A%left aromatic circle
347 \put(0,203){\circle{240}}%               %circle
348 % %%%%%%%%%%%%%%%%%%%%%%%%%
349 % % inner bond attachment %
350 % %%%%%%%%%%%%%%%%%%%%%%%%%
351 \else \expandafter\twoCH@@R\member//%
352  \set@fusionadd@sixvi
353 \fi\fi\fi\fi\fi\fi\fi\fi\fi%

354 }%

355 % %%%%%%%%%%%%%%%%%%%%%%%%
356 % % setting hetero atoms %
357 % %%%%%%%%%%%%%%%%%%%%%%%%
358 \set@hetatom@sixv{#3}{5}{0}{5}{-1}%    %atom 1--4%
359 \set@hetatom@sixv{#3}{11}{4}{7}{-1}%   %atom 5 and 6%
360 % %%%%%%%%%%%%%%%%%%%%%%%%
361 % % setting substituents %
362 % %%%%%%%%%%%%%%%%%%%%%%%%
363 \setsixringv{#4}{5}{0}{5}{-1}%    %subst 1--4

364 \setsixringv{#4}{11}{4}{7}{-1}%   %subst 5 and 6
365 \end{picture}%
366 \sixfuseposvi{#5}%%for FuseWaring when nested
367 \iniatom\iniflag}%     %end of \sixfusevi 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.

\sixfuseposvi
368 \def\sixfuseposvi#1{%
369 \global\@sixfuseposvfalse
370 {\resetbdsw%
371 \@tfor\memBer:=#1\do{%
372 \if\memBer c\relax
373 \if@sixfuseposv
374 \XyMTeXWarning{Double fused bonds at bond `c'}%
375 \else
376 \gdef\fuseBx{0}\gdef\fuseBy{406}%
377 \gdef\fuseAx{171}\gdef\fuseAy{303}%
378 \global\@sixfuseposvtrue
379 \fi
380 \fi%
381 \if\memBer C\relax
382 \if@sixfuseposv
383 \XyMTeXWarning{Double fused bonds at bond `C'}%
384 \else
385 \gdef\fuseAx{0}\gdef\fuseAy{406}%
386 \gdef\fuseBx{171}\gdef\fuseBy{303}%
387 \global\@sixfuseposvtrue
388 \fi
389 \fi%
390 \if\memBer b\relax
391 \if@sixfuseposv
392 \XyMTeXWarning{Double fused bonds at bond `b'}%
393 \else
394 \gdef\fuseBx{171}\gdef\fuseBy{303}%
395 \gdef\fuseAx{171}\gdef\fuseAy{103}%
396 \global\@sixfuseposvtrue
397 \fi
398 \fi%
399 \if\memBer B\relax
400 \if@sixfuseposv
401 \XyMTeXWarning{Double fused bonds at bond `B'}%
402 \else
403 \gdef\fuseAx{171}\gdef\fuseAy{303}%
404 \gdef\fuseBx{171}\gdef\fuseBy{103}%
405 \global\@sixfuseposvtrue
406 \fi

407 \fi%
408 \if\memBer a\relax
409 \if@sixfuseposv
410 \XyMTeXWarning{Double fused bonds at bond `a'}%
411 \else
412 \gdef\fuseBx{171}\gdef\fuseBy{103}%
413 \gdef\fuseAx{0}\gdef\fuseAy{0}%
414 \global\@sixfuseposvtrue
415 \fi
416 \fi%
417 \if\memBer A\relax
418 \if@sixfuseposv
419 \XyMTeXWarning{Double fused bonds at bond `A'}%
420 \else
421 \gdef\fuseAx{171}\gdef\fuseAy{103}%
422 \gdef\fuseBx{0}\gdef\fuseBy{0}%
423 \global\@sixfuseposvtrue
424 \fi
425 \fi%
426 \if\memBer f\relax
427 \if@sixfuseposv
428 \XyMTeXWarning{Double fused bonds at bond `f'}%
429 \else
430 \gdef\fuseBx{0}\gdef\fuseBy{0}%
431 \gdef\fuseAx{-171}\gdef\fuseAy{103}%
432 \global\@sixfuseposvtrue
433 \fi
434 \fi%
435 \if\memBer F\relax
436 \if@sixfuseposv
437 \XyMTeXWarning{Double fused bonds at bond `F'}%
438 \else
439 \gdef\fuseAx{0}\gdef\fuseAy{0}%
440 \gdef\fuseBx{-171}\gdef\fuseBy{103}%
441 \global\@sixfuseposvtrue
442 \fi
443 \fi%
444 \if\memBer e\relax
445 \if@sixfuseposv
446 \XyMTeXWarning{Double fused bonds at bond `e'}%
447 \else
448 \gdef\fuseBx{-171}\gdef\fuseBy{103}%
449 \gdef\fuseAx{-171}\gdef\fuseAy{303}%
450 \global\@sixfuseposvtrue
451 \fi
452 \fi%
453 \if\memBer E\relax
454 \if@sixfuseposv
455 \XyMTeXWarning{Double fused bonds at bond `E'}%
456 \else

457 \gdef\fuseAx{-171}\gdef\fuseAy{103}%
458 \gdef\fuseBx{-171}\gdef\fuseBy{303}%
459 \global\@sixfuseposvtrue
460 \fi
461 \fi%
462 \if\memBer d\relax
463 \if@sixfuseposv
464 \XyMTeXWarning{Double fused bonds at bond `d'}%
465 \else
466 \gdef\fuseBx{-171}\gdef\fuseBy{303}%
467 \gdef\fuseAx{0}\gdef\fuseAy{406}%
468 \global\@sixfuseposvtrue
469 \fi
470 \fi%
471 \if\memBer D\relax
472 \if@sixfuseposv
473 \XyMTeXWarning{Double fused bonds at bond `D'}%
474 \else
475 \gdef\fuseAx{-171}\gdef\fuseAy{303}%
476 \gdef\fuseBx{0}\gdef\fuseBy{406}%
477 \global\@sixfuseposvtrue
478 \fi
479 \fi%
480 }}}% end of the macro \sixfuseposvi

4.3 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.

  *****************************
  * six-membered fusing unit  *
  *     (horizontal type)     *
  *****************************
                                    b
                                 2      3
                             a    -----    c
                                *       *
    the original point ===> 1 *           * 4
           (0,0)                *       *  d
                             f    -----
                                 6      5
                                    e

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.

   \sixfuseh(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[OMIT]

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.

     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)

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.

     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

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.

     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

The argument FUSE represents one bond to be omitted. The omitted edge is regarded as a fused position.

FUSE:  one bond omitted (a, b, c, d, e, or f)

The argument OMIT represents one or more bonds to be omitted. The omitted edges are regarded as non-fused positions.

OMIT:  one or more bonds omitted (a, b, c, d, e, or f)

Several examples are shown as follows.

e.g.
\sixfuseh{1==N}{1==Cl;2==F}{e}

The definition of \sixfuseh uses a picture environment and consists of the same unit processes as shown in \sixheteroh:

1. treatment of atom list,

2. placing outer skeletons,

3. placing inner double bonds,

4. setting hetero atoms, and

5. placing substituents by using \setsixringh.

\sixfuseh
\@six@fuseh
\@six@@fuseh
\@sixfuseh

481 \def\sixfuseh{\@ifnextchar({\@six@fuseh(@}{\@six@fuseh(@)}}
482 \def\@six@fuseh(#1){\@ifnextchar[{\@six@@fuseh(#1)[@}%
483 {\@six@@fuseh(#1)[@]}}
484 \def\@six@@fuseh(#1)[#2]#3#4#5{\@ifnextchar[%
485 {\@sixfuseh(#1)[#2]{#3}{#4}{#5}[@}%
486 {\@sixfuseh(#1)[#2]{#3}{#4}{#5}[@]}}
487 \def\@sixfuseh(#1)[#2]#3#4#5[#6]{%
488 % %%%%%%%%%%%%%%%%%%%%%%%%%%
489 % % treatment of atom list %
490 % %%%%%%%%%%%%%%%%%%%%%%%%%%
491 \iniatom\iniflag%initialize%
492 \test@vrtx@sixh{#3}%
493 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
494 % % adjustment of attached positions %
495 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
496 \sixfuseposh{#5}%
497 \if@sixfuseposv
498 \yl@shiftii=-\fuseAx
499 \yl@shifti=-\fuseAy
500 \advance\yl@shiftii\yl@xdiff
501 \advance\yl@shifti\yl@ydiff
502 \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
503 \reset@yl@xydiff%1999/1/6 by S. Fujita
504 \else
505 \begin{picture}(800,880)(-240,-400)%
506 \iforigpt \put(-\shifti,-\shiftii){\circle*{50}}%
507  \put(-\noshift,-\noshift){\circle{50}}%
508 \typeout{command `sixunith' origin: %
509  (\the\noshift,\the\noshift) ---> (\the\shifti,\the\shiftii)}\fi%
510 \fi
511 % %%%%%%%%%%%%%%%%%%
512 % % outer skeleton %
513 % %%%%%%%%%%%%%%%%%%
514 % changed FUSE into a list 1993/11/21 by Shinsaku Fujita
515 {\resetbdsw%
516 \@bond@fuse@omit{#5}{#6}%
517 \set@skel@bondh{#1}{a}{a}% bond between 1 and 2 \@aaa -> \hskbonda etc
518 \set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc
519 \set@skel@bondh{#1}{c}{c}% bond between 3 and 4 \@ccc -> \hskbondc etc
520 \set@skel@bondh{#1}{d}{d}% bond between 4 and 5 \@ddd -> \hskbondd etc
521 \set@skel@bondh{#1}{e}{e}% bond between 5 and 6 \@eee -> \hskbonde etc
522 \set@skel@bondh{#1}{f}{f}% bond between 6 and 1 \@fff -> \hskbondf etc

523 }%

524 % %%%%%%%%%%%%%%%%%%%%%
525 % % inner double bond %

526 % %%%%%%%%%%%%%%%%%%%%%
527 \@tfor\member:=#2\do{%
528 \if\member r\relax%
529 \else \if\member l\relax%
530 \else \if\member a\relax%
531 \hbonda%
532 \else \if\member b\relax%
533 \hbondb%
534 \else \if\member c\relax%
535 \hbondc%
536 \else \if\member d\relax%
537 \hbondd%
538 \else \if\member e\relax%
539 \hbonde%
540 \else \if\member f\relax%
541 \hbondf%
542 \else \if\member A%left aromatic circle
543 \put(203,0){\circle{240}}%                %circle
544 % %%%%%%%%%%%%%%%%%%%%%%%%%
545 % % inner bond attachment %
546 % %%%%%%%%%%%%%%%%%%%%%%%%%
547 \else \expandafter\twoCH@@R\member//%
548  \set@fusionadd@sixh
549 \fi\fi\fi\fi\fi\fi\fi\fi\fi}%
550 % %%%%%%%%%%%%%%%%%%%%%%%%
551 % % setting hetero atoms %
552 % %%%%%%%%%%%%%%%%%%%%%%%%
553 \set@hetatom@sixh{#3}{0}{0}{7}{0}%    %atom 1--6%
554 % %%%%%%%%%%%%%%%%%%%%%%%%
555 % % setting substituents %
556 % %%%%%%%%%%%%%%%%%%%%%%%%
557 \setsixringh{#4}{0}{0}{7}{0}%
558 \end{picture}%
559 \sixfuseposh{#5}%%for FuseWaring when nested
560 \iniatom\iniflag}%     %end of \sixfuseh 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.

\sixfuseposh
561 \def\sixfuseposh#1{%
562 \global\@sixfuseposvfalse
563 {\resetbdsw%
564 \@tfor\memBer:=#1\do{%
565 \if\memBer a\relax
566 \if@sixfuseposv
567 \XyMTeXWarning{Double fused bond at bond `a'}%

568 \else
569 \gdef\fuseAx{0}\gdef\fuseAy{0}%
570 \gdef\fuseBx{103}\gdef\fuseBy{171}%
571 \global\@sixfuseposvtrue
572 \fi
573 \fi%
574 \if\memBer A\relax
575 \if@sixfuseposv
576 \XyMTeXWarning{Double fused bond at bond `A'}%
577 \else
578 \gdef\fuseBx{0}\gdef\fuseBy{0}%
579 \gdef\fuseAx{103}\gdef\fuseAy{171}%
580 \global\@sixfuseposvtrue
581 \fi
582 \fi%
583 \if\memBer b\relax
584 \if@sixfuseposv
585 \XyMTeXWarning{Double fused bond at bond `b'}%
586 \else
587 \gdef\fuseAx{103}\gdef\fuseAy{171}%
588 \gdef\fuseBx{303}\gdef\fuseBy{171}%
589 \global\@sixfuseposvtrue
590 \fi
591 \fi%
592 \if\memBer B\relax
593 \if@sixfuseposv
594 \XyMTeXWarning{Double fused bonds at bond `B'}%
595 \else
596 \gdef\fuseBx{103}\gdef\fuseBy{171}%
597 \gdef\fuseAx{303}\gdef\fuseAy{171}%
598 \global\@sixfuseposvtrue
599 \fi
600 \fi%
601 \if\memBer c\relax
602 \if@sixfuseposv
603 \XyMTeXWarning{Double fused bonds at bond `c'}%
604 \else
605 \gdef\fuseAx{303}\gdef\fuseAy{171}%
606 \gdef\fuseBx{406}\gdef\fuseBy{0}%
607 \global\@sixfuseposvtrue
608 \fi
609 \fi%
610 \if\memBer C\relax
611 \if@sixfuseposv
612 \XyMTeXWarning{Double fused bonds at bond `C'}%
613 \else
614 \gdef\fuseBx{303}\gdef\fuseBy{171}%
615 \gdef\fuseAx{406}\gdef\fuseAy{0}%
616 \global\@sixfuseposvtrue
617 \fi

618 \fi%
619 \if\memBer d\relax
620 \if@sixfuseposv
621 \XyMTeXWarning{Double fused bonds at bond `d'}%
622 \else
623 \gdef\fuseAx{406}\gdef\fuseAy{0}%
624 \gdef\fuseBx{303}\gdef\fuseBy{-171}%
625 \global\@sixfuseposvtrue
626 \fi
627 \fi%
628 \if\memBer D\relax
629 \if@sixfuseposv
630 \XyMTeXWarning{Double fused bonds at bond `D'}%
631 \else
632 \gdef\fuseBx{406}\gdef\fuseBy{0}%
633 \gdef\fuseAx{303}\gdef\fuseAy{-171}%
634 \global\@sixfuseposvtrue
635 \fi
636 \fi%
637 \if\memBer e\relax
638 \if@sixfuseposv
639 \XyMTeXWarning{Double fused bonds at bond `e'}%
640 \else
641 \gdef\fuseAx{303}\gdef\fuseAy{-171}%
642 \gdef\fuseBx{103}\gdef\fuseBy{-171}%
643 \global\@sixfuseposvtrue
644 \fi
645 \fi%
646 \if\memBer E\relax
647 \if@sixfuseposv
648 \XyMTeXWarning{Double fused bonds at bond `E'}%
649 \else
650 \gdef\fuseBx{303}\gdef\fuseBy{-171}%
651 \gdef\fuseAx{103}\gdef\fuseAy{-171}%
652 \global\@sixfuseposvtrue
653 \fi
654 \fi%
655 \if\memBer f\relax
656 \if@sixfuseposv
657 \XyMTeXWarning{Double fused bonds at bond `f'}%
658 \else
659 \gdef\fuseAx{103}\gdef\fuseAy{-171}%
660 \gdef\fuseBx{0}\gdef\fuseBy{0}%
661 \global\@sixfuseposvtrue
662 \fi
663 \fi%
664 \if\memBer F\relax
665 \if@sixfuseposv
666 \XyMTeXWarning{Double fused bonds at bond `F'}%
667 \else

668 \gdef\fuseBx{103}\gdef\fuseBy{-171}%
669 \gdef\fuseAx{0}\gdef\fuseAy{0}%
670 \global\@sixfuseposvtrue
671 \fi
672 \fi}}}% end of the macro \sixfuseposh

4.4 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.

 *****************************
 * six-membered fusing unit  *
 * (inverse horizontal type) *
 *****************************
           b
        3      2
    c    -----    a
       *        *
    4 *           * 1 <== the original point (0,0)
        *       * f
    d    -----
        5      6
           e

   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.

   \sixfusehi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[OMIT]

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.

     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)

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.

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

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.

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

The argument FUSE represents one bond to be omitted. The omitted edge is regarded as a fused position.

      FUSE:  one bond omitted (a, b, c, d, e, or f)

The argument OMIT represents one or more bonds to be omitted. The omitted edges are regarded as non-fused positions.

      OMIT:  one or more bonds omitted (a, b, c, d, e, or f)

Several examples are shown as follows.

        e.g.
         \sixfusehi{1==N}{1==Cl;2==F}{e}

\sixfusehi
\@six@fusehi
\@six@@fusehi
\@sixfusehi

673 \def\sixfusehi{\@ifnextchar({\@six@fusehi(@}{\@six@fusehi(@)}}
674 \def\@six@fusehi(#1){\@ifnextchar[{\@six@@fusehi(#1)[@}%
675 {\@six@@fusehi(#1)[@]}}
676 \def\@six@@fusehi(#1)[#2]#3#4#5{\@ifnextchar[%
677 {\@sixfusehi(#1)[#2]{#3}{#4}{#5}[@}%
678 {\@sixfusehi(#1)[#2]{#3}{#4}{#5}[@]}}
679 \def\@sixfusehi(#1)[#2]#3#4#5[#6]{%
680 % %%%%%%%%%%%%%%%%%%%%%%%%%%
681 % % treatment of atom list %
682 % %%%%%%%%%%%%%%%%%%%%%%%%%%
683 \iniatom\iniflag%initialize%
684 \test@vrtx@sixhi{#3}%
685 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
686 % % adjustment of attached positions %
687 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
688 \sixfuseposhi{#5}%
689 \if@sixfuseposv
690 \yl@shiftii=-\fuseAx
691 \yl@shifti=-\fuseAy
692 \advance\yl@shiftii\yl@xdiff
693 \advance\yl@shifti\yl@ydiff
694 \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
695 \reset@yl@xydiff%1999/1/6 by S. Fujita
696 \else
697 \begin{picture}(800,880)(-240,-400)%
698 \iforigpt \put(-\shifti,-\shiftii){\circle*{50}}%
699  \put(-\noshift,-\noshift){\circle{50}}%
700 \typeout{command `sixunith' origin: %
701  (\the\noshift,\the\noshift) ---> (\the\shifti,\the\shiftii)}\fi%
702 \fi

703 % %%%%%%%%%%%%%%%%%%
704 % % outer skeleton %
705 % %%%%%%%%%%%%%%%%%%
706 % changed FUSE into a list 1993/11/21 by Shinsaku Fujita
707 {\resetbdsw%
708 \@bond@fuse@omit{#5}{#6}%
709 \set@skel@bondh{#1}{a}{c}% bond between 1 and 2 \@aaa -> \hskbondc etc
710 \set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc
711 \set@skel@bondh{#1}{c}{a}% bond between 3 and 4 \@ccc -> \hskbonda etc
712 \set@skel@bondh{#1}{d}{f}% bond between 4 and 5 \@ddd -> \hskbondf etc
713 \set@skel@bondh{#1}{e}{e}% bond between 5 and 6 \@eee -> \hskbonde etc
714 \set@skel@bondh{#1}{f}{d}% bond between 6 and 1 \@fff -> \hskbondd etc

715 }%

716 % %%%%%%%%%%%%%%%%%%%%%
717 % % inner double bond %
718 % %%%%%%%%%%%%%%%%%%%%%
719 \@tfor\member:=#2\do{%
720 \if\member r\relax%
721 \else \if\member l\relax%
722 \else \if\member a\relax%
723 \hbondc%
724 \else \if\member b\relax%
725 \hbondb%
726 \else \if\member c\relax%
727 \hbonda%
728 \else \if\member d\relax%
729 \hbondf%
730 \else \if\member e\relax%
731 \hbonde%
732 \else \if\member f\relax%
733 \hbondd%
734 \else \if\member A%left aromatic circle
735 \put(203,0){\circle{240}}%                %circle
736 % %%%%%%%%%%%%%%%%%%%%%%%%%
737 % % inner bond attachment %
738 % %%%%%%%%%%%%%%%%%%%%%%%%%
739 \else \expandafter\twoCH@@R\member//%
740  \set@fusionadd@sixhi
741 \fi\fi\fi\fi\fi\fi\fi\fi\fi}%
742 % %%%%%%%%%%%%%%%%%%%%%%%%
743 % % setting hetero atoms %
744 % %%%%%%%%%%%%%%%%%%%%%%%%
745 \set@hetatom@sixh{#3}{5}{0}{5}{-1}%               %subst 1--4
746 \set@hetatom@sixh{#3}{11}{4}{7}{-1}%              %subst 5 and 6
747 % %%%%%%%%%%%%%%%%%%%%%%%%
748 % % setting substituents %
749 % %%%%%%%%%%%%%%%%%%%%%%%%
750 \setsixringh{#4}{5}{0}{5}{-1}%               %subst 1--4
751 \setsixringh{#4}{11}{4}{7}{-1}%              %subst 5 and 6

752 \end{picture}%
753 \sixfuseposhi{#5}%%for FuseWaring when nested
754 \iniatom\iniflag}%     %end of \sixfusehi 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.

\sixfuseposhi
755 \def\sixfuseposhi#1{%
756 \global\@sixfuseposvfalse
757 {\resetbdsw%
758 \@tfor\memBer:=#1\do{%
759 \if\memBer C\relax
760 \if@sixfuseposv
761 \XyMTeXWarning{Double fused bond at bond `C'}%
762 \else
763 \gdef\fuseAx{0}\gdef\fuseAy{0}%
764 \gdef\fuseBx{103}\gdef\fuseBy{171}%
765 \global\@sixfuseposvtrue
766 \fi
767 \fi%
768 \if\memBer c\relax
769 \if@sixfuseposv
770 \XyMTeXWarning{Double fused bond at bond `c'}%
771 \else
772 \gdef\fuseBx{0}\gdef\fuseBy{0}%
773 \gdef\fuseAx{103}\gdef\fuseAy{171}%
774 \global\@sixfuseposvtrue
775 \fi
776 \fi%
777 \if\memBer B\relax
778 \if@sixfuseposv
779 \XyMTeXWarning{Double fused bond at bond `B'}%
780 \else
781 \gdef\fuseAx{103}\gdef\fuseAy{171}%
782 \gdef\fuseBx{303}\gdef\fuseBy{171}%
783 \global\@sixfuseposvtrue
784 \fi
785 \fi%
786 \if\memBer b\relax
787 \if@sixfuseposv
788 \XyMTeXWarning{Double fused bonds at bond `b'}%
789 \else
790 \gdef\fuseBx{103}\gdef\fuseBy{171}%
791 \gdef\fuseAx{303}\gdef\fuseAy{171}%
792 \global\@sixfuseposvtrue
793 \fi
794 \fi%

795 \if\memBer A\relax
796 \if@sixfuseposv
797 \XyMTeXWarning{Double fused bonds at bond `A'}%
798 \else
799 \gdef\fuseAx{303}\gdef\fuseAy{171}%
800 \gdef\fuseBx{406}\gdef\fuseBy{0}%
801 \global\@sixfuseposvtrue
802 \fi
803 \fi%
804 \if\memBer a\relax
805 \if@sixfuseposv
806 \XyMTeXWarning{Double fused bonds at bond `a'}%
807 \else
808 \gdef\fuseBx{303}\gdef\fuseBy{171}%
809 \gdef\fuseAx{406}\gdef\fuseAy{0}%
810 \global\@sixfuseposvtrue
811 \fi
812 \fi%
813 \if\memBer F\relax
814 \if@sixfuseposv
815 \XyMTeXWarning{Double fused bonds at bond `F'}%
816 \else
817 \gdef\fuseAx{406}\gdef\fuseAy{0}%
818 \gdef\fuseBx{303}\gdef\fuseBy{-171}%
819 \global\@sixfuseposvtrue
820 \fi
821 \fi%
822 \if\memBer f\relax
823 \if@sixfuseposv
824 \XyMTeXWarning{Double fused bonds at bond `f'}%
825 \else
826 \gdef\fuseBx{406}\gdef\fuseBy{0}%
827 \gdef\fuseAx{303}\gdef\fuseAy{-171}%
828 \global\@sixfuseposvtrue
829 \fi
830 \fi%
831 \if\memBer E\relax
832 \if@sixfuseposv
833 \XyMTeXWarning{Double fused bonds at bond `E'}%
834 \else
835 \gdef\fuseAx{303}\gdef\fuseAy{-171}%
836 \gdef\fuseBx{103}\gdef\fuseBy{-171}%
837 \global\@sixfuseposvtrue
838 \fi
839 \fi%
840 \if\memBer e\relax
841 \if@sixfuseposv
842 \XyMTeXWarning{Double fused bonds at bond `e'}%
843 \else
844 \gdef\fuseBx{303}\gdef\fuseBy{-171}%

845 \gdef\fuseAx{103}\gdef\fuseAy{-171}%
846 \global\@sixfuseposvtrue
847 \fi
848 \fi%
849 \if\memBer D\relax
850 \if@sixfuseposv
851 \XyMTeXWarning{Double fused bonds at bond `D'}%
852 \else
853 \gdef\fuseAx{103}\gdef\fuseAy{-171}%
854 \gdef\fuseBx{0}\gdef\fuseBy{0}%
855 \global\@sixfuseposvtrue
856 \fi
857 \fi%
858 \if\memBer d\relax
859 \if@sixfuseposv
860 \XyMTeXWarning{Double fused bonds at bond `d'}%
861 \else
862 \gdef\fuseBx{103}\gdef\fuseBy{-171}%
863 \gdef\fuseAx{0}\gdef\fuseAy{0}%
864 \global\@sixfuseposvtrue
865 \fi
866 \fi}}}% end of the macro \sixfuseposhi

5 Five-membered fused ring unit

5.1 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.

  **********************
  * five-membered fused*
  *  (vertical type)   *
  **********************
      4 _______3
        |     |
        |     |
      5  *   *  2
           *
           1 <===== the original point

    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.

    \fivefusev(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[OMIT]

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.

     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)

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.

     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

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.

     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

The argument FUSE represents one bond to be omitted for fusion. The omitted edge is regarded as a fused position.

      FUSE:  one bond omitted (a, b, c, d, or e)

The argument OMIT represents one or more bonds to be omitted. The omitted edges are regarded as non-fused positions.

      OMIT:  one or more bonds omitted (a, b, c, d, or e)

Several examples are shown as follows.

        e.g.
         \fivefusev{1==N}{1==H;2==F}{a}

\fivefusev
\@five@fusev
\@five@@fusev
\@fivefusev

867 \def\fivefusev{\@ifnextchar({\@five@fusev(@}{\@five@fusev(@)}}
868 \def\@five@fusev(#1){\@ifnextchar[{\@five@@fusev(#1)[@}%
869 {\@five@@fusev(#1)[@]}}
870 \def\@five@@fusev(#1)[#2]#3#4#5{\@ifnextchar[%
871 {\@fivefusev(#1)[#2]{#3}{#4}{#5}[@}%
872 {\@fivefusev(#1)[#2]{#3}{#4}{#5}[@]}}
873 \def\@fivefusev(#1)[#2]#3#4#5[#6]{%
874 \iniatom\iniflag%initialize
875 % %%%%%%%%%%%%%%%%%%%%%%%%%%
876 % % treatment of atom list %
877 % %%%%%%%%%%%%%%%%%%%%%%%%%%
878 \test@vertix@sixv{#3}{d}{c}{b}{f}{e}{@}%
879 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
880 % % adjustment of attached positions %
881 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
882 \fivefuseposv{#5}%

883 \if@sixfuseposv
884 \yl@shiftii=-\fuseAx
885 \yl@shifti=-\fuseAy
886 \advance\yl@shiftii\yl@xdiff
887 \advance\yl@shifti\yl@ydiff
888 \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
889 \reset@yl@xydiff%1999/1/6 by S. Fujita
890 \else
891 \begin{picture}(800,880)(-\shiftii,-\shifti)%
892 \iforigpt \put(-\shiftii,-\shifti){\circle*{50}}%
893  \put(-\noshift,-\noshift){\circle{50}}%
894 \typeout{command `fivefusev' origin: %
895  (\the\noshift,\the\noshift) ---> (\the\shiftii,\the\shifti)}\fi%
896 \fi
897 % %%%%%%%%%%%%%%%%%%%
898 % %% outer skeleton %
899 % %%%%%%%%%%%%%%%%%%%
900 % changed FUSE to a list 1993/11/21 by Shinsaku Fujita
901 {\resetbdsw%
902 \@bond@fuse@omit{#5}{#6}%
903 \set@skel@bond{#1}{a}{c}% bond between 1 and 2 \@aaa -> \skbondc etc
904 \set@skel@bond{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc
905 \set@skel@longbond{#1}{c}{skbondhoriz}%
906  % bond between 3 and 4 \@ccc -> \skbondhoriz etc
907 \set@skel@bond{#1}{d}{e}% bond between 4 and 5 \@ddd -> \skbonde etc
908 \set@skel@bond{#1}{e}{d}% bond between 5 and 1 \@eee -> \skbondd etc

909 }%

910 % %%%%%%%%%%%%%%%%%%%%%%
911 % %% inner double bond %
912 % %%%%%%%%%%%%%%%%%%%%%%
913 \@tfor\member:=#2\do{%
914 \if\member r%
915 \else\if\member a\relax%
916 \bondc%
917 \else\if\member b\relax%
918 \bondb%
919 \else\if\member c\relax%
920 \bondhoriz%
921 \else\if\member d\relax%
922 \bonde%
923 \else\if\member e\relax%
924 \bondd%
925 \else
926 % %%%%%%%%%%%%%%%%%%%%%%%%%
927 % % inner bond attachment %
928 % %%%%%%%%%%%%%%%%%%%%%%%%%
929  \expandafter\twoCH@@R\member//%
930  \set@fusionadd@fivev
931 \fi\fi\fi\fi\fi\fi}%

932 % %%%%%%%%%%%%%%%%%%%%%%%
933 % % setting heteroatoms %
934 % %%%%%%%%%%%%%%%%%%%%%%%
935 \set@hetatom@sixv{#3}{5}{1}{5}{-1}%   % for 1 to 3
936 \set@hetatom@sixv{#3}{10}{4}{7}{-1}%  % for 4 to 5
937 % %%%%%%%%%%%%%%%%%%%%%%%%
938 % % setting substituents %
939 % %%%%%%%%%%%%%%%%%%%%%%%%
940 \setsixringv{#4}{5}{1}{5}{-1}%   % for 1 to 3
941 \setsixringv{#4}{10}{4}{7}{-1}%  % for 4 to 5
942 \end{picture}%
943 {\let\XyMTeXWarning\@gobble
944 \fivefuseposv{#5}}%%for FuseWaring when nested
945 \iniatom\iniflag}%end of \fivefusev 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.

\fivefuseposv
946 \def\fivefuseposv#1{%
947 \global\@sixfuseposvfalse
948 {\resetbdsw%
949 \@tfor\memBer:=#1\do{%
950 \if\memBer c\relax
951  \XyMTeXWarning{Not-used fusion at bond `c'}%
952 \fi
953 \if\memBer C\relax
954  \XyMTeXWarning{Not-used fusion at bond `C'}%
955 \fi
956 \if\memBer b\relax
957 \if@sixfuseposv
958 \XyMTeXWarning{Double fused bonds at bond `b'}%
959 \else
960 \gdef\fuseBx{171}\gdef\fuseBy{303}%
961 \gdef\fuseAx{171}\gdef\fuseAy{103}%
962 \global\@sixfuseposvtrue
963 \fi
964 \fi%
965 \if\memBer B\relax
966 \if@sixfuseposv
967 \XyMTeXWarning{Double fused bonds at bond `B'}%
968 \else
969 \gdef\fuseAx{171}\gdef\fuseAy{303}%
970 \gdef\fuseBx{171}\gdef\fuseBy{103}%
971 \global\@sixfuseposvtrue
972 \fi
973 \fi%

974 \if\memBer a\relax
975 \if@sixfuseposv
976 \XyMTeXWarning{Double fused bonds at bond `a'}%
977 \else
978 \gdef\fuseBx{171}\gdef\fuseBy{103}%
979 \gdef\fuseAx{0}\gdef\fuseAy{0}%
980 \global\@sixfuseposvtrue
981 \fi
982 \fi%
983 \if\memBer A\relax
984 \if@sixfuseposv
985 \XyMTeXWarning{Double fused bonds at bond `A'}%
986 \else
987 \gdef\fuseAx{171}\gdef\fuseAy{103}%
988 \gdef\fuseBx{0}\gdef\fuseBy{0}%
989 \global\@sixfuseposvtrue
990 \fi
991 \fi%
992 \if\memBer e\relax
993 \if@sixfuseposv
994 \XyMTeXWarning{Double fused bonds at bond `f'}%
995 \else
996 \gdef\fuseBx{0}\gdef\fuseBy{0}%
997 \gdef\fuseAx{-171}\gdef\fuseAy{103}%
998 \global\@sixfuseposvtrue
999 \fi
1000 \fi%
1001 \if\memBer E\relax
1002 \if@sixfuseposv
1003 \XyMTeXWarning{Double fused bonds at bond `F'}%
1004 \else
1005 \gdef\fuseAx{0}\gdef\fuseAy{0}%
1006 \gdef\fuseBx{-171}\gdef\fuseBy{103}%
1007 \global\@sixfuseposvtrue

1008 \fi

1009 \fi%
1010 \if\memBer d\relax
1011 \if@sixfuseposv
1012 \XyMTeXWarning{Double fused bonds at bond `e'}%
1013 \else
1014 \gdef\fuseBx{-171}\gdef\fuseBy{103}%
1015 \gdef\fuseAx{-171}\gdef\fuseAy{303}%
1016 \global\@sixfuseposvtrue

1017 \fi

1018 \fi%
1019 \if\memBer D\relax
1020 \if@sixfuseposv
1021 \XyMTeXWarning{Double fused bonds at bond `E'}%
1022 \else
1023 \gdef\fuseAx{-171}\gdef\fuseAy{103}%

1024 \gdef\fuseBx{-171}\gdef\fuseBy{303}%
1025 \global\@sixfuseposvtrue

1026 \fi

1027 \fi%
1028 }}}% end of the macro \fivefuseposv

5.2 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.

 ************************************
 * five-membered fusing unit        *
 *  (vertical type, inverse type)   *
 ************************************
          1
          *
     6  *   *  2
       |     |
       |_____|
     4         3
          *
        (0,0) <===== the original point

   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.

   \fivefusevi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[OMIT]

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.

     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)

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.

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

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.

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

The argument FUSE represents one bond to be omitted. The omitted edge is regarded as a fused position.

FUSE:  one bond omitted (a, b, c, d, or e)

       OMIT:  one or more bonds omitted (a, b, c, d, or e)

Several examples are shown as follows.

         e.g.
          \fivefusevi{1==N}{1==H;2==F}{a}

\fivefusevi
\@five@fusevi
\@five@@fusevi
\@fivefusevi

1029 \def\fivefusevi{\@ifnextchar({\@five@fusevi(@}{\@five@fusevi(@)}}
1030 \def\@five@fusevi(#1){\@ifnextchar[{\@five@@fusevi(#1)[@}%
1031 {\@five@@fusevi(#1)[@]}}
1032 \def\@five@@fusevi(#1)[#2]#3#4#5{\@ifnextchar[%
1033 {\@fivefusevi(#1)[#2]{#3}{#4}{#5}[@}%
1034 {\@fivefusevi(#1)[#2]{#3}{#4}{#5}[@]}}
1035 \def\@fivefusevi(#1)[#2]#3#4#5[#6]{%
1036 \iniatom\iniflag%initialize
1037 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1038 % % treatment of atom list %
1039 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1040 \test@vertix@sixv{#3}{a}{b}{c}{e}{f}{@}%
1041 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1042 % % adjustment of attached positions %
1043 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1044 \fivefuseposvi{#5}%
1045 \if@sixfuseposv
1046 \yl@shiftii=-\fuseAx
1047 \yl@shifti=-\fuseAy
1048 \advance\yl@shiftii\yl@xdiff
1049 \advance\yl@shifti\yl@ydiff
1050 \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
1051 \reset@yl@xydiff%1999/1/6 by S. Fujita
1052 \else
1053 \begin{picture}(800,880)(-\shiftii,-\shifti)%
1054 \iforigpt \put(-\shiftii,-\shifti){\circle*{50}}%
1055  \put(-\noshift,-\noshift){\circle{50}}%
1056 \typeout{command `fivefusevi' origin: %
1057  (\the\noshift,\the\noshift) ---> (\the\shiftii,\the\shifti)}\fi%

1058 \fi

1059 % %%%%%%%%%%%%%%%%%%
1060 % % outer skeleton %
1061 % %%%%%%%%%%%%%%%%%%
1062 % changed FUSE to a list 1993/11/21 by Shinsaku Fujita
1063 {\resetbdsw%

1064 \@bond@fuse@omit{#5}{#6}%
1065 \set@skel@bond{#1}{a}{a}% bond between 1 and 2 \@aaa -> \skbonda etc
1066 \set@skel@bond{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc
1067 \set@skel@longbond{#1}{c}{skbondhorizi}%
1068  % bond between 3 and 4 \@ccc -> \skbondhorizi etc
1069 \set@skel@bond{#1}{d}{e}% bond between 4 and 5 \@ddd -> \skbonde etc
1070 \set@skel@bond{#1}{e}{f}% bond between 5 and 6 \@eee -> \skbondf etc

1071 }%

1072 % %%%%%%%%%%%%%%%%%%%%%
1073 % % inner double bond %
1074 % %%%%%%%%%%%%%%%%%%%%%
1075 \@tfor\member:=#2\do{%
1076 \if\member r%
1077 \else\if\member a\relax%
1078 \bonda%
1079 \else\if\member b\relax%
1080 \bondb%
1081 \else\if\member c\relax%
1082 \bondhorizi%
1083 \else\if\member d\relax%
1084 \bonde%
1085 \else\if\member e\relax%
1086 \bondf%
1087 \else
1088 % %%%%%%%%%%%%%%%%%%%%%%%%%
1089 % % inner bond attachment %
1090 % %%%%%%%%%%%%%%%%%%%%%%%%%
1091  \expandafter\twoCH@@R\member//%
1092  \set@fusionadd@fivevi
1093 \fi\fi\fi\fi\fi\fi}%
1094 % %%%%%%%%%%%%%%%%%%%%%%%
1095 % % setting heteroatoms %
1096 % %%%%%%%%%%%%%%%%%%%%%%%
1097 \set@hetatom@sixv{#3}{0}{0}{4}{0}%  % for 1 to 3
1098 \set@hetatom@sixv{#3}{1}{4}{7}{0}%  % for 4 to 5
1099 % %%%%%%%%%%%%%%%%%%%%%%%%
1100 % % setting substituents %
1101 % %%%%%%%%%%%%%%%%%%%%%%%%
1102 \setsixringv{#4}{0}{0}{4}{0}%  % for 1 to 3
1103 \setsixringv{#4}{1}{4}{7}{0}%  % for 4 to 5
1104 \end{picture}%
1105 {\let\XyMTeXWarning\@gobble
1106 \fivefuseposvi{#5}}%%for FuseWaring when nested
1107 \iniatom\iniflag}%               %end of \fivefusevi 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.

\fivefuseposvi
1108 \def\fivefuseposvi#1{%
1109 \global\@sixfuseposvfalse
1110 {\resetbdsw%
1111 \@tfor\memBer:=#1\do{%
1112 \if\memBer a\relax
1113 \if@sixfuseposv
1114 \XyMTeXWarning{Double fused bond at bond `a'}%
1115 \else
1116 \gdef\fuseAx{0}\gdef\fuseAy{406}%
1117 \gdef\fuseBx{171}\gdef\fuseBy{303}%
1118 \global\@sixfuseposvtrue

1119 \fi

1120 \fi%
1121 \if\memBer A\relax
1122 \if@sixfuseposv
1123 \XyMTeXWarning{Double fused bond at bond `A'}%
1124 \else
1125 \gdef\fuseBx{0}\gdef\fuseBy{406}%
1126 \gdef\fuseAx{171}\gdef\fuseAy{303}%
1127 \global\@sixfuseposvtrue

1128 \fi

1129 \fi%
1130 \if\memBer b\relax
1131 \if@sixfuseposv
1132 \XyMTeXWarning{Double fused bond at bond `b'}%
1133 \else
1134 \gdef\fuseAx{171}\gdef\fuseAy{303}%
1135 \gdef\fuseBx{171}\gdef\fuseBy{103}%
1136 \global\@sixfuseposvtrue

1137 \fi

1138 \fi%
1139 \if\memBer B\relax
1140 \if@sixfuseposv
1141 \XyMTeXWarning{Double fused bonds at bond `B'}%
1142 \else
1143 \gdef\fuseBx{171}\gdef\fuseBy{303}%
1144 \gdef\fuseAx{171}\gdef\fuseAy{103}%
1145 \global\@sixfuseposvtrue

1146 \fi

1147 \fi%
1148 \if\memBer c\relax
1149  \XyMTeXWarning{Not-used fusion at bond `c'}%

1150 \fi

1151 \if\memBer C\relax
1152  \XyMTeXWarning{Not-used fusion at bond `C'}%

1153 \fi

1154 \if\memBer d\relax
1155 \if@sixfuseposv

1156 \XyMTeXWarning{Double fused bonds at bond `d'}%
1157 \else
1158 \gdef\fuseAx{-171}\gdef\fuseAy{103}%
1159 \gdef\fuseBx{-171}\gdef\fuseBy{303}%
1160 \global\@sixfuseposvtrue

1161 \fi

1162 \fi%
1163 \if\memBer D\relax
1164 \if@sixfuseposv
1165 \XyMTeXWarning{Double fused bonds at bond `D'}%
1166 \else
1167 \gdef\fuseBx{-171}\gdef\fuseBy{103}%
1168 \gdef\fuseAx{-171}\gdef\fuseAy{303}%
1169 \global\@sixfuseposvtrue

1170 \fi

1171 \fi%
1172 \if\memBer e\relax
1173 \if@sixfuseposv
1174 \XyMTeXWarning{Double fused bonds at bond `e'}%
1175 \else
1176 \gdef\fuseAx{-171}\gdef\fuseAy{303}%
1177 \gdef\fuseBx{0}\gdef\fuseBy{406}%
1178 \global\@sixfuseposvtrue

1179 \fi

1180 \fi%
1181 \if\memBer E\relax
1182 \if@sixfuseposv
1183 \XyMTeXWarning{Double fused bonds at bond `e'}%
1184 \else
1185 \gdef\fuseBx{-171}\gdef\fuseBy{303}%
1186 \gdef\fuseAx{0}\gdef\fuseAy{406}%
1187 \global\@sixfuseposvtrue

1188 \fi

1189 \fi}}}% end of the macro \fivefuseposvi

5.3 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.

   **********************
   * five-membered unit *
   *  (horizontal type) *
   **********************
       3  _____2
         |       *
         |         * 1 <===== the original point
         |       *

     4  -----  5

   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.

   \fivefuseh(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[OMIT]

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.

     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

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.

     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

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.

     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

The argument FUSE represents one bond to be omitted. The omitted edge is regarded as a fused position.

FUSE:  one bond omitted (a, b, c, d, or e)

The argument OMIT represents one or more bonds to be omitted. The omitted edges are regarded as non-fused positions.

OMIT:  one or more bonds omitted (a, b, c, d, or e)

Several examples are shown as follows.

e.g.
\fivefuseh{1==N}{1==H;2==F}{a}

\fivefuseh
\@five@fuseh
\@five@@fuseh
\@fivefuseh

1190 \def\fivefuseh{\@ifnextchar({\@five@fuseh(@}{\@five@fuseh(@)}}
1191 \def\@five@fuseh(#1){\@ifnextchar[{\@five@@fuseh(#1)[@}%
1192 {\@five@@fuseh(#1)[@]}}
1193 \def\@five@@fuseh(#1)[#2]#3#4#5{\@ifnextchar[%

1194 {\@fivefuseh(#1)[#2]{#3}{#4}{#5}[@}%
1195 {\@fivefuseh(#1)[#2]{#3}{#4}{#5}[@]}}
1196 \def\@fivefuseh(#1)[#2]#3#4#5[#6]{%
1197 \iniatom\iniflag%initialize
1198 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1199 % % treatment of atom list %
1200 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1201 \test@vertix@sixv{#3}{d}{c}{b}{f}{e}{@}%
1202 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1203 % % adjustment of attached positions %
1204 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1205 \fivefuseposh{#5}%
1206 \if@sixfuseposv
1207 \yl@shiftii=-\fuseAx
1208 \yl@shifti=-\fuseAy
1209 \advance\yl@shiftii\yl@xdiff
1210 \advance\yl@shifti\yl@ydiff
1211 \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
1212 \reset@yl@xydiff%1999/1/6 by S. Fujita
1213 \else
1214 \begin{picture}(800,880)(-240,-400)%
1215 \iforigpt \put(-\shifti,-\shiftii){\circle*{50}}%
1216  \put(-\noshift,-\noshift){\circle{50}}%
1217 \typeout{command `fivefuseh' origin: %
1218  (\the\noshift,\the\noshift) ---> (\the\shifti,\the\shiftii)}\fi%

1219 \fi

1220 % %%%%%%%%%%%%%%%%%%
1221 % % outer skeleton %
1222 % %%%%%%%%%%%%%%%%%%
1223 % changed FUSE to a list 1993/11/21 by Shinsaku Fujita
1224 {\resetbdsw%
1225 \@bond@fuse@omit{#5}{#6}%
1226 \set@skel@bondh{#1}{a}{c}% bond between 1 and 2 \@aaa -> \skbondc etc
1227 \set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc
1228 \set@skel@longbond{#1}{c}{hskbondvert}%
1229  % bond between 3 and 4 \@ccc -> \hskbondvert etc
1230 \set@skel@bondh{#1}{d}{e}% bond between 4 and 5 \@ddd -> \skbonde etc
1231 \set@skel@bondh{#1}{e}{d}% bond between 5 and 6 \@eee -> \skbondd etc

1232 }%

1233 % %%%%%%%%%%%%%%%%%%%%%
1234 % % inner double bond %
1235 % %%%%%%%%%%%%%%%%%%%%%
1236 \@tfor\member:=#2\do{%
1237 \if\member r%
1238 \else \if\member a\relax%
1239 \hbondc%
1240 \else \if\member b\relax%
1241 \hbondb%
1242 \else \if\member c\relax%

1243 \hbondvert%
1244 \else \if\member d\relax%
1245 \hbonde%
1246 \else \if\member e\relax%
1247 \hbondd%
1248 \else \if\member A%left aromatic circle
1249 \put(233,0){\circle{180}}%               %circle
1250 \else
1251 % %%%%%%%%%%%%%%%%%%%%%%%%%
1252 % % inner bond attachment %
1253 % %%%%%%%%%%%%%%%%%%%%%%%%%
1254  \expandafter\twoCH@@R\member//%
1255  \set@fusionadd@fiveh
1256 \fi\fi\fi\fi\fi\fi\fi}%
1257 % %%%%%%%%%%%%%%%%%%%%%%%
1258 % % setting heteroatoms %
1259 % %%%%%%%%%%%%%%%%%%%%%%%
1260 \set@hetatom@sixh{#3}{5}{1}{5}{-1}%   % for 1 to 3
1261 \set@hetatom@sixh{#3}{10}{4}{7}{-1}%  % for 4 to 5
1262 % %%%%%%%%%%%%%%%%%%%%%%%%
1263 % % setting substituents %
1264 % %%%%%%%%%%%%%%%%%%%%%%%%
1265 \setsixringh{#4}{5}{1}{5}{-1}%   % for 1 to 3
1266 \setsixringh{#4}{10}{4}{7}{-1}%  % for 4 to 5
1267 \end{picture}%
1268 {\let\XyMTeXWarning\@gobble
1269 \fivefuseposh{#5}}%for FuseWaring when nested%
1270 \iniatom\iniflag}%  %end of \fivefuseh 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.

\fivefuseposh
1271 \def\fivefuseposh#1{%
1272 \global\@sixfuseposvfalse
1273 {\resetbdsw%
1274 \@tfor\memBer:=#1\do{%
1275 \if\memBer c\relax
1276  \XyMTeXWarning{Not-used fusion at bond `c'}%

1277 \fi

1278 \if\memBer C\relax
1279  \XyMTeXWarning{Not-used fusion at bond `C'}%

1280 \fi

1281 \if\memBer B\relax
1282 \if@sixfuseposv
1283 \XyMTeXWarning{Double fused bond at bond `B'}%
1284 \else

1285 \gdef\fuseAx{103}\gdef\fuseAy{171}%
1286 \gdef\fuseBx{303}\gdef\fuseBy{171}%
1287 \global\@sixfuseposvtrue

1288 \fi

1289 \fi%
1290 \if\memBer b\relax
1291 \if@sixfuseposv
1292 \XyMTeXWarning{Double fused bonds at bond `b'}%
1293 \else
1294 \gdef\fuseBx{103}\gdef\fuseBy{171}%
1295 \gdef\fuseAx{303}\gdef\fuseAy{171}%
1296 \global\@sixfuseposvtrue

1297 \fi

1298 \fi%
1299 \if\memBer A\relax
1300 \if@sixfuseposv
1301 \XyMTeXWarning{Double fused bonds at bond `A'}%
1302 \else
1303 \gdef\fuseAx{303}\gdef\fuseAy{171}%
1304 \gdef\fuseBx{406}\gdef\fuseBy{0}%
1305 \global\@sixfuseposvtrue

1306 \fi

1307 \fi%
1308 \if\memBer a\relax
1309 \if@sixfuseposv
1310 \XyMTeXWarning{Double fused bonds at bond `a'}%
1311 \else
1312 \gdef\fuseBx{303}\gdef\fuseBy{171}%
1313 \gdef\fuseAx{406}\gdef\fuseAy{0}%
1314 \global\@sixfuseposvtrue

1315 \fi

1316 \fi%
1317 \if\memBer E\relax
1318 \if@sixfuseposv
1319 \XyMTeXWarning{Double fused bonds at bond `E'}%
1320 \else
1321 \gdef\fuseAx{406}\gdef\fuseAy{0}%
1322 \gdef\fuseBx{303}\gdef\fuseBy{-171}%
1323 \global\@sixfuseposvtrue

1324 \fi

1325 \fi%
1326 \if\memBer e\relax
1327 \if@sixfuseposv
1328 \XyMTeXWarning{Double fused bonds at bond `e'}%
1329 \else
1330 \gdef\fuseBx{406}\gdef\fuseBy{0}%
1331 \gdef\fuseAx{303}\gdef\fuseAy{-171}%
1332 \global\@sixfuseposvtrue

1333 \fi

1334 \fi%

1335 \if\memBer D\relax
1336 \if@sixfuseposv
1337 \XyMTeXWarning{Double fused bonds at bond `D'}%
1338 \else
1339 \gdef\fuseAx{303}\gdef\fuseAy{-171}%
1340 \gdef\fuseBx{103}\gdef\fuseBy{-171}%
1341 \global\@sixfuseposvtrue

1342 \fi

1343 \fi%
1344 \if\memBer d\relax
1345 \if@sixfuseposv
1346 \XyMTeXWarning{Double fused bonds at bond `d'}%
1347 \else
1348 \gdef\fuseBx{303}\gdef\fuseBy{-171}%
1349 \gdef\fuseAx{103}\gdef\fuseAy{-171}%
1350 \global\@sixfuseposvtrue

1351 \fi

1352 \fi%
1353 }}}% end of the macro \fivefuseposh

5.4 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.

   ************************************
   * five-membered fusing unit        *
   *  (horizontal type, inverse type) *
   ************************************
                         2  -----  3
                          *       |
   the original point 1 *         |
                          *       |
                             _____|
                          5        4

    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.

     \fivefusehi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[OMIT]

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.

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

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.

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

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.

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

The argument FUSE represents one bond to be omitted. The omitted edge is regarded as a fused position.

       FUSE:  one bond omitted (a, b, c, d, or e)

The argument OMIT represents one or more bonds to be omitted. The omitted edges are regarded as non-fused positions.

       OMIT:  one or more bonds omitted (a, b, c, d, e, or f)

Several examples are shown as follows.

         e.g.
          \fivefusehi{1==N}{1==H;2==F}{a}

\fivefusehi
\@five@fusehi
\@five@@fusehi
\@fivefusehi

1354 \def\fivefusehi{\@ifnextchar({\@five@fusehi(@}{\@five@fusehi(@)}}
1355 \def\@five@fusehi(#1){\@ifnextchar[{\@five@@fusehi(#1)[@}%
1356 {\@five@@fusehi(#1)[@]}}
1357 \def\@five@@fusehi(#1)[#2]#3#4#5{\@ifnextchar[%
1358 {\@fivefusehi(#1)[#2]{#3}{#4}{#5}[@}%
1359 {\@fivefusehi(#1)[#2]{#3}{#4}{#5}[@]}}
1360 \def\@fivefusehi(#1)[#2]#3#4#5[#6]{%
1361 \iniatom\iniflag%initialize
1362 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1363 % % treatment of atom list %
1364 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1365 \test@vertix@sixv{#3}{a}{b}{c}{e}{f}{@}%
1366 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1367 % % adjustment of attached positions %
1368 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1369 \fivefuseposhi{#5}%
1370 \if@sixfuseposv
1371 \yl@shiftii=-\fuseAx

1372 \yl@shifti=-\fuseAy
1373 \advance\yl@shiftii\yl@xdiff
1374 \advance\yl@shifti\yl@ydiff
1375 \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
1376 \reset@yl@xydiff%1999/1/6 by S. Fujita
1377 \else
1378 \begin{picture}(800,880)(-240,-400)%
1379 \iforigpt \put(-\shifti,-\shiftii){\circle*{50}}%
1380  \put(-\noshift,-\noshift){\circle{50}}%
1381 \typeout{command `fivefusehi' origin: %
1382  (\the\noshift,\the\noshift) ---> (\the\shifti,\the\shiftii)}\fi%

1383 \fi

1384 % %%%%%%%%%%%%%%%%%%
1385 % % outer skeleton %
1386 % %%%%%%%%%%%%%%%%%%
1387 % changed FUSE to a list 1993/11/21 by Shinsaku Fujita
1388 {\resetbdsw%
1389 \@bond@fuse@omit{#5}{#6}%
1390 \set@skel@bondh{#1}{a}{a}% bond between 1 and 2 \@aaa -> \hskbonda etc
1391 \set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc
1392 \set@skel@longbond{#1}{c}{hskbondverti}%
1393  % bond between 3 and 4 \@ccc -> \hskbondverti etc
1394 \set@skel@bondh{#1}{d}{e}% bond between 4 and 5 \@ddd -> \hskbonde etc
1395 \set@skel@bondh{#1}{e}{f}% bond between 5 and 6 \@eee -> \hskbondf etc

1396 }%

1397 % %%%%%%%%%%%%%%%%%%%%%
1398 % % inner double bond %
1399 % %%%%%%%%%%%%%%%%%%%%%
1400 \@tfor\member:=#2\do{%
1401 \if\member r%
1402 \else \if\member a\relax%
1403 \hbonda%
1404 \else \if\member b\relax%
1405 \hbondb%
1406 \else \if\member c\relax%
1407 \hbondverti%
1408 \else \if\member d\relax%
1409 \hbonde%
1410 \else \if\member e\relax%
1411 \hbondf%
1412 \else \if\member A%left aromatic circle
1413 \put(173,0){\circle{180}}%                %circle
1414 \else
1415 % %%%%%%%%%%%%%%%%%%%%%%%%%
1416 % % inner bond attachment %
1417 % %%%%%%%%%%%%%%%%%%%%%%%%%
1418  \expandafter\twoCH@@R\member//%
1419  \set@fusionadd@fivehi
1420 \fi\fi\fi\fi\fi\fi\fi}%

1421 % %%%%%%%%%%%%%%%%%%%%%%%
1422 % % setting heteroatoms %
1423 % %%%%%%%%%%%%%%%%%%%%%%%
1424 \set@hetatom@sixh{#3}{0}{0}{4}{0}%  % for 1 to 3
1425 \set@hetatom@sixh{#3}{1}{4}{7}{0}%  % for 4 to 5
1426 % %%%%%%%%%%%%%%%%%%%%%%%%
1427 % % setting substituents %
1428 % %%%%%%%%%%%%%%%%%%%%%%%%
1429 \setsixringh{#4}{0}{0}{4}{0}%  % for 1 to 3
1430 \setsixringh{#4}{1}{4}{7}{0}%  % for 4 to 5
1431 \end{picture}%
1432 {\let\XyMTeXWarning\@gobble
1433 \fivefuseposhi{#5}}%for FuseWaring when nested
1434 \iniatom\iniflag}%      %end of \fivefusehi 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.

\fivefuseposhi
1435 \def\fivefuseposhi#1{%
1436 \global\@sixfuseposvfalse
1437 {\resetbdsw%
1438 \@tfor\memBer:=#1\do{%
1439 \if\memBer a\relax
1440 \if@sixfuseposv
1441 \XyMTeXWarning{Double fused bond at bond `a'}%
1442 \else
1443 \gdef\fuseAx{0}\gdef\fuseAy{0}%
1444 \gdef\fuseBx{103}\gdef\fuseBy{171}%
1445 \global\@sixfuseposvtrue

1446 \fi

1447 \fi%
1448 \if\memBer A\relax
1449 \if@sixfuseposv
1450 \XyMTeXWarning{Double fused bond at bond `A'}%
1451 \else
1452 \gdef\fuseBx{0}\gdef\fuseBy{0}%
1453 \gdef\fuseAx{103}\gdef\fuseAy{171}%
1454 \global\@sixfuseposvtrue

1455 \fi

1456 \fi%
1457 \if\memBer b\relax
1458 \if@sixfuseposv
1459 \XyMTeXWarning{Double fused bond at bond `b'}%
1460 \else
1461 \gdef\fuseAx{103}\gdef\fuseAy{171}%
1462 \gdef\fuseBx{303}\gdef\fuseBy{171}%

1463 \global\@sixfuseposvtrue

1464 \fi

1465 \fi%
1466 \if\memBer B\relax
1467 \if@sixfuseposv
1468 \XyMTeXWarning{Double fused bonds at bond `B'}%
1469 \else
1470 \gdef\fuseBx{103}\gdef\fuseBy{171}%
1471 \gdef\fuseAx{303}\gdef\fuseAy{171}%
1472 \global\@sixfuseposvtrue

1473 \fi

1474 \fi%
1475 \if\memBer c\relax
1476  \XyMTeXWarning{Not-used fusion at bond `c'}%

1477 \fi

1478 \if\memBer C\relax
1479  \XyMTeXWarning{Not-used fusion at bond `C'}%

1480 \fi

1481 \if\memBer d\relax
1482 \if@sixfuseposv
1483 \XyMTeXWarning{Double fused bonds at bond `d'}%
1484 \else
1485 \gdef\fuseAx{303}\gdef\fuseAy{-171}%
1486 \gdef\fuseBx{103}\gdef\fuseBy{-171}%
1487 \global\@sixfuseposvtrue

1488 \fi

1489 \fi%
1490 \if\memBer D\relax
1491 \if@sixfuseposv
1492 \XyMTeXWarning{Double fused bonds at bond `D'}%
1493 \else
1494 \gdef\fuseBx{303}\gdef\fuseBy{-171}%
1495 \gdef\fuseAx{103}\gdef\fuseAy{-171}%
1496 \global\@sixfuseposvtrue

1497 \fi

1498 \fi%
1499 \if\memBer e\relax
1500 \if@sixfuseposv
1501 \XyMTeXWarning{Double fused bonds at bond `e'}%
1502 \else
1503 \gdef\fuseAx{103}\gdef\fuseAy{-171}%
1504 \gdef\fuseBx{0}\gdef\fuseBy{0}%
1505 \global\@sixfuseposvtrue

1506 \fi

1507 \fi%
1508 \if\memBer E\relax
1509 \if@sixfuseposv
1510 \XyMTeXWarning{Double fused bonds at bond `E'}%
1511 \else
1512 \gdef\fuseBx{103}\gdef\fuseBy{-171}%

1513 \gdef\fuseAx{0}\gdef\fuseAy{0}%
1514 \global\@sixfuseposvtrue

1515 \fi

1516 \fi}}}% end of the macro \fivefuseposhi

6 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.

 **************************
 * fourfuse derivatives   *
 *  (vertical type)       *
 **************************
 The following numbering is adopted in this macro.
          c
     4  _____3
    d  |     |  b
       |     |
     1  -----  2<===== the original point
          a

   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.

   \fourfuse(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[OMIT]

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.

     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)

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.

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

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.

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

The argument FUSE represents one bond to be omitted. The omitted edge is regarded as a fused position.

FUSE:  one bond omitted (a, b, c, or d)

       OMIT:  one or more bonds omitted (a, b, c, or d)

Several examples are shown as follows.

         e.g.
          \fourfuse{1==N}{1==H;2==F}{c}
          \fourfuse[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}{a}

\fourfuse
\@four@fuse
\@four@@fuse
\@fourfuse

1517 \def\fourfuse{\@ifnextchar({\@four@fuse(@}{\@four@fuse(@)}}
1518 \def\@four@fuse(#1){\@ifnextchar[{\@four@@fuse(#1)[@}%
1519 {\@four@@fuse(#1)[@]}}
1520 \def\@four@@fuse(#1)[#2]#3#4#5{\@ifnextchar[%
1521 {\@fourfuse(#1)[#2]{#3}{#4}{#5}[@}%
1522 {\@fourfuse(#1)[#2]{#3}{#4}{#5}[@]}}
1523 \def\@fourfuse(#1)[#2]#3#4#5[#6]{%
1524 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1525 % % treatment of atom list %
1526 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1527 \iniatom\iniflag%initialize
1528 \test@vertix@sixv{#3}{e}{c}{b}{f}{@}{@}%
1529 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1530 % % adustment of subs positions %
1531 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1532 \fourfusepos{#5}%
1533 \if@sixfuseposv
1534 \yl@shiftii=-\fuseAx
1535 \yl@shifti=-\fuseAy
1536 \advance\yl@shiftii\yl@xdiff
1537 \advance\yl@shifti\yl@ydiff
1538 \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
1539 \reset@yl@xydiff%1999/1/6 by S. Fujita
1540 \else
1541 \begin{picture}(800,880)(-571,-137)%
1542 \iforigpt\put(-571,-137){\circle*{50}}%
1543  \put(-171,103){\circle{50}}%
1544 \typeout{command `fourfuse' origin: %
1545  (\the\noshift,\the\noshift) ---> (\the\shiftii,\the\shifti)}\fi%

1546 \fi

1547 % %%%%%%%%%%%%%%%%%%
1548 % % outer skeleton %
1549 % %%%%%%%%%%%%%%%%%%
1550 {\resetbdsw%

1551 \@bond@fuse@omit{#5}{#6}%
1552 \put(0,0){\set@skel@longbond{#1}{a}{skbondshorizi}}%
1553  % bond between 1 and 2 \@aaa -> \skbondshorizi etc
1554 \put(-142,0){\set@skel@bond{#1}{b}{b}}%
1555  % bond between 2 and 3 \@bbb -> \skbondb etc
1556 \put(0,0){\set@skel@longbond{#1}{c}{skbondshoriz}}%
1557  % bond between 3 and 4 \@ccc -> \skbondshoriz etc
1558 \put(0,0){\set@skel@bond{#1}{d}{e}}%
1559  % bond between 4 and 1 \@ddd -> \skbonde etc

1560 }%

1561 % %%%%%%%%%%%%%%%%%%%%%
1562 % % inner double bond %
1563 % %%%%%%%%%%%%%%%%%%%%%
1564 \@tfor\member:=#2\do{%
1565 \if\member r%
1566 \else\if\member a\relax \put(0,0){\bondshorizi}%
1567 \else\if\member b\relax \put(-142,0){\bondb}%
1568 \else\if\member c\relax \put(0,0){\bondshoriz}%
1569 \else\if\member d\relax \put(0,0){\bonde}%
1570 \else
1571 % %%%%%%%%%%%%%%%%%%%%%%%%%
1572 % % inner bond attachment %
1573 % %%%%%%%%%%%%%%%%%%%%%%%%%
1574 \expandafter\twoCH@@R\member//%
1575  \set@fusionadd@fourv
1576 \fi\fi\fi\fi\fi}%
1577 % %%%%%%%%%%%%%%%%%%%%%%%
1578 % % setting heteroatoms %
1579 % %%%%%%%%%%%%%%%%%%%%%%%
1580 \put(-142,0){\set@hetatom@sixv{#3}{5}{1}{4}{-1}}% for 2 to 3
1581 \put(0,0){\set@hetatom@sixv{#3}{4}{4}{6}{0}}% for 1
1582 \put(0,0){\set@hetatom@sixv{#3}{2}{5}{7}{0}}% for 4
1583 % %%%%%%%%%%%%%%%%%%%%%%%%
1584 % % setting substituents %
1585 % %%%%%%%%%%%%%%%%%%%%%%%%
1586 \put(-142,0){\setsixringv{#4}{5}{1}{4}{-1}}% for 2 to 3
1587 \put(0,0){\setsixringv{#4}{4}{4}{6}{0}}% for 1
1588 \put(0,0){\setsixringv{#4}{2}{5}{7}{0}}% for 4
1589 \end{picture}%
1590 \fourfusepos{#5}%%for FuseWaring when nested
1591 \iniatom\iniflag
1592 \global\@smallringswtrue%for permition at a center bond
1593 }%     %end of \fourfuse 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.

\fourfusepos
1594 \def\fourfusepos#1{%
1595 \global\@sixfuseposvfalse
1596 {\resetbdsw%
1597 \@tfor\memBer:=#1\do{%
1598 \if\memBer a\relax
1599 \if@sixfuseposv
1600 \XyMTeXWarning{Double fused bond at bond `a'}%
1601 \else
1602 \gdef\fuseAx{-171}\gdef\fuseAy{103}%
1603 \gdef\fuseBx{29}\gdef\fuseBy{103}%
1604 \global\@sixfuseposvtrue

1605 \fi

1606 \fi%
1607 \if\memBer A\relax
1608 \if@sixfuseposv
1609 \XyMTeXWarning{Double fused bond at bond `A'}%
1610 \else
1611 \gdef\fuseBx{-171}\gdef\fuseBy{103}%
1612 \gdef\fuseAx{29}\gdef\fuseAy{103}%
1613 \global\@sixfuseposvtrue

1614 \fi

1615 \fi%
1616 \if\memBer b\relax
1617 \if@sixfuseposv
1618 \XyMTeXWarning{Double fused bond at bond `b'}%
1619 \else
1620 \gdef\fuseAx{29}\gdef\fuseAy{103}%
1621 \gdef\fuseBx{29}\gdef\fuseBy{303}%
1622 \global\@sixfuseposvtrue

1623 \fi

1624 \fi%
1625 \if\memBer B\relax
1626 \if@sixfuseposv
1627 \XyMTeXWarning{Double fused bonds at bond `B'}%
1628 \else
1629 \gdef\fuseBx{29}\gdef\fuseBy{103}%
1630 \gdef\fuseAx{29}\gdef\fuseAy{303}%
1631 \global\@sixfuseposvtrue

1632 \fi

1633 \fi%
1634 \if\memBer c\relax
1635 \if@sixfuseposv
1636 \XyMTeXWarning{Double fused bonds at bond `c'}%
1637 \else
1638 \gdef\fuseAx{29}\gdef\fuseAy{303}%
1639 \gdef\fuseBx{-171}\gdef\fuseBy{303}%
1640 \global\@sixfuseposvtrue

1641 \fi

1642 \fi%
1643 \if\memBer C\relax
1644 \if@sixfuseposv
1645 \XyMTeXWarning{Double fused bonds at bond `C'}%
1646 \else
1647 \gdef\fuseBx{29}\gdef\fuseBy{303}%
1648 \gdef\fuseAx{-171}\gdef\fuseAy{303}%
1649 \global\@sixfuseposvtrue

1650 \fi

1651 \fi%
1652 \if\memBer d\relax
1653 \if@sixfuseposv
1654 \XyMTeXWarning{Double fused bonds at bond `d'}%
1655 \else
1656 \gdef\fuseAx{-171}\gdef\fuseAy{303}%
1657 \gdef\fuseBx{-171}\gdef\fuseBy{103}%
1658 \global\@sixfuseposvtrue

1659 \fi

1660 \fi%
1661 \if\memBer D\relax
1662 \if@sixfuseposv
1663 \XyMTeXWarning{Double fused bonds at bond `D'}%
1664 \else
1665 \gdef\fuseBx{-171}\gdef\fuseBy{303}%
1666 \gdef\fuseAx{-171}\gdef\fuseAy{103}%
1667 \global\@sixfuseposvtrue

1668 \fi

1669 \fi%
1670 }}}% end of the macro \fourfusepos

7 Three-membered fusing unit

7.1 Vertical type

The macro \threefusev typesets a three-membered ring to be fused. The following numbering is adopted in this macro.

   **********************
   * theree fusing unit *
   *  (vertical type)   *
   **********************
           b
       3--------2
      c `     / a
          `1/ <===== the original point

    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.

   \threefusev(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[OMIT]

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.

     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

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.

     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

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.

     SUBSLIST: list of substituents

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

The argument FUSE represents one bond to be omitted. The omitted edge is regarded as a fused position.

FUSE:  one bond omitted (a, b, or c)

The argument OMIT represents one or more bonds to be omitted. The omitted edges are regarded as non-fused positions.

OMIT:  one or more bonds omitted (a, b, or c)

Several examples are shown as follows.

e.g.
\threefusev{1==N}{1==Cl;2==F}{b}

\threefusev
\@three@fusev
\@three@@fusev
\@threefusev

1671 \def\threefusev{\@ifnextchar({\@three@fusev(@}{\@three@fusev(@)}}
1672 \def\@three@fusev(#1){\@ifnextchar[{\@three@@fusev(#1)[@}%
1673 {\@three@@fusev(#1)[@]}}
1674 \def\@three@@fusev(#1)[#2]#3#4#5{\@ifnextchar[%
1675 {\@threefusev(#1)[#2]{#3}{#4}{#5}[@}%
1676 {\@threefusev(#1)[#2]{#3}{#4}{#5}[@]}}
1677 \def\@threefusev(#1)[#2]#3#4#5[#6]{%

1678 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1679 % % treatment of atom list %
1680 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1681 \iniatom\iniflag%initialize
1682 \test@vertix@sixv{#3}{d}{b}{f}{@}{@}{@}%
1683 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1684 % % adustment of subs positions %
1685 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1686 \threefuseposv{#5}%
1687 \if@sixfuseposv
1688 \yl@shiftii=-\fuseAx
1689 \yl@shifti=-\fuseAy
1690 \advance\yl@shiftii\yl@xdiff
1691 \advance\yl@shifti\yl@ydiff
1692 \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
1693 \reset@yl@xydiff%1999/1/6 by S. Fujita
1694 \else
1695 \begin{picture}(800,580)(-468,-240)%
1696 \iforigpt \put(-468,-240){\circle*{50}}%
1697  \put(-68,0){\circle{50}}%
1698 \typeout{command `threefusevv' origin: %
1699  (68,0) ---> (468,240)}\fi%

1700 \fi

1701 % %%%%%%%%%%%%%%%%%%
1702 % % outer skeleton %
1703 % %%%%%%%%%%%%%%%%%%
1704 {\resetbdsw%
1705 \@bond@fuse@omit{#5}{#6}%
1706 \put(-68,0){\set@skel@longbond{#1}{a}{skbondtria}}%
1707  % bond between 1 and 2 \@aaa -> \skbondtria etc
1708 \put(0,-132){\set@skel@longbond{#1}{b}{skbondshoriz}}%
1709  % bond between 2 and 3 \@bbb -> \skbondb etc
1710 \put(-68,0){\set@skel@longbond{#1}{c}{skbondtrib}}%
1711  % bond between 3 and 1 \@ccc -> \skbondtria etc

1712 }%

1713 % %%%%%%%%%%%%%%%%%%%%%
1714 % % inner double bond %
1715 % %%%%%%%%%%%%%%%%%%%%%
1716 \@tfor\member:=#2\do{%
1717 \if\member r\relax%
1718 \else\if\member a\relax\put(-68,0){\bondtria}%
1719 \else\if\member b\relax\put(0,-126){\bondshoriz}%
1720 \else\if\member c\relax\put(-68,0){\bondtrib}%
1721 \else\if\member A\relax% aromatic circle
1722 \put(-70,108){\circle{100}}%               %circle
1723 \else
1724 % %%%%%%%%%%%%%%%%%%%%%%%%%
1725 % % inner bond attachment %
1726 % %%%%%%%%%%%%%%%%%%%%%%%%%

1727 \expandafter\twoCH@@R\member//%
1728  \set@fusionadd@threev
1729 \fi\fi\fi\fi\fi%

1730 }%

1731 % %%%%%%%%%%%%%%%%%%%%%%%%
1732 % % setting hetero atoms %
1733 % %%%%%%%%%%%%%%%%%%%%%%%%
1734 \put(-68,0){\set@hetatom@sixv{#3}{3}{3}{5}{0}%
1735 \if@clip\global\@cliptrue\fi
1736 }%subst 1
1737 \put(-142,-132){\set@hetatom@sixv{#3}{0}{1}{3}{0}%
1738 \if@bclip\global\@bcliptrue\fi
1739 }%subst 2
1740 \put(0,-132){\set@hetatom@sixv{#3}{3}{5}{7}{0}%
1741 \if@fclip\global\@fcliptrue\fi
1742 }%subst 3
1743 % %%%%%%%%%%%%%%%%%%%%%%%%
1744 % % setting substituents %
1745 % %%%%%%%%%%%%%%%%%%%%%%%%
1746 \put(-68,0){\setsixringv{#4}{3}{3}{5}{0}}%subst 1
1747 \put(-142,-132){\setsixringv{#4}{0}{1}{3}{0}}%subst 2
1748 \put(0,-132){\setsixringv{#4}{3}{5}{7}{0}}%subst 3
1749 \end{picture}%
1750 \threefuseposv{#5}%%for FuseWaring when nested
1751 \iniatom\iniflag
1752 \global\@smallringswtrue%for permition at a center bond
1753 }%     %end of \threefusev 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.

\threefuseposv
1754 \def\threefuseposv#1{%
1755 \global\@sixfuseposvfalse
1756 {\resetbdsw%
1757 \@tfor\memBer:=#1\do{%
1758 \if\memBer a\relax
1759 \if@sixfuseposv
1760 \XyMTeXWarning{Double fused bond at bond `a'}%
1761 \else
1762 \gdef\fuseAx{-68}\gdef\fuseAy{0}%
1763 %  \gdef\fuseBx{29}\gdef\fuseBy{171}%
1764 \gdef\fuseBx{35}\gdef\fuseBy{171}%corrected
1765 \global\@sixfuseposvtrue

1766 \fi

1767 \fi%
1768 \if\memBer A\relax

1769 \if@sixfuseposv
1770 \XyMTeXWarning{Double fused bond at bond `A'}%
1771 \else
1772 %  \gdef\fuseBx{-68}\gdef\fuseBy{0}%
1773 \gdef\fuseBx{-74}\gdef\fuseBy{0}%corrected
1774 \gdef\fuseAx{29}\gdef\fuseAy{171}%
1775 \global\@sixfuseposvtrue

1776 \fi

1777 \fi%
1778 \if\memBer b\relax
1779 \if@sixfuseposv
1780 \XyMTeXWarning{Double fused bond at bond `b'}%
1781 \else
1782 \gdef\fuseAx{29}\gdef\fuseAy{171}%
1783 \gdef\fuseBx{-171}\gdef\fuseBy{171}%
1784 \global\@sixfuseposvtrue

1785 \fi

1786 \fi%
1787 \if\memBer B\relax
1788 \if@sixfuseposv
1789 \XyMTeXWarning{Double fused bonds at bond `B'}%
1790 \else
1791 \gdef\fuseBx{29}\gdef\fuseBy{171}%
1792 \gdef\fuseAx{-171}\gdef\fuseAy{171}%
1793 \global\@sixfuseposvtrue

1794 \fi

1795 \fi%
1796 \if\memBer c\relax
1797 \if@sixfuseposv
1798 \XyMTeXWarning{Double fused bonds at bond `c'}%
1799 \else
1800 \gdef\fuseAx{-171}\gdef\fuseAy{171}%
1801 \gdef\fuseBx{-68}\gdef\fuseBy{0}%
1802 \global\@sixfuseposvtrue

1803 \fi

1804 \fi%
1805 \if\memBer C\relax
1806 \if@sixfuseposv
1807 \XyMTeXWarning{Double fused bonds at bond `C'}%
1808 \else
1809 \gdef\fuseBx{-171}\gdef\fuseBy{171}%
1810 \gdef\fuseAx{-68}\gdef\fuseAy{0}%
1811 \global\@sixfuseposvtrue

1812 \fi

1813 \fi%
1814 }}}% end of the macro \threefuseposv

7.2 Inverse vertical type

The macro \threefusevi typesets a three-membered ring of inverse vertical type. The following numbering is adopted in this macro.

 ****************************
 * thereehetero derivatives *
 *  (inverse vertical type) *
 ****************************
        /1` <===== the original point
    c /     ` a
     3--------2
         b

   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.

   \threefusevi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[OMIT]

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.

     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

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.

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

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.

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

The argument FUSE represents one bond to be omitted. The omitted edge is regarded as a fused position.

FUSE:  one bond omitted (a, b, or c)

       OMIT:  one or more bonds omitted (a, b, or c)

Several examples are shown as follows.

         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}

\threefusevi
\@three@fusevi
\@three@@fusevi
\@threefusevi

1815 \def\threefusevi{\@ifnextchar({\@three@fusevi(@}{\@three@fusevi(@)}}
1816 \def\@three@fusevi(#1){\@ifnextchar[{\@three@@fusevi(#1)[@}%
1817 {\@three@@fusevi(#1)[@]}}
1818 \def\@three@@fusevi(#1)[#2]#3#4#5{\@ifnextchar[%
1819 {\@threefusevi(#1)[#2]{#3}{#4}{#5}[@}%
1820 {\@threefusevi(#1)[#2]{#3}{#4}{#5}[@]}}
1821 \def\@threefusevi(#1)[#2]#3#4#5[#6]{%
1822 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1823 % % treatment of atom list %
1824 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1825 \iniatom\iniflag%initialize
1826 \test@vertix@sixv{#3}{a}{c}{e}{@}{@}{@}%
1827 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1828 % % adustment of subs positions %
1829 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1830 \threefuseposvi{#5}%
1831 \if@sixfuseposv
1832 \yl@shiftii=-\fuseAx
1833 \yl@shifti=-\fuseAy
1834 \advance\yl@shiftii\yl@xdiff
1835 \advance\yl@shifti\yl@ydiff
1836 \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
1837 \reset@yl@xydiff%1999/1/6 by S. Fujita
1838 \else
1839 \begin{picture}(800,580)(-468,-340)%
1840 \iforigpt \put(-468,-340){\circle*{50}}%
1841  \put(-68,0){\circle{50}}%
1842 \typeout{command `threefusevi' origin: %
1843  (0,0) ---> (-468,-340)}\fi%

1844 \fi

1845 % %%%%%%%%%%%%%%%%%%
1846 % % outer skeleton %
1847 % %%%%%%%%%%%%%%%%%%

1848 {\resetbdsw%
1849 \@bond@fuse@omit{#5}{#6}%
1850 \put(-68,0){\set@skel@longbond{#1}{a}{skBondtria}}%
1851  % bond between 1 and 2 \@aaa -> \skBondtria etc
1852 \put(0,-275){\set@skel@longbond{#1}{b}{skbondshorizi}}%
1853  % bond between 2 and 3 \@bbb -> \skbondb etc
1854 \put(-68,0){\set@skel@longbond{#1}{c}{skBondtrib}}%
1855  % bond between 3 and 1 \@ccc -> \skBondtrib etc

1856 }%

1857 % %%%%%%%%%%%%%%%%%%%%%
1858 % % inner double bond %
1859 % %%%%%%%%%%%%%%%%%%%%%
1860 \@tfor\member:=#2\do{%
1861 \if\member r\relax%
1862 \else\if\member a\relax\put(-68,0){\Bondtria}%
1863 \else\if\member b\relax\put(0,-274){\bondshorizi}%
1864 \else\if\member c\relax\put(-68,0){\Bondtrib}%
1865 \else\if\member A\relax% aromatic circle
1866 \put(-70,-108){\circle{100}}%               %circle
1867 \else
1868 % %%%%%%%%%%%%%%%%%%%%%%%%%
1869 % % inner bond attachment %
1870 % %%%%%%%%%%%%%%%%%%%%%%%%%
1871 \expandafter\twoCH@@R\member//%
1872  \set@fusionadd@threevi
1873 \fi\fi\fi\fi\fi%

1874 }%

1875 % %%%%%%%%%%%%%%%%%%%%%%%%
1876 % % setting hetero atoms %
1877 % %%%%%%%%%%%%%%%%%%%%%%%%
1878 \put(-68,-406){\set@hetatom@sixv{#3}{0}{0}{2}{0}%
1879 \if@aclip\global\@acliptrue\fi
1880 }%subst 1
1881 \put(0,-275){\set@hetatom@sixv{#3}{2}{4}{6}{0}%
1882 \if@cclip\global\@ccliptrue\fi
1883 }%subst 3
1884 \put(-142,-275){\set@hetatom@sixv{#3}{1}{2}{4}{0}%
1885 \if@eclip\global\@ecliptrue\fi
1886 }%subst 2
1887 % %%%%%%%%%%%%%%%%%%%%%%%%
1888 % % setting substituents %
1889 % %%%%%%%%%%%%%%%%%%%%%%%%
1890 \put(-68,-406){\setsixringv{#4}{0}{0}{2}{0}}%subst 1
1891 \put(0,-275){\setsixringv{#4}{2}{4}{6}{0}}%subst 3
1892 \put(-142,-275){\setsixringv{#4}{1}{2}{4}{0}}%subst 2
1893 \end{picture}%
1894 \threefuseposvi{#5}%%for FuseWaring when nested
1895 \iniatom\iniflag
1896 \global\@smallringswtrue%for permition at a center bond

1897 }%     %end of \threefusevi 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.

\threefuseposvi
1898 \def\threefuseposvi#1{%
1899 \global\@sixfuseposvfalse
1900 {\resetbdsw%
1901 \@tfor\memBer:=#1\do{%
1902 \if\memBer a\relax
1903 \if@sixfuseposv
1904 \XyMTeXWarning{Double fused bond at bond `a'}%
1905 \else
1906 \gdef\fuseAx{-68}\gdef\fuseAy{0}%
1907 %  \gdef\fuseBx{29}\gdef\fuseBy{-171}%
1908 \gdef\fuseBx{35}\gdef\fuseBy{-171}%corrected
1909 \global\@sixfuseposvtrue

1910 \fi

1911 \fi%
1912 \if\memBer A\relax
1913 \if@sixfuseposv
1914 \XyMTeXWarning{Double fused bond at bond `A'}%
1915 \else
1916 %  \gdef\fuseBx{-68}\gdef\fuseBy{0}%
1917 \gdef\fuseBx{-74}\gdef\fuseBy{0}%corrected
1918 \gdef\fuseAx{29}\gdef\fuseAy{-171}%
1919 \global\@sixfuseposvtrue

1920 \fi

1921 \fi%
1922 \if\memBer b\relax
1923 \if@sixfuseposv
1924 \XyMTeXWarning{Double fused bond at bond `b'}%
1925 \else
1926 \gdef\fuseAx{29}\gdef\fuseAy{-171}%
1927 \gdef\fuseBx{-171}\gdef\fuseBy{-171}%
1928 \global\@sixfuseposvtrue

1929 \fi

1930 \fi%
1931 \if\memBer B\relax
1932 \if@sixfuseposv
1933 \XyMTeXWarning{Double fused bonds at bond `B'}%
1934 \else
1935 \gdef\fuseBx{29}\gdef\fuseBy{-171}%
1936 \gdef\fuseAx{-171}\gdef\fuseAy{-171}%
1937 \global\@sixfuseposvtrue

1938 \fi

1939 \fi%

1940 \if\memBer c\relax
1941 \if@sixfuseposv
1942 \XyMTeXWarning{Double fused bonds at bond `c'}%
1943 \else
1944 \gdef\fuseAx{-171}\gdef\fuseAy{-171}%
1945 \gdef\fuseBx{-68}\gdef\fuseBy{0}%
1946 \global\@sixfuseposvtrue

1947 \fi

1948 \fi%
1949 \if\memBer C\relax
1950 \if@sixfuseposv
1951 \XyMTeXWarning{Double fused bonds at bond `C'}%
1952 \else
1953 \gdef\fuseBx{-171}\gdef\fuseBy{-171}%
1954 \gdef\fuseAx{-68}\gdef\fuseAy{0}%
1955 \global\@sixfuseposvtrue

1956 \fi

1957 \fi%
1958 }}}% end of the macro \threefuseposvi

7.3 Horizontal type

The macro \threefuseh typesets a three-membered ring to be fused. The following numbering is adopted in this macro.

   ****************************
   * thereehetero fusing unit *
   *  (horizontal type)       *
   ****************************
     aaa fff
      3
      | ` c
    b |    1 bbb ccc
      |  / a
      2/
      ddd eee

    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.

     \threefuseh(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[OMIT]

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.

     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

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.

     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

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.

     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

The argument FUSE represents one bond to be omitted. The omitted edge is regarded as a fused position.

       FUSE:  one bond omitted (a, b, or c)

The argument OMIT represents one or more bonds to be omitted. The omitted edges are regarded as non-fused positions.

       OMIT:  one or more bonds omitted (a, b, or c)

Several examples are shown as follows.

         e.g.
          \threefuseh{1==N}{1==Cl;2==F}{c}

\threefuseh
\@three@fuseh
\@three@@fuseh
\@threefuseh

1959 \def\threefuseh{\@ifnextchar({\@three@fuseh(@}{\@three@fuseh(@)}}
1960 \def\@three@fuseh(#1){\@ifnextchar[{\@three@@fuseh(#1)[@}%
1961 {\@three@@fuseh(#1)[@]}}
1962 \def\@three@@fuseh(#1)[#2]#3#4#5{\@ifnextchar[%
1963 {\@threefuseh(#1)[#2]{#3}{#4}{#5}[@}%
1964 {\@threefuseh(#1)[#2]{#3}{#4}{#5}[@]}}
1965 \def\@threefuseh(#1)[#2]#3#4#5[#6]{%
1966 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1967 % % treatment of atom list %
1968 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1969 \iniatom\iniflag%initialize
1970 \test@vertix@sixv{#3}{d}{f}{b}{@}{@}{@}%tentative use for six-h
1971 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

1972 % % adustment of subs positions %
1973 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1974 \threefuseposh{#5}%
1975 \if@sixfuseposv
1976 \yl@shiftii=-\fuseAx
1977 \yl@shifti=-\fuseAy
1978 \advance\yl@shiftii\yl@xdiff
1979 \advance\yl@shifti\yl@ydiff
1980 \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
1981 \reset@yl@xydiff%1999/1/6 by S. Fujita
1982 \else
1983 \begin{picture}(580,700)(-200,-240)%
1984 \iforigpt \put(-200,-200){\circle*{50}}%
1985  \put(0,0){\circle{50}}%
1986 \typeout{command `threefuseh' origin: %
1987  (0,0) ---> (200,200)}\fi%

1988 \fi

1989 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%
1990 % % retreatment of atom list %
1991 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%
1992 \iniatom\iniflag%initialize
1993 \test@vertix@sixv{#3}{c}{e}{a}{@}{@}{@}%
1994 \test@vertix@sixv{#3}{b}{d}{f}{@}{@}{@}%
1995 % %%%%%%%%%%%%%%%%%%
1996 % % outer skeleton %
1997 % %%%%%%%%%%%%%%%%%%
1998 {\resetbdsw%
1999 \@bond@fuse@omit{#5}{#6}%
2000 \put(0,0){\set@skel@bond{#1}{a}{c}}%
2001  % bond between 1 and 2 \@aaa -> \skbondc etc
2002 \put(171,-103){\set@skel@bond{#1}{b}{e}}%
2003  % bond between 2 and 3 \@bbb -> \skbonde etc
2004 \put(0,-200){\set@skel@bond{#1}{c}{a}}%
2005  % bond between 3 and 1 \@ccc -> \skbonda etc

2006 }%

2007 % %%%%%%%%%%%%%%%%%%%%%
2008 % % inner double bond %
2009 % %%%%%%%%%%%%%%%%%%%%%
2010 \@tfor\member:=#2\do{%
2011 \if\member r\relax%
2012 \else\if\member a\relax\put(0,0){\bondc}%
2013 \else\if\member b\relax\put(171,-103){\bonde}%
2014 \else\if\member c\relax\put(0,-200){\bonda}%
2015 \else\if\member A\relax% aromatic circle
2016 \put(70,103){\circle{100}}%               %circle
2017 \else
2018 % %%%%%%%%%%%%%%%%%%%%%%%%%
2019 % % inner bond attachment %
2020 % %%%%%%%%%%%%%%%%%%%%%%%%%

2021 \expandafter\twoCH@@R\member//%
2022  \set@fusionadd@threeh
2023 \fi\fi\fi\fi\fi%

2024 }%

2025 % %%%%%%%%%%%%%%%%%%%%%%%%
2026 % % setting hetero atoms %
2027 % %%%%%%%%%%%%%%%%%%%%%%%%
2028 \iniflag
2029 %\put(-235,103){\set@hetatom@sixh{#3}{3}{3}{5}{0}%
2030 \put(-215,103){\set@hetatom@sixh{#3}{3}{3}{5}{0}%
2031 \if@clip \global\@cliptrue\fi}%subst 1 <--six h 4
2032 \put(-103,29){\set@hetatom@sixh{#3}{-1}{1}{3}{0}%
2033 \if@bclip \global\@bcliptrue\fi}%subst 3 <--six h 2
2034 \put(-103,171){\set@hetatom@sixh{#3}{4}{5}{7}{0}%
2035 \if@fclip \global\@fcliptrue\fi}%subst 2 <--six h 6
2036 % %%%%%%%%%%%%%%%%%%%%%%%%
2037 % % setting substituents %
2038 % %%%%%%%%%%%%%%%%%%%%%%%%
2039 \put(-235,103){\setsixringh{#4}{3}{3}{5}{0}}%subst 1
2040 \put(-103,29){\setsixringh{#4}{-1}{1}{3}{0}}%subst 3
2041 \put(-103,171){\setsixringh{#4}{4}{5}{7}{0}}%subst 2
2042 \end{picture}%
2043 \threefuseposh{#5}%%for FuseWaring when nested
2044 \iniatom\iniflag
2045 \global\@smallringswtrue%for permition at a center bond
2046 }%     %end of \threefuseh 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.

\threefuseposh
2047 \def\threefuseposh#1{%
2048 \global\@sixfuseposvfalse
2049 {\resetbdsw%
2050 \@tfor\memBer:=#1\do{%
2051 \if\memBer a\relax
2052 \if@sixfuseposv
2053 \XyMTeXWarning{Double fused bond at bond `a'}%
2054 \else
2055 \gdef\fuseAx{171}\gdef\fuseAy{103}%corrected
2056 \gdef\fuseBx{0}\gdef\fuseBy{0}%
2057 \global\@sixfuseposvtrue

2058 \fi

2059 \fi%
2060 \if\memBer A\relax
2061 \if@sixfuseposv
2062 \XyMTeXWarning{Double fused bond at bond `A'}%

2063 \else
2064 \gdef\fuseBx{171}\gdef\fuseBy{103}%
2065 \gdef\fuseAx{0}\gdef\fuseAy{0}%
2066 \global\@sixfuseposvtrue

2067 \fi

2068 \fi%
2069 \if\memBer b\relax
2070 \if@sixfuseposv
2071 \XyMTeXWarning{Double fused bond at bond `b'}%
2072 \else
2073 \gdef\fuseAx{0}\gdef\fuseAy{0}%
2074 \gdef\fuseBx{0}\gdef\fuseBy{200}%
2075 \global\@sixfuseposvtrue

2076 \fi

2077 \fi%
2078 \if\memBer B\relax
2079 \if@sixfuseposv
2080 \XyMTeXWarning{Double fused bonds at bond `B'}%
2081 \else
2082 \gdef\fuseBx{0}\gdef\fuseBy{0}%
2083 \gdef\fuseAx{0}\gdef\fuseAy{200}%
2084 \global\@sixfuseposvtrue

2085 \fi

2086 \fi%
2087 \if\memBer c\relax
2088 \if@sixfuseposv
2089 \XyMTeXWarning{Double fused bonds at bond `c'}%
2090 \else
2091 \gdef\fuseAx{0}\gdef\fuseAy{200}%
2092 %  \gdef\fuseBx{171}\gdef\fuseBy{103}%
2093 \gdef\fuseBx{171}\gdef\fuseBy{97}%corrected
2094 \global\@sixfuseposvtrue

2095 \fi

2096 \fi%
2097 \if\memBer C\relax
2098 \if@sixfuseposv
2099 \XyMTeXWarning{Double fused bonds at bond `C'}%
2100 \else
2101 %  \gdef\fuseBx{0}\gdef\fuseBy{200}%
2102 \gdef\fuseBx{0}\gdef\fuseBy{206}%corrected
2103 \gdef\fuseAx{171}\gdef\fuseAy{103}%
2104 \global\@sixfuseposvtrue

2105 \fi

2106 \fi%
2107 }}}% end of the macro \threefuseposh

7.4 Inverse horizontal type

The macro \threefusehi typesets a three-membered ring to be fused. The following numbering is adopted in this macro.

 *******************************
 * thereehetero fusing unit    *
 *  (vertical horizontal type) *
 *******************************
          aaa bbb
     c    3
       /  |
 eee  1   | b
 fff   a` |
          2 <---original point
          ccc ddd

   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.

   \threefusehi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[OMIT]

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.

     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

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.

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

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.

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

The argument FUSE represents one bond to be omitted. The omitted edge is regarded as a fused position.

FUSE:  one bond omitted (a, b, or c)

       OMIT:  one or more bonds omitted (a, b, or c)

Several examples are shown as follows.

         e.g.
          \threefusehi{1==N}{1==Cl;2==F}{c}
          \threefusehi[c]{1==N}{1==Cl;3==F;2==CH$_{3}$}{a}

\threefusehi
\@three@fusehi
\@three@@fusehi
\@threefusehi

2108 \def\threefusehi{\@ifnextchar({\@three@fusehi(@}{\@three@fusehi(@)}}
2109 \def\@three@fusehi(#1){\@ifnextchar[{\@three@@fusehi(#1)[@}%
2110 {\@three@@fusehi(#1)[@]}}
2111 \def\@three@@fusehi(#1)[#2]#3#4#5{\@ifnextchar[%
2112 {\@threefusehi(#1)[#2]{#3}{#4}{#5}[@}%
2113 {\@threefusehi(#1)[#2]{#3}{#4}{#5}[@]}}
2114 \def\@threefusehi(#1)[#2]#3#4#5[#6]{%
2115 % %%%%%%%%%%%%%%%%%%%%%%%%%%
2116 % % treatment of atom list %
2117 % %%%%%%%%%%%%%%%%%%%%%%%%%%
2118 \iniatom\iniflag%initialize
2119 \test@vertix@sixv{#3}{a}{e}{c}{@}{@}{@}%tentative use for six-h
2120 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2121 % % adustment of subs positions %
2122 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2123 \threefuseposhi{#5}%
2124 \if@sixfuseposv
2125 \yl@shiftii=-\fuseAx
2126 \yl@shifti=-\fuseAy
2127 \advance\yl@shiftii\yl@xdiff
2128 \advance\yl@shifti\yl@ydiff
2129 \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
2130 \reset@yl@xydiff%1999/1/6 by S. Fujita
2131 \else
2132 \begin{picture}(580,700)(-400,-240)%
2133 \iforigpt \put(-400,-200){\circle*{50}}%
2134  \put(0,0){\circle{50}}%
2135 \typeout{command `threefusehi' origin: %
2136  (0,0) ---> (400,200)}\fi%

2137 \fi

2138 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%
2139 % % retreatment of atom list %
2140 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%
2141 \iniatom\iniflag%initialize

2142 \test@vertix@sixv{#3}{e}{c}{a}{@}{@}{@}%
2143 \test@vertix@sixv{#3}{f}{d}{b}{@}{@}{@}%
2144 % %%%%%%%%%%%%%%%%%%
2145 % % outer skeleton %
2146 % %%%%%%%%%%%%%%%%%%
2147 {\resetbdsw%
2148 \@bond@fuse@omit{#5}{#6}%
2149 \put(0,0){\set@skel@bond{#1}{a}{d}}%
2150  % bond between 1 and 2 \@aaa -> \skbondd etc
2151 \put(-171,-103){\set@skel@bond{#1}{b}{b}}%
2152  % bond between 2 and 3 \@bbb -> \skbondb etc
2153 \put(0,-200){\set@skel@bond{#1}{c}{f}}%
2154  % bond between 3 and 1 \@ccc -> \skbondf etc

2155 }%

2156 % %%%%%%%%%%%%%%%%%%%%%
2157 % % inner double bond %
2158 % %%%%%%%%%%%%%%%%%%%%%
2159 \@tfor\member:=#2\do{%
2160 \if\member r\relax%
2161 \else\if\member a\relax\put(0,0){\bondd}%
2162 \else\if\member b\relax\put(-171,-103){\bondb}%
2163 \else\if\member c\relax\put(0,-200){\bondf}%
2164 \else\if\member A\relax% aromatic circle
2165 \put(70,103){\circle{100}}%               %circle
2166 \else
2167 % %%%%%%%%%%%%%%%%%%%%%%%%%
2168 % % inner bond attachment %
2169 % %%%%%%%%%%%%%%%%%%%%%%%%%
2170 \expandafter\twoCH@@R\member//%
2171  \set@fusionadd@threehi
2172 \fi\fi\fi\fi\fi%

2173 }%

2174 % %%%%%%%%%%%%%%%%%%%%%%%%
2175 % % setting hetero atoms %
2176 % %%%%%%%%%%%%%%%%%%%%%%%%
2177 \iniflag
2178 \put(-171,103){\set@hetatom@sixh{#3}{0}{0}{2}{0}%
2179 \if@aclip \global\@acliptrue\fi}%subst 1 <--six h 1
2180 \put(-303,29){\set@hetatom@sixh{#3}{0}{2}{4}{0}%
2181 \if@cclip \global\@ccliptrue\fi}%subst 3 <--six h 3
2182 \put(-303,171){\set@hetatom@sixh{#3}{3}{4}{6}{0}%
2183 \if@eclip \global\@ecliptrue\fi}%subst 2 <--six h 5
2184 % %%%%%%%%%%%%%%%%%%%%%%%%
2185 % % setting substituents %
2186 % %%%%%%%%%%%%%%%%%%%%%%%%
2187 \put(-171,103){\setsixringh{#4}{0}{0}{2}{0}}%subst 1
2188 \put(-303,29){\setsixringh{#4}{0}{2}{4}{0}}%subst 3
2189 \put(-303,171){\setsixringh{#4}{3}{4}{6}{0}}%subst 2
2190 \end{picture}%

2191 \threefuseposhi{#5}%%for FuseWaring when nested
2192 \iniatom\iniflag
2193 \global\@smallringswtrue%for permition at a center bond
2194 }%     %end of \threefusehi 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.

\threefuseposhi
2195 \def\threefuseposhi#1{%
2196 \global\@sixfuseposvfalse
2197 {\resetbdsw%
2198 \@tfor\memBer:=#1\do{%
2199 \if\memBer a\relax
2200 \if@sixfuseposv
2201 \XyMTeXWarning{Double fused bond at bond `a'}%
2202 \else
2203 \gdef\fuseAx{-171}\gdef\fuseAy{103}%corrected
2204 \gdef\fuseBx{0}\gdef\fuseBy{0}%
2205 \global\@sixfuseposvtrue

2206 \fi

2207 \fi%
2208 \if\memBer A\relax
2209 \if@sixfuseposv
2210 \XyMTeXWarning{Double fused bond at bond `A'}%
2211 \else
2212 \gdef\fuseBx{-171}\gdef\fuseBy{103}%
2213 \gdef\fuseAx{0}\gdef\fuseAy{0}%
2214 \global\@sixfuseposvtrue

2215 \fi

2216 \fi%
2217 \if\memBer b\relax
2218 \if@sixfuseposv
2219 \XyMTeXWarning{Double fused bond at bond `b'}%
2220 \else
2221 \gdef\fuseAx{0}\gdef\fuseAy{0}%
2222 \gdef\fuseBx{0}\gdef\fuseBy{200}%
2223 \global\@sixfuseposvtrue

2224 \fi

2225 \fi%
2226 \if\memBer B\relax
2227 \if@sixfuseposv
2228 \XyMTeXWarning{Double fused bonds at bond `B'}%
2229 \else
2230 \gdef\fuseBx{0}\gdef\fuseBy{0}%
2231 \gdef\fuseAx{0}\gdef\fuseAy{200}%
2232 \global\@sixfuseposvtrue

2233 \fi

2234 \fi%
2235 \if\memBer c\relax
2236 \if@sixfuseposv
2237 \XyMTeXWarning{Double fused bonds at bond `c'}%
2238 \else
2239 \gdef\fuseAx{0}\gdef\fuseAy{200}%
2240 %  \gdef\fuseBx{-171}\gdef\fuseBy{103}%
2241 \gdef\fuseBx{-171}\gdef\fuseBy{97}%corrected
2242 \global\@sixfuseposvtrue

2243 \fi

2244 \fi%
2245 \if\memBer C\relax
2246 \if@sixfuseposv
2247 \XyMTeXWarning{Double fused bonds at bond `C'}%
2248 \else
2249 %  \gdef\fuseBx{0}\gdef\fuseBy{200}%
2250 \gdef\fuseBx{0}\gdef\fuseBy{206}%corrected
2251 \gdef\fuseAx{-171}\gdef\fuseAy{103}%
2252 \global\@sixfuseposvtrue

2253 \fi

2254 \fi%
2255 }}}% end of the macro \threefuseposhi

2256 ⟨/fusering⟩