Fusing Ring Units by fusering.sty (v4.01) of XΥMTEX

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

2004/08/30

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 4.01}
3 \typeout{       -- Released August 30, 2004 by Shinsaku Fujita}
4 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5 \def\j@urnalname{fusering}
6 \def\versi@ndate{August 30, 2004}
7 \def\versi@nno{ver4.01}
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 \begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/%
39 (800,880)(-\shiftii,-\shifti){sixfusev}%2002/4/30 by S. Fujita
40 % %%%%%%%%%%%%%%%%%%
41 % % outer skeleton %
42 % %%%%%%%%%%%%%%%%%%
43 % changed FUSE into a list 1993/11/21 by Shinsaku Fujita
44 {%
45 \resetbdsw%
46 \@bond@fuse@omit{#5}{#6}%
47 \set@skel@bond{#1}{a}{a}% bond between 1 and 2 \@aaa -> \skbonda etc
48 \set@skel@bond{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc
49 \set@skel@bond{#1}{c}{c}% bond between 3 and 4 \@ccc -> \skbondc etc
50 \set@skel@bond{#1}{d}{d}% bond between 4 and 5 \@ddd -> \skbondd etc
51 \set@skel@bond{#1}{e}{e}% bond between 5 and 6 \@eee -> \skbonde etc
52 \set@skel@bond{#1}{f}{f}% bond between 6 and 1 \@fff -> \skbondf etc
53 }%
54 % %%%%%%%%%%%%%%%%%%%%%
55 % % inner double bond %
56 % %%%%%%%%%%%%%%%%%%%%%
57 \@tfor\member:=#2\do{%
58 \if\member r\relax%
59 \else\if\member l\relax%
60 \else\if\member a\relax%
61 \bonda%
62 \else\if\member b\relax%
63 \bondb%
64 \else\if\member c\relax%
65 \bondc%
66 \else\if\member d\relax%
67 \bondd%
68 \else\if\member e\relax%
69 \bonde%
70 \else\if\member f\relax%
71 \bondf%

72 \else\if\member A\relax%left aromatic circle
73 \Put@oCircle(0,203){240}%               %circle
74 % %%%%%%%%%%%%%%%%%%%%%%%%%
75 % % inner bond attachment %
76 % %%%%%%%%%%%%%%%%%%%%%%%%%
77 \else \expandafter\twoCH@@R\member//%
78  \set@fusionadd@sixv
79 \fi\fi\fi\fi\fi\fi\fi\fi\fi%
80 }%
81 % %%%%%%%%%%%%%%%%%%%%%%%%
82 % % setting hetero atoms %
83 % %%%%%%%%%%%%%%%%%%%%%%%%
84 \set@hetatom@sixv{#3}{0}{0}{7}{0}%    %atom 1--6%
85 % %%%%%%%%%%%%%%%%%%%%%%%%
86 % % setting substituents %
87 % %%%%%%%%%%%%%%%%%%%%%%%%
88 \setsixringv{#4}{0}{0}{7}{0}%
89 \end{ShiftPicEnv}%
90 \sixfuseposv{#5}%for FuseWaring when nested
91 \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
92 \newif\if@sixfuseposv \@sixfuseposvfalse
93 \def\fuseAx{0}
94 \def\fuseAy{0}
95 \def\fuseBx{0}
96 \def\fuseBy{0}
97 \def\sixfuseposv#1{%
98 \global\@sixfuseposvfalse
99 {\resetbdsw%
100 \@tfor\memBer:=#1\do{%
101 \if\memBer a\relax
102 \if@sixfuseposv
103 \XyMTeXWarning{Double fused bond at bond `a'}%
104 \else
105 \gdef\fuseAx{0}\gdef\fuseAy{406}%
106 \gdef\fuseBx{171}\gdef\fuseBy{303}%
107 \global\@sixfuseposvtrue
108 \fi
109 \fi%
110 \if\memBer A\relax
111 \if@sixfuseposv
112 \XyMTeXWarning{Double fused bond at bond `A'}%
113 \else
114 \gdef\fuseBx{0}\gdef\fuseBy{406}%
115 \gdef\fuseAx{171}\gdef\fuseAy{303}%
116 \global\@sixfuseposvtrue
117 \fi
118 \fi%

119 \if\memBer b\relax
120 \if@sixfuseposv
121 \XyMTeXWarning{Double fused bond at bond `b'}%
122 \else
123 \gdef\fuseAx{171}\gdef\fuseAy{303}%
124 \gdef\fuseBx{171}\gdef\fuseBy{103}%
125 \global\@sixfuseposvtrue
126 \fi
127 \fi%
128 \if\memBer B\relax
129 \if@sixfuseposv
130 \XyMTeXWarning{Double fused bonds at bond `B'}%
131 \else
132 \gdef\fuseBx{171}\gdef\fuseBy{303}%
133 \gdef\fuseAx{171}\gdef\fuseAy{103}%
134 \global\@sixfuseposvtrue
135 \fi
136 \fi%
137 \if\memBer c\relax
138 \if@sixfuseposv
139 \XyMTeXWarning{Double fused bonds at bond `c'}%
140 \else
141 \gdef\fuseAx{171}\gdef\fuseAy{103}%
142 \gdef\fuseBx{0}\gdef\fuseBy{0}%
143 \global\@sixfuseposvtrue
144 \fi
145 \fi%
146 \if\memBer C\relax
147 \if@sixfuseposv
148 \XyMTeXWarning{Double fused bonds at bond `C'}%
149 \else
150 \gdef\fuseBx{171}\gdef\fuseBy{103}%
151 \gdef\fuseAx{0}\gdef\fuseAy{0}%
152 \global\@sixfuseposvtrue
153 \fi
154 \fi%
155 \if\memBer d\relax
156 \if@sixfuseposv
157 \XyMTeXWarning{Double fused bonds at bond `d'}%
158 \else
159 \gdef\fuseAx{0}\gdef\fuseAy{0}%
160 \gdef\fuseBx{-171}\gdef\fuseBy{103}%
161 \global\@sixfuseposvtrue
162 \fi
163 \fi%
164 \if\memBer D\relax
165 \if@sixfuseposv
166 \XyMTeXWarning{Double fused bonds at bond `D'}%
167 \else
168 \gdef\fuseBx{0}\gdef\fuseBy{0}%
169 \gdef\fuseAx{-171}\gdef\fuseAy{103}%
170 \global\@sixfuseposvtrue
171 \fi
172 \fi%

173 \if\memBer e\relax
174 \if@sixfuseposv
175 \XyMTeXWarning{Double fused bonds at bond `e'}%
176 \else
177 \gdef\fuseAx{-171}\gdef\fuseAy{103}%
178 \gdef\fuseBx{-171}\gdef\fuseBy{303}%
179 \global\@sixfuseposvtrue
180 \fi
181 \fi%
182 \if\memBer E\relax
183 \if@sixfuseposv
184 \XyMTeXWarning{Double fused bonds at bond `E'}%
185 \else
186 \gdef\fuseBx{-171}\gdef\fuseBy{103}%
187 \gdef\fuseAx{-171}\gdef\fuseAy{303}%
188 \global\@sixfuseposvtrue
189 \fi
190 \fi%
191 \if\memBer f\relax
192 \if@sixfuseposv
193 \XyMTeXWarning{Double fused bonds at bond `f'}%
194 \else
195 \gdef\fuseAx{-171}\gdef\fuseAy{303}%
196 \gdef\fuseBx{0}\gdef\fuseBy{406}%
197 \global\@sixfuseposvtrue
198 \fi
199 \fi%
200 \if\memBer F\relax
201 \if@sixfuseposv
202 \XyMTeXWarning{Double fused bonds at bond `F'}%
203 \else
204 \gdef\fuseBx{-171}\gdef\fuseBy{303}%
205 \gdef\fuseAx{0}\gdef\fuseAy{406}%
206 \global\@sixfuseposvtrue
207 \fi
208 \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
209 \def\@bond@fuse@omit#1#2{%
210 \ifx#1a\relax\gdef\@aaa{}\fi
211 \ifx#1b\relax\gdef\@bbb{}\fi
212 \ifx#1c\relax\gdef\@ccc{}\fi
213 \ifx#1d\relax\gdef\@ddd{}\fi
214 \ifx#1e\relax\gdef\@eee{}\fi
215 \ifx#1f\relax\gdef\@fff{}\fi
216 \ifx#1A\relax\gdef\@aaa{}\fi
217 \ifx#1B\relax\gdef\@bbb{}\fi
218 \ifx#1C\relax\gdef\@ccc{}\fi
219 \ifx#1D\relax\gdef\@ddd{}\fi
220 \ifx#1E\relax\gdef\@eee{}\fi
221 \ifx#1F\relax\gdef\@fff{}\fi

222 %%%%
223 \@tfor\memBer:=#2\do{%
224 \if\memBer a\relax\gdef\@aaa{}%
225 \ifx#1a\relax
226 \XyMTeXWarning{Double spec. of bond `a' in FUSE and OMIT}\fi
227 \fi%
228 \if\memBer A\relax\gdef\@aaa{}%
229 \ifx#1a\relax
230 \XyMTeXWarning{Double spec. of bond `a' in FUSE and OMIT}\fi
231 \fi%
232 \if\memBer b\relax\gdef\@bbb{}%
233 \ifx#1b\relax
234 \XyMTeXWarning{Double spec. of bond `b' in FUSE and OMIT}\fi
235 \fi%
236 \if\memBer B\relax\gdef\@bbb{}%
237 \ifx#1b\relax
238 \XyMTeXWarning{Double spec. of bond `b' in FUSE and OMIT}\fi
239 \fi%
240 \if\memBer c\relax\gdef\@ccc{}%
241 \ifx#1c\relax
242 \XyMTeXWarning{Double spec. of bond `c' in FUSE and OMIT}\fi
243 \fi%
244 \if\memBer C\relax\gdef\@ccc{}%
245 \ifx#1c\relax
246 \XyMTeXWarning{Double spec. of bond `c' in FUSE and OMIT}\fi
247 \fi%
248 \if\memBer d\relax\gdef\@ddd{}%
249 \ifx#1d\relax
250 \XyMTeXWarning{Double spec. of bond `d' in FUSE and OMIT}\fi
251 \fi%
252 \if\memBer D\relax\gdef\@ddd{}%
253 \ifx#1d\relax
254 \XyMTeXWarning{Double spec. of bond `d' in FUSE and OMIT}\fi
255 \fi%
256 \if\memBer e\relax\gdef\@eee{}%
257 \ifx#1e\relax
258 \XyMTeXWarning{Double spec. of bond `e' in FUSE and OMIT}\fi
259 \fi%
260 \if\memBer E\relax\gdef\@eee{}%
261 \ifx#1e\relax
262 \XyMTeXWarning{Double spec. of bond `e' in FUSE and OMIT}\fi
263 \fi%
264 \if\memBer f\relax\gdef\@fff{}%
265 \ifx#1f\relax
266 \XyMTeXWarning{Double spec. of bond `f' in FUSE and OMIT}\fi
267 \fi%
268 \if\memBer F\relax\gdef\@fff{}%
269 \ifx#1f\relax
270 \XyMTeXWarning{Double spec. of bond `f' in FUSE and OMIT}\fi
271 \fi%
272 }}%

The macros \sixunitv has been revived for compativility.

\sixunitv
273 \def\sixunitv{\@ifnextchar[{\@six@unitv}{\@six@unitv[@]}}
274 \def\@six@unitv[#1]#2#3#4{\sixfusev[#1]{#2}{#3}{#4}}

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

275 \def\sixfusevi{\@ifnextchar({\@six@fusevi(@}{\@six@fusevi(@)}}
276 \def\@six@fusevi(#1){\@ifnextchar[{\@six@@fusevi(#1)[@}%
277 {\@six@@fusevi(#1)[@]}}
278 \def\@six@@fusevi(#1)[#2]#3#4#5{\@ifnextchar[%
279 {\@sixfusevi(#1)[#2]{#3}{#4}{#5}[@}%
280 {\@sixfusevi(#1)[#2]{#3}{#4}{#5}[@]}}
281 \def\@sixfusevi(#1)[#2]#3#4#5[#6]{%
282 % %%%%%%%%%%%%%%%%%%%%%%%%%%
283 % % treatment of atom list %
284 % %%%%%%%%%%%%%%%%%%%%%%%%%%
285 \iniatom\iniflag%initialize%
286 \test@vertix@sixv{#3}{d}{c}{b}{a}{f}{e}%
287 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
288 % % adjustment of attached positions %
289 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
290 \sixfuseposvi{#5}%
291 \begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/%
292 (800,880)(-\shiftii,-\shifti){sixfusevi}%2002/4/30 by S. Fujita
293 % %%%%%%%%%%%%%%%%%%
294 % % outer skeleton %
295 % %%%%%%%%%%%%%%%%%%
296 % changed FUSE into a list 1993/11/21 by Shinsaku Fujita
297 {\resetbdsw%
298 \@bond@fuse@omit{#5}{#6}%
299 \set@skel@bond{#1}{a}{c}% bond between 1 and 2 \@aaa -> \skbondc etc
300 \set@skel@bond{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc
301 \set@skel@bond{#1}{c}{a}% bond between 3 and 4 \@ccc -> \skbonda etc
302 \set@skel@bond{#1}{d}{f}% bond between 4 and 5 \@ddd -> \skbondf etc
303 \set@skel@bond{#1}{e}{e}% bond between 5 and 6 \@eee -> \skbonde etc
304 \set@skel@bond{#1}{f}{d}% bond between 6 and 1 \@fff -> \skbondd etc

305 }%

306 % %%%%%%%%%%%%%%%%%%%%%
307 % % inner double bond %
308 % %%%%%%%%%%%%%%%%%%%%%
309 \@tfor\member:=#2\do{%
310 \if\member r\relax%
311 \else\if\member l\relax%

312 \else\if\member a\relax%
313 \bondc%
314 \else\if\member b\relax%
315 \bondb%
316 \else\if\member c\relax%
317 \bonda%
318 \else\if\member d\relax%
319 \bondf%
320 \else\if\member e\relax%
321 \bonde%
322 \else\if\member f\relax%
323 \bondd%
324 \else\if\member A%left aromatic circle
325 \Put@oCircle(0,203){240}%               %circle
326 % %%%%%%%%%%%%%%%%%%%%%%%%%
327 % % inner bond attachment %
328 % %%%%%%%%%%%%%%%%%%%%%%%%%
329 \else \expandafter\twoCH@@R\member//%
330  \set@fusionadd@sixvi
331 \fi\fi\fi\fi\fi\fi\fi\fi\fi%

332 }%

333 % %%%%%%%%%%%%%%%%%%%%%%%%
334 % % setting hetero atoms %
335 % %%%%%%%%%%%%%%%%%%%%%%%%
336 \set@hetatom@sixv{#3}{5}{0}{5}{-1}%    %atom 1--4%
337 \set@hetatom@sixv{#3}{11}{4}{7}{-1}%   %atom 5 and 6%
338 % %%%%%%%%%%%%%%%%%%%%%%%%
339 % % setting substituents %
340 % %%%%%%%%%%%%%%%%%%%%%%%%
341 \setsixringv{#4}{5}{0}{5}{-1}%    %subst 1--4
342 \setsixringv{#4}{11}{4}{7}{-1}%   %subst 5 and 6
343 \end{ShiftPicEnv}%
344 \sixfuseposvi{#5}%%for FuseWaring when nested
345 \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
346 \def\sixfuseposvi#1{%
347 \global\@sixfuseposvfalse
348 {\resetbdsw%
349 \@tfor\memBer:=#1\do{%
350 \if\memBer c\relax
351 \if@sixfuseposv
352 \XyMTeXWarning{Double fused bonds at bond `c'}%
353 \else
354 \gdef\fuseBx{0}\gdef\fuseBy{406}%
355 \gdef\fuseAx{171}\gdef\fuseAy{303}%
356 \global\@sixfuseposvtrue
357 \fi
358 \fi%

359 \if\memBer C\relax
360 \if@sixfuseposv
361 \XyMTeXWarning{Double fused bonds at bond `C'}%
362 \else
363 \gdef\fuseAx{0}\gdef\fuseAy{406}%
364 \gdef\fuseBx{171}\gdef\fuseBy{303}%
365 \global\@sixfuseposvtrue
366 \fi
367 \fi%
368 \if\memBer b\relax
369 \if@sixfuseposv
370 \XyMTeXWarning{Double fused bonds at bond `b'}%
371 \else
372 \gdef\fuseBx{171}\gdef\fuseBy{303}%
373 \gdef\fuseAx{171}\gdef\fuseAy{103}%
374 \global\@sixfuseposvtrue
375 \fi
376 \fi%
377 \if\memBer B\relax
378 \if@sixfuseposv
379 \XyMTeXWarning{Double fused bonds at bond `B'}%
380 \else
381 \gdef\fuseAx{171}\gdef\fuseAy{303}%
382 \gdef\fuseBx{171}\gdef\fuseBy{103}%
383 \global\@sixfuseposvtrue
384 \fi
385 \fi%
386 \if\memBer a\relax
387 \if@sixfuseposv
388 \XyMTeXWarning{Double fused bonds at bond `a'}%
389 \else
390 \gdef\fuseBx{171}\gdef\fuseBy{103}%
391 \gdef\fuseAx{0}\gdef\fuseAy{0}%
392 \global\@sixfuseposvtrue
393 \fi
394 \fi%
395 \if\memBer A\relax
396 \if@sixfuseposv
397 \XyMTeXWarning{Double fused bonds at bond `A'}%
398 \else
399 \gdef\fuseAx{171}\gdef\fuseAy{103}%
400 \gdef\fuseBx{0}\gdef\fuseBy{0}%
401 \global\@sixfuseposvtrue
402 \fi
403 \fi%
404 \if\memBer f\relax
405 \if@sixfuseposv
406 \XyMTeXWarning{Double fused bonds at bond `f'}%
407 \else
408 \gdef\fuseBx{0}\gdef\fuseBy{0}%
409 \gdef\fuseAx{-171}\gdef\fuseAy{103}%
410 \global\@sixfuseposvtrue
411 \fi
412 \fi%

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

The macros \sixunitvi has been revived for compativility.

\sixunitvi
459 \def\sixunitvi{\@ifnextchar[{\@six@unitvi}{\@six@unitvi[@]}}
460 \def\@six@unitvi[#1]#2#3#4{\sixfusevi[#1]{#2}{#3}{#4}}

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

461 \def\sixfuseh{\@ifnextchar({\@six@fuseh(@}{\@six@fuseh(@)}}
462 \def\@six@fuseh(#1){\@ifnextchar[{\@six@@fuseh(#1)[@}%
463 {\@six@@fuseh(#1)[@]}}
464 \def\@six@@fuseh(#1)[#2]#3#4#5{\@ifnextchar[%
465 {\@sixfuseh(#1)[#2]{#3}{#4}{#5}[@}%
466 {\@sixfuseh(#1)[#2]{#3}{#4}{#5}[@]}}
467 \def\@sixfuseh(#1)[#2]#3#4#5[#6]{%
468 % %%%%%%%%%%%%%%%%%%%%%%%%%%
469 % % treatment of atom list %
470 % %%%%%%%%%%%%%%%%%%%%%%%%%%
471 \iniatom\iniflag%initialize%
472 \test@vrtx@sixh{#3}%
473 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
474 % % adjustment of attached positions %
475 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
476 \sixfuseposh{#5}%
477 \begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/%
478 (800,880)(-240,-400){sixfuseh}%2002/4/30 by S. Fujita
479 % %%%%%%%%%%%%%%%%%%
480 % % outer skeleton %
481 % %%%%%%%%%%%%%%%%%%
482 % changed FUSE into a list 1993/11/21 by Shinsaku Fujita
483 {\resetbdsw%
484 \@bond@fuse@omit{#5}{#6}%
485 \set@skel@bondh{#1}{a}{a}% bond between 1 and 2 \@aaa -> \hskbonda etc
486 \set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc
487 \set@skel@bondh{#1}{c}{c}% bond between 3 and 4 \@ccc -> \hskbondc etc
488 \set@skel@bondh{#1}{d}{d}% bond between 4 and 5 \@ddd -> \hskbondd etc
489 \set@skel@bondh{#1}{e}{e}% bond between 5 and 6 \@eee -> \hskbonde etc
490 \set@skel@bondh{#1}{f}{f}% bond between 6 and 1 \@fff -> \hskbondf etc

491 }%

492 % %%%%%%%%%%%%%%%%%%%%%
493 % % inner double bond %
494 % %%%%%%%%%%%%%%%%%%%%%
495 \@tfor\member:=#2\do{%
496 \if\member r\relax%
497 \else \if\member l\relax%
498 \else \if\member a\relax%
499 \hbonda%
500 \else \if\member b\relax%
501 \hbondb%
502 \else \if\member c\relax%
503 \hbondc%
504 \else \if\member d\relax%
505 \hbondd%
506 \else \if\member e\relax%
507 \hbonde%
508 \else \if\member f\relax%
509 \hbondf%
510 \else \if\member A%left aromatic circle
511 \Put@oCircle(203,0){240}%                %circle
512 % %%%%%%%%%%%%%%%%%%%%%%%%%
513 % % inner bond attachment %
514 % %%%%%%%%%%%%%%%%%%%%%%%%%
515 \else \expandafter\twoCH@@R\member//%
516  \set@fusionadd@sixh
517 \fi\fi\fi\fi\fi\fi\fi\fi\fi}%
518 % %%%%%%%%%%%%%%%%%%%%%%%%
519 % % setting hetero atoms %
520 % %%%%%%%%%%%%%%%%%%%%%%%%
521 \set@hetatom@sixh{#3}{0}{0}{7}{0}%    %atom 1--6%
522 % %%%%%%%%%%%%%%%%%%%%%%%%
523 % % setting substituents %
524 % %%%%%%%%%%%%%%%%%%%%%%%%
525 \setsixringh{#4}{0}{0}{7}{0}%
526 \end{ShiftPicEnv}%
527 \sixfuseposh{#5}%%for FuseWaring when nested
528 \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
529 \def\sixfuseposh#1{%
530 \global\@sixfuseposvfalse
531 {\resetbdsw%
532 \@tfor\memBer:=#1\do{%
533 \if\memBer a\relax
534 \if@sixfuseposv
535 \XyMTeXWarning{Double fused bond at bond `a'}%
536 \else
537 \gdef\fuseAx{0}\gdef\fuseAy{0}%
538 \gdef\fuseBx{103}\gdef\fuseBy{171}%

539 \global\@sixfuseposvtrue
540 \fi
541 \fi%
542 \if\memBer A\relax
543 \if@sixfuseposv
544 \XyMTeXWarning{Double fused bond at bond `A'}%
545 \else
546 \gdef\fuseBx{0}\gdef\fuseBy{0}%
547 \gdef\fuseAx{103}\gdef\fuseAy{171}%
548 \global\@sixfuseposvtrue
549 \fi
550 \fi%
551 \if\memBer b\relax
552 \if@sixfuseposv
553 \XyMTeXWarning{Double fused bond at bond `b'}%
554 \else
555 \gdef\fuseAx{103}\gdef\fuseAy{171}%
556 \gdef\fuseBx{303}\gdef\fuseBy{171}%
557 \global\@sixfuseposvtrue
558 \fi
559 \fi%
560 \if\memBer B\relax
561 \if@sixfuseposv
562 \XyMTeXWarning{Double fused bonds at bond `B'}%
563 \else
564 \gdef\fuseBx{103}\gdef\fuseBy{171}%
565 \gdef\fuseAx{303}\gdef\fuseAy{171}%
566 \global\@sixfuseposvtrue
567 \fi
568 \fi%
569 \if\memBer c\relax
570 \if@sixfuseposv
571 \XyMTeXWarning{Double fused bonds at bond `c'}%
572 \else
573 \gdef\fuseAx{303}\gdef\fuseAy{171}%
574 \gdef\fuseBx{406}\gdef\fuseBy{0}%
575 \global\@sixfuseposvtrue
576 \fi
577 \fi%
578 \if\memBer C\relax
579 \if@sixfuseposv
580 \XyMTeXWarning{Double fused bonds at bond `C'}%
581 \else
582 \gdef\fuseBx{303}\gdef\fuseBy{171}%
583 \gdef\fuseAx{406}\gdef\fuseAy{0}%
584 \global\@sixfuseposvtrue
585 \fi
586 \fi%
587 \if\memBer d\relax
588 \if@sixfuseposv
589 \XyMTeXWarning{Double fused bonds at bond `d'}%
590 \else
591 \gdef\fuseAx{406}\gdef\fuseAy{0}%
592 \gdef\fuseBx{303}\gdef\fuseBy{-171}%

593 \global\@sixfuseposvtrue
594 \fi
595 \fi%
596 \if\memBer D\relax
597 \if@sixfuseposv
598 \XyMTeXWarning{Double fused bonds at bond `D'}%
599 \else
600 \gdef\fuseBx{406}\gdef\fuseBy{0}%
601 \gdef\fuseAx{303}\gdef\fuseAy{-171}%
602 \global\@sixfuseposvtrue
603 \fi
604 \fi%
605 \if\memBer e\relax
606 \if@sixfuseposv
607 \XyMTeXWarning{Double fused bonds at bond `e'}%
608 \else
609 \gdef\fuseAx{303}\gdef\fuseAy{-171}%
610 \gdef\fuseBx{103}\gdef\fuseBy{-171}%
611 \global\@sixfuseposvtrue
612 \fi
613 \fi%
614 \if\memBer E\relax
615 \if@sixfuseposv
616 \XyMTeXWarning{Double fused bonds at bond `E'}%
617 \else
618 \gdef\fuseBx{303}\gdef\fuseBy{-171}%
619 \gdef\fuseAx{103}\gdef\fuseAy{-171}%
620 \global\@sixfuseposvtrue
621 \fi
622 \fi%
623 \if\memBer f\relax
624 \if@sixfuseposv
625 \XyMTeXWarning{Double fused bonds at bond `f'}%
626 \else
627 \gdef\fuseAx{103}\gdef\fuseAy{-171}%
628 \gdef\fuseBx{0}\gdef\fuseBy{0}%
629 \global\@sixfuseposvtrue
630 \fi
631 \fi%
632 \if\memBer F\relax
633 \if@sixfuseposv
634 \XyMTeXWarning{Double fused bonds at bond `F'}%
635 \else
636 \gdef\fuseBx{103}\gdef\fuseBy{-171}%
637 \gdef\fuseAx{0}\gdef\fuseAy{0}%
638 \global\@sixfuseposvtrue
639 \fi
640 \fi}}}% end of the macro \sixfuseposh

The macros \sixunith has been revived for compativility.

\sixunith
641 \def\sixunith{\@ifnextchar[{\@six@unith}{\@six@unith[@]}}
642 \def\@six@unith[#1]#2#3#4{\sixfuseh[#1]{#2}{#3}{#4}}

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

643 \def\sixfusehi{\@ifnextchar({\@six@fusehi(@}{\@six@fusehi(@)}}
644 \def\@six@fusehi(#1){\@ifnextchar[{\@six@@fusehi(#1)[@}%
645 {\@six@@fusehi(#1)[@]}}
646 \def\@six@@fusehi(#1)[#2]#3#4#5{\@ifnextchar[%
647 {\@sixfusehi(#1)[#2]{#3}{#4}{#5}[@}%
648 {\@sixfusehi(#1)[#2]{#3}{#4}{#5}[@]}}
649 \def\@sixfusehi(#1)[#2]#3#4#5[#6]{%
650 % %%%%%%%%%%%%%%%%%%%%%%%%%%
651 % % treatment of atom list %
652 % %%%%%%%%%%%%%%%%%%%%%%%%%%
653 \iniatom\iniflag%initialize%
654 \test@vrtx@sixhi{#3}%
655 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
656 % % adjustment of attached positions %
657 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
658 \sixfuseposhi{#5}%
659 \begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/%
660 (800,880)(-240,-400){sixfusehi}%2002/4/30 by S. Fujita
661 % %%%%%%%%%%%%%%%%%%
662 % % outer skeleton %
663 % %%%%%%%%%%%%%%%%%%
664 % changed FUSE into a list 1993/11/21 by Shinsaku Fujita
665 {\resetbdsw%
666 \@bond@fuse@omit{#5}{#6}%
667 \set@skel@bondh{#1}{a}{c}% bond between 1 and 2 \@aaa -> \hskbondc etc
668 \set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc
669 \set@skel@bondh{#1}{c}{a}% bond between 3 and 4 \@ccc -> \hskbonda etc
670 \set@skel@bondh{#1}{d}{f}% bond between 4 and 5 \@ddd -> \hskbondf etc
671 \set@skel@bondh{#1}{e}{e}% bond between 5 and 6 \@eee -> \hskbonde etc
672 \set@skel@bondh{#1}{f}{d}% bond between 6 and 1 \@fff -> \hskbondd etc

673 }%

674 % %%%%%%%%%%%%%%%%%%%%%
675 % % inner double bond %
676 % %%%%%%%%%%%%%%%%%%%%%
677 \@tfor\member:=#2\do{%
678 \if\member r\relax%
679 \else \if\member l\relax%
680 \else \if\member a\relax%
681 \hbondc%
682 \else \if\member b\relax%
683 \hbondb%
684 \else \if\member c\relax%
685 \hbonda%
686 \else \if\member d\relax%
687 \hbondf%
688 \else \if\member e\relax%
689 \hbonde%
690 \else \if\member f\relax%

691 \hbondd%
692 \else \if\member A%left aromatic circle
693 \Put@oCircle(203,0){240}%                %circle
694 % %%%%%%%%%%%%%%%%%%%%%%%%%
695 % % inner bond attachment %
696 % %%%%%%%%%%%%%%%%%%%%%%%%%
697 \else \expandafter\twoCH@@R\member//%
698  \set@fusionadd@sixhi
699 \fi\fi\fi\fi\fi\fi\fi\fi\fi}%
700 % %%%%%%%%%%%%%%%%%%%%%%%%
701 % % setting hetero atoms %
702 % %%%%%%%%%%%%%%%%%%%%%%%%
703 \set@hetatom@sixh{#3}{5}{0}{5}{-1}%               %subst 1--4
704 \set@hetatom@sixh{#3}{11}{4}{7}{-1}%              %subst 5 and 6
705 % %%%%%%%%%%%%%%%%%%%%%%%%
706 % % setting substituents %
707 % %%%%%%%%%%%%%%%%%%%%%%%%
708 \setsixringh{#4}{5}{0}{5}{-1}%               %subst 1--4
709 \setsixringh{#4}{11}{4}{7}{-1}%              %subst 5 and 6
710 \end{ShiftPicEnv}%
711 \sixfuseposhi{#5}%%for FuseWaring when nested
712 \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
713 \def\sixfuseposhi#1{%
714 \global\@sixfuseposvfalse
715 {\resetbdsw%
716 \@tfor\memBer:=#1\do{%
717 \if\memBer C\relax
718 \if@sixfuseposv
719 \XyMTeXWarning{Double fused bond at bond `C'}%
720 \else
721 \gdef\fuseAx{0}\gdef\fuseAy{0}%
722 \gdef\fuseBx{103}\gdef\fuseBy{171}%
723 \global\@sixfuseposvtrue
724 \fi
725 \fi%
726 \if\memBer c\relax
727 \if@sixfuseposv
728 \XyMTeXWarning{Double fused bond at bond `c'}%
729 \else
730 \gdef\fuseBx{0}\gdef\fuseBy{0}%
731 \gdef\fuseAx{103}\gdef\fuseAy{171}%
732 \global\@sixfuseposvtrue
733 \fi
734 \fi%
735 \if\memBer B\relax
736 \if@sixfuseposv
737 \XyMTeXWarning{Double fused bond at bond `B'}%

738 \else
739 \gdef\fuseAx{103}\gdef\fuseAy{171}%
740 \gdef\fuseBx{303}\gdef\fuseBy{171}%
741 \global\@sixfuseposvtrue
742 \fi
743 \fi%
744 \if\memBer b\relax
745 \if@sixfuseposv
746 \XyMTeXWarning{Double fused bonds at bond `b'}%
747 \else
748 \gdef\fuseBx{103}\gdef\fuseBy{171}%
749 \gdef\fuseAx{303}\gdef\fuseAy{171}%
750 \global\@sixfuseposvtrue
751 \fi
752 \fi%
753 \if\memBer A\relax
754 \if@sixfuseposv
755 \XyMTeXWarning{Double fused bonds at bond `A'}%
756 \else
757 \gdef\fuseAx{303}\gdef\fuseAy{171}%
758 \gdef\fuseBx{406}\gdef\fuseBy{0}%
759 \global\@sixfuseposvtrue
760 \fi
761 \fi%
762 \if\memBer a\relax
763 \if@sixfuseposv
764 \XyMTeXWarning{Double fused bonds at bond `a'}%
765 \else
766 \gdef\fuseBx{303}\gdef\fuseBy{171}%
767 \gdef\fuseAx{406}\gdef\fuseAy{0}%
768 \global\@sixfuseposvtrue
769 \fi
770 \fi%
771 \if\memBer F\relax
772 \if@sixfuseposv
773 \XyMTeXWarning{Double fused bonds at bond `F'}%
774 \else
775 \gdef\fuseAx{406}\gdef\fuseAy{0}%
776 \gdef\fuseBx{303}\gdef\fuseBy{-171}%
777 \global\@sixfuseposvtrue
778 \fi
779 \fi%
780 \if\memBer f\relax
781 \if@sixfuseposv
782 \XyMTeXWarning{Double fused bonds at bond `f'}%
783 \else
784 \gdef\fuseBx{406}\gdef\fuseBy{0}%
785 \gdef\fuseAx{303}\gdef\fuseAy{-171}%
786 \global\@sixfuseposvtrue
787 \fi
788 \fi%
789 \if\memBer E\relax
790 \if@sixfuseposv
791 \XyMTeXWarning{Double fused bonds at bond `E'}%

792 \else
793 \gdef\fuseAx{303}\gdef\fuseAy{-171}%
794 \gdef\fuseBx{103}\gdef\fuseBy{-171}%
795 \global\@sixfuseposvtrue
796 \fi
797 \fi%
798 \if\memBer e\relax
799 \if@sixfuseposv
800 \XyMTeXWarning{Double fused bonds at bond `e'}%
801 \else
802 \gdef\fuseBx{303}\gdef\fuseBy{-171}%
803 \gdef\fuseAx{103}\gdef\fuseAy{-171}%
804 \global\@sixfuseposvtrue
805 \fi
806 \fi%
807 \if\memBer D\relax
808 \if@sixfuseposv
809 \XyMTeXWarning{Double fused bonds at bond `D'}%
810 \else
811 \gdef\fuseAx{103}\gdef\fuseAy{-171}%
812 \gdef\fuseBx{0}\gdef\fuseBy{0}%
813 \global\@sixfuseposvtrue
814 \fi
815 \fi%
816 \if\memBer d\relax
817 \if@sixfuseposv
818 \XyMTeXWarning{Double fused bonds at bond `d'}%
819 \else
820 \gdef\fuseBx{103}\gdef\fuseBy{-171}%
821 \gdef\fuseAx{0}\gdef\fuseAy{0}%
822 \global\@sixfuseposvtrue
823 \fi
824 \fi}}}% end of the macro \sixfuseposhi

The macros \sixunithi has been revived for compativility.

\sixunithi
825 \def\sixunithi{\@ifnextchar[{\@six@unithi}{\@six@unithi[@]}}
826 \def\@six@unithi[#1]#2#3#4{\sixfusehi[#1]{#2}{#3}{#4}}

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

827 \def\fivefusev{\@ifnextchar({\@five@fusev(@}{\@five@fusev(@)}}
828 \def\@five@fusev(#1){\@ifnextchar[{\@five@@fusev(#1)[@}%
829 {\@five@@fusev(#1)[@]}}
830 \def\@five@@fusev(#1)[#2]#3#4#5{\@ifnextchar[%
831 {\@fivefusev(#1)[#2]{#3}{#4}{#5}[@}%
832 {\@fivefusev(#1)[#2]{#3}{#4}{#5}[@]}}
833 \def\@fivefusev(#1)[#2]#3#4#5[#6]{%
834 \iniatom\iniflag%initialize
835 % %%%%%%%%%%%%%%%%%%%%%%%%%%
836 % % treatment of atom list %

837 % %%%%%%%%%%%%%%%%%%%%%%%%%%
838 \test@vertix@sixv{#3}{d}{c}{b}{f}{e}{@}%
839 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
840 % % adjustment of attached positions %
841 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
842 \fivefuseposv{#5}%
843 \begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/%
844 (800,880)(-\shiftii,-\shifti){fivefusev}%2002/4/30 by S. Fujita
845 % %%%%%%%%%%%%%%%%%%%
846 % %% outer skeleton %
847 % %%%%%%%%%%%%%%%%%%%
848 % changed FUSE to a list 1993/11/21 by Shinsaku Fujita
849 {\resetbdsw%
850 \@bond@fuse@omit{#5}{#6}%
851 \set@skel@bond{#1}{a}{c}% bond between 1 and 2 \@aaa -> \skbondc etc
852 \set@skel@bond{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc
853 \set@skel@longbond{#1}{c}{skbondhoriz}%
854  % bond between 3 and 4 \@ccc -> \skbondhoriz etc
855 \set@skel@bond{#1}{d}{e}% bond between 4 and 5 \@ddd -> \skbonde etc
856 \set@skel@bond{#1}{e}{d}% bond between 5 and 1 \@eee -> \skbondd etc

857 }%

858 % %%%%%%%%%%%%%%%%%%%%%%
859 % %% inner double bond %
860 % %%%%%%%%%%%%%%%%%%%%%%
861 \@tfor\member:=#2\do{%
862 \if\member r%
863 \else\if\member a\relax%
864 \bondc%
865 \else\if\member b\relax%
866 \bondb%
867 \else\if\member c\relax%
868 \bondhoriz%
869 \else\if\member d\relax%
870 \bonde%
871 \else\if\member e\relax%
872 \bondd%
873 \else
874 % %%%%%%%%%%%%%%%%%%%%%%%%%
875 % % inner bond attachment %
876 % %%%%%%%%%%%%%%%%%%%%%%%%%
877  \expandafter\twoCH@@R\member//%
878  \set@fusionadd@fivev
879 \fi\fi\fi\fi\fi\fi}%
880 % %%%%%%%%%%%%%%%%%%%%%%%
881 % % setting heteroatoms %
882 % %%%%%%%%%%%%%%%%%%%%%%%
883 \set@hetatom@sixv{#3}{5}{1}{5}{-1}%   % for 1 to 3
884 \set@hetatom@sixv{#3}{10}{4}{7}{-1}%  % for 4 to 5
885 % %%%%%%%%%%%%%%%%%%%%%%%%
886 % % setting substituents %
887 % %%%%%%%%%%%%%%%%%%%%%%%%
888 \setsixringv{#4}{5}{1}{5}{-1}%   % for 1 to 3
889 \setsixringv{#4}{10}{4}{7}{-1}%  % for 4 to 5

890 \end{ShiftPicEnv}%
891 {\let\XyMTeXWarning\@gobble
892 \fivefuseposv{#5}}%%for FuseWaring when nested
893 \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
894 \def\fivefuseposv#1{%
895 \global\@sixfuseposvfalse
896 {\resetbdsw%
897 \@tfor\memBer:=#1\do{%
898 \if\memBer c\relax
899  \XyMTeXWarning{Not-used fusion at bond `c'}%
900 \fi
901 \if\memBer C\relax
902  \XyMTeXWarning{Not-used fusion at bond `C'}%
903 \fi
904 \if\memBer b\relax
905 \if@sixfuseposv
906 \XyMTeXWarning{Double fused bonds at bond `b'}%
907 \else
908 \gdef\fuseBx{171}\gdef\fuseBy{303}%
909 \gdef\fuseAx{171}\gdef\fuseAy{103}%
910 \global\@sixfuseposvtrue
911 \fi
912 \fi%
913 \if\memBer B\relax
914 \if@sixfuseposv
915 \XyMTeXWarning{Double fused bonds at bond `B'}%
916 \else
917 \gdef\fuseAx{171}\gdef\fuseAy{303}%
918 \gdef\fuseBx{171}\gdef\fuseBy{103}%
919 \global\@sixfuseposvtrue
920 \fi
921 \fi%
922 \if\memBer a\relax
923 \if@sixfuseposv
924 \XyMTeXWarning{Double fused bonds at bond `a'}%
925 \else
926 \gdef\fuseBx{171}\gdef\fuseBy{103}%
927 \gdef\fuseAx{0}\gdef\fuseAy{0}%
928 \global\@sixfuseposvtrue
929 \fi
930 \fi%
931 \if\memBer A\relax
932 \if@sixfuseposv
933 \XyMTeXWarning{Double fused bonds at bond `A'}%
934 \else
935 \gdef\fuseAx{171}\gdef\fuseAy{103}%
936 \gdef\fuseBx{0}\gdef\fuseBy{0}%

937 \global\@sixfuseposvtrue
938 \fi
939 \fi%
940 \if\memBer e\relax
941 \if@sixfuseposv
942 \XyMTeXWarning{Double fused bonds at bond `f'}%
943 \else
944 \gdef\fuseBx{0}\gdef\fuseBy{0}%
945 \gdef\fuseAx{-171}\gdef\fuseAy{103}%
946 \global\@sixfuseposvtrue
947 \fi
948 \fi%
949 \if\memBer E\relax
950 \if@sixfuseposv
951 \XyMTeXWarning{Double fused bonds at bond `F'}%
952 \else
953 \gdef\fuseAx{0}\gdef\fuseAy{0}%
954 \gdef\fuseBx{-171}\gdef\fuseBy{103}%
955 \global\@sixfuseposvtrue
956 \fi
957 \fi%
958 \if\memBer d\relax
959 \if@sixfuseposv
960 \XyMTeXWarning{Double fused bonds at bond `e'}%
961 \else
962 \gdef\fuseBx{-171}\gdef\fuseBy{103}%
963 \gdef\fuseAx{-171}\gdef\fuseAy{303}%
964 \global\@sixfuseposvtrue
965 \fi
966 \fi%
967 \if\memBer D\relax
968 \if@sixfuseposv
969 \XyMTeXWarning{Double fused bonds at bond `E'}%
970 \else
971 \gdef\fuseAx{-171}\gdef\fuseAy{103}%
972 \gdef\fuseBx{-171}\gdef\fuseBy{303}%
973 \global\@sixfuseposvtrue
974 \fi
975 \fi%
976 }}}% end of the macro \fivefuseposv

The macros \fiveunitv has been revived for compativility.

\fiveunitv
977 \def\fiveunitv{\@ifnextchar[{\@five@unitv}{\@five@unitv[@]}}
978 \def\@five@unitv[#1]#2#3#4{\fivefusev[#1]{#2}{#3}{#4}}

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)

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.
\fivefusevi{1==N}{1==H;2==F}{a}

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

979 \def\fivefusevi{\@ifnextchar({\@five@fusevi(@}{\@five@fusevi(@)}}
980 \def\@five@fusevi(#1){\@ifnextchar[{\@five@@fusevi(#1)[@}%
981 {\@five@@fusevi(#1)[@]}}
982 \def\@five@@fusevi(#1)[#2]#3#4#5{\@ifnextchar[%
983 {\@fivefusevi(#1)[#2]{#3}{#4}{#5}[@}%

 984 {\@fivefusevi(#1)[#2]{#3}{#4}{#5}[@]}}
 985 \def\@fivefusevi(#1)[#2]#3#4#5[#6]{%
 986 \iniatom\iniflag%initialize
 987 % %%%%%%%%%%%%%%%%%%%%%%%%%%
 988 % % treatment of atom list %
 989 % %%%%%%%%%%%%%%%%%%%%%%%%%%
 990 \test@vertix@sixv{#3}{a}{b}{c}{e}{f}{@}%
 991 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 992 % % adjustment of attached positions %
 993 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 994 \fivefuseposvi{#5}%
 995 \begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/%
 996 (800,880)(-\shiftii,-\shifti){fivefusevi}%2002/4/30 by S. Fujita
 997 % %%%%%%%%%%%%%%%%%%
 998 % % outer skeleton %
 999 % %%%%%%%%%%%%%%%%%%
1000 % changed FUSE to a list 1993/11/21 by Shinsaku Fujita
1001 {\resetbdsw%
1002 \@bond@fuse@omit{#5}{#6}%
1003 \set@skel@bond{#1}{a}{a}% bond between 1 and 2 \@aaa -> \skbonda etc
1004 \set@skel@bond{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc
1005 \set@skel@longbond{#1}{c}{skbondhorizi}%
1006  % bond between 3 and 4 \@ccc -> \skbondhorizi etc
1007 \set@skel@bond{#1}{d}{e}% bond between 4 and 5 \@ddd -> \skbonde etc
1008 \set@skel@bond{#1}{e}{f}% bond between 5 and 6 \@eee -> \skbondf etc

1009 }%

1010 % %%%%%%%%%%%%%%%%%%%%%
1011 % % inner double bond %
1012 % %%%%%%%%%%%%%%%%%%%%%
1013 \@tfor\member:=#2\do{%
1014 \if\member r%
1015 \else\if\member a\relax%
1016 \bonda%
1017 \else\if\member b\relax%
1018 \bondb%
1019 \else\if\member c\relax%
1020 \bondhorizi%
1021 \else\if\member d\relax%
1022 \bonde%
1023 \else\if\member e\relax%
1024 \bondf%
1025 \else
1026 % %%%%%%%%%%%%%%%%%%%%%%%%%
1027 % % inner bond attachment %
1028 % %%%%%%%%%%%%%%%%%%%%%%%%%
1029  \expandafter\twoCH@@R\member//%
1030  \set@fusionadd@fivevi
1031 \fi\fi\fi\fi\fi\fi}%
1032 % %%%%%%%%%%%%%%%%%%%%%%%
1033 % % setting heteroatoms %
1034 % %%%%%%%%%%%%%%%%%%%%%%%
1035 \set@hetatom@sixv{#3}{0}{0}{4}{0}%  % for 1 to 3
1036 \set@hetatom@sixv{#3}{1}{4}{7}{0}%  % for 4 to 5

1037 % %%%%%%%%%%%%%%%%%%%%%%%%
1038 % % setting substituents %
1039 % %%%%%%%%%%%%%%%%%%%%%%%%
1040 \setsixringv{#4}{0}{0}{4}{0}%  % for 1 to 3
1041 \setsixringv{#4}{1}{4}{7}{0}%  % for 4 to 5
1042 \end{ShiftPicEnv}%
1043 {\let\XyMTeXWarning\@gobble
1044 \fivefuseposvi{#5}}%%for FuseWaring when nested
1045 \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
1046 \def\fivefuseposvi#1{%
1047 \global\@sixfuseposvfalse
1048 {\resetbdsw%
1049 \@tfor\memBer:=#1\do{%
1050 \if\memBer a\relax
1051 \if@sixfuseposv
1052 \XyMTeXWarning{Double fused bond at bond `a'}%
1053 \else
1054 \gdef\fuseAx{0}\gdef\fuseAy{406}%
1055 \gdef\fuseBx{171}\gdef\fuseBy{303}%
1056 \global\@sixfuseposvtrue

1057 \fi

1058 \fi%
1059 \if\memBer A\relax
1060 \if@sixfuseposv
1061 \XyMTeXWarning{Double fused bond at bond `A'}%
1062 \else
1063 \gdef\fuseBx{0}\gdef\fuseBy{406}%
1064 \gdef\fuseAx{171}\gdef\fuseAy{303}%
1065 \global\@sixfuseposvtrue

1066 \fi

1067 \fi%
1068 \if\memBer b\relax
1069 \if@sixfuseposv
1070 \XyMTeXWarning{Double fused bond at bond `b'}%
1071 \else
1072 \gdef\fuseAx{171}\gdef\fuseAy{303}%
1073 \gdef\fuseBx{171}\gdef\fuseBy{103}%
1074 \global\@sixfuseposvtrue

1075 \fi

1076 \fi%
1077 \if\memBer B\relax
1078 \if@sixfuseposv
1079 \XyMTeXWarning{Double fused bonds at bond `B'}%
1080 \else
1081 \gdef\fuseBx{171}\gdef\fuseBy{303}%
1082 \gdef\fuseAx{171}\gdef\fuseAy{103}%
1083 \global\@sixfuseposvtrue

1084 \fi

1085 \fi%
1086 \if\memBer c\relax
1087  \XyMTeXWarning{Not-used fusion at bond `c'}%

1088 \fi

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

1091 \fi

1092 \if\memBer d\relax
1093 \if@sixfuseposv
1094 \XyMTeXWarning{Double fused bonds at bond `d'}%
1095 \else
1096 \gdef\fuseAx{-171}\gdef\fuseAy{103}%
1097 \gdef\fuseBx{-171}\gdef\fuseBy{303}%
1098 \global\@sixfuseposvtrue

1099 \fi

1100 \fi%
1101 \if\memBer D\relax
1102 \if@sixfuseposv
1103 \XyMTeXWarning{Double fused bonds at bond `D'}%
1104 \else
1105 \gdef\fuseBx{-171}\gdef\fuseBy{103}%
1106 \gdef\fuseAx{-171}\gdef\fuseAy{303}%
1107 \global\@sixfuseposvtrue

1108 \fi

1109 \fi%
1110 \if\memBer e\relax
1111 \if@sixfuseposv
1112 \XyMTeXWarning{Double fused bonds at bond `e'}%
1113 \else
1114 \gdef\fuseAx{-171}\gdef\fuseAy{303}%
1115 \gdef\fuseBx{0}\gdef\fuseBy{406}%
1116 \global\@sixfuseposvtrue

1117 \fi

1118 \fi%
1119 \if\memBer E\relax
1120 \if@sixfuseposv
1121 \XyMTeXWarning{Double fused bonds at bond `e'}%
1122 \else
1123 \gdef\fuseBx{-171}\gdef\fuseBy{303}%
1124 \gdef\fuseAx{0}\gdef\fuseAy{406}%
1125 \global\@sixfuseposvtrue

1126 \fi

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

The macros \fiveunitvi has been revived for compativility.

\fiveunitvi
1128 \def\fiveunitvi{\@ifnextchar[{\@five@unitvi}{\@five@unitvi[@]}}
1129 \def\@five@unitvi[#1]#2#3#4{\fivefusevi[#1]{#2}{#3}{#4}}

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

1130 \def\fivefuseh{\@ifnextchar({\@five@fuseh(@}{\@five@fuseh(@)}}
1131 \def\@five@fuseh(#1){\@ifnextchar[{\@five@@fuseh(#1)[@}%
1132 {\@five@@fuseh(#1)[@]}}
1133 \def\@five@@fuseh(#1)[#2]#3#4#5{\@ifnextchar[%
1134 {\@fivefuseh(#1)[#2]{#3}{#4}{#5}[@}%
1135 {\@fivefuseh(#1)[#2]{#3}{#4}{#5}[@]}}
1136 \def\@fivefuseh(#1)[#2]#3#4#5[#6]{%
1137 \iniatom\iniflag%initialize
1138 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1139 % % treatment of atom list %
1140 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1141 \test@vertix@sixv{#3}{d}{c}{b}{f}{e}{@}%
1142 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1143 % % adjustment of attached positions %
1144 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1145 \fivefuseposh{#5}%
1146 \begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/%
1147 (800,880)(-240,-400){fivefuseh}%2002/4/30 by S. Fujita
1148 % %%%%%%%%%%%%%%%%%%
1149 % % outer skeleton %
1150 % %%%%%%%%%%%%%%%%%%
1151 % changed FUSE to a list 1993/11/21 by Shinsaku Fujita
1152 {\resetbdsw%
1153 \@bond@fuse@omit{#5}{#6}%
1154 \set@skel@bondh{#1}{a}{c}% bond between 1 and 2 \@aaa -> \skbondc etc
1155 \set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc
1156 \set@skel@longbond{#1}{c}{hskbondvert}%
1157  % bond between 3 and 4 \@ccc -> \hskbondvert etc
1158 \set@skel@bondh{#1}{d}{e}% bond between 4 and 5 \@ddd -> \skbonde etc
1159 \set@skel@bondh{#1}{e}{d}% bond between 5 and 6 \@eee -> \skbondd etc

1160 }%

1161 % %%%%%%%%%%%%%%%%%%%%%
1162 % % inner double bond %
1163 % %%%%%%%%%%%%%%%%%%%%%
1164 \@tfor\member:=#2\do{%
1165 \if\member r%
1166 \else \if\member a\relax%
1167 \hbondc%
1168 \else \if\member b\relax%
1169 \hbondb%
1170 \else \if\member c\relax%
1171 \hbondvert%
1172 \else \if\member d\relax%
1173 \hbonde%
1174 \else \if\member e\relax%
1175 \hbondd%
1176 \else \if\member A%left aromatic circle
1177 \Put@oCircle(233,0){180}%               %circle
1178 \else
1179 % %%%%%%%%%%%%%%%%%%%%%%%%%
1180 % % inner bond attachment %
1181 % %%%%%%%%%%%%%%%%%%%%%%%%%

1182  \expandafter\twoCH@@R\member//%
1183  \set@fusionadd@fiveh
1184 \fi\fi\fi\fi\fi\fi\fi}%
1185 % %%%%%%%%%%%%%%%%%%%%%%%
1186 % % setting heteroatoms %
1187 % %%%%%%%%%%%%%%%%%%%%%%%
1188 \set@hetatom@sixh{#3}{5}{1}{5}{-1}%   % for 1 to 3
1189 \set@hetatom@sixh{#3}{10}{4}{7}{-1}%  % for 4 to 5
1190 % %%%%%%%%%%%%%%%%%%%%%%%%
1191 % % setting substituents %
1192 % %%%%%%%%%%%%%%%%%%%%%%%%
1193 \setsixringh{#4}{5}{1}{5}{-1}%   % for 1 to 3
1194 \setsixringh{#4}{10}{4}{7}{-1}%  % for 4 to 5
1195 \end{ShiftPicEnv}%
1196 {\let\XyMTeXWarning\@gobble
1197 \fivefuseposh{#5}}%for FuseWaring when nested%
1198 \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
1199 \def\fivefuseposh#1{%
1200 \global\@sixfuseposvfalse
1201 {\resetbdsw%
1202 \@tfor\memBer:=#1\do{%
1203 \if\memBer c\relax
1204  \XyMTeXWarning{Not-used fusion at bond `c'}%

1205 \fi

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

1208 \fi

1209 \if\memBer B\relax
1210 \if@sixfuseposv
1211 \XyMTeXWarning{Double fused bond at bond `B'}%
1212 \else
1213 \gdef\fuseAx{103}\gdef\fuseAy{171}%
1214 \gdef\fuseBx{303}\gdef\fuseBy{171}%
1215 \global\@sixfuseposvtrue

1216 \fi

1217 \fi%
1218 \if\memBer b\relax
1219 \if@sixfuseposv
1220 \XyMTeXWarning{Double fused bonds at bond `b'}%
1221 \else
1222 \gdef\fuseBx{103}\gdef\fuseBy{171}%
1223 \gdef\fuseAx{303}\gdef\fuseAy{171}%
1224 \global\@sixfuseposvtrue

1225 \fi

1226 \fi%
1227 \if\memBer A\relax

1228 \if@sixfuseposv
1229 \XyMTeXWarning{Double fused bonds at bond `A'}%
1230 \else
1231 \gdef\fuseAx{303}\gdef\fuseAy{171}%
1232 \gdef\fuseBx{406}\gdef\fuseBy{0}%
1233 \global\@sixfuseposvtrue

1234 \fi

1235 \fi%
1236 \if\memBer a\relax
1237 \if@sixfuseposv
1238 \XyMTeXWarning{Double fused bonds at bond `a'}%
1239 \else
1240 \gdef\fuseBx{303}\gdef\fuseBy{171}%
1241 \gdef\fuseAx{406}\gdef\fuseAy{0}%
1242 \global\@sixfuseposvtrue

1243 \fi

1244 \fi%
1245 \if\memBer E\relax
1246 \if@sixfuseposv
1247 \XyMTeXWarning{Double fused bonds at bond `E'}%
1248 \else
1249 \gdef\fuseAx{406}\gdef\fuseAy{0}%
1250 \gdef\fuseBx{303}\gdef\fuseBy{-171}%
1251 \global\@sixfuseposvtrue

1252 \fi

1253 \fi%
1254 \if\memBer e\relax
1255 \if@sixfuseposv
1256 \XyMTeXWarning{Double fused bonds at bond `e'}%
1257 \else
1258 \gdef\fuseBx{406}\gdef\fuseBy{0}%
1259 \gdef\fuseAx{303}\gdef\fuseAy{-171}%
1260 \global\@sixfuseposvtrue

1261 \fi

1262 \fi%
1263 \if\memBer D\relax
1264 \if@sixfuseposv
1265 \XyMTeXWarning{Double fused bonds at bond `D'}%
1266 \else
1267 \gdef\fuseAx{303}\gdef\fuseAy{-171}%
1268 \gdef\fuseBx{103}\gdef\fuseBy{-171}%
1269 \global\@sixfuseposvtrue

1270 \fi

1271 \fi%
1272 \if\memBer d\relax
1273 \if@sixfuseposv
1274 \XyMTeXWarning{Double fused bonds at bond `d'}%
1275 \else
1276 \gdef\fuseBx{303}\gdef\fuseBy{-171}%
1277 \gdef\fuseAx{103}\gdef\fuseAy{-171}%
1278 \global\@sixfuseposvtrue

1279 \fi

1280 \fi%
1281 }}}% end of the macro \fivefuseposh

The macros \fiveunith has been revived for compativility.

\fiveunith
1282 \def\fiveunith{\@ifnextchar[{\@five@unith}{\@five@unith[@]}}
1283 \def\@five@unith[#1]#2#3#4{\fivefuseh[#1]{#2}{#3}{#4}}

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)

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

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

1284 \def\fivefusehi{\@ifnextchar({\@five@fusehi(@}{\@five@fusehi(@)}}
1285 \def\@five@fusehi(#1){\@ifnextchar[{\@five@@fusehi(#1)[@}%
1286 {\@five@@fusehi(#1)[@]}}
1287 \def\@five@@fusehi(#1)[#2]#3#4#5{\@ifnextchar[%
1288 {\@fivefusehi(#1)[#2]{#3}{#4}{#5}[@}%
1289 {\@fivefusehi(#1)[#2]{#3}{#4}{#5}[@]}}
1290 \def\@fivefusehi(#1)[#2]#3#4#5[#6]{%
1291 \iniatom\iniflag%initialize
1292 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1293 % % treatment of atom list %
1294 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1295 \test@vertix@sixv{#3}{a}{b}{c}{e}{f}{@}%
1296 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1297 % % adjustment of attached positions %
1298 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1299 \fivefuseposhi{#5}%
1300 \begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/%
1301 (800,880)(-240,-400){fivefusehi}%2002/4/30 by S. Fujita
1302 % %%%%%%%%%%%%%%%%%%
1303 % % outer skeleton %
1304 % %%%%%%%%%%%%%%%%%%
1305 % changed FUSE to a list 1993/11/21 by Shinsaku Fujita
1306 {\resetbdsw%
1307 \@bond@fuse@omit{#5}{#6}%
1308 \set@skel@bondh{#1}{a}{a}% bond between 1 and 2 \@aaa -> \hskbonda etc
1309 \set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc
1310 \set@skel@longbond{#1}{c}{hskbondverti}%
1311  % bond between 3 and 4 \@ccc -> \hskbondverti etc
1312 \set@skel@bondh{#1}{d}{e}% bond between 4 and 5 \@ddd -> \hskbonde etc
1313 \set@skel@bondh{#1}{e}{f}% bond between 5 and 6 \@eee -> \hskbondf etc

1314 }%

1315 % %%%%%%%%%%%%%%%%%%%%%
1316 % % inner double bond %
1317 % %%%%%%%%%%%%%%%%%%%%%
1318 \@tfor\member:=#2\do{%
1319 \if\member r%
1320 \else \if\member a\relax%
1321 \hbonda%
1322 \else \if\member b\relax%
1323 \hbondb%
1324 \else \if\member c\relax%
1325 \hbondverti%
1326 \else \if\member d\relax%
1327 \hbonde%
1328 \else \if\member e\relax%

1329 \hbondf%
1330 \else \if\member A%left aromatic circle
1331 \Put@oCircle(173,0){180}%                %circle
1332 \else
1333 % %%%%%%%%%%%%%%%%%%%%%%%%%
1334 % % inner bond attachment %
1335 % %%%%%%%%%%%%%%%%%%%%%%%%%
1336  \expandafter\twoCH@@R\member//%
1337  \set@fusionadd@fivehi
1338 \fi\fi\fi\fi\fi\fi\fi}%
1339 % %%%%%%%%%%%%%%%%%%%%%%%
1340 % % setting heteroatoms %
1341 % %%%%%%%%%%%%%%%%%%%%%%%
1342 \set@hetatom@sixh{#3}{0}{0}{4}{0}%  % for 1 to 3
1343 \set@hetatom@sixh{#3}{1}{4}{7}{0}%  % for 4 to 5
1344 % %%%%%%%%%%%%%%%%%%%%%%%%
1345 % % setting substituents %
1346 % %%%%%%%%%%%%%%%%%%%%%%%%
1347 \setsixringh{#4}{0}{0}{4}{0}%  % for 1 to 3
1348 \setsixringh{#4}{1}{4}{7}{0}%  % for 4 to 5
1349 \end{ShiftPicEnv}%
1350 {\let\XyMTeXWarning\@gobble
1351 \fivefuseposhi{#5}}%for FuseWaring when nested
1352 \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
1353 \def\fivefuseposhi#1{%
1354 \global\@sixfuseposvfalse
1355 {\resetbdsw%
1356 \@tfor\memBer:=#1\do{%
1357 \if\memBer a\relax
1358 \if@sixfuseposv
1359 \XyMTeXWarning{Double fused bond at bond `a'}%
1360 \else
1361 \gdef\fuseAx{0}\gdef\fuseAy{0}%
1362 \gdef\fuseBx{103}\gdef\fuseBy{171}%
1363 \global\@sixfuseposvtrue

1364 \fi

1365 \fi%
1366 \if\memBer A\relax
1367 \if@sixfuseposv
1368 \XyMTeXWarning{Double fused bond at bond `A'}%
1369 \else
1370 \gdef\fuseBx{0}\gdef\fuseBy{0}%
1371 \gdef\fuseAx{103}\gdef\fuseAy{171}%
1372 \global\@sixfuseposvtrue

1373 \fi

1374 \fi%

1375 \if\memBer b\relax
1376 \if@sixfuseposv
1377 \XyMTeXWarning{Double fused bond at bond `b'}%
1378 \else
1379 \gdef\fuseAx{103}\gdef\fuseAy{171}%
1380 \gdef\fuseBx{303}\gdef\fuseBy{171}%
1381 \global\@sixfuseposvtrue

1382 \fi

1383 \fi%
1384 \if\memBer B\relax
1385 \if@sixfuseposv
1386 \XyMTeXWarning{Double fused bonds at bond `B'}%
1387 \else
1388 \gdef\fuseBx{103}\gdef\fuseBy{171}%
1389 \gdef\fuseAx{303}\gdef\fuseAy{171}%
1390 \global\@sixfuseposvtrue

1391 \fi

1392 \fi%
1393 \if\memBer c\relax
1394  \XyMTeXWarning{Not-used fusion at bond `c'}%

1395 \fi

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

1398 \fi

1399 \if\memBer d\relax
1400 \if@sixfuseposv
1401 \XyMTeXWarning{Double fused bonds at bond `d'}%
1402 \else
1403 \gdef\fuseAx{303}\gdef\fuseAy{-171}%
1404 \gdef\fuseBx{103}\gdef\fuseBy{-171}%
1405 \global\@sixfuseposvtrue

1406 \fi

1407 \fi%
1408 \if\memBer D\relax
1409 \if@sixfuseposv
1410 \XyMTeXWarning{Double fused bonds at bond `D'}%
1411 \else
1412 \gdef\fuseBx{303}\gdef\fuseBy{-171}%
1413 \gdef\fuseAx{103}\gdef\fuseAy{-171}%
1414 \global\@sixfuseposvtrue

1415 \fi

1416 \fi%
1417 \if\memBer e\relax
1418 \if@sixfuseposv
1419 \XyMTeXWarning{Double fused bonds at bond `e'}%
1420 \else
1421 \gdef\fuseAx{103}\gdef\fuseAy{-171}%
1422 \gdef\fuseBx{0}\gdef\fuseBy{0}%
1423 \global\@sixfuseposvtrue

1424 \fi

1425 \fi%
1426 \if\memBer E\relax
1427 \if@sixfuseposv
1428 \XyMTeXWarning{Double fused bonds at bond `E'}%

1429 \else
1430 \gdef\fuseBx{103}\gdef\fuseBy{-171}%
1431 \gdef\fuseAx{0}\gdef\fuseAy{0}%
1432 \global\@sixfuseposvtrue

1433 \fi

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

The macros \fiveunithi has been revived for compativility.

\fiveunithi
1435 \def\fiveunithi{\@ifnextchar[{\@five@unithi}{\@five@unithi[@]}}
1436 \def\@five@unithi[#1]#2#3#4{\fivefusehi[#1]{#2}{#3}{#4}}

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)

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

1437 \def\fourfuse{\@ifnextchar({\@four@fuse(@}{\@four@fuse(@)}}
1438 \def\@four@fuse(#1){\@ifnextchar[{\@four@@fuse(#1)[@}%
1439 {\@four@@fuse(#1)[@]}}
1440 \def\@four@@fuse(#1)[#2]#3#4#5{\@ifnextchar[%
1441 {\@fourfuse(#1)[#2]{#3}{#4}{#5}[@}%
1442 {\@fourfuse(#1)[#2]{#3}{#4}{#5}[@]}}
1443 \def\@fourfuse(#1)[#2]#3#4#5[#6]{%
1444 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1445 % % treatment of atom list %
1446 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1447 \iniatom\iniflag%initialize
1448 \test@vertix@sixv{#3}{e}{c}{b}{f}{@}{@}%
1449 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1450 % % adustment of subs positions %
1451 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1452 \fourfusepos{#5}%
1453 \begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/%
1454 (800,880)(-571,-137){fourfuse}%2002/4/30 by S. Fujita
1455 (571,137)(171,-103)%
1456 % %%%%%%%%%%%%%%%%%%
1457 % % outer skeleton %
1458 % %%%%%%%%%%%%%%%%%%
1459 {\resetbdsw%
1460 \@bond@fuse@omit{#5}{#6}%
1461 \Put@Direct(0,0){\set@skel@longbond{#1}{a}{skbondshorizi}}%
1462  % bond between 1 and 2 \@aaa -> \skbondshorizi etc
1463 \Put@Direct(-142,0){\set@skel@bond{#1}{b}{b}}%
1464  % bond between 2 and 3 \@bbb -> \skbondb etc
1465 \Put@Direct(0,0){\set@skel@longbond{#1}{c}{skbondshoriz}}%
1466  % bond between 3 and 4 \@ccc -> \skbondshoriz etc
1467 \Put@Direct(0,0){\set@skel@bond{#1}{d}{e}}%
1468  % bond between 4 and 1 \@ddd -> \skbonde etc

1469 }%

1470 % %%%%%%%%%%%%%%%%%%%%%
1471 % % inner double bond %
1472 % %%%%%%%%%%%%%%%%%%%%%
1473 \@tfor\member:=#2\do{%
1474 \if\member r%

1475 \else\if\member a\relax \Put@Direct(0,0){\bondshorizi}%
1476 \else\if\member b\relax \Put@Direct(-142,0){\bondb}%
1477 \else\if\member c\relax \Put@Direct(0,0){\bondshoriz}%
1478 \else\if\member d\relax \Put@Direct(0,0){\bonde}%
1479 \else
1480 % %%%%%%%%%%%%%%%%%%%%%%%%%
1481 % % inner bond attachment %
1482 % %%%%%%%%%%%%%%%%%%%%%%%%%
1483 \expandafter\twoCH@@R\member//%
1484  \set@fusionadd@fourv
1485 \fi\fi\fi\fi\fi}%
1486 % %%%%%%%%%%%%%%%%%%%%%%%
1487 % % setting heteroatoms %
1488 % %%%%%%%%%%%%%%%%%%%%%%%
1489 \Put@Direct(-142,0){\set@hetatom@sixv{#3}{5}{1}{4}{-1}%
1490 \storeclipinfo
1491 }% for 2 to 3
1492 \developclipinfo
1493 \Put@Direct(0,0){\set@hetatom@sixv{#3}{4}{4}{6}{0}%
1494 \storeclipinfo
1495 }% for 1
1496 \developclipinfo
1497 \Put@Direct(0,0){\set@hetatom@sixv{#3}{2}{5}{7}{0}
1498 \storeclipinfo
1499 }% for 4
1500 \developclipinfo
1501 % %%%%%%%%%%%%%%%%%%%%%%%%
1502 % % setting substituents %
1503 % %%%%%%%%%%%%%%%%%%%%%%%%
1504 \Put@Direct(-142,0){\setsixringv{#4}{5}{1}{4}{-1}}% for 2 to 3
1505 \Put@Direct(0,0){\setsixringv{#4}{4}{4}{6}{0}}% for 1
1506 \Put@Direct(0,0){\setsixringv{#4}{2}{5}{7}{0}}% for 4
1507 \end{ShiftPicEnv}%
1508 \fourfusepos{#5}%%for FuseWaring when nested
1509 \iniatom\iniflag
1510 \global\@smallringswtrue%for permition at a center bond
1511 }%     %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
1512 \def\fourfusepos#1{%
1513 \global\@sixfuseposvfalse
1514 {\resetbdsw%
1515 \@tfor\memBer:=#1\do{%
1516 \if\memBer a\relax
1517 \if@sixfuseposv
1518 \XyMTeXWarning{Double fused bond at bond `a'}%
1519 \else
1520 \gdef\fuseAx{-171}\gdef\fuseAy{103}%

1521 \gdef\fuseBx{29}\gdef\fuseBy{103}%
1522 \global\@sixfuseposvtrue

1523 \fi

1524 \fi%
1525 \if\memBer A\relax
1526 \if@sixfuseposv
1527 \XyMTeXWarning{Double fused bond at bond `A'}%
1528 \else
1529 \gdef\fuseBx{-171}\gdef\fuseBy{103}%
1530 \gdef\fuseAx{29}\gdef\fuseAy{103}%
1531 \global\@sixfuseposvtrue

1532 \fi

1533 \fi%
1534 \if\memBer b\relax
1535 \if@sixfuseposv
1536 \XyMTeXWarning{Double fused bond at bond `b'}%
1537 \else
1538 \gdef\fuseAx{29}\gdef\fuseAy{103}%
1539 \gdef\fuseBx{29}\gdef\fuseBy{303}%
1540 \global\@sixfuseposvtrue

1541 \fi

1542 \fi%
1543 \if\memBer B\relax
1544 \if@sixfuseposv
1545 \XyMTeXWarning{Double fused bonds at bond `B'}%
1546 \else
1547 \gdef\fuseBx{29}\gdef\fuseBy{103}%
1548 \gdef\fuseAx{29}\gdef\fuseAy{303}%
1549 \global\@sixfuseposvtrue

1550 \fi

1551 \fi%
1552 \if\memBer c\relax
1553 \if@sixfuseposv
1554 \XyMTeXWarning{Double fused bonds at bond `c'}%
1555 \else
1556 \gdef\fuseAx{29}\gdef\fuseAy{303}%
1557 \gdef\fuseBx{-171}\gdef\fuseBy{303}%
1558 \global\@sixfuseposvtrue

1559 \fi

1560 \fi%
1561 \if\memBer C\relax
1562 \if@sixfuseposv
1563 \XyMTeXWarning{Double fused bonds at bond `C'}%
1564 \else
1565 \gdef\fuseBx{29}\gdef\fuseBy{303}%
1566 \gdef\fuseAx{-171}\gdef\fuseAy{303}%
1567 \global\@sixfuseposvtrue

1568 \fi

1569 \fi%
1570 \if\memBer d\relax
1571 \if@sixfuseposv
1572 \XyMTeXWarning{Double fused bonds at bond `d'}%
1573 \else
1574 \gdef\fuseAx{-171}\gdef\fuseAy{303}%

1575 \gdef\fuseBx{-171}\gdef\fuseBy{103}%
1576 \global\@sixfuseposvtrue

1577 \fi

1578 \fi%
1579 \if\memBer D\relax
1580 \if@sixfuseposv
1581 \XyMTeXWarning{Double fused bonds at bond `D'}%
1582 \else
1583 \gdef\fuseBx{-171}\gdef\fuseBy{303}%
1584 \gdef\fuseAx{-171}\gdef\fuseAy{103}%
1585 \global\@sixfuseposvtrue

1586 \fi

1587 \fi%
1588 }}}% 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
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.
          \threefusev{1==N}{1==Cl;2==F}{b}

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

1589 \def\threefusev{\@ifnextchar({\@three@fusev(@}{\@three@fusev(@)}}
1590 \def\@three@fusev(#1){\@ifnextchar[{\@three@@fusev(#1)[@}%
1591 {\@three@@fusev(#1)[@]}}
1592 \def\@three@@fusev(#1)[#2]#3#4#5{\@ifnextchar[%
1593 {\@threefusev(#1)[#2]{#3}{#4}{#5}[@}%
1594 {\@threefusev(#1)[#2]{#3}{#4}{#5}[@]}}
1595 \def\@threefusev(#1)[#2]#3#4#5[#6]{%
1596 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1597 % % treatment of atom list %
1598 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1599 \iniatom\iniflag%initialize
1600 \test@vertix@sixv{#3}{d}{b}{f}{@}{@}{@}%
1601 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1602 % % adustment of subs positions %
1603 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1604 \threefuseposv{#5}%
1605 \begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/%
1606 (800,580)(-468,-240){threefusev}%2002/4/30 by S. Fujita
1607 (468,240)(68,0)%
1608 % %%%%%%%%%%%%%%%%%%
1609 % % outer skeleton %
1610 % %%%%%%%%%%%%%%%%%%
1611 {\resetbdsw%
1612 \@bond@fuse@omit{#5}{#6}%
1613 \Put@Direct(-68,0){\set@skel@longbond{#1}{a}{skbondtria}}%
1614  % bond between 1 and 2 \@aaa -> \skbondtria etc
1615 \Put@Direct(0,-132){\set@skel@longbond{#1}{b}{skbondshoriz}}%
1616  % bond between 2 and 3 \@bbb -> \skbondb etc
1617 \Put@Direct(-68,0){\set@skel@longbond{#1}{c}{skbondtrib}}%
1618  % bond between 3 and 1 \@ccc -> \skbondtria etc

1619 }%

1620 % %%%%%%%%%%%%%%%%%%%%%
1621 % % inner double bond %

1622 % %%%%%%%%%%%%%%%%%%%%%
1623 \@tfor\member:=#2\do{%
1624 \if\member r\relax%
1625 \else\if\member a\relax\Put@Direct(-68,0){\bondtria}%
1626 \else\if\member b\relax\Put@Direct(0,-126){\bondshoriz}%
1627 \else\if\member c\relax\Put@Direct(-68,0){\bondtrib}%
1628 \else\if\member A\relax% aromatic circle
1629 \Put@oCircle(-70,108){100}%               %circle
1630 \else
1631 % %%%%%%%%%%%%%%%%%%%%%%%%%
1632 % % inner bond attachment %
1633 % %%%%%%%%%%%%%%%%%%%%%%%%%
1634 \expandafter\twoCH@@R\member//%
1635  \set@fusionadd@threev
1636 \fi\fi\fi\fi\fi%

1637 }%

1638 % %%%%%%%%%%%%%%%%%%%%%%%%
1639 % % setting hetero atoms %
1640 % %%%%%%%%%%%%%%%%%%%%%%%%
1641 \Put@Direct(-68,0){\set@hetatom@sixv{#3}{3}{3}{5}{0}%
1642 %\if@clip\global\@cliptrue\fi
1643 \storeclipinfo
1644 }%subst 1
1645 \developclipinfo
1646 \Put@Direct(-142,-132){\set@hetatom@sixv{#3}{0}{1}{3}{0}%
1647 %\if@bclip\global\@bcliptrue\fi
1648 \storeclipinfo
1649 }%subst 2
1650 \developclipinfo
1651 \Put@Direct(0,-132){\set@hetatom@sixv{#3}{3}{5}{7}{0}%
1652 %\if@fclip\global\@fcliptrue\fi
1653 \storeclipinfo
1654 }%subst 3
1655 \developclipinfo
1656 % %%%%%%%%%%%%%%%%%%%%%%%%
1657 % % setting substituents %
1658 % %%%%%%%%%%%%%%%%%%%%%%%%
1659 \Put@Direct(-68,0){\setsixringv{#4}{3}{3}{5}{0}}%subst 1
1660 \Put@Direct(-142,-132){\setsixringv{#4}{0}{1}{3}{0}}%subst 2
1661 \Put@Direct(0,-132){\setsixringv{#4}{3}{5}{7}{0}}%subst 3
1662 \end{ShiftPicEnv}%
1663 \threefuseposv{#5}%%for FuseWaring when nested
1664 \iniatom\iniflag
1665 \global\@smallringswtrue%for permition at a center bond
1666 }%     %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
1667 \def\threefuseposv#1{%

1668 \global\@sixfuseposvfalse
1669 {\resetbdsw%
1670 \@tfor\memBer:=#1\do{%
1671 \if\memBer a\relax
1672 \if@sixfuseposv
1673 \XyMTeXWarning{Double fused bond at bond `a'}%
1674 \else
1675 \gdef\fuseAx{-68}\gdef\fuseAy{0}%
1676 %  \gdef\fuseBx{29}\gdef\fuseBy{171}%
1677 \gdef\fuseBx{35}\gdef\fuseBy{171}%corrected
1678 \global\@sixfuseposvtrue

1679 \fi

1680 \fi%
1681 \if\memBer A\relax
1682 \if@sixfuseposv
1683 \XyMTeXWarning{Double fused bond at bond `A'}%
1684 \else
1685 %  \gdef\fuseBx{-68}\gdef\fuseBy{0}%
1686 \gdef\fuseBx{-74}\gdef\fuseBy{0}%corrected
1687 \gdef\fuseAx{29}\gdef\fuseAy{171}%
1688 \global\@sixfuseposvtrue

1689 \fi

1690 \fi%
1691 \if\memBer b\relax
1692 \if@sixfuseposv
1693 \XyMTeXWarning{Double fused bond at bond `b'}%
1694 \else
1695 \gdef\fuseAx{29}\gdef\fuseAy{171}%
1696 \gdef\fuseBx{-171}\gdef\fuseBy{171}%
1697 \global\@sixfuseposvtrue

1698 \fi

1699 \fi%
1700 \if\memBer B\relax
1701 \if@sixfuseposv
1702 \XyMTeXWarning{Double fused bonds at bond `B'}%
1703 \else
1704 \gdef\fuseBx{29}\gdef\fuseBy{171}%
1705 \gdef\fuseAx{-171}\gdef\fuseAy{171}%
1706 \global\@sixfuseposvtrue

1707 \fi

1708 \fi%
1709 \if\memBer c\relax
1710 \if@sixfuseposv
1711 \XyMTeXWarning{Double fused bonds at bond `c'}%
1712 \else
1713 \gdef\fuseAx{-171}\gdef\fuseAy{171}%
1714 \gdef\fuseBx{-68}\gdef\fuseBy{0}%
1715 \global\@sixfuseposvtrue

1716 \fi

1717 \fi%
1718 \if\memBer C\relax
1719 \if@sixfuseposv
1720 \XyMTeXWarning{Double fused bonds at bond `C'}%
1721 \else

1722 \gdef\fuseBx{-171}\gdef\fuseBy{171}%
1723 \gdef\fuseAx{-68}\gdef\fuseAy{0}%
1724 \global\@sixfuseposvtrue

1725 \fi

1726 \fi%
1727 }}}% 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)

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)

         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

1728 \def\threefusevi{\@ifnextchar({\@three@fusevi(@}{\@three@fusevi(@)}}
1729 \def\@three@fusevi(#1){\@ifnextchar[{\@three@@fusevi(#1)[@}%
1730 {\@three@@fusevi(#1)[@]}}
1731 \def\@three@@fusevi(#1)[#2]#3#4#5{\@ifnextchar[%
1732 {\@threefusevi(#1)[#2]{#3}{#4}{#5}[@}%
1733 {\@threefusevi(#1)[#2]{#3}{#4}{#5}[@]}}
1734 \def\@threefusevi(#1)[#2]#3#4#5[#6]{%
1735 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1736 % % treatment of atom list %
1737 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1738 \iniatom\iniflag%initialize
1739 \test@vertix@sixv{#3}{a}{c}{e}{@}{@}{@}%
1740 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1741 % % adustment of subs positions %
1742 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1743 \threefuseposvi{#5}%
1744 \begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/%
1745 (800,580)(-468,-340){threefusevi}%2002/4/30 by S. Fujita
1746 (468,340)(68,0)%
1747 % %%%%%%%%%%%%%%%%%%
1748 % % outer skeleton %
1749 % %%%%%%%%%%%%%%%%%%
1750 {\resetbdsw%
1751 \@bond@fuse@omit{#5}{#6}%
1752 \Put@Direct(-68,0){\set@skel@longbond{#1}{a}{skBondtria}}%
1753  % bond between 1 and 2 \@aaa -> \skBondtria etc
1754 \Put@Direct(0,-275){\set@skel@longbond{#1}{b}{skbondshorizi}}%
1755  % bond between 2 and 3 \@bbb -> \skbondb etc
1756 \Put@Direct(-68,0){\set@skel@longbond{#1}{c}{skBondtrib}}%
1757  % bond between 3 and 1 \@ccc -> \skBondtrib etc

1758 }%

1759 % %%%%%%%%%%%%%%%%%%%%%
1760 % % inner double bond %
1761 % %%%%%%%%%%%%%%%%%%%%%
1762 \@tfor\member:=#2\do{%
1763 \if\member r\relax%
1764 \else\if\member a\relax\Put@Direct(-68,0){\Bondtria}%
1765 \else\if\member b\relax\Put@Direct(0,-274){\bondshorizi}%
1766 \else\if\member c\relax\Put@Direct(-68,0){\Bondtrib}%
1767 \else\if\member A\relax% aromatic circle
1768 \Put@oCircle(-70,-108){100}%               %circle
1769 \else
1770 % %%%%%%%%%%%%%%%%%%%%%%%%%

1771 % % inner bond attachment %
1772 % %%%%%%%%%%%%%%%%%%%%%%%%%
1773 \expandafter\twoCH@@R\member//%
1774  \set@fusionadd@threevi
1775 \fi\fi\fi\fi\fi%

1776 }%

1777 % %%%%%%%%%%%%%%%%%%%%%%%%
1778 % % setting hetero atoms %
1779 % %%%%%%%%%%%%%%%%%%%%%%%%
1780 \Put@Direct(-68,-406){\set@hetatom@sixv{#3}{0}{0}{2}{0}%
1781 %\if@aclip\global\@acliptrue\fi
1782 \storeclipinfo
1783 }%subst 1
1784 \developclipinfo
1785 \Put@Direct(0,-275){\set@hetatom@sixv{#3}{2}{4}{6}{0}%
1786 %\if@cclip\global\@ccliptrue\fi
1787 \storeclipinfo
1788 }%subst 3
1789 \developclipinfo
1790 \Put@Direct(-142,-275){\set@hetatom@sixv{#3}{1}{2}{4}{0}%
1791 %\if@eclip\global\@ecliptrue\fi
1792 \storeclipinfo
1793 }%subst 2
1794 \developclipinfo
1795 % %%%%%%%%%%%%%%%%%%%%%%%%
1796 % % setting substituents %
1797 % %%%%%%%%%%%%%%%%%%%%%%%%
1798 \Put@Direct(-68,-406){\setsixringv{#4}{0}{0}{2}{0}}%subst 1
1799 \Put@Direct(0,-275){\setsixringv{#4}{2}{4}{6}{0}}%subst 3
1800 \Put@Direct(-142,-275){\setsixringv{#4}{1}{2}{4}{0}}%subst 2
1801 \end{ShiftPicEnv}%
1802 \threefuseposvi{#5}%%for FuseWaring when nested
1803 \iniatom\iniflag
1804 \global\@smallringswtrue%for permition at a center bond
1805 }%     %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
1806 \def\threefuseposvi#1{%
1807 \global\@sixfuseposvfalse
1808 {\resetbdsw%
1809 \@tfor\memBer:=#1\do{%
1810 \if\memBer a\relax
1811 \if@sixfuseposv
1812 \XyMTeXWarning{Double fused bond at bond `a'}%
1813 \else
1814 \gdef\fuseAx{-68}\gdef\fuseAy{0}%
1815 %  \gdef\fuseBx{29}\gdef\fuseBy{-171}%
1816 \gdef\fuseBx{35}\gdef\fuseBy{-171}%corrected

1817 \global\@sixfuseposvtrue

1818 \fi

1819 \fi%
1820 \if\memBer A\relax
1821 \if@sixfuseposv
1822 \XyMTeXWarning{Double fused bond at bond `A'}%
1823 \else
1824 %  \gdef\fuseBx{-68}\gdef\fuseBy{0}%
1825 \gdef\fuseBx{-74}\gdef\fuseBy{0}%corrected
1826 \gdef\fuseAx{29}\gdef\fuseAy{-171}%
1827 \global\@sixfuseposvtrue

1828 \fi

1829 \fi%
1830 \if\memBer b\relax
1831 \if@sixfuseposv
1832 \XyMTeXWarning{Double fused bond at bond `b'}%
1833 \else
1834 \gdef\fuseAx{29}\gdef\fuseAy{-171}%
1835 \gdef\fuseBx{-171}\gdef\fuseBy{-171}%
1836 \global\@sixfuseposvtrue

1837 \fi

1838 \fi%
1839 \if\memBer B\relax
1840 \if@sixfuseposv
1841 \XyMTeXWarning{Double fused bonds at bond `B'}%
1842 \else
1843 \gdef\fuseBx{29}\gdef\fuseBy{-171}%
1844 \gdef\fuseAx{-171}\gdef\fuseAy{-171}%
1845 \global\@sixfuseposvtrue

1846 \fi

1847 \fi%
1848 \if\memBer c\relax
1849 \if@sixfuseposv
1850 \XyMTeXWarning{Double fused bonds at bond `c'}%
1851 \else
1852 \gdef\fuseAx{-171}\gdef\fuseAy{-171}%
1853 \gdef\fuseBx{-68}\gdef\fuseBy{0}%
1854 \global\@sixfuseposvtrue

1855 \fi

1856 \fi%
1857 \if\memBer C\relax
1858 \if@sixfuseposv
1859 \XyMTeXWarning{Double fused bonds at bond `C'}%
1860 \else
1861 \gdef\fuseBx{-171}\gdef\fuseBy{-171}%
1862 \gdef\fuseAx{-68}\gdef\fuseAy{0}%
1863 \global\@sixfuseposvtrue

1864 \fi

1865 \fi%
1866 }}}% 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)

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

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

1867 \def\threefuseh{\@ifnextchar({\@three@fuseh(@}{\@three@fuseh(@)}}
1868 \def\@three@fuseh(#1){\@ifnextchar[{\@three@@fuseh(#1)[@}%
1869 {\@three@@fuseh(#1)[@]}}
1870 \def\@three@@fuseh(#1)[#2]#3#4#5{\@ifnextchar[%
1871 {\@threefuseh(#1)[#2]{#3}{#4}{#5}[@}%
1872 {\@threefuseh(#1)[#2]{#3}{#4}{#5}[@]}}
1873 \def\@threefuseh(#1)[#2]#3#4#5[#6]{%
1874 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1875 % % treatment of atom list %
1876 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1877 \iniatom\iniflag%initialize
1878 \test@vertix@sixv{#3}{d}{f}{b}{@}{@}{@}%tentative use for six-h
1879 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1880 % % adustment of subs positions %
1881 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1882 \threefuseposh{#5}%
1883 \begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/%
1884 (580,700)(-200,-240){threefuseh}%2002/4/30 by S. Fujita
1885 (200,200)%
1886 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%
1887 % % retreatment of atom list %
1888 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%
1889 \iniatom\iniflag%initialize
1890 \test@vertix@sixv{#3}{c}{e}{a}{@}{@}{@}%
1891 \test@vertix@sixv{#3}{b}{d}{f}{@}{@}{@}%
1892 % %%%%%%%%%%%%%%%%%%
1893 % % outer skeleton %
1894 % %%%%%%%%%%%%%%%%%%
1895 {\resetbdsw%
1896 \@bond@fuse@omit{#5}{#6}%
1897 \Put@Direct(0,0){\set@skel@bond{#1}{a}{c}}%
1898  % bond between 1 and 2 \@aaa -> \skbondc etc
1899 \Put@Direct(171,-103){\set@skel@bond{#1}{b}{e}}%
1900  % bond between 2 and 3 \@bbb -> \skbonde etc
1901 \Put@Direct(0,-200){\set@skel@bond{#1}{c}{a}}%
1902  % bond between 3 and 1 \@ccc -> \skbonda etc

1903 }%

1904 % %%%%%%%%%%%%%%%%%%%%%
1905 % % inner double bond %
1906 % %%%%%%%%%%%%%%%%%%%%%
1907 \@tfor\member:=#2\do{%
1908 \if\member r\relax%
1909 \else\if\member a\relax\Put@Direct(0,0){\bondc}%
1910 \else\if\member b\relax\Put@Direct(171,-103){\bonde}%
1911 \else\if\member c\relax\Put@Direct(0,-200){\bonda}%

1912 \else\if\member A\relax% aromatic circle
1913 \Put@oCircle(70,103){100}%               %circle
1914 \else
1915 % %%%%%%%%%%%%%%%%%%%%%%%%%
1916 % % inner bond attachment %
1917 % %%%%%%%%%%%%%%%%%%%%%%%%%
1918 \expandafter\twoCH@@R\member//%
1919  \set@fusionadd@threeh
1920 \fi\fi\fi\fi\fi%

1921 }%

1922 % %%%%%%%%%%%%%%%%%%%%%%%%
1923 % % setting hetero atoms %
1924 % %%%%%%%%%%%%%%%%%%%%%%%%
1925 \iniflag
1926 %\Put@Direct(-235,103){\set@hetatom@sixh{#3}{3}{3}{5}{0}%
1927 \Put@Direct(-215,103){\set@hetatom@sixh{#3}{3}{3}{5}{0}%
1928 %\if@clip \global\@cliptrue\fi
1929 \storeclipinfo
1930 }%subst 1 <--six h 4
1931 \developclipinfo
1932 \Put@Direct(-103,29){\set@hetatom@sixh{#3}{-1}{1}{3}{0}%
1933 %\if@bclip \global\@bcliptrue\fi
1934 \storeclipinfo
1935 }%subst 3 <--six h 2
1936 \developclipinfo
1937 \Put@Direct(-103,171){\set@hetatom@sixh{#3}{4}{5}{7}{0}%
1938 %\if@fclip \global\@fcliptrue\fi
1939 \storeclipinfo
1940 }%subst 2 <--six h 6
1941 \developclipinfo
1942 % %%%%%%%%%%%%%%%%%%%%%%%%
1943 % % setting substituents %
1944 % %%%%%%%%%%%%%%%%%%%%%%%%
1945 \Put@Direct(-235,103){\setsixringh{#4}{3}{3}{5}{0}}%subst 1
1946 \Put@Direct(-103,29){\setsixringh{#4}{-1}{1}{3}{0}}%subst 3
1947 \Put@Direct(-103,171){\setsixringh{#4}{4}{5}{7}{0}}%subst 2
1948 \end{ShiftPicEnv}%
1949 \threefuseposh{#5}%%for FuseWaring when nested
1950 \iniatom\iniflag
1951 \global\@smallringswtrue%for permition at a center bond
1952 }%     %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
1953 \def\threefuseposh#1{%
1954 \global\@sixfuseposvfalse
1955 {\resetbdsw%
1956 \@tfor\memBer:=#1\do{%
1957 \if\memBer a\relax

1958 \if@sixfuseposv
1959 \XyMTeXWarning{Double fused bond at bond `a'}%
1960 \else
1961 \gdef\fuseAx{171}\gdef\fuseAy{103}%corrected
1962 \gdef\fuseBx{0}\gdef\fuseBy{0}%
1963 \global\@sixfuseposvtrue

1964 \fi

1965 \fi%
1966 \if\memBer A\relax
1967 \if@sixfuseposv
1968 \XyMTeXWarning{Double fused bond at bond `A'}%
1969 \else
1970 \gdef\fuseBx{171}\gdef\fuseBy{103}%
1971 \gdef\fuseAx{0}\gdef\fuseAy{0}%
1972 \global\@sixfuseposvtrue

1973 \fi

1974 \fi%
1975 \if\memBer b\relax
1976 \if@sixfuseposv
1977 \XyMTeXWarning{Double fused bond at bond `b'}%
1978 \else
1979 \gdef\fuseAx{0}\gdef\fuseAy{0}%
1980 \gdef\fuseBx{0}\gdef\fuseBy{200}%
1981 \global\@sixfuseposvtrue

1982 \fi

1983 \fi%
1984 \if\memBer B\relax
1985 \if@sixfuseposv
1986 \XyMTeXWarning{Double fused bonds at bond `B'}%
1987 \else
1988 \gdef\fuseBx{0}\gdef\fuseBy{0}%
1989 \gdef\fuseAx{0}\gdef\fuseAy{200}%
1990 \global\@sixfuseposvtrue

1991 \fi

1992 \fi%
1993 \if\memBer c\relax
1994 \if@sixfuseposv
1995 \XyMTeXWarning{Double fused bonds at bond `c'}%
1996 \else
1997 \gdef\fuseAx{0}\gdef\fuseAy{200}%
1998 %  \gdef\fuseBx{171}\gdef\fuseBy{103}%
1999 \gdef\fuseBx{171}\gdef\fuseBy{97}%corrected
2000 \global\@sixfuseposvtrue

2001 \fi

2002 \fi%
2003 \if\memBer C\relax
2004 \if@sixfuseposv
2005 \XyMTeXWarning{Double fused bonds at bond `C'}%
2006 \else
2007 %  \gdef\fuseBx{0}\gdef\fuseBy{200}%
2008 \gdef\fuseBx{0}\gdef\fuseBy{206}%corrected
2009 \gdef\fuseAx{171}\gdef\fuseAy{103}%
2010 \global\@sixfuseposvtrue

2011 \fi

2012 \fi%
2013 }}}% 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)

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)

         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

2014 \def\threefusehi{\@ifnextchar({\@three@fusehi(@}{\@three@fusehi(@)}}
2015 \def\@three@fusehi(#1){\@ifnextchar[{\@three@@fusehi(#1)[@}%
2016 {\@three@@fusehi(#1)[@]}}
2017 \def\@three@@fusehi(#1)[#2]#3#4#5{\@ifnextchar[%
2018 {\@threefusehi(#1)[#2]{#3}{#4}{#5}[@}%
2019 {\@threefusehi(#1)[#2]{#3}{#4}{#5}[@]}}
2020 \def\@threefusehi(#1)[#2]#3#4#5[#6]{%
2021 % %%%%%%%%%%%%%%%%%%%%%%%%%%
2022 % % treatment of atom list %
2023 % %%%%%%%%%%%%%%%%%%%%%%%%%%
2024 \iniatom\iniflag%initialize
2025 \test@vertix@sixv{#3}{a}{e}{c}{@}{@}{@}%tentative use for six-h
2026 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2027 % % adustment of subs positions %
2028 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2029 \threefuseposhi{#5}%
2030 \begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/%
2031 (580,700)(-400,-240){threefusehi}%2002/4/30 by S. Fujita
2032 (400,200)%
2033 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%
2034 % % retreatment of atom list %
2035 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%
2036 \iniatom\iniflag%initialize
2037 \test@vertix@sixv{#3}{e}{c}{a}{@}{@}{@}%
2038 \test@vertix@sixv{#3}{f}{d}{b}{@}{@}{@}%
2039 % %%%%%%%%%%%%%%%%%%
2040 % % outer skeleton %
2041 % %%%%%%%%%%%%%%%%%%
2042 {\resetbdsw%
2043 \@bond@fuse@omit{#5}{#6}%
2044 \Put@Direct(0,0){\set@skel@bond{#1}{a}{d}}%
2045  % bond between 1 and 2 \@aaa -> \skbondd etc
2046 \Put@Direct(-171,-103){\set@skel@bond{#1}{b}{b}}%
2047  % bond between 2 and 3 \@bbb -> \skbondb etc
2048 \Put@Direct(0,-200){\set@skel@bond{#1}{c}{f}}%
2049  % bond between 3 and 1 \@ccc -> \skbondf etc

2050 }%

2051 % %%%%%%%%%%%%%%%%%%%%%
2052 % % inner double bond %
2053 % %%%%%%%%%%%%%%%%%%%%%
2054 \@tfor\member:=#2\do{%
2055 \if\member r\relax%
2056 \else\if\member a\relax\Put@Direct(0,0){\bondd}%
2057 \else\if\member b\relax\Put@Direct(-171,-103){\bondb}%

2058 \else\if\member c\relax\Put@Direct(0,-200){\bondf}%
2059 \else\if\member A\relax% aromatic circle
2060 \Put@oCircle(70,103){100}%               %circle
2061 \else
2062 % %%%%%%%%%%%%%%%%%%%%%%%%%
2063 % % inner bond attachment %
2064 % %%%%%%%%%%%%%%%%%%%%%%%%%
2065 \expandafter\twoCH@@R\member//%
2066  \set@fusionadd@threehi
2067 \fi\fi\fi\fi\fi%

2068 }%

2069 % %%%%%%%%%%%%%%%%%%%%%%%%
2070 % % setting hetero atoms %
2071 % %%%%%%%%%%%%%%%%%%%%%%%%
2072 \iniflag
2073 \Put@Direct(-171,103){\set@hetatom@sixh{#3}{0}{0}{2}{0}%
2074 %\if@aclip \global\@acliptrue\fi
2075 \storeclipinfo
2076 }%subst 1 <--six h 1
2077 \developclipinfo
2078 \Put@Direct(-303,29){\set@hetatom@sixh{#3}{0}{2}{4}{0}%
2079 %\if@cclip \global\@ccliptrue\fi
2080 \storeclipinfo
2081 }%subst 3 <--six h 3
2082 \developclipinfo
2083 \Put@Direct(-303,171){\set@hetatom@sixh{#3}{3}{4}{6}{0}%
2084 %\if@eclip \global\@ecliptrue\fi
2085 \storeclipinfo
2086 }%subst 2 <--six h 5
2087 \developclipinfo
2088 % %%%%%%%%%%%%%%%%%%%%%%%%
2089 % % setting substituents %
2090 % %%%%%%%%%%%%%%%%%%%%%%%%
2091 \Put@Direct(-171,103){\setsixringh{#4}{0}{0}{2}{0}}%subst 1
2092 \Put@Direct(-303,29){\setsixringh{#4}{0}{2}{4}{0}}%subst 3
2093 \Put@Direct(-303,171){\setsixringh{#4}{3}{4}{6}{0}}%subst 2
2094 \end{ShiftPicEnv}%
2095 \threefuseposhi{#5}%%for FuseWaring when nested
2096 \iniatom\iniflag
2097 \global\@smallringswtrue%for permition at a center bond
2098 }%     %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
2099 \def\threefuseposhi#1{%
2100 \global\@sixfuseposvfalse
2101 {\resetbdsw%
2102 \@tfor\memBer:=#1\do{%
2103 \if\memBer a\relax

2104 \if@sixfuseposv
2105 \XyMTeXWarning{Double fused bond at bond `a'}%
2106 \else
2107 \gdef\fuseAx{-171}\gdef\fuseAy{103}%corrected
2108 \gdef\fuseBx{0}\gdef\fuseBy{0}%
2109 \global\@sixfuseposvtrue

2110 \fi

2111 \fi%
2112 \if\memBer A\relax
2113 \if@sixfuseposv
2114 \XyMTeXWarning{Double fused bond at bond `A'}%
2115 \else
2116 \gdef\fuseBx{-171}\gdef\fuseBy{103}%
2117 \gdef\fuseAx{0}\gdef\fuseAy{0}%
2118 \global\@sixfuseposvtrue

2119 \fi

2120 \fi%
2121 \if\memBer b\relax
2122 \if@sixfuseposv
2123 \XyMTeXWarning{Double fused bond at bond `b'}%
2124 \else
2125 \gdef\fuseAx{0}\gdef\fuseAy{0}%
2126 \gdef\fuseBx{0}\gdef\fuseBy{200}%
2127 \global\@sixfuseposvtrue

2128 \fi

2129 \fi%
2130 \if\memBer B\relax
2131 \if@sixfuseposv
2132 \XyMTeXWarning{Double fused bonds at bond `B'}%
2133 \else
2134 \gdef\fuseBx{0}\gdef\fuseBy{0}%
2135 \gdef\fuseAx{0}\gdef\fuseAy{200}%
2136 \global\@sixfuseposvtrue

2137 \fi

2138 \fi%
2139 \if\memBer c\relax
2140 \if@sixfuseposv
2141 \XyMTeXWarning{Double fused bonds at bond `c'}%
2142 \else
2143 \gdef\fuseAx{0}\gdef\fuseAy{200}%
2144 %  \gdef\fuseBx{-171}\gdef\fuseBy{103}%
2145 \gdef\fuseBx{-171}\gdef\fuseBy{97}%corrected
2146 \global\@sixfuseposvtrue

2147 \fi

2148 \fi%
2149 \if\memBer C\relax
2150 \if@sixfuseposv
2151 \XyMTeXWarning{Double fused bonds at bond `C'}%
2152 \else
2153 %  \gdef\fuseBx{0}\gdef\fuseBy{200}%
2154 \gdef\fuseBx{0}\gdef\fuseBy{206}%corrected
2155 \gdef\fuseAx{-171}\gdef\fuseAy{103}%
2156 \global\@sixfuseposvtrue

2157 \fi

2158 \fi%
2159 }}}% end of the macro \threefuseposhi

2160 ⟨/fusering⟩