Heterocycles of horizontal type by hetaromh.sty (v2.00) of XΥMTEX

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

1998/12/25

1 Introduction

1.1 Options for docstrip

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

1.2 Version Information

1 ⟨∗hetaromh⟩

2 \typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 2.00}
3 \typeout{       -- Released December 25, 1998 by Shinsaku Fujita}
4 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5 \def\j@urnalname{hetaromh}
6 \def\versi@ndate{November 11, 2000}
7 \def\versi@nno{ver2.00a}
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 hetaromh.sty

**********************************
* hetaromh.sty: list of commands *
**********************************
<Conventions for bond-setting>

\hbonda
\hbondf
\hbondb
\hbondc
\hbondd
\hbonde
\hbondvert
\hbondverti
\hskbonda
\hskbondf
\hskbondc
\hskbondd
\hskbondb
\hskbonde
\hskbondvert
\hskbondverti
\dothskbonda
\dothskbondf
\dothskbondc
\dothskbondd
\dothskbondb
\dothskbonde
\dothskbondvert
\dothskbondverti

<Six-membered heterocycles (horizontal)>
Basic Macros
\sixheteroh                \@sixheteroh
\sixheterohi               \@sixheterohi
Application Macros
\pyridineh                 \@pyridineh
\pyridinehi                \@pyridinehi
\pyrazineh                 \@pyrazineh
\pyrimidineh               \@pyrimidineh
\pyrimidinehi              \@pyrimidinehi
\pyridazineh               \@pyridazineh
\pyridazinehi              \@pyridazinehi
\triazineh                 \@triazineh
\triazinehi                \@triazinehi

<Five-membered heterocycles (horizontal)>
Basic Macros
\fiveheteroh               \@fiveheteroh
\fiveheterohi              \@fiveheterohi
Application Macros
\pyrroleh                  \@pyrroleh
\pyrazoleh                 \@pyrazoleh
\imidazoleh                \@imidazoleh
\isoxazoleh                \@isoxazoleh
\oxazoleh                  \@oxazoleh
\furanh                    \@furanh
\thiopheneh                \@thiopheneh
\pyrrolehi                 \@pyrrolehi
\pyrazolehi                \@pyrazolehi
\imidazolehi               \@imidazolehi
\isoxazolehi               \@isoxazolehi
\oxazolehi                 \@oxazolehi
\furanhi                   \@furanhi
\thiophenehi               \@thiophenehi

<Six-Six fused heterocycles (horizontal)>
Basic Macros
\decaheteroh               \@decaheteroh
\decaheterohi              \@decaheterohi
Application Macros
\quinolineh                \@quinolineh
\quinolinehi               \@quinolinehi
\isoquinolineh             \@isoquinolineh
\isoquinolinehi            \@isoquinolinehi
\quinoxalineh              \@quinoxalineh
\quinazolineh              \@quinazolineh
\quinazolinehi             \@quinazolinehi
\cinnolineh                \@cinnolineh
\cinnolinehi               \@cinnolinehi
\pteridineh                \@pteridineh
\pteridinehi               \@pteridinehi

<Six-Five fused heterocycles (horizontal)>
Basic Macros
\nonaheteroh               \@nonaheteroh
\nonaheterohi              \@nonaheterohi
Application Macros
\purineh                   \@purineh
\purinehi                  \@purinehi
\indoleh                   \@indoleh
\indolehi                  \@indolehi
\indolizineh               \@indolizineh
\indolizinehi              \@indolizinehi
\isoindoleh                \@isoindoleh
\isoindolehi               \@isoindolehi
\benzofuraneh              \@benzofuraneh
\benzofuranehi             \@benzofuranehi
\isobenzofuraneh           \@isobenzofuraneh
\isobenzofuranehi          \@isobenzofuranehi
\benzoxazoleh              \@benzoxazoleh
\benzoxazolehi             \@benzoxazolehi

<Building units>
\sixunith                  \@sixunith
\fiveunith                 \@fiveunith
\fiveunithi                \@fiveunithi

<Three-membered rings>
\threeheteroh              \@threeheteroh
\threeheterohi             \@threeheterohi

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 (hetaromh.sty for the present case). Hence, the combination of \input and \@ifundefined is used to crossload sty files (chemstr.sty 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{test@vertix@decavi}{\input hetarom.sty\relax}{}%
17 \unitlength=0.1pt%

4 Various switches

These control sequences have been commented out, since they are defined elsewhere.

18 % % ****************************
19 % % * various flags (switches) *
20 % % ****************************
21 % \newif\if@gclip \@gclipfalse%
22 % \newif\if@hclip \@hclipfalse%
23 % \newif\if@iclip \@iclipfalse%
24 % \newif\if@jclip \@jclipfalse%
25 % \def\iniflag{%
26 % \@aclipfalse \@bclipfalse\@cclipfalse\@clipfalse\@eclipfalse%
27 % \@fclipfalse\@gclipfalse\@hclipfalse\@iclipfalse\@jclipfalse%
28 % \@clipfusefalse}%
29 % \def\iniatom{%
30 % \def\aaa{}\def\bbb{}\def\ccc{}\def\ddd{}\def\eee{}\def\fff{}%
31 % \def\ggg{}\def\hhh{}\def\iii{}\def\jjj{}%
32 % \def\@aaa{}\def\@bbb{}\def\@ccc{}\def\@ddd{}\def\@eee{}\def\@fff{}%
33 % }%
34 % \def\resetbdsw{\gdef\@aaa{a}\gdef\@bbb{b}\gdef\@ccc{c}%
35 % \gdef\@ddd{d}\gdef\@eee{e}\gdef\@fff{f}}%

36 %

37 \iniatom%

5 Macros for setting bonds

5.1 Inner double bonds

The macros \sixheteroh and \fiveheteroh use internal macros for setting inner double bonds in accordance with the presence or the absence of hetero atoms. During the processes of such setting, the inner macros \hbonda to \hbondf are used to set a bond on each edge of a six- or five-membered ring; and the inner macros \hbondvert and \hbondverti draw vertical bonds of a five-membered ring.

Note that comments (conerning locant numbers) on the end of each row have lost the exact meaning, since such a command moiety is used in many macros after copying.

 ******************************
 * setting inner double bonds *
 ******************************
                                   b
                          (bbb) 2      3  (ccc)
                            a    -----    c
                               *       *
   the original point ===> 1 * (aaa)     * 4  (ddd)
          (0,0)                *       *  c
                            f    -----
                          (fff) 6      5  (eee)
                                   e

\hbonda The macro \hbonda refers to the control sequences representing atoms on both of the terminal vertices (\aaa and \bbb) and examine whether these are empty or not. Thereby, it decides the vertices to be truncated.

38 % bond between 1 and 2
39 \def\hbonda{%
40 \ifx\aaa\empty%
41 \ifx\bbb\empty%
42  \put(42,6){\line(3,5){78}}%           %double bond 1-2
43 \else%
44  \put(42,6){\line(3,5){62}}%           %double bond 1-2
45 \fi%
46 \else%
47 \ifx\bbb\empty%
48  \put(57,36){\line(3,5){62}}%          %double bond 1-2
49 \else%
50  \put(57,36){\line(3,5){62}}%          %double bond 1-2
51 \fi\fi}%

\hbondf The macro \hbondf refers to the control sequences representing atoms on both of the terminal vertices (\aaa and \fff) and examine whether these are empty or not. Thereby, it decides the vertices to be truncated.

52 % bond between 1 and 6
53 \def\hbondf{%
54 \ifx\aaa\empty%
55 \ifx\fff\empty%
56  \put(42,-6){\line(3,-5){78}}%          %double bond 1-6
57 \else%
58  \put(42,-6){\line(3,-5){62}}%         %double bond 1-6
59 \fi%
60 \else%
61 \ifx\fff\empty%
62  \put(57,-36){\line(3,-5){62}}%        %double bond 1-6

63 \else%
64  \put(57,-36){\line(3,-5){62}}%        %double bond 1-6
65 \fi\fi}%

\hbondb The macro \hbondf refers to the control sequences representing atoms on both of the terminal vertices (\bbb and \ccc) and examine whether these are empty or not. Thereby, it decides the vertices to be truncated.

66 % bond between 3 and 2
67 \def\hbondb{%
68 \ifx\bbb\empty%
69 \ifx\ccc\empty%
70  \put(129,138){\line(1,0){148}}%        %double bond 2-3
71 \else%
72  \put(129,138){\line(1,0){134}}%        %double bond 3-2
73 \fi%
74 \else%
75 \ifx\ccc\empty%
76  \put(143,138){\line(1,0){134}}%        %double bond 3-2
77 \else%
78  \put(143,138){\line(1,0){110}}%        %double bond 3-2
79 \fi\fi}%

\hbondc The macro \hbondc refers to the control sequences representing atoms on both of the terminal vertices (\ddd and \ccc) and examine whether these are empty or not. Thereby, it decides the vertices to be truncated.

80 % bond between 4 and 3
81 \def\hbondc{%
82 \ifx\ddd\empty%
83 \ifx\ccc\empty%
84  \put(364,6){\line(-3,5){78}}%          %double bond 4-3
85 \else%
86  \put(364,6){\line(-3,5){62}}%          %double bond 4-3
87 \fi%
88 \else%
89 \ifx\ccc\empty%
90  \put(349,36){\line(-3,5){62}}%         %double bond 4-3
91 \else%
92  \put(349,36){\line(-3,5){62}}%         %double bond 4-3
93 \fi\fi}%

\hbondd The macro \hbondf refers to the control sequences representing atoms on both of the terminal vertices (\ddd and \eee) and examine whether these are empty or not. Thereby, it decides the vertices to be truncated.

94 % bond between 4 and 5
95 \def\hbondd{%
96 \ifx\ddd\empty%
97 \ifx\eee\empty%
98  \put(364,-6){\line(-3,-5){78}}%        %double bond 4-5

 99 \else%
100  \put(364,-6){\line(-3,-5){62}}%        %double bond 4-5
101 \fi%
102 \else%
103 \ifx\eee\empty%
104  \put(349,-36){\line(-3,-5){62}}%       %double bond 4-5
105 \else%
106  \put(349,-36){\line(-3,-5){62}}%       %double bond 4-5
107 \fi\fi}%

\hbonde The macro \hbonde refers to the control sequences representing atoms on both of the terminal vertices (\fff and \eee) and examine whether these are empty or not. Thereby, it decides the vertices to be truncated.

108 % bond between 5 and 6
109 \def\hbonde{%
110 \ifx\fff\empty%
111 \ifx\eee\empty%
112  \put(129,-138){\line(1,0){148}}%       %double bond 6-5
113 \else%
114  \put(129,-138){\line(1,0){134}}%       %double bond 5-6
115 \fi%
116 \else%
117 \ifx\eee\empty%
118  \put(143,-138){\line(1,0){134}}%       %double bond 5-6
119 \else%
120  \put(143,-138){\line(1,0){110}}%       %double bond 5-6
121 \fi\fi}%

\hbondvert The macro \hbondvert refers to the control sequences representing atoms on both of the terminal vertices (\fff and \bbb) and examine whether these are empty or not. Thereby, it decides the vertices to be truncated.

122 % vertical inner bond for five-membered rings
123 \def\hbondvert{%
124 \ifx\fff\empty%
125  \ifx\bbb\empty%
126  \put(136,-138){\line(0,1){277}}%      %double bond 4-3
127  \else%
128  \put(136,-138){\line(0,1){258}}%      %double bond 4-3
129  \fi%
130 \else%
131  \ifx\bbb\empty%
132  \put(136,-120){\line(0,1){258}}%      %double bond 4-3
133  \else
134  \put(136,-120){\line(0,1){239}}%      %double bond 4-3
135  \fi\fi}%

\hbondverti The macro \hbondverti refers to the control sequences representing atoms on both of the terminal vertices (\ccc and \eee) and examine whether these are empty or not. Thereby, it decides the vertices to be truncated.

136 % horizontal inner bond for five-membered rings (inverse type)
137 \def\hbondverti{%
138 \ifx\eee\empty%
139  \ifx\ccc\empty%
140  \put(270,-138){\line(0,0){277}}%      %double bond 4-3
141  \else%
142  \put(270,-138){\line(0,1){258}}%      %double bond 4-3
143  \fi%
144 \else%
145  \ifx\ccc\empty%
146  \put(270,-120){\line(0,1){258}}%      %double bond 4-3
147  \else%
148  \put(270,-120){\line(0,1){239}}%      %double bond 4-3
149  \fi\fi}%

5.2 Skeletal bonds

The macros \sixheteroh and \fiveheteroh use inner macros for setting skeletal bonds in accordance with the presence or the absence of hetero atoms. During the processes of such setting, the inner macros \skbonda to \skbondf are used to set a bond on each edge of a six- or five-membered ring; and the inner macros \hskibondverti to \hskibondverti draw vertical bonds of a five-membered ring.

  ********************************************
  * setting skeletal bonds (horizontal type) *
  ********************************************
  The following numbering is adopted in this macro.
                                    b
                           (bbb) 2      3  (ccc)
                             a    -----    c
                                *       *
    the original point ===> 1 * (aaa)     * 4  (ddd)
           (0,0)                *       *  d
                             f    -----
                           (fff) 6      5  (eee)
                                    e

\hskbonda The macro \hskbonda refers to the control sequences representing atoms on both of the terminal vertices (\aaa and \bbb) and examine whether these are empty or not. Thereby, it decides the vertices to be truncated.

150 %bond between 1 and 2
151 \def\hskbonda{%
152 \ifx\aaa\empty%
153  \ifx\bbb\empty%
154  \put(0,0){\line(3,5){103}}%           %bond 1-2
155  \else%
156  \put(0,0){\line(3,5){79}}%            %bond 1-2

157  \fi%
158 \else%
159  \ifx\bbb\empty%
160  \put(24,40){\line(3,5){79}}%          %bond 1-2
161  \else%
162  \put(24,40){\line(3,5){62}}%          %bond 1-2
163  \fi\fi}%

\hskbondf The macro \hskbondf refers to the control sequences representing atoms on both of the terminal vertices (\aaa and \fff) and examine whether these are empty or not. Thereby, it decides the vertices to be truncated.

164 %bond between 1 and 6
165 \def\hskbondf{%
166 \ifx\aaa\empty%
167  \ifx\fff\empty
168  \put(0,0){\line(3,-5){103}}%          %bond 1-6
169  \else%
170  \put(0,0){\line(3,-5){79}}%           %bond 1-6
171  \fi%
172 \else%
173  \ifx\fff\empty%
174  \put(24,-40){\line(3,-5){79}}%        %bond 1-6
175  \else%
176  \put(24,-40){\line(3,-5){62}}%        %bond 1-6
177  \fi\fi}%

\hskbondc The macro \hskbondc refers to the control sequences representing atoms on both of the terminal vertices (\ddd and \ccc) and examine whether these are empty or not. Thereby, it decides the vertices to be truncated.

178 %bond between 4 and 3
179 \def\hskbondc{%
180 \ifx\ddd\empty%
181  \ifx\ccc\empty%
182  \put(406,0){\line(-3,5){103}}%         %bond 4-3
183  \else%
184  \put(406,0){\line(-3,5){79}}%         %bond 4-3
185  \fi%
186 \else%
187  \ifx\ccc\empty%
188  \put(382,40){\line(-3,5){79}}%        %bond 4-3
189  \else%
190  \put(382,40){\line(-3,5){62}}%        %bond 4-3
191  \fi\fi}%

\hskbondd The macro \hskbondd refers to the control sequences representing atoms on both of the terminal vertices (\ddd and \eee) and examine whether these are empty or not. Thereby, it decides the vertices to be truncated.

192 %bond between 4 and 5

193 \def\hskbondd{%
194 \ifx\ddd\empty%
195  \ifx\eee\empty%
196  \put(406,0){\line(-3,-5){103}}%       %bond 4-5
197  \else%
198  \put(406,0){\line(-3,-5){79}}%        %bond 4-5
199  \fi%
200 \else%
201  \ifx\eee\empty%
202  \put(382,-40){\line(-3,-5){79}}%      %bond 4-5
203  \else%
204  \put(382,-40){\line(-3,-5){62}}%      %bond 4-5
205  \fi\fi}%

\hskbondb The macro \hskbondb refers to the control sequences representing atoms on both of the terminal vertices (\bbb and \ccc) and examine whether these are empty or not. Thereby, it decides the vertices to be truncated.

206 %bond between 3 and 2
207 \def\hskbondb{%
208 \ifx\bbb\empty%
209  \ifx\ccc\empty%
210  \put(103,171){\line(1,0){200}}%       %bond 2-3
211  \else%
212  \put(103,171){\line(1,0){160}}%       %bond 3-2
213  \fi%
214 \else%
215  \ifx\ccc\empty%
216  \put(143,171){\line(1,0){160}}%       %bond 3-2
217  \else%
218  \put(143,171){\line(1,0){120}}%       %bond 3-2
219  \fi\fi}%

\hskbonde The macro \hskbonde refers to the control sequences representing atoms on both of the terminal vertices (\eee and \fff) and examine whether these are empty or not. Thereby, it decides the vertices to be truncated.

220 %bond between 5 and 6
221 \def\hskbonde{%
222 \ifx\eee\empty%
223  \ifx\fff\empty%
224  \put(103,-171){\line(1,0){200}}%      %bond 6-5
225  \else%
226  \put(143,-171){\line(1,0){160}}%      %bond 5-6
227  \fi%
228 \else%
229  \ifx\fff\empty%
230  \put(103,-171){\line(1,0){160}}%      %bond 5-6
231  \else%
232  \put(143,-171){\line(1,0){120}}%      %bond 5-6
233  \fi\fi}%

\hskbondvert The macro \hskbondvert refers to the control sequences representing atoms on both of the terminal vertices (\bbb and \fff) and examine whether these are empty or not. Thereby, it decides the vertices to be truncated.

234 %vertical bond for five-membered rings
235 \def\hskbondvert{%
236 \ifx\fff\empty%
237  \ifx\bbb\empty%
238  \put(103,-171){\line(0,1){342}}%      %bond 4-3
239  \else%
240  \put(103,-171){\line(0,1){300}}%      %bond 4-3
241  \fi%
242 \else%
243  \ifx\bbb\empty%
244  \put(103,171){\line(0,-1){300}}%      %bond 4-3
245  \else%
246  \put(103,-129){\line(0,1){258}}%      %bond 4-3
247  \fi\fi}%

\hskbondverti The macro \hskbondverti refers to the control sequences representing atoms on both of the terminal vertices (\eee and \ccc) and examine whether these are empty or not. Thereby, it decides the vertices to be truncated.

248 %vertical bond for five-membered rings (inverse type)
249 \def\hskbondverti{%
250 \ifx\eee\empty%
251  \ifx\ccc\empty%
252  \put(303,-171){\line(0,1){342}}%      %bond 4-3
253  \else%
254  \put(303,-171){\line(0,1){300}}%      %bond 4-3
255  \fi%
256 \else%
257  \ifx\ccc\empty%
258  \put(303,171){\line(0,-1){300}}%      %bond 4-3
259  \else%
260  \put(303,-129){\line(0,1){258}}%      %bond 4-3
261  \fi\fi}%

5.3 Dotted Skeletal Bonds

The macros \sixfuseh etc. use inner macros for setting skeletal bonds in accordance with the presence or the absence of hetero atoms. During the processes of such setting, the inner macros \dothskbonda to \dothskbondf are used to set a dotted bond on each edge of a six- or five-membered ring.

\dothskbonda The macro \dothskbonda is the dotted counterpart of \hskbonda, which refers to the control sequences representing atoms on both of the terminal vertices (\aaa and \bbb) and examine whether these are empty or not. Thereby, it decides the vertices to be truncated.

262 %bond between 1 and 2

263 \def\dothskbonda{%
264 \ifx\aaa\empty%
265  \ifx\bbb\empty%
266  \@ifundefined{dottedline}{%
267  \put(0,0){\line(3,5){103}}%           %bond 1-2
268  }{{\thicklines%
269  \dottedline{20}(0,0)(103,171)}}%
270  \else%
271  \@ifundefined{dottedline}{%
272  \put(0,0){\line(3,5){79}}%            %bond 1-2
273  }{{\thicklines%
274  \dottedline{20}(0,0)(79,132)}}%
275  \fi%
276 \else%
277  \ifx\bbb\empty%
278  \@ifundefined{dottedline}{%
279  \put(24,40){\line(3,5){79}}%          %bond 1-2
280  }{{\thicklines%
281  \dottedline{20}(24,40)(103,171)}}%
282  \else%
283  \@ifundefined{dottedline}{%
284  \put(24,40){\line(3,5){62}}%          %bond 1-2
285  }{{\thicklines%
286  \dottedline{20}(24,40)(86,143)}}%
287  \fi\fi}%

\dothskbondb The macro \dothskbondb is the dotted counterpart of \hskbondb, which refers to the control sequences representing atoms on both of the terminal vertices (\bbb and \ccc) and examine whether these are empty or not. Thereby, it decides the vertices to be truncated.

288 %bond between 3 and 2
289 \def\dothskbondb{%
290 \ifx\bbb\empty%
291  \ifx\ccc\empty%
292  \@ifundefined{dottedline}{%
293  \put(103,171){\line(1,0){200}}%       %bond 2-3
294  }{{\thicklines%
295  \dottedline{20}(103,171)(303,171)}}%
296  \else%
297  \@ifundefined{dottedline}{%
298  \put(103,171){\line(1,0){160}}%       %bond 3-2
299  }{{\thicklines%
300  \dottedline{20}(103,171)(263,171)}}%
301  \fi%
302 \else%
303  \ifx\ccc\empty%
304  \@ifundefined{dottedline}{%
305  \put(143,171){\line(1,0){160}}%       %bond 3-2
306  }{{\thicklines%

307  \dottedline{20}(143,171)(303,171)}}%
308  \else%
309  \@ifundefined{dottedline}{%
310  \put(143,171){\line(1,0){120}}%       %bond 3-2
311  }{{\thicklines%
312  \dottedline{20}(143,171)(263,171)}}%
313  \fi\fi}%

\dothskbondc The macro \dothskbondc is the dotted counterpart of \hskbondc, which refers to the control sequences representing atoms on both of the terminal vertices (\ddd and \ccc) and examine whether these are empty or not. Thereby, it decides the vertices to be truncated.

314 %bond between 4 and 3
315 \def\dothskbondc{%
316 \ifx\ddd\empty%
317  \ifx\ccc\empty%
318  \@ifundefined{dottedline}{%
319  \put(406,0){\line(-3,5){103}}%         %bond 4-3
320  }{{\thicklines%
321  \dottedline{20}(406,0)(303,171)}}%
322  \else%
323  \@ifundefined{dottedline}{%
324  \put(406,0){\line(-3,5){79}}%         %bond 4-3
325  }{{\thicklines%
326  \dottedline{20}(406,0)(327,132)}}%
327  \fi%
328 \else%
329  \ifx\ccc\empty%
330  \@ifundefined{dottedline}{%
331  \put(382,40){\line(-3,5){79}}%        %bond 4-3
332  }{{\thicklines%
333  \dottedline{20}(382,40)(303,171)}}%
334  \else%
335  \@ifundefined{dottedline}{%
336  \put(382,40){\line(-3,5){62}}%        %bond 4-3
337  }{{\thicklines%
338  \dottedline{20}(382,40)(320,143)}}%
339  \fi\fi}%

\dothskbondd The macro \dothskbondd is the dotted counterpart of \hskbondd, which refers to the control sequences representing atoms on both of the terminal vertices (\ddd and \eee) and examine whether these are empty or not. Thereby, it decides the vertices to be truncated.

340 %bond between 4 and 5
341 \def\dothskbondd{%
342 \ifx\ddd\empty%
343  \ifx\eee\empty%
344  \@ifundefined{dottedline}{%
345  \put(406,0){\line(-3,-5){103}}%       %bond 4-5

346  }{{\thicklines%
347  \dottedline{20}(406,0)(303,-171)}}%
348  \else%
349  \@ifundefined{dottedline}{%
350  \put(406,0){\line(-3,-5){79}}%        %bond 4-5
351  }{{\thicklines%
352  \dottedline{20}(406,0)(327,-132)}}%
353  \fi%
354 \else%
355  \ifx\eee\empty%
356  \@ifundefined{dottedline}{%
357  \put(382,-40){\line(-3,-5){79}}%      %bond 4-5
358  }{{\thicklines%
359  \dottedline{20}(382,-40)(303,-171)}}%
360  \else%
361  \@ifundefined{dottedline}{%
362  \put(382,-40){\line(-3,-5){62}}%      %bond 4-5
363  }{{\thicklines%
364  \dottedline{20}(382,-40)(320,-143)}}%
365  \fi\fi}%

\dothskbonde The macro \dothskbonde is the dotted counterpart of \hskbonde, which refers to the control sequences representing atoms on both of the terminal vertices (\eee and \fff) and examine whether these are empty or not. Thereby, it decides the vertices to be truncated.

366 %bond between 5 and 6
367 \def\dothskbonde{%
368 \ifx\eee\empty%
369  \ifx\fff\empty%
370  \@ifundefined{dottedline}{%
371  \put(103,-171){\line(1,0){200}}%      %bond 6-5
372  }{{\thicklines%
373  \dottedline{20}(103,-171)(303,-171)}}%
374  \else%
375  \@ifundefined{dottedline}{%
376  \put(143,-171){\line(1,0){160}}%      %bond 5-6
377  }{{\thicklines%
378  \dottedline{20}(143,-171)(303,-171)}}%
379  \fi%
380 \else%
381  \ifx\fff\empty%
382  \@ifundefined{dottedline}{%
383  \put(103,-171){\line(1,0){160}}%      %bond 5-6
384  }{{\thicklines%
385  \dottedline{20}(103,-171)(263,-171)}}%
386  \else%
387  \@ifundefined{dottedline}{%
388  \put(143,-171){\line(1,0){120}}%      %bond 5-6
389  }{{\thicklines%

390  \dottedline{20}(143,-171)(263,-171)}}%
391  \fi\fi}%

\dothskbondf The macro \dothskbondf is the dotted counterpart of \hskbondf, which refers to the control sequences representing atoms on both of the terminal vertices (\aaa and \fff) and examine whether these are empty or not. Thereby, it decides the vertices to be truncated.

392 %bond between 1 and 6
393 \def\dothskbondf{%
394 \ifx\aaa\empty%
395  \ifx\fff\empty
396  \@ifundefined{dottedline}{%
397  \put(0,0){\line(3,-5){103}}%          %bond 1-6
398  }{{\thicklines%
399  \dottedline{20}(0,0)(103,-171)}}%
400  \else%
401  \@ifundefined{dottedline}{%
402  \put(0,0){\line(3,-5){79}}%           %bond 1-6
403  }{{\thicklines%
404  \dottedline{20}(0,0)(79,-131)}}%
405  \fi%
406 \else%
407  \ifx\fff\empty%
408  \@ifundefined{dottedline}{%
409  \put(24,-40){\line(3,-5){79}}%        %bond 1-6
410  }{{\thicklines%
411  \dottedline{20}(24,-40)(103,-171)}}%
412  \else%
413  \@ifundefined{dottedline}{%
414  \put(24,-40){\line(3,-5){62}}%        %bond 1-6
415  }{{\thicklines%
416  \dottedline{20}(24,-40)(86,-143)}}%
417  \fi\fi}%

\dothskbondvert The macro \dothskbondvert refers to the control sequences representing atoms on both of the terminal vertices (\bbb and \fff) and examine whether these are empty or not. Thereby, it decides the vertices to be truncated.

418 %vertical bond for five-membered rings
419 \def\dothskbondvert{%
420 \ifx\fff\empty%
421  \ifx\bbb\empty%
422  \@ifundefined{dottedline}{%
423  \put(103,-171){\line(0,1){342}}%      %bond 4-3
424  }{{\thicklines%
425  \dottedline{20}(103,-171)(103,171)}}%
426  \else%
427  \@ifundefined{dottedline}{%
428  \put(103,-171){\line(0,1){300}}%      %bond 4-3
429  }{{\thicklines%

430  \dottedline{20}(103,-171)(103,129)}}%
431  \fi%
432 \else%
433  \ifx\bbb\empty%
434  \@ifundefined{dottedline}{%
435  \put(103,171){\line(0,-1){300}}%      %bond 4-3
436  }{{\thicklines%
437  \dottedline{20}(103,171)(103,-129)}}%
438  \else%
439  \@ifundefined{dottedline}{%
440  \put(103,-129){\line(0,1){258}}%      %bond 4-3
441  }{{\thicklines%
442  \dottedline{20}(103,-129)(103,129)}}%
443  \fi\fi}%

\dothskbondverti The macro \dothskbondverti refers to the control sequences representing atoms on both of the terminal vertices (\eee and \ccc) and examine whether these are empty or not. Thereby, it decides the vertices to be truncated.

444 %vertical bond for five-membered rings (inverse type)
445 \def\dothskbondverti{%
446 \ifx\eee\empty%
447  \ifx\ccc\empty%
448  \@ifundefined{dottedline}{%
449  \put(303,-171){\line(0,1){342}}%      %bond 4-3
450  }{{\thicklines%
451  \dottedline{20}(303,-171)(303,171)}}%
452  \else%
453  \@ifundefined{dottedline}{%
454  \put(303,-171){\line(0,1){300}}%      %bond 4-3
455  }{{\thicklines%
456  \dottedline{20}(303,-171)(303,129)}}%
457  \fi%
458 \else%
459  \ifx\ccc\empty%
460  \@ifundefined{dottedline}{%
461  \put(303,171){\line(0,-1){300}}%      %bond 4-3
462  }{{\thicklines%
463  \dottedline{20}(303,171)(303,-129)}}%
464  \else%
465  \@ifundefined{dottedline}{%
466  \put(303,-129){\line(0,1){258}}%      %bond 4-3
467  }{{\thicklines%
468  \dottedline{20}(303,-129)(303,129)}}%
469  \fi\fi}%

The macro \set@skel@bondh is used in \sixfuseh etc. for setting skeletal bonds (outer bonds), when \@aaa etc. (produced by \csname...\endcsname) are equal to ‘a’ etc. (given as #2). Thinline, thickline and dotted-line skeletal bonds are available.

\set@skel@bondh
470 \def\set@skel@bondh#1#2#3{%
471 \expandafter\if\csname @#2#2#2\endcsname #2\relax%OK
472  % \if\@aaa #2\relax%OK
473 \@skbondlistfalse
474 \@tfor\member:=#1\do{%
475 \expandafter\twoCH@@R\member//
476  \if\@@tmpa #2\relax%
477  \if\@@tmpb A\relax%
478  \expandafter\csname dothskbond#3\endcsname% \dothskbonda etc.
479  \@skbondlisttrue
480  \else\if\@@tmpb B\relax%
481  {\thicklines
482  \expandafter\csname hskbond#3\endcsname% \hskbonda etc.

483 }%

484  \@skbondlisttrue
485  \fi\fi
486  \fi%

487 }%

488 \if@skbondlist\else
489  {\thinlines
490  \expandafter\csname hskbond#3\endcsname% \hskbonda etc.

491 }%

492 \fi%
493 \else
494  \expandafter\ifx\csname @#2#2#2\endcsname \empty\relax%
495  %    \ifx\@aaa\empty\relax
496  \@tfor\member:=#1\do{%
497  \expandafter\twoCH@@R\member//
498  \if\@@tmpa #2\relax%
499  \XyMTeXWarning{Unavailable bond `#2' in SKBONDLIST}\fi

500 }%

501 \fi\fi
502 }% end of \set@skel@bondh

6 Six-membered heterocyles

6.1 Horizontal type

The standard skeleton of a six-membered heterocycle is selected to have the following locant numbers.

  *************************
  * sixhetero derivatives *
  *  (horizontal type)    *
  *************************
  The following numbering is adopted in this macro.
                                    b

                                2      3
                            a    -----    c
                               *       *
   the original point ===> 1 *           * 4
          (0,0)                *       *  d
                            f    -----
                                6      5
                                   e

The macro \sixheterovh has two arguments ATOMLIST and SUBSLIST as well as an optional argument BONDLIST. Two optional arguments SKBONDLIST and OMIT are added to treat stereochemical information or other bond situations.

   \sixheteroh(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[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 ‘A’ represents an aromatic circle. The option ‘n+’ (n = 1 to 6) represents a plus charge on a hetero atom at the n-position.

     BONDLIST =
           none or r  :  sixhetero (right-handed)
           l          :  sixhetero (left-handed)
           a          :  1,2-double bond
           b          :  2,3-double bond
           c          :  4,3-double bond
           d          :  4,5-double bond
           e          :  5,6-double bond
           f          :  6,1-double bond
           A          :  aromatic circle
           {n+}       :  plus at the n-nitrogen atom (n = 1 to 6)

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 (max 6 substitution positions)
for n = 1 to 6
nD         :  exocyclic double bond at n-atom
n or nS    :  exocyclic single bond at n-atom
nA         :  alpha single bond at n-atom
nB         :  beta single bond at n-atom
nSA        :  alpha single bond at n-atom (boldface)
nSB        :  beta single bond at n-atom (dotted line)
nSa        :  alpha (not specified) single bond at n-atom
nSb        :  beta (not specified) single bond at n-atom
nSd        :  alpha single bond at n-atom (dotted line)
                with an alternative direction to nSA
nSu        :  beta single bond at n-atom (boldface)
                with an alternative direction to nSB
nFA        :  alpha single bond at n-atom (dotted line)
                for ring fusion
nFB        :  beta single bond at n-atom (boldface)
                for ring fusion
nGA        :  alpha single bond at n-atom (dotted line)
                for the other ring fusion
nGB        :  beta single bond at n-atom (boldface)
                for the other ring fusion

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

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

Several examples are shown as follows.

e.g.
\sixheteroh{1==N}{1==Cl;2==F}
\sixheteroh[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
\sixheteroh[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl}

The definition of \sixheteroh uses a picture environment and consists of the following unit processes:

1. treatment of atom list,

2. placing outer skeletons,

3. placing inner double bonds,

4. setting hetero atoms, and

5. placing substituents by \setsixringh.

\sixheteroh
\@six@heteroh
\@six@@heteroh
\@sixheteroh

503 \def\sixheteroh{\@ifnextchar({\@six@heteroh(@}{\@six@heteroh(@)}}
504 \def\@six@heteroh(#1){\@ifnextchar[{\@six@@heteroh(#1)[@}%
505 {\@six@@heteroh(#1)[@]}}
506 \def\@six@@heteroh(#1)[#2]#3#4{\@ifnextchar[%
507 {\@sixheteroh(#1)[#2]{#3}{#4}[@}%
508 {\@sixheteroh(#1)[#2]{#3}{#4}[@]}}
509 \def\@sixheteroh(#1)[#2]#3#4[#5]{%
510 % %%%%%%%%%%%%%%%%%%%%%%%%%%
511 % % treatment of atom list %
512 % %%%%%%%%%%%%%%%%%%%%%%%%%%
513 \iniatom\iniflag%initialize
514 \test@vrtx@sixh{#3}%
515 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
516 % % adjustment of attached positions %
517 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
518 \@reset@ylsw%
519 \ylpositionh{#4}{0}{0}{7}{0}%
520 \if@ylsw
521 \yl@shiftii=\@ylii
522 \yl@shifti=\@yli
523 \advance\yl@shiftii\yl@xdiff
524 \advance\yl@shifti\yl@ydiff
525 \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
526 \reset@yl@xydiff%1999/1/6 by S. Fujita
527 \else
528 \begin{picture}(880,800)(-240,-400)%
529 \iforigpt \put(-\shifti,-\shiftii){\circle*{50}}%
530  \put(-\noshift,-\noshift){\circle{50}}%
531 \typeout{command `sixheteroh' origin: %
532  (\the\noshift,\the\noshift) ---> (\the\shifti,\the\shiftii)}\fi%
533 \fi
534 % %%%%%%%%%%%%%%%%%%
535 % % outer skeleton %
536 % %%%%%%%%%%%%%%%%%%

537 {%

538 \resetbdsw%

539 \@bond@@omit{#5}%
540 \set@skel@bondh{#1}{a}{a}% bond between 1 and 2 \@aaa -> \hskbonda etc
541 \set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc
542 \set@skel@bondh{#1}{c}{c}% bond between 3 and 4 \@ccc -> \hskbondc etc
543 \set@skel@bondh{#1}{d}{d}% bond between 4 and 5 \@ddd -> \hskbondd etc
544 \set@skel@bondh{#1}{e}{e}% bond between 5 and 6 \@eee -> \hskbonde etc
545 \set@skel@bondh{#1}{f}{f}% bond between 6 and 1 \@fff -> \hskbondf etc

546 }%

547 % %%%%%%%%%%%%%%%%%%%%%
548 % % inner double bond %
549 % %%%%%%%%%%%%%%%%%%%%%
550 \@tfor\member:=#2\do{%
551 \if\member r\relax \hbondd \hbondf \hbondb%
552 \else \if\member l\relax \hbonda \hbondc \hbonde%
553 \else \if\member a\relax \hbonda%
554 \else \if\member b\relax \hbondb%
555 \else \if\member c\relax \hbondc%
556 \else \if\member d\relax \hbondd%
557 \else \if\member e\relax \hbonde%
558 \else \if\member f\relax \hbondf%
559 \else \if\member A%left aromatic circle
560 %  \put(0,203){\circle{240}}%                %circle
561 \put(203,0){\circle{240}}%                %circle
562 % %%%%%%%%%%%%%%%%%%%%%%%%%
563 % % inner bond attachment %
564 % %%%%%%%%%%%%%%%%%%%%%%%%%
565 \else \expandafter\twoCH@@R\member//%
566  \set@fusionadd@sixh
567 \fi\fi\fi\fi\fi\fi\fi\fi\fi}%
568 % %%%%%%%%%%%%%%%%%%%%%%%%
569 % % setting hetero atoms %
570 % %%%%%%%%%%%%%%%%%%%%%%%%
571 \set@hetatom@sixh{#3}{0}{0}{7}{0}%    %atom 1--6%
572 % %%%%%%%%%%%%%%%%%%%%%%%%
573 % % setting substituents %
574 % %%%%%%%%%%%%%%%%%%%%%%%%
575 \setsixringh{#4}{0}{0}{7}{0}%              %subst 1--6
576 \end{picture}\iniatom\iniflag}%     %end of \sixheteroh macro

The macro \test@vrtx@sixh is used to test the presence of a hetero atom or a spiro substituent on a vertex of the sixheteroh nucleus.

\test@vrtx@sixh
577 \def\test@vrtx@sixh#1{%
578 \@forsemicol\member:=#1\do{%
579 \ifx\member\empty\else
580 \expandafter\@m@mb@r\member;\relax%
581 \expandafter\twoch@r\@membera{}%

582 \ifcase\@tmpa%
583 \or% \xdef\aaa{\@memberb}%
584 \if\@tmpb s\relax\def\aaa{}\else\def\aaa{@}\fi
585 \or% \xdef\bbb{\@memberb}%
586 \if\@tmpb s\relax\def\bbb{}\else\def\bbb{@}\fi
587 \or% \xdef\ccc{\@memberb}%
588 \if\@tmpb s\relax\def\ccc{}\else\def\ccc{@}\fi
589 \or% \xdef\ddd{\@memberb}%
590 \if\@tmpb s\relax\def\ddd{}\else\def\ddd{@}\fi
591 \or% \xdef\eee{\@memberb}%
592 \if\@tmpb s\relax\def\eee{}\else\def\eee{@}\fi
593 \or% \xdef\fff{\@memberb}%
594 \if\@tmpb s\relax\def\fff{}\else\def\fff{@}\fi
595 \fi\fi}%
596 }% end of \test@vrtx@sixh

6.2 Inverse horizontal type

The standard skeleton of a six-membered heterocycle of inverse type is selected to have the following locant numbers.

  ************************************
  * sixhetero derivatives            *
  *  (horizontal type, inverse type) *
  ************************************
  The following numbering is adopted in this macro.
                                    b
                                 3      2
                             c    -----    a
                                *       *
    the original point ===> 4 *           * 1
           (0,0)                *       *  f
                             d    -----
                                 5      6
                                    e

The macro \sixheterohi has two arguments ATOMLIST and SUBSLIST as well as an optional argument BONDLIST. Two optional arguments SKBONDLIST and OMIT are added to treat stereochemical information or other bond situations.

    \sixheterohi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[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 ‘A’ represents an aromatic circle. The option ‘n+’ (n = 1 to 6) represents a plus charge on a hetero atom at the n-position.

     BONDLIST =
           none or r  :  sixhetero (right-handed)
           l          :  sixhetero (left-handed)
           []         :  fully saturated form
           a          :  1,2-double bond
           b          :  2,3-double bond
           c          :  4,3-double bond
           d          :  4,5-double bond
           e          :  5,6-double bond
           f          :  6,1-double bond
           A          :  aromatic circle
           {n+}       :  plus at the n-nitrogen atom (n = 1 to 4)

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 (max 6 substitution positions)
       for n = 1 to 6
           nD         :  exocyclic double bond at n-atom
           n or nS    :  exocyclic single bond at n-atom
           nA         :  alpha single bond at n-atom
           nB         :  beta single bond at n-atom
           nSA        :  alpha single bond at n-atom (boldface)
           nSB        :  beta single bond at n-atom (dotted line)
           nSa        :  alpha (not specified) single bond at n-atom

nSb        :  beta (not specified) single bond at n-atom
nSd        :  alpha single bond at n-atom (dotted line)
                with an alternative direction to nSA
nSu        :  beta single bond at n-atom (boldface)
                with an alternative direction to nSB
nFA        :  alpha single bond at n-atom (dotted line)
                for ring fusion
nFB        :  beta single bond at n-atom (boldface)
                for ring fusion
nGA        :  alpha single bond at n-atom (dotted line)
                for the other ring fusion
nGB        :  beta single bond at n-atom (boldface)
                for the other ring fusion

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

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

Several examples are shown as follows.

e.g.
\sixheterohi{1==N}{1==Cl;2==F}
\sixheterohi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
\sixheterohi[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl}

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

1. treatment of atom list,

2. placing outer skeletons,

3. placing inner double bonds,

4. setting hetero atoms, and

5. placing substituents by \setsixringh.

\sixheterohi
\@six@heterohi
\@six@@heterohi
\@sixheterohi

597 \def\sixheterohi{\@ifnextchar({\@six@heterohi(@}{\@six@heterohi(@)}}
598 \def\@six@heterohi(#1){\@ifnextchar[{\@six@@heterohi(#1)[@}%
599 {\@six@@heterohi(#1)[@]}}
600 \def\@six@@heterohi(#1)[#2]#3#4{\@ifnextchar[%
601 {\@sixheterohi(#1)[#2]{#3}{#4}[@}%
602 {\@sixheterohi(#1)[#2]{#3}{#4}[@]}}
603 \def\@sixheterohi(#1)[#2]#3#4[#5]{%

604 % %%%%%%%%%%%%%%%%%%%%%%%%%%
605 % % treatment of atom list %
606 % %%%%%%%%%%%%%%%%%%%%%%%%%%
607 \iniatom\iniflag%initialize
608 \test@vrtx@sixhi{#3}%
609 \@reset@ylsw%
610 \ylpositionh{#4}{5}{0}{5}{-1}%               %subst 1--4
611 \ylpositionh{#4}{11}{4}{7}{-1}%              %subst 5 and 6
612 \if@ylsw
613 \yl@shiftii=\@ylii
614 \yl@shifti=\@yli
615 \advance\yl@shiftii\yl@xdiff
616 \advance\yl@shifti\yl@ydiff
617 \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
618 \reset@yl@xydiff%1999/1/6 by S. Fujita
619 \else
620 \begin{picture}(880,800)(-240,-400)%
621 \iforigpt \put(-\shifti,-\shiftii){\circle*{50}}%
622  \put(-\noshift,-\noshift){\circle{50}}%
623 \typeout{command `sixheterohi' origin: %
624  (\the\noshift,\the\noshift) ---> (\the\shifti,\the\shiftii)}\fi%
625 \fi
626 % %%%%%%%%%%%%%%%%%%
627 % % outer skeleton %
628 % %%%%%%%%%%%%%%%%%%
629 {\resetbdsw%
630 \@bond@@omit{#5}%
631 \set@skel@bondh{#1}{a}{c}% bond between 1 and 2 \@aaa -> \hskbondc etc
632 \set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc
633 \set@skel@bondh{#1}{c}{a}% bond between 3 and 4 \@ccc -> \hskbonda etc
634 \set@skel@bondh{#1}{d}{f}% bond between 4 and 5 \@ddd -> \hskbondf etc
635 \set@skel@bondh{#1}{e}{e}% bond between 5 and 6 \@eee -> \hskbonde etc
636 \set@skel@bondh{#1}{f}{d}% bond between 6 and 1 \@fff -> \hskbondd etc

637 }%

638 % %%%%%%%%%%%%%%%%%%%%%
639 % % inner double bond %
640 % %%%%%%%%%%%%%%%%%%%%%
641 \@tfor\member:=#2\do{%
642 \if\member r\relax \hbondd \hbondf \hbondb%
643 \else \if\member l\relax \hbonda \hbondc \hbonde%
644 \else \if\member a\relax \hbondc%
645 \else \if\member b\relax \hbondb%
646 \else \if\member c\relax \hbonda%
647 \else \if\member d\relax \hbondf%
648 \else \if\member e\relax \hbonde%
649 \else \if\member f\relax \hbondd%
650 \else \if\member A%left aromatic circle
651 %  \put(0,203){\circle{240}}%               %circle
652 \put(203,0){\circle{240}}%               %circle

653 % %%%%%%%%%%%%%%%%%%%%%%%%%
654 % % inner bond attachment %
655 % %%%%%%%%%%%%%%%%%%%%%%%%%
656 \else \expandafter\twoCH@@R\member//%
657  \set@fusionadd@sixhi
658 \fi\fi\fi\fi\fi\fi\fi\fi\fi}%
659 % %%%%%%%%%%%%%%%%%%%%%%%%
660 % % setting hetero atoms %
661 % %%%%%%%%%%%%%%%%%%%%%%%%
662 \set@hetatom@sixh{#3}{5}{0}{5}{-1}%               %subst 1--4
663 \set@hetatom@sixh{#3}{11}{4}{7}{-1}%              %subst 5 and 6
664 % %%%%%%%%%%%%%%%%%%%%%%%%
665 % % setting substituents %
666 % %%%%%%%%%%%%%%%%%%%%%%%%
667 \setsixringh{#4}{5}{0}{5}{-1}%               %subst 1--4
668 \setsixringh{#4}{11}{4}{7}{-1}%              %subst 5 and 6
669 \end{picture}\iniatom\iniflag}%     %end of \sixheterohi macro

The macro \test@vrtx@sixhi is used to test the presence of a hetero atom or a spiro substituent on a vertex of the sixheteroh nucleus.

\test@vrtx@sixhi
670 \def\test@vrtx@sixhi#1{%
671 \@forsemicol\member:=#1\do{%
672 \ifx\member\empty\else
673 \expandafter\@m@mb@r\member;\relax%
674 \expandafter\twoch@r\@membera{}%
675 \ifcase\@tmpa%
676 \or \if\@tmpb s\relax\def\ddd{}\else\def\ddd{@}\fi
677 \or \if\@tmpb s\relax\def\ccc{}\else\def\ccc{@}\fi
678 \or \if\@tmpb s\relax\def\bbb{}\else\def\bbb{@}\fi
679 \or \if\@tmpb s\relax\def\aaa{}\else\def\aaa{@}\fi
680 \or \if\@tmpb s\relax\def\fff{}\else\def\fff{@}\fi
681 \or \if\@tmpb s\relax\def\eee{}\else\def\eee{@}\fi
682 \fi\fi}%
683 }% end of \test@vrtx@sixhi

6.3 Pyridine derivatives of horizontal type

The macros \sixheteroh and \sixheterohi can be used in the form of a fixed ATOMLIST. Hence, the resulting commands for drawing a six-membered heterocyle with one or more nitrogen atoms have an argument SUBSLIST as well as an optional argument BONDLIST.

  ************************
  * pyridine derivatives *
  *  (horizontal type)   *
  ************************

\pyridineh[BONDLIST]{SUBSLIST}
\pyridinehi[BONDLIST]{SUBSLIST}
\pyrazineh[BONDLIST]{SUBSLIST}
\pyrimidineh[BONDLIST]{SUBSLIST}
\pyrimidinehi[BONDLIST]{SUBSLIST}
\triazineh[BONDLIST]{SUBSLIST}
\triazinehi[BONDLIST]{SUBSLIST}

The BONDLIST argument contains one character selected from a to f, each of which indicates the presence of an inner (endcyclic) double bond on the corresponding position. The option ‘A’ represents an aromatic circle. The option ‘n+’ (n = 1 to 6) represents a plus charge on a hetero atom at the n-position.

BONDLIST =
none or r  :  pyridine (right-handed)
l          :  pyridine (left-handed)
[]         :  fully saturated ring
a          :  1,2-double bond
b          :  2,3-double bond
c          :  4,3-double bond
d          :  4,5-double bond
e          :  5,6-double bond
f          :  6,1-double bond
A          :  aromatic circle
{n+}       :  plus at the nitrogen atom

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

Several examples are shown as follows.

        e.g.
         \pyridineh{1==Cl;2==F}
         \pyridineh[c]{1==Cl;4==F;2==CH$_{3}$}
         \pyridineh[eb]{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl}

\pyridineh \pyridinehi
684 \def\pyridineh{\@ifnextchar[{\@pyridineh[@}{\@pyridineh[r]}}%
685 \def\@pyridineh[#1]#2{%
686 \iforigpt \typeout{command `pyridineh' %
687 is based on `sixheteroh'.}\fi%
688 \sixheteroh[#1]{1==N}{#2}}%end of \pyridineh macro
689 \def\pyridinehi{\@ifnextchar[{\@pyridinehi}{\@pyridinehi[r]}}%
690 \def\@pyridinehi[#1]#2{%
691 \iforigpt \typeout{command `pyridinehi' %
692 is based on `sixheterohi'.}\fi%
693 \sixheterohi[#1]{1==N}{#2}}% %end of \pyridinehi macro
\pyridazineh
694 \def\pyrazineh{\@ifnextchar[{\@pyrazineh[@}{\@pyrazineh[r]}}%
695 \def\@pyrazineh[#1]#2{%
696 \iforigpt \typeout{command `pyrazineh' %
697 is based on `sixheteroh'.}\fi%
698 \sixheteroh[#1]{1==N;4==N}{#2}}%end of \pyrazineh macro
\pyrimidineh
\pyrimidinehi
699 \def\pyrimidineh{%
700 \@ifnextchar[{\@pyrimidineh[@}{\@pyrimidineh[r]}}%
701 \def\@pyrimidineh[#1]#2{%
702 \iforigpt \typeout{command `pyrimidineh' %
703 is based on `sixheteroh'.}\fi%
704 \sixheteroh[#1]{1==N;3==N}{#2}}%
705 %end of \pyrimidineh macro
706 \def\pyrimidinehi{%
707 \@ifnextchar[{\@pyrimidinehi[@}{\@pyrimidinehi[r]}}%

708 \def\@pyrimidinehi[#1]#2{%
709 \iforigpt \typeout{command `pyrimidinehi' %
710 is based on `sixheterohi'.}\fi%
711 \sixheterohi[#1]{1==N;3==N}{#2}}%end of \pyrimidinehi macro
\pyridazineh
\pyridazinehi
712 \def\pyridazineh{\@ifnextchar[{\@pyridazineh[@}{\@pyridazineh[r]}}%
713 \def\@pyridazineh[#1]#2{%
714 \iforigpt \typeout{command `pyridazineh' %
715 is based on `sixheteroh'.}\fi%
716 \sixheteroh[#1]{1==N;2==N}{#2}}%
717 %end of \pyridazineh macro
718 \def\pyridazinehi{%
719 \@ifnextchar[{\@pyridazinehi}{\@pyridazinehi[r]}}%
720 \def\@pyridazinehi[#1]#2{%
721 \iforigpt \typeout{command `pyridazinehi' %
722 is based on `sixheterohi'.}\fi%
723 \sixheterohi[#1]{1==N;2==N}{#2}}%end of \pyridazinehi macro
\triazineh \triazinehi
724 \def\triazineh{\@ifnextchar[{\@triazineh[@}{\@triazineh[r]}}%
725 \def\@triazineh[#1]#2{%
726 \iforigpt \typeout{command `triazineh' %
727 is based on `sixheteroh'.}\fi%
728 \sixheteroh[#1]{1==N;3==N;5==N}{#2}}%end of \triazineh macro
729 \def\triazinehi{\@ifnextchar[{\@triazinehi[@}{\@triazinehi[r]}}%
730 \def\@triazinehi[#1]#2{%
731 \iforigpt \typeout{command `triazinehi' %
732 is based on `sixheterohi'.}\fi%
733 \sixheterohi[#1]{1==N;3==N;5==N}{#2}}%end of \triazinehi macro

7 Five-membered heterocycles

7.1 Horizontal type

The standard skeleton of a five-membered heterocycle is selected to have the following locant numbers.

  ****************************
  * fivehetero derivatives   *
  *  (horizontal type)       *
  ****************************
  The following numbering is adopted in this macro.
      3  _____2
        |       *
        |         * 1 <===== the original point
        |       *
      4  -----  5

The macro \fiveheteroh has two arguments ATOMLIST and SUBSLIST as well as an optional argument BONDLIST. Two optional arguments SKBONDLIST and OMIT are added to treat stereochemical information or other bond situations.

   \fiveheteroh(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[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 ‘e’ and a uppercase character ‘A’ or ‘B’.

The BONDLIST argument contains one character selected from a to e, each of which indicates the presence of an inner (endcyclic) double bond on the corresponding position. The option ‘A’ represents an aromatic circle. The option ‘n+’ (n = 1 to 5) represents a plus charge on a hetero atom at the n-position. The option ‘0+’ represents a plus charge at the center of the ring.

     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 OMIT represents one or more bonds to be omitted. The omitted edges may be regarded as both fused and non-fused positions.

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

Several examples are shown as follows.

e.g.
\fiveheteroh{1==N}{1==H;2==F}
\fiveheteroh[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
\fiveheteroh[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl}

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

1. treatment of atom list,

2. placing outer skeletons,

3. placing inner double bonds,

4. setting hetero atoms, and

5. placing substituents by \setsixringh partially.

\fiveheteroh
\@five@heteroh
\@five@@heteroh
\@fiveheteroh

734 \def\fiveheteroh{\@ifnextchar({\@five@heteroh(@}{\@five@heteroh(@)}}
735 \def\@five@heteroh(#1){\@ifnextchar[{\@five@@heteroh(#1)[@}%
736 {\@five@@heteroh(#1)[@]}}
737 \def\@five@@heteroh(#1)[#2]#3#4{\@ifnextchar[%
738 {\@fiveheteroh(#1)[#2]{#3}{#4}[@}%
739 {\@fiveheteroh(#1)[#2]{#3}{#4}[@]}}
740 \def\@fiveheteroh(#1)[#2]#3#4[#5]{%
741 \iniatom\iniflag%initialize
742 % %%%%%%%%%%%%%%%%%%%%%%%%%%
743 % % treatment of atom list %
744 % %%%%%%%%%%%%%%%%%%%%%%%%%%
745 \test@vrtx@fivehi{#3}%
746 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
747 % % adustment of subs positions %
748 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
749 \@reset@ylsw%
750 \ylpositionh{#4}{5}{1}{5}{-1}%   % for 1 to 3
751 \if@ylsw \ifx\@@ylii\empty
752 \def\@@ylii{0}\def\@@yli{0}\fi
753 \else
754 \ylpositionh{#4}{10}{4}{7}{-1}%  % for 4 to 5
755 \fi
756 \if@ylsw \ifx\@@ylii\empty
757 \def\@@ylii{0}\def\@@yli{0}\fi
758 \fi
759 \if@ylsw
760 \yl@shiftii=\@ylii
761 \yl@shifti=\@yli
762 \advance\yl@shiftii\@@ylii
763 \advance\yl@shifti\@@yli
764 \advance\yl@shiftii\yl@xdiff
765 \advance\yl@shifti\yl@ydiff
766 \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
767 \reset@yl@xydiff%1999/1/6 by S. Fujita
768 \else
769 \begin{picture}(800,880)(-240,-400)%
770 \iforigpt \put(-\shifti,-\shiftii){\circle*{50}}%
771  \put(-\noshift,-\noshift){\circle{50}}%
772 \typeout{command `fiveheteroh' origin: %
773  (\the\noshift,\the\noshift) ---> (\the\shifti,\the\shiftii)}\fi%
774 \fi
775 % %%%%%%%%%%%%%%%%%%
776 % % outer skeleton %
777 % %%%%%%%%%%%%%%%%%%
778 {\resetbdsw%
779 \@bond@@omit{#5}%

780 \set@skel@bondh{#1}{a}{c}% bond between 1 and 2 \@aaa -> \skbondc etc
781 \set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc
782 \set@skel@longbond{#1}{c}{hskbondvert}%
783  % bond between 3 and 4 \@ccc -> \skbondhoriz etc
784 \set@skel@bondh{#1}{d}{e}% bond between 4 and 5 \@ddd -> \skbonde etc
785 \set@skel@bondh{#1}{e}{d}% bond between 5 and 1 \@eee -> \skbondd etc

786 }%

787 % %%%%%%%%%%%%%%%%%%%%%
788 % % inner double bond %
789 % %%%%%%%%%%%%%%%%%%%%%
790 \@tfor\member:=#2\do{%
791 \if\member r%
792 \else \if\member a\relax \hbondc%
793 \else \if\member b\relax \hbondb%
794 \else \if\member c\relax \hbondvert%
795 \else \if\member d\relax \hbonde%
796 \else \if\member e\relax \hbondd%
797 \else \if\member A%left aromatic circle
798 \put(233,0){\circle{180}}%               %circle
799 \else
800  \expandafter\twoCH@@R\member//%
801  \set@fusionadd@fiveh
802 \fi\fi\fi\fi\fi\fi\fi}%
803 % %%%%%%%%%%%%%%%%%%%%%%%%
804 % % setting hetero atoms %
805 % %%%%%%%%%%%%%%%%%%%%%%%%
806 \put(0,0){\set@hetatom@sixh{#3}{5}{1}{5}{-1}}%   % for 1 to 3
807 \put(0,0){\set@hetatom@sixh{#3}{10}{4}{7}{-1}}%  % for 4 to 5
808 % %%%%%%%%%%%%%%%%%%%%%%%%
809 % % setting substituents %
810 % %%%%%%%%%%%%%%%%%%%%%%%%
811 \put(0,0){\setsixringh{#4}{5}{1}{5}{-1}}%   % for 1 to 3
812 \put(0,0){\setsixringh{#4}{10}{4}{7}{-1}}%  % for 4 to 5
813 \end{picture}\iniatom\iniflag}%      %end of \fiveheteroh macro

The macro \test@vrtx@fivehi is used to test the presence of a hetero atom or a spiro substituent on a vertex of the fiveheteroh nucleus.

\test@vrtx@fivehi
814 \def\test@vrtx@fivehi#1{%
815 \@forsemicol\member:=#1\do{%
816 \ifx\member\empty\else
817 \expandafter\@m@mb@r\member;\relax%
818 \expandafter\twoch@r\@membera{}%
819 \ifcase\@tmpa%
820 \or \if\@tmpb s\relax\def\ddd{}\else\def\ddd{@}\fi
821 \or \if\@tmpb s\relax\def\ccc{}\else\def\ccc{@}\fi
822 \or \if\@tmpb s\relax\def\bbb{}\else\def\bbb{@}\fi
823 \or \if\@tmpb s\relax\def\fff{}\else\def\fff{@}\fi

824 \or \if\@tmpb s\relax\def\eee{}\else\def\eee{@}\fi
825 \or \if\@tmpb s\relax\def\aaa{}\else\def\aaa{@}\fi% dummy
826 \fi\fi}%
827 }% end of \test@vrtx@sixhi

7.2 Inverse horizontal type

The standard skeleton of a five-membered heterocycle of inverse type is selected to have the following locant numbers.

 *******************************
 * fivehetero derivatives      *
 *  (horizontal type, inverse) *
 *******************************
 The following numbering is adopted in this macro.
                       2  -----  3
                        *       |
 the original point 1 *         |
                        *       |
                           _____|
                        5        4

The macro \fiveheterohi has two arguments ATOMLIST and SUBSLIST as well as an optional argument BONDLIST. Two optional arguments SKBONDLIST and OMIT are added to treat stereochemical information or other bond situations.

   \fiveheterohi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[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 ‘e’ and a uppercase character ‘A’ or ‘B’.

The BONDLIST argument contains one character selected from a to e, each of which indicates the presence of an inner (endcyclic) double bond on the corresponding position. The option ‘A’ represents an aromatic circle. The option ‘n+’ (n = 1 to 5) represents a plus charge on a hetero atom at the n-position. The option ‘0+’ represents a plus charge at the center of the ring.

     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 OMIT represents one or more bonds to be omitted. The omitted edges may be regarded as both fused and non-fused positions.

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

Several examples are shown as follows.

        e.g.
         \fiveheterohi{1==N}{1==H;2==F}
         \fiveheterohi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
         \fiveheterohi[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl}

The definition of \fiveheterohi 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 \setsixringh partially.

\fiveheterohi
\@five@heterohi
\@five@@heterohi
\@fiveheterohi

828 \def\fiveheterohi{\@ifnextchar({\@five@heterohi(@}{\@five@heterohi(@)}}
829 \def\@five@heterohi(#1){\@ifnextchar[{\@five@@heterohi(#1)[@}%
830 {\@five@@heterohi(#1)[@]}}
831 \def\@five@@heterohi(#1)[#2]#3#4{\@ifnextchar[%
832 {\@fiveheterohi(#1)[#2]{#3}{#4}[@}%
833 {\@fiveheterohi(#1)[#2]{#3}{#4}[@]}}
834 \def\@fiveheterohi(#1)[#2]#3#4[#5]{%
835 \iniatom\iniflag%initialize
836 % %%%%%%%%%%%%%%%%%%%%%%%%%%
837 % % treatment of atom list %
838 % %%%%%%%%%%%%%%%%%%%%%%%%%%
839 \test@vertix@sixv{#3}{a}{b}{c}{e}{f}{d}%d--dummy
840 \@reset@ylsw%
841 \ylpositionh{#4}{0}{0}{4}{0}%              % for 1 to 3
842 \if@ylsw \ifx\@@ylii\empty
843 \def\@@ylii{0}\def\@@yli{0}\fi
844 \else
845 \ylpositionh{#4}{1}{4}{7}{0}%              % for 4 to 5
846 \fi
847 \if@ylsw \ifx\@@ylii\empty
848 \def\@@ylii{0}\def\@@yli{0}\fi
849 \fi

850 \if@ylsw
851 \yl@shiftii=\@ylii
852 \yl@shifti=\@yli
853 \advance\yl@shiftii\@@ylii
854 \advance\yl@shifti\@@yli
855 \advance\yl@shiftii\yl@xdiff
856 \advance\yl@shifti\yl@ydiff
857 \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
858 \reset@yl@xydiff%1999/1/6 by S. Fujita
859 \else
860 \begin{picture}(800,880)(-240,-400)%
861 \iforigpt \put(-\shifti,-\shiftii){\circle*{50}}%
862  \put(-\noshift,-\noshift){\circle{50}}%
863 \typeout{command `fiveheterohi' origin: %
864  (\the\noshift,\the\noshift) ---> (\the\shifti,\the\shiftii)}\fi%
865 \fi
866 % %%%%%%%%%%%%%%%%%%
867 % % outer skeleton %
868 % %%%%%%%%%%%%%%%%%%
869 {\resetbdsw%
870 \@bond@@omit{#5}%
871 \set@skel@bondh{#1}{a}{a}% bond between 1 and 2 \@aaa -> \hskbonda etc
872 \set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc
873 \set@skel@longbond{#1}{c}{hskbondverti}%
874  % bond between 3 and 4 \@ccc -> \hskbondverti etc
875 \set@skel@bondh{#1}{d}{e}% bond between 4 and 5 \@ddd -> \hskbonde etc
876 \set@skel@bondh{#1}{e}{f}% bond between 5 and 6 \@eee -> \hskbondf etc

877 }%

878 % %%%%%%%%%%%%%%%%%%%%%
879 % % inner double bond %
880 % %%%%%%%%%%%%%%%%%%%%%
881 \@tfor\member:=#2\do{%
882 \if\member r%
883 \else \if\member a\relax \hbonda%
884 \else \if\member b\relax \hbondb%
885 \else \if\member c\relax \hbondverti%
886 \else \if\member d\relax \hbonde%
887 \else \if\member e\relax \hbondf%
888 \else \if\member A%left aromatic circle
889 \put(173,0){\circle{180}}%               %circle
890 \else
891  \expandafter\twoCH@@R\member//%
892  \set@fusionadd@fivehi
893 \fi\fi\fi\fi\fi\fi\fi}%
894 % %%%%%%%%%%%%%%%%%%%%%%%%
895 % % setting hetero atoms %
896 % %%%%%%%%%%%%%%%%%%%%%%%%
897 \set@hetatom@sixh{#3}{0}{0}{4}{0}%              % for 1 to 3
898 \set@hetatom@sixh{#3}{1}{4}{7}{0}%              % for 4 to 5

899 % %%%%%%%%%%%%%%%%%%%%%%%%
900 % % setting substituents %
901 % %%%%%%%%%%%%%%%%%%%%%%%%
902 \setsixringh{#4}{0}{0}{4}{0}%              % for 1 to 3
903 \setsixringh{#4}{1}{4}{7}{0}%              % for 4 to 5
904 \end{picture}\iniatom\iniflag}%         %end of \fiveheterohi macro

7.3 Pyrrole derivatives of horizontal type

The macro \fiveheteroh can be used in the form of a fixed ATOMLIST. Hence, the resulting commands for drawing a five-membered heterocyle with one or more nitrogen atoms have an argument SUBSLIST as well as an optional argument

BONDLIST.
***********************************
* pyrrole derivatives  and others *
*  (horizontal type)              *
***********************************
\pyrroleh[BONDLIST]{SUBSLIST}
\pyrazoleh[BONDLIST]{SUBSLIST}
\imidazoleh[BONDLIST]{SUBSLIST}
\isoxazoleh[BONDLIST]{SUBSLIST}
\oxazoleh[BONDLIST]{SUBSLIST}

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
none       :  mother nucleus
[]         :  fully saturated form
a          :  1,2-double bond
b          :  2,3-double bond
c          :  4,3-double bond
d          :  4,5-double bond
e          :  5,1-double bond
{n+}       :  plus at the n-nitrogen atom (n = 1 to 5)

The SUBSLIST argument contains one or more substitution descriptors which are separated from each other by a semicolon. Each substitution descriptor has a locant number with a bond modifier and a substituent, where these are separated with a double equality symbol.

SUBSLIST: list of substituents

nD         :  exocyclic double bond at n-atom
n or nS    :  exocyclic single bond at n-atom
nA         :  alpha single bond at n-atom
nB         :  beta single bond at n-atom
nSA        :  alpha single bond at n-atom (boldface)
nSB        :  beta single bond at n-atom (dotted line)
nSa        :  alpha (not specified) single bond at n-atom
nSb        :  beta (not specified) single bond at n-atom
nSd        :  alpha single bond at n-atom (dotted line)
                with an alternative direction to nSA
nSu        :  beta single bond at n-atom (boldface)
                with an alternative direction to nSB
nFA        :  alpha single bond at n-atom (dotted line)
                for ring fusion
nFB        :  beta single bond at n-atom (boldface)
                for ring fusion
nGA        :  alpha single bond at n-atom (dotted line)
                for the other ring fusion
nGB        :  beta single bond at n-atom (boldface)
                for the other ring fusion

Several examples are shown as follows.

e.g.
\pyrroleh{1==H;2==F}
\pyrroleh[]{1==H;2==F}
\imidazoleh[c]{1==Cl;4==F;2==CH$_{3}$}
\isoxazoleh[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl}

\pyrroleh \pyrazoleh \imidazoleh \isoxazoleh \oxazoleh
905 \def\pyrroleh{\@ifnextchar[{\@pyrroleh[@}{\@pyrroleh[bd]}}%
906 \def\@pyrroleh[#1]#2{%
907 \iforigpt \typeout{command `pyrroleh' %
908 is based on `fiveheteroh'.}\fi%
909 \fiveheteroh[#1]{1==N}{#2}}%
910 \def\pyrazoleh{\@ifnextchar[{\@pyrazoleh[@}{\@pyrazoleh[bd]}}%
911 \def\@pyrazoleh[#1]#2{%
912 \iforigpt \typeout{command `pyrazoleh' %
913 is based on `fiveheteroh'.}\fi%
914 \fiveheteroh[#1]{1==N;2==N}{#2}}%
915 \def\imidazoleh{\@ifnextchar[{\@imidazoleh[@}{\@imidazoleh[bd]}}%
916 \def\@imidazoleh[#1]#2{%
917 \iforigpt \typeout{command `imidazoleh' %

918 is based on `fiveheteroh'.}\fi%
919 \fiveheteroh[#1]{1==N;3==N}{#2}}%
920 \def\isoxazoleh{\@ifnextchar[{\@isoxazoleh[@}{\@isoxazoleh[bd]}}%
921 \def\@isoxazoleh[#1]#2{%
922 \iforigpt \typeout{command `isoxazoleh' %
923 is based on `fiveheteroh'.}\fi%
924 \fiveheteroh[#1]{1==O;2==N}{#2}}%
925 \def\oxazoleh{\@ifnextchar[{\@oxazoleh[@}{\@oxazoleh[bd]}}%
926 \def\@oxazoleh[#1]#2{%
927 \iforigpt \typeout{command `oxazoleh' %
928 is based on `fiveheteroh'.}\fi%
929 \fiveheteroh[#1]{1==O;3==N}{#2}}%
\furanh \thiopheneh
930 \def\furanh{\@ifnextchar[{\@furanh[@}{\@furanh[bd]}}
931 \def\@furanh[#1]#2{%
932 \iforigpt \typeout{command `furanh' %
933 is based on `fiveheteroh'.}\fi%
934 \fiveheteroh[#1]{1==O}{#2}}
935 \def\thiopheneh{\@ifnextchar[{\@thiopheneh[@}{\@thiopheneh[bd]}}
936 \def\@thiopheneh[#1]#2{%
937 \iforigpt \typeout{command `thiopheneh' %
938 is based on `fiveheteroh'.}\fi%
939 \fiveheteroh[#1]{1==S}{#2}}

7.4 Pyrrole derivatives of inverse horizontal type

The macro \fiveheterohi can be used in the form of a fixed ATOMLIST. Hence, the resulting commands for drawing a five-membered heterocyle with one or more nitrogen atoms have an argument SUBSLIST as well as an optional argument

 BONDLIST.
  *************************************
  * pyrrole derivatives  and others   *
  *  (horizontal type, inverse)       *
  *************************************
    \pyrrolehi[BONDLIST]{SUBSLIST}
    \pyrazolehi[BONDLIST]{SUBSLIST}
    \imidazolehi[BONDLIST]{SUBSLIST}
    \isoxazolehi[BONDLIST]{SUBSLIST}
    \oxazolehi[BONDLIST]{SUBSLIST}

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
none       :  mother nucleus
[]         :  fully saturated form
a          :  1,2-double bond
b          :  2,3-double bond
c          :  4,3-double bond
d          :  4,5-double bond
e          :  5,1-double bond
{n+}       :  plus at the n-nitrogen atom (n = 1 to 5)

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

Several examples are shown as follows.

e.g.
\pyrrolehi{1==H;2==F}
\pyrrolehi[]{1==H;2==F}

         \imidazolehi[c]{1==Cl;4==F;2==CH$_{3}$}
         \isoxazolehi[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl}

\pyrrolehi
\pyrazolehi
\imidazolehi
\isoxazolehi
\oxazolehi

940 \def\pyrrolehi{\@ifnextchar[{\@pyrrolehi[@}{\@pyrrolehi[bd]}}%
941 \def\@pyrrolehi[#1]#2{%
942 \iforigpt \typeout{command `pyrrolehi' %
943 is based on `fiveheterohi'.}\fi%
944 \fiveheterohi[#1]{1==N}{#2}}%
945 \def\pyrazolehi{\@ifnextchar[{\@pyrazolehi[@}{\@pyrazolehi[bd]}}%
946 \def\@pyrazolehi[#1]#2{%
947 \iforigpt \typeout{command `pyrazolehi' %
948 is based on `fiveheterohi'.}\fi%
949 \fiveheterohi[#1]{1==N;2==N}{#2}}%
950 \def\imidazolehi{\@ifnextchar[{\@imidazolehi[@}{\@imidazolehi[bd]}}%
951 \def\@imidazolehi[#1]#2{%
952 \iforigpt \typeout{command `imidazolehi' %
953 is based on `fiveheterohi'.}\fi%
954 \fiveheterohi[#1]{1==N;3==N}{#2}}%
955 \def\isoxazolehi{\@ifnextchar[{\@isoxazolehi[@}{\@isoxazolehi[bd]}}%
956 \def\@isoxazolehi[#1]#2{%
957 \iforigpt \typeout{command `isoxazolehi' %
958 is based on `fiveheterohi'.}\fi%
959 \fiveheterohi[#1]{1==O;2==N}{#2}}%
960 \def\oxazolehi{\@ifnextchar[{\@oxazolehi[@}{\@oxazolehi[bd]}}%
961 \def\@oxazolehi[#1]#2{%
962 \iforigpt \typeout{command `oxazolehi' %
963 is based on `fiveheterohi'.}\fi%
964 \fiveheterohi[#1]{1==O;3==N}{#2}}%
\furanhi
\thiophenehi
965 \def\furanhi{\@ifnextchar[{\@furanhi[@}{\@furanhi[bd]}}
966 \def\@furanhi[#1]#2{%
967 \iforigpt \typeout{command `furanhi' %
968 is based on `fiveheterohi'.}\fi%
969 \fiveheterohi[#1]{1==O}{#2}}
970 \def\thiophenehi{\@ifnextchar[{\@thiophenehi[@}{\@thiophenehi[bd]}}
971 \def\@thiophenehi[#1]#2{%
972 \iforigpt \typeout{command `thiophenehi' %
973 is based on `fiveheterohi'.}\fi%
974 \fiveheterohi[#1]{1==S}{#2}}

8 Six-to-six fused heterocyles

8.1 Horizontal type

The standard skeleton of a six-to-six fused heterocycle is selected to have the following locant numbers.

 ****************************
 * decahetero derivatives   *
 *  (horizontal type)       *
 ****************************
 The following numbering is adopted in this macro.
           2   3
      *1          4           (*1 origin)
      (10)8a   4a(9)
       8          5
           7   6
   ________
  |cf.                          |
  |        8 (10)1              |
  |        *  8a *              |
  |   7  *   * *   *  2         |
  |     |     |     |           |
  |     |     |     |           |
  |   6  *   * *   *  3         |
  |        *  4a *              |
  |        5 (9) 4              |
  |        ^|
  |        |                    |
  |        the original point   |
  |________|

The macro \decaheteroh has two arguments ATOMLIST and SUBSLIST as well as an optional argument BONDLIST. Two optional arguments SKBONDLIST and OMIT are added to treat stereochemical information or other bond situations.

   \decaheteroh(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[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 ‘k’ and a uppercase character ‘A’ or ‘B’.

The BONDLIST argument contains one character selected from a to k, each of which indicates the presence of an inner (endcyclic) double bond on the corresponding position. The option ‘A’ and ‘B’ represent aromatic circles. The option ‘n+’ (n = 1 to 10) represents a plus charge on a hetero atom at the n-position.

BONDLIST:  list of bonds
none or r  :  decahetero (right-handed)
l          :  no action
[]         :  fully saturated form
a    :  1,2-double bond      b    :  2,3-double bond
c    :  4,3-double bond      d    :  4,4a-double bond
e    :  4a,5-double bond     f    :  5,6-double bond
g    :  6,7-double bond      h    :  7,8-double bond
i    :  8,8a-double bond     j    :  1,8a-double bond
k    :  4a,8a-double bond
K    :  4a,8a-double bond in the other ring
A    :  aromatic circle      B    :  aromatic circle
{n+}       :  plus at the n-nitrogen atom (n = 1 to 10)

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 10 atoms)
for n = 1 to 8
 n         : Hetero atom, e.g. N, O, etc. at n-position
             e.g. 1==N for N at 1-position
 na        : Hetero atom at 4a or 8b (n=4 or 8)
             e.g. 4a==N (or 9==N) for N at 4a-position
                  8a==N (or {{10}}==N) for N at 8a-position

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 8
nD         :  exocyclic double bond at n-atom
n or nS    :  exocyclic single bond at n-atom
nA         :  alpha single bond at n-atom
nB         :  beta single bond at n-atom

nSA        :  alpha single bond at n-atom (boldface)
nSB        :  beta single bond at n-atom (dotted line)
nSa        :  alpha (not specified) single bond at n-atom
nSb        :  beta (not specified) single bond at n-atom
nSd        :  alpha single bond at n-atom (dotted line)
                with an alternative direction to nSA
nSu        :  beta single bond at n-atom (boldface)
                with an alternative direction to nSB
nFA        :  alpha single bond at n-atom (dotted line)
                for ring fusion
nFB        :  beta single bond at n-atom (boldface)
                for ring fusion
nGA        :  alpha single bond at n-atom (dotted line)
                for the other ring fusion
nGB        :  beta single bond at n-atom (boldface)
                for the other ring fusion
for 9 (4a position) and 10 (8a position)
nD         :  exocyclic double bond at n-atom
n or nS    :  exocyclic single bond at n-atom
nA         :  alpha single bond at n-atom
nB         :  beta single bond at n-atom

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

OMIT:  one or more bonds omitted (a to k; see BONDLIST)

Several examples are shown as follows.

e.g.
\decaheteroh{1==N}{1==Cl;2==F}
\decaheteroh[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
\decaheteroh[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl}

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

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 several times.

\decaheteroh
\@deca@heteroh
\@deca@@heteroh
\@decaheteroh

975 \def\decaheteroh{\@ifnextchar({\@deca@heteroh(@}{\@deca@heteroh(@)}}
976 \def\@deca@heteroh(#1){\@ifnextchar[{\@deca@@heteroh(#1)[@}%
977 {\@deca@@heteroh(#1)[@]}}
978 \def\@deca@@heteroh(#1)[#2]#3#4{\@ifnextchar[%
979 {\@decaheteroh(#1)[#2]{#3}{#4}[@}%
980 {\@decaheteroh(#1)[#2]{#3}{#4}[@]}}
981 \def\@decaheteroh(#1)[#2]#3#4[#5]{%
982 % %%%%%%%%%%%%%%%%%%%%%%%%%%
983 % % treatment of atom list %
984 % %%%%%%%%%%%%%%%%%%%%%%%%%%
985 \iniflag\iniatom%
986 \test@vertix@sixv{#3}{a}{b}{c}{d}{e}{f}%
987 \test@vertix@decav{#3}{g}{h}{i}{j}{@}{@}%
988 % %%%%%%%%%%%%%%%%%%%%%%%
989 % % adjustment for (yl) %
990 % %%%%%%%%%%%%%%%%%%%%%%%
991 \@reset@ylsw%
992 \ylhetpositionh{#4}{0}{0}{5}{0}% %substituents on 1 to 4
993 \if@ylsw \ifx\@@ylii\empty
994 \def\@@ylii{0}\def\@@yli{0}\fi
995 \else
996 {\let\ddd=\eee\let\eee=\fff\let\fff=\ggg
997 \ylhetpositionh{#4}{-1}{3}{7}{0}% %substituents on 5 to 7

998 }%

999 \fi
1000 \if@ylsw \ifx\@@ylii\empty
1001 \def\@@ylii{0}\def\@@yli{342}\fi
1002 \else
1003 {\let\aaa=\hhh
1004 \ylhetpositionh{#4}{-7}{0}{2}{0}% %substituent on 8

1005 }% 1006 \fi

1007 \if@ylsw \ifx\@@ylii\empty
1008 \def\@@ylii{0}\def\@@yli{342}\fi
1009 \else

1010 {%

1011 \clipdetection%
1012 \@clipfusefalse \if@iclip \@clipfusetrue \fi%
1013 \ylatombondposition{#4}{-8}{4}%   %9 for 4a position

1014 }% 1015 \fi

1016 \if@ylsw \ifx\@@ylii\empty
1017 \def\@@ylii{-303}\def\@@yli{171}\fi
1018 \else

1019 {%

1020 \clipdetection%

1021 \@clipfusefalse \if@jclip \@clipfusetrue \fi%
1022 \ylatombondposition{#4}{-9}{10}% %10 for 8a position

1023 }% 1024 \fi

1025 \if@ylsw \ifx\@@ylii\empty
1026 \def\@@ylii{-103}\def\@@yli{171}\fi

1027 \fi

1028 \if@ylsw
1029 \yl@shiftii=\@ylii
1030 \yl@shifti=\@yli
1031 \advance\yl@shiftii\@@ylii
1032 \advance\yl@shifti\@@yli
1033 \advance\yl@shiftii\yl@xdiff
1034 \advance\yl@shifti\yl@ydiff
1035 \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
1036 \reset@yl@xydiff%1999/1/6 by S. Fujita
1037 \else
1038 \begin{picture}(1200,1200)(-400,-800)
1039 \iforigpt \put(-\shiftii,-\shiftiii){\circle*{50}}%
1040  \put(-\noshift,-\noshift){\circle{50}}%
1041 \typeout{command `decaheteroh' origin: %
1042  (\the\noshift,\the\noshift) ---> (\the\shiftii,\the\shiftiii)}\fi%

1043 \fi

1044 % %%%%%%%%%%%%%%%%%%
1045 % % outer skeleton %
1046 % %%%%%%%%%%%%%%%%%%
1047 \begingroup
1048 \resetbdsw%
1049 \@bond@@omit{#5}%
1050 {\let\fff=\jjj \let\eee=\iii%
1051 \set@skel@bondh{#1}{a}{a}% bond between 1 and 2 \@aaa -> \hskbonda etc
1052 \set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc
1053 \set@skel@bondh{#1}{c}{c}% bond between 3 and 4 \@ccc -> \hskbondc etc
1054 \set@skel@bondh{#1}{d}{d}% bond between 4 and 5 \@ddd -> \skbondd etc
1055 \set@skel@bondh{#1}{k}{e}% bond between 7 and 8 \@kkk -> \skbonde etc
1056 \set@skel@bondh{#1}{j}{f}% bond between 7 and 8 \@jjj -> \skbondf etc

1057 }%

1058 {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\ggg%
1059 \let\ccc=\iii\let\bbb=\jjj%
1060 \put(0,-342){\set@skel@bondh{#1}{i}{a}}%
1061 % bond between 8a and 8 \@iii -> \hskbonda etc
1062 \put(0,-342){\set@skel@bondh{#1}{e}{c}}%
1063 % bond between 4a and 5 \@eee -> \hskbondc etc
1064 \put(0,-342){\set@skel@bondh{#1}{f}{d}}%
1065 % bond between 5 and 6 \@fff -> \hskbondd etc
1066 \put(0,-342){\set@skel@bondh{#1}{g}{e}}%
1067 % bond between 6 and 7 \@ggg -> \hskbonde etc
1068 \put(0,-342){\set@skel@bondh{#1}{h}{f}}%
1069 % bond between 7 and 8 \@hhh -> \hskbondf etc

1070 }%

1071 \endgroup
1072 % %%%%%%%%%%%%%%%%%%%%%
1073 % % inner double bond %
1074 % %%%%%%%%%%%%%%%%%%%%%
1075 \@tfor\member:=#2\do{%
1076 \if\member r\relax%
1077 {\let\fff=\jjj \let\eee=\iii%
1078 \put(0,0){\hbonda}% bond between 1 and 2%
1079 \put(0,0){\hbondc}% bond between 3 and 4%

1080 }%

1081 {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\ggg%
1082 \let\ccc=\iii\let\bbb=\jjj%
1083 \put(0,-342){\hbondb}% bond between 8a and 4a
1084 \put(0,-342){\hbondf}% bond between 8 and 7
1085 \put(0,-342){\hbondd}% bond between 5 and 6

1086 }%

1087 \else \if\member l\relax%
1088 \else \if\member a\relax%
1089 \put(0,0){\hbonda}% bond between 1 and 2
1090 \else \if\member b\relax%
1091 \put(0,0){\hbondb}% bond between 2 and 3
1092 \else \if\member c\relax%
1093 \put(0,0){\hbondc}% bond between 3 and 4
1094 % \put(342,0){\hbondc}% bond between 3 and 4
1095 \else \if\member d\relax%
1096 {\let\eee=\iii%
1097 \put(0,0){\hbondd}% bond between 4 and 4a

1098 }%

1099 \else \if\member e\relax%
1100 {\let\ccc=\iii \let\ddd=\eee%
1101 \put(0,-342){\hbondc}% bond between 5 and 4a

1102 }%

1103 \else \if\member f\relax%
1104 {\let\ddd=\eee \let\eee=\fff%
1105 \put(0,-342){\hbondd}% bond between 5 and 6

1106 }%

1107 \else \if\member g\relax%
1108 {\let\eee=\fff \let\fff=\ggg%
1109 \put(0,-342){\hbonde}% bond between 6 and 7

1110 }%

1111 \else \if\member h\relax%
1112 {\let\aaa=\hhh \let\fff=\ggg%
1113 \put(0,-342){\hbondf}% bond between 8 and 7

1114 }%

1115 \else \if\member i\relax%
1116 {\let\aaa=\hhh \let\bbb=\jjj%
1117 \put(0,-342){\hbonda}% bond between 8 and 8a

1118 }%

1119 \else \if\member j\relax%
1120 {\let\fff=\jjj%
1121 \put(0,0){\hbondf}% bond between 1 and 8a

1122 }%

1123 \else \if\member k\relax%
1124 {\let\ccc=\iii\let\bbb=\jjj%
1125 \put(0,-342){\hbondb}% bond between 8a and 4a

1126 }%

1127 \else \if\member K\relax%
1128 {\let\eee=\iii\let\fff=\jjj%
1129 \put(0,0){\hbonde}% bond between 8a and 4a in the other ring

1130 }%

1131 \else \if\member A%left aromatic circle
1132 \put(203,0){\circle{240}}%                %circle
1133 \else \if\member B%left aromatic circle
1134 \put(203,-342){\circle{240}}%             %circle
1135 \else
1136 \expandafter\twoCH@@R\member//%
1137 \def\aax{8a} \def\aay{4a} \def\aaz{10}%
1138  \if\@@tmpa 4\relax%
1139  \putratom{272}{-18}{\@@tmpb}%       % right type
1140  \else\if\@@tmpa 1\relax%
1141  \putratom{68}{-18}{\@@tmpb}%        % right type
1142  \else\if\@@tmpa 3\relax%
1143  \putratom{233}{60}{\@@tmpb}%        % right type
1144  \else\if\@@tmpa 2\relax%
1145  \putratom{120}{60}{\@@tmpb}%        % right type
1146  \else\ifx\@@tmpa\aaz\relax%
1147  \putratom{120}{-110}{\@@tmpb}%      % right type
1148  \else\ifx\@@tmpa\aax\relax%
1149  \putratom{120}{-110}{\@@tmpb}%      % right type
1150  \else\ifx\@@tmpa\aay\relax
1151  \putratom{233}{-110}{\@@tmpb}%      % right type
1152  \else\if\@@tmpa 9\relax%
1153  \putratom{233}{-110}{\@@tmpb}%      % right type
1154  \else\if\@@tmpa 5\relax%
1155  \putratom{272}{-360}{\@@tmpb}%      % right type
1156  \else\if\@@tmpa 8\relax%
1157  \putratom{68}{-360}{\@@tmpb}%       % right type
1158  \else\if\@@tmpa 6\relax%
1159  \putratom{233}{-452}{\@@tmpb}%      % right type
1160  \else\if\@@tmpa 7\relax%
1161  \putratom{120}{-452}{\@@tmpb}%      % right type
1162  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
1163 % ***********************
1164 % * setting fused rings *
1165 % ***********************
1166 \expandafter\twoCH@R\member//%
1167 \set@fusion@decah
1168 \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%

1169 \fi\fi\fi\fi\fi\fi}%
1170 % %%%%%%%%%%%%%%%%%%%%%%%%
1171 % % setting hetero atoms %
1172 % %%%%%%%%%%%%%%%%%%%%%%%%
1173 \iniflag
1174 \put(0,0){\set@hetatom@sixh{#3}{0}{0}{5}{0}%
1175 \if@aclip \global\@acliptrue\fi
1176 \if@bclip \global\@bcliptrue\fi
1177 \if@cclip \global\@ccliptrue\fi
1178 \if@clip \global\@cliptrue\fi}% %substituents on 1 to 4
1179 \put(0,-342){\iniflag%2000/11/11 by Shinsaku Fujita
1180 \set@hetatom@sixh{#3}{-1}{3}{7}{0}%
1181 \@gclipfalse \if@fclip \global\@gcliptrue \fi%
1182 \@fclipfalse \if@eclip \global\@fcliptrue \fi%
1183 \@eclipfalse \if@clip \global\@ecliptrue \fi}%substituents on 5 to 7
1184 \put(0,-342){\iniflag%2000/11/11 by Shinsaku Fujita
1185 \set@hetatom@sixh{#3}{-7}{0}{2}{0}%
1186 \@hclipfalse \if@aclip \global\@hcliptrue \fi}%%substituent on 8
1187 \put(0,0){\set@vrtx@fuseh{#3}%
1188 \if@iclip \global\@icliptrue \fi
1189 \if@jclip \global\@jcliptrue \fi}% fused positions
1190 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1191 % % setting substituents and exocyclic bonds %
1192 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1193 \put(0,0){\setsixringh{#4}{0}{0}{5}{0}}% %substituents on 1 to 4
1194 {\@clipfalse \if@eclip \@cliptrue \fi%   %substituents on 5 to 7
1195 \@eclipfalse \if@fclip \@ecliptrue \fi%
1196 \@fclipfalse \if@gclip \@fcliptrue \fi%
1197 \put(0,-342){\setsixringh{#4}{-1}{3}{7}{0}}%

1198 }%

1199 {\@aclipfalse \if@hclip \@acliptrue \fi%   %substituent on 8
1200 \put(0,-342){\setsixringh{#4}{-7}{0}{2}{0}}%

1201 }%

1202 {\@clipfusefalse \if@iclip \@clipfusetrue \fi%
1203 \put(303,-171){\setatombond{#4}{-8}{4}}   %9 for 4a position

1204 }%

1205 {\@clipfusefalse \if@jclip \@clipfusetrue \fi%
1206 \put(103,-171){\setatombond{#4}{-9}{10}} %10 for 8a position

1207 }%

1208 \end{picture}\iniatom\iniflag}%      %end of \decaheteroh macro

The command \ylhetpositionh is used in the \decaheteroh command, giving the sift values for drawing a structure as a substituent.

\ylhetpositionh
1209 \def\ylhetpositionh#1#2#3#4#5{%
1210 \@@ylswfalse%%%\@reset@ylsw
1211 \@forsemicol\member:=#1\do{%
1212 \if@@ylsw\else

1213 \ifx\member\empty\else
1214 \expandafter\@m@mb@r\member;\relax
1215 \expandafter\threech@r\@membera{}{}\relax
1216 \ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi
1217 \if@@ylsw
1218 \ifnum#5<0\relax%
1219 \@tmpaa=-\@tmpa\relax \advance\@tmpaa by#2\relax%
1220 \else\@tmpaa=\@tmpa\relax \advance\@tmpaa by#2\relax\fi
1221 \ifnum\@tmpaa>#3\relax%
1222 \ifnum\@tmpaa<#4\relax%
1223 \ifcase\@tmpaa%0 omit

1224 \or

1225 \ifx\aaa\empty
1226  \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%\@ylatrue% subst. on 1
1227 \else
1228  \gdef\@ylii{30}\gdef\@yli{0}\global\@ylswtrue%\@ylatrue% subst. on 1

1229 \fi 1230 \or

1231 \ifx\bbb\empty
1232  \gdef\@ylii{-103}\gdef\@yli{-171}\global\@ylswtrue%\@ylbtrue% subst. on 2
1233 \else
1234  \gdef\@ylii{-73}\gdef\@yli{-223}\global\@ylswtrue%\@ylbtrue% subst. on 2

1235 \fi 1236 \or

1237 \ifx\ccc\empty
1238  \gdef\@ylii{-303}\gdef\@yli{-171}\global\@ylswtrue%\@ylctrue% subst. on 3
1239 \else
1240  \gdef\@ylii{-333}\gdef\@yli{-223}\global\@ylswtrue%\@ylctrue% subst. on 3

1241 \fi 1242 \or

1243 \ifx\ddd\empty
1244  \gdef\@ylii{-406}\gdef\@yli{0}\global\@ylswtrue%\@yldtrue% subst. on 4
1245 \else
1246  \gdef\@ylii{-436}\gdef\@yli{0}\global\@ylswtrue%\@yldtrue% subst. on 4

1247 \fi 1248 \or

1249  \ifx\eee\empty
1250  \gdef\@ylii{-303}\gdef\@yli{171}\global\@ylswtrue%\@yletrue% subst. on 5
1251  \else
1252  \gdef\@ylii{-333}\gdef\@yli{223}\global\@ylswtrue%\@yletrue% subst. on 5

1253 \fi 1254 \or

1255 \ifx\fff\empty
1256  \gdef\@ylii{-103}\gdef\@yli{171}\global\@ylswtrue%\@ylftrue% subst. on 6
1257  \else
1258  \gdef\@ylii{-73}\gdef\@yli{223}\global\@ylswtrue%\@ylftrue% subst. on 6

1259 \fi

1260 \fi%end of ifcase
1261 \fi\fi\fi\fi\fi}}%

8.2 Inverse horizontal type

The standard skeleton of a six-to-six fused heterocycle is selected to have the following locant numbers.

 ************************************
 * decahetero derivatives           *
 *  (horizonatl type, inverse type) *
 ************************************
 The following numbering is adopted in this macro.
           3   2
      *4          1           (*4 origin)
       (8)4a   8a(10)
       5          8
           6   7
   ________
  |cf.                          |
  |        5 (9) 4              |
  |        *  4a *              |
  |   6  *   * *   *  3         |
  |     |     |     |           |
  |     |     |     |           |
  |   7  *   * *   *  2         |
  |        *  8a *              |
  |        8 (9) 1              |
  |        ^|
  |        |                    |
  |        the original point   |
  |________|

The macro \decaheterohi has two arguments ATOMLIST and SUBSLIST as well as an optional argument BONDLIST. Two optional arguments SKBONDLIST and OMIT are added to treat stereochemical information or other bond situations.

   \decaheterohi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[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 ‘k’ and a uppercase character ‘A’ or ‘B’.

The BONDLIST argument contains one character selected from a to k, each of which indicates the presence of an inner (endcyclic) double bond on the corresponding position. The options ‘A’ and ‘B’ represent aromatic circles in two rings.

The option ‘n+’ (n = 1 to 10) represents a plus charge on a hetero atom at the n-position.

BONDLIST:  list of bonds
none or r  :  decahetero (right-handed)
l          :  no action
[]         :  fully saturated form
a    :  1,2-double bond      b    :  2,3-double bond
c    :  4,3-double bond      d    :  4,4a-double bond
e    :  4a,5-double bond     f    :  5,6-double bond
g    :  6,7-double bond      h    :  7,8-double bond
i    :  8,8a-double bond     j    :  1,8a-double bond
k    :  4a,8a-double bond
K    :  4a,8a-double bond in the other ring
A    :  aromatic circle      B    :  aromatic circle
{n+}       :  plus at the n-nitrogen atom (n = 1 to 10)

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 10 atoms)
for n = 1 to 8
 n         : Hetero atom, e.g. N, O, etc. at n-position
             e.g. 1==N for N at 1-position
 na        : Hetero atom at 4a or 8b (n=4 or 8)
             e.g. 4a==N (or 9==N) for N at 4a-position
                  8a==N (or {{10}}==N) for N at 8a-position

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 8
nD         :  exocyclic double bond at n-atom
n or nS    :  exocyclic single bond at n-atom
nA         :  alpha single bond at n-atom
nB         :  beta single bond at n-atom
nSA        :  alpha single bond at n-atom (boldface)
nSB        :  beta single bond at n-atom (dotted line)

nSa        :  alpha (not specified) single bond at n-atom
nSb        :  beta (not specified) single bond at n-atom
nSd        :  alpha single bond at n-atom (dotted line)
                with an alternative direction to nSA
nSu        :  beta single bond at n-atom (boldface)
                with an alternative direction to nSB
nFA        :  alpha single bond at n-atom (dotted line)
                for ring fusion
nFB        :  beta single bond at n-atom (boldface)
                for ring fusion
nGA        :  alpha single bond at n-atom (dotted line)
                for the other ring fusion
nGB        :  beta single bond at n-atom (boldface)
                for the other ring fusion
for 9 (4a position) and 10 (8a position)
nD         :  exocyclic double bond at n-atom
n or nS    :  exocyclic single bond at n-atom
nA         :  alpha single bond at n-atom
nB         :  beta single bond at n-atom

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

OMIT:  one or more bonds omitted (a to k; see BONDLIST)

Several examples are shown as follows.

e.g.
\decaheterohi{1==N}{1==Cl;2==F}
\decaheterohi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
\decaheterohi[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl}

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

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 several times.

\decaheterohi
\@deca@heterohi
\@deca@@heterohi
\@decaheterohi

1262 \def\decaheterohi{\@ifnextchar({\@deca@heterohi(@}{\@deca@heterohi(@)}}
1263 \def\@deca@heterohi(#1){\@ifnextchar[{\@deca@@heterohi(#1)[@}%
1264 {\@deca@@heterohi(#1)[@]}}
1265 \def\@deca@@heterohi(#1)[#2]#3#4{\@ifnextchar[%
1266 {\@decaheterohi(#1)[#2]{#3}{#4}[@}%
1267 {\@decaheterohi(#1)[#2]{#3}{#4}[@]}}
1268 \def\@decaheterohi(#1)[#2]#3#4[#5]{%
1269 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1270 % % treatment of atom list %
1271 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1272 \iniflag\iniatom%
1273 \test@vertix@decavi{#3}%
1274 % %%%%%%%%%%%%%%%%%%%%%%%
1275 % % adjustment for (yl) %
1276 % %%%%%%%%%%%%%%%%%%%%%%%
1277 \@reset@ylsw%
1278 \ylhetpositionh{#4}{5}{0}{5}{-1}% %substituents on 1 to 4
1279 \if@ylsw \ifx\@@ylii\empty
1280 \def\@@ylii{0}\def\@@yli{0}\fi
1281 \else
1282 {\let\ddd=\eee\let\eee=\fff\let\fff=\ggg
1283 \ylhetpositionh{#4}{12}{3}{7}{-1}% %substituents on 6 to 8

1284 }% 1285 \fi

1286 \if@ylsw \ifx\@@ylii\empty
1287 \def\@@ylii{0}\def\@@yli{342}\fi
1288 \else
1289 {\let\aaa=\hhh
1290 \ylhetpositionh{#4}{-4}{0}{2}{0}% %substituent on 5

1291 }% 1292 \fi

1293 \if@ylsw \ifx\@@ylii\empty
1294 \def\@@ylii{0}\def\@@yli{342}\fi
1295 \else

1296 {%

1297 \clipdetection%
1298 \@clipfusefalse \if@iclip \@clipfusetrue \fi%
1299 \ylatombondposition{#4}{-9}{4}%   %10 for 8a position

1300 }% 1301 \fi

1302 \if@ylsw \ifx\@@ylii\empty
1303 \def\@@ylii{-303}\def\@@yli{171}\fi
1304 \else

1305 {%

1306 \clipdetection%
1307 \@clipfusefalse \if@jclip \@clipfusetrue \fi%
1308 \ylatombondposition{#4}{-8}{10}% %9 for 4a position

1309 }% 1310 \fi

1311 \if@ylsw \ifx\@@ylii\empty
1312 \def\@@ylii{-103}\def\@@yli{171}\fi

1313 \fi

1314 \if@ylsw
1315 \yl@shiftii=\@ylii
1316 \yl@shifti=\@yli
1317 \advance\yl@shiftii\@@ylii
1318 \advance\yl@shifti\@@yli
1319 \advance\yl@shiftii\yl@xdiff
1320 \advance\yl@shifti\yl@ydiff
1321 \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
1322 \reset@yl@xydiff%1999/1/6 by S. Fujita
1323 \else
1324 \begin{picture}(1200,1200)(-400,-800)%
1325 \iforigpt \put(-\shiftii,-\shiftiii){\circle*{50}}%
1326  \put(-\noshift,-\noshift){\circle{50}}%
1327 \typeout{command `decaheterohi' origin: %
1328  (\the\noshift,\the\noshift) ---> (\the\shiftii,\the\shiftiii)}\fi%

1329 \fi

1330 % %%%%%%%%%%%%%%%%%%
1331 % % outer skeleton %
1332 % %%%%%%%%%%%%%%%%%%
1333 \begingroup
1334 \resetbdsw%
1335 \@bond@@omit{#5}%
1336 {\let\fff=\jjj \let\eee=\iii%
1337 \set@skel@bondh{#1}{a}{c}% bond between 1 and 2 \@aaa -> \hskbondc etc
1338 \set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc
1339 \set@skel@bondh{#1}{c}{a}% bond between 3 and 4 \@ccc -> \hskbonda etc
1340 \set@skel@bondh{#1}{d}{f}% bond between 4 and 4a \@ddd -> \hskbondf etc
1341 \set@skel@bondh{#1}{k}{e}% bond between 4a and 8a \@kkk -> \hskbonde etc
1342 \set@skel@bondh{#1}{j}{d}% bond between 8a and 1 \@jjj -> \hskbondd etc

1343 }%

1344 {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\ggg%
1345 \let\ccc=\iii\let\bbb=\jjj%
1346 \put(0,-342){\set@skel@bondh{#1}{e}{a}}%
1347 % bond between 4a and 5 \@eee -> \hskbonda etc
1348 \put(0,-342){\set@skel@bondh{#1}{i}{c}}%
1349 % bond between 8a and 8 \@iii -> \hskbondc etc
1350 \put(0,-342){\set@skel@bondh{#1}{h}{d}}%
1351 % bond between 7 and 8 \@hhh -> \hskbondd etc
1352 \put(0,-342){\set@skel@bondh{#1}{g}{e}}%
1353 % bond between 6 and 7 \@ggg -> \hskbonde etc
1354 \put(0,-342){\set@skel@bondh{#1}{f}{f}}%
1355 % bond between 5 and 6 \@fff -> \hskbondf etc

1356 }%

1357 \endgroup
1358 % %%%%%%%%%%%%%%%%%%%%%

1359 % % inner double bond %
1360 % %%%%%%%%%%%%%%%%%%%%%
1361 \@tfor\member:=#2\do{%
1362 \if\member r\relax%
1363 {\let\fff=\jjj \let\eee=\iii%
1364 \put(0,0){\hbonda}% bond between 1 and 2
1365 \put(0,0){\hbondc}% bond between 3 and 4

1366 }%

1367 {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\ggg%
1368 \let\ccc=\iii\let\bbb=\jjj%
1369 \put(0,-342){\hbondb}% bond between 8a and 4a
1370 \put(0,-342){\hbondf}% bond between 8 and 7
1371 \put(0,-342){\hbondd}% bond between 5 and 6

1372 }%

1373 \else \if\member l\relax%
1374 \else \if\member a\relax%
1375 \put(0,0){\hbondc}% bond between 3 and 4
1376 \else \if\member b\relax
1377 \put(0,0){\hbondb}% bond between 2 and 3
1378 \else \if\member c\relax
1379 \put(0,0){\hbonda}% bond between 1 and 2
1380 \else \if\member d\relax%
1381 {\let\fff=\jjj%
1382 \put(0,0){\hbondf}% bond between 1 and 8a

1383 }%

1384 \else \if\member e\relax%
1385 {\let\aaa=\hhh \let\bbb=\jjj%
1386 \put(0,-342){\hbonda}% bond between 8 and 8a

1387 }%

1388 \else \if\member f\relax%
1389 {\let\aaa=\hhh \let\fff=\ggg%
1390 \put(0,-342){\hbondf}% bond between 8 and 7

1391 }%

1392 \else \if\member g\relax%
1393 {\let\eee=\fff \let\fff=\ggg%
1394 \put(0,-342){\hbonde}% bond between 6 and 7

1395 }%

1396 \else \if\member h\relax%
1397 {\let\ddd=\eee \let\eee=\fff%
1398 \put(0,-342){\hbondd}% bond between 5 and 6

1399 }%

1400 \else \if\member i\relax%
1401 {\let\ccc=\iii \let\ddd=\eee%
1402 \put(0,-342){\hbondc}% bond between 5 and 4a

1403 }%

1404 \else \if\member j\relax%
1405 {\let\eee=\iii%
1406 \put(0,0){\hbondd}% bond between 4 and 4a

1407 }%

1408 \else \if\member k\relax%

1409 {\let\ccc=\iii\let\bbb=\jjj%
1410 \put(0,-342){\hbondb}% bond between 8a and 4a

1411 }%

1412 \else \if\member K\relax%
1413 {\let\eee=\iii\let\fff=\jjj%
1414 \put(0,0){\hbonde}% bond between 8a and 4a

1415 }%

1416 \else \if\member A%left aromatic circle
1417 \put(203,0){\circle{240}}%                %circle
1418 \else \if\member B%left aromatic circle
1419 \put(203,-342){\circle{240}}%             %circle
1420 \else \expandafter\twoCH@@R\member//%
1421 \def\aax{8a}\def\aay{4a}\def\aaz{10}%
1422  \if\@@tmpa 4\relax%
1423  \putratom{68}{-18}{\@@tmpb}%        % right type
1424  \else\if\@@tmpa 1\relax%
1425  \putratom{272}{-18}{\@@tmpb}%       % right type
1426  \else\if\@@tmpa 3\relax%
1427  \putratom{120}{60}{\@@tmpb}%        % right type
1428  \else\if\@@tmpa 2\relax%
1429  \putratom{233}{60}{\@@tmpb}%        % right type
1430  \else\ifx\@@tmpa\aaz\relax%
1431  \putratom{233}{-110}{\@@tmpb}%      % right type
1432  \else\ifx\@@tmpa\aax\relax%
1433  \putratom{233}{-110}{\@@tmpb}%      % right type
1434  \else\ifx\@@tmpa\aay\relax%
1435  \putratom{120}{-110}{\@@tmpb}%      % right type
1436  \else\if\@@tmpa 9\relax%
1437  \putratom{120}{-110}{\@@tmpb}%      % right type
1438  \else\if\@@tmpa 5\relax%
1439  \putratom{68}{-360}{\@@tmpb}%       % right type
1440  \else\if\@@tmpa 8\relax%
1441  \putratom{272}{-360}{\@@tmpb}%      % right type
1442  \else\if\@@tmpa 6\relax%
1443  \putratom{120}{-452}{\@@tmpb}%      % right type
1444  \else\if\@@tmpa 7\relax%
1445  \putratom{233}{-452}{\@@tmpb}%      % right type
1446  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
1447 % ***********************
1448 % * setting fused rings *
1449 % ***********************
1450 \expandafter\twoCH@R\member//%
1451 \set@fusion@decahi
1452 \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
1453 \fi\fi\fi\fi\fi\fi}%
1454 % %%%%%%%%%%%%%%%%%%%%%%%%
1455 % % setting hetero atoms %
1456 % %%%%%%%%%%%%%%%%%%%%%%%%
1457 \iniflag

1458 \@tmpclipfalse
1459 \put(0,0){\set@hetatom@sixh{#3}{5}{0}{5}{-1}%
1460 \if@aclip \global\@acliptrue\fi
1461 \if@bclip \global\@bcliptrue\fi
1462 \if@cclip \global\@ccliptrue\fi
1463 \if@clip \global\@cliptrue\fi
1464 }% %substituents on 1 to 4
1465 \put(0,-342){\iniflag%2000/11/11 by Shinsaku Fujita
1466 \set@hetatom@sixh{#3}{12}{3}{7}{-1}%
1467 \@gclipfalse \if@fclip \global\@gcliptrue \fi%
1468 \@fclipfalse \if@eclip \global\@fcliptrue \fi%
1469 \@eclipfalse \if@clip \global\@ecliptrue \fi%
1470 }%substituents on 6 to 8
1471 \put(0,-342){\set@hetatom@sixh{#3}{-4}{0}{2}{0}%
1472 \@aclipfalse \if@aclip \global\@hcliptrue \fi%
1473 }%%substituent on 5
1474 \put(0,0){\set@vrtx@decafusehi{#3}%
1475 \@tmpclipfalse
1476 \if@iclip \global\@tmpcliptrue \fi
1477 \if@jclip \global\@icliptrue \fi
1478 \if@tmpclip \global\@jcliptrue \fi
1479 }% fused positions
1480 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1481 % % setting substituents and exocyclic bonds %
1482 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1483 \put(0,0){\setsixringh{#4}{5}{0}{5}{-1}}% %substituents on 1 to 4
1484 {\@clipfalse \if@eclip \@cliptrue \fi%    %substituents on 6 to 8
1485 \@eclipfalse \if@fclip \@ecliptrue \fi%
1486 \@fclipfalse \if@gclip \@fcliptrue \fi%
1487 \put(0,-342){\setsixringh{#4}{12}{3}{7}{-1}}%

1488 }%

1489 {\@aclipfalse \if@hclip \@acliptrue \fi%    %substituent on 5
1490 \put(0,-342){\setsixringh{#4}{-4}{0}{2}{0}}%

1491 }%

1492 {\@clipfusefalse \if@iclip \@clipfusetrue \fi%
1493 \put(303,-171){\setatombond{#4}{-9}{4}}%   %10 for 8a position

1494 }%

1495 {\@clipfusefalse \if@jclip \@clipfusetrue \fi
1496 \put(103,-171){\setatombond{#4}{-8}{10}}% %9 for 4a position

1497 }%

1498 \end{picture}\iniatom\iniflag}%      %end of \decaheterohi macro

The macro \set@vrtx@decafusehi is an inner command contained in the definition of \decaheterohi, where the macro is used to set a hetero atom or on a vertex of a bridgehead location.

\set@vrtx@decafusehi
1499 \def\set@vrtx@decafusehi#1{%
1500 \@forsemicol\member:=#1\do{%

1501 \ifx\member\empty\else
1502 \expandafter\@m@mb@r\member;\relax%
1503 \expandafter\twoch@r\@membera{}%
1504 \ifcase\@tmpa\or\or\or
1505 \or%%%%4
1506 \if\@tmpb a%
1507  \global\@icliptrue%
1508  \putlatom{135}{-211}{\@memberb}%             % left type
1509 \else\if\@tmpb h%
1510  \XyMTeXWarning{Forbidden fused position `4a' or `9'}%
1511 \else\if\@tmpb s%
1512  \XyMTeXWarning{Forbidden fused position `4a' or `9'}%
1513 \else\ifx\@tmpb\empty\relax
1514 \else
1515  \XyMTeXWarning{Forbidden fused position `4a' or `9'}%
1516 \fi\fi\fi\fi
1517 \or\or\or
1518 \or%8
1519 \if\@tmpb a%
1520  \global\@jcliptrue%
1521  \putratom{273}{-211}{\@memberb}%             % right type
1522 \else\if\@tmpb h%
1523  \XyMTeXWarning{Forbidden fused position `8a' or `10'}%
1524 \else\if\@tmpb s%
1525  \XyMTeXWarning{Forbidden fused position `8a' or `10'}%
1526 \else\ifx\@tmpb\empty\relax
1527 \else
1528  \XyMTeXWarning{Forbidden fused position `8a' or `10'}%
1529 \fi\fi\fi\fi
1530 \or%9 (= 4a)
1531 \ifx\@tmpb\empty%
1532  \global\@icliptrue%
1533  \putlatom{135}{-211}{\@memberb}%             % left type
1534 \else
1535  \XyMTeXWarning{Forbidden fused position `4a' or `9'}%

1536 \fi

1537 \or%10 (= 8a)
1538 \ifx\@tmpb\empty%
1539  \global\@jcliptrue%
1540  \putratom{273}{-211}{\@memberb}%             % right type
1541 \else
1542  \XyMTeXWarning{Forbidden fused position `8a' or `10'}%

1543 \fi

1544 \fi\fi}%
1545 }% end of the macro \set@vrtx@decafusehi

The macro \set@fusion@decahi is an inner command contained in the definition of \decaheterohi, where the macro is used for setting an additive or a fused ring at each bond (designated by \@@tmpa). The fused ring is typeset by the inner

  command \set@fusionadd@sixhi.

\set@fusion@decahi
1546 \def\set@fusion@decahi{%
1547 \let\@@tmpa=\@tmpa
1548 \let\@@tmpb=\@tmpb
1549 \if\@tmpa a%
1550  \let\@@tmpa=\@tmpa
1551  \put(0,0){\set@fusionadd@sixhi}%
1552 \else\if\@tmpa A%
1553  \let\@@tmpa=\@tmpa
1554  \put(0,0){\set@fusionadd@sixhi}%
1555 \else\if\@tmpa b%
1556  \let\@@tmpa=\@tmpa
1557  \put(0,0){\set@fusionadd@sixhi}%
1558 \else\if\@tmpa B%
1559  \let\@@tmpa=\@tmpa
1560  \put(0,0){\set@fusionadd@sixhi}%
1561 \else\if\@tmpa c%
1562  \let\@@tmpa=\@tmpa
1563  \put(0,0){\set@fusionadd@sixhi}%
1564 \else\if\@tmpa C%
1565  \let\@@tmpa=\@tmpa
1566  \put(0,0){\set@fusionadd@sixhi}%
1567 \else\if\@tmpa d%
1568  \let\@@tmpa=\@tmpa
1569  \put(0,0){\set@fusionadd@sixhi}%
1570  \if@smallringsw\else
1571  \XyMTeXWarning{Unfavorable Fusion for bond `d'}%

1572 \fi

1573 \else\if\@tmpa D%
1574  \let\@@tmpa=\@tmpa
1575  \put(0,0){\set@fusionadd@sixhi}%
1576  \if@smallringsw\else
1577  \XyMTeXWarning{Unfavorable Fusion for bond `D'}%

1578 \fi

1579 \else\if\@tmpa e%
1580  \edef\@@tmpa{c}%
1581  \put(0,-342){\set@fusionadd@sixhi}%
1582  \if@smallringsw\else
1583  \XyMTeXWarning{Unfavorable Fusion for bond `e'}%

1584 \fi

1585 \else\if\@tmpa E%
1586  \edef\@@tmpa{C}%
1587  \put(0,-342){\set@fusionadd@sixhi}%
1588  \if@smallringsw\else
1589  \XyMTeXWarning{Unfavorable Fusion for bond `E'}%

1590 \fi

1591 \else\if\@tmpa f%
1592  \edef\@@tmpa{d}%
1593  \put(0,-342){\set@fusionadd@sixhi}%

1594 \else\if\@tmpa F%
1595  \edef\@@tmpa{D}%
1596  \put(0,-342){\set@fusionadd@sixhi}%
1597 \else\if\@tmpa g%
1598  \edef\@@tmpa{e}%
1599  \put(0,-342){\set@fusionadd@sixhi}%
1600 \else\if\@tmpa G%
1601  \edef\@@tmpa{E}%
1602  \put(0,-342){\set@fusionadd@sixhi}%
1603 \else\if\@tmpa h%
1604  \edef\@@tmpa{f}%
1605  \put(0,-342){\set@fusionadd@sixhi}%
1606 \else\if\@tmpa H%
1607  \edef\@@tmpa{F}%
1608  \put(0,-342){\set@fusionadd@sixhi}%
1609 \else\if\@tmpa i%
1610  \edef\@@tmpa{a}%
1611  \put(0,-342){\set@fusionadd@sixhi}%
1612  \if@smallringsw\else
1613  \XyMTeXWarning{Unfavorable Fusion for bond `i'}%

1614 \fi

1615 \else\if\@tmpa I%
1616  \edef\@@tmpa{A}%
1617  \put(0,-342){\set@fusionadd@sixhi}%
1618  \if@smallringsw\else
1619  \XyMTeXWarning{Unfavorable Fusion for bond `I'}%

1620 \fi

1621 \else\if\@tmpa j%
1622  \edef\@@tmpa{f}%
1623  \put(0,0){\set@fusionadd@sixhi}%
1624  \if@smallringsw\else
1625  \XyMTeXWarning{Unfavorable Fusion for bond `j'}%

1626 \fi

1627 \else\if\@tmpa J%
1628  \edef\@@tmpa{F}%
1629  \put(0,0){\set@fusionadd@sixhi}%
1630  \if@smallringsw\else
1631  \XyMTeXWarning{Unfavorable Fusion for bond `J'}%

1632 \fi

1633 \else\if\@tmpa k%
1634  \edef\@@tmpa{e}%
1635  \put(0,0){\set@fusionadd@sixhi}%
1636  \if@smallringsw\else
1637  \XyMTeXWarning{Forbidden Fusion for bond `k'}%

1638 \fi

1639 \else\if\@tmpa K%
1640  \edef\@@tmpa{E}%
1641  \put(0,0){\set@fusionadd@sixhi}%
1642  \if@smallringsw\else
1643  \XyMTeXWarning{Forbidden Fusion for bond `K'}%

1644 \fi

1645 \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
1646 \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
1647 }% end of the macro \set@fusion@decahi

8.3 Short-cut commands for fused heterocycles

The macro \decaheteroh can be used in the form of a fixed ATOMLIST. Hence, the resulting commands for drawing a fused heterocyle with one or more nitrogen atoms have an argument SUBSLIST as well as an optional argument BONDLIST.

****************************************************
* heterocycles having two fused six-membered rings *
*  (horizontal type)                               *
****************************************************
\quinolineh[BONDLIST]{SUBSLIST}
\quinolinehi[BONDLIST]{SUBSLIST}
\isoquinolineh[BONDLIST]{SUBSLIST}
\isoquinolinehi[BONDLIST]{SUBSLIST}
\quinoxalineh[BONDLIST]{SUBSLIST}
\quinazolineh[BONDLIST]{SUBSLIST}
\quinazolinehi[BONDLIST]{SUBSLIST}
\cinnolineh[BONDLIST]{SUBSLIST}
\cinnolinehi[BONDLIST]{SUBSLIST}
\pteridineh[BONDLIST]{SUBSLIST}
\pteridinehi[BONDLIST]{SUBSLIST}

The BONDLIST argument contains one character selected from a to k, each of which indicates the presence of an inner (endcyclic) double bond on the corresponding position. The optiona ‘A’ and ‘B’ typeset aromatic circles. The option ‘n+’ (n = 1 to 10) represents a plus charge on a hetero atom at the n-position.

  BONDLIST:  list of bonds
        none or r  :  decahetero (right-handed)
        l          :  decahetero (left-handed)
        []         :  fully saturated form
        a    :  1,2-double bond      b    :  2,3-double bond
        c    :  4,3-double bond      d    :  4,4a-double bond
        e    :  4a,5-double bond     f    :  5,6-double bond
        g    :  6,7-double bond      h    :  7,8-double bond
        i    :  8,8a-double bond     j    :  1,8a-double bond
        k    :  4a,8a-double bond
        A    :  aromatic circle      B    :  aromatic circle
        {n+}       :  plus at the n-nitrogen atom (n = 1 to 10)

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 8
nD         :  exocyclic double bond at n-atom
n or nS    :  exocyclic single bond at n-atom
nA         :  alpha single bond at n-atom
nB         :  beta single bond at n-atom
nSA        :  alpha single bond at n-atom (boldface)
nSB        :  beta single bond at n-atom (dotted line)
nSa        :  alpha (not specified) single bond at n-atom
nSb        :  beta (not specified) single bond at n-atom
nSd        :  alpha single bond at n-atom (dotted line)
                with an alternative direction to nSA
nSu        :  beta single bond at n-atom (boldface)
                with an alternative direction to nSB
nFA        :  alpha single bond at n-atom (dotted line)
                for ring fusion
nFB        :  beta single bond at n-atom (boldface)
                for ring fusion
nGA        :  alpha single bond at n-atom (dotted line)
                for the other ring fusion
nGB        :  beta single bond at n-atom (boldface)
                for the other ring fusion
for 9 (4a position) and 10 (8a position)
nD         :  exocyclic double bond at n-atom
n or nS    :  exocyclic single bond at n-atom
nA         :  alpha single bond at n-atom
nB         :  beta single bond at n-atom

Several examples are shown as follows.

e.g.
\quinolineh{2==Cl;3==F}

\quinolineh
\quinolinehi
1648 \def\quinolineh{%
1649 \@ifnextchar[{\@quinolineh[@}{\@quinolineh[acfhk]}}%
1650 \def\@quinolineh[#1]#2{%

1651 \iforigpt \typeout{command `quinolineh' %
1652 is based on `decaheteroh'.}\fi%
1653 \decaheteroh[#1]{1==N}{#2}}%
1654 \def\quinolinehi{%
1655 \@ifnextchar[{\@quinolinehi[@}{\@quinolinehi[acfhk]}}%
1656 \def\@quinolinehi[#1]#2{%
1657 \iforigpt \typeout{command `quinolinehi' %
1658 is based on `decaheterohi'.}\fi%
1659 \decaheterohi[#1]{1==N}{#2}}%
\isoquinolineh
\isoquinolinehi
1660 \def\isoquinolineh{%
1661 \@ifnextchar[{\@isoquinolineh[@}{\@isoquinolineh[acfhk]}}%
1662 \def\@isoquinolineh[#1]#2{%
1663 \iforigpt \typeout{command `isoquinolineh' %
1664 is based on `decaheteroh'.}\fi%
1665 \decaheteroh[#1]{2==N}{#2}}%
1666 \def\isoquinolinehi{%
1667 \@ifnextchar[{\@isoquinolinehi[@}{\@isoquinolinehi[acfhk]}}%
1668 \def\@isoquinolinehi[#1]#2{%
1669 \iforigpt \typeout{command `isoquinolinehi' %
1670 is based on `decaheterohi'.}\fi%
1671 \decaheterohi[#1]{2==N}{#2}}%
quinoxalineh
1672 \def\quinoxalineh{%
1673 \@ifnextchar[{\@quinoxalineh[@}{\@quinoxalineh[acfhk]}}%
1674 \def\@quinoxalineh[#1]#2{%
1675 \iforigpt \typeout{command `quinoxalineh' %
1676 is based on `decaheteroh'.}\fi%
1677 \decaheteroh[#1]{1==N;4==N}{#2}}%
\quinazolineh
\quinazolinehi
1678 \def\quinazolineh{%
1679 \@ifnextchar[{\@quinazolineh[@}{\@quinazolineh[acfhk]}}%
1680 \def\@quinazolineh[#1]#2{%
1681 \iforigpt \typeout{command `quinazolineh' %
1682 is based on `decaheteroh'.}\fi%
1683 \decaheteroh[#1]{1==N;3==N}{#2}}%
1684 \def\quinazolinehi{%
1685 \@ifnextchar[{\@quinazolinehi[@}{\@quinazolinehi[acfhk]}}%
1686 \def\@quinazolinehi[#1]#2{%
1687 \iforigpt \typeout{command `quinazolinehi' %
1688 is based on `decaheterohi'.}\fi%
1689 \decaheterohi[#1]{1==N;3==N}{#2}}%
\cinnolineh
\cinnolinehi
1690 \def\cinnolineh{%
1691 \@ifnextchar[{\@cinnolineh[@}{\@cinnolineh[acfhk]}}%

1692 \def\@cinnolineh[#1]#2{%
1693 \iforigpt \typeout{command `cinnolineh' %
1694 is based on `decaheteroh'.}\fi%
1695 \decaheteroh[#1]{1==N;2==N}{#2}}%
1696 \def\cinnolinehi{%
1697 \@ifnextchar[{\@cinnolinehi[@}{\@cinnolinehi[acfhk]}}%
1698 \def\@cinnolinehi[#1]#2{%
1699 \iforigpt \typeout{command `cinnolinehi' %
1700 is based on `decaheterohi'.}\fi%
1701 \decaheterohi[#1]{1==N;2==N}{#2}}%
\pteridineh
\pteridinehi
1702 \def\pteridineh{%
1703 \@ifnextchar[{\@pteridineh[@}{\@pteridineh[acfhk]}}%
1704 \def\@pteridineh[#1]#2{%
1705 \iforigpt \typeout{command `pteridineh' %
1706 is based on `decaheteroh'.}\fi%
1707 \decaheteroh[#1]{1==N;3==N;5==N;8==N}{#2}}%
1708 \def\pteridinehi{%
1709 \@ifnextchar[{\@pteridinehi[@}{\@pteridinehi[acfhk]}}%
1710 \def\@pteridinehi[#1]#2{%
1711 \iforigpt \typeout{command `pteridinehi' %
1712 is based on `decaheterohi'.}\fi%
1713 \decaheterohi[#1]{1==N;3==N;5==N;8==N}{#2}}%

9 Six-to-five fused heterocycles

9.1 Horizontal type

The standard skeleton of a six-to-five fused heterocycle is selected to have the following locant numbers.

   **************************
   * nonahetero derivatives *
   *  (horizontal type)     *
   **************************
   The following numbering is adopted in this macro.
             3   2
                    1           (*1 origin)
         (8)3a   7a(9)
         4          7
             5   6
     ________
    |cf.                          |

  |        4 (8)               |
  |        *  3a                |
  |   5  *   * -----  3         |
  |     |     |     |           |
  |     |     |     |           |
  |   6  *   * *   *  2         |
  |        *  7a *              |
  |        7 (9) 1              |
  |        ^|
  |        |                    |
  |        the original point   |
  |________|

The macro \nonaheteroh has two arguments ATOMLIST and SUBSLIST as well as an optional argument BONDLIST. Two optional arguments SKBONDLIST and OMIT are added to treat stereochemical information or other bond situations.

   \nonaheteroh(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[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 ‘j’ and a uppercase character ‘A’ or ‘B’.

The BONDLIST argument contains one character selected from a to j, each of which indicates the presence of an inner (endcyclic) double bond on the corresponding position. The options ‘A’ and ‘B’ represent aromatic circles in two rings. The option ‘n+’ (n = 1 to 9) represents a plus charge on a hetero atom at the n-position.

     BONDLIST:  list of bonds
           none or r  :  aromatic six-membered ring
           []         :  fully saturated form
           a    :  1,2-double bond      b    :  2,3-double bond
           c    :  3,3a-double bond     d    :  4,3a-double bond
           e    :  4,5-double bond      f    :  5,6-double bond
           g    :  6,7-double bond      h    :  7,7a-double bond
           i    :  1,7a-double bond
           j    :  3a,4a-double bond
           J    :  3a,4a-double bond in the other ring
           A    :  aromatic circle (six-membered)
           B    :  aromatic circle (five-membered)
           {n+} :  plus at the n-nitrogen atom (n = 1 to 9)
           {0+} :  plus (or others) at the center
                    of the five-membered cycle

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 9 atoms)
for n = 1 to 7
 n         : Hetero atom, e.g. N, O, etc. at n-position
             e.g. 1==N for N at 1-position
 na        : Hetero atom at 3a or 7b (n=3 or 7)
             e.g. 3a==N (or 8==N) for N at 4a-position
                  7a==N (or 9==N) for N at 8a-position

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 8
nD         :  exocyclic double bond at n-atom
n or nS    :  exocyclic single bond at n-atom
nA         :  alpha single bond at n-atom
nB         :  beta single bond at n-atom
nSA        :  alpha single bond at n-atom (boldface)
nSB        :  beta single bond at n-atom (dotted line)
nSa        :  alpha (not specified) single bond at n-atom
nSb        :  beta (not specified) single bond at n-atom
nSd        :  alpha single bond at n-atom (dotted line)
                with an alternative direction to nSA
nSu        :  beta single bond at n-atom (boldface)
                with an alternative direction to nSB
nFA        :  alpha single bond at n-atom (dotted line)
                for ring fusion
nFB        :  beta single bond at n-atom (boldface)
                for ring fusion
nGA        :  alpha single bond at n-atom (dotted line)
                for the other ring fusion
nGB        :  beta single bond at n-atom (boldface)
                for the other ring fusion
for 8 (3a position) and 9 (7a position)
nD         :  exocyclic double bond at n-atom
n or nS    :  exocyclic single bond at n-atom
nA         :  alpha single bond at n-atom

             nB         :  beta single bond at n-atom

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

       OMIT:  one or more bonds omitted (a to j; see BONDLIST)

Several examples are shown as follows.

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

The definition of \nonaheteroh 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 several times in a restricted fashion.

\nonaheteroh
\@nona@heteroh
\@nona@@heteroh
\@nonaheteroh

1714 \def\nonaheteroh{\@ifnextchar({\@nona@heteroh(@}{\@nona@heteroh(@)}}
1715 \def\@nona@heteroh(#1){\@ifnextchar[{\@nona@@heteroh(#1)[@}%
1716 {\@nona@@heteroh(#1)[@]}}
1717 \def\@nona@@heteroh(#1)[#2]#3#4{\@ifnextchar[%
1718 {\@nonaheteroh(#1)[#2]{#3}{#4}[@}%
1719 {\@nonaheteroh(#1)[#2]{#3}{#4}[@]}}
1720 \def\@nonaheteroh(#1)[#2]#3#4[#5]{%
1721 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1722 % % treatment of atom list %
1723 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1724 \iniflag\iniatom%
1725 \test@vertix@nonav{#3}%
1726 % %%%%%%%%%%%%%%%%%%%%%%%
1727 % % adjustment for (yl) %
1728 % %%%%%%%%%%%%%%%%%%%%%%%
1729 \@reset@ylsw%
1730 \ylpositionh{#4}{5}{1}{5}{-1}%  %substituents on 1 to 3
1731 \if@ylsw \ifx\@@ylii\empty
1732 \def\@@ylii{0}\def\@@yli{0}\fi

1733 \else
1734 {\let\ddd=\eee\let\eee=\fff\let\fff=\ggg
1735 \ylpositionh{#4}{11}{3}{7}{-1}% %substituents on 5 to 7

1736 }% 1737 \fi

1738 \if@ylsw \ifx\@@ylii\empty
1739 \def\@@ylii{0}\def\@@yli{342}\fi
1740 \else
1741 {\let\aaa=\hhh
1742 \ylpositionh{#4}{-3}{0}{2}{0}%%substituent on 4

1743 }% 1744 \fi

1745 \if@ylsw \ifx\@@ylii\empty
1746 \def\@@ylii{0}\def\@@yli{342}\fi
1747 \else

1748 {%

1749 \clipdetection%
1750 \@clipfusefalse \if@iclip \@clipfusetrue \fi%
1751 \ylatombondposition{#4}{-8}{4}%   %9 for 7a position

1752 }% 1753 \fi

1754 \if@ylsw \ifx\@@ylii\empty
1755 \def\@@ylii{-303}\def\@@yli{171}\fi
1756 \else

1757 {%

1758 \clipdetection%
1759 \@clipfusefalse \if@jclip \@clipfusetrue \fi%
1760 \ylatombondposition{#4}{-7}{10}% %8 for 3a position

1761 }% 1762 \fi

1763 \if@ylsw \ifx\@@ylii\empty
1764 \def\@@ylii{-103}\def\@@yli{171}\fi

1765 \fi

1766 \if@ylsw
1767 \yl@shiftii=\@ylii
1768 \yl@shifti=\@yli
1769 \advance\yl@shiftii\@@ylii
1770 \advance\yl@shifti\@@yli
1771 \advance\yl@shiftii\yl@xdiff
1772 \advance\yl@shifti\yl@ydiff
1773 \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
1774 \reset@yl@xydiff%1999/1/6 by S. Fujita
1775 \else
1776 \begin{picture}(1200,1200)(-400,-800)%
1777 \iforigpt \put(-\shiftii,-\shiftiii){\circle*{50}}%
1778  \put(-\noshift,-\noshift){\circle{50}}%
1779 \typeout{command `nonahetero' origin: %
1780  (\the\noshift,\the\noshift) ---> (\the\shiftii,\the\shiftiii)}\fi%

1781 \fi

1782 % %%%%%%%%%%%%%%%%%%
1783 % % outer skeleton %
1784 % %%%%%%%%%%%%%%%%%%
1785 \begingroup
1786 \resetbdsw%
1787 \@bond@@omit{#5}%
1788 {\let\fff=\jjj \let\eee=\iii%
1789 \set@skel@bondh{#1}{a}{c}% bond between 1 and 2 \@aaa -> \hskbondc etc
1790 \set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc
1791 \set@skel@longbond{#1}{c}{hskbondvert}%
1792  % bond between 3 and 3a \@ccc -> \hskbondhoriz etc
1793 \set@skel@bondh{#1}{j}{e}% bond between 3a and 7a \@jjj -> \hskbonde etc
1794 \set@skel@bondh{#1}{i}{d}% bond between 7a and 1 \@iii -> \hskbondd etc

1795 }%

1796 {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\ggg
1797 \let\ccc=\iii\let\bbb=\jjj%
1798 \put(0,-342){\set@skel@bondh{#1}{d}{a}}%
1799 % bond between 3a and 4 \@ddd -> \hskbonda etc
1800 \put(0,-342){\set@skel@bondh{#1}{h}{c}}%
1801 % bond between 7a and 7 \@hhh -> \hskbondc etc
1802 \put(0,-342){\set@skel@bondh{#1}{g}{d}}%
1803 % bond between 6 and 7 \@ggg -> \hskbondd etc
1804 \put(0,-342){\set@skel@bondh{#1}{f}{e}}%
1805 % bond between 5 and 6 \@fff -> \hskbonde etc
1806 \put(0,-342){\set@skel@bondh{#1}{e}{f}}%
1807 % bond between 4 and 5 \@eee -> \hskbondf etc

1808 }%

1809 \endgroup
1810 % %%%%%%%%%%%%%%%%%%%%%
1811 % % inner double bond %
1812 % %%%%%%%%%%%%%%%%%%%%%
1813 \@tfor\member:=#2\do{%
1814 \if\member r\relax%
1815 {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\ggg%
1816 \let\ccc=\iii\let\bbb=\jjj%
1817 \put(0,-342){\hbondb}% bond between 3a and 7a
1818 \put(0,-342){\hbondf}% bond between 4 and 5
1819 \put(0,-342){\hbondd}% bond between 6 and 7

1820 }%

1821 \else \if\member l\relax%
1822 \else \if\member a\relax%
1823 \put(0,0){\hbondc}% bond between 3 and 4
1824 \else \if\member b\relax%
1825 \put(0,0){\hbondb}% bond between 2 and 3
1826 \else \if\member c\relax%
1827 \put(0,0){\hbondvert}% bond between 3 and 3a
1828 \else \if\member d\relax%
1829 {\let\aaa=\hhh \let\bbb=\jjj%
1830 \put(0,-342){\hbonda}% bond between 4 and 3a

1831 }%

1832 \else \if\member e\relax%
1833 {\let\aaa=\hhh \let\fff=\ggg%
1834 \put(0,-342){\hbondf}% bond between 4 and 5

1835 }%

1836 \else \if\member f\relax%
1837 {\let\eee=\fff \let\fff=\ggg%
1838 \put(0,-342){\hbonde}% bond between 5 and 6

1839 }%

1840 \else \if\member g\relax%
1841 {\let\ddd=\eee \let\eee=\fff%
1842 \put(0,-342){\hbondd}% bond between 6 and 7

1843 }%

1844 \else \if\member h\relax%
1845 {\let\ccc=\iii \let\ddd=\eee%
1846 \put(0,-342){\hbondc}% bond between 7 and 7a

1847 }%

1848 \else \if\member i\relax%
1849 {\let\eee=\iii%
1850 \put(0,0){\hbondd}% bond between 1 and 7a

1851 }%

1852 \else \if\member j\relax%
1853 {\let\ccc=\iii\let\bbb=\jjj%
1854 \put(0,-342){\hbondb}% bond between 7a and 3a

1855 }%

1856 \else \if\member J\relax%
1857 {\let\eee=\iii\let\fff=\jjj%
1858 \put(0,0){\hbonde}% bond between 7a and 3a

1859 }%

1860 \else \if\member B%left aromatic circle
1861 \put(233,0){\circle{180}}%               %circle (five-membered)
1862 \else \if\member A%left aromatic circle
1863 \put(203,-342){\circle{240}}%            %circle (six-membered)
1864 \else
1865 \expandafter\twoCH@@R\member//%
1866 \def\aax{3a} \def\aay{7a}%
1867  \if\@@tmpa 1\relax%
1868  \putratom{272}{-18}{\@@tmpb}%      % right type
1869  \else\if\@@tmpa 2\relax%
1870  \putratom{233}{60}{\@@tmpb}%       % right type
1871  \else\if\@@tmpa 3\relax%
1872  \putratom{120}{60}{\@@tmpb}%       % right type
1873  \else\if\@@tmpa 4\relax%
1874  \putratom{68}{-360}{\@@tmpb}%      % right type
1875  \else\if\@@tmpa 5\relax%
1876  \putratom{120}{-452}{\@@tmpb}%     % right type
1877  \else\if\@@tmpa 6\relax%
1878  \putratom{233}{-452}{\@@tmpb}%     % right type
1879  \else\if\@@tmpa 7\relax%
1880  \putratom{272}{-360}{\@@tmpb}%     % right type

1881  \else\if\@@tmpa 8\relax%
1882  \putratom{120}{-110}{\@@tmpb}%     % right type
1883  \else\ifx\@@tmpa\aax\relax%
1884  \putratom{120}{-110}{\@@tmpb}%     % right type
1885  \else\ifx\@@tmpa\aay\relax%
1886  \putratom{233}{-110}{\@@tmpb}%     % right type
1887  \else\if\@@tmpa 9\relax%
1888  \putratom{233}{-110}{\@@tmpb}%     % right type
1889  \else\if\@@tmpa 0\relax%
1890  \putratom{196}{-30}{\@@tmpb}%      % right type
1891  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
1892 % ***********************
1893 % * setting fused rings *
1894 % ***********************
1895 \expandafter\twoCH@R\member//%
1896 \set@fusion@nonah
1897 \fi\fi\fi\fi\fi\fi\fi\fi\fi%
1898 \fi\fi\fi\fi\fi\fi}%
1899 % %%%%%%%%%%%%%%%%%%%%%%%%
1900 % % setting hetero atoms %
1901 % %%%%%%%%%%%%%%%%%%%%%%%%
1902 \iniflag
1903 \@tmpclipfalse
1904 \put(0,0){\set@hetatom@sixh{#3}{5}{1}{5}{-1}%
1905 \if@aclip \global\@acliptrue\fi
1906 \if@bclip \global\@bcliptrue\fi
1907 \if@cclip \global\@ccliptrue\fi
1908 }% %substituents on 1 to 3
1909 \put(0,-342){\set@hetatom@sixh{#3}{11}{3}{7}{-1}%
1910 \@gclipfalse \if@fclip \global\@gcliptrue \fi%
1911 \@fclipfalse \if@eclip \global\@fcliptrue \fi%
1912 \@eclipfalse \if@clip \global\@ecliptrue \fi%
1913 }%substituents on 5 to 7
1914 \put(0,-342){\set@hetatom@sixh{#3}{-3}{0}{2}{0}%
1915 \@aclipfalse \if@aclip \global\@hcliptrue \fi%
1916 }%%substituent on 4
1917 \put(0,0){\set@vrtx@nonafuseh{#3}%
1918 \@tmpclipfalse
1919 \if@iclip \global\@tmpcliptrue \fi
1920 \if@jclip \global\@icliptrue \fi
1921 \if@tmpclip \global\@jcliptrue \fi
1922 }% fused positions
1923 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1924 % % setting substituents and exocyclic bonds %
1925 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1926 \put(0,0){\setsixringh{#4}{5}{1}{5}{-1}}%  %substituents on 1 to 3
1927 {\@clipfalse \if@eclip \@cliptrue \fi%     %substituents on 5 to 7
1928 \@eclipfalse \if@fclip \@ecliptrue \fi%
1929 \@fclipfalse \if@gclip \@fcliptrue \fi%

1930 \put(0,-342){\setsixringh{#4}{11}{3}{7}{-1}}%

1931 }%

1932 {\@aclipfalse \if@hclip \@acliptrue \fi%   %substituent on 4
1933 \put(0,-342){\setsixringh{#4}{-3}{0}{2}{0}}%

1934 }%

1935 {\@clipfusefalse \if@iclip \@clipfusetrue \fi%
1936 \put(303,-171){\setatombond{#4}{-8}{4}}%   %9 for 7a position

1937 }%

1938 {\@clipfusefalse \if@jclip \@clipfusetrue \fi%
1939 \put(103,-171){\setatombond{#4}{-7}{10}}% %8 for 3a position

1940 }%

1941 \end{picture}\iniatom\iniflag}%        %end of \nonaheteroh macro

The macro \set@vrtx@nonafuseh is an inner command contained in the definition of \nonaheteroh, where the macro is used to set a hetero atom on a vertex of a bridgehead location.

\set@vrtx@nonafuseh
1942 \def\set@vrtx@nonafuseh#1{%
1943 \@forsemicol\member:=#1\do{%
1944 \ifx\member\empty\else
1945 \expandafter\@m@mb@r\member;\relax%
1946 \expandafter\twoch@r\@membera{}%
1947 \ifcase\@tmpa\or\or
1948 \or%%%%3
1949 \if\@tmpb a%
1950  \global\@icliptrue%
1951  \putlatom{135}{-211}{\@memberb}%             % left type
1952 \else\if\@tmpb h%
1953  \XyMTeXWarning{Forbidden fused position `3a' or `8'}%
1954 \else\if\@tmpb s%
1955  \XyMTeXWarning{Forbidden fused position `3a' or `8'}%
1956 \else\ifx\@tmpb\empty\relax
1957 \else
1958  \XyMTeXWarning{Forbidden fused position `3a' or `8'}%
1959 \fi\fi\fi\fi
1960 \or\or\or
1961 \or%7
1962 \if\@tmpb a%
1963  \global\@jcliptrue%
1964  \putratom{273}{-211}{\@memberb}%             % right type
1965 \else\if\@tmpb h%
1966  \XyMTeXWarning{Forbidden fused position `7a' or `9'}%
1967 \else\if\@tmpb s%
1968  \XyMTeXWarning{Forbidden fused position `7a' or `9'}%
1969 \else\ifx\@tmpb\empty\relax
1970 \else
1971  \XyMTeXWarning{Forbidden fused position `7a' or `9'}%
1972 \fi\fi\fi\fi
1973 \or%8 (= 3a)

1974 \ifx\@tmpb\empty%
1975  \global\@icliptrue%
1976  \putlatom{135}{-211}{\@memberb}%             % left type
1977 \else
1978  \XyMTeXWarning{Forbidden fused position `3a' or `8'}%

1979 \fi

1980 \or%9 (= 7a)
1981 \ifx\@tmpb\empty%
1982  \global\@jcliptrue%
1983  \putratom{273}{-211}{\@memberb}%             % right type
1984 \else
1985  \XyMTeXWarning{Forbidden fused position `7a' or `9'}%

1986 \fi

1987 \fi\fi}%
1988 }% end of the macro \set@vrtx@nonafuseh

9.2 Inverse horizontal type

The standard skeleton of a six-to-five fused heterocycle is selected to have the following locant numbers.

   ************************************
   * nonahetero derivatives           *
   *  (horizontal type, inverse type) *
   ************************************
   The following numbering is adopted in this macro.

             2   3
          1
         (9)7a   3a(8)
         7          4
             6   5
     ________
    |cf.                          |
    |        7 (9) 1              |
    |        *  7a *              |
    |   6  *   * *   *  2         |
    |     |     |     |           |
    |     |     |     |           |
    |   5  *   * -----  3         |
    |        *  3a                |
    |        4 (8)                |
    |        ^|
    |        |                    |
    |        the original point   |

  |________|

The macro \nonaheterohi has two arguments ATOMLIST and SUBSLIST as well as an optional argument BONDLIST. Two optional arguments SKBONDLIST and OMIT are added to treat stereochemical information or other bond situations.

   \nonaheterohi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[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 ‘j’ and a uppercase character ‘A’ or ‘B’.

The BONDLIST argument contains one character selected from a to j, each of which indicates the presence of an inner (endcyclic) double bond on the corresponding position. The options ‘A’ and ‘B’ represent aromatic circles in two rings. The option ‘n+’ (n = 1 to 9) represents a plus charge on a hetero atom at the n-position.

     BONDLIST:  list of bonds
           none or r  :  aromatic six-membered ring
           []         :  fully saturated form
           a    :  1,2-double bond      b    :  2,3-double bond
           c    :  3,3a-double bond     d    :  4,3a-double bond
           e    :  4,5-double bond      f    :  5,6-double bond
           g    :  6,7-double bond      h    :  7,7a-double bond
           i    :  1,7a-double bond
           j    :  3a,4a-double bond
           J    :  3a,4a-double bond in the other ring
           A    :  aromatic circle (six-membered)
           B    :  aromatic circle (five-membered)
           {n+} :  plus at the n-nitrogen atom (n = 1 to 9)
           {0+} :  plus (or others) at the center
                    of the five-membered cycle

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 9 atoms)
       for n = 1 to 7
            n         : Hetero atom, e.g. N, O, etc. at n-position
                        e.g. 1==N for N at 1-position

 na        : Hetero atom at 3a or 7b (n=3 or 7)
             e.g. 3a==N (or 8==N) for N at 4a-position
                  7a==N (or 9==N) for N at 8a-position

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 8
nD         :  exocyclic double bond at n-atom
n or nS    :  exocyclic single bond at n-atom
nA         :  alpha single bond at n-atom
nB         :  beta single bond at n-atom
nSA        :  alpha single bond at n-atom (boldface)
nSB        :  beta single bond at n-atom (dotted line)
nSa        :  alpha (not specified) single bond at n-atom
nSb        :  beta (not specified) single bond at n-atom
nSd        :  alpha single bond at n-atom (dotted line)
                with an alternative direction to nSA
nSu        :  beta single bond at n-atom (boldface)
                with an alternative direction to nSB
nFA        :  alpha single bond at n-atom (dotted line)
                for ring fusion
nFB        :  beta single bond at n-atom (boldface)
                for ring fusion
nGA        :  alpha single bond at n-atom (dotted line)
                for the other ring fusion
nGB        :  beta single bond at n-atom (boldface)
                for the other ring fusion
for 8 (3a position) and 9 (7a position)
nD         :  exocyclic double bond at n-atom
n or nS    :  exocyclic single bond at n-atom
nA         :  alpha single bond at n-atom
nB         :  beta single bond at n-atom

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

OMIT:  one or more bonds omitted (a to j; see BONDLIST)

Several examples are shown as follows.

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

The definition of \nonaheterohi 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 several times in a restricted fashion.

\nonaheterohi
\@nona@heterohi
\@nona@@heterohi
\@nonaheterohi

1989 \def\nonaheterohi{\@ifnextchar({\@nona@heterohi(@}{\@nona@heterohi(@)}}
1990 \def\@nona@heterohi(#1){\@ifnextchar[{\@nona@@heterohi(#1)[@}%
1991 {\@nona@@heterohi(#1)[@]}}
1992 \def\@nona@@heterohi(#1)[#2]#3#4{\@ifnextchar[%
1993 {\@nonaheterohi(#1)[#2]{#3}{#4}[@}%
1994 {\@nonaheterohi(#1)[#2]{#3}{#4}[@]}}
1995 \def\@nonaheterohi(#1)[#2]#3#4[#5]{%
1996 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1997 % % treatment of atom list %
1998 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1999 \iniflag\iniatom%initialize
2000 \test@vertix@nonavi{#3}%
2001 % %%%%%%%%%%%%%%%%%%%%%%%
2002 % % adjustment for (yl) %
2003 % %%%%%%%%%%%%%%%%%%%%%%%
2004 \@reset@ylsw%
2005 \ylpositionh{#4}{0}{0}{4}{0}%   %substituents on 1 to 3
2006 \if@ylsw \ifx\@@ylii\empty
2007 \def\@@ylii{0}\def\@@yli{0}\fi
2008 \else
2009 {\let\ddd=\eee\let\eee=\fff\let\fff=\ggg
2010 \ylpositionh{#4}{0}{3}{7}{0}%%substituents on 4 to 6

2011 }% 2012 \fi

2013 \if@ylsw \ifx\@@ylii\empty
2014 \def\@@ylii{0}\def\@@yli{342}\fi
2015 \else
2016 {\let\aaa=\hhh

2017 \ylpositionh{#4}{-6}{0}{2}{0}%%substituent on 7

2018 }% 2019 \fi

2020 \if@ylsw \ifx\@@ylii\empty
2021 \def\@@ylii{0}\def\@@yli{342}\fi
2022 \else

2023 {%

2024 \clipdetection%
2025 \@clipfusefalse \if@iclip \@clipfusetrue \fi%
2026 \ylatombondposition{#4}{-7}{4}%  %8 for 3a position

2027 }% 2028 \fi

2029 \if@ylsw \ifx\@@ylii\empty
2030 \def\@@ylii{-303}\def\@@yli{171}\fi
2031 \else

2032 {%

2033 \clipdetection%
2034 \@clipfusefalse \if@jclip \@clipfusetrue \fi%
2035 \ylatombondposition{#4}{-8}{10}%%9 for 7a position

2036 }% 2037 \fi

2038 \if@ylsw \ifx\@@ylii\empty
2039 \def\@@ylii{-103}\def\@@yli{171}\fi

2040 \fi

2041 \if@ylsw
2042 \yl@shiftii=\@ylii
2043 \yl@shifti=\@yli
2044 \advance\yl@shiftii\@@ylii
2045 \advance\yl@shifti\@@yli
2046 \advance\yl@shiftii\yl@xdiff
2047 \advance\yl@shifti\yl@ydiff
2048 \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
2049 \reset@yl@xydiff%1999/1/6 by S. Fujita
2050 \else
2051 \begin{picture}(1200,1200)(-400,-800)%
2052 \iforigpt \put(-\shiftii,-\shiftiii){\circle*{50}}%
2053  \put(-\noshift,-\noshift){\circle{50}}%
2054 \typeout{command `nonaheterohi' origin: %
2055  (\the\noshift,\the\noshift) ---> (\the\shiftii,\the\shiftiii)}\fi%

2056 \fi

2057 % %%%%%%%%%%%%%%%%%%
2058 % % outer skeleton %
2059 % %%%%%%%%%%%%%%%%%%
2060 \begingroup
2061 \resetbdsw%
2062 \@bond@@omit{#5}%
2063 {\let\fff=\jjj \let\eee=\iii%
2064 \set@skel@bondh{#1}{a}{a}% bond between 1 and 2 \@aaa -> \hskbonda etc
2065 \set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc

2066 \set@skel@longbond{#1}{c}{hskbondverti}%
2067  % bond between 3 and 3a \@ccc -> \hskbondverti etc
2068 \set@skel@bondh{#1}{j}{e}% bond between 3a and 7a \@jjj -> \hskbonde etc
2069 \set@skel@bondh{#1}{i}{f}% bond between 7a and 1 \@iii -> \hskbondf etc

2070 }%

2071 {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\ggg%
2072 \let\ccc=\iii\let\bbb=\jjj%
2073 \put(0,-342){\set@skel@bondh{#1}{h}{a}}%
2074 % bond between 7a and 7 \@hhh -> \hskbonda etc
2075 \put(0,-342){\set@skel@bondh{#1}{d}{c}}%
2076 % bond between 3a and 4 \@ddd -> \hskbondc etc
2077 \put(0,-342){\set@skel@bondh{#1}{e}{d}}%
2078 % bond between 4 and 5 \@eee -> \hskbondd etc
2079 \put(0,-342){\set@skel@bondh{#1}{f}{e}}%
2080 % bond between 5 and 6 \@fff -> \hskbonde etc
2081 \put(0,-342){\set@skel@bondh{#1}{g}{f}}%
2082 % bond between 6 and 7 \@ggg -> \hskbondf etc

2083 }%

2084 \endgroup
2085 % %%%%%%%%%%%%%%%%%%%%%
2086 % % inner double bond %
2087 % %%%%%%%%%%%%%%%%%%%%%
2088 \@tfor\member:=#2\do{%
2089 \if\member r\relax%
2090 {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\ggg%
2091 \let\ccc=\iii\let\bbb=\jjj%
2092 \put(0,-342){\hbondb}% bond between 3a and 7a
2093 \put(0,-342){\hbondf}% bond between 6 and 7
2094 \put(0,-342){\hbondd}% bond between 4 and 5

2095 }%

2096 \else \if\member l\relax%
2097 \else \if\member a\relax%
2098 \put(0,0){\hbonda}% bond between 1 and 2
2099 \else \if\member b\relax%
2100 \put(0,0){\hbondb}% bond between 2 and 3
2101 \else \if\member c\relax%
2102 \put(0,0){\hbondverti}% bond between 3 and 3a
2103 \else \if\member d\relax%
2104 {\let\ccc=\iii \let\ddd=\eee%
2105 \put(0,-342){\hbondc}% bond between 4 and 3a

2106 }%

2107 \else \if\member e\relax%
2108 {\let\ddd=\eee\let\eee=\fff%
2109 \put(0,-342){\hbondd}% bond between 4 and 5

2110 }%

2111 \else \if\member f\relax%
2112 {\let\eee=\fff \let\fff=\ggg%
2113 \put(0,-342){\hbonde}% bond between 5 and 6

2114 }%

2115 \else \if\member g\relax%
2116 {\let\aaa=\hhh \let\fff=\ggg%
2117 \put(0,-342){\hbondf}% bond between 7 and 6

2118 }%

2119 \else \if\member h\relax%
2120 {\let\aaa=\hhh \let\bbb=\jjj%
2121 \put(0,-342){\hbonda}% bond between 7 and 7a

2122 }%

2123 \else \if\member i\relax%
2124 {\let\fff=\jjj%
2125 \put(0,0){\hbondf}% bond between 1 and 7a

2126 }%

2127 \else \if\member j\relax%
2128 {\let\ccc=\iii\let\bbb=\jjj%
2129 \put(0,-342){\hbondb}% bond between 7a and 3a

2130 }%

2131 \else \if\member J\relax%
2132 {\let\eee=\iii\let\fff=\jjj%
2133 \put(0,0){\hbonde}% bond between 7a and 3a

2134 }%

2135 \else \if\member B%aromatic circle
2136 \put(173,0){\circle{180}}%               %circle (five-membered)
2137 \else \if\member A%aromatic circle
2138 \put(203,-342){\circle{240}}%            %circle (six-membered)
2139 \else
2140 \expandafter\twoCH@@R\member//%
2141 \def\aax{7a} \def\aay{3a}%
2142  \if\@@tmpa 1\relax%
2143  \putratom{68}{-18}{\@@tmpb}%       % right type
2144  \else\if\@@tmpa 3\relax%
2145  \putratom{233}{60}{\@@tmpb}%       % right type
2146  \else\if\@@tmpa 2\relax%
2147  \putratom{120}{60}{\@@tmpb}%       % right type
2148  \else\if\@@tmpa 7\relax%
2149  \putratom{68}{-360}{\@@tmpb}%      % right type
2150  \else\if\@@tmpa 6\relax%
2151  \putratom{120}{-452}{\@@tmpb}%     % right type
2152  \else\if\@@tmpa 5\relax%
2153  \putratom{233}{-452}{\@@tmpb}%     % right type
2154  \else\if\@@tmpa 4\relax%
2155  \putratom{272}{-360}{\@@tmpb}%     % right type
2156  \else\if\@@tmpa 9\relax%
2157  \putratom{120}{-110}{\@@tmpb}%     % right type
2158  \else\ifx\@@tmpa\aax\relax%
2159  \putratom{120}{-110}{\@@tmpb}%     % right type
2160  \else\ifx\@@tmpa\aay\relax%
2161  \putratom{233}{-110}{\@@tmpb}%     % right type
2162  \else\if\@@tmpa 8\relax%
2163  \putratom{233}{-110}{\@@tmpb}%     % right type
2164  \else\if\@@tmpa 0\relax%

2165  \putratom{140}{-30}{\@@tmpb}%      % right type
2166  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
2167 % ***********************
2168 % * setting fused rings *
2169 % ***********************
2170 \expandafter\twoCH@R\member//%
2171 \set@fusion@nonahi
2172 \fi\fi\fi\fi\fi\fi\fi\fi\fi%
2173 \fi\fi\fi\fi\fi\fi}%
2174 % %%%%%%%%%%%%%%%%%%%%%%%%
2175 % % setting hetero atoms %
2176 % %%%%%%%%%%%%%%%%%%%%%%%%
2177 \iniflag
2178 \put(0,0){\set@hetatom@sixh{#3}{0}{0}{4}{0}%
2179 \if@aclip \global\@acliptrue\fi
2180 \if@bclip \global\@bcliptrue\fi
2181 \if@cclip \global\@ccliptrue\fi
2182 }% %substituents on 1 to 3
2183 \put(0,-342){\set@hetatom@sixh{#3}{0}{3}{7}{0}%
2184 \@gclipfalse \if@fclip \global\@gcliptrue \fi%
2185 \@fclipfalse \if@eclip \global\@fcliptrue \fi%
2186 \@eclipfalse \if@clip \global\@ecliptrue \fi}%substituents on 4 to 6
2187 \put(0,-342){\set@hetatom@sixh{#3}{-6}{0}{2}{0}%
2188 \@hclipfalse \if@aclip \global\@hcliptrue \fi}%%substituent on 7
2189 \put(0,0){\set@vrtx@nonafusehi{#3}%
2190 \if@iclip \global\@icliptrue \fi
2191 \if@jclip \global\@jcliptrue \fi}% fused positions
2192 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2193 % % setting substituents and exocyclic bonds %
2194 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2195 \put(0,0){\setsixringh{#4}{0}{0}{4}{0}}%   %substituents on 1 to 3
2196 {\@clipfalse \if@eclip \@cliptrue \fi%     %substituents on 4 to 6
2197 \@eclipfalse \if@fclip \@ecliptrue \fi%
2198 \@fclipfalse \if@gclip \@fcliptrue \fi%
2199 \put(0,-342){\setsixringh{#4}{0}{3}{7}{0}}%

2200 }%

2201 {\@aclipfalse \if@hclip \@acliptrue \fi%   %substituent on 7
2202 \put(0,-342){\setsixringh{#4}{-6}{0}{2}{0}}%

2203 }%

2204 {\@clipfusefalse \if@iclip \@clipfusetrue \fi%
2205 \put(303,-171){\setatombond{#4}{-7}{4}}%  %8 for 3a position

2206 }%

2207 {\@clipfusefalse \if@jclip \@clipfusetrue \fi%
2208 \put(103,-171){\setatombond{#4}{-8}{10}}%%9 for 7a position

2209 }%

2210 \end{picture}\iniatom\iniflag}%      %end of \nonaheterohi macro

The command \set@vrtx@nonafusehi is to set an atom (stored as \@memberb) at one (stored as \@tmpa) of the fused vertices of a six-five ring. These vertices are incapable of accomodating a spiro group. On the other hand, the other positions can take spiro groups (stored as \@memberb), which are treated by means of the

  command \set@hetatom@sixh. The command \set@vrtx@nonafusehi is used in

such commands as \nonaheterohi for treating thier ATOMLISTs,

\set@vrtx@nonafusehi
2211 \def\set@vrtx@nonafusehi#1{%
2212 \@forsemicol\member:=#1\do{%
2213 \ifx\member\empty\else
2214 \expandafter\@m@mb@r\member;\relax%
2215 \expandafter\twoCH@R\@membera//%
2216 \ifcase\@tmpa%

2217 \or 2218 \or

2219 \or%%%%3
2220 \if\@tmpb a%
2221  \global\@icliptrue%
2222  \putratom{273}{-211}{\@memberb}%            % right type
2223 \else\relax

2224 \fi

2225 \or%4
2226 \or%5
2227 \or%6
2228 \or%7
2229 \if\@tmpb a%
2230  \global\@jcliptrue%
2231  \putlatom{135}{-211}{\@memberb}%            % left type
2232 \else\relax

2233 \fi

2234 \or%8 (= 3a)
2235 \ifx\@tmpb\empty
2236  \global\@icliptrue%
2237  \putratom{273}{-211}{\@memberb}%            % right type
2238 \else
2239  \XyMTeXWarning{Forbidden spiro ring for the 3a position}%

2240 \fi

2241 \or%9 (= 7a)
2242 \ifx\@tmpb\empty
2243  \global\@jcliptrue%
2244  \putlatom{135}{-211}{\@memberb}%            % left type
2245 \else
2246  \XyMTeXWarning{Forbidden spiro ring for the 7a position}%

2247 \fi

2248 \fi\fi}%
2249 }% end of the macro \set@vrtx@nonafusehi

9.3 Short-cut commands for fused heterocycles

The macros \nonaheteroh and \nonaheterohi can be used in the form of a fixed ATOMLIST. Hence, the resulting commands for drawing a fused heterocyle with one or more nitrogen atoms have an argument SUBSLIST as well as an optional argument BONDLIST.

**********************************************************
* heterocycles having fused six- and five-membered rings *
*  (horizontal type)                                     *
**********************************************************
N-heterocycles:
\indoleh[BONDLIST]{SUBSLIST}
\indolehi[BONDLIST]{SUBSLIST}
\isoindoleh[BONDLIST]{SUBSLIST}
\isoindolehi[BONDLIST]{SUBSLIST}
\indolizineh[BONDLIST]{SUBSLIST}
\indolizinehi[BONDLIST]{SUBSLIST}
       (different from the IUPAC numbering)
\purineh[BONDLIST]{SUBSLIST}
\purinehi[BONDLIST]{SUBSLIST}
       (different from the IUPAC numbering)
O-heterocycles:
\benzofuraneh[BONDLIST]{SUBSLIST}
\benzofuranehi[BONDLIST]{SUBSLIST}
\isobenzofuranehi[BONDLIST]{SUBSLIST}
\benzoxazoleh[BONDLIST]{SUBSLIST}
\benzoxazolehi[BONDLIST]{SUBSLIST}

The BONDLIST argument contains one character selected from a to j, each of which indicates the presence of an inner (endcyclic) double bond on the corresponding position. The optiona ‘A’ typesets an aromatic circle. The option ‘n+’ (n = 1 to 9) represents a plus charge on a hetero atom at the n-position.

  BONDLIST:  list of bonds
        none or r  :  aromatic six-membered ring
        []         :  fully saturated form
        a    :  1,2-double bond      b    :  2,3-double bond
        c    :  3,3a-double bond     d    :  4,3a-double bond

e    :  4,5-double bond      f    :  5,6-double bond
g    :  6,7-double bond      h    :  7,7a-double bond
i    :  1,7a-double bond
j    :  3a,4a-double bond
J    :  3a,4a-double bond in the other ring
A    :  aromatic circle
{n+}       :  plus at the n-nitrogen atom (n = 1 to 9)

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 8
nD         :  exocyclic double bond at n-atom
n or nS    :  exocyclic single bond at n-atom
nA         :  alpha single bond at n-atom
nB         :  beta single bond at n-atom
nSA        :  alpha single bond at n-atom (boldface)
nSB        :  beta single bond at n-atom (dotted line)
nSa        :  alpha (not specified) single bond at n-atom
nSb        :  beta (not specified) single bond at n-atom
nSd        :  alpha single bond at n-atom (dotted line)
                with an alternative direction to nSA
nSu        :  beta single bond at n-atom (boldface)
                with an alternative direction to nSB
nFA        :  alpha single bond at n-atom (dotted line)
                for ring fusion
nFB        :  beta single bond at n-atom (boldface)
                for ring fusion
nGA        :  alpha single bond at n-atom (dotted line)
                for the other ring fusion
nGB        :  beta single bond at n-atom (boldface)
                for the other ring fusion
for 8 (3a position) and 9 (7a position)
nD         :  exocyclic double bond at n-atom
n or nS    :  exocyclic single bond at n-atom
nA         :  alpha single bond at n-atom
nB         :  beta single bond at n-atom

Several examples are shown as follows.

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

\purineh \purinehi
2250 \def\purineh{\@ifnextchar[{\@purineh[@}{\@purineh[ra]}}%
2251 \def\@purineh[#1]#2{%
2252 \iforigpt \typeout{command `purineh' %
2253 is based on `nonaheteroh'.}\fi%
2254 \nonaheteroh[#1]{1==N;3==N;5==N;7==N}{#2}}%
2255 \def\purinehi{\@ifnextchar[{\@purinehi[@}{\@purinehi[ra]}}%
2256 \def\@purinehi[#1]#2{%
2257 \iforigpt \typeout{command `purinehi' %
2258 is based on `nonaheterohi'.}\fi%
2259 \nonaheterohi[#1]{1==N;3==N;5==N;7==N}{#2}}%
\indoleh \indolehi
2260 \def\indoleh{\@ifnextchar[{\@indoleh[@}{\@indoleh[rb]}}%
2261 \def\@indoleh[#1]#2{%
2262 \iforigpt \typeout{command `indoleh' %
2263 is based on `nonaheteroh'.}\fi%
2264 \nonaheteroh[#1]{1==N}{#2}}%
2265 \def\indolehi{\@ifnextchar[{\@indolehi[@}{\@indolehi[rb]}}%
2266 \def\@indolehi[#1]#2{%
2267 \iforigpt \typeout{command `indolehi' %
2268 is based on `nonaheterohi'.}\fi%
2269 \nonaheterohi[#1]{1==N}{#2}}%
\indolizineh
\indolizinehi
2270 \def\indolizineh{%
2271 \@ifnextchar[{\@indolizineh[@}{\@indolizineh[aceg]}}%
2272 \def\@indolizineh[#1]#2{%
2273 \iforigpt \typeout{command `indolizineh' %
2274 is based on `nonaheteroh'.}\fi%
2275 \nonaheteroh[#1]{7a==N}{#2}}%
2276 \def\indolizinehi{%
2277 \@ifnextchar[{\@indolizinehi[@}{\@indolizinehi[aceg]}}%
2278 \def\@indolizinehi[#1]#2{%
2279 \iforigpt \typeout{command `indolizinehi' %
2280 is based on `nonaheterohi'.}\fi%
2281 \nonaheterohi[#1]{7a==N}{#2}}%
\isoindoleh
\isoindolehi
2282 \def\isoindoleh{%
2283 \@ifnextchar[{\@isoindoleh[@}{\@isoindoleh[cegi]}}%
2284 \def\@isoindoleh[#1]#2{%
2285 \iforigpt \typeout{command `isoindoleh' %

2286 is based on `nonaheteroh'.}\fi%
2287 \nonaheteroh[#1]{2==N}{#2}}%
2288 \def\isoindolehi{%
2289 \@ifnextchar[{\@isoindolehi[@}{\@isoindolehi[cegi]}}%
2290 \def\@isoindolehi[#1]#2{%
2291 \iforigpt \typeout{command `isoindolehi' %
2292 is based on `nonaheterohi'.}\fi%
2293 \nonaheterohi[#1]{2==N}{#2}}%
\benzofuraneh
\benzofuranehi
2294 \def\benzofuraneh{%
2295 \@ifnextchar[{\@benzofuraneh[@}{\@benzofuraneh[rb]}}%
2296 \def\@benzofuraneh[#1]#2{%
2297 \iforigpt \typeout{command `benzofuraneh' %
2298 is based on `nonaheteroh'.}\fi%
2299 \nonaheteroh[#1]{1==O}{#2}}%
2300 \def\benzofuranehi{%
2301 \@ifnextchar[{\@benzofuranehi[@}{\@benzofuranehi[rb]}}%
2302 \def\@benzofuranehi[#1]#2{%
2303 \iforigpt \typeout{command `benzofuranehi' %
2304 is based on `nonaheterohi'.}\fi%
2305 \nonaheterohi[#1]{1==O}{#2}}%
\isobenzofuraneh
\isobenzofuranehi
2306 \def\isobenzofuraneh{\@ifnextchar[{\@isobenzofuraneh[@}%
2307 {\@isobenzofuraneh[cegi]}}%
2308 \def\@isobenzofuraneh[#1]#2{%
2309 \iforigpt \typeout{command `isobenzofuraneh' %
2310 is based on `nonaheteroh'.}\fi%
2311 \nonaheteroh[#1]{2==O}{#2}}%
2312 \def\isobenzofuranehi{\@ifnextchar[{\@isobenzofuranehi[@}%
2313 {\@isobenzofuranehi[cegi]}}%
2314 \def\@isobenzofuranehi[#1]#2{%
2315 \iforigpt \typeout{command `isobenzofuranehi' %
2316 is based on `nonaheterohi'.}\fi%
2317 \nonaheterohi[#1]{2==O}{#2}}%
\benzoxazoleh
\benzoxazolehi
2318 \def\benzoxazoleh{%
2319 \@ifnextchar[{\@benzoxazoleh[@}{\@benzoxazoleh[rb]}}%
2320 \def\@benzoxazoleh[#1]#2{%
2321 \iforigpt \typeout{command `benzoxazoleh' %
2322 is based on `nonaheteroh'.}\fi%
2323 \nonaheteroh[#1]{1==O;3==N}{#2}}%
2324 \def\benzoxazolehi{%
2325 \@ifnextchar[{\@benzoxazolehi[@}{\@benzoxazolehi[rb]}}%
2326 \def\@benzoxazolehi[#1]#2{%
2327 \iforigpt \typeout{command `benzoxazolehi' %
2328 is based on `nonaheterohi'.}\fi%
2329 \nonaheterohi[#1]{1==O;3==N}{#2}}%

10 Building blocks

10.1 Six-membered ring unit

The old function (v1.01) of \sixunitv as a fusing ring unit is succeeded by \sixfusev and \sixfusevi. The command \sixunitv has been changed into a subsidiary command of \sixheterov (v2.00).

The macro \sixunith is a six-membered fragment that can be fused to another ring structure to produce a new ring system. The following numbering is adopted in this macro.

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

The macro \sixunith has three arguments ATOMLIST, SUBSLIST and OMIT as well as an optional argument BONDLIST.

   \sixunith[BONDLIST]{ATOMLIST}{SUBSLIST}{OMIT}

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 OMIT represents one bond to be omitted. The omitted edge is regarded as a fused position.

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

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

The definition of \sixunith 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.

\sixunith \@sixunith
2330 \def\sixunith{\@ifnextchar[{\@sixunith[@}{\@sixunith[@]}}
2331 \def\@sixunith[#1]#2#3#4{\sixheteroh[#1]{#2}{#3}[#4]}
(Old difinition)
% \begin{macro}{\sixunith}
% \begin{macro}{\@sixunith}
%    \begin{macrocode}
\def\sixunith{\@ifnextchar[{\@sixunith}{\@sixunith[r]}}
\def\@sixunith[#1]#2#3#4{%
%    \end{macrocode}
%
%    \begin{macrocode}
% %%%%%%%%%%%%%%%%%%%%%%%%%%
% % treatment of atom list %
% %%%%%%%%%%%%%%%%%%%%%%%%%%
\iniatom\iniflag%initialize%
\@forsemicol\member:=#2\do{%
\expandafter\@m@mb@r\member;\relax%
\expandafter\twoch@r\@membera{}%
\ifcase\@tmpa%
 \or \xdef\aaa{\@memberb}%
 \or \xdef\bbb{\@memberb}%
 \or \xdef\ccc{\@memberb}%
 \or \xdef\ddd{\@memberb}%
 \or \xdef\eee{\@memberb}%
 \or \xdef\fff{\@memberb}%
\fi}%
 \begin{picture}(800,880)(-240,-400)%
  \iforigpt \put(-\shifti,-\shiftii){\circle*{50}}%
           \put(-\noshift,-\noshift){\circle{50}}%

   \typeout{command `sixunith' origin: %
    (\the\noshift,\the\noshift) ---> (\the\shifti,\the\shiftii)}\fi%
%    \end{macrocode}
%
%    \begin{macrocode}
% %%%%%%%%%%%%%%%%%%
% % outer skeleton %
% %%%%%%%%%%%%%%%%%%
% changed OMIT into a list 1993/11/21 by Shinsaku Fujita
{\resetbdsw%
\@tfor\memBer:=#4\do{%
\if\memBer a\relax\gdef\@aaa{}\fi%
\if\memBer b\relax\gdef\@bbb{}\fi%
\if\memBer c\relax\gdef\@ccc{}\fi%
\if\memBer d\relax\gdef\@ddd{}\fi%
\if\memBer e\relax\gdef\@eee{}\fi%
\if\memBer f\relax\gdef\@fff{}\fi%
}%
\if\@aaa a\relax\hskbonda\fi% bond between 1 and 2
\if\@bbb b\relax\hskbondb\fi% bond between 2 and 3
\if\@ccc c\relax\hskbondc\fi% bond between 3 and 4
\if\@ddd d\relax\hskbondd\fi% bond between 4 and 5
\if\@eee e\relax\hskbonde\fi% bond between 5 and 6
\if\@fff f\relax\hskbondf\fi% bond between 6 and 1
}%
%\ifx#4a\relax \else%
% \hskbonda% bond between 1 and 2
%\fi%
%\ifx#4f\relax \else%
% \hskbondf% bond between 1 and 6
%\fi%
%\ifx#4c\relax \else%
% \hskbondc% bond between 4 and 3
%\fi%
%\ifx#4d\relax \else%
% \hskbondd% bond between 4 and 5
%\fi%
%\ifx#4b\relax \else%
% \hskbondb% bond between 3 and 2
%\fi%
%\ifx#4e\relax \else%
% \hskbonde% bond between 5 and 6
%\fi%
%    \end{macrocode}
%
%    \begin{macrocode}
% %%%%%%%%%%%%%%%%%%%%%
% % inner double bond %
% %%%%%%%%%%%%%%%%%%%%%
\@tfor\member:=#1\do{%

\if\member r\relax%
\else \if\member l\relax%
\else \if\member a\relax%
 \ifx#4a\relax \else%
  \hbonda%
 \fi%
\else \if\member b\relax%
 \ifx#4b\relax \else%
   \hbondb%
 \fi%
\else \if\member c\relax%
 \ifx#4c\relax \else%
   \hbondc%
 \fi%
\else \if\member d\relax%
 \ifx#4d\relax \else%
   \hbondd%
 \fi%
\else \if\member e\relax%
 \ifx#4e\relax \else%
   \hbonde%
 \fi%
\else \if\member f\relax%
 \ifx#4f\relax \else%
   \hbondf%
 \fi%
\else \if\member A%left aromatic circle
  \put(203,0){\circle{240}}%                %circle
\else \expandafter\twoch@@r\member{}{}%
      \if\@@tmpa 4\relax%
        \putratom{272}{-18}{\@@tmpb}%       % right type
      \else\if\@@tmpa 1\relax%
        \putratom{68}{-18}{\@@tmpb}%        % right type
      \else\if\@@tmpa 3\relax
        \putratom{233}{60}{\@@tmpb}%        % right type
      \else\if\@@tmpa 2\relax%
        \putratom{120}{60}{\@@tmpb}%        % right type
      \else\if\@@tmpa 5\relax%
        \putratom{233}{-110}{\@@tmpb}%      % right type
      \else\if\@@tmpa 6\relax%
        \putratom{120}{-110}{\@@tmpb}%      % right type
      \fi\fi\fi\fi\fi\fi%
\fi\fi\fi\fi\fi\fi\fi\fi\fi}%
%    \end{macrocode}
%
%    \begin{macrocode}
% %%%%%%%%%%%%%%%%%%%%%%%%
% % setting hetero atoms %
% %%%%%%%%%%%%%%%%%%%%%%%%
\ifx\ddd\empty\else%

   \@cliptrue%
   \putratom{346}{-36}{\ddd}%               % right type
\fi%
\ifx\aaa\empty\else%
     \@acliptrue%
     \putlatom{60}{-36}{\aaa}%              % left type
\fi%
\ifx\bbb\empty\else%
     \@bcliptrue%
     \putlatom{135}{141}{\bbb}%             % left type
\fi%
\ifx\ccc\empty\else%
     \@ccliptrue%
     \putratom{273}{141}{\ccc}%             % right type
\fi%
\ifx\fff\empty\else%
     \@fcliptrue%
     \putlatom{135}{-211}{\fff}%            % left type
\fi%
\ifx\eee\empty\else%
     \@ecliptrue%
     \putratom{273}{-211}{\eee}%            % right type
\fi%
\setsixringh{#3}{0}{0}{7}{0}%
\end{picture}\iniatom\iniflag}%     %end of \sixunith macro
%    \end{macrocode}
% \end{macro}
% \end{macro}

10.2 Five-membered ring unit

10.2.1 Horizonatl type

The old function (v1.01) of \fiveunith as a fusing ring unit is succeeded by \fivefuseh. The command \fiveunith has been changed into a subsidiary command of \fiveheteroh (v2.00).

The macro \fiveunith is a five-membered fragment that can be fused to another ring structure to produce a new ring system. The following numbering is adopted in this macro.

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

     4  -----  5

The macro \fiveunith has three arguments ATOMLIST, SUBSLIST and OMIT as well as an optional argument BONDLIST.

   \fiveunith[BONDLIST]{ATOMLIST}{SUBSLIST}{OMIT}

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 OMIT represents one bond to be omitted. The omitted edge is regarded as a fused position.

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

Several examples are shown as follows.

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

The definition of \fiveunith 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 partially.

\fiveunith \@fiveunith
2332 \def\fiveunith{\@ifnextchar[{\@fiveunith[@}{\@fiveunith[r]}}
2333 \def\@fiveunith[#1]#2#3#4{\fiveheteroh[#1]{#2}{#3}[#4]}

(Old definition)
% \begin{macro}{\fiveunith}
% \begin{macro}{\@fiveunith}
%    \begin{macrocode}
\def\fiveunith{\@ifnextchar[{\@fiveunith}{\@fiveunith[r]}}
\def\@fiveunith[#1]#2#3#4{%
\iniatom\iniflag%initialize
%    \end{macrocode}
%
%    \begin{macrocode}
% %%%%%%%%%%%%%%%%%%%%%%%%%%
% % treatment of atom list %
% %%%%%%%%%%%%%%%%%%%%%%%%%%
%\def\aaa{}\def\bbb{}\def\ccc{}\def\ddd{}\def\eee{}\def\fff{}%
\@forsemicol\member:=#2\do{%
\expandafter\@m@mb@r\member;\relax%
\expandafter\twoch@r\@membera{}%
\ifcase\@tmpa%
 \or \xdef\ddd{\@memberb}%
 \or \xdef\ccc{\@memberb}%
 \or \xdef\bbb{\@memberb}%
 \or \xdef\fff{\@memberb}%
 \or \xdef\eee{\@memberb}%
\fi}%
 \begin{picture}(800,880)(-240,-400)%
  \iforigpt \put(-\shifti,-\shiftii){\circle*{50}}%
           \put(-\noshift,-\noshift){\circle{50}}%
   \typeout{command `fiveunith' origin: %
    (\the\noshift,\the\noshift) ---> (\the\shifti,\the\shiftii)}\fi%
%    \end{macrocode}
%
%    \begin{macrocode}
% %%%%%%%%%%%%%%%%%%
% % outer skeleton %
% %%%%%%%%%%%%%%%%%%
% changed OMIT to a list 1993/11/21 by Shinsaku Fujita
{\resetbdsw%
\@tfor\memBer:=#4\do{%
\if\memBer a\relax\gdef\@aaa{}\fi%
\if\memBer b\relax\gdef\@bbb{}\fi%
\if\memBer c\relax\gdef\@ccc{}\fi%
\if\memBer d\relax\gdef\@ddd{}\fi%
\if\memBer e\relax\gdef\@eee{}\fi%
%\if\memBer f\relax\gdef\@fff{}\fi%
}%
\if\@aaa a\relax\hskbondc\fi% bond between 1 and 2
\if\@bbb b\relax\hskbondb\fi% bond between 2 and 3
\if\@ccc c\relax\hskbondvert\fi% bond between 3 and 4
\if\@ddd d\relax\hskbonde\fi% bond between 4 and 5
\if\@eee e\relax\hskbondd\fi% bond between 5 and 6

%\if\@fff f\relax\hskbondf\fi% bond between 6 and 1
}%
% old
%\ifx#4a\relax\else%
% \hskbondc%bond between 1 and 2
%\fi%
%\ifx#4e\relax\else%
% \hskbondd%bond between 1 and 5
%\fi%
%\ifx#4b\relax\else%
%  \hskbondb%bond between 2 to 3
%\fi%
%\ifx#4d\relax\else%
% \hskbonde%bond between 5 and 4
%\fi%
%\ifx#4c\relax\else%
% \hskbondvert%bond between 4 and 3
%\fi%
%    \end{macrocode}
%
%    \begin{macrocode}
% %%%%%%%%%%%%%%%%%%%%%
% % inner double bond %
% %%%%%%%%%%%%%%%%%%%%%
\@tfor\member:=#1\do{%
\if\member r%
\else \if\member a\relax%
 \ifx#4a\relax\else%
   \hbondc%
 \fi%
\else \if\member b\relax%
 \ifx#4b\relax\else%
  \hbondb%
 \fi%
\else \if\member c\relax%
 \ifx#4c\relax\else%
   \hbondvert%
 \fi%
\else \if\member d\relax%
 \ifx#4d\relax\else%
  \hbonde%
 \fi%
\else \if\member e\relax%
 \ifx#4e\relax\else%
  \hbondd%
 \fi%
\else \if\member A%left aromatic circle
  \put(233,0){\circle{180}}%               %circle
\else \expandafter\twoch@@r\member{}{}%
      \if\@@tmpa 1\relax%

        \putratom{272}{-18}{\@@tmpb}%      % right type
      \else\if\@@tmpa 2\relax%
        \putratom{233}{60}{\@@tmpb}%       % right type
      \else\if\@@tmpa 3\relax%
        \putratom{120}{60}{\@@tmpb}%       % right type
      \else\if\@@tmpa 5\relax%
        \putratom{233}{-110}{\@@tmpb}%     % right type
      \else\if\@@tmpa 4\relax%
        \putratom{120}{-110}{\@@tmpb}%     % right type
      \else\if\@@tmpa 0\relax%
        \putratom{196}{-30}{\@@tmpb}%      % right type
      \fi\fi\fi\fi\fi\fi%
\fi\fi\fi\fi\fi\fi\fi}%
%    \end{macrocode}
%
%    \begin{macrocode}
% %%%%%%%%%%%%%%%%%%%%%%%
% % setting heteroatoms %
% %%%%%%%%%%%%%%%%%%%%%%%
\ifx\ddd\empty\else%
   \@cliptrue%
   \putratom{346}{-36}{\ddd}%              % right type
\fi%
\ifx\bbb\empty\else%
     \@bcliptrue%
     \putlatom{135}{141}{\bbb}%            % left type
\fi%
\ifx\ccc\empty\else%
     \@ccliptrue%
     \putratom{273}{141}{\ccc}%            % right type
\fi%
\ifx\fff\empty\else%
     \@fcliptrue%
     \putlatom{135}{-211}{\fff}%           % left type
\fi%
\ifx\eee\empty\else%
     \@ecliptrue%
     \putratom{273}{-211}{\eee}%           % right type
\fi%
%    \end{macrocode}
%
%    \begin{macrocode}
% %%%%%%%%%%%%%%%%%%%%%%%%
% % setting substituents %
% %%%%%%%%%%%%%%%%%%%%%%%%
\setsixringh{#3}{5}{1}{5}{-1}%   % for 1 to 3
\setsixringh{#3}{10}{4}{7}{-1}%  % for 4 to 5
\end{picture}\iniatom\iniflag}%  %end of \fiveunith macro
%    \end{macrocode}
% \end{macro}

 % \end{macro}

10.2.2 Inverse horizontal type

The old function (v1.01) of \fiveunithi as a fusing ring unit is succeeded by \fivefusehi. The command \fiveunithi has been changed into a subsidiary command of \fiveheterohi (v2.00).

The macro \fiveunithi typesets a five-membered fragment that can be fused to another ring structure to produce a new ring system. The following numbering is adopted in this macro.

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

   The macro \fiveunithi has three arguments ATOMLIST, SUBSLIST and OMIT

as well as an optional argument BONDLIST.

   \fiveunithi[BONDLIST]{ATOMLIST}{SUBSLIST}{OMIT}

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 OMIT represents one bond to be omitted. The omitted edge is regarded as a fused position.

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

Several examples are shown as follows.

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

The definition of \fiveunithi 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 partially.

\fiveunithi
\@fiveunithi
2334 \def\fiveunithi{\@ifnextchar[{\@fiveunithi[@}{\@fiveunithi[r]}}
2335 \def\@fiveunithi[#1]#2#3#4{\fiveheterohi[#1]{#2}{#3}[#4]}
(Old definition)
% \begin{macro}{\fiveunithi}
% \begin{macro}{\@fiveunithi}
%    \begin{macrocode}
\def\fiveunithi{\@ifnextchar[{\@fiveunithi}{\@fiveunithi[r]}}%
\def\@fiveunithi[#1]#2#3#4{%
\iniatom\iniflag%initialize
%    \end{macrocode}
%
%    \begin{macrocode}
% %%%%%%%%%%%%%%%%%%%%%%%%%%
% % treatment of atom list %
% %%%%%%%%%%%%%%%%%%%%%%%%%%
%\def\aaa{}\def\bbb{}\def\ccc{}\def\ddd{}\def\eee{}\def\fff{}%
\@forsemicol\member:=#2\do{%
\expandafter\@m@mb@r\member;\relax%
\expandafter\twoch@r\@membera{}%
\ifcase\@tmpa%
 \or \xdef\aaa{\@memberb}%
 \or \xdef\bbb{\@memberb}%
 \or \xdef\ccc{\@memberb}%
 \or \xdef\eee{\@memberb}%
 \or \xdef\fff{\@memberb}%
\fi}%
 \begin{picture}(800,880)(-240,-400)%
  \iforigpt \put(-\shifti,-\shiftii){\circle*{50}}%
           \put(-\noshift,-\noshift){\circle{50}}%
   \typeout{command `fiveunithi' origin: %
    (\the\noshift,\the\noshift) ---> (\the\shifti,\the\shiftii)}\fi%

%    \end{macrocode}
%
%    \begin{macrocode}
% %%%%%%%%%%%%%%%%%%
% % outer skeleton %
% %%%%%%%%%%%%%%%%%%
% changed OMIT to a list 1993/11/21 by Shinsaku Fujita
{\resetbdsw%
\@tfor\memBer:=#4\do{%
\if\memBer a\relax\gdef\@aaa{}\fi%
\if\memBer b\relax\gdef\@bbb{}\fi%
\if\memBer c\relax\gdef\@ccc{}\fi%
\if\memBer d\relax\gdef\@ddd{}\fi%
\if\memBer e\relax\gdef\@eee{}\fi%
%\if\memBer f\relax\gdef\@fff{}\fi%
}%
\if\@aaa a\relax\hskbonda\fi% bond between 1 and 2
\if\@bbb b\relax\hskbondb\fi% bond between 2 and 3
\if\@ccc c\relax\hskbondverti\fi% bond between 3 and 4
\if\@ddd d\relax\hskbonde\fi% bond between 4 and 5
\if\@eee e\relax\hskbondf\fi% bond between 5 and 6
%\if\@fff f\relax\hskbondf\fi% bond between 6 and 1
}%
% old
%\ifx#4a\relax\else%
% \hskbonda%bond between 1 and 2
%\fi%
%\ifx#4e\relax\else%
% \hskbondf%bond between 1 and 5
%\fi%
%\ifx#4b\relax\else%
%  \hskbondb%bond between 2 to 3
%\fi%
%\ifx#4d\relax\else%
% \hskbonde%bond between 5 and 4
%\fi%
%\ifx#4c\relax\else%
% \hskbondverti%bond between 4 and 3
%\fi%
%    \end{macrocode}
%
%    \begin{macrocode}
% %%%%%%%%%%%%%%%%%%%%%
% % inner double bond %
% %%%%%%%%%%%%%%%%%%%%%
\@tfor\member:=#1\do{%
\if\member r%
\else \if\member a\relax%
 \ifx#4a\relax\else%
   \hbonda%

 \fi%
\else \if\member b\relax%
 \ifx#4b\relax\else%
  \hbondb%
 \fi%
\else \if\member c\relax%
 \ifx#4c\relax\else%
   \hbondverti%
 \fi%
\else \if\member d\relax%
 \ifx#4d\relax\else%
  \hbonde%
 \fi%
\else \if\member e\relax%
 \ifx#4e\relax\else%
  \hbondf%
 \fi%
\else \if\member A%left aromatic circle
  \put(173,0){\circle{180}}%                %circle
\else \expandafter\twoch@@r\member{}{}%     %plus or minus charges
      \if\@@tmpa 1\relax%
        \putratom{-38}{282}{\@@tmpb}%       % right type
      \else\if\@@tmpa 2\relax%
        \putratom{60}{233}{\@@tmpb}%        % right type
      \else\if\@@tmpa 3\relax%
        \putratom{60}{120}{\@@tmpb}%        % right type
      \else\if\@@tmpa 4\relax%
        \putratom{-60}{120}{\@@tmpb}%       % right type
      \else\if\@@tmpa 5\relax%
        \putratom{-60}{233}{\@@tmpb}%       % right type
      \else\if\@@tmpa 0\relax%
        \putratom{140}{-30}{\@@tmpb}%       % right type
      \fi\fi\fi\fi\fi\fi%
\fi\fi\fi\fi\fi\fi\fi}%
%    \end{macrocode}
%
%    \begin{macrocode}
% %%%%%%%%%%%%%%%%%%%%%%%
% % setting heteroatoms %
% %%%%%%%%%%%%%%%%%%%%%%%
\ifx\aaa\empty\else%
     \@acliptrue%
     \putlatom{60}{-36}{\aaa}%              % left type
\fi%
\ifx\bbb\empty\else%
     \@bcliptrue%
     \putlatom{135}{141}{\bbb}%             % left type
\fi%
\ifx\ccc\empty\else%
     \@ccliptrue%

     \putratom{273}{141}{\ccc}%             % right type
\fi%
\ifx\fff\empty\else%
     \@fcliptrue%
     \putlatom{135}{-211}{\fff}%            % left type
\fi%
\ifx\eee\empty\else%
     \@ecliptrue%
     \putratom{273}{-211}{\eee}%            % right type
\fi%
%    \end{macrocode}
%
%    \begin{macrocode}
% %%%%%%%%%%%%%%%%%%%%%%%%
% % setting substituents %
% %%%%%%%%%%%%%%%%%%%%%%%%
\setsixringh{#3}{0}{0}{4}{0}%  % for 1 to 3
\setsixringh{#3}{1}{4}{7}{0}%  % for 4 to 5
\end{picture}\iniatom\iniflag}%      %end of \fiveunithi macro
%    \end{macrocode}
% \end{macro}

11 Three-membered heterocycles

11.1 Horizontal type

The macro \threeheteroh typesets a three-membered ring. The following numbering is adopted in this macro.

****************************
* thereehetero derivatives *
*  (horizontal type)       *
****************************
  aaa fff
   3
   | ` c
 b |    1 bbb ccc
   |  / a
   2/
   ddd eee
--                                    --
| cf. threeehetero                      |
| fff 3--------2bbb                     |
|     `     /                           |
|  ddd  `1/ <===== the original point   |
|                                       |

 --                                    --

The macro \threeheteroh has two arguments ATOMLIST and SUBSLIST as well as an optional argument BONDLIST. Two optional arguments SKBONDLIST and OMIT are added to treat stereochemical information or other bond situations.

   \threeheteroh(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[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 ‘c’ and a uppercase character ‘A’ or ‘B’.

The BONDLIST argument contains one character selected from a to c, each of which indicates the presence of an inner (endcyclic) double bond on the corresponding position. The option ‘n+’ (n = 1 to 3) represents a plus charge on a hetero atom at the n-position. The option ‘n+’ (n = 4 to 6) represents a plus charge outside the ring. The option ‘0+’ typesets a plus charge at the center of the ring.

     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 OMIT represents one or more bonds to be omitted. The omitted edges may be regarded as both fused and non-fused positions.

OMIT:  one or more bonds omitted (a to c; see BONDLIST)

Several examples are shown as follows.

e.g.
\threeheteroh{1==N}{1==Cl;2==F}
\threeheteroh[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
\threeheteroh{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl}

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

1. treatment of atom list,

2. placing outer skeletons, 3. placing inner double bonds,

4. setting hetero atoms, and

5. placing substituents by using \setsixringv partially.

\threeheteroh
\@three@heteroh
\@three@@heteroh
\@threeheteroh

2336 \def\threeheteroh{\@ifnextchar({\@three@heteroh(@}{\@three@heteroh(@)}}
2337 \def\@three@heteroh(#1){\@ifnextchar[{\@three@@heteroh(#1)[@}%
2338 {\@three@@heteroh(#1)[@]}}
2339 \def\@three@@heteroh(#1)[#2]#3#4{\@ifnextchar[%
2340 {\@threeheteroh(#1)[#2]{#3}{#4}[@}%
2341 {\@threeheteroh(#1)[#2]{#3}{#4}[@]}}
2342 \def\@threeheteroh(#1)[#2]#3#4[#5]{%

The procedure of adusting substitution positions is based on a horizontal sixmembered ring, in which the positions 4 (ddd), 6 (fff), 2 (bbb) are used in place of the positions 1, 2, and 3 of the three-membered ring.

2343 % %%%%%%%%%%%%%%%%%%%%%%%%%%
2344 % % treatment of atom list %
2345 % %%%%%%%%%%%%%%%%%%%%%%%%%%
2346 \iniatom\iniflag%initialize
2347 \test@vertix@sixv{#3}{d}{f}{b}{@}{@}{@}%tentative use for six-h
2348 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2349 % % adustment of subs positions %
2350 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2351 \@reset@ylsw%
2352 \ylpositionh{#4}{3}{3}{5}{0}%subst 1
2353 \if@ylsw \ifx\@@ylii\empty
2354 \def\@@ylii{235}\def\@@yli{-103}\fi
2355 \else
2356 \ylpositionh{#4}{-1}{1}{3}{0}%subst 3

2357 \fi

2358 \if@ylsw \ifx\@@ylii\empty
2359 \def\@@ylii{103}\def\@@yli{-29}\fi
2360 \else
2361 \ylpositionh{#4}{4}{5}{7}{0}%subst 2

2362 \fi

2363 \if@ylsw \ifx\@@ylii\empty
2364 \def\@@ylii{103}\def\@@yli{-171}\fi

2365 \fi

2366 \if@ylsw
2367 \yl@shiftii=\@ylii
2368 \yl@shifti=\@yli
2369 \advance\yl@shiftii\@@ylii
2370 \advance\yl@shifti\@@yli
2371 \advance\yl@shiftii\yl@xdiff
2372 \advance\yl@shifti\yl@ydiff
2373 \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
2374 \reset@yl@xydiff%1999/1/6 by S. Fujita

2375 \else
2376 \begin{picture}(580,700)(-200,-240)%
2377 \iforigpt \put(-200,-240){\circle*{50}}%
2378  \put(0,0){\circle{50}}%
2379 \typeout{command `threeheteroh' origin: %
2380  (0,0) ---> (200,240)}\fi%

2381 \fi

The procedures of setting skeletal and inner bonds are based on a vertical sixmembered ring, where the bonds c, e, and a are used in place of the bonds a, b, and c. Hence, (1) the bond a of the latter should be related to \bbb and \ccc at the one terminal and to \eee and \ddd at the other terminal; (2) the bond b of the latter should be related to \eee and \ddd at the one terminal and to \aaa and \fff at the other terminal; and (3) the bond c of the latter should be related to \bbb and \ccc at the one terminal and to \aaa and \fff at the other terminal.

2382 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%
2383 % % retreatment of atom list %
2384 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%
2385 \iniatom\iniflag%initialize
2386 \test@vertix@sixv{#3}{c}{e}{a}{@}{@}{@}%
2387 \test@vertix@sixv{#3}{b}{d}{f}{@}{@}{@}%
2388 % %%%%%%%%%%%%%%%%%%
2389 % % outer skeleton %
2390 % %%%%%%%%%%%%%%%%%%
2391 {\resetbdsw%
2392 \@bond@@omit{#5}%
2393 \put(0,0){\set@skel@bond{#1}{a}{c}}%
2394  % bond between 1 and 2 \@aaa -> \skbondc etc
2395 \put(171,-103){\set@skel@bond{#1}{b}{e}}%
2396  % bond between 2 and 3 \@bbb -> \skbonde etc
2397 \put(0,-200){\set@skel@bond{#1}{c}{a}}%
2398  % bond between 3 and 1 \@ccc -> \skbonda etc

2399 }% 2400 %

2401 % \put(0,0){\skbondc}% bond between 1 and 2
2402 % \put(0,-200){\skbonda}% bond between 1 and 3
2403 % \put(171,-103){\skbonde}%bond between 2 and 3
2404 % %%%%%%%%%%%%%%%%%%%%%
2405 % % inner double bond %
2406 % %%%%%%%%%%%%%%%%%%%%%
2407 \@tfor\member:=#2\do{%
2408 \if\member r\relax%
2409 \else\if\member a\relax\put(0,0){\bondc}%
2410 \else\if\member b\relax\put(171,-103){\bonde}%
2411 \else\if\member c\relax\put(0,-200){\bonda}%
2412 \else\if\member A\relax% aromatic circle
2413 \put(70,103){\circle{100}}%               %circle
2414 \else
2415 % %%%%%%%%%%%%%%%%%%%%%%%%%

2416 % % inner bond attachment %
2417 % %%%%%%%%%%%%%%%%%%%%%%%%%
2418 \expandafter\twoCH@@R\member//%
2419  \set@fusionadd@threeh
2420 \fi\fi\fi\fi\fi%

2421 }%

The proceduce of setting hetero atoms on the vertices of a three-membered ring is based on the macro \set@hetaromh@sixh, where the positions 4, 6, and 2 of a horizontal six-membered ring are used in place of the positions 1, 2, and 3 of the three-membered ring.

2422 % %%%%%%%%%%%%%%%%%%%%%%%%
2423 % % setting hetero atoms %
2424 % %%%%%%%%%%%%%%%%%%%%%%%%
2425 \iniflag
2426 %\put(-235,103){\set@hetatom@sixh{#3}{3}{3}{5}{0}%
2427 \put(-215,103){\set@hetatom@sixh{#3}{3}{3}{5}{0}%
2428 \if@clip \global\@cliptrue\fi}%subst 1 <--six h 4
2429 \put(-103,29){\set@hetatom@sixh{#3}{-1}{1}{3}{0}%
2430 \if@bclip \global\@bcliptrue\fi}%subst 3 <--six h 2
2431 \put(-103,171){\set@hetatom@sixh{#3}{4}{5}{7}{0}%
2432 \if@fclip \global\@fcliptrue\fi}%subst 2 <--six h 6
2433 % %%%%%%%%%%%%%%%%%%%%%%%%
2434 % % setting substituents %
2435 % %%%%%%%%%%%%%%%%%%%%%%%%
2436 \put(-235,103){\setsixringh{#4}{3}{3}{5}{0}}%subst 1
2437 \put(-103,29){\setsixringh{#4}{-1}{1}{3}{0}}%subst 3
2438 \put(-103,171){\setsixringh{#4}{4}{5}{7}{0}}%subst 2
2439 \end{picture}%
2440 \iniatom\iniflag}%     %end of \threeheteroh macro

The macro \set@fusionadd@threeh is an inner command contained in the definition of \threeheteroh etc., where the macro is used for setting an additive or a fused ring at each bond (designated by \@@tmpa). The fused ring is typeset

  by the inner command \set@fusion@threeh.
\set@fusionadd@threeh
2441 \def\set@fusionadd@threeh{%
2442  \if\@@tmpa 0\relax%
2443  \putratom{35}{85}{\scriptsize\@@tmpb}%      % right type
2444  \else\if\@@tmpa 1\relax%
2445  \putratom{80}{85}{\scriptsize\@@tmpb}%      % right type
2446  \else\if\@@tmpa 2\relax%
2447  \putratom{15}{50}{\scriptsize\@@tmpb}%     % right type
2448  \else\if\@@tmpa 3\relax%
2449  \putratom{15}{120}{\scriptsize\@@tmpb}%    % right type
2450  \else\if\@@tmpa 4\relax%
2451  \putratom{180}{130}{\scriptsize\@@tmpb}%      % right type
2452  \else\if\@@tmpa 5\relax%

2453  \putratom{20}{-60}{\scriptsize\@@tmpb}%      % right type
2454  \else\if\@@tmpa 6\relax%
2455  \putratom{20}{230}{\scriptsize\@@tmpb}%    % right type
2456  \else
2457 % %%%%%%%%%%%%%%%%%%%%%
2458 % % inner bond fusion %
2459 % %%%%%%%%%%%%%%%%%%%%%
2460  \set@fusion@threeh
2461  \fi\fi\fi\fi\fi\fi\fi%

2462 }%

The inner command \set@fusion@threeh is used for typesetting a fused ring at each bond represented by \@@tmpa. Warnings concerning mismatched ringfusions are based on the command \FuseWarning.

\set@fusion@threeh
2463 \def\set@fusion@threeh{%
2464 % %%%%%%%%%%%%%%%%%%%%%
2465 % % inner bond fusion %
2466 % %%%%%%%%%%%%%%%%%%%%%
2467 \if\@@tmpa b\relax%
2468  \putlratom{0}{0}{\@@tmpb}%    % bond fused
2469  \FuseWarning{0}{-200}%
2470  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}%
2471  \else\if\@@tmpa B\relax%
2472  \putlratom{0}{200}{\@@tmpb}%      % bond fused
2473  \FuseWarning{0}{200}%
2474  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}%
2475  \else\if\@@tmpa a\relax%
2476  \putlratom{171}{103}{\@@tmpb}%    % bond fused
2477  \FuseWarning{171}{103}%
2478  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}%
2479  \else\if\@@tmpa A\relax%
2480  \putlratom{0}{0}{\@@tmpb}%    % bond fused
2481  \FuseWarning{-171}{-103}%
2482  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}%
2483  \else\if\@@tmpa c\relax%
2484  \putlratom{0}{200}{\@@tmpb}%      % bond fused
2485  \FuseWarning{-171}{103}%
2486  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c}%
2487  \else\if\@@tmpa C\relax%
2488  \putlratom{171}{103}{\@@tmpb}%    % bond fused
2489  \FuseWarning{171}{-103}%
2490  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C}%
2491 \fi\fi\fi\fi\fi\fi%
2492 }% end of the macro \set@fusion@threeh

11.2 Inverse horizontal type

The macro \threeheterohi typesets a three-membered ring. The following numbering is adopted in this macro.

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

   The macro \threeheterohi has two arguments ATOMLIST and SUBSLIST as

well as an optional argument BONDLIST. Two optional arguments SKBONDLIST and OMIT are added to treat stereochemical information or other bond situations.

   \threeheterohi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[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 ‘c’ and a uppercase character ‘A’ or ‘B’.

The BONDLIST argument contains one character selected from a to c, each of which indicates the presence of an inner (endcyclic) double bond on the corresponding position. The option ‘n+’ (n = 1 to 3) represents a plus charge on a hetero atom at the n-position. The option ‘n+’ (n = 4 to 6) represents a plus charge outside the ring. The option ‘0+’ typesets a plus charge at the center of the ring.

     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 OMIT represents one or more bonds to be omitted. The omitted edges may be regarded as both fused and non-fused positions.

OMIT:  one or more bonds omitted (a to c; see BONDLIST)

         e.g.
          \threeheterohi{1==N}{1==Cl;2==F}
          \threeheterohi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
          \threeheterohi{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl}

\threeheterohi
\@three@heterohi
\@three@@heterohi
\@threeheterohi

2493 \def\threeheterohi{\@ifnextchar({\@three@heterohi(@}{\@three@heterohi(@)}}
2494 \def\@three@heterohi(#1){\@ifnextchar[{\@three@@heterohi(#1)[@}%
2495 {\@three@@heterohi(#1)[@]}}
2496 \def\@three@@heterohi(#1)[#2]#3#4{\@ifnextchar[%
2497 {\@threeheterohi(#1)[#2]{#3}{#4}[@}%
2498 {\@threeheterohi(#1)[#2]{#3}{#4}[@]}}
2499 \def\@threeheterohi(#1)[#2]#3#4[#5]{%

The procedure of adusting substitution positions is based on a horizontal sixmembered ring, in which the positions 1 (aaa), 5 (eee), 3 (ccc) are used in place of the positions 1, 2, and 3 of the three-membered ring.

2500 % %%%%%%%%%%%%%%%%%%%%%%%%%%
2501 % % treatment of atom list %
2502 % %%%%%%%%%%%%%%%%%%%%%%%%%%
2503 \iniatom\iniflag%initialize
2504 \test@vertix@sixv{#3}{a}{e}{c}{@}{@}{@}%tentative use for six-h
2505 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2506 % % adustment of subs positions %
2507 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2508 \@reset@ylsw%
2509 \ylpositionh{#4}{0}{0}{2}{0}%subst 1
2510 \if@ylsw \ifx\@@ylii\empty
2511 \def\@@ylii{171}\def\@@yli{-103}\fi
2512 \else
2513 \ylpositionh{#4}{0}{2}{4}{0}%subst 3

2514 \fi

2515 \if@ylsw \ifx\@@ylii\empty
2516 \def\@@ylii{303}\def\@@yli{-29}\fi
2517 \else
2518 \ylpositionh{#4}{3}{4}{6}{0}%subst 2

2519 \fi

2520 \if@ylsw \ifx\@@ylii\empty
2521 \def\@@ylii{303}\def\@@yli{-171}\fi

2522 \fi

2523 \if@ylsw
2524 \yl@shiftii=\@ylii
2525 \yl@shifti=\@yli
2526 \advance\yl@shiftii\@@ylii
2527 \advance\yl@shifti\@@yli
2528 \advance\yl@shiftii\yl@xdiff

2529 \advance\yl@shifti\yl@ydiff
2530 \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
2531 \reset@yl@xydiff%1999/1/6 by S. Fujita
2532 \else
2533 \begin{picture}(580,700)(-400,-240)%
2534 \iforigpt \put(-400,-240){\circle*{50}}%
2535  \put(0,0){\circle{50}}%
2536 \typeout{command `threeheterohi' origin: %
2537  (0,0) ---> (400,240)}\fi%

2538 \fi

The procedures of setting skeletal and inner bonds are based on a vertical sixmembered ring, where the bonds d, b, and f are used in place of the bonds a, b, and c.

2539 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%
2540 % % retreatment of atom list %
2541 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%
2542 \iniatom\iniflag%initialize
2543 \test@vertix@sixv{#3}{e}{c}{a}{@}{@}{@}%
2544 \test@vertix@sixv{#3}{f}{d}{b}{@}{@}{@}%
2545 % %%%%%%%%%%%%%%%%%%
2546 % % outer skeleton %
2547 % %%%%%%%%%%%%%%%%%%
2548 {\resetbdsw%
2549 \@bond@@omit{#5}%
2550 \put(0,0){\set@skel@bond{#1}{a}{d}}%
2551  % bond between 1 and 2 \@aaa -> \skbondd etc
2552 \put(-171,-103){\set@skel@bond{#1}{b}{b}}%
2553  % bond between 2 and 3 \@bbb -> \skbondb etc
2554 \put(0,-200){\set@skel@bond{#1}{c}{f}}%
2555  % bond between 3 and 1 \@ccc -> \skbondf etc

2556 }%

2557 % %%%%%%%%%%%%%%%%%%%%%
2558 % % inner double bond %
2559 % %%%%%%%%%%%%%%%%%%%%%
2560 \@tfor\member:=#2\do{%
2561 \if\member r\relax%
2562 \else\if\member a\relax\put(0,0){\bondd}%
2563 \else\if\member b\relax\put(-171,-103){\bondb}%
2564 \else\if\member c\relax\put(0,-200){\bondf}%
2565 \else\if\member A\relax% aromatic circle
2566 \put(70,103){\circle{100}}%               %circle
2567 \else
2568 % %%%%%%%%%%%%%%%%%%%%%%%%%
2569 % % inner bond attachment %
2570 % %%%%%%%%%%%%%%%%%%%%%%%%%
2571 \expandafter\twoCH@@R\member//%
2572  \set@fusionadd@threehi
2573 \fi\fi\fi\fi\fi%

2574 }%

The proceduce of setting hetero atoms on the vertices of a three-membered ring is based on the macro \set@hetaromh@sixh, where the positions 1, 5, and 3 of a horizontal six-membered ring are used in place of the positions 1, 2, and 3 of the three-membered ring.

2575 % %%%%%%%%%%%%%%%%%%%%%%%%
2576 % % setting hetero atoms %
2577 % %%%%%%%%%%%%%%%%%%%%%%%%
2578 \iniflag
2579 \put(-171,103){\set@hetatom@sixh{#3}{0}{0}{2}{0}%
2580 \if@aclip \global\@acliptrue\fi}%subst 1 <--six h 1
2581 \put(-303,29){\set@hetatom@sixh{#3}{0}{2}{4}{0}%
2582 \if@cclip \global\@ccliptrue\fi}%subst 3 <--six h 3
2583 \put(-303,171){\set@hetatom@sixh{#3}{3}{4}{6}{0}%
2584 \if@eclip \global\@ecliptrue\fi}%subst 2 <--six h 5
2585 % %%%%%%%%%%%%%%%%%%%%%%%%
2586 % % setting substituents %
2587 % %%%%%%%%%%%%%%%%%%%%%%%%
2588 \put(-171,103){\setsixringh{#4}{0}{0}{2}{0}}%subst 1
2589 \put(-303,29){\setsixringh{#4}{0}{2}{4}{0}}%subst 3
2590 \put(-303,171){\setsixringh{#4}{3}{4}{6}{0}}%subst 2
2591 \end{picture}%
2592 \iniatom\iniflag}%     %end of \threeheterohi macro

The macro \set@fusionadd@threehi is an inner command contained in the definition of \threeheterohi etc., where the macro is used for setting an additive or a fused ring at each bond (designated by \@@tmpa). The fused ring is typeset

  by the inner command \set@fusion@threehi.
\set@fusionadd@threeh
2593 \def\set@fusionadd@threehi{%
2594  \if\@@tmpa 0\relax%
2595  \putlatom{-35}{85}{\scriptsize\@@tmpb}%      % left type
2596  \else\if\@@tmpa 1\relax%
2597  \putlatom{-80}{85}{\scriptsize\@@tmpb}%      % left type
2598  \else\if\@@tmpa 2\relax%
2599  \putlatom{-15}{50}{\scriptsize\@@tmpb}%     % left type
2600  \else\if\@@tmpa 3\relax%
2601  \putlatom{-15}{120}{\scriptsize\@@tmpb}%    % left type
2602  \else\if\@@tmpa 4\relax%
2603  \putlatom{-180}{130}{\scriptsize\@@tmpb}%      % left type
2604  \else\if\@@tmpa 5\relax%
2605  \putlatom{-20}{-60}{\scriptsize\@@tmpb}%      % left type
2606  \else\if\@@tmpa 6\relax%
2607  \putlatom{-20}{230}{\scriptsize\@@tmpb}%    % left type
2608  \else
2609 % %%%%%%%%%%%%%%%%%%%%%
2610 % % inner bond fusion %

2611 % %%%%%%%%%%%%%%%%%%%%%
2612  \set@fusion@threehi
2613  \fi\fi\fi\fi\fi\fi\fi%

2614 }%

The inner command \set@fusion@threehi is used for typesetting a fused ring at each bond represented by \@@tmpa. Warnings concerning mismatched ring-fusions are based on the command \FuseWarning.

\set@fusion@threehi
2615 \def\set@fusion@threehi{%
2616 % %%%%%%%%%%%%%%%%%%%%%
2617 % % inner bond fusion %
2618 % %%%%%%%%%%%%%%%%%%%%%
2619 \if\@@tmpa b\relax%
2620  \putlratom{0}{0}{\@@tmpb}%    % bond fused
2621  \FuseWarning{0}{-200}%
2622  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}%
2623  \else\if\@@tmpa B\relax%
2624  \putlratom{0}{200}{\@@tmpb}%      % bond fused
2625  \FuseWarning{0}{200}%
2626  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}%
2627  \else\if\@@tmpa a\relax%
2628  \putlratom{-171}{103}{\@@tmpb}%    % bond fused
2629  \FuseWarning{-171}{103}%
2630  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}%
2631  \else\if\@@tmpa A\relax%
2632  \putlratom{0}{0}{\@@tmpb}%    % bond fused
2633  \FuseWarning{171}{-103}%
2634  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}%
2635  \else\if\@@tmpa c\relax%
2636  \putlratom{0}{200}{\@@tmpb}%      % bond fused
2637  \FuseWarning{171}{103}%
2638  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c}%
2639  \else\if\@@tmpa C\relax%
2640  \putlratom{-171}{103}{\@@tmpb}%    % bond fused
2641  \FuseWarning{-171}{-103}%
2642  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C}%
2643 \fi\fi\fi\fi\fi\fi%
2644 }% end of the macro \set@fusion@threehi

2645 ⟨/hetaromh⟩