Heterocycles of horizontal type by hetaromh.sty (v4.03b) of XΥMTEX

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

2006/9/5

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 4.03b}
3 \typeout{       -- Released September 5, 2006 by Shinsaku Fujita}
4 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5 \def\j@urnalname{hetaromh}
6 \def\versi@ndate{September 5, 2006}
7 \def\versi@nno{ver4.03b}
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\gggA{}\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@Line(42,6)(3,5){78}%           %double bond 1-2
43 \else%
44  \Put@Line(42,6)(3,5){62}%           %double bond 1-2
45 \fi%
46 \else%
47 \ifx\bbb\empty%
48  \Put@Line(57,36)(3,5){62}%          %double bond 1-2
49 \else%
50  \Put@Line(57,36)(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@Line(42,-6)(3,-5){78}%          %double bond 1-6
57 \else%
58  \Put@Line(42,-6)(3,-5){62}%         %double bond 1-6
59 \fi%
60 \else%
61 \ifx\fff\empty%
62  \Put@Line(57,-36)(3,-5){62}%        %double bond 1-6
63 \else%
64  \Put@Line(57,-36)(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@Line(129,138)(1,0){148}%        %double bond 2-3
71 \else%
72  \Put@Line(129,138)(1,0){134}%        %double bond 3-2
73 \fi%
74 \else%
75 \ifx\ccc\empty%
76  \Put@Line(143,138)(1,0){134}%        %double bond 3-2
77 \else%
78  \Put@Line(143,138)(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@Line(364,6)(-3,5){78}%          %double bond 4-3
 85 \else%
 86  \Put@Line(364,6)(-3,5){62}%          %double bond 4-3
 87 \fi%
 88 \else%
 89 \ifx\ccc\empty%
 90  \Put@Line(349,36)(-3,5){62}%         %double bond 4-3
 91 \else%
 92  \Put@Line(349,36)(-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@Line(364,-6)(-3,-5){78}%        %double bond 4-5
 99 \else%
100  \Put@Line(364,-6)(-3,-5){62}%        %double bond 4-5
101 \fi%
102 \else%
103 \ifx\eee\empty%
104  \Put@Line(349,-36)(-3,-5){62}%       %double bond 4-5
105 \else%
106  \Put@Line(349,-36)(-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@Line(129,-138)(1,0){148}%       %double bond 6-5
113 \else%
114  \Put@Line(129,-138)(1,0){134}%       %double bond 5-6
115 \fi%
116 \else%
117 \ifx\eee\empty%
118  \Put@Line(143,-138)(1,0){134}%       %double bond 5-6
119 \else%
120  \Put@Line(143,-138)(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@Line(136,-138)(0,1){277}%      %double bond 4-3
127  \else%
128  \Put@Line(136,-138)(0,1){258}%      %double bond 4-3
129  \fi%
130 \else%
131  \ifx\bbb\empty%
132  \Put@Line(136,-120)(0,1){258}%      %double bond 4-3
133  \else
134  \Put@Line(136,-120)(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@Line(270,-138)(0,0){277}%      %double bond 4-3
141  \else%
142  \Put@Line(270,-138)(0,1){258}%      %double bond 4-3
143  \fi%
144 \else%
145  \ifx\ccc\empty%
146  \Put@Line(270,-120)(0,1){258}%      %double bond 4-3
147  \else%
148  \Put@Line(270,-120)(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@Line(0,0)(3,5){103}%           %bond 1-2
155  \else%
156  \Put@Line(0,0)(3,5){79}%            %bond 1-2
157  \fi%
158 \else%
159  \ifx\bbb\empty%
160  \Put@Line(24,40)(3,5){79}%          %bond 1-2
161  \else%
162  \Put@Line(24,40)(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@Line(0,0)(3,-5){103}%          %bond 1-6
169  \else%
170  \Put@Line(0,0)(3,-5){79}%           %bond 1-6
171  \fi%
172 \else%
173  \ifx\fff\empty%
174  \Put@Line(24,-40)(3,-5){79}%        %bond 1-6
175  \else%
176  \Put@Line(24,-40)(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@Line(406,0)(-3,5){103}%         %bond 4-3
183  \else%
184  \Put@Line(406,0)(-3,5){79}%         %bond 4-3
185  \fi%
186 \else%
187  \ifx\ccc\empty%
188  \Put@Line(382,40)(-3,5){79}%        %bond 4-3

189  \else%
190  \Put@Line(382,40)(-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@Line(406,0)(-3,-5){103}%       %bond 4-5
197  \else%
198  \Put@Line(406,0)(-3,-5){79}%        %bond 4-5
199  \fi%
200 \else%
201  \ifx\eee\empty%
202  \Put@Line(382,-40)(-3,-5){79}%      %bond 4-5
203  \else%
204  \Put@Line(382,-40)(-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@Line(103,171)(1,0){200}%       %bond 2-3
211  \else%
212  \Put@Line(103,171)(1,0){160}%       %bond 3-2
213  \fi%
214 \else%
215  \ifx\ccc\empty%
216  \Put@Line(143,171)(1,0){160}%       %bond 3-2
217  \else%
218  \Put@Line(143,171)(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@Line(103,-171)(1,0){200}%      %bond 6-5
225  \else%
226  \Put@Line(143,-171)(1,0){160}%      %bond 5-6
227  \fi%
228 \else%
229  \ifx\fff\empty%

230  \Put@Line(103,-171)(1,0){160}%      %bond 5-6
231  \else%
232  \Put@Line(143,-171)(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@Line(103,-171)(0,1){342}%      %bond 4-3
239  \else%
240  \Put@Line(103,-171)(0,1){300}%      %bond 4-3
241  \fi%
242 \else%
243  \ifx\bbb\empty%
244  \Put@Line(103,171)(0,-1){300}%      %bond 4-3
245  \else%
246  \Put@Line(103,-129)(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@Line(303,-171)(0,1){342}%      %bond 4-3
253  \else%
254  \Put@Line(303,-171)(0,1){300}%      %bond 4-3
255  \fi%
256 \else%
257  \ifx\ccc\empty%
258  \Put@Line(303,171)(0,-1){300}%      %bond 4-3
259  \else%
260  \Put@Line(303,-129)(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  \dotorline(0,0)(3,5){103}/(0,0)(103,171)%
267  \else%
268  \dotorline(0,0)(3,5){79}/(0,0)(79,132)%
269  \fi%
270 \else%
271  \ifx\bbb\empty%
272  \dotorline(24,40)(3,5){79}/(24,40)(103,171)%
273  \else%
274  \dotorline(24,40)(3,5){62}/(24,40)(86,143)%
275  \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.

276 %bond between 3 and 2
277 \def\dothskbondb{%
278 \ifx\bbb\empty%
279  \ifx\ccc\empty%
280  \dotorline(103,171)(1,0){200}/(103,171)(303,171)%
281  \else%
282  \dotorline(103,171)(1,0){160}/(103,171)(263,171)%
283  \fi%
284 \else%
285  \ifx\ccc\empty%
286  \dotorline(143,171)(1,0){160}/(143,171)(303,171)%
287  \else%
288  \dotorline(143,171)(1,0){120}/(143,171)(263,171)%
289  \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.

290 %bond between 4 and 3
291 \def\dothskbondc{%
292 \ifx\ddd\empty%
293  \ifx\ccc\empty%
294  \dotorline(406,0)(-3,5){103}/(406,0)(303,171)%
295  \else%
296  \dotorline(406,0)(-3,5){79}/(406,0)(327,132)%
297  \fi%
298 \else%
299  \ifx\ccc\empty%
300  \dotorline(382,40)(-3,5){79}/(382,40)(303,171)%
301  \else%
302  \dotorline(382,40)(-3,5){62}/(382,40)(320,143)%
303  \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.

304 %bond between 4 and 5
305 \def\dothskbondd{%
306 \ifx\ddd\empty%
307  \ifx\eee\empty%
308  \dotorline(406,0)(-3,-5){103}/(406,0)(303,-171)%
309  \else%
310  \dotorline(406,0)(-3,-5){79}/(406,0)(327,-132)%
311  \fi%
312 \else%
313  \ifx\eee\empty%
314  \dotorline(382,-40)(-3,-5){79}/(382,-40)(303,-171)%
315  \else%
316  \dotorline(382,-40)(-3,-5){62}/(382,-40)(320,-143)%
317  \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.

318 %bond between 5 and 6
319 \def\dothskbonde{%
320 \ifx\eee\empty%
321  \ifx\fff\empty%
322  \dotorline(103,-171)(1,0){200}/(103,-171)(303,-171)%
323  \else%
324  \dotorline(143,-171)(1,0){160}/(143,-171)(303,-171)%
325  \fi%
326 \else%
327  \ifx\fff\empty%
328  \dotorline(103,-171)(1,0){160}/(103,-171)(263,-171)%
329  \else%
330  \dotorline(143,-171)(1,0){120}/(143,-171)(263,-171)%
331  \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.

332 %bond between 1 and 6
333 \def\dothskbondf{%
334 \ifx\aaa\empty%
335  \ifx\fff\empty
336  \dotorline(0,0)(3,-5){103}/(0,0)(103,-171)%
337  \else%
338  \dotorline(0,0)(3,-5){79}/(0,0)(79,-131)%
339  \fi%
340 \else%
341  \ifx\fff\empty%

342  \dotorline(24,-40)(3,-5){79}/(24,-40)(103,-171)%
343  \else%
344  \dotorline(24,-40)(3,-5){62}/(24,-40)(86,-143)%
345  \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.

346 %vertical bond for five-membered rings
347 \def\dothskbondvert{%
348 \ifx\fff\empty%
349  \ifx\bbb\empty%
350  \dotorline(103,-171)(0,1){342}/(103,-171)(103,171)%
351  \else%
352  \dotorline(103,-171)(0,1){300}/(103,-171)(103,129)%
353  \fi%
354 \else%
355  \ifx\bbb\empty%
356  \dotorline(103,171)(0,-1){300}/(103,171)(103,-129)%
357  \else%
358  \dotorline(103,-129)(0,1){258}/(103,-129)(103,129)%
359  \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.

360 %vertical bond for five-membered rings (inverse type)
361 \def\dothskbondverti{%
362 \ifx\eee\empty%
363  \ifx\ccc\empty%
364  \dotorline(303,-171)(0,1){342}/(303,-171)(303,171)%
365  \else%
366  \dotorline(303,-171)(0,1){300}/(303,-171)(303,129)%
367  \fi%
368 \else%
369  \ifx\ccc\empty%
370  \dotorline(303,171)(0,-1){300}/(303,171)(303,-129)%
371  \else%
372  \dotorline(303,-129)(0,1){258}/(303,-129)(303,129)%
373  \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
374 \def\set@skel@bondh#1#2#3{%
375 \expandafter\if\csname @#2#2#2\endcsname #2\relax%OK
376  % \if\@aaa #2\relax%OK
377 \@skbondlistfalse
378 \@tfor\member:=#1\do{%
379 \expandafter\twoCH@@R\member//%

380  \if\@@tmpa #2\relax%
381  \if\@@tmpb A\relax%
382  \@skbondlisttrue
383  \expandafter\csname dothskbond#3\endcsname% \dothskbonda etc.
384 %        \@skbondlisttrue
385  \else\if\@@tmpb B\relax%
386  \@skbondlisttrue
387  {\thicklines
388  \expandafter\csname hskbond#3\endcsname% \hskbonda etc.

389 }%

390 %        \@skbondlisttrue
391  \fi\fi
392  \fi%

393 }%

394 \if@skbondlist\else
395  {\thinlines
396  \expandafter\csname hskbond#3\endcsname% \hskbonda etc.

397 }%

398 \fi%
399 \else
400  \expandafter\ifx\csname @#2#2#2\endcsname \empty\relax%
401  %    \ifx\@aaa\empty\relax
402  \@tfor\member:=#1\do{%
403  \expandafter\twoCH@@R\member//%
404  \if\@@tmpa #2\relax%
405  \XyMTeXWarning{Unavailable bond `#2' in SKBONDLIST}\fi

406 }%

407 \fi\fi
408 }% 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

409 \def\sixheteroh{\@ifnextchar({\@six@heteroh(@}{\@six@heteroh(@)}}
410 \def\@six@heteroh(#1){\@ifnextchar[{\@six@@heteroh(#1)[@}%
411 {\@six@@heteroh(#1)[@]}}
412 \def\@six@@heteroh(#1)[#2]#3#4{\@ifnextchar[%
413 {\@sixheteroh(#1)[#2]{#3}{#4}[@}%
414 {\@sixheteroh(#1)[#2]{#3}{#4}[@]}}
415 \def\@sixheteroh(#1)[#2]#3#4[#5]{%

416 % %%%%%%%%%%%%%%%%%%%%%%%%%%
417 % % treatment of atom list %
418 % %%%%%%%%%%%%%%%%%%%%%%%%%%
419 \iniatom\iniflag%initialize
420 \test@vrtx@sixh{#3}%
421 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
422 % % adjustment of attached positions %
423 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
424 \@reset@ylsw%
425 \ylpositionh{#4}{0}{0}{7}{0}%
426 \begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/%
427 (880,800)(-240,-400){sixheteroh}%2002/4/30 by S. Fujita
428 % %%%%%%%%%%%%%%%%%%
429 % % outer skeleton %
430 % %%%%%%%%%%%%%%%%%%

431 {%

432 \resetbdsw%
433 \@bond@@omit{#5}%
434 \set@skel@bondh{#1}{a}{a}% bond between 1 and 2 \@aaa -> \hskbonda etc
435 \set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc
436 \set@skel@bondh{#1}{c}{c}% bond between 3 and 4 \@ccc -> \hskbondc etc
437 \set@skel@bondh{#1}{d}{d}% bond between 4 and 5 \@ddd -> \hskbondd etc
438 \set@skel@bondh{#1}{e}{e}% bond between 5 and 6 \@eee -> \hskbonde etc
439 \set@skel@bondh{#1}{f}{f}% bond between 6 and 1 \@fff -> \hskbondf etc

440 }%

441 % %%%%%%%%%%%%%%%%%%%%%
442 % % inner double bond %
443 % %%%%%%%%%%%%%%%%%%%%%
444 \@tfor\member:=#2\do{%
445 \if\member r\relax \hbondd\hbondf\hbondb%
446 \else \if\member l\relax \hbonda\hbondc\hbonde%
447 \else \if\member a\relax \hbonda%
448 \else \if\member b\relax \hbondb%
449 \else \if\member c\relax \hbondc%
450 \else \if\member d\relax \hbondd%
451 \else \if\member e\relax \hbonde%
452 \else \if\member f\relax \hbondf%
453 \else \if\member A%left aromatic circle
454 %  \Put@oCircle(0,203){240}%                %circle
455 \Put@oCircle(203,0){240}%                %circle
456 % %%%%%%%%%%%%%%%%%%%%%%%%%
457 % % inner bond attachment %
458 % %%%%%%%%%%%%%%%%%%%%%%%%%
459 \else \expandafter\twoCH@@R\member//%
460  \set@fusionadd@sixh
461 \fi\fi\fi\fi\fi\fi\fi\fi\fi}%
462 % %%%%%%%%%%%%%%%%%%%%%%%%
463 % % setting hetero atoms %
464 % %%%%%%%%%%%%%%%%%%%%%%%%
465 \set@hetatom@sixh{#3}{0}{0}{7}{0}%    %atom 1--6%
466 % %%%%%%%%%%%%%%%%%%%%%%%%
467 % % setting substituents %
468 % %%%%%%%%%%%%%%%%%%%%%%%%

469 \setsixringh{#4}{0}{0}{7}{0}%              %subst 1--6
470 \end{ShiftPicEnv}%
471 \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
472 \def\test@vrtx@sixh#1{%
473 \@forsemicol\member:=#1\do{%
474 \ifx\member\empty\else
475 \expandafter\@m@mb@r\member;\relax%
476 \expandafter\twoch@r\@membera{}%
477 \ifcase\@tmpa%
478 \or% \xdef\aaa{\@memberb}%
479 \if\@tmpb s\relax\def\aaa{}\else\def\aaa{@}\fi
480 \or% \xdef\bbb{\@memberb}%
481 \if\@tmpb s\relax\def\bbb{}\else\def\bbb{@}\fi
482 \or% \xdef\ccc{\@memberb}%
483 \if\@tmpb s\relax\def\ccc{}\else\def\ccc{@}\fi
484 \or% \xdef\ddd{\@memberb}%
485 \if\@tmpb s\relax\def\ddd{}\else\def\ddd{@}\fi
486 \or% \xdef\eee{\@memberb}%
487 \if\@tmpb s\relax\def\eee{}\else\def\eee{@}\fi
488 \or% \xdef\fff{\@memberb}%
489 \if\@tmpb s\relax\def\fff{}\else\def\fff{@}\fi
490 \fi\fi}%
491 }% 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

492 \def\sixheterohi{\@ifnextchar({\@six@heterohi(@}{\@six@heterohi(@)}}
493 \def\@six@heterohi(#1){\@ifnextchar[{\@six@@heterohi(#1)[@}%
494 {\@six@@heterohi(#1)[@]}}
495 \def\@six@@heterohi(#1)[#2]#3#4{\@ifnextchar[%
496 {\@sixheterohi(#1)[#2]{#3}{#4}[@}%
497 {\@sixheterohi(#1)[#2]{#3}{#4}[@]}}
498 \def\@sixheterohi(#1)[#2]#3#4[#5]{%

499 % %%%%%%%%%%%%%%%%%%%%%%%%%%
500 % % treatment of atom list %
501 % %%%%%%%%%%%%%%%%%%%%%%%%%%
502 \iniatom\iniflag%initialize
503 \test@vrtx@sixhi{#3}%
504 \@reset@ylsw%
505 \ylpositionh{#4}{5}{0}{5}{-1}%               %subst 1--4
506 \ylpositionh{#4}{11}{4}{7}{-1}%              %subst 5 and 6
507 \begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/%
508 (880,800)(-240,-400){sixheterohi}%2002/4/30 by S. Fujita
509 % %%%%%%%%%%%%%%%%%%
510 % % outer skeleton %
511 % %%%%%%%%%%%%%%%%%%
512 {\resetbdsw%
513 \@bond@@omit{#5}%
514 \set@skel@bondh{#1}{a}{c}% bond between 1 and 2 \@aaa -> \hskbondc etc
515 \set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc
516 \set@skel@bondh{#1}{c}{a}% bond between 3 and 4 \@ccc -> \hskbonda etc
517 \set@skel@bondh{#1}{d}{f}% bond between 4 and 5 \@ddd -> \hskbondf etc
518 \set@skel@bondh{#1}{e}{e}% bond between 5 and 6 \@eee -> \hskbonde etc
519 \set@skel@bondh{#1}{f}{d}% bond between 6 and 1 \@fff -> \hskbondd etc

520 }%

521 % %%%%%%%%%%%%%%%%%%%%%
522 % % inner double bond %
523 % %%%%%%%%%%%%%%%%%%%%%
524 \@tfor\member:=#2\do{%
525 \if\member r\relax \hbondd \hbondf \hbondb%
526 \else \if\member l\relax \hbonda \hbondc \hbonde%
527 \else \if\member a\relax \hbondc%
528 \else \if\member b\relax \hbondb%
529 \else \if\member c\relax \hbonda%
530 \else \if\member d\relax \hbondf%
531 \else \if\member e\relax \hbonde%
532 \else \if\member f\relax \hbondd%
533 \else \if\member A%left aromatic circle
534 %  \Put@oCircle(0,203){240}%               %circle
535 \Put@oCircle(203,0){240}%               %circle
536 % %%%%%%%%%%%%%%%%%%%%%%%%%
537 % % inner bond attachment %
538 % %%%%%%%%%%%%%%%%%%%%%%%%%
539 \else \expandafter\twoCH@@R\member//%
540  \set@fusionadd@sixhi
541 \fi\fi\fi\fi\fi\fi\fi\fi\fi}%
542 % %%%%%%%%%%%%%%%%%%%%%%%%
543 % % setting hetero atoms %
544 % %%%%%%%%%%%%%%%%%%%%%%%%
545 \set@hetatom@sixh{#3}{5}{0}{5}{-1}%               %subst 1--4
546 \set@hetatom@sixh{#3}{11}{4}{7}{-1}%              %subst 5 and 6
547 % %%%%%%%%%%%%%%%%%%%%%%%%
548 % % setting substituents %
549 % %%%%%%%%%%%%%%%%%%%%%%%%
550 \setsixringh{#4}{5}{0}{5}{-1}%               %subst 1--4
551 \setsixringh{#4}{11}{4}{7}{-1}%              %subst 5 and 6

552 \end{ShiftPicEnv}%
553 \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
554 \def\test@vrtx@sixhi#1{%
555 \@forsemicol\member:=#1\do{%
556 \ifx\member\empty\else
557 \expandafter\@m@mb@r\member;\relax%
558 \expandafter\twoch@r\@membera{}%
559 \ifcase\@tmpa%
560 \or \if\@tmpb s\relax\def\ddd{}\else\def\ddd{@}\fi
561 \or \if\@tmpb s\relax\def\ccc{}\else\def\ccc{@}\fi
562 \or \if\@tmpb s\relax\def\bbb{}\else\def\bbb{@}\fi
563 \or \if\@tmpb s\relax\def\aaa{}\else\def\aaa{@}\fi
564 \or \if\@tmpb s\relax\def\fff{}\else\def\fff{@}\fi
565 \or \if\@tmpb s\relax\def\eee{}\else\def\eee{@}\fi
566 \fi\fi}%
567 }% 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
568 \def\pyridineh{\@ifnextchar[{\@pyridineh[@}{\@pyridineh[r]}}%
569 \def\@pyridineh[#1]#2{%
570 \iforigpt \typeout{command `pyridineh' %

571 is based on `sixheteroh'.}\fi%
572 \sixheteroh[#1]{1==N}{#2}}%end of \pyridineh macro
573 \def\pyridinehi{\@ifnextchar[{\@pyridinehi}{\@pyridinehi[r]}}%
574 \def\@pyridinehi[#1]#2{%
575 \iforigpt \typeout{command `pyridinehi' %
576 is based on `sixheterohi'.}\fi%
577 \sixheterohi[#1]{1==N}{#2}}% %end of \pyridinehi macro
\pyridazineh
578 \def\pyrazineh{\@ifnextchar[{\@pyrazineh[@}{\@pyrazineh[r]}}%
579 \def\@pyrazineh[#1]#2{%
580 \iforigpt \typeout{command `pyrazineh' %
581 is based on `sixheteroh'.}\fi%
582 \sixheteroh[#1]{1==N;4==N}{#2}}%end of \pyrazineh macro
\pyrimidineh
\pyrimidinehi
583 \def\pyrimidineh{%
584 \@ifnextchar[{\@pyrimidineh[@}{\@pyrimidineh[r]}}%
585 \def\@pyrimidineh[#1]#2{%
586 \iforigpt \typeout{command `pyrimidineh' %
587 is based on `sixheteroh'.}\fi%
588 \sixheteroh[#1]{1==N;3==N}{#2}}%
589 %end of \pyrimidineh macro
590 \def\pyrimidinehi{%
591 \@ifnextchar[{\@pyrimidinehi[@}{\@pyrimidinehi[r]}}%
592 \def\@pyrimidinehi[#1]#2{%
593 \iforigpt \typeout{command `pyrimidinehi' %
594 is based on `sixheterohi'.}\fi%
595 \sixheterohi[#1]{1==N;3==N}{#2}}%end of \pyrimidinehi macro
\pyridazineh
\pyridazinehi
596 \def\pyridazineh{\@ifnextchar[{\@pyridazineh[@}{\@pyridazineh[r]}}%
597 \def\@pyridazineh[#1]#2{%
598 \iforigpt \typeout{command `pyridazineh' %
599 is based on `sixheteroh'.}\fi%
600 \sixheteroh[#1]{1==N;2==N}{#2}}%
601 %end of \pyridazineh macro
602 \def\pyridazinehi{%
603 \@ifnextchar[{\@pyridazinehi}{\@pyridazinehi[r]}}%
604 \def\@pyridazinehi[#1]#2{%
605 \iforigpt \typeout{command `pyridazinehi' %
606 is based on `sixheterohi'.}\fi%
607 \sixheterohi[#1]{1==N;2==N}{#2}}%end of \pyridazinehi macro
\triazineh \triazinehi
608 \def\triazineh{\@ifnextchar[{\@triazineh[@}{\@triazineh[r]}}%
609 \def\@triazineh[#1]#2{%
610 \iforigpt \typeout{command `triazineh' %
611 is based on `sixheteroh'.}\fi%
612 \sixheteroh[#1]{1==N;3==N;5==N}{#2}}%end of \triazineh macro
613 \def\triazinehi{\@ifnextchar[{\@triazinehi[@}{\@triazinehi[r]}}%
614 \def\@triazinehi[#1]#2{%
615 \iforigpt \typeout{command `triazinehi' %
616 is based on `sixheterohi'.}\fi%
617 \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

618 \def\fiveheteroh{\@ifnextchar({\@five@heteroh(@}{\@five@heteroh(@)}}
619 \def\@five@heteroh(#1){\@ifnextchar[{\@five@@heteroh(#1)[@}%
620 {\@five@@heteroh(#1)[@]}}
621 \def\@five@@heteroh(#1)[#2]#3#4{\@ifnextchar[%
622 {\@fiveheteroh(#1)[#2]{#3}{#4}[@}%
623 {\@fiveheteroh(#1)[#2]{#3}{#4}[@]}}
624 \def\@fiveheteroh(#1)[#2]#3#4[#5]{%
625 \iniatom\iniflag%initialize
626 % %%%%%%%%%%%%%%%%%%%%%%%%%%
627 % % treatment of atom list %
628 % %%%%%%%%%%%%%%%%%%%%%%%%%%
629 \test@vrtx@fivehi{#3}%
630 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
631 % % adustment of subs positions %
632 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
633 \@reset@ylsw%
634 \ylpositionh{#4}{5}{1}{5}{-1}%   % for 1 to 3
635 \if@ylsw \ifx\@@ylii\empty
636 \def\@@ylii{0}\def\@@yli{0}\fi
637 \else
638 \ylpositionh{#4}{10}{4}{7}{-1}%  % for 4 to 5
639 \fi
640 \if@ylsw \ifx\@@ylii\empty
641 \def\@@ylii{0}\def\@@yli{0}\fi
642 \fi
643 \begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
644 (800,880)(-240,-400){fiveheteroh}%2002/4/30 by S. Fujita
645 % %%%%%%%%%%%%%%%%%%
646 % % outer skeleton %
647 % %%%%%%%%%%%%%%%%%%
648 {\resetbdsw%
649 \@bond@@omit{#5}%
650 \set@skel@bondh{#1}{a}{c}% bond between 1 and 2 \@aaa -> \skbondc etc
651 \set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc
652 \set@skel@longbond{#1}{c}{hskbondvert}%
653  % bond between 3 and 4 \@ccc -> \skbondhoriz etc
654 \set@skel@bondh{#1}{d}{e}% bond between 4 and 5 \@ddd -> \skbonde etc
655 \set@skel@bondh{#1}{e}{d}% bond between 5 and 1 \@eee -> \skbondd etc

656 }%

657 % %%%%%%%%%%%%%%%%%%%%%
658 % % inner double bond %
659 % %%%%%%%%%%%%%%%%%%%%%
660 \@tfor\member:=#2\do{%

661 \if\member r%
662 \else \if\member a\relax \hbondc%
663 \else \if\member b\relax \hbondb%
664 \else \if\member c\relax \hbondvert%
665 \else \if\member d\relax \hbonde%
666 \else \if\member e\relax \hbondd%
667 \else \if\member A%left aromatic circle
668 \Put@oCircle(233,0){180}%               %circle
669 \else
670  \expandafter\twoCH@@R\member//%
671  \set@fusionadd@fiveh
672 \fi\fi\fi\fi\fi\fi\fi}%
673 % %%%%%%%%%%%%%%%%%%%%%%%%
674 % % setting hetero atoms %
675 % %%%%%%%%%%%%%%%%%%%%%%%%
676 \Put@Direct(0,0){\set@hetatom@sixh{#3}{5}{1}{5}{-1}%
677 \storeclipinfo%added 2001/06/20 by S. Fujita
678 }%   % for 1 to 3
679 \developclipinfo%added 2001/06/20 by S. Fujita
680 \Put@Direct(0,0){\set@hetatom@sixh{#3}{10}{4}{7}{-1}%
681 \storeclipinfo%added 2001/06/20 by S. Fujita
682 }%  % for 4 to 5
683 \developclipinfo%added 2001/06/20 by S. Fujita
684 % %%%%%%%%%%%%%%%%%%%%%%%%
685 % % setting substituents %
686 % %%%%%%%%%%%%%%%%%%%%%%%%
687 \Put@Direct(0,0){\setsixringh{#4}{5}{1}{5}{-1}}%   % for 1 to 3
688 \Put@Direct(0,0){\setsixringh{#4}{10}{4}{7}{-1}}%  % for 4 to 5
689 \end{ShiftPicEnvB}%
690 \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
691 \def\test@vrtx@fivehi#1{%
692 \@forsemicol\member:=#1\do{%
693 \ifx\member\empty\else
694 \expandafter\@m@mb@r\member;\relax%
695 \expandafter\twoch@r\@membera{}%
696 \ifcase\@tmpa%
697 \or \if\@tmpb s\relax\def\ddd{}\else\def\ddd{@}\fi
698 \or \if\@tmpb s\relax\def\ccc{}\else\def\ccc{@}\fi
699 \or \if\@tmpb s\relax\def\bbb{}\else\def\bbb{@}\fi
700 \or \if\@tmpb s\relax\def\fff{}\else\def\fff{@}\fi
701 \or \if\@tmpb s\relax\def\eee{}\else\def\eee{@}\fi
702 \or \if\@tmpb s\relax\def\aaa{}\else\def\aaa{@}\fi% dummy
703 \fi\fi}%
704 }% 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)

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

705 \def\fiveheterohi{\@ifnextchar({\@five@heterohi(@}{\@five@heterohi(@)}}
706 \def\@five@heterohi(#1){\@ifnextchar[{\@five@@heterohi(#1)[@}%
707 {\@five@@heterohi(#1)[@]}}
708 \def\@five@@heterohi(#1)[#2]#3#4{\@ifnextchar[%
709 {\@fiveheterohi(#1)[#2]{#3}{#4}[@}%
710 {\@fiveheterohi(#1)[#2]{#3}{#4}[@]}}
711 \def\@fiveheterohi(#1)[#2]#3#4[#5]{%
712 \iniatom\iniflag%initialize
713 % %%%%%%%%%%%%%%%%%%%%%%%%%%
714 % % treatment of atom list %
715 % %%%%%%%%%%%%%%%%%%%%%%%%%%
716 \test@vertix@sixv{#3}{a}{b}{c}{e}{f}{d}%d--dummy
717 \@reset@ylsw%
718 \ylpositionh{#4}{0}{0}{4}{0}%              % for 1 to 3
719 \if@ylsw \ifx\@@ylii\empty
720 \def\@@ylii{0}\def\@@yli{0}\fi
721 \else
722 \ylpositionh{#4}{1}{4}{7}{0}%              % for 4 to 5
723 \fi
724 \if@ylsw \ifx\@@ylii\empty
725 \def\@@ylii{0}\def\@@yli{0}\fi
726 \fi
727 \begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
728 (800,880)(-240,-400){fiveheterohi}%2002/4/30 by S. Fujita
729 % %%%%%%%%%%%%%%%%%%
730 % % outer skeleton %
731 % %%%%%%%%%%%%%%%%%%
732 {\resetbdsw%
733 \@bond@@omit{#5}%
734 \set@skel@bondh{#1}{a}{a}% bond between 1 and 2 \@aaa -> \hskbonda etc
735 \set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc
736 \set@skel@longbond{#1}{c}{hskbondverti}%
737  % bond between 3 and 4 \@ccc -> \hskbondverti etc
738 \set@skel@bondh{#1}{d}{e}% bond between 4 and 5 \@ddd -> \hskbonde etc
739 \set@skel@bondh{#1}{e}{f}% bond between 5 and 6 \@eee -> \hskbondf etc

740 }%

741 % %%%%%%%%%%%%%%%%%%%%%
742 % % inner double bond %
743 % %%%%%%%%%%%%%%%%%%%%%
744 \@tfor\member:=#2\do{%
745 \if\member r%
746 \else \if\member a\relax \hbonda%
747 \else \if\member b\relax \hbondb%

748 \else \if\member c\relax \hbondverti%
749 \else \if\member d\relax \hbonde%
750 \else \if\member e\relax \hbondf%
751 \else \if\member A%left aromatic circle
752 \Put@oCircle(173,0){180}%               %circle
753 \else
754  \expandafter\twoCH@@R\member//%
755  \set@fusionadd@fivehi
756 \fi\fi\fi\fi\fi\fi\fi}%
757 % %%%%%%%%%%%%%%%%%%%%%%%%
758 % % setting hetero atoms %
759 % %%%%%%%%%%%%%%%%%%%%%%%%
760 \set@hetatom@sixh{#3}{0}{0}{4}{0}%              % for 1 to 3
761 \set@hetatom@sixh{#3}{1}{4}{7}{0}%              % for 4 to 5
762 % %%%%%%%%%%%%%%%%%%%%%%%%
763 % % setting substituents %
764 % %%%%%%%%%%%%%%%%%%%%%%%%
765 \setsixringh{#4}{0}{0}{4}{0}%              % for 1 to 3
766 \setsixringh{#4}{1}{4}{7}{0}%              % for 4 to 5
767 \end{ShiftPicEnvB}%
768 \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
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.
\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
769 \def\pyrroleh{\@ifnextchar[{\@pyrroleh[@}{\@pyrroleh[bd]}}%
770 \def\@pyrroleh[#1]#2{%
771 \iforigpt \typeout{command `pyrroleh' %
772 is based on `fiveheteroh'.}\fi%
773 \fiveheteroh[#1]{1==N}{#2}}%
774 \def\pyrazoleh{\@ifnextchar[{\@pyrazoleh[@}{\@pyrazoleh[bd]}}%

775 \def\@pyrazoleh[#1]#2{%
776 \iforigpt \typeout{command `pyrazoleh' %
777 is based on `fiveheteroh'.}\fi%
778 \fiveheteroh[#1]{1==N;2==N}{#2}}%
779 \def\imidazoleh{\@ifnextchar[{\@imidazoleh[@}{\@imidazoleh[bd]}}%
780 \def\@imidazoleh[#1]#2{%
781 \iforigpt \typeout{command `imidazoleh' %
782 is based on `fiveheteroh'.}\fi%
783 \fiveheteroh[#1]{1==N;3==N}{#2}}%
784 \def\isoxazoleh{\@ifnextchar[{\@isoxazoleh[@}{\@isoxazoleh[bd]}}%
785 \def\@isoxazoleh[#1]#2{%
786 \iforigpt \typeout{command `isoxazoleh' %
787 is based on `fiveheteroh'.}\fi%
788 \fiveheteroh[#1]{1==O;2==N}{#2}}%
789 \def\oxazoleh{\@ifnextchar[{\@oxazoleh[@}{\@oxazoleh[bd]}}%
790 \def\@oxazoleh[#1]#2{%
791 \iforigpt \typeout{command `oxazoleh' %
792 is based on `fiveheteroh'.}\fi%
793 \fiveheteroh[#1]{1==O;3==N}{#2}}%
\furanh \thiopheneh
794 \def\furanh{\@ifnextchar[{\@furanh[@}{\@furanh[bd]}}
795 \def\@furanh[#1]#2{%
796 \iforigpt \typeout{command `furanh' %
797 is based on `fiveheteroh'.}\fi%
798 \fiveheteroh[#1]{1==O}{#2}}
799 \def\thiopheneh{\@ifnextchar[{\@thiopheneh[@}{\@thiopheneh[bd]}}
800 \def\@thiopheneh[#1]#2{%
801 \iforigpt \typeout{command `thiopheneh' %
802 is based on `fiveheteroh'.}\fi%
803 \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

804 \def\pyrrolehi{\@ifnextchar[{\@pyrrolehi[@}{\@pyrrolehi[bd]}}%
805 \def\@pyrrolehi[#1]#2{%
806 \iforigpt \typeout{command `pyrrolehi' %
807 is based on `fiveheterohi'.}\fi%
808 \fiveheterohi[#1]{1==N}{#2}}%
809 \def\pyrazolehi{\@ifnextchar[{\@pyrazolehi[@}{\@pyrazolehi[bd]}}%
810 \def\@pyrazolehi[#1]#2{%
811 \iforigpt \typeout{command `pyrazolehi' %
812 is based on `fiveheterohi'.}\fi%
813 \fiveheterohi[#1]{1==N;2==N}{#2}}%
814 \def\imidazolehi{\@ifnextchar[{\@imidazolehi[@}{\@imidazolehi[bd]}}%
815 \def\@imidazolehi[#1]#2{%
816 \iforigpt \typeout{command `imidazolehi' %
817 is based on `fiveheterohi'.}\fi%
818 \fiveheterohi[#1]{1==N;3==N}{#2}}%
819 \def\isoxazolehi{\@ifnextchar[{\@isoxazolehi[@}{\@isoxazolehi[bd]}}%
820 \def\@isoxazolehi[#1]#2{%
821 \iforigpt \typeout{command `isoxazolehi' %
822 is based on `fiveheterohi'.}\fi%
823 \fiveheterohi[#1]{1==O;2==N}{#2}}%
824 \def\oxazolehi{\@ifnextchar[{\@oxazolehi[@}{\@oxazolehi[bd]}}%
825 \def\@oxazolehi[#1]#2{%
826 \iforigpt \typeout{command `oxazolehi' %
827 is based on `fiveheterohi'.}\fi%
828 \fiveheterohi[#1]{1==O;3==N}{#2}}%
\furanhi
\thiophenehi
829 \def\furanhi{\@ifnextchar[{\@furanhi[@}{\@furanhi[bd]}}
830 \def\@furanhi[#1]#2{%
831 \iforigpt \typeout{command `furanhi' %
832 is based on `fiveheterohi'.}\fi%
833 \fiveheterohi[#1]{1==O}{#2}}
834 \def\thiophenehi{\@ifnextchar[{\@thiophenehi[@}{\@thiophenehi[bd]}}
835 \def\@thiophenehi[#1]#2{%
836 \iforigpt \typeout{command `thiophenehi' %
837 is based on `fiveheterohi'.}\fi%
838 \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

839 \def\decaheteroh{\@ifnextchar({\@deca@heteroh(@}{\@deca@heteroh(@)}}
840 \def\@deca@heteroh(#1){\@ifnextchar[{\@deca@@heteroh(#1)[@}%
841 {\@deca@@heteroh(#1)[@]}}
842 \def\@deca@@heteroh(#1)[#2]#3#4{\@ifnextchar[%
843 {\@decaheteroh(#1)[#2]{#3}{#4}[@}%
844 {\@decaheteroh(#1)[#2]{#3}{#4}[@]}}
845 \def\@decaheteroh(#1)[#2]#3#4[#5]{%
846 % %%%%%%%%%%%%%%%%%%%%%%%%%%
847 % % treatment of atom list %
848 % %%%%%%%%%%%%%%%%%%%%%%%%%%
849 \iniflag\iniatom%
850 \test@vertix@sixv{#3}{a}{b}{c}{d}{e}{f}%
851 \test@vertix@decav{#3}{g}{h}{i}{j}{@}{@}%
852 % %%%%%%%%%%%%%%%%%%%%%%%
853 % % adjustment for (yl) %
854 % %%%%%%%%%%%%%%%%%%%%%%%
855 \@reset@ylsw%
856 \ylhetpositionh{#4}{0}{0}{5}{0}% %substituents on 1 to 4
857 \if@ylsw \ifx\@@ylii\empty
858 \def\@@ylii{0}\def\@@yli{0}\fi
859 \else
860 {\let\ddd=\eee\let\eee=\fff\let\fff=\gggA
861 \ylhetpositionh{#4}{-1}{3}{7}{0}% %substituents on 5 to 7

862 }%

863 \fi
864 \if@ylsw \ifx\@@ylii\empty

865 \def\@@ylii{0}\def\@@yli{342}\fi
866 \else
867 {\let\aaa=\hhh
868 \ylhetpositionh{#4}{-7}{0}{2}{0}% %substituent on 8

869 }%

870 \fi
871 \if@ylsw \ifx\@@ylii\empty
872 \def\@@ylii{0}\def\@@yli{342}\fi
873 \else

874 {%

875 \clipdetection%
876 \@clipfusefalse \if@iclip \@clipfusetrue \fi%
877 \ylatombondposition{#4}{-8}{4}%   %9 for 4a position

878 }%

879 \fi
880 \if@ylsw \ifx\@@ylii\empty
881 \def\@@ylii{-303}\def\@@yli{171}\fi
882 \else

883 {%

884 \clipdetection%
885 \@clipfusefalse \if@jclip \@clipfusetrue \fi%
886 \ylatombondposition{#4}{-9}{10}% %10 for 8a position

887 }%

888 \fi
889 \if@ylsw \ifx\@@ylii\empty
890 \def\@@ylii{-103}\def\@@yli{171}\fi
891 \fi
892 \begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
893 (1200,1200)(-400,-800){decaheteroh}%2002/4/30 by S. Fujita
894 % %%%%%%%%%%%%%%%%%%
895 % % outer skeleton %
896 % %%%%%%%%%%%%%%%%%%
897 \begingroup
898 \resetbdsw%
899 \@bond@@omit{#5}%
900 {\let\fff=\jjj \let\eee=\iii%
901 \set@skel@bondh{#1}{a}{a}% bond between 1 and 2 \@aaa -> \hskbonda etc
902 \set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc
903 \set@skel@bondh{#1}{c}{c}% bond between 3 and 4 \@ccc -> \hskbondc etc
904 \set@skel@bondh{#1}{d}{d}% bond between 4 and 5 \@ddd -> \skbondd etc
905 \set@skel@bondh{#1}{k}{e}% bond between 7 and 8 \@kkk -> \skbonde etc
906 \set@skel@bondh{#1}{j}{f}% bond between 7 and 8 \@jjj -> \skbondf etc

907 }%

908 {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA%
909 \let\ccc=\iii\let\bbb=\jjj%
910 \Put@Direct(0,-342){\set@skel@bondh{#1}{i}{a}}%
911 % bond between 8a and 8 \@iii -> \hskbonda etc
912 \Put@Direct(0,-342){\set@skel@bondh{#1}{e}{c}}%
913 % bond between 4a and 5 \@eee -> \hskbondc etc
914 \Put@Direct(0,-342){\set@skel@bondh{#1}{f}{d}}%
915 % bond between 5 and 6 \@fff -> \hskbondd etc
916 \Put@Direct(0,-342){\set@skel@bondh{#1}{g}{e}}%
917 % bond between 6 and 7 \@ggg -> \hskbonde etc
918 \Put@Direct(0,-342){\set@skel@bondh{#1}{h}{f}}%

919 % bond between 7 and 8 \@hhh -> \hskbondf etc

920 }%

921 \endgroup
922 % %%%%%%%%%%%%%%%%%%%%%
923 % % inner double bond %
924 % %%%%%%%%%%%%%%%%%%%%%
925 \@tfor\member:=#2\do{%
926 \if\member r\relax%
927 {\let\fff=\jjj \let\eee=\iii%
928 \Put@Direct(0,0){\hbonda}% bond between 1 and 2%
929 \Put@Direct(0,0){\hbondc}% bond between 3 and 4%

930 }%

931 {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA%
932 \let\ccc=\iii\let\bbb=\jjj%
933 \Put@Direct(0,-342){\hbondb}% bond between 8a and 4a
934 \Put@Direct(0,-342){\hbondf}% bond between 8 and 7
935 \Put@Direct(0,-342){\hbondd}% bond between 5 and 6

936 }%

937 \else \if\member l\relax%
938 \else \if\member a\relax%
939 \Put@Direct(0,0){\hbonda}% bond between 1 and 2
940 \else \if\member b\relax%
941 \Put@Direct(0,0){\hbondb}% bond between 2 and 3
942 \else \if\member c\relax%
943 \Put@Direct(0,0){\hbondc}% bond between 3 and 4
944 % \Put@Direct(342,0){\hbondc}% bond between 3 and 4
945 \else \if\member d\relax%
946 {\let\eee=\iii%
947 \Put@Direct(0,0){\hbondd}% bond between 4 and 4a

948 }%

949 \else \if\member e\relax%
950 {\let\ccc=\iii \let\ddd=\eee%
951 \Put@Direct(0,-342){\hbondc}% bond between 5 and 4a

952 }%

953 \else \if\member f\relax%
954 {\let\ddd=\eee \let\eee=\fff%
955 \Put@Direct(0,-342){\hbondd}% bond between 5 and 6

956 }%

957 \else \if\member g\relax%
958 {\let\eee=\fff \let\fff=\gggA%
959 \Put@Direct(0,-342){\hbonde}% bond between 6 and 7

960 }%

961 \else \if\member h\relax%
962 {\let\aaa=\hhh \let\fff=\gggA%
963 \Put@Direct(0,-342){\hbondf}% bond between 8 and 7

964 }%

965 \else \if\member i\relax%
966 {\let\aaa=\hhh \let\bbb=\jjj%
967 \Put@Direct(0,-342){\hbonda}% bond between 8 and 8a

968 }%

969 \else \if\member j\relax%
970 {\let\fff=\jjj%
971 \Put@Direct(0,0){\hbondf}% bond between 1 and 8a

972 }%

973 \else \if\member k\relax%
974 {\let\ccc=\iii\let\bbb=\jjj%
975 \Put@Direct(0,-342){\hbondb}% bond between 8a and 4a

976 }%

977 \else \if\member K\relax%
978 {\let\eee=\iii\let\fff=\jjj%
979 \Put@Direct(0,0){\hbonde}% bond between 8a and 4a in the other ring

980 }%

981 \else \if\member A%left aromatic circle
982 \Put@oCircle(203,0){240}%                %circle
983 \else \if\member B%left aromatic circle
984 \Put@oCircle(203,-342){240}%             %circle
985 \else
986 \expandafter\twoCH@@R\member//%
987 \def\aax{8a}\def\aay{4a}\def\aaz{10}%
988  \if\@@tmpa 4\relax%
989  \putratom{272}{-18}{\@@tmpb}%       % right type
990  \else\if\@@tmpa 1\relax%
991  \putratom{68}{-18}{\@@tmpb}%        % right type
992  \else\if\@@tmpa 3\relax%
993  \putratom{233}{60}{\@@tmpb}%        % right type
994  \else\if\@@tmpa 2\relax%
995  \putratom{120}{60}{\@@tmpb}%        % right type
996  \else\ifx\@@tmpa\aaz\relax%
997  \putratom{120}{-110}{\@@tmpb}%      % right type
998  \else\ifx\@@tmpa\aax\relax%
999  \putratom{120}{-110}{\@@tmpb}%      % right type
1000  \else\ifx\@@tmpa\aay\relax
1001  \putratom{233}{-110}{\@@tmpb}%      % right type
1002  \else\if\@@tmpa 9\relax%
1003  \putratom{233}{-110}{\@@tmpb}%      % right type
1004  \else\if\@@tmpa 5\relax%
1005  \putratom{272}{-360}{\@@tmpb}%      % right type
1006  \else\if\@@tmpa 8\relax%
1007  \putratom{68}{-360}{\@@tmpb}%       % right type
1008  \else\if\@@tmpa 6\relax%
1009  \putratom{233}{-452}{\@@tmpb}%      % right type
1010  \else\if\@@tmpa 7\relax%
1011  \putratom{120}{-452}{\@@tmpb}%      % right type
1012  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
1013 % ***********************
1014 % * setting fused rings *
1015 % ***********************
1016 \expandafter\twoCH@R\member//%
1017 \set@fusion@decah
1018 \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
1019 \fi\fi\fi\fi\fi\fi}%
1020 % %%%%%%%%%%%%%%%%%%%%%%%%
1021 % % setting hetero atoms %
1022 % %%%%%%%%%%%%%%%%%%%%%%%%
1023 \iniflag
1024 \Put@Direct(0,0){\set@hetatom@sixh{#3}{0}{0}{5}{0}%
1025 %   \if@aclip \global\@acliptrue\fi
1026 %   \if@bclip \global\@bcliptrue\fi

1027 %   \if@cclip \global\@ccliptrue\fi
1028 %   \if@clip \global\@cliptrue\fi
1029 \storeclipinfo
1030 }% %substituents on 1 to 4
1031 \developclipinfo
1032 \Put@Direct(0,-342){\iniflag%2000/11/11 by Shinsaku Fujita
1033 \set@hetatom@sixh{#3}{-1}{3}{7}{0}%
1034 %   \@gclipfalse \if@fclip \global\@gcliptrue \fi%
1035 %   \@fclipfalse \if@eclip \global\@fcliptrue \fi%
1036 %   \@eclipfalse \if@clip \global\@ecliptrue \fi
1037 \@gclipfalse \if@fclip \@gcliptrue \fi%
1038 \@fclipfalse \if@eclip \@fcliptrue \fi%
1039 \@eclipfalse \if@clip \@ecliptrue \fi
1040 \@clipfalse%2006/9/5added
1041 \storeclipinfo
1042 }%substituents on 5 to 7
1043 %\developclipinfo%%2006/9/5 deleted
1044 \Put@Direct(0,-342){\iniflag%2000/11/11 by Shinsaku Fujita
1045 \set@hetatom@sixh{#3}{-7}{0}{2}{0}%
1046 %  \@hclipfalse \if@aclip \global\@hcliptrue \fi
1047 \@hclipfalse \if@aclip \@hcliptrue \fi
1048 \@aclipfalse%2006/9/5added
1049 \storeclipinfo
1050 }%%substituent on 8
1051 %\developclipinfo%%2006/9/5 deleted
1052 \Put@Direct(0,0){\set@vrtx@fuseh{#3}%
1053 %  \if@iclip \global\@icliptrue \fi
1054 %  \if@jclip \global\@jcliptrue \fi
1055 \storeclipinfo
1056 }% fused positions
1057 \developclipinfo
1058 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1059 % % setting substituents and exocyclic bonds %
1060 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1061 \global\drawsamesubsttrue%2002/05/30 warning on
1062 \Put@Direct(0,0){\setsixringh{#4}{0}{0}{5}{0}}% %substituents on 1 to 4
1063 \global\drawsamesubstfalse%2002/05/30 warning off
1064 {\@clipfalse \if@eclip \@cliptrue \fi%   %substituents on 5 to 7
1065 \@eclipfalse \if@fclip \@ecliptrue \fi%
1066 \@fclipfalse \if@gclip \@fcliptrue \fi%
1067 \Put@Direct(0,-342){\setsixringh{#4}{-1}{3}{7}{0}}%

1068 }%

1069 {\@aclipfalse \if@hclip \@acliptrue \fi%   %substituent on 8
1070 \Put@Direct(0,-342){\setsixringh{#4}{-7}{0}{2}{0}}%

1071 }%

1072 {\@clipfusefalse \if@iclip \@clipfusetrue \fi%
1073 \Put@Direct(303,-171){\setatombond{#4}{-8}{4}}%   %9 for 4a position

1074 }%

1075 {\@clipfusefalse \if@jclip \@clipfusetrue \fi%
1076 \Put@Direct(103,-171){\setatombond{#4}{-9}{10}}% %10 for 8a position

1077 }%

1078 \end{ShiftPicEnvB}%
1079 \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
1080 \def\ylhetpositionh#1#2#3#4#5{%
1081 \@@ylswfalse%%%\@reset@ylsw
1082 \@forsemicol\member:=#1\do{%
1083 \if@@ylsw\else
1084 \ifx\member\empty\else
1085 \expandafter\@m@mb@r\member;\relax
1086 \expandafter\threech@r\@membera{}{}\relax
1087 \ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi
1088 \if@@ylsw
1089 \ifnum#5<0\relax%
1090 \@tmpaa=-\@tmpa\relax \advance\@tmpaa by#2\relax%
1091 \else\@tmpaa=\@tmpa\relax \advance\@tmpaa by#2\relax\fi
1092 \ifnum\@tmpaa>#3\relax%
1093 \ifnum\@tmpaa<#4\relax%
1094 \ifcase\@tmpaa%0 omit

1095 \or

1096 \ifx\aaa\empty
1097  \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%\@ylatrue% subst. on 1
1098 \else
1099  \gdef\@ylii{30}\gdef\@yli{0}\global\@ylswtrue%\@ylatrue% subst. on 1

1100 \fi 1101 \or

1102 \ifx\bbb\empty
1103  \gdef\@ylii{-103}\gdef\@yli{-171}\global\@ylswtrue%\@ylbtrue% subst. on 2
1104 \else
1105  \gdef\@ylii{-73}\gdef\@yli{-223}\global\@ylswtrue%\@ylbtrue% subst. on 2

1106 \fi 1107 \or

1108 \ifx\ccc\empty
1109  \gdef\@ylii{-303}\gdef\@yli{-171}\global\@ylswtrue%\@ylctrue% subst. on 3
1110 \else
1111  \gdef\@ylii{-333}\gdef\@yli{-223}\global\@ylswtrue%\@ylctrue% subst. on 3

1112 \fi 1113 \or

1114 \ifx\ddd\empty
1115  \gdef\@ylii{-406}\gdef\@yli{0}\global\@ylswtrue%\@yldtrue% subst. on 4
1116 \else
1117  \gdef\@ylii{-436}\gdef\@yli{0}\global\@ylswtrue%\@yldtrue% subst. on 4

1118 \fi 1119 \or

1120  \ifx\eee\empty
1121  \gdef\@ylii{-303}\gdef\@yli{171}\global\@ylswtrue%\@yletrue% subst. on 5
1122  \else
1123  \gdef\@ylii{-333}\gdef\@yli{223}\global\@ylswtrue%\@yletrue% subst. on 5

1124 \fi 1125 \or

1126 \ifx\fff\empty
1127  \gdef\@ylii{-103}\gdef\@yli{171}\global\@ylswtrue%\@ylftrue% subst. on 6
1128  \else
1129  \gdef\@ylii{-73}\gdef\@yli{223}\global\@ylswtrue%\@ylftrue% subst. on 6

1130 \fi

1131 \fi%end of ifcase
1132 \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

1133 \def\decaheterohi{\@ifnextchar({\@deca@heterohi(@}{\@deca@heterohi(@)}}
1134 \def\@deca@heterohi(#1){\@ifnextchar[{\@deca@@heterohi(#1)[@}%
1135 {\@deca@@heterohi(#1)[@]}}
1136 \def\@deca@@heterohi(#1)[#2]#3#4{\@ifnextchar[%
1137 {\@decaheterohi(#1)[#2]{#3}{#4}[@}%
1138 {\@decaheterohi(#1)[#2]{#3}{#4}[@]}}
1139 \def\@decaheterohi(#1)[#2]#3#4[#5]{%

1140 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1141 % % treatment of atom list %
1142 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1143 \iniflag\iniatom%
1144 \test@vertix@decavi{#3}%
1145 % %%%%%%%%%%%%%%%%%%%%%%%
1146 % % adjustment for (yl) %
1147 % %%%%%%%%%%%%%%%%%%%%%%%
1148 \@reset@ylsw%
1149 \ylhetpositionh{#4}{5}{0}{5}{-1}% %substituents on 1 to 4
1150 \if@ylsw \ifx\@@ylii\empty
1151 \def\@@ylii{0}\def\@@yli{0}\fi
1152 \else
1153 {\let\ddd=\eee\let\eee=\fff\let\fff=\gggA
1154 \ylhetpositionh{#4}{12}{3}{7}{-1}% %substituents on 6 to 8

1155 }% 1156 \fi

1157 \if@ylsw \ifx\@@ylii\empty
1158 \def\@@ylii{0}\def\@@yli{342}\fi
1159 \else
1160 {\let\aaa=\hhh
1161 \ylhetpositionh{#4}{-4}{0}{2}{0}% %substituent on 5

1162 }% 1163 \fi

1164 \if@ylsw \ifx\@@ylii\empty
1165 \def\@@ylii{0}\def\@@yli{342}\fi
1166 \else

1167 {%

1168 \clipdetection%
1169 \@clipfusefalse \if@iclip \@clipfusetrue \fi%
1170 \ylatombondposition{#4}{-9}{4}%   %10 for 8a position

1171 }% 1172 \fi

1173 \if@ylsw \ifx\@@ylii\empty
1174 \def\@@ylii{-303}\def\@@yli{171}\fi
1175 \else

1176 {%

1177 \clipdetection%
1178 \@clipfusefalse \if@jclip \@clipfusetrue \fi%
1179 \ylatombondposition{#4}{-8}{10}% %9 for 4a position

1180 }% 1181 \fi

1182 \if@ylsw \ifx\@@ylii\empty
1183 \def\@@ylii{-103}\def\@@yli{171}\fi

1184 \fi

1185 \begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
1186 (1200,1200)(-400,-800){decaheterohi}%2002/4/30 by S. Fujita
1187 % %%%%%%%%%%%%%%%%%%
1188 % % outer skeleton %
1189 % %%%%%%%%%%%%%%%%%%
1190 \begingroup
1191 \resetbdsw%
1192 \@bond@@omit{#5}%
1193 {\let\fff=\jjj \let\eee=\iii%

1194 \set@skel@bondh{#1}{a}{c}% bond between 1 and 2 \@aaa -> \hskbondc etc
1195 \set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc
1196 \set@skel@bondh{#1}{c}{a}% bond between 3 and 4 \@ccc -> \hskbonda etc
1197 \set@skel@bondh{#1}{d}{f}% bond between 4 and 4a \@ddd -> \hskbondf etc
1198 \set@skel@bondh{#1}{k}{e}% bond between 4a and 8a \@kkk -> \hskbonde etc
1199 \set@skel@bondh{#1}{j}{d}% bond between 8a and 1 \@jjj -> \hskbondd etc

1200 }%

1201 {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA%
1202 \let\ccc=\iii\let\bbb=\jjj%
1203 \Put@Direct(0,-342){\set@skel@bondh{#1}{e}{a}}%
1204 % bond between 4a and 5 \@eee -> \hskbonda etc
1205 \Put@Direct(0,-342){\set@skel@bondh{#1}{i}{c}}%
1206 % bond between 8a and 8 \@iii -> \hskbondc etc
1207 \Put@Direct(0,-342){\set@skel@bondh{#1}{h}{d}}%
1208 % bond between 7 and 8 \@hhh -> \hskbondd etc
1209 \Put@Direct(0,-342){\set@skel@bondh{#1}{g}{e}}%
1210 % bond between 6 and 7 \@ggg -> \hskbonde etc
1211 \Put@Direct(0,-342){\set@skel@bondh{#1}{f}{f}}%
1212 % bond between 5 and 6 \@fff -> \hskbondf etc

1213 }%

1214 \endgroup
1215 % %%%%%%%%%%%%%%%%%%%%%
1216 % % inner double bond %
1217 % %%%%%%%%%%%%%%%%%%%%%
1218 \@tfor\member:=#2\do{%
1219 \if\member r\relax%
1220 {\let\fff=\jjj \let\eee=\iii%
1221 \Put@Direct(0,0){\hbonda}% bond between 1 and 2
1222 \Put@Direct(0,0){\hbondc}% bond between 3 and 4

1223 }%

1224 {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA%
1225 \let\ccc=\iii\let\bbb=\jjj%
1226 \Put@Direct(0,-342){\hbondb}% bond between 8a and 4a
1227 \Put@Direct(0,-342){\hbondf}% bond between 8 and 7
1228 \Put@Direct(0,-342){\hbondd}% bond between 5 and 6

1229 }%

1230 \else \if\member l\relax%
1231 \else \if\member a\relax%
1232 \Put@Direct(0,0){\hbondc}% bond between 3 and 4
1233 \else \if\member b\relax
1234 \Put@Direct(0,0){\hbondb}% bond between 2 and 3
1235 \else \if\member c\relax
1236 \Put@Direct(0,0){\hbonda}% bond between 1 and 2
1237 \else \if\member d\relax%
1238 {\let\fff=\jjj%
1239 \Put@Direct(0,0){\hbondf}% bond between 1 and 8a

1240 }%

1241 \else \if\member e\relax%
1242 {\let\aaa=\hhh \let\bbb=\jjj%
1243 \Put@Direct(0,-342){\hbonda}% bond between 8 and 8a

1244 }%

1245 \else \if\member f\relax%
1246 {\let\aaa=\hhh \let\fff=\gggA%
1247 \Put@Direct(0,-342){\hbondf}% bond between 8 and 7

1248 }%

1249 \else \if\member g\relax%
1250 {\let\eee=\fff \let\fff=\gggA%
1251 \Put@Direct(0,-342){\hbonde}% bond between 6 and 7

1252 }%

1253 \else \if\member h\relax%
1254 {\let\ddd=\eee \let\eee=\fff%
1255 \Put@Direct(0,-342){\hbondd}% bond between 5 and 6

1256 }%

1257 \else \if\member i\relax%
1258 {\let\ccc=\iii \let\ddd=\eee%
1259 \Put@Direct(0,-342){\hbondc}% bond between 5 and 4a

1260 }%

1261 \else \if\member j\relax%
1262 {\let\eee=\iii%
1263 \Put@Direct(0,0){\hbondd}% bond between 4 and 4a

1264 }%

1265 \else \if\member k\relax%
1266 {\let\ccc=\iii\let\bbb=\jjj%
1267 \Put@Direct(0,-342){\hbondb}% bond between 8a and 4a

1268 }%

1269 \else \if\member K\relax%
1270 {\let\eee=\iii\let\fff=\jjj%
1271 \Put@Direct(0,0){\hbonde}% bond between 8a and 4a

1272 }%

1273 \else \if\member A%left aromatic circle
1274 \Put@oCircle(203,0){240}%                %circle
1275 \else \if\member B%left aromatic circle
1276 \Put@oCircle(203,-342){240}%             %circle
1277 \else \expandafter\twoCH@@R\member//%
1278 \def\aax{8a}\def\aay{4a}\def\aaz{10}%
1279  \if\@@tmpa 4\relax%
1280  \putratom{68}{-18}{\@@tmpb}%        % right type
1281  \else\if\@@tmpa 1\relax%
1282  \putratom{272}{-18}{\@@tmpb}%       % right type
1283  \else\if\@@tmpa 3\relax%
1284  \putratom{120}{60}{\@@tmpb}%        % right type
1285  \else\if\@@tmpa 2\relax%
1286  \putratom{233}{60}{\@@tmpb}%        % right type
1287  \else\ifx\@@tmpa\aaz\relax%
1288  \putratom{233}{-110}{\@@tmpb}%      % right type
1289  \else\ifx\@@tmpa\aax\relax%
1290  \putratom{233}{-110}{\@@tmpb}%      % right type
1291  \else\ifx\@@tmpa\aay\relax%
1292  \putratom{120}{-110}{\@@tmpb}%      % right type
1293  \else\if\@@tmpa 9\relax%
1294  \putratom{120}{-110}{\@@tmpb}%      % right type
1295  \else\if\@@tmpa 5\relax%
1296  \putratom{68}{-360}{\@@tmpb}%       % right type
1297  \else\if\@@tmpa 8\relax%
1298  \putratom{272}{-360}{\@@tmpb}%      % right type
1299  \else\if\@@tmpa 6\relax%
1300  \putratom{120}{-452}{\@@tmpb}%      % right type
1301  \else\if\@@tmpa 7\relax%

1302  \putratom{233}{-452}{\@@tmpb}%      % right type
1303  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
1304 % ***********************
1305 % * setting fused rings *
1306 % ***********************
1307 \expandafter\twoCH@R\member//%
1308 \set@fusion@decahi
1309 \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
1310 \fi\fi\fi\fi\fi\fi}%
1311 % %%%%%%%%%%%%%%%%%%%%%%%%
1312 % % setting hetero atoms %
1313 % %%%%%%%%%%%%%%%%%%%%%%%%
1314 \iniflag
1315 \@tmpclipfalse
1316 \Put@Direct(0,0){\set@hetatom@sixh{#3}{5}{0}{5}{-1}%
1317 %   \if@aclip \global\@acliptrue\fi
1318 %   \if@bclip \global\@bcliptrue\fi
1319 %   \if@cclip \global\@ccliptrue\fi
1320 %   \if@clip \global\@cliptrue\fi
1321 \storeclipinfo
1322 }% %substituents on 1 to 4
1323 \developclipinfo
1324 \Put@Direct(0,-342){\iniflag%2000/11/11 by Shinsaku Fujita
1325 \set@hetatom@sixh{#3}{12}{3}{7}{-1}%
1326 % \@gclipfalse \if@fclip \global\@gcliptrue \fi%
1327 % \@fclipfalse \if@eclip \global\@fcliptrue \fi%
1328 % \@eclipfalse \if@clip \global\@ecliptrue \fi%
1329 \@gclipfalse \if@fclip \@gcliptrue \fi%
1330 \@fclipfalse \if@eclip \@fcliptrue \fi%
1331 \@eclipfalse \if@clip \@ecliptrue \fi%
1332 \storeclipinfo
1333 }%substituents on 6 to 8
1334 \developclipinfo
1335 \Put@Direct(0,-342){\set@hetatom@sixh{#3}{-4}{0}{2}{0}%
1336 % \@aclipfalse \if@aclip \global\@hcliptrue \fi%
1337 \@aclipfalse \if@aclip \@hcliptrue \fi%
1338 \storeclipinfo
1339 }%%substituent on 5
1340 \developclipinfo
1341 \Put@Direct(0,0){\set@vrtx@decafusehi{#3}%
1342 \@tmpclipfalse
1343 %  \if@iclip \global\@tmpcliptrue \fi
1344 %  \if@jclip \global\@icliptrue \fi
1345 %  \if@tmpclip \global\@jcliptrue \fi
1346 \if@iclip \@tmpcliptrue \fi
1347 \if@jclip \@icliptrue \fi
1348 \if@tmpclip \@jcliptrue \fi
1349 \storeclipinfo
1350 }% fused positions
1351 \developclipinfo
1352 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1353 % % setting substituents and exocyclic bonds %
1354 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

1355 \global\drawsamesubsttrue%2002/05/30 warning on
1356 \Put@Direct(0,0){\setsixringh{#4}{5}{0}{5}{-1}}% %substituents on 1 to 4
1357 \global\drawsamesubstfalse%2002/05/30 warning off
1358 {\@clipfalse \if@eclip \@cliptrue \fi%    %substituents on 6 to 8
1359 \@eclipfalse \if@fclip \@ecliptrue \fi%
1360 \@fclipfalse \if@gclip \@fcliptrue \fi%
1361 \Put@Direct(0,-342){\setsixringh{#4}{12}{3}{7}{-1}}%

1362 }%

1363 {\@aclipfalse \if@hclip \@acliptrue \fi%    %substituent on 5
1364 \Put@Direct(0,-342){\setsixringh{#4}{-4}{0}{2}{0}}%

1365 }%

1366 {\@clipfusefalse \if@iclip \@clipfusetrue \fi%
1367 \Put@Direct(303,-171){\setatombond{#4}{-9}{4}}%   %10 for 8a position

1368 }%

1369 {\@clipfusefalse \if@jclip \@clipfusetrue \fi
1370 \Put@Direct(103,-171){\setatombond{#4}{-8}{10}}% %9 for 4a position

1371 }%

1372 \end{ShiftPicEnvB}%
1373 \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
1374 \def\set@vrtx@decafusehi#1{%
1375 \@forsemicol\member:=#1\do{%
1376 \ifx\member\empty\else
1377 \expandafter\@m@mb@r\member;\relax%
1378 \expandafter\twoch@r\@membera{}%
1379 \ifcase\@tmpa\or\or\or
1380 \or%%%%4
1381 \if\@tmpb a%
1382  \global\@icliptrue%
1383  \putlatom{135}{-211}{\@memberb}%             % left type
1384 \else\if\@tmpb h%
1385  \XyMTeXWarning{Forbidden fused position `4a' or `9'}%
1386 \else\if\@tmpb s%
1387  \XyMTeXWarning{Forbidden fused position `4a' or `9'}%
1388 \else\ifx\@tmpb\empty\relax
1389 \else
1390  \XyMTeXWarning{Forbidden fused position `4a' or `9'}%
1391 \fi\fi\fi\fi
1392 \or\or\or
1393 \or%8
1394 \if\@tmpb a%
1395  \global\@jcliptrue%
1396  \putratom{273}{-211}{\@memberb}%             % right type
1397 \else\if\@tmpb h%
1398  \XyMTeXWarning{Forbidden fused position `8a' or `10'}%
1399 \else\if\@tmpb s%
1400  \XyMTeXWarning{Forbidden fused position `8a' or `10'}%
1401 \else\ifx\@tmpb\empty\relax
1402 \else

1403  \XyMTeXWarning{Forbidden fused position `8a' or `10'}%
1404 \fi\fi\fi\fi
1405 \or%9 (= 4a)
1406 \ifx\@tmpb\empty%
1407  \global\@icliptrue%
1408  \putlatom{135}{-211}{\@memberb}%             % left type
1409 \else
1410  \XyMTeXWarning{Forbidden fused position `4a' or `9'}%

1411 \fi

1412 \or%10 (= 8a)
1413 \ifx\@tmpb\empty%
1414  \global\@jcliptrue%
1415  \putratom{273}{-211}{\@memberb}%             % right type
1416 \else
1417  \XyMTeXWarning{Forbidden fused position `8a' or `10'}%

1418 \fi

1419 \fi\fi}%
1420 }% 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
1421 \def\set@fusion@decahi{%
1422 \let\@@tmpa=\@tmpa
1423 \let\@@tmpb=\@tmpb
1424 \if\@tmpa a%
1425  \let\@@tmpa=\@tmpa
1426  \Put@Direct(0,0){\set@fusionadd@sixhi}%
1427 \else\if\@tmpa A%
1428  \let\@@tmpa=\@tmpa
1429  \Put@Direct(0,0){\set@fusionadd@sixhi}%
1430 \else\if\@tmpa b%
1431  \let\@@tmpa=\@tmpa
1432  \Put@Direct(0,0){\set@fusionadd@sixhi}%
1433 \else\if\@tmpa B%
1434  \let\@@tmpa=\@tmpa
1435  \Put@Direct(0,0){\set@fusionadd@sixhi}%
1436 \else\if\@tmpa c%
1437  \let\@@tmpa=\@tmpa
1438  \Put@Direct(0,0){\set@fusionadd@sixhi}%
1439 \else\if\@tmpa C%
1440  \let\@@tmpa=\@tmpa
1441  \Put@Direct(0,0){\set@fusionadd@sixhi}%
1442 \else\if\@tmpa d%
1443  \let\@@tmpa=\@tmpa
1444  \Put@Direct(0,0){\set@fusionadd@sixhi}%
1445  \if@smallringsw\else
1446  \XyMTeXWarning{Unfavorable Fusion for bond `d'}%

1447 \fi

1448 \else\if\@tmpa D%
1449  \let\@@tmpa=\@tmpa

1450  \Put@Direct(0,0){\set@fusionadd@sixhi}%
1451  \if@smallringsw\else
1452  \XyMTeXWarning{Unfavorable Fusion for bond `D'}%

1453 \fi

1454 \else\if\@tmpa e%
1455  \edef\@@tmpa{c}%
1456  \Put@Direct(0,-342){\set@fusionadd@sixhi}%
1457  \if@smallringsw\else
1458  \XyMTeXWarning{Unfavorable Fusion for bond `e'}%

1459 \fi

1460 \else\if\@tmpa E%
1461  \edef\@@tmpa{C}%
1462  \Put@Direct(0,-342){\set@fusionadd@sixhi}%
1463  \if@smallringsw\else
1464  \XyMTeXWarning{Unfavorable Fusion for bond `E'}%

1465 \fi

1466 \else\if\@tmpa f%
1467  \edef\@@tmpa{d}%
1468  \Put@Direct(0,-342){\set@fusionadd@sixhi}%
1469 \else\if\@tmpa F%
1470  \edef\@@tmpa{D}%
1471  \Put@Direct(0,-342){\set@fusionadd@sixhi}%
1472 \else\if\@tmpa g%
1473  \edef\@@tmpa{e}%
1474  \Put@Direct(0,-342){\set@fusionadd@sixhi}%
1475 \else\if\@tmpa G%
1476  \edef\@@tmpa{E}%
1477  \Put@Direct(0,-342){\set@fusionadd@sixhi}%
1478 \else\if\@tmpa h%
1479  \edef\@@tmpa{f}%
1480  \Put@Direct(0,-342){\set@fusionadd@sixhi}%
1481 \else\if\@tmpa H%
1482  \edef\@@tmpa{F}%
1483  \Put@Direct(0,-342){\set@fusionadd@sixhi}%
1484 \else\if\@tmpa i%
1485  \edef\@@tmpa{a}%
1486  \Put@Direct(0,-342){\set@fusionadd@sixhi}%
1487  \if@smallringsw\else
1488  \XyMTeXWarning{Unfavorable Fusion for bond `i'}%

1489 \fi

1490 \else\if\@tmpa I%
1491  \edef\@@tmpa{A}%
1492  \Put@Direct(0,-342){\set@fusionadd@sixhi}%
1493  \if@smallringsw\else
1494  \XyMTeXWarning{Unfavorable Fusion for bond `I'}%

1495 \fi

1496 \else\if\@tmpa j%
1497  \edef\@@tmpa{f}%
1498  \Put@Direct(0,0){\set@fusionadd@sixhi}%
1499  \if@smallringsw\else
1500  \XyMTeXWarning{Unfavorable Fusion for bond `j'}%

1501 \fi

1502 \else\if\@tmpa J%
1503  \edef\@@tmpa{F}%

1504  \Put@Direct(0,0){\set@fusionadd@sixhi}%
1505  \if@smallringsw\else
1506  \XyMTeXWarning{Unfavorable Fusion for bond `J'}%

1507 \fi

1508 \else\if\@tmpa k%
1509  \edef\@@tmpa{e}%
1510  \Put@Direct(0,0){\set@fusionadd@sixhi}%
1511  \if@smallringsw\else
1512  \XyMTeXWarning{Forbidden Fusion for bond `k'}%

1513 \fi

1514 \else\if\@tmpa K%
1515  \edef\@@tmpa{E}%
1516  \Put@Direct(0,0){\set@fusionadd@sixhi}%
1517  \if@smallringsw\else
1518  \XyMTeXWarning{Forbidden Fusion for bond `K'}%

1519 \fi

1520 \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
1521 \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
1522 }% 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
1523 \def\quinolineh{%
1524 \@ifnextchar[{\@quinolineh[@}{\@quinolineh[acfhk]}}%
1525 \def\@quinolineh[#1]#2{%
1526 \iforigpt \typeout{command `quinolineh' %
1527 is based on `decaheteroh'.}\fi%
1528 \decaheteroh[#1]{1==N}{#2}}%
1529 \def\quinolinehi{%
1530 \@ifnextchar[{\@quinolinehi[@}{\@quinolinehi[acfhk]}}%
1531 \def\@quinolinehi[#1]#2{%
1532 \iforigpt \typeout{command `quinolinehi' %
1533 is based on `decaheterohi'.}\fi%
1534 \decaheterohi[#1]{1==N}{#2}}%
\isoquinolineh
\isoquinolinehi
1535 \def\isoquinolineh{%
1536 \@ifnextchar[{\@isoquinolineh[@}{\@isoquinolineh[acfhk]}}%
1537 \def\@isoquinolineh[#1]#2{%
1538 \iforigpt \typeout{command `isoquinolineh' %
1539 is based on `decaheteroh'.}\fi%
1540 \decaheteroh[#1]{2==N}{#2}}%
1541 \def\isoquinolinehi{%
1542 \@ifnextchar[{\@isoquinolinehi[@}{\@isoquinolinehi[acfhk]}}%
1543 \def\@isoquinolinehi[#1]#2{%
1544 \iforigpt \typeout{command `isoquinolinehi' %
1545 is based on `decaheterohi'.}\fi%
1546 \decaheterohi[#1]{2==N}{#2}}%
quinoxalineh
1547 \def\quinoxalineh{%
1548 \@ifnextchar[{\@quinoxalineh[@}{\@quinoxalineh[acfhk]}}%
1549 \def\@quinoxalineh[#1]#2{%
1550 \iforigpt \typeout{command `quinoxalineh' %
1551 is based on `decaheteroh'.}\fi%
1552 \decaheteroh[#1]{1==N;4==N}{#2}}%
\quinazolineh
\quinazolinehi
1553 \def\quinazolineh{%
1554 \@ifnextchar[{\@quinazolineh[@}{\@quinazolineh[acfhk]}}%
1555 \def\@quinazolineh[#1]#2{%
1556 \iforigpt \typeout{command `quinazolineh' %
1557 is based on `decaheteroh'.}\fi%
1558 \decaheteroh[#1]{1==N;3==N}{#2}}%
1559 \def\quinazolinehi{%
1560 \@ifnextchar[{\@quinazolinehi[@}{\@quinazolinehi[acfhk]}}%
1561 \def\@quinazolinehi[#1]#2{%
1562 \iforigpt \typeout{command `quinazolinehi' %
1563 is based on `decaheterohi'.}\fi%
1564 \decaheterohi[#1]{1==N;3==N}{#2}}%
\cinnolineh
\cinnolinehi
1565 \def\cinnolineh{%
1566 \@ifnextchar[{\@cinnolineh[@}{\@cinnolineh[acfhk]}}%

1567 \def\@cinnolineh[#1]#2{%
1568 \iforigpt \typeout{command `cinnolineh' %
1569 is based on `decaheteroh'.}\fi%
1570 \decaheteroh[#1]{1==N;2==N}{#2}}%
1571 \def\cinnolinehi{%
1572 \@ifnextchar[{\@cinnolinehi[@}{\@cinnolinehi[acfhk]}}%
1573 \def\@cinnolinehi[#1]#2{%
1574 \iforigpt \typeout{command `cinnolinehi' %
1575 is based on `decaheterohi'.}\fi%
1576 \decaheterohi[#1]{1==N;2==N}{#2}}%
\pteridineh
\pteridinehi
1577 \def\pteridineh{%
1578 \@ifnextchar[{\@pteridineh[@}{\@pteridineh[acfhk]}}%
1579 \def\@pteridineh[#1]#2{%
1580 \iforigpt \typeout{command `pteridineh' %
1581 is based on `decaheteroh'.}\fi%
1582 \decaheteroh[#1]{1==N;3==N;5==N;8==N}{#2}}%
1583 \def\pteridinehi{%
1584 \@ifnextchar[{\@pteridinehi[@}{\@pteridinehi[acfhk]}}%
1585 \def\@pteridinehi[#1]#2{%
1586 \iforigpt \typeout{command `pteridinehi' %
1587 is based on `decaheterohi'.}\fi%
1588 \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

1589 \def\nonaheteroh{\@ifnextchar({\@nona@heteroh(@}{\@nona@heteroh(@)}}
1590 \def\@nona@heteroh(#1){\@ifnextchar[{\@nona@@heteroh(#1)[@}%
1591 {\@nona@@heteroh(#1)[@]}}
1592 \def\@nona@@heteroh(#1)[#2]#3#4{\@ifnextchar[%
1593 {\@nonaheteroh(#1)[#2]{#3}{#4}[@}%
1594 {\@nonaheteroh(#1)[#2]{#3}{#4}[@]}}
1595 \def\@nonaheteroh(#1)[#2]#3#4[#5]{%
1596 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1597 % % treatment of atom list %
1598 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1599 \iniflag\iniatom%
1600 \test@vertix@nonav{#3}%
1601 % %%%%%%%%%%%%%%%%%%%%%%%
1602 % % adjustment for (yl) %
1603 % %%%%%%%%%%%%%%%%%%%%%%%
1604 \@reset@ylsw%
1605 \ylpositionh{#4}{5}{1}{5}{-1}%  %substituents on 1 to 3
1606 \if@ylsw \ifx\@@ylii\empty
1607 \def\@@ylii{0}\def\@@yli{0}\fi
1608 \else
1609 {\let\ddd=\eee\let\eee=\fff\let\fff=\gggA
1610 \ylpositionh{#4}{11}{3}{7}{-1}% %substituents on 5 to 7

1611 }% 1612 \fi

1613 \if@ylsw \ifx\@@ylii\empty
1614 \def\@@ylii{0}\def\@@yli{342}\fi
1615 \else
1616 {\let\aaa=\hhh
1617 \ylpositionh{#4}{-3}{0}{2}{0}%%substituent on 4

1618 }% 1619 \fi

1620 \if@ylsw \ifx\@@ylii\empty
1621 \def\@@ylii{0}\def\@@yli{342}\fi
1622 \else

1623 {%

1624 \clipdetection%

1625 \@clipfusefalse \if@iclip \@clipfusetrue \fi%
1626 \ylatombondposition{#4}{-8}{4}%   %9 for 7a position

1627 }% 1628 \fi

1629 \if@ylsw \ifx\@@ylii\empty
1630 \def\@@ylii{-303}\def\@@yli{171}\fi
1631 \else

1632 {%

1633 \clipdetection%
1634 \@clipfusefalse \if@jclip \@clipfusetrue \fi%
1635 \ylatombondposition{#4}{-7}{10}% %8 for 3a position

1636 }% 1637 \fi

1638 \if@ylsw \ifx\@@ylii\empty
1639 \def\@@ylii{-103}\def\@@yli{171}\fi

1640 \fi

1641 \begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
1642 (1200,1200)(-400,-800){nonaheteroh}%2002/4/30 by S. Fujita
1643 % %%%%%%%%%%%%%%%%%%
1644 % % outer skeleton %
1645 % %%%%%%%%%%%%%%%%%%
1646 \begingroup
1647 \resetbdsw%
1648 \@bond@@omit{#5}%
1649 {\let\fff=\jjj \let\eee=\iii%
1650 \set@skel@bondh{#1}{a}{c}% bond between 1 and 2 \@aaa -> \hskbondc etc
1651 \set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc
1652 \set@skel@longbond{#1}{c}{hskbondvert}%
1653  % bond between 3 and 3a \@ccc -> \hskbondhoriz etc
1654 \set@skel@bondh{#1}{j}{e}% bond between 3a and 7a \@jjj -> \hskbonde etc
1655 \set@skel@bondh{#1}{i}{d}% bond between 7a and 1 \@iii -> \hskbondd etc

1656 }%

1657 {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA
1658 \let\ccc=\iii\let\bbb=\jjj%
1659 \Put@Direct(0,-342){\set@skel@bondh{#1}{d}{a}}%
1660 % bond between 3a and 4 \@ddd -> \hskbonda etc
1661 \Put@Direct(0,-342){\set@skel@bondh{#1}{h}{c}}%
1662 % bond between 7a and 7 \@hhh -> \hskbondc etc
1663 \Put@Direct(0,-342){\set@skel@bondh{#1}{g}{d}}%
1664 % bond between 6 and 7 \@ggg -> \hskbondd etc
1665 \Put@Direct(0,-342){\set@skel@bondh{#1}{f}{e}}%
1666 % bond between 5 and 6 \@fff -> \hskbonde etc
1667 \Put@Direct(0,-342){\set@skel@bondh{#1}{e}{f}}%
1668 % bond between 4 and 5 \@eee -> \hskbondf etc

1669 }%

1670 \endgroup
1671 % %%%%%%%%%%%%%%%%%%%%%
1672 % % inner double bond %
1673 % %%%%%%%%%%%%%%%%%%%%%
1674 \@tfor\member:=#2\do{%
1675 \if\member r\relax%
1676 {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA%
1677 \let\ccc=\iii\let\bbb=\jjj%

1678 \Put@Direct(0,-342){\hbondb}% bond between 3a and 7a
1679 \Put@Direct(0,-342){\hbondf}% bond between 4 and 5
1680 \Put@Direct(0,-342){\hbondd}% bond between 6 and 7

1681 }%

1682 \else \if\member l\relax%
1683 \else \if\member a\relax%
1684 \Put@Direct(0,0){\hbondc}% bond between 3 and 4
1685 \else \if\member b\relax%
1686 \Put@Direct(0,0){\hbondb}% bond between 2 and 3
1687 \else \if\member c\relax%
1688 \Put@Direct(0,0){\hbondvert}% bond between 3 and 3a
1689 \else \if\member d\relax%
1690 {\let\aaa=\hhh \let\bbb=\jjj%
1691 \Put@Direct(0,-342){\hbonda}% bond between 4 and 3a

1692 }%

1693 \else \if\member e\relax%
1694 {\let\aaa=\hhh \let\fff=\gggA%
1695 \Put@Direct(0,-342){\hbondf}% bond between 4 and 5

1696 }%

1697 \else \if\member f\relax%
1698 {\let\eee=\fff \let\fff=\gggA%
1699 \Put@Direct(0,-342){\hbonde}% bond between 5 and 6

1700 }%

1701 \else \if\member g\relax%
1702 {\let\ddd=\eee \let\eee=\fff%
1703 \Put@Direct(0,-342){\hbondd}% bond between 6 and 7

1704 }%

1705 \else \if\member h\relax%
1706 {\let\ccc=\iii \let\ddd=\eee%
1707 \Put@Direct(0,-342){\hbondc}% bond between 7 and 7a

1708 }%

1709 \else \if\member i\relax%
1710 {\let\eee=\iii%
1711 \Put@Direct(0,0){\hbondd}% bond between 1 and 7a

1712 }%

1713 \else \if\member j\relax%
1714 {\let\ccc=\iii\let\bbb=\jjj%
1715 \Put@Direct(0,-342){\hbondb}% bond between 7a and 3a

1716 }%

1717 \else \if\member J\relax%
1718 {\let\eee=\iii\let\fff=\jjj%
1719 \Put@Direct(0,0){\hbonde}% bond between 7a and 3a

1720 }%

1721 \else \if\member B%left aromatic circle
1722 \Put@oCircle(233,0){180}%               %circle (five-membered)
1723 \else \if\member A%left aromatic circle
1724 \Put@oCircle(203,-342){240}%            %circle (six-membered)
1725 \else
1726 \expandafter\twoCH@@R\member//%
1727 \def\aax{3a}\def\aay{7a}%
1728  \if\@@tmpa 1\relax%
1729  \putratom{272}{-18}{\@@tmpb}%      % right type
1730  \else\if\@@tmpa 2\relax%
1731  \putratom{233}{60}{\@@tmpb}%       % right type

1732  \else\if\@@tmpa 3\relax%
1733  \putratom{120}{60}{\@@tmpb}%       % right type
1734  \else\if\@@tmpa 4\relax%
1735  \putratom{68}{-360}{\@@tmpb}%      % right type
1736  \else\if\@@tmpa 5\relax%
1737  \putratom{120}{-452}{\@@tmpb}%     % right type
1738  \else\if\@@tmpa 6\relax%
1739  \putratom{233}{-452}{\@@tmpb}%     % right type
1740  \else\if\@@tmpa 7\relax%
1741  \putratom{272}{-360}{\@@tmpb}%     % right type
1742  \else\if\@@tmpa 8\relax%
1743  \putratom{120}{-110}{\@@tmpb}%     % right type
1744  \else\ifx\@@tmpa\aax\relax%
1745  \putratom{120}{-110}{\@@tmpb}%     % right type
1746  \else\ifx\@@tmpa\aay\relax%
1747  \putratom{233}{-110}{\@@tmpb}%     % right type
1748  \else\if\@@tmpa 9\relax%
1749  \putratom{233}{-110}{\@@tmpb}%     % right type
1750  \else\if\@@tmpa 0\relax%
1751  \putratom{196}{-30}{\@@tmpb}%      % right type
1752  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
1753 % ***********************
1754 % * setting fused rings *
1755 % ***********************
1756 \expandafter\twoCH@R\member//%
1757 \set@fusion@nonah
1758 \fi\fi\fi\fi\fi\fi\fi\fi\fi%
1759 \fi\fi\fi\fi\fi\fi}%
1760 % %%%%%%%%%%%%%%%%%%%%%%%%
1761 % % setting hetero atoms %
1762 % %%%%%%%%%%%%%%%%%%%%%%%%
1763 \iniflag
1764 \@tmpclipfalse
1765 %position 7 should be treated before
1766 %position 1 (using the same \if@clip)
1767 \Put@Direct(0,-342){%
1768 %%\@clipfalse%2003/5/1 bugfix by Shinsaku Fujita deleted/2006/9/5
1769 \set@hetatom@sixh{#3}{11}{3}{7}{-1}%
1770 % \@gclipfalse \if@fclip \global\@gcliptrue \fi%
1771 % \@fclipfalse \if@eclip \global\@fcliptrue \fi%
1772 % \@eclipfalse \if@clip \global\@ecliptrue \fi%
1773 \@gclipfalse \if@fclip \@gcliptrue \fi%
1774 \@fclipfalse \if@eclip \@fcliptrue \fi%
1775 \@eclipfalse \if@clip \@ecliptrue \fi%
1776 \@clipfalse%2006/9/5added
1777 \storeclipinfo
1778 }%substituents on 5 to 7
1779 %%\developclipinfo%%2006/9/5 deleted
1780 \Put@Direct(0,0){\set@hetatom@sixh{#3}{5}{1}{5}{-1}%
1781 %   \if@aclip \global\@acliptrue\fi
1782 %   \if@bclip \global\@bcliptrue\fi
1783 %   \if@cclip \global\@ccliptrue\fi
1784 \storeclipinfo
1785 }% %substituents on 1 to 3

1786 %%\developclipinfo%%2006/9/5 deleted
1787 \Put@Direct(0,-342){\set@hetatom@sixh{#3}{-3}{0}{2}{0}%
1788 % \@aclipfalse \if@aclip \global\@hcliptrue \fi%
1789 % \@aclipfalse \if@aclip \@hcliptrue \fi
1790 \@hclipfalse \if@aclip \@hcliptrue \fi%%2006/9/5 bugfix
1791 \storeclipinfo
1792 }%%substituent on 4
1793 %%\developclipinfo%%2006/9/5 deleted
1794 \Put@Direct(0,0){\set@vrtx@nonafuseh{#3}%
1795 \@iclipfalse%2006/9/5 bugfix by Shinsaku Fujita
1796 \@jclipfalse%2006/9/5 bugfix by Shinsaku Fujita
1797 \@tmpclipfalse
1798 %%  \if@iclip \global\@tmpcliptrue \fi
1799 %%  \if@jclip \global\@icliptrue \fi
1800 %%  \if@tmpclip \global\@jcliptrue \fi
1801 \if@iclip \@tmpcliptrue \fi
1802 \if@jclip \@icliptrue \else \@iclipfalse \fi
1803 \if@tmpclip \@jcliptrue \else \@jclipfalse \fi
1804 \storeclipinfo
1805 %===\clipinfo===
1806 }% fused positions
1807 \developclipinfo
1808 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1809 % % setting substituents and exocyclic bonds %
1810 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1811 \Put@Direct(0,0){\setsixringh{#4}{5}{1}{5}{-1}}%  %substituents on 1 to 3
1812 {\@clipfalse \if@eclip \@cliptrue \fi%     %substituents on 5 to 7
1813 \@eclipfalse \if@fclip \@ecliptrue \fi%
1814 \@fclipfalse \if@gclip \@fcliptrue \fi%
1815 \Put@Direct(0,-342){\setsixringh{#4}{11}{3}{7}{-1}}%

1816 }%

1817 {\@aclipfalse \if@hclip \@acliptrue \fi%   %substituent on 4
1818 \Put@Direct(0,-342){\setsixringh{#4}{-3}{0}{2}{0}}%

1819 }% 1820 {%

1821 % \@clipfusefalse \if@iclip \@clipfusetrue \fi%change to the next line
1822 \@clipfusefalse \if@jclip \@clipfusetrue \fi%2006/9/5
1823 \Put@Direct(303,-171){\setatombond{#4}{-8}{4}}%   %9 for 7a position

1824 }% 1825 {%

1826 % \@clipfusefalse \if@jclip \@clipfusetrue \fi%change to the next line
1827 \@clipfusefalse \if@iclip \@clipfusetrue \fi%2006/9/5
1828 \Put@Direct(103,-171){\setatombond{#4}{-7}{10}}% %8 for 3a position

1829 }%

1830 \end{ShiftPicEnvB}%
1831 \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
1832 \def\set@vrtx@nonafuseh#1{%
1833 \@forsemicol\member:=#1\do{%

1834 \ifx\member\empty\else
1835 \expandafter\@m@mb@r\member;\relax%
1836 \expandafter\twoch@r\@membera{}%
1837 \ifcase\@tmpa\or\or
1838 \or%%%%3
1839 \if\@tmpb a%
1840  \global\@icliptrue%
1841  \putlatom{135}{-211}{\@memberb}%             % left type
1842 \else\if\@tmpb h%
1843  \XyMTeXWarning{Forbidden fused position `3a' or `8'}%
1844 \else\if\@tmpb s%
1845  \XyMTeXWarning{Forbidden fused position `3a' or `8'}%
1846 \else\ifx\@tmpb\empty\relax
1847 \else
1848  \XyMTeXWarning{Forbidden fused position `3a' or `8'}%
1849 \fi\fi\fi\fi
1850 \or\or\or
1851 \or%7
1852 \if\@tmpb a%
1853  \global\@jcliptrue%
1854  \putratom{273}{-211}{\@memberb}%             % right type
1855 \else\if\@tmpb h%
1856  \XyMTeXWarning{Forbidden fused position `7a' or `9'}%
1857 \else\if\@tmpb s%
1858  \XyMTeXWarning{Forbidden fused position `7a' or `9'}%
1859 \else\ifx\@tmpb\empty\relax
1860 \else
1861  \XyMTeXWarning{Forbidden fused position `7a' or `9'}%
1862 \fi\fi\fi\fi
1863 \or%8 (= 3a)
1864 \ifx\@tmpb\empty%
1865  \global\@icliptrue%
1866  \putlatom{135}{-211}{\@memberb}%             % left type
1867 \else
1868  \XyMTeXWarning{Forbidden fused position `3a' or `8'}%

1869 \fi

1870 \or%9 (= 7a)
1871 \ifx\@tmpb\empty%
1872  \global\@jcliptrue%
1873  \putratom{273}{-211}{\@memberb}%             % right type
1874 \else
1875  \XyMTeXWarning{Forbidden fused position `7a' or `9'}%

1876 \fi

1877 \fi\fi}%
1878 }% 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

1879 \def\nonaheterohi{\@ifnextchar({\@nona@heterohi(@}{\@nona@heterohi(@)}}
1880 \def\@nona@heterohi(#1){\@ifnextchar[{\@nona@@heterohi(#1)[@}%
1881 {\@nona@@heterohi(#1)[@]}}
1882 \def\@nona@@heterohi(#1)[#2]#3#4{\@ifnextchar[%
1883 {\@nonaheterohi(#1)[#2]{#3}{#4}[@}%
1884 {\@nonaheterohi(#1)[#2]{#3}{#4}[@]}}
1885 \def\@nonaheterohi(#1)[#2]#3#4[#5]{%
1886 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1887 % % treatment of atom list %
1888 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1889 \iniflag\iniatom%initialize
1890 \test@vertix@nonavi{#3}%
1891 % %%%%%%%%%%%%%%%%%%%%%%%
1892 % % adjustment for (yl) %
1893 % %%%%%%%%%%%%%%%%%%%%%%%

1894 \@reset@ylsw%
1895 \ylpositionh{#4}{0}{0}{4}{0}%   %substituents on 1 to 3
1896 \if@ylsw \ifx\@@ylii\empty
1897 \def\@@ylii{0}\def\@@yli{0}\fi
1898 \else
1899 {\let\ddd=\eee\let\eee=\fff\let\fff=\gggA
1900 \ylpositionh{#4}{0}{3}{7}{0}%%substituents on 4 to 6

1901 }% 1902 \fi

1903 \if@ylsw \ifx\@@ylii\empty
1904 \def\@@ylii{0}\def\@@yli{342}\fi
1905 \else
1906 {\let\aaa=\hhh
1907 \ylpositionh{#4}{-6}{0}{2}{0}%%substituent on 7

1908 }% 1909 \fi

1910 \if@ylsw \ifx\@@ylii\empty
1911 \def\@@ylii{0}\def\@@yli{342}\fi
1912 \else

1913 {%

1914 \clipdetection%
1915 \@clipfusefalse \if@iclip \@clipfusetrue \fi%
1916 \ylatombondposition{#4}{-7}{4}%  %8 for 3a position

1917 }% 1918 \fi

1919 \if@ylsw \ifx\@@ylii\empty
1920 \def\@@ylii{-303}\def\@@yli{171}\fi
1921 \else

1922 {%

1923 \clipdetection%
1924 \@clipfusefalse \if@jclip \@clipfusetrue \fi%
1925 \ylatombondposition{#4}{-8}{10}%%9 for 7a position

1926 }% 1927 \fi

1928 \if@ylsw \ifx\@@ylii\empty
1929 \def\@@ylii{-103}\def\@@yli{171}\fi

1930 \fi

1931 \begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
1932 (1200,1200)(-400,-800){nonaheterohi}%2002/4/30 by S. Fujita
1933 % %%%%%%%%%%%%%%%%%%
1934 % % outer skeleton %
1935 % %%%%%%%%%%%%%%%%%%
1936 \begingroup
1937 \resetbdsw%
1938 \@bond@@omit{#5}%
1939 {\let\fff=\jjj \let\eee=\iii%
1940 \set@skel@bondh{#1}{a}{a}% bond between 1 and 2 \@aaa -> \hskbonda etc
1941 \set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc
1942 \set@skel@longbond{#1}{c}{hskbondverti}%
1943  % bond between 3 and 3a \@ccc -> \hskbondverti etc
1944 \set@skel@bondh{#1}{j}{e}% bond between 3a and 7a \@jjj -> \hskbonde etc
1945 \set@skel@bondh{#1}{i}{f}% bond between 7a and 1 \@iii -> \hskbondf etc

1946 }%

1947 {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA%

1948 \let\ccc=\iii\let\bbb=\jjj%
1949 \Put@Direct(0,-342){\set@skel@bondh{#1}{h}{a}}%
1950 % bond between 7a and 7 \@hhh -> \hskbonda etc
1951 \Put@Direct(0,-342){\set@skel@bondh{#1}{d}{c}}%
1952 % bond between 3a and 4 \@ddd -> \hskbondc etc
1953 \Put@Direct(0,-342){\set@skel@bondh{#1}{e}{d}}%
1954 % bond between 4 and 5 \@eee -> \hskbondd etc
1955 \Put@Direct(0,-342){\set@skel@bondh{#1}{f}{e}}%
1956 % bond between 5 and 6 \@fff -> \hskbonde etc
1957 \Put@Direct(0,-342){\set@skel@bondh{#1}{g}{f}}%
1958 % bond between 6 and 7 \@ggg -> \hskbondf etc

1959 }%

1960 \endgroup
1961 % %%%%%%%%%%%%%%%%%%%%%
1962 % % inner double bond %
1963 % %%%%%%%%%%%%%%%%%%%%%
1964 \@tfor\member:=#2\do{%
1965 \if\member r\relax%
1966 {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA%
1967 \let\ccc=\iii\let\bbb=\jjj%
1968 \Put@Direct(0,-342){\hbondb}% bond between 3a and 7a
1969 \Put@Direct(0,-342){\hbondf}% bond between 6 and 7
1970 \Put@Direct(0,-342){\hbondd}% bond between 4 and 5

1971 }%

1972 \else \if\member l\relax%
1973 \else \if\member a\relax%
1974 \Put@Direct(0,0){\hbonda}% bond between 1 and 2
1975 \else \if\member b\relax%
1976 \Put@Direct(0,0){\hbondb}% bond between 2 and 3
1977 \else \if\member c\relax%
1978 \Put@Direct(0,0){\hbondverti}% bond between 3 and 3a
1979 \else \if\member d\relax%
1980 {\let\ccc=\iii \let\ddd=\eee%
1981 \Put@Direct(0,-342){\hbondc}% bond between 4 and 3a

1982 }%

1983 \else \if\member e\relax%
1984 {\let\ddd=\eee\let\eee=\fff%
1985 \Put@Direct(0,-342){\hbondd}% bond between 4 and 5

1986 }%

1987 \else \if\member f\relax%
1988 {\let\eee=\fff \let\fff=\gggA%
1989 \Put@Direct(0,-342){\hbonde}% bond between 5 and 6

1990 }%

1991 \else \if\member g\relax%
1992 {\let\aaa=\hhh \let\fff=\gggA%
1993 \Put@Direct(0,-342){\hbondf}% bond between 7 and 6

1994 }%

1995 \else \if\member h\relax%
1996 {\let\aaa=\hhh \let\bbb=\jjj%
1997 \Put@Direct(0,-342){\hbonda}% bond between 7 and 7a

1998 }%

1999 \else \if\member i\relax%
2000 {\let\fff=\jjj%
2001 \Put@Direct(0,0){\hbondf}% bond between 1 and 7a

2002 }%

2003 \else \if\member j\relax%
2004 {\let\ccc=\iii\let\bbb=\jjj%
2005 \Put@Direct(0,-342){\hbondb}% bond between 7a and 3a

2006 }%

2007 \else \if\member J\relax%
2008 {\let\eee=\iii\let\fff=\jjj%
2009 \Put@Direct(0,0){\hbonde}% bond between 7a and 3a

2010 }%

2011 \else \if\member B%aromatic circle
2012 \Put@oCircle(173,0){180}%               %circle (five-membered)
2013 \else \if\member A%aromatic circle
2014 \Put@oCircle(203,-342){240}%            %circle (six-membered)
2015 \else
2016 \expandafter\twoCH@@R\member//%
2017 \def\aax{7a}\def\aay{3a}%
2018  \if\@@tmpa 1\relax%
2019  \putratom{68}{-18}{\@@tmpb}%       % right type
2020  \else\if\@@tmpa 3\relax%
2021  \putratom{233}{60}{\@@tmpb}%       % right type
2022  \else\if\@@tmpa 2\relax%
2023  \putratom{120}{60}{\@@tmpb}%       % right type
2024  \else\if\@@tmpa 7\relax%
2025  \putratom{68}{-360}{\@@tmpb}%      % right type
2026  \else\if\@@tmpa 6\relax%
2027  \putratom{120}{-452}{\@@tmpb}%     % right type
2028  \else\if\@@tmpa 5\relax%
2029  \putratom{233}{-452}{\@@tmpb}%     % right type
2030  \else\if\@@tmpa 4\relax%
2031  \putratom{272}{-360}{\@@tmpb}%     % right type
2032  \else\if\@@tmpa 9\relax%
2033  \putratom{120}{-110}{\@@tmpb}%     % right type
2034  \else\ifx\@@tmpa\aax\relax%
2035  \putratom{120}{-110}{\@@tmpb}%     % right type
2036  \else\ifx\@@tmpa\aay\relax%
2037  \putratom{233}{-110}{\@@tmpb}%     % right type
2038  \else\if\@@tmpa 8\relax%
2039  \putratom{233}{-110}{\@@tmpb}%     % right type
2040  \else\if\@@tmpa 0\relax%
2041  \putratom{140}{-30}{\@@tmpb}%      % right type
2042  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
2043 % ***********************
2044 % * setting fused rings *
2045 % ***********************
2046 \expandafter\twoCH@R\member//%
2047 \set@fusion@nonahi
2048 \fi\fi\fi\fi\fi\fi\fi\fi\fi%
2049 \fi\fi\fi\fi\fi\fi}%
2050 % %%%%%%%%%%%%%%%%%%%%%%%%
2051 % % setting hetero atoms %
2052 % %%%%%%%%%%%%%%%%%%%%%%%%
2053 \iniflag
2054 \Put@Direct(0,0){\set@hetatom@sixh{#3}{0}{0}{4}{0}%
2055 %   \if@aclip \global\@acliptrue\fi

2056 %   \if@bclip \global\@bcliptrue\fi
2057 %   \if@cclip \global\@ccliptrue\fi
2058 \storeclipinfo
2059 }% %substituents on 1 to 3
2060 \developclipinfo
2061 \Put@Direct(0,-342){\set@hetatom@sixh{#3}{0}{3}{7}{0}%
2062 %   \@gclipfalse \if@fclip \global\@gcliptrue \fi%
2063 %   \@fclipfalse \if@eclip \global\@fcliptrue \fi%
2064 %   \@eclipfalse \if@clip \global\@ecliptrue \fi
2065 \@gclipfalse \if@fclip \@gcliptrue \fi%
2066 \@fclipfalse \if@eclip \@fcliptrue \fi%
2067 \@eclipfalse \if@clip \@ecliptrue \fi
2068 \storeclipinfo
2069 }%substituents on 4 to 6
2070 \developclipinfo
2071 \Put@Direct(0,-342){%
2072 \@aclipfalse\@bclipfalse\@cclipfalse%2003/05/01 bugfix by Shinsaku Fujita
2073 \set@hetatom@sixh{#3}{-6}{0}{2}{0}%
2074 %  \@hclipfalse \if@aclip \global\@hcliptrue \fi
2075 \@hclipfalse \if@aclip \@hcliptrue \fi
2076 \storeclipinfo
2077 }%%substituent on 7
2078 \developclipinfo
2079 \Put@Direct(0,0){\set@vrtx@nonafusehi{#3}%
2080 %  \if@iclip \global\@icliptrue \fi
2081 %  \if@jclip \global\@jcliptrue \fi
2082 \storeclipinfo
2083 }% fused positions
2084 \developclipinfo
2085 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2086 % % setting substituents and exocyclic bonds %
2087 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2088 \Put@Direct(0,0){\setsixringh{#4}{0}{0}{4}{0}}%   %substituents on 1 to 3
2089 {\@clipfalse \if@eclip \@cliptrue \fi%     %substituents on 4 to 6
2090 \@eclipfalse \if@fclip \@ecliptrue \fi%
2091 \@fclipfalse \if@gclip \@fcliptrue \fi%
2092 \Put@Direct(0,-342){\setsixringh{#4}{0}{3}{7}{0}}%

2093 }%

2094 {\@aclipfalse \if@hclip \@acliptrue \fi%   %substituent on 7
2095 \Put@Direct(0,-342){\setsixringh{#4}{-6}{0}{2}{0}}%

2096 }%

2097 {\@clipfusefalse \if@iclip \@clipfusetrue \fi%
2098 \Put@Direct(303,-171){\setatombond{#4}{-7}{4}}%  %8 for 3a position

2099 }%

2100 {\@clipfusefalse \if@jclip \@clipfusetrue \fi%
2101 \Put@Direct(103,-171){\setatombond{#4}{-8}{10}}%%9 for 7a position

2102 }%

2103 \end{ShiftPicEnvB}%
2104 \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
2105 \def\set@vrtx@nonafusehi#1{%
2106 \@forsemicol\member:=#1\do{%
2107 \ifx\member\empty\else
2108 \expandafter\@m@mb@r\member;\relax%
2109 \expandafter\twoCH@R\@membera//%
2110 \ifcase\@tmpa%

2111 \or 2112 \or

2113 \or%%%%3
2114 \if\@tmpb a%
2115  \global\@icliptrue%
2116  \putratom{273}{-211}{\@memberb}%            % right type
2117 \else\relax

2118 \fi

2119 \or%4
2120 \or%5
2121 \or%6
2122 \or%7
2123 \if\@tmpb a%
2124  \global\@jcliptrue%
2125  \putlatom{135}{-211}{\@memberb}%            % left type
2126 \else\relax

2127 \fi

2128 \or%8 (= 3a)
2129 \ifx\@tmpb\empty
2130  \global\@icliptrue%
2131  \putratom{273}{-211}{\@memberb}%            % right type
2132 \else
2133  \XyMTeXWarning{Forbidden spiro ring for the 3a position}%

2134 \fi

2135 \or%9 (= 7a)
2136 \ifx\@tmpb\empty
2137  \global\@jcliptrue%
2138  \putlatom{135}{-211}{\@memberb}%            % left type
2139 \else
2140  \XyMTeXWarning{Forbidden spiro ring for the 7a position}%

2141 \fi

2142 \fi\fi}%
2143 }% 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
2144 \def\purineh{\@ifnextchar[{\@purineh[@}{\@purineh[ra]}}%
2145 \def\@purineh[#1]#2{%
2146 \iforigpt \typeout{command `purineh' %
2147 is based on `nonaheteroh'.}\fi%
2148 \nonaheteroh[#1]{1==N;3==N;5==N;7==N}{#2}}%
2149 \def\purinehi{\@ifnextchar[{\@purinehi[@}{\@purinehi[ra]}}%
2150 \def\@purinehi[#1]#2{%
2151 \iforigpt \typeout{command `purinehi' %
2152 is based on `nonaheterohi'.}\fi%
2153 \nonaheterohi[#1]{1==N;3==N;5==N;7==N}{#2}}%
\indoleh \indolehi

2154 \def\indoleh{\@ifnextchar[{\@indoleh[@}{\@indoleh[rb]}}%
2155 \def\@indoleh[#1]#2{%
2156 \iforigpt \typeout{command `indoleh' %
2157 is based on `nonaheteroh'.}\fi%
2158 \nonaheteroh[#1]{1==N}{#2}}%
2159 \def\indolehi{\@ifnextchar[{\@indolehi[@}{\@indolehi[rb]}}%
2160 \def\@indolehi[#1]#2{%
2161 \iforigpt \typeout{command `indolehi' %
2162 is based on `nonaheterohi'.}\fi%
2163 \nonaheterohi[#1]{1==N}{#2}}%
\indolizineh
\indolizinehi
2164 \def\indolizineh{%
2165 \@ifnextchar[{\@indolizineh[@}{\@indolizineh[aceg]}}%
2166 \def\@indolizineh[#1]#2{%
2167 \iforigpt \typeout{command `indolizineh' %
2168 is based on `nonaheteroh'.}\fi%
2169 \nonaheteroh[#1]{7a==N}{#2}}%
2170 \def\indolizinehi{%
2171 \@ifnextchar[{\@indolizinehi[@}{\@indolizinehi[aceg]}}%
2172 \def\@indolizinehi[#1]#2{%
2173 \iforigpt \typeout{command `indolizinehi' %
2174 is based on `nonaheterohi'.}\fi%
2175 \nonaheterohi[#1]{7a==N}{#2}}%
\isoindoleh
\isoindolehi
2176 \def\isoindoleh{%
2177 \@ifnextchar[{\@isoindoleh[@}{\@isoindoleh[cegi]}}%
2178 \def\@isoindoleh[#1]#2{%
2179 \iforigpt \typeout{command `isoindoleh' %
2180 is based on `nonaheteroh'.}\fi%
2181 \nonaheteroh[#1]{2==N}{#2}}%
2182 \def\isoindolehi{%
2183 \@ifnextchar[{\@isoindolehi[@}{\@isoindolehi[cegi]}}%
2184 \def\@isoindolehi[#1]#2{%
2185 \iforigpt \typeout{command `isoindolehi' %
2186 is based on `nonaheterohi'.}\fi%
2187 \nonaheterohi[#1]{2==N}{#2}}%
\benzofuraneh
\benzofuranehi
2188 \def\benzofuraneh{%
2189 \@ifnextchar[{\@benzofuraneh[@}{\@benzofuraneh[rb]}}%
2190 \def\@benzofuraneh[#1]#2{%
2191 \iforigpt \typeout{command `benzofuraneh' %
2192 is based on `nonaheteroh'.}\fi%
2193 \nonaheteroh[#1]{1==O}{#2}}%
2194 \def\benzofuranehi{%
2195 \@ifnextchar[{\@benzofuranehi[@}{\@benzofuranehi[rb]}}%
2196 \def\@benzofuranehi[#1]#2{%
2197 \iforigpt \typeout{command `benzofuranehi' %
2198 is based on `nonaheterohi'.}\fi%
2199 \nonaheterohi[#1]{1==O}{#2}}%
\isobenzofuraneh
\isobenzofuranehi

2200 \def\isobenzofuraneh{\@ifnextchar[{\@isobenzofuraneh[@}%
2201 {\@isobenzofuraneh[cegi]}}%
2202 \def\@isobenzofuraneh[#1]#2{%
2203 \iforigpt \typeout{command `isobenzofuraneh' %
2204 is based on `nonaheteroh'.}\fi%
2205 \nonaheteroh[#1]{2==O}{#2}}%
2206 \def\isobenzofuranehi{\@ifnextchar[{\@isobenzofuranehi[@}%
2207 {\@isobenzofuranehi[cegi]}}%
2208 \def\@isobenzofuranehi[#1]#2{%
2209 \iforigpt \typeout{command `isobenzofuranehi' %
2210 is based on `nonaheterohi'.}\fi%
2211 \nonaheterohi[#1]{2==O}{#2}}%
\benzoxazoleh
\benzoxazolehi
2212 \def\benzoxazoleh{%
2213 \@ifnextchar[{\@benzoxazoleh[@}{\@benzoxazoleh[rb]}}%
2214 \def\@benzoxazoleh[#1]#2{%
2215 \iforigpt \typeout{command `benzoxazoleh' %
2216 is based on `nonaheteroh'.}\fi%
2217 \nonaheteroh[#1]{1==O;3==N}{#2}}%
2218 \def\benzoxazolehi{%
2219 \@ifnextchar[{\@benzoxazolehi[@}{\@benzoxazolehi[rb]}}%
2220 \def\@benzoxazolehi[#1]#2{%
2221 \iforigpt \typeout{command `benzoxazolehi' %
2222 is based on `nonaheterohi'.}\fi%
2223 \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)

Several examples are shown as follows.

       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
2224 \def\sixunith{\@ifnextchar[{\@sixunith[@}{\@sixunith[@]}}
2225 \def\@sixunith[#1]#2#3#4{\sixheteroh[#1]{#2}{#3}[#4]}

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

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
2226 \def\fiveunith{\@ifnextchar[{\@fiveunith[@}{\@fiveunith[r]}}
2227 \def\@fiveunith[#1]#2#3#4{\fiveheteroh[#1]{#2}{#3}[#4]}

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
2228 \def\fiveunithi{\@ifnextchar[{\@fiveunithi[@}{\@fiveunithi[r]}}
2229 \def\@fiveunithi[#1]#2#3#4{\fiveheterohi[#1]{#2}{#3}[#4]}

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

2230 \def\threeheteroh{\@ifnextchar({\@three@heteroh(@}{\@three@heteroh(@)}}
2231 \def\@three@heteroh(#1){\@ifnextchar[{\@three@@heteroh(#1)[@}%
2232 {\@three@@heteroh(#1)[@]}}
2233 \def\@three@@heteroh(#1)[#2]#3#4{\@ifnextchar[%
2234 {\@threeheteroh(#1)[#2]{#3}{#4}[@}%
2235 {\@threeheteroh(#1)[#2]{#3}{#4}[@]}}
2236 \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.

2237 % %%%%%%%%%%%%%%%%%%%%%%%%%%
2238 % % treatment of atom list %
2239 % %%%%%%%%%%%%%%%%%%%%%%%%%%
2240 \iniatom\iniflag%initialize
2241 \test@vertix@sixv{#3}{d}{f}{b}{@}{@}{@}%tentative use for six-h
2242 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2243 % % adustment of subs positions %
2244 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

2245 \@reset@ylsw%
2246 \ylpositionh{#4}{3}{3}{5}{0}%subst 1
2247 \if@ylsw \ifx\@@ylii\empty
2248 \def\@@ylii{235}\def\@@yli{-103}\fi
2249 \else
2250 \ylpositionh{#4}{-1}{1}{3}{0}%subst 3

2251 \fi

2252 \if@ylsw \ifx\@@ylii\empty
2253 \def\@@ylii{103}\def\@@yli{-29}\fi
2254 \else
2255 \ylpositionh{#4}{4}{5}{7}{0}%subst 2

2256 \fi

2257 \if@ylsw \ifx\@@ylii\empty
2258 \def\@@ylii{103}\def\@@yli{-171}\fi

2259 \fi

2260 \begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
2261 (580,700)(-200,-240){threeheteroh}%
2262 (200,240)%2002/4/30 by S. Fujita

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.

2263 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%
2264 % % retreatment of atom list %
2265 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%
2266 \iniatom\iniflag%initialize
2267 \test@vertix@sixv{#3}{c}{e}{a}{@}{@}{@}%
2268 \test@vertix@sixv{#3}{b}{d}{f}{@}{@}{@}%
2269 % %%%%%%%%%%%%%%%%%%
2270 % % outer skeleton %
2271 % %%%%%%%%%%%%%%%%%%
2272 {\resetbdsw%
2273 \@bond@@omit{#5}%
2274 \Put@Direct(0,0){\set@skel@bond{#1}{a}{c}}%
2275  % bond between 1 and 2 \@aaa -> \skbondc etc
2276 \Put@Direct(171,-103){\set@skel@bond{#1}{b}{e}}%
2277  % bond between 2 and 3 \@bbb -> \skbonde etc
2278 \Put@Direct(0,-200){\set@skel@bond{#1}{c}{a}}%
2279  % bond between 3 and 1 \@ccc -> \skbonda etc

2280 }% 2281 %

2282 % \Put@Direct(0,0){\skbondc}% bond between 1 and 2
2283 % \Put@Direct(0,-200){\skbonda}% bond between 1 and 3
2284 % \Put@Direct(171,-103){\skbonde}%bond between 2 and 3
2285 % %%%%%%%%%%%%%%%%%%%%%
2286 % % inner double bond %
2287 % %%%%%%%%%%%%%%%%%%%%%
2288 \@tfor\member:=#2\do{%
2289 \if\member r\relax%

2290 \else\if\member a\relax\Put@Direct(0,0){\bondc}%
2291 \else\if\member b\relax\Put@Direct(171,-103){\bonde}%
2292 \else\if\member c\relax\Put@Direct(0,-200){\bonda}%
2293 \else\if\member A\relax% aromatic circle
2294 \Put@oCircle(70,103){100}%               %circle
2295 \else
2296 % %%%%%%%%%%%%%%%%%%%%%%%%%
2297 % % inner bond attachment %
2298 % %%%%%%%%%%%%%%%%%%%%%%%%%
2299 \expandafter\twoCH@@R\member//%
2300  \set@fusionadd@threeh
2301 \fi\fi\fi\fi\fi%

2302 }%

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.

2303 % %%%%%%%%%%%%%%%%%%%%%%%%
2304 % % setting hetero atoms %
2305 % %%%%%%%%%%%%%%%%%%%%%%%%
2306 \iniflag
2307 %\Put@Direct(-235,103){\set@hetatom@sixh{#3}{3}{3}{5}{0}%
2308 \Put@Direct(-215,103){\set@hetatom@sixh{#3}{3}{3}{5}{0}%
2309 %\if@clip \global\@cliptrue\fi
2310 \storeclipinfo
2311 }%subst 1 <--six h 4
2312 \developclipinfo
2313 \Put@Direct(-103,29){\set@hetatom@sixh{#3}{-1}{1}{3}{0}%
2314 %\if@bclip \global\@bcliptrue\fi
2315 \storeclipinfo
2316 }%subst 3 <--six h 2
2317 \developclipinfo
2318 \Put@Direct(-103,171){\set@hetatom@sixh{#3}{4}{5}{7}{0}%
2319 %\if@fclip \global\@fcliptrue\fi
2320 \storeclipinfo
2321 }%subst 2 <--six h 6
2322 \developclipinfo
2323 % %%%%%%%%%%%%%%%%%%%%%%%%
2324 % % setting substituents %
2325 % %%%%%%%%%%%%%%%%%%%%%%%%
2326 \Put@Direct(-235,103){\setsixringh{#4}{3}{3}{5}{0}}%subst 1
2327 \Put@Direct(-103,29){\setsixringh{#4}{-1}{1}{3}{0}}%subst 3
2328 \Put@Direct(-103,171){\setsixringh{#4}{4}{5}{7}{0}}%subst 2
2329 \end{ShiftPicEnvB}%
2330 \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

2331 \def\set@fusionadd@threeh{%
2332  \if\@@tmpa 0\relax%
2333  \putratom{35}{85}{\scriptsize\@@tmpb}%      % right type
2334  \else\if\@@tmpa 1\relax%
2335  \putratom{80}{85}{\scriptsize\@@tmpb}%      % right type
2336  \else\if\@@tmpa 2\relax%
2337  \putratom{15}{50}{\scriptsize\@@tmpb}%     % right type
2338  \else\if\@@tmpa 3\relax%
2339  \putratom{15}{120}{\scriptsize\@@tmpb}%    % right type
2340  \else\if\@@tmpa 4\relax%
2341  \putratom{180}{130}{\scriptsize\@@tmpb}%      % right type
2342  \else\if\@@tmpa 5\relax%
2343  \putratom{20}{-60}{\scriptsize\@@tmpb}%      % right type
2344  \else\if\@@tmpa 6\relax%
2345  \putratom{20}{230}{\scriptsize\@@tmpb}%    % right type
2346  \else
2347 % %%%%%%%%%%%%%%%%%%%%%
2348 % % inner bond fusion %
2349 % %%%%%%%%%%%%%%%%%%%%%
2350  \set@fusion@threeh
2351  \fi\fi\fi\fi\fi\fi\fi%

2352 }%

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
2353 \def\set@fusion@threeh{%
2354 % %%%%%%%%%%%%%%%%%%%%%
2355 % % inner bond fusion %
2356 % %%%%%%%%%%%%%%%%%%%%%
2357 \if\@@tmpa b\relax%
2358  \putlratom{0}{0}{\@@tmpb}%    % bond fused
2359  \FuseWarning{0}{-200}%
2360  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}%
2361  \else\if\@@tmpa B\relax%
2362  \putlratom{0}{200}{\@@tmpb}%      % bond fused
2363  \FuseWarning{0}{200}%
2364  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}%
2365  \else\if\@@tmpa a\relax%
2366  \putlratom{171}{103}{\@@tmpb}%    % bond fused
2367  \FuseWarning{171}{103}%
2368  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}%
2369  \else\if\@@tmpa A\relax%
2370  \putlratom{0}{0}{\@@tmpb}%    % bond fused
2371  \FuseWarning{-171}{-103}%
2372  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}%
2373  \else\if\@@tmpa c\relax%
2374  \putlratom{0}{200}{\@@tmpb}%      % bond fused
2375  \FuseWarning{-171}{103}%
2376  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c}%
2377  \else\if\@@tmpa C\relax%
2378  \putlratom{171}{103}{\@@tmpb}%    % bond fused

2379  \FuseWarning{171}{-103}%
2380  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C}%
2381 \fi\fi\fi\fi\fi\fi%
2382 }% 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)

Several examples are shown as follows.

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

2383 \def\threeheterohi{\@ifnextchar({\@three@heterohi(@}{\@three@heterohi(@)}}
2384 \def\@three@heterohi(#1){\@ifnextchar[{\@three@@heterohi(#1)[@}%
2385 {\@three@@heterohi(#1)[@]}}
2386 \def\@three@@heterohi(#1)[#2]#3#4{\@ifnextchar[%
2387 {\@threeheterohi(#1)[#2]{#3}{#4}[@}%
2388 {\@threeheterohi(#1)[#2]{#3}{#4}[@]}}
2389 \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.

2390 % %%%%%%%%%%%%%%%%%%%%%%%%%%
2391 % % treatment of atom list %
2392 % %%%%%%%%%%%%%%%%%%%%%%%%%%
2393 \iniatom\iniflag%initialize
2394 \test@vertix@sixv{#3}{a}{e}{c}{@}{@}{@}%tentative use for six-h
2395 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2396 % % adustment of subs positions %
2397 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2398 \@reset@ylsw%
2399 \ylpositionh{#4}{0}{0}{2}{0}%subst 1
2400 \if@ylsw \ifx\@@ylii\empty
2401 \def\@@ylii{171}\def\@@yli{-103}\fi
2402 \else
2403 \ylpositionh{#4}{0}{2}{4}{0}%subst 3

2404 \fi

2405 \if@ylsw \ifx\@@ylii\empty
2406 \def\@@ylii{303}\def\@@yli{-29}\fi
2407 \else
2408 \ylpositionh{#4}{3}{4}{6}{0}%subst 2

2409 \fi

2410 \if@ylsw \ifx\@@ylii\empty
2411 \def\@@ylii{303}\def\@@yli{-171}\fi

2412 \fi

2413 \begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
2414 (580,700)(-400,-240){threeheterohi}%
2415 (400,240)%2002/4/30 by S. Fujita

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.

2416 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%
2417 % % retreatment of atom list %
2418 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%
2419 \iniatom\iniflag%initialize
2420 \test@vertix@sixv{#3}{e}{c}{a}{@}{@}{@}%
2421 \test@vertix@sixv{#3}{f}{d}{b}{@}{@}{@}%

2422 % %%%%%%%%%%%%%%%%%%
2423 % % outer skeleton %
2424 % %%%%%%%%%%%%%%%%%%
2425 {\resetbdsw%
2426 \@bond@@omit{#5}%
2427 \Put@Direct(0,0){\set@skel@bond{#1}{a}{d}}%
2428  % bond between 1 and 2 \@aaa -> \skbondd etc
2429 \Put@Direct(-171,-103){\set@skel@bond{#1}{b}{b}}%
2430  % bond between 2 and 3 \@bbb -> \skbondb etc
2431 \Put@Direct(0,-200){\set@skel@bond{#1}{c}{f}}%
2432  % bond between 3 and 1 \@ccc -> \skbondf etc

2433 }%

2434 % %%%%%%%%%%%%%%%%%%%%%
2435 % % inner double bond %
2436 % %%%%%%%%%%%%%%%%%%%%%
2437 \@tfor\member:=#2\do{%
2438 \if\member r\relax%
2439 \else\if\member a\relax\Put@Direct(0,0){\bondd}%
2440 \else\if\member b\relax\Put@Direct(-171,-103){\bondb}%
2441 \else\if\member c\relax\Put@Direct(0,-200){\bondf}%
2442 \else\if\member A\relax% aromatic circle
2443 \Put@oCircle(70,103){100}%               %circle
2444 \else
2445 % %%%%%%%%%%%%%%%%%%%%%%%%%
2446 % % inner bond attachment %
2447 % %%%%%%%%%%%%%%%%%%%%%%%%%
2448 \expandafter\twoCH@@R\member//%
2449  \set@fusionadd@threehi
2450 \fi\fi\fi\fi\fi%

2451 }%

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.

2452 % %%%%%%%%%%%%%%%%%%%%%%%%
2453 % % setting hetero atoms %
2454 % %%%%%%%%%%%%%%%%%%%%%%%%
2455 \iniflag
2456 \Put@Direct(-171,103){\set@hetatom@sixh{#3}{0}{0}{2}{0}%
2457 %\if@aclip \global\@acliptrue\fi
2458 \storeclipinfo
2459 }%subst 1 <--six h 1
2460 \developclipinfo
2461 \Put@Direct(-303,29){\set@hetatom@sixh{#3}{0}{2}{4}{0}%
2462 %\if@cclip \global\@ccliptrue\fi
2463 \storeclipinfo
2464 \developclipinfo
2465 }%subst 3 <--six h 3
2466 \Put@Direct(-303,171){\set@hetatom@sixh{#3}{3}{4}{6}{0}%
2467 %\if@eclip \global\@ecliptrue\fi
2468 \storeclipinfo
2469 }%subst 2 <--six h 5
2470 \developclipinfo

2471 % %%%%%%%%%%%%%%%%%%%%%%%%
2472 % % setting substituents %
2473 % %%%%%%%%%%%%%%%%%%%%%%%%
2474 \Put@Direct(-171,103){\setsixringh{#4}{0}{0}{2}{0}}%subst 1
2475 \Put@Direct(-303,29){\setsixringh{#4}{0}{2}{4}{0}}%subst 3
2476 \Put@Direct(-303,171){\setsixringh{#4}{3}{4}{6}{0}}%subst 2
2477 \end{ShiftPicEnvB}%
2478 \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
2479 \def\set@fusionadd@threehi{%
2480  \if\@@tmpa 0\relax%
2481  \putlatom{-35}{85}{\scriptsize\@@tmpb}%      % left type
2482  \else\if\@@tmpa 1\relax%
2483  \putlatom{-80}{85}{\scriptsize\@@tmpb}%      % left type
2484  \else\if\@@tmpa 2\relax%
2485  \putlatom{-15}{50}{\scriptsize\@@tmpb}%     % left type
2486  \else\if\@@tmpa 3\relax%
2487  \putlatom{-15}{120}{\scriptsize\@@tmpb}%    % left type
2488  \else\if\@@tmpa 4\relax%
2489  \putlatom{-180}{130}{\scriptsize\@@tmpb}%      % left type
2490  \else\if\@@tmpa 5\relax%
2491  \putlatom{-20}{-60}{\scriptsize\@@tmpb}%      % left type
2492  \else\if\@@tmpa 6\relax%
2493  \putlatom{-20}{230}{\scriptsize\@@tmpb}%    % left type
2494  \else
2495 % %%%%%%%%%%%%%%%%%%%%%
2496 % % inner bond fusion %
2497 % %%%%%%%%%%%%%%%%%%%%%
2498  \set@fusion@threehi
2499  \fi\fi\fi\fi\fi\fi\fi%

2500 }%

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
2501 \def\set@fusion@threehi{%
2502 % %%%%%%%%%%%%%%%%%%%%%
2503 % % inner bond fusion %
2504 % %%%%%%%%%%%%%%%%%%%%%
2505 \if\@@tmpa b\relax%
2506  \putlratom{0}{0}{\@@tmpb}%    % bond fused
2507  \FuseWarning{0}{-200}%
2508  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}%
2509  \else\if\@@tmpa B\relax%
2510  \putlratom{0}{200}{\@@tmpb}%      % bond fused
2511  \FuseWarning{0}{200}%

2512  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}%
2513  \else\if\@@tmpa a\relax%
2514  \putlratom{-171}{103}{\@@tmpb}%    % bond fused
2515  \FuseWarning{-171}{103}%
2516  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}%
2517  \else\if\@@tmpa A\relax%
2518  \putlratom{0}{0}{\@@tmpb}%    % bond fused
2519  \FuseWarning{171}{-103}%
2520  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}%
2521  \else\if\@@tmpa c\relax%
2522  \putlratom{0}{200}{\@@tmpb}%      % bond fused
2523  \FuseWarning{171}{103}%
2524  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c}%
2525  \else\if\@@tmpa C\relax%
2526  \putlratom{-171}{103}{\@@tmpb}%    % bond fused
2527  \FuseWarning{-171}{-103}%
2528  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C}%
2529 \fi\fi\fi\fi\fi\fi%
2530 }% end of the macro \set@fusion@threehi

2531 ⟨/hetaromh⟩