Heterocycles of vertical type by hetarom.sty (v2.00) of XΥMTEX

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

1998/12/25

1 Introduction

1.1 Options for docstrip

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

1.2 Version Information

1 ⟨∗hetarom⟩

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

2 List of commands for hetarom.sty

*********************************
* hetarom.sty: list of commands *
*********************************
<Various flags (switches)>
    \if@gclip \@gclipfalse \@gcliptrue

\if@hclip \@hclipfalse \@hcliptrue
\if@iclip \@iclipfalse \@icliptrue
\if@jclip \@jclipfalse \@jcliptrue
\iniflag
\iniatom
\aaa
\bbb
\ccc
\ddd
\eee
\fff
\ggg
\hhh
\iii
\jjj

<Six-Membered Heterocycles>
Setting inner double bonds
\bonda
\bondb
\bondc
\bondd
\bonde
\bondf
\bondhoriz
\bondhorizi
Setting skeletal bonds
\skbonda
\skbondf
\skbondc
\skbondd
\skbondb
\skbonde
\skbondhoriz
\skbondhorizi
Setting dotted skeletal bonds
\dotskbonda
\dotskbondf
\dotskbondc
\dotskbondd
\dotskbondb
\dotskbonde
\dotskbondhoriz

\dotskbondhorizi
Basic Macros
\sixheterov               \@sixheterov
\sixheterovi              \@sixheterovi
Application Macros
\pyridinev                \@pyridinev
\pyridinevi               \@pyridinevi
\pyrazinev                \@pyrazinev
\pyrimidinev              \@pyrimidinev
\pyrimidinevi             \@pyrimidinevi
\pyridazinev              \@pyridazinev
\pyridazinevi             \@pyridazinevi
\triazinev                \@triazinev
\triazinevi               \@triazinevi

<Five-Membered Heterocycles>
Basic Macros
\fiveheterov              \@fiveheterov
\fiveheterovi             \@fiveheterovi
Application Macros
\pyrrolev                 \@pyrrolev
\pyrazolev                \@pyrazolev
\imidazolev               \@imidazolev
\isoxazolev               \@isoxazolev
\oxazolev                 \@oxazolev
\furanv                   \@furanv
\thiophenev               \@thiophenev
\pyrrolevi                \@pyrrolevi
\pyrazolevi               \@pyrazolevi
\imidazolevi              \@imidazolevi
\isoxazolevi              \@isoxazolevi
\oxazolevi                \@oxazolevi
\furanvi                   \@furanvi
\thiophenevi               \@thiophenevi

<Six-Six-Fused Heterocycles>

Basic Macros
\decaheterov              \@decaheterov
\decaheterovi             \@decaheterovi
\decaheterovb             \@decaheterovb
\decaheterovt             \@decaheterovt
Adjustment Macros (for structures as substituents)
\changes{v1.02}{1998/10/16}{Newly added command}
\clipdetection
\ylhetposition
\ylhetpositionb
\ylhetpositiont
Application Macros
\quinolinev               \@quinolinev
\quinolinevi              \@quinolinevi
\quinolinevb              \@quinolinevb
\quinolinevt              \@quinolinevt
\isoquinolinev            \@isoquinolinev
\isoquinolinevi           \@isoquinolinevi
\isoquinolinevb           \@isoquinolinevb
\isoquinolinevt           \@isoquinolinevt
\quinoxalinev             \@quinoxalinev
\quinoxalinevi            \@quinoxalinevi
\quinoxalinevb            \@quinoxalinevb
\quinoxalinevt            \@quinoxalinevt
\quinazolinev             \@quinazolinev
\quinazolinevi            \@quinazolinevi
\quinazolinevb            \@quinazolinevb
\quinazolinevt            \@quinazolinevt
\cinnolinev               \@cinnolinev
\cinnolinevi              \@cinnolinevi
\cinnolinevb              \@cinnolinevb
\cinnolinevt              \@cinnolinevt
\pteridinev               \@pteridinev
\pteridinevi              \@pteridinevi
\pteridinevb              \@pteridinevb
\pteridinevt              \@pteridinevt

<Six-Five-Fused Heterocycles>

\nonaheterov              \@nonaheterov
\nonaheterovi             \@nonaheterovi
Application Macros
\purinev                  \@purinev
\purinevi                 \@purinevi
\indolev                  \@indolev
\indolevi                 \@indolevi
\indolizinev              \@indolizinev
\indolizinevi             \@indolizinevi
\isoindolev               \@isoindolev
\isoindolevi              \@isoindolevi
\benzofuranev             \@benzofuranev
\benzofuranevi            \@benzofuranevi
\isobenzofuranev          \@isobenzofuranev
\isobenzofuranevi         \@isobenzofuranevi
\benzoxazolev             \@benzoxazolev
\benzoxazolevi            \@benzoxazolevi

<Four-Membered Heterocycles>
Setting bonds
\bondshoriz               \bondshorizi
\skbondshoriz             \skbondshorizi
Basic Macros
\fourhetero               \@fourhetero

<Four-Membered Heterocycles>
Setting inner double bonds
\bondtria                 \bondtrib
\skbondtria               \skbondtrib
\Bondtria                 \Bondtrib
\skBondtria               \skBondtrib
Basic Macros
\fourhetero               \@fourhetero
\set@fusionadd@fourv       \set@fusion@fourv
<Three-Membered Heterocycles>

     \threehetero              \@threehetero
     \threeheteroi             \@threeheteroi
     \threeheterov              \@threeheterov
     \threeheterovi             \@threeheterovi
     \set@fusionadd@threev        \set@fusion@threev
     \set@fusionadd@threevi        \set@fusion@threevi

  <Building Units>
     \sixunitv                 \@sixunitv
     \fiveunitv                \@fiveunitv
     \fiveunitvi               \@fiveunitvi

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 (hetarom.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 \unitlength=0.1pt%

The following switches and macros have been moved to chemstr.sty; hence, they are commented out.

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

32 % }%
33 % \def\resetbdsw{\gdef\@aaa{a}\gdef\@bbb{b}\gdef\@ccc{c}%
34 % \gdef\@ddd{d}\gdef\@eee{e}\gdef\@fff{f}}%

4 Initialization

35 \iniatom%

5 Macros for setting bonds

5.1 Inner double bonds

The macros \sixhetero and \fivehetero 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 \bonda to \bondf are used to set a bond on each edge of a six- or five-membered ring; and the inner macros \bondz to \bondzi draw horizontal 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 *
 ******************************
 The following numbering is adopted in these macros.
                   aaa
                    1
                  f * a
           fff 6  *   *  2 bbb
             e   |     |   b
                 |     |
           eee 5  *   *  3 ccc
                 d  *  c
                    4 <===== the original point
                   ddd

\bonda The macro \bonda 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.

36 % bond between 1 and 2
37 \def\bonda{%
38 \ifx\aaa\empty%
39 \ifx\bbb\empty%
40  \put(6,364){\line(5,-3){126}}%         %double bond 1-2
41 \else%
42  \put(6,364){\line(5,-3){100}}%         %double bond 1-2
43 \fi%

44 \else%
45 \ifx\bbb\empty%
46  \put(35,340){\line(5,-3){100}}%        %double bond 1-2
47 \else%
48  \put(35,352){\line(5,-3){100}}%        %double bond 1-2
49 \fi%                                    % line <1OO not available
50 \fi%
51 }%

\bondb The macro \bondb 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.

52 % bond between 3 and 2
53 \def\bondb{%
54 \ifx\bbb\empty%
55 \ifx\ccc\empty%
56  \put(138,129){\line(0,1){148}}%        %double bond 3-2
57 \else%
58  \put(138,143){\line(0,1){134}}%        %double bond 3-2
59 \fi%
60 \else%
61 \ifx\ccc\empty%
62  \put(138,129){\line(0,1){134}}%        %double bond 3-2
63 \else%
64  \put(138,143){\line(0,1){110}}%        %double bond 3-2
65 \fi%
66 \fi%
67 }%

\bondc The macro \bondc 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.

68 % bond between 4 and 3
69 \def\bondc{%
70 \ifx\ddd\empty%
71 \ifx\ccc\empty%
72  \put(6,42){\line(5,3){126}}           %double bond 4-3
73 \else%
74  \put(6,42){\line(5,3){100}}           %double bond 4-3
75 \fi%
76 \else%
77 \ifx\ccc\empty%
78  \put(35,66){\line(5,3){100}}%          %double bond 4-3
79 \else%
80  \put(35,60){\line(5,3){100}}%          %double bond 4-3
81 \fi%                                    % line <1OO not available
82 \fi%
83 }%

\bondd The macro \bondd 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.

 84 % bond between 4 and 5
 85 \def\bondd{%
 86 \ifx\ddd\empty%
 87 \ifx\eee\empty%
 88  \put(-6,42){\line(-5,3){126}}%         %double bond 4-5
 89 \else%
 90  \put(-6,42){\line(-5,3){100}}%         %double bond 4-5
 91 \fi%
 92 \else%
 93 \ifx\eee\empty%
 94  \put(-35,66){\line(-5,3){100}}%        %double bond 4-5
 95 \else%
 96  \put(-35,60){\line(-5,3){100}}%        %double bond 4-5
 97 \fi%                                    % line <1OO not available
 98 \fi%
 99 }%

\bonde The macro \bonde 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.

100 % bond between 5 and 6
101 \def\bonde{%
102 \ifx\fff\empty%
103 \ifx\eee\empty%
104  \put(-138,129){\line(0,1){148}}%       %double bond 5-6
105 \else%
106  \put(-138,143){\line(0,1){134}}%       %double bond 5-6
107 \fi%
108 \else%
109 \ifx\eee\empty%
110  \put(-138,129){\line(0,1){134}}%       %double bond 5-6
111 \else%
112  \put(-138,143){\line(0,1){110}}%       %double bond 5-6
113 \fi%
114 \fi%

115 }%

\bondf The macro \bondf 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.

116 % bond between 1 and 6
117 \def\bondf{%
118 \ifx\aaa\empty%
119 \ifx\fff\empty%
120  \put(-6,364){\line(-5,-3){126}}%        %double bond 1-6

121 \else%
122  \put(-6,364){\line(-5,-3){100}}%        %double bond 1-6
123 \fi%
124 \else%
125 \ifx\fff\empty%
126  \put(-35,340){\line(-5,-3){100}}%       %double bond 1-6
127 \else%
128  \put(-35,352){\line(-5,-3){100}}%       %double bond 1-6
129 \fi%                                     % line <1OO not available
130 \fi%

131 }%

\bondz The macro \bondz 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.

132 % horizontal inner bond for five-membered rings
133 \def\bondhoriz{%
134 \ifx\fff\empty%
135  \ifx\bbb\empty%
136  \put(-138,270){\line(1,0){277}}%      %double bond 4-3
137  \else%
138  \put(-138,270){\line(1,0){258}}%      %double bond 4-3
139  \fi%
140 \else%
141  \ifx\bbb\empty%
142  \put(-120,270){\line(1,0){258}}%      %double bond 4-3
143  \else%
144  \put(-120,270){\line(1,0){239}}%      %double bond 4-3
145  \fi%
146 \fi}%

\bondzi The macro \bondzi 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.

147 % horizontal inner bond for five-membered rings (inverse type)
148 \def\bondhorizi{%
149 \ifx\eee\empty%
150  \ifx\ccc\empty%
151  \put(-138,136){\line(1,0){277}}%      %double bond 4-3
152  \else%
153  \put(-138,136){\line(1,0){258}}%      %double bond 4-3
154  \fi%
155 \else%
156  \ifx\ccc\empty%
157  \put(-120,136){\line(1,0){258}}%      %double bond 4-3
158  \else%
159  \put(-120,136){\line(1,0){239}}%      %double bond 4-3
160  \fi%
161 \fi}%

5.2 Skeletal bonds

The macros \sixhetero and \fivehetero 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 \skbondz to \skbondzi draw horizontal bonds of a five-membered ring.

 **************************
 * setting skeletal bonds *
 **************************
 The following numbering is adopted in this macro.
                   aaa
                    1
                  f * a
           fff 6  *   *  2 bbb
             e   |     |   b
                 |     |
           eee 5  *   *  3 ccc
                 d  *  c
                    4 <===== the original point
                   ddd

\skbonda The macro \skbonda 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.

162 %bond between 1 and 2
163 \def\skbonda{%
164 \ifx\aaa\empty%
165  \ifx\bbb\empty%
166  \put(0,406){\line(5,-3){171}}%        %bond 1-2
167  \else%
168  \put(0,406){\line(5,-3){136}}%        %bond 1-2
169  \fi%
170 \else%
171  \ifx\bbb\empty%
172  \put(35,385){\line(5,-3){136}}%       %bond 1-2
173  \else%
174  \put(35,385){\line(5,-3){100}}%       %bond 1-2
175  \fi%
176 \fi}%

\skbondf The macro \skbonda 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.

177 %bond between 1 and 6
178 \def\skbondf{%

179 \ifx\aaa\empty%
180  \ifx\fff\empty%
181  \put(0,406){\line(-5,-3){171}}%       %bond 1-6
182  \else%
183  \put(0,406){\line(-5,-3){136}}%       %bond 1-6
184  \fi%
185 \else%
186  \ifx\fff\empty%
187  \put(-35,385){\line(-5,-3){136}}%     %bond 1-6
188  \else%
189  \put(-35,385){\line(-5,-3){100}}%     %bond 1-6
190  \fi%
191 \fi}%

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

192 %bond between 4 and 3
193 \def\skbondc{%
194 \ifx\ddd\empty%
195  \ifx\ccc\empty%
196  \put(0,0){\line(5,3){171}}%           %bond 4-3
197  \else%
198  \put(0,0){\line(5,3){136}}%           %bond 4-3
199  \fi%
200 \else%
201  \ifx\ccc\empty%
202  \put(35,21){\line(5,3){138}}%         %bond 4-3
203  \else%
204  \put(35,21){\line(5,3){100}}%         %bond 4-3
205  \fi%
206 \fi}%

\skbondd The macro \skbondd 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.

207 %bond between 4 and 5
208 \def\skbondd{%
209 \ifx\ddd\empty%
210  \ifx\eee\empty%
211  \put(0,0){\line(-5,3){171}}%          %bond 4-5
212  \else%
213  \put(0,0){\line(-5,3){136}}%          %bond 4-5
214  \fi%
215 \else%
216  \ifx\eee\empty%
217  \put(-35,21){\line(-5,3){138}}%       %bond 4-5
218  \else%
219  \put(-35,21){\line(-5,3){100}}%        %bond 4-5

220  \fi%
221 \fi}%

\skbondb The macro \skbondb 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.

222 %bond between 3 and 2
223 \def\skbondb{%
224 \ifx\bbb\empty%%
225  \ifx\ccc\empty%%
226  \put(171,103){\line(0,1){200}}%       %bond 3-2
227  \else%
228  \put(171,143){\line(0,1){160}}%       %bond 3-2
229  \fi%
230 \else%
231  \ifx\ccc\empty%%
232  \put(171,103){\line(0,1){150}}%       %bond 3-2
233  \else%
234  \put(171,143){\line(0,1){110}}%       %bond 3-2
235  \fi%
236 \fi}%

\skbonde The macro \skbonde 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.

237 %bond between 5 and 6
238 \def\skbonde{%
239 \ifx\eee\empty%
240  \ifx\fff\empty%
241  \put(-171,103){\line(0,1){200}}%       %bond 5-6
242  \else%
243  \put(-171,103){\line(0,1){150}}%       %bond 5-6
244  \fi%
245 \else%
246  \ifx\fff\empty%
247  \put(-171,143){\line(0,1){160}}%       %bond 5-6
248  \else%
249  \put(-171,143){\line(0,1){110}}%       %bond 5-6
250  \fi%
251 \fi}%

\skbondhoriz The macro \skbondhoriz 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.

252 %horizontal bond for five-membered rings
253 \def\skbondhoriz{%
254 \ifx\fff\empty%
255  \ifx\bbb\empty%

256  \put(-171,303){\line(1,0){342}}%      %bond 4-3
257  \else%
258  \put(-171,303){\line(1,0){300}}%      %bond 4-3
259  \fi%
260 \else%
261  \ifx\bbb\empty%
262  \put(171,303){\line(-1,0){300}}%      %bond 4-3
263  \else%
264  \put(-129,303){\line(1,0){258}}%      %bond 4-3
265  \fi%
266 \fi}%

\skbondhorizi The macro \skbondhorizi 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.

267 %horizontal bond for five-membered rings (inverse type)
268 \def\skbondhorizi{%
269 \ifx\eee\empty%
270  \ifx\ccc\empty%
271  \put(-171,103){\line(1,0){342}}%      %bond 4-3
272  \else%
273  \put(-171,103){\line(1,0){300}}%      %bond 4-3
274  \fi%
275 \else%
276  \ifx\ccc\empty%
277  \put(171,103){\line(-1,0){300}}%      %bond 4-3
278  \else%
279  \put(-129,103){\line(1,0){258}}%      %bond 4-3
280  \fi%
281 \fi}%

\set@outskel@sixv The macro \set@outskel@sixv is to typeset a series of outer-skeleton bonds to

 six rings. It is used in \sixheterov and \sixheterovi.
282 \def\set@outskel@sixv{%
283 \skbonda% bond between 1 and 2
284 \skbondf% bond between 1 and 6
285 \skbondc% bond between 4 and 3
286 \skbondd% bond between 4 and 5
287 \skbondb% bond between 3 and 2
288 \skbonde% bond between 5 and 6

289 }

5.3 Dotted Skeletal Bonds

The macros \sixfusev 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 \dotskbonda to \dotskbondf are used to set a dotted bond on each edge of a six- or five-membered ring.

\dotskbonda The macro \dotskbonda is the dotted couterpart of \skbonda, 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.

290 %bond between 1 and 2
291 \def\dotskbonda{%
292 \ifx\aaa\empty%
293  \ifx\bbb\empty%
294  \@ifundefined{dottedline}{%
295  \put(0,406){\line(5,-3){171}}%        %bond 1-2
296  }{{\thicklines%
297  \dottedline{20}(0,406)(171,303)}}%
298  \else%
299  \@ifundefined{dottedline}{%
300  \put(0,406){\line(5,-3){136}}%        %bond 1-2
301  }{{\thicklines%
302  \dottedline{20}(0,406)(136,324)}}%
303  \fi%
304 \else%
305  \ifx\bbb\empty%
306  \@ifundefined{dottedline}{%
307  \put(35,385){\line(5,-3){136}}%       %bond 1-2
308  }{{\thicklines%
309  \dottedline{20}(35,386)(171,303)}}%
310  \else%
311  \@ifundefined{dottedline}{%
312  \put(35,385){\line(5,-3){100}}%       %bond 1-2
313  }{{\thicklines%
314  \dottedline{20}(35,386)(136,324)}}%
315  \fi%
316 \fi}%

\dotskbondb The macro \dotskbondb is the dotted couterpart of \skbondb, 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.

317 %bond between 3 and 2
318 \def\dotskbondb{%
319 \ifx\bbb\empty%%
320  \ifx\ccc\empty%%
321  \@ifundefined{dottedline}{%
322  \put(171,103){\line(0,1){200}}%       %bond 3-2
323  }{{\thicklines%
324  \dottedline{20}(171,103)(171,303)}}%
325  \else%
326  \@ifundefined{dottedline}{%
327  \put(171,143){\line(0,1){160}}%       %bond 3-2
328  }{{\thicklines%
329  \dottedline{20}(171,143)(171,303)}}%

330  \fi%
331 \else%
332  \ifx\ccc\empty%%
333  \@ifundefined{dottedline}{%
334  \put(171,103){\line(0,1){150}}%       %bond 3-2
335  }{{\thicklines%
336  \dottedline{20}(171,103)(171,253)}}%
337  \else%
338  \@ifundefined{dottedline}{%
339  \put(171,143){\line(0,1){110}}%       %bond 3-2
340  }{{\thicklines%
341  \dottedline{20}(171,143)(171,253)}}%
342  \fi%
343 \fi}%

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

344 %bond between 4 and 3
345 \def\dotskbondc{%
346 \ifx\ddd\empty%
347  \ifx\ccc\empty%%
348  \@ifundefined{dottedline}{%
349  \put(0,0){\line(5,3){171}}%           %bond 4-3
350  }{{\thicklines%
351  \dottedline{20}(0,0)(171,103)}}%
352  \else%
353  \@ifundefined{dottedline}{%
354  \put(0,0){\line(5,3){136}}%           %bond 4-3
355  }{{\thicklines%
356  \dottedline{20}(0,0)(136,81)}}%
357  \fi%
358 \else%
359  \ifx\ccc\empty%
360  \@ifundefined{dottedline}{%
361  \put(35,21){\line(5,3){138}}%         %bond 4-3
362  }{{\thicklines%
363  \dottedline{20}(35,21)(171,103)}}%
364  \else%
365  \@ifundefined{dottedline}{%
366  \put(35,21){\line(5,3){100}}%         %bond 4-3
367  }{{\thicklines%
368  \dottedline{20}(35,21)(136,81)}}%
369  \fi%
370 \fi}%

\dotskbondd The macro \dotskbondd is the dotted couterpart of \skbondd, 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.

371 %bond between 4 and 5
372 \def\dotskbondd{%
373 \ifx\ddd\empty%
374  \ifx\eee\empty%
375  \@ifundefined{dottedline}{%
376  \put(0,0){\line(-5,3){171}}%          %bond 4-5
377  }{{\thicklines%
378  \dottedline{20}(0,0)(-171,103)}}%
379  \else%
380  \@ifundefined{dottedline}{%
381  \put(0,0){\line(-5,3){136}}%          %bond 4-5
382  }{{\thicklines%
383  \dottedline{20}(0,0)(-136,81)}}%
384  \fi%
385 \else%
386  \ifx\eee\empty%
387  \@ifundefined{dottedline}{%
388  \put(-35,21){\line(-5,3){138}}%       %bond 4-5
389  }{{\thicklines%
390  \dottedline{20}(-35,21)(-171,103)}}%
391  \else%
392  \@ifundefined{dottedline}{%
393  \put(-35,21){\line(-5,3){100}}%        %bond 4-5
394  }{{\thicklines%
395  \dottedline{20}(-35,21)(-136,81)}}%
396  \fi%
397 \fi}%

\dotskbonde The macro \dotskbonde is the dotted couterpart of \skbonde, 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.

398 %bond between 5 and 6
399 \def\dotskbonde{%
400 \ifx\eee\empty%
401  \ifx\fff\empty%
402  \@ifundefined{dottedline}{%
403  \put(-171,103){\line(0,1){200}}%       %bond 5-6
404  }{{\thicklines%
405  \dottedline{20}(-171,103)(-171,303)}}%
406  \else%
407  \@ifundefined{dottedline}{%
408  \put(-171,103){\line(0,1){150}}%       %bond 5-6
409  }{{\thicklines%
410  \dottedline{20}(-171,103)(-171,253)}}%
411  \fi%
412 \else%

413  \ifx\fff\empty%
414  \@ifundefined{dottedline}{%
415  \put(-171,143){\line(0,1){160}}%       %bond 5-6
416  }{{\thicklines%
417  \dottedline{20}(-171,143)(-171,303)}}%
418  \else%
419  \@ifundefined{dottedline}{%
420  \put(-171,143){\line(0,1){110}}%       %bond 5-6
421  }{{\thicklines%
422  \dottedline{20}(-171,143)(-171,253)}}%
423  \fi%
424 \fi}%

\dotskbondf The macro \dotskbondf is the dotted couterpart of \skbondf, 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.

425 %bond between 1 and 6
426 \def\dotskbondf{%
427 \ifx\aaa\empty%
428  \ifx\fff\empty%
429  \@ifundefined{dottedline}{%
430  \put(0,406){\line(-5,-3){171}}%       %bond 1-6
431  }{{\thicklines%
432  \dottedline{20}(0,406)(-171,303)}}%
433  \else%
434  \@ifundefined{dottedline}{%
435  \put(0,406){\line(-5,-3){136}}%       %bond 1-6
436  }{{\thicklines%
437  \dottedline{20}(0,406)(-136,325)}}%
438  \fi%
439 \else%
440  \ifx\fff\empty%
441  \@ifundefined{dottedline}{%
442  \put(-35,385){\line(-5,-3){136}}%     %bond 1-6
443  }{{\thicklines%
444  \dottedline{20}(-35,385)(-171,303)}}%
445  \else%
446  \@ifundefined{dottedline}{%
447  \put(-35,385){\line(-5,-3){100}}%     %bond 1-6
448  }{{\thicklines%
449  \dottedline{20}(-35,385)(-136,325)}}%
450  \fi%
451 \fi}%
\dotskbondhoriz The macro \dotskbondhoriz is the dotted couterpart of \skbondhoriz, which

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.

452 %horizontal bond for five-membered rings
453 \def\dotskbondhoriz{%
454 \ifx\fff\empty%
455  \ifx\bbb\empty%
456  \@ifundefined{dottedline}{%
457  \put(-171,303){\line(1,0){342}}%      %bond 4-3
458  }{{\thicklines%
459  \dottedline{20}(-171,303)(171,303)}}%
460  \else%
461  \@ifundefined{dottedline}{%
462  \put(-171,303){\line(1,0){300}}%      %bond 4-3
463  }{{\thicklines%
464  \dottedline{20}(-171,303)(129,303)}}%
465  \fi%
466 \else%
467  \ifx\bbb\empty%
468  \@ifundefined{dottedline}{%
469  \put(171,303){\line(-1,0){300}}%      %bond 4-3
470  }{{\thicklines%
471  \dottedline{20}(171,303)(-129,303)}}%
472  \else%
473  \@ifundefined{dottedline}{%
474  \put(-129,303){\line(1,0){258}}%      %bond 4-3
475  }{{\thicklines%
476  \dottedline{20}(-129,303)(129,303)}}%
477  \fi%
478 \fi}%

\dotskbondhorizi The macro \dotskbondhorizi 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.

479 %horizontal bond for five-membered rings (inverse type)
480 \def\dotskbondhorizi{%
481 \ifx\eee\empty%
482  \ifx\ccc\empty%
483  \@ifundefined{dottedline}{%
484  \put(-171,103){\line(1,0){342}}%      %bond 4-3
485  }{{\thicklines%
486  \dottedline{20}(-171,103)(171,103)}}%
487  \else%
488  \@ifundefined{dottedline}{%
489  \put(-171,103){\line(1,0){300}}%      %bond 4-3
490  }{{\thicklines%
491  \dottedline{20}(-171,103)(129,103)}}%
492  \fi%
493 \else%
494  \ifx\ccc\empty%
495  \@ifundefined{dottedline}{%
496  \put(171,103){\line(-1,0){300}}%      %bond 4-3

497  }{{\thicklines%
498  \dottedline{20}(171,103)(-129,103)}}%
499  \else%
500  \@ifundefined{dottedline}{%
501  \put(-129,103){\line(1,0){258}}%      %bond 4-3
502  }{{\thicklines%
503  \dottedline{20}(-129,103)(129,103)}}%
504  \fi%
505 \fi}%

The macro \set@skel@bond is used in such commands as \sixheterov and \sixfusev 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.

\if@skbondlist
506 \newif\if@skbondlist
507 \@skbondlistfalse

from fusering.sty to hetarom.sty

\set@skel@bond
508 \def\set@skel@bond#1#2#3{%
509 \expandafter\if\csname @#2#2#2\endcsname #2\relax%OK
510  % \if\@aaa #2\relax%OK
511 \@skbondlistfalse
512 \@tfor\member:=#1\do{%
513 \expandafter\twoCH@@R\member//%
514  \if\@@tmpa #2\relax%
515  \if\@@tmpb A\relax%
516  \expandafter\csname dotskbond#3\endcsname% \dotskbonda etc.
517  \@skbondlisttrue
518  \else\if\@@tmpb B\relax%
519  {\thicklines
520  \expandafter\csname skbond#3\endcsname% \skbonda etc.

521 }%

522  \@skbondlisttrue
523  \fi\fi
524  \fi%

525 }%

526 \if@skbondlist\else
527  {\thinlines
528  \expandafter\csname skbond#3\endcsname% \skbonda etc.

529 }%

530 \fi%
531 \else
532  \expandafter\ifx\csname @#2#2#2\endcsname \empty\relax%
533  %    \ifx\@aaa\empty\relax
534  \@tfor\member:=#1\do{%
535  \expandafter\twoCH@@R\member//%

536  \if\@@tmpa #2\relax%
537  \XyMTeXWarning{Unavailable bond `#2' in SKBONDLIST}\fi

538 }%

539 \fi\fi
540 }% end of \set@skel@bond

The macro \set@skel@longbond is used in \fivefusev 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@longbond
541 \def\set@skel@longbond#1#2#3{%
542 \expandafter\if\csname @#2#2#2\endcsname #2\relax%OK
543  % \if\@aaa #2\relax%OK
544 \@skbondlistfalse
545 \@tfor\member:=#1\do{%
546 \expandafter\twoCH@@R\member//%
547  \if\@@tmpa #2\relax%
548  \if\@@tmpb A\relax%
549  \expandafter\csname dot#3\endcsname% \dotskbonda etc.
550  \@skbondlisttrue
551  \else\if\@@tmpb B\relax%
552  {\thicklines
553  \expandafter\csname #3\endcsname% \skbonda etc.

554 }%

555  \@skbondlisttrue
556  \fi\fi
557  \fi%

558 }%

559 \if@skbondlist\else
560  {\thinlines
561  \expandafter\csname #3\endcsname% \skbonda etc.

562 }%

563 \fi%
564 \else
565  \expandafter\ifx\csname @#2#2#2\endcsname \empty\relax%
566  %    \ifx\@aaa\empty\relax
567  \@tfor\member:=#1\do{%
568  \expandafter\twoCH@@R\member//%
569  \if\@@tmpa #2\relax%
570  \XyMTeXWarning{Unavailable bond `#2' in SKBONDLIST}\fi

571 }%

572 \fi\fi
573 }% end of \set@skel@longbond

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

\@bond@@omit

574 \def\@bond@@omit#1{%
575 \@tfor\memBer:=#1\do{%
576 \if\memBer a\relax\gdef\@aaa{}\fi%
577 \if\memBer A\relax\gdef\@aaa{}\fi%
578 \if\memBer b\relax\gdef\@bbb{}\fi%
579 \if\memBer B\relax\gdef\@bbb{}\fi%
580 \if\memBer c\relax\gdef\@ccc{}\fi%
581 \if\memBer C\relax\gdef\@ccc{}\fi%
582 \if\memBer d\relax\gdef\@ddd{}\fi%
583 \if\memBer D\relax\gdef\@ddd{}\fi%
584 \if\memBer e\relax\gdef\@eee{}\fi%
585 \if\memBer E\relax\gdef\@eee{}\fi%
586 \if\memBer f\relax\gdef\@fff{}\fi%
587 \if\memBer F\relax\gdef\@fff{}\fi%
588 \if\memBer g\relax\gdef\@ggg{}\fi%
589 \if\memBer G\relax\gdef\@ggg{}\fi%
590 \if\memBer h\relax\gdef\@hhh{}\fi%
591 \if\memBer H\relax\gdef\@hhh{}\fi%
592 \if\memBer i\relax\gdef\@iii{}\fi%
593 \if\memBer I\relax\gdef\@iii{}\fi%
594 \if\memBer j\relax\gdef\@jjj{}\fi%
595 \if\memBer J\relax\gdef\@jjj{}\fi%
596 \if\memBer k\relax\gdef\@kkk{}\fi%
597 \if\memBer K\relax\gdef\@kkk{}\fi%
598 }}%

6 Six-membered heterocyles

6.1 Vertical type

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

  *************************
  * sixhetero derivatives *
  *  (vertical type)      *
  *************************
  The following numbering is adopted in this macro.
           1
           *
      6  *   *  2
        |     |
        |     |
      5  *   *  3
           *
           4 <===== the original point

The macro \sixheterov 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.

   \sixheterov(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 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 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.
\sixheterov{1==N}{1==Cl;2==F}
\sixheterov[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
\sixheterov[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl}

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

\sixheterov
\@six@heterov
\@six@@heterov
\@sixheterov

599 \def\sixheterov{\@ifnextchar({\@six@heterov(@}{\@six@heterov(@)}}
600 \def\@six@heterov(#1){\@ifnextchar[{\@six@@heterov(#1)[@}%
601 {\@six@@heterov(#1)[@]}}
602 \def\@six@@heterov(#1)[#2]#3#4{\@ifnextchar[%
603 {\@sixheterov(#1)[#2]{#3}{#4}[@}%
604 {\@sixheterov(#1)[#2]{#3}{#4}[@]}}
605 \def\@sixheterov(#1)[#2]#3#4[#5]{%
606 % %%%%%%%%%%%%%%%%%%%%%%%%%%
607 % % treatment of atom list %
608 % %%%%%%%%%%%%%%%%%%%%%%%%%%
609 \iniatom\iniflag%initialize
610 \test@vertix@sixv{#3}{a}{b}{c}{d}{e}{f}%
611 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
612 % % adustment of subs positions %
613 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
614 \@reset@ylsw%
615 \ylposition{#4}{0}{0}{7}{0}%
616 \if@ylsw%
617 \yl@shiftii=\@ylii
618 \yl@shifti=\@yli
619 \advance\yl@shiftii\yl@xdiff
620 \advance\yl@shifti\yl@ydiff
621 \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
622 \reset@yl@xydiff%1999/1/6 by S. Fujita
623 \else
624 \begin{picture}(800,880)(-\shiftii,-\shifti)
625 \iforigpt \put(-\shiftii,-\shifti){\circle*{50}}%
626  \put(-\noshift,-\noshift){\circle{50}}%
627 \typeout{command `sixheterov' origin: %
628  (\the\noshift,\the\noshift) ---> (\the\shiftii,\the\shifti)}\fi%
629 \fi
630 % %%%%%%%%%%%%%%%%%%
631 % % outer skeleton %
632 % %%%%%%%%%%%%%%%%%%

633 {%

634 \resetbdsw%
635 \@bond@@omit{#5}%
636 \set@skel@bond{#1}{a}{a}% bond between 1 and 2 \@aaa -> \skbonda etc
637 \set@skel@bond{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc
638 \set@skel@bond{#1}{c}{c}% bond between 3 and 4 \@ccc -> \skbondc etc
639 \set@skel@bond{#1}{d}{d}% bond between 4 and 5 \@ddd -> \skbondd etc
640 \set@skel@bond{#1}{e}{e}% bond between 5 and 6 \@eee -> \skbonde etc
641 \set@skel@bond{#1}{f}{f}% bond between 6 and 1 \@fff -> \skbondf etc

642 }%

643 %%%%%\set@outskel@sixv % replaced by above 1998/12/30
644 % %%%%%%%%%%%%%%%%%%%%%
645 % % inner double bond %
646 % %%%%%%%%%%%%%%%%%%%%%
647 \@tfor\member:=#2\do{%
648 \if\member r\relax \bondd \bondf \bondb%
649 \else\if\member l\relax \bonda \bondc \bonde%
650 \else\if\member a\relax \bonda%
651 \else\if\member b\relax \bondb%
652 \else\if\member c\relax \bondc%
653 \else\if\member d\relax \bondd%
654 \else\if\member e\relax \bonde%
655 \else\if\member f\relax \bondf%
656 \else\if\member A%left aromatic circle
657 \put(0,203){\circle{240}}%               %circle
658 % %%%%%%%%%%%%%%%%%%%%%%%%%
659 % % inner bond attachment %
660 % %%%%%%%%%%%%%%%%%%%%%%%%%
661 \else \expandafter\twoCH@@R\member//%
662  \set@fusionadd@sixv
663 \fi\fi\fi\fi\fi\fi\fi\fi\fi%

664 }%

665 % %%%%%%%%%%%%%%%%%%%%%%%%
666 % % setting hetero atoms %
667 % %%%%%%%%%%%%%%%%%%%%%%%%
668 \set@hetatom@sixv{#3}{0}{0}{7}{0}%    %atom 1--6%
669 % %%%%%%%%%%%%%%%%%%%%%%%%
670 % % setting substituents %
671 % %%%%%%%%%%%%%%%%%%%%%%%%
672 \setsixringv{#4}{0}{0}{7}{0}%    %subst 1--6
673 \end{picture}\iniatom\iniflag}%     %end of \sixheterov macro

6.2 Inverse vertical type

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

  **********************************
  * sixhetero derivatives          *
  *  (vertical type, inverse type) *
  **********************************
  The following numbering is adopted in this macro.
           4
           *
      5  *   *  3
        |     |
        |     |
      6  *   *  2

          *
          1 <===== the original point

The macro \sixheterovi 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.

   \sixheterovi(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 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 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.
\sixheterovi{1==N}{1==Cl;2==F}
\sixheterovi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
\sixheterovi[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl}

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

\sixheterovi
\@six@heterovi
\@six@@heterovi
\@sixheterovi

674 \def\sixheterovi{\@ifnextchar({\@six@heterovi(@}{\@six@heterovi(@)}}
675 \def\@six@heterovi(#1){\@ifnextchar[{\@six@@heterovi(#1)[@}%
676 {\@six@@heterovi(#1)[@]}}
677 \def\@six@@heterovi(#1)[#2]#3#4{\@ifnextchar[%
678 {\@sixheterovi(#1)[#2]{#3}{#4}[@}%
679 {\@sixheterovi(#1)[#2]{#3}{#4}[@]}}
680 \def\@sixheterovi(#1)[#2]#3#4[#5]{%
681 % %%%%%%%%%%%%%%%%%%%%%%%%%%
682 % % treatment of atom list %
683 % %%%%%%%%%%%%%%%%%%%%%%%%%%
684 \iniatom\iniflag%initialize
685 \test@vertix@sixv{#3}{d}{c}{b}{a}{f}{e}%
686 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
687 % % adjustment of subs positions %
688 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
689 \@reset@ylsw%
690 \ylposition{#4}{5}{0}{5}{-1}%    %subst 1--4
691 \ylposition{#4}{11}{4}{7}{-1}%   %subst 5 and 6
692 \if@ylsw
693 \yl@shiftii=\@ylii
694 \yl@shifti=\@yli
695 \advance\yl@shiftii\yl@xdiff
696 \advance\yl@shifti\yl@ydiff
697 \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
698 \reset@yl@xydiff%1999/1/6 by S. Fujita
699 \else
700 \begin{picture}(800,880)(-\shiftii,-\shifti)
701 \iforigpt \put(-\shiftii,-\shifti){\circle*{50}}%
702  \put(-\noshift,-\noshift){\circle{50}}%
703 \typeout{command `sixheterovi' origin: %
704  (\the\noshift,\the\noshift) ---> (\the\shiftii,\the\shifti)}\fi%
705 \fi
706 % %%%%%%%%%%%%%%%%%%
707 % % outer skeleton %
708 % %%%%%%%%%%%%%%%%%%
709 {\resetbdsw%
710 \@bond@@omit{#5}%
711 \set@skel@bond{#1}{a}{c}% bond between 1 and 2 \@aaa -> \skbondc etc
712 \set@skel@bond{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc

713 \set@skel@bond{#1}{c}{a}% bond between 3 and 4 \@ccc -> \skbonda etc
714 \set@skel@bond{#1}{d}{f}% bond between 4 and 5 \@ddd -> \skbondf etc
715 \set@skel@bond{#1}{e}{e}% bond between 5 and 6 \@eee -> \skbonde etc
716 \set@skel@bond{#1}{f}{d}% bond between 6 and 1 \@fff -> \skbondd etc

717 }%

718 %%%\set@outskel@sixv% replaced by the above 1998/12/30
719 % %%%%%%%%%%%%%%%%%%%%%
720 % % inner double bond %
721 % %%%%%%%%%%%%%%%%%%%%%
722 \@tfor\member:=#2\do{%
723 \if\member r\relax \bondd \bondf \bondb%
724 \else\if\member l\relax \bonda \bondc \bonde%
725 \else\if\member a\relax \bondc%
726 \else\if\member b\relax \bondb%
727 \else\if\member c\relax \bonda%
728 \else\if\member d\relax \bondf%
729 \else\if\member e\relax \bonde%
730 \else\if\member f\relax \bondd%
731 \else\if\member A%left aromatic circle
732 \put(0,203){\circle{240}}%               %circle
733 % %%%%%%%%%%%%%%%%%%%%%%%%%
734 % % inner bond attachment %
735 % %%%%%%%%%%%%%%%%%%%%%%%%%
736 \else \expandafter\twoCH@@R\member//%
737 \set@fusionadd@sixvi
738 \fi\fi\fi\fi\fi\fi\fi\fi\fi%

739 }%

740 % %%%%%%%%%%%%%%%%%%%%%%%%
741 % % setting hetero atoms %
742 % %%%%%%%%%%%%%%%%%%%%%%%%
743 \set@hetatom@sixv{#3}{5}{0}{5}{-1}%    %atom 1--4%
744 \set@hetatom@sixv{#3}{11}{4}{7}{-1}%   %atom 5 and 6%
745 % %%%%%%%%%%%%%%%%%%%%%%%%
746 % % setting substituents %
747 % %%%%%%%%%%%%%%%%%%%%%%%%
748 \setsixringv{#4}{5}{0}{5}{-1}%    %subst 1--4
749 \setsixringv{#4}{11}{4}{7}{-1}%   %subst 5 and 6
750 \end{picture}\iniatom\iniflag}%     %end of \sixheterovi macro

6.3 Pyridine derivatives of vertical type

The macros \sixheterov and \sixheterovi 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 *
  *  (vertical type)     *
  ************************

\pyridinev[BONDLIST]{SUBSLIST}
\pyridinevi[BONDLIST]{SUBSLIST}
\pyrazinev[BONDLIST]{SUBSLIST}
\pyrimidinev[BONDLIST]{SUBSLIST}
\pyrimidinevi[BONDLIST]{SUBSLIST}
\triazinev[BONDLIST]{SUBSLIST}
\triazinevi[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 n-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.
         \pyridinev{1==Cl;2==F}
         \pyridinev[c]{1==Cl;4==F;2==CH$_{3}$}
         \pyridinev[eb]{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl}

\pridinev \pridinevi
751 \def\pyridinev{\@ifnextchar[{\@pyridinev[@}{\@pyridinev[r]}}
752 \def\@pyridinev[#1]#2{%
753 \iforigpt \typeout{command `pyridinev' %
754 is based on `sixheterov'.}\fi%
755 \sixheterov[#1]{1==N}{#2}}%end of \pyridinev macro
756 \def\pyridinevi{\@ifnextchar[{\@pyridinevi[@}{\@pyridinevi[r]}}
757 \def\@pyridinevi[#1]#2{%
758 \iforigpt \typeout{command `pyridinevi' %
759 is based on `sixheterovi'.}\fi%
760 \sixheterovi[#1]{1==N}{#2}}%end of \pyridinevi macro
\pyrazinev \pyrazinevi
761 \def\pyrazinev{\@ifnextchar[{\@pyrazinev[@}{\@pyrazinev[r]}}
762 \def\@pyrazinev[#1]#2{%
763 \iforigpt \typeout{command `pyrazinev' %
764 is based on `sixheterov'.}\fi%
765 \sixheterov[#1]{1==N;4==N}{#2}}%end of \pyrazinev macro
766 %the same formula with an alternative locant numbering
767 \def\pyrazinevi{\@ifnextchar[{\@pyrazinevi[@}{\@pyrazinevi[r]}}
768 \def\@pyrazinevi[#1]#2{%
769 \iforigpt \typeout{command `pyrazinevi' %
770 is based on `sixheterovi'.}\fi%
771 \sixheterovi[#1]{1==N;4==N}{#2}}%end of \pyrazinevi macro
\pyrimidinev
\pyrimidinevi
772 \def\pyrimidinev{\@ifnextchar[{\@pyrimidinev[@}{\@pyrimidinev[r]}}
773 \def\@pyrimidinev[#1]#2{%

774 \iforigpt \typeout{command `pyrimidinev' %
775 is based on `sixheterov'.}\fi%
776 \sixheterov[#1]{1==N;3==N}{#2}}%end of \pyrimidinev macro
777 \def\pyrimidinevi{\@ifnextchar[{\@pyrimidinevi[@}{\@pyrimidinevi[r]}}
778 \def\@pyrimidinevi[#1]#2{%
779 \iforigpt \typeout{command `pyrimidinevi' %
780 is based on `sixheterovi'.}\fi%
781 \sixheterovi[#1]{1==N;3==N}{#2}}%end of \pyrimidinevi macro
\pyridazinev
\pyridazinevi
782 \def\pyridazinev{\@ifnextchar[{\@pyridazinev[@}{\@pyridazinev[r]}}
783 \def\@pyridazinev[#1]#2{%
784 \iforigpt \typeout{command `pyridazinev' %
785 is based on `sixheterov'.}\fi%
786 \sixheterov[#1]{1==N;2==N}{#2}}%end of \pyridazinev macro
787 \def\pyridazinevi{\@ifnextchar[{\@pyridazinevi[@}{\@pyridazinevi[r]}}
788 \def\@pyridazinevi[#1]#2{%
789 \iforigpt \typeout{command `pyridazinev' %
790 is based on `sixheterovi'.}\fi%
791 \sixheterovi[#1]{1==N;2==N}{#2}}%end of \pyridazinevi macro
\triazinev \triazinevi
792 \def\triazinev{\@ifnextchar[{\@triazinev[@}{\@triazinev[r]}}
793 \def\@triazinev[#1]#2{%
794 \iforigpt \typeout{command `triazinev' %
795 is based on `sixheterov'.}\fi%
796 \sixheterov[#1]{1==N;3==N;5==N}{#2}}%end of \triazinev macro
797 \def\triazinevi{\@ifnextchar[{\@triazinevi[@}{\@triazinevi[r]}}
798 \def\@triazinevi[#1]#2{%
799 \iforigpt \typeout{command `triazinevi' %
800 is based on `sixheterovi'.}\fi%
801 \sixheterovi[#1]{1==N;3==N;5==N}{#2}}%end of \triazinevi macro

7 Five-membered heterocycles

7.1 Vertical type

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

  **************************
  * fivehetero derivatives *
  *  (vertical type)       *
  **************************
  The following numbering is adopted in this macro.
      4  _____3
        |     |
        |     |

     5  *   *  2
          *
          1 <===== the original point

The macro \fiveheterov 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.

   \fiveheterov(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+’ typesets 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 minus) 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.
\fiveheterov{1==N}{1==H;2==F}
\fiveheterov[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
\fiveheterov[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl}

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

1. treatment of atom list,

3. placing inner double bonds,

2. placing outer skeletons, 4. setting hetero atoms, and

5. placing substituents by using \setsixringv partially.

\fiveheterov
\@five@heterov
\@five@@heterov
\@fiveheterov

802 \def\fiveheterov{\@ifnextchar({\@five@heterov(@}{\@five@heterov(@)}}
803 \def\@five@heterov(#1){\@ifnextchar[{\@five@@heterov(#1)[@}%
804 {\@five@@heterov(#1)[@]}}
805 \def\@five@@heterov(#1)[#2]#3#4{\@ifnextchar[%
806 {\@fiveheterov(#1)[#2]{#3}{#4}[@}%
807 {\@fiveheterov(#1)[#2]{#3}{#4}[@]}}
808 \def\@fiveheterov(#1)[#2]#3#4[#5]{%
809 \iniatom\iniflag%initialize
810 % %%%%%%%%%%%%%
811 % % atom list %
812 % %%%%%%%%%%%%%
813 \test@vertix@sixv{#3}{d}{c}{b}{f}{e}{a}%
814 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
815 % % adustment of subs positions %
816 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
817 \@reset@ylsw%
818 \ylposition{#4}{5}{1}{5}{-1}%   % for 1 to 3
819 \ylposition{#4}{10}{4}{7}{-1}%  % for 4 to 5
820 \if@ylsw
821 \yl@shiftii=\@ylii
822 \yl@shifti=\@yli
823 \advance\yl@shiftii\yl@xdiff
824 \advance\yl@shifti\yl@ydiff
825 \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
826 \reset@yl@xydiff%1999/1/6 by S. Fujita
827 \else
828 \begin{picture}(800,880)(-\shiftii,-\shifti)%
829 \iforigpt \put(-\shiftii,-\shifti){\circle*{50}}%
830  \put(-\noshift,-\noshift){\circle{50}}%
831 \typeout{command `fiveheterov' origin: %
832  (\the\noshift,\the\noshift) ---> (\the\shiftii,\the\shifti)}\fi%
833 \fi
834 % %%%%%%%%%%%%%%%%%%
835 % % outer skeleton %
836 % %%%%%%%%%%%%%%%%%%
837 {\resetbdsw%
838 \@bond@@omit{#5}%
839 \set@skel@bond{#1}{a}{c}% bond between 1 and 2 \@aaa -> \skbondc etc
840 \set@skel@bond{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc
841 \set@skel@longbond{#1}{c}{skbondhoriz}%
842  % bond between 3 and 4 \@ccc -> \skbondhoriz etc
843 \set@skel@bond{#1}{d}{e}% bond between 4 and 5 \@ddd -> \skbonde etc

844 \set@skel@bond{#1}{e}{d}% bond between 5 and 1 \@eee -> \skbondd etc

845 }%

846 % %%%%%%%%%%%%%%%%%%%%%
847 % % inner double bond %
848 % %%%%%%%%%%%%%%%%%%%%%
849 \@tfor\member:=#2\do{%
850 \if\member r%
851 \else\if\member a\relax \bondc%
852 \else\if\member b\relax \bondb%
853 \else\if\member c\relax \bondhoriz%
854 \else\if\member d\relax \bonde%
855 \else\if\member e\relax \bondd%
856 \else\if\member A\relax%
857 \put(0,173){\circle{180}}%aromatic circle
858 % %%%%%%%%%%%%%%%%%%%%%%%%%
859 % % inner bond attachment %
860 % %%%%%%%%%%%%%%%%%%%%%%%%%
861 \else
862  \expandafter\twoCH@@R\member//%
863  \set@fusionadd@fivev
864 \fi\fi\fi\fi\fi\fi\fi}%
865 % %%%%%%%%%%%%%%%%%%%%%%%
866 % % setting heteroatoms %
867 % %%%%%%%%%%%%%%%%%%%%%%%
868 \set@hetatom@sixv{#3}{5}{1}{5}{-1}%   % for 1 to 3
869 \set@hetatom@sixv{#3}{10}{4}{7}{-1}%  % for 4 to 5
870 % %%%%%%%%%%%%%%%%%%%%%%%%
871 % % setting substituents %
872 % %%%%%%%%%%%%%%%%%%%%%%%%
873 \setsixringv{#4}{5}{1}{5}{-1}%   % for 1 to 3
874 \setsixringv{#4}{10}{4}{7}{-1}%  % for 4 to 5
875 \end{picture}\iniatom\iniflag}% end of \fiveheterov macro

7.2 Inverse vertical type

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

  *****************************
  * fivehetero derivatives    *
  *  (vertical type, inverse) *
  *****************************
  The following numbering is adopted in this macro.
           1
           *
      6  *   *  2
        |     |

       |_____|
     4         3
          *
        (0,0) <===== the original point

The macro \fiveheterovi 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.

   \fiveheterovi(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 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+’ typesets 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 minus) 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.
\fiveheterovi{1==N}{1==H;2==F}
\fiveheterovi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
\fiveheterovi[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl}

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

1. treatment of atom list,

2. placing outer skeletons, 4. setting hetero atoms, and

5. placing substituents by using \setsixringv partially.

\fiveheterovi
\@five@heterovi
\@five@@heterovi
\@fiveheterovi

876 \def\fiveheterovi{\@ifnextchar({\@five@heterovi(@}{\@five@heterovi(@)}}
877 \def\@five@heterovi(#1){\@ifnextchar[{\@five@@heterovi(#1)[@}%
878 {\@five@@heterovi(#1)[@]}}
879 \def\@five@@heterovi(#1)[#2]#3#4{\@ifnextchar[%
880 {\@fiveheterovi(#1)[#2]{#3}{#4}[@}%
881 {\@fiveheterovi(#1)[#2]{#3}{#4}[@]}}
882 \def\@fiveheterovi(#1)[#2]#3#4[#5]{%
883 \iniatom\iniflag%initialize
884 % %%%%%%%%%%%%%
885 % % atom list %
886 % %%%%%%%%%%%%%
887 \test@vertix@sixv{#3}{a}{b}{c}{e}{f}{d}% d -- dummy
888 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
889 % % adustment of subs positions %
890 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
891 \@reset@ylsw%
892 \ylposition{#4}{0}{0}{4}{0}%  % for 1 to 3
893 \ylposition{#4}{1}{4}{7}{0}%  % for 4 to 5
894 \if@ylsw
895 \yl@shiftii=\@ylii
896 \yl@shifti=\@yli
897 \advance\yl@shiftii\yl@xdiff
898 \advance\yl@shifti\yl@ydiff
899 \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
900 \reset@yl@xydiff%1999/1/6 by S. Fujita
901 \else
902 \begin{picture}(800,880)(-\shiftii,-\shifti)%
903 \iforigpt \put(-\shiftii,-\shifti){\circle*{50}}%
904  \put(-\noshift,-\noshift){\circle{50}}%
905 \typeout{command `fiveheterovi' origin: %
906  (\the\noshift,\the\noshift) ---> (\the\shiftii,\the\shifti)}\fi%
907 \fi
908 % %%%%%%%%%%%%%%%%%%
909 % % outer skeleton %
910 % %%%%%%%%%%%%%%%%%%
911 {\resetbdsw%
912 \@bond@@omit{#5}%
913 \set@skel@bond{#1}{a}{a}% bond between 1 and 2 \@aaa -> \skbonda etc
914 \set@skel@bond{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc
915 \set@skel@longbond{#1}{c}{skbondhorizi}%
916  % bond between 3 and 4 \@ccc -> \skbondhorizi etc
917 \set@skel@bond{#1}{d}{e}% bond between 4 and 5 \@ddd -> \skbonde etc

918 \set@skel@bond{#1}{e}{f}% bond between 5 and 6 \@eee -> \skbondf etc

919 }%

920 % %%%%%%%%%%%%%%%%%%%%%
921 % % inner double bond %
922 % %%%%%%%%%%%%%%%%%%%%%
923 \@tfor\member:=#2\do{%
924 \if\member r%
925 \else\if\member a\relax \bonda%
926 \else\if\member b\relax \bondb%
927 \else\if\member c\relax \bondhorizi%
928 \else\if\member d\relax \bonde%
929 \else\if\member e\relax \bondf%
930 \else\if\member A\relax%
931 \put(0,233){\circle{180}}%aromatic circle
932 \else
933  \expandafter\twoCH@@R\member//%
934  \set@fusionadd@fivevi
935 \fi\fi\fi\fi\fi\fi\fi}%
936 % %%%%%%%%%%%%%%%%%%%%%%%
937 % % setting heteroatoms %
938 % %%%%%%%%%%%%%%%%%%%%%%%
939 \set@hetatom@sixv{#3}{0}{0}{4}{0}%  % for 1 to 3
940 \set@hetatom@sixv{#3}{1}{4}{7}{0}%  % for 4 to 5
941 % %%%%%%%%%%%%%%%%%%%%%%%%
942 % % setting substituents %
943 % %%%%%%%%%%%%%%%%%%%%%%%%
944 \setsixringv{#4}{0}{0}{4}{0}%  % for 1 to 3
945 \setsixringv{#4}{1}{4}{7}{0}%  % for 4 to 5
946 \end{picture}\iniatom\iniflag}%end of \fiveheterovi macro

7.3 Pyrrole derivatives of vertical type

The macro \fiveheterov 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 *
  *  (vertical type)                *
  ***********************************
    \pyrrolev[BONDLIST]{SUBSLIST}
    \pyrazolev[BONDLIST]{SUBSLIST}
    \imidazolev[BONDLIST]{SUBSLIST}
    \isoxazolev[BONDLIST]{SUBSLIST}
    \oxazolev[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.
         \pyrrolev{1==H;2==F}
         \pyrrolev[]{1==H;2==F}
         \imidazolev[c]{1==Cl;4==F;2==CH$_{3}$}
         \isoxazolev[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl}

\pyrrolev \pyrazolev \imidazolev \isoxazolev \oxazolev
947 \def\pyrrolev{\@ifnextchar[{\@pyrrolev[@}{\@pyrrolev[bd]}}
948 \def\@pyrrolev[#1]#2{%
949 \iforigpt \typeout{command `pyrrolev' %
950 is based on `fiveheterov'.}\fi%
951 \fiveheterov[#1]{1==N}{#2}}
952 \def\pyrazolev{\@ifnextchar[{\@pyrazolev[@}{\@pyrazolev[bd]}}
953 \def\@pyrazolev[#1]#2{%
954 \iforigpt \typeout{command `pyrazolev' %
955 is based on `fiveheterov'.}\fi%
956 \fiveheterov[#1]{1==N;2==N}{#2}}
957 \def\imidazolev{\@ifnextchar[{\@imidazolev[@}{\@imidazolev[bd]}}
958 \def\@imidazolev[#1]#2{%
959 \iforigpt \typeout{command `imidazolev' %
960 is based on `fiveheterov'.}\fi%
961 \fiveheterov[#1]{1==N;3==N}{#2}}
962 \def\isoxazolev{\@ifnextchar[{\@isoxazolev[@}{\@isoxazolev[bd]}}
963 \def\@isoxazolev[#1]#2{%
964 \iforigpt \typeout{command `isoxazolev' %
965 is based on `fiveheterov'.}\fi%
966 \fiveheterov[#1]{1==O;2==N}{#2}}
967 \def\oxazolev{\@ifnextchar[{\@oxazolev[@}{\@oxazolev[bd]}}
968 \def\@oxazolev[#1]#2{%
969 \iforigpt \typeout{command `oxazolev' %
970 is based on `fiveheterov'.}\fi%
971 \fiveheterov[#1]{1==O;3==N}{#2}}
\furanv \thiophenev
972 \def\furanv{\@ifnextchar[{\@furanv[@}{\@furanv[bd]}}
973 \def\@furanv[#1]#2{%
974 \iforigpt \typeout{command `furanv' %
975 is based on `fiveheterov'.}\fi%
976 \fiveheterov[#1]{1==O}{#2}}
977 \def\thiophenev{\@ifnextchar[{\@thiophenev[@}{\@thiophenev[bd]}}
978 \def\@thiophenev[#1]#2{%
979 \iforigpt \typeout{command `thiophenev' %
980 is based on `fiveheterov'.}\fi%
981 \fiveheterov[#1]{1==S}{#2}}

7.4 Pyrrole derivatives of inverse vertical type

The macro \fiveheterovi 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 *
*  (vertical type, inverse)       *
***********************************
\pyrrolevi[BONDLIST]{SUBSLIST}
\pyrazolevi[BONDLIST]{SUBSLIST}
\imidazolevi[BONDLIST]{SUBSLIST}
\isoxazolevi[BONDLIST]{SUBSLIST}
\oxazolevi[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 (max 6 substitution positions)
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.
         \pyrrolevi{1==H;2==F}
         \pyrrolevi[]{1==H;2==F}
         \imidazolevi[c]{1==Cl;4==F;2==CH$_{3}$}
         \isoxazolevi[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl}

\pyrrolevi
\pyrazolevi
\imidazolevi
\isoxazolevi
\oxazolevi

982 \def\pyrrolevi{\@ifnextchar[{\@pyrrolevi[@}{\@pyrrolevi[bd]}}
983 \def\@pyrrolevi[#1]#2{%
984 \iforigpt \typeout{command `pyrrolevi' %
985 is based on `fiveheterovi'.}\fi%
986 \fiveheterovi[#1]{1==N}{#2}}
987 \def\pyrazolevi{\@ifnextchar[{\@pyrazolevi[@}{\@pyrazolevi[bd]}}
988 \def\@pyrazolevi[#1]#2{%
989 \iforigpt \typeout{command `pyrazolevi' %
990 is based on `fiveheterovi'.}\fi%
991 \fiveheterovi[#1]{1==N;2==N}{#2}}
992 \def\imidazolevi{\@ifnextchar[{\@imidazolevi[@}{\@imidazolevi[bd]}}
993 \def\@imidazolevi[#1]#2{%
994 \iforigpt \typeout{command `imidazolevi' %
995 is based on `fiveheterovi'.}\fi%
996 \fiveheterovi[#1]{1==N;3==N}{#2}}
997 \def\isoxazolevi{\@ifnextchar[{\@isoxazolevi[@}{\@isoxazolevi[bd]}}
998 \def\@isoxazolevi[#1]#2{%
999 \iforigpt \typeout{command `isoxazolevi' %
1000 is based on `fiveheterovi'.}\fi%
1001 \fiveheterovi[#1]{1==O;2==N}{#2}}
1002 \def\oxazolevi{\@ifnextchar[{\@oxazolevi[@}{\@oxazolevi[bd]}}

1003 \def\@oxazolevi[#1]#2{%
1004 \iforigpt \typeout{command `oxazolevi' %
1005 is based on `fiveheterovi'.}\fi%
1006 \fiveheterovi[#1]{1==O;3==N}{#2}}
\furanvi
\thiophenevi
1007 \def\furanvi{\@ifnextchar[{\@furanvi[@}{\@furanvi[bd]}}
1008 \def\@furanvi[#1]#2{%
1009 \iforigpt \typeout{command `furanvi' %
1010 is based on `fiveheterovi'.}\fi%
1011 \fiveheterovi[#1]{1==O}{#2}}
1012 \def\thiophenevi{\@ifnextchar[{\@thiophenevi[@}{\@thiophenevi[bd]}}
1013 \def\@thiophenevi[#1]#2{%
1014 \iforigpt \typeout{command `thiophenevi' %
1015 is based on `fiveheterovi'.}\fi%
1016 \fiveheterovi[#1]{1==S}{#2}}

8 Six-to-six fused heterocyles

8.1 Vertical type

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

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

The macro \decaheterov 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.

     \decaheterov(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          :  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 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.
\decaheterov{1==N}{1==Cl;2==F}
\decaheterov[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
\decaheterov[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl}

The definition of \decaheterov 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 several times.

\decaheterov
\@deca@heterov
\@deca@@heterov
\@decaheterov

1017 \def\decaheterov{\@ifnextchar({\@deca@heterov(@}{\@deca@heterov(@)}}
1018 \def\@deca@heterov(#1){\@ifnextchar[{\@deca@@heterov(#1)[@}%
1019 {\@deca@@heterov(#1)[@]}}
1020 \def\@deca@@heterov(#1)[#2]#3#4{\@ifnextchar[%
1021 {\@decaheterov(#1)[#2]{#3}{#4}[@}%
1022 {\@decaheterov(#1)[#2]{#3}{#4}[@]}}
1023 \def\@decaheterov(#1)[#2]#3#4[#5]{%
1024 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1025 % % treatment of atom list %
1026 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1027 \iniflag\iniatom%
1028 \test@vertix@sixv{#3}{a}{b}{c}{d}{e}{f}%
1029 \test@vertix@decav{#3}{g}{h}{i}{j}{@}{@}%
1030 % %%%%%%%%%%%%%%%%%%%%%%%
1031 % % adjustment for (yl) %
1032 % %%%%%%%%%%%%%%%%%%%%%%%
1033 \@reset@ylsw%
1034 \ylhetposition{#4}{0}{0}{5}{0}% %substituents on 1 to 4
1035 \if@ylsw \ifx\@@ylii\empty
1036 \def\@@ylii{-342}\def\@@yli{0}\fi
1037 \else
1038 \ylhetposition{#4}{-1}{3}{7}{0}% %substituents on 5 to 7

1039 \fi

1040 \if@ylsw \ifx\@@ylii\empty
1041 \def\@@ylii{0}\def\@@yli{0}\fi
1042 \else
1043 \ylhetposition{#4}{-7}{0}{2}{0}% %substituent on 8

1044 \fi

1045 \if@ylsw \ifx\@@ylii\empty
1046 \def\@@ylii{0}\def\@@yli{0}\fi
1047 \else

1048 {%

1049 \clipdetection%
1050 \@clipfusefalse \if@iclip \@clipfusetrue \fi%
1051 \ylatombondposition{#4}{-8}{7}%   %9 %for 4a position

1052 }% 1053 \fi

1054 \if@ylsw \ifx\@@ylii\empty
1055 \def\@@ylii{-171}\def\@@yli{-103}\fi
1056 \else

1057 {%

1058 \clipdetection%
1059 \@clipfusefalse \if@jclip \@clipfusetrue \fi%
1060 \ylatombondposition{#4}{-9}{1}%  %10 for 8a position

1061 }% 1062 \fi

1063 \if@ylsw \ifx\@@ylii\empty
1064 \def\@@ylii{-171}\def\@@yli{-303}\fi

1065 \fi

1066 \if@ylsw
1067 \yl@shiftii=\@ylii
1068 \yl@shifti=\@yli
1069 \advance\yl@shiftii\@@ylii
1070 \advance\yl@shifti\@@yli
1071 \advance\yl@shiftii\yl@xdiff
1072 \advance\yl@shifti\yl@ydiff
1073 \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
1074 \reset@yl@xydiff%1999/1/6 by S. Fujita
1075 \else
1076 \begin{picture}(1200,880)(-\shiftii,-\shifti)%
1077 \iforigpt \put(-\shiftii,-\shifti){\circle*{50}}%
1078  \put(-\noshift,-\noshift){\circle{50}}%
1079 \typeout{command `decaheterov' origin: %
1080  (\the\noshift,\the\noshift) ---> (\the\shiftii,\the\shifti)}\fi%

1081 \fi

1082 % %%%%%%%%%%%%%%%%%%
1083 % % outer skeleton %
1084 % %%%%%%%%%%%%%%%%%%
1085 \begingroup
1086 \resetbdsw%
1087 \@bond@@omit{#5}%
1088 {\let\fff=\jjj \let\eee=\iii%
1089 \put(342,0){\set@skel@bond{#1}{a}{a}}%
1090 % bond between 1 and 2 \@aaa -> \skbonda etc
1091 \put(342,0){\set@skel@bond{#1}{b}{b}}%
1092 % bond between 2 and 3 \@bbb -> \skbondb etc
1093 \put(342,0){\set@skel@bond{#1}{c}{c}}%
1094 % bond between 3 and 4 \@ccc -> \skbondc etc
1095 \put(342,0){\set@skel@bond{#1}{d}{d}}%
1096 % bond between 4 and 4a \@ddd -> \skbondd etc
1097 \put(342,0){\set@skel@bond{#1}{k}{e}}%
1098 % bond between 4a and 8a \@kkk -> \skbonde etc
1099 \put(342,0){\set@skel@bond{#1}{j}{f}}%
1100 % bond between 8a and 1 \@jjj -> \skbondf etc

1101 }%

1102 {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\ggg%
1103 \let\ccc=\iii\let\bbb=\jjj%
1104 \set@skel@bond{#1}{i}{a}% bond between 8 and 8a \@iii -> \skbonda etc
1105 \set@skel@bond{#1}{e}{c}% bond between 5 and 4a \@eee -> \skbondc etc
1106 \set@skel@bond{#1}{f}{d}% bond between 5 and 6 \@fff -> \skbondd etc
1107 \set@skel@bond{#1}{g}{e}% bond between 6 and 7 \@ggg -> \skbonde etc
1108 \set@skel@bond{#1}{h}{f}% bond between 7 and 8 \@hhh -> \skbondf etc

1109 }%

1110 \endgroup
1111 % %%%%%%%%%%%%%%%%%%%%%
1112 % % inner double bond %
1113 % %%%%%%%%%%%%%%%%%%%%%
1114 \@tfor\member:=#2\do{%
1115 \if\member r\relax%
1116 {\let\fff=\jjj \let\eee=\iii%
1117 \put(342,0){\bonda}% bond between 1 and 2
1118 \put(342,0){\bondc}% bond between 3 and 4

1119 }%

1120 {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\ggg%
1121 \let\ccc=\iii\let\bbb=\jjj%
1122 \put(0,0){\bondb}% bond between 8a and 4a
1123 \put(0,0){\bondf}% bond between 8 and 7
1124 \put(0,0){\bondd}% bond between 5 and 6

1125 }%

1126 \else\if\member l\relax%
1127 \else\if\member a\relax%
1128 \put(342,0){\bonda}% bond between 1 and 2
1129 \else\if\member b\relax
1130 \put(342,0){\bondb}% bond between 2 and 3
1131 \else\if\member c\relax
1132 \put(342,0){\bondc}% bond between 3 and 4
1133 \else\if\member d\relax%
1134 {\let\eee=\iii%
1135 \put(342,0){\bondd}% bond between 4 and 4a

1136 }%

1137 \else\if\member e\relax%
1138 {\let\ccc=\iii \let\ddd=\eee%
1139 \put(0,0){\bondc}% bond between 5 and 4a

1140 }%

1141 \else\if\member f\relax%
1142 {\let\ddd=\eee \let\eee=\fff%
1143 \put(0,0){\bondd}% bond between 5 and 6

1144 }%

1145 \else\if\member g\relax%
1146 {\let\eee=\fff \let\fff=\ggg%
1147 \put(0,0){\bonde}% bond between 6 and 7

1148 }%

1149 \else\if\member h\relax%
1150 {\let\aaa=\hhh \let\fff=\ggg%
1151 \put(0,0){\bondf}% bond between 8 and 7

1152 }%

1153 \else\if\member i\relax%
1154 {\let\aaa=\hhh \let\bbb=\jjj%
1155 \put(0,0){\bonda}% bond between 8 and 8a

1156 }%

1157 \else\if\member j\relax%
1158 {\let\fff=\jjj%

1159 \put(342,0){\bondf}% bond between 1 and 8a

1160 }%

1161 \else\if\member k\relax%
1162 {\let\ccc=\iii\let\bbb=\jjj%
1163 \put(0,0){\bondb}% bond between 8a and 4a

1164 }%

1165 \else\if\member K\relax%
1166 {\let\eee=\iii\let\fff=\jjj%
1167 \put(342,0){\bonde}% bond between 8a and 4a in the other ring

1168 }%

1169 \else\if\member A%left aromatic circle
1170 \put(0,203){\circle{240}}               %circle
1171 \else\if\member B%left aromatic circle
1172 \put(342,203){\circle{240}}             %circle
1173 \else
1174 \expandafter\twoCH@@R\member//
1175 \def\aax{8a}\def\aay{4a}\def\aaz{10}%
1176  \if\@@tmpa 1\relax%                  % plus charge etc.
1177  \putratom{304}{282}{\@@tmpb}%      % right type
1178  \else\if\@@tmpa 2\relax%
1179  \putratom{402}{253}{\@@tmpb}%      % right type
1180  \else\if\@@tmpa 3\relax%
1181  \putratom{402}{120}{\@@tmpb}%      % right type
1182  \else\if\@@tmpa 4\relax%
1183  \putratom{304}{68}{\@@tmpb}%       % right type
1184  \else\if\@@tmpa 5\relax%
1185  \putratom{-38}{68}{\@@tmpb}%       % right type
1186  \else\if\@@tmpa 6\relax%
1187  \putlatom{-60}{253}{\@@tmpb}%      % left type
1188  \else\if\@@tmpa 7\relax%
1189  \putlatom{-60}{120}{\@@tmpb}%      % left type
1190  \else\if\@@tmpa 8\relax%
1191  \putratom{-38}{282}{\@@tmpb}%      % right type
1192  \else\if\@@tmpa 9\relax%
1193  \putratom{60}{120}{\@@tmpb}%       % right type
1194 %      \else\if\@@tmpa 10\relax%
1195  \else\ifx\@@tmpa\aaz\relax%1998/10/17
1196  \putratom{60}{253}{\@@tmpb}%       % right type
1197  \else\ifx\@@tmpa\aax\relax%
1198  \putratom{60}{253}{\@@tmpb}%       % right type
1199  \else\ifx\@@tmpa\aay\relax%
1200  \putratom{60}{120}{\@@tmpb}%       % right type
1201  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
1202 % ***********************
1203 % * setting fused rings *
1204 % ***********************
1205 \expandafter\twoCH@R\member//%
1206 \set@fusion@decav
1207 \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
1208 \fi\fi\fi\fi\fi\fi%

1209 }%

1210 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1211 % % setting hetero atoms and spiro rings %
1212 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1213 \iniflag
1214 \put(342,0){\set@hetatom@sixv{#3}{0}{0}{5}{0}%
1215 \if@aclip \global\@acliptrue\fi
1216 \if@bclip \global\@bcliptrue\fi
1217 \if@cclip \global\@ccliptrue\fi
1218 \if@clip \global\@cliptrue\fi}% %substituents on 1 to 4
1219 \put(0,0){\iniflag%2000/11/11 by S. Fujita
1220 \set@hetatom@sixv{#3}{-1}{3}{7}{0}%
1221 \@gclipfalse \if@fclip \global\@gcliptrue \fi%
1222 \@fclipfalse \if@eclip \global\@fcliptrue \fi%
1223 \@eclipfalse \if@clip \global\@ecliptrue \fi}%substituents on 5 to 7
1224 \put(0,0){\iniflag%2000/11/11 by S. Fujita
1225 \set@hetatom@sixv{#3}{-7}{0}{2}{0}%
1226 \@hclipfalse \if@aclip \global\@hcliptrue \fi}%%substituent on 8
1227 \put(0,0){\set@vrtx@fuse{#3}%
1228 \if@iclip \global\@icliptrue \fi
1229 \if@jclip \global\@jcliptrue \fi}% fused positions
1230 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1231 % % setting substituents and exocyclic bonds %
1232 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1233 \put(342,0){\setsixringv{#4}{0}{0}{5}{0}}% %substituents on 1 to 4

1234 {%

1235 \@clipfalse \if@eclip \@cliptrue \fi%   %substituents on 5 to 7
1236 \@eclipfalse \if@fclip \@ecliptrue \fi%
1237 \@fclipfalse \if@gclip \@fcliptrue \fi%
1238 \put(0,0){\setsixringv{#4}{-1}{3}{7}{0}}%

1239 }%

1240 {\@aclipfalse \if@hclip \@acliptrue \fi%   %substituent on 8
1241 \put(0,0){\setsixringv{#4}{-7}{0}{2}{0}}%

1242 }%

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

1245 }%

1246 {\@clipfusefalse \if@jclip \@clipfusetrue \fi%
1247 \put(171,303){\setatombond{#4}{-9}{1}}%  %10 for 8a position

1248 }%

1249 \end{picture}\iniatom\iniflag}%     %end of \decaheterov macro

The \clipdetection command is used for the detection of clippings for a six-six ring. In particular, the clippings at the fused positions are detected in the \decaheterov command, where the data are applied to the command

  \ylatombondposition (chemstr.dtx).
\clipdetection
1250 \def\clipdetection{%

1251 % hetero atom on 1
1252 \ifx\aaa\empty\else%
1253  \@acliptrue%
1254 \fi%
1255 % hetero atom on 2
1256 \ifx\bbb\empty\else%
1257  \@bcliptrue%
1258 \fi%
1259 % hetero atom on 3
1260 \ifx\ccc\empty\else%
1261  \@ccliptrue%
1262 \fi%
1263 % hetero atom on 4
1264 \ifx\ddd\empty\else%
1265 \@cliptrue%
1266 \fi%
1267 % hetero atom on 4a
1268 {\let\eee=\iii%
1269 \ifx\eee\empty\else%
1270  \global\@icliptrue%
1271 \fi%

1272 }%

1273 % hetero atom on 8a
1274 {\let\fff=\jjj%
1275 \ifx\fff\empty\else%
1276  \global\@jcliptrue%
1277 \fi%

1278 }%

1279 % hetero atom on 5
1280 {\let\ddd=\eee%
1281 \ifx\ddd\empty\else
1282 \global\@ecliptrue%
1283 \fi%

1284 }%

1285 % hetero atom on 6
1286 {\let\eee=\fff%
1287 \ifx\eee\empty\else%
1288  \global\@fcliptrue%
1289 \fi%

1290 }%

1291 % hetero atom on 7
1292 {\let\fff=\ggg%
1293 \ifx\fff\empty\else%
1294  \global\@gcliptrue%
1295 \fi%

1296 }%

1297 % hetero atom on 8
1298 {\let\aaa=\hhh%
1299 \ifx\aaa\empty\else%
1300  \global\@hcliptrue%

1301 \fi%
1302 }}% end \clipdetection

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

\ylhetposition
1303 \def\ylhetposition#1#2#3#4#5{%
1304 \@@ylswfalse%%%\@reset@ylsw
1305 \@forsemicol\member:=#1\do{%
1306 \if@@ylsw\else%
1307 \ifx\member\empty\else%
1308 \expandafter\@m@mb@r\member;\relax%
1309 \expandafter\threech@r\@membera{}{}\relax%
1310 \ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi
1311 \if@@ylsw
1312 \ifnum#5<0\relax%
1313 \@tmpaa=-\@tmpa\relax \advance\@tmpaa by#2\relax%
1314 \else\@tmpaa=\@tmpa\relax \advance\@tmpaa by#2\relax\fi
1315 \ifnum\@tmpaa>#3\relax%
1316 \ifnum\@tmpaa<#4\relax%
1317 \ifcase\@tmpaa%0 omit

The flags \@lyatrue etc are not used in a revised edition.

1318 \or

1319  \ifx\aaa\empty
1320  \ifx\hhh\empty% aaa and hhh are absent
1321  \gdef\@ylii{0}\gdef\@yli{-406}\global\@ylswtrue%\@ylatrue% subst. on 1
1322  \else% hhh is present
1323  \def\@ylii{0}\def\@yli{-442}\@ylswtrue%\@ylatrue% subst. on 1

1324 \fi

1325  \else%aaa is present
1326  \def\@ylii{0}\def\@yli{-442}\@ylswtrue%\@ylatrue% subst. on 1

1327 \fi

1328 \or\ifx\bbb\empty
1329  \def\@ylii{-171}\def\@yli{-303}\@ylswtrue%\@ylbtrue% subst. on 2
1330 %      \def\@ylii{-513}\def\@yli{-303}\@ylswtrue%\@ylbtrue% subst. on 2
1331  \else
1332  \def\@ylii{-213}\def\@yli{-327}\@ylswtrue%\@ylbtrue% subst. on 2
1333 %      \def\@ylii{-555}\def\@yli{-327}\@ylswtrue%\@ylbtrue% subst. on 2

1334 \fi

1335 \or\ifx\ccc\empty
1336  \def\@ylii{-171}\def\@yli{-103}\@ylswtrue%\@ylctrue% subst. on 3
1337 %      \def\@ylii{-513}\def\@yli{-103}\@ylswtrue%\@ylctrue% subst. on 3
1338  \else
1339  \def\@ylii{-213}\def\@yli{-79}\@ylswtrue%\@ylctrue% subst. on 3
1340 %      \def\@ylii{-555}\def\@yli{-79}\@ylswtrue%\@ylctrue% subst. on 3

1341 \fi

1342 \or\ifx\ddd\empty
1343  \ifx\eee\empty% ddd and eee are absent

1344  \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%\@yldtrue% subst. on 4
1345  \else% eee present
1346  \gdef\@ylii{0}\gdef\@yli{36}\global\@ylswtrue%\@yldtrue% subst. on 4

1347 \fi

1348  \else% ddd present
1349  \gdef\@ylii{0}\gdef\@yli{36}\global\@ylswtrue%\@yldtrue% subst. on 4

1350 \fi 1351 \or

1352  \ifx\eee\empty
1353  \ifx\iii\empty
1354  \ifx\fff\empty% eee, iii and fff are absent
1355  \def\@ylii{173}\def\@yli{-103}\@ylswtrue%\@yletrue% subst. on 5
1356  \else% fff is present
1357  \def\@ylii{213}\def\@yli{-79}\@ylswtrue%\@yletrue% subst. on 5

1358 \fi

1359 %     \else% iii is present; fused position => no action here
1360 %        \def\@ylii{0}\def\@yli{-36}\@ylswtrue%\@yletrue% subst. on 5

1361 \fi

1362  \else% eee is present
1363  \def\@ylii{213}\def\@yli{-79}\@ylswtrue%\@yletrue% subst. on 5

1364 \fi 1365 \or

1366  \ifx\fff\empty
1367  \ifx\jjj\empty
1368  \ifx\ggg\empty% fff, jjj, and ggg are absent
1369  \def\@ylii{173}\def\@yli{-303}\@ylswtrue%\@ylftrue% subst. on 6
1370  \else%ggg is present
1371  \def\@ylii{213}\def\@yli{-327}\@ylswtrue%\@ylftrue% subst. on 6

1372 \fi

1373 %     \else%jjj is present; fused position => no action here
1374 %       \def\@ylii{213}\def\@yli{-327}\@ylswtrue%\@ylftrue% subst. on 6

1375 \fi

1376  \else%fff is present
1377  \def\@ylii{213}\def\@yli{-327}\@ylswtrue%\@ylftrue% subst. on 6
1378  \fi%
1379 \fi%end of ifcase
1380 \fi\fi\fi\fi\fi}}%

8.2 Inverse vertical type

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

   **********************************
   * decahetero derivatives         *
   *  (vertical type, inverse type) *
   **********************************
   The following numbering is adopted in this macro.
            5 (9) 4

          *  4a *
     6  *   * *   *  3
       |     |     |
       |     |     |
     7  *   * *   *  2
          *  8a *
          8 (10)1
          ^
          |
          the original point

The macro \decaheterovi 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.

   \decaheterovi(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          :  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
           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.
          \decaheterovi{1==N}{1==Cl;2==F}
          \decaheterovi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
          \decaheterovi[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl}

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

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

\decaheterovi
\@deca@heterovi
\@deca@@heterovi
\@decaheterovi

1381 \def\decaheterovi{\@ifnextchar({\@deca@heterovi(@}{\@deca@heterovi(@)}}
1382 \def\@deca@heterovi(#1){\@ifnextchar[{\@deca@@heterovi(#1)[@}%
1383 {\@deca@@heterovi(#1)[@]}}
1384 \def\@deca@@heterovi(#1)[#2]#3#4{\@ifnextchar[%
1385 {\@decaheterovi(#1)[#2]{#3}{#4}[@}%
1386 {\@decaheterovi(#1)[#2]{#3}{#4}[@]}}
1387 \def\@decaheterovi(#1)[#2]#3#4[#5]{%
1388 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1389 % % treatment of atom list %
1390 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1391 \iniflag\iniatom%
1392 %%\test@vertix@sixv{#3}{d}{c}{b}{a}{h}{g}%
1393 %%\test@vertix@decav{#3}{f}{e}{i}{j}{@}{@}%{i}{j} fixed
1394 \test@vertix@decavi{#3}%

1395 %

1396 % %%%%%%%%%%%%%%%%%%%%%%%
1397 % % adjustment for (yl) %
1398 % %%%%%%%%%%%%%%%%%%%%%%%
1399 \@reset@ylsw%
1400 \ylhetposition{#4}{5}{0}{5}{-1}% %substituents on 1 to 4
1401 \if@ylsw \ifx\@@ylii\empty
1402 \def\@@ylii{-342}\def\@@yli{0}\fi

1403 \else
1404 \ylhetposition{#4}{12}{3}{7}{-1}% %substituents on 6 to 8

1405 \fi

1406 \if@ylsw \ifx\@@ylii\empty
1407 \def\@@ylii{0}\def\@@yli{0}\fi
1408 \else
1409 \ylhetposition{#4}{-4}{0}{2}{0}% %substituent on 5

1410 \fi

1411 \if@ylsw \ifx\@@ylii\empty
1412 \def\@@ylii{0}\def\@@yli{0}\fi
1413 \else

1414 {%

1415 \clipdetection%
1416 \@clipfusefalse \if@iclip \@clipfusetrue \fi%
1417 \ylatombondposition{#4}{-9}{7}%  %10 for 8a position

1418 }% 1419 \fi

1420 \if@ylsw \ifx\@@ylii\empty
1421 \def\@@ylii{-171}\def\@@yli{-103}\fi
1422 \else

1423 {%

1424 \clipdetection%
1425 \@clipfusefalse \if@jclip \@clipfusetrue \fi%
1426 \ylatombondposition{#4}{-8}{1}%   %9 for 4a position

1427 }% 1428 \fi

1429 \if@ylsw \ifx\@@ylii\empty
1430 \def\@@ylii{-171}\def\@@yli{-303}\fi

1431 \fi

1432 \if@ylsw
1433 \yl@shiftii=\@ylii
1434 \yl@shifti=\@yli
1435 \advance\yl@shiftii\@@ylii
1436 \advance\yl@shifti\@@yli
1437 \advance\yl@shiftii\yl@xdiff
1438 \advance\yl@shifti\yl@ydiff
1439 \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
1440 \reset@yl@xydiff%1999/1/6 by S. Fujita
1441 \else
1442 \begin{picture}(1200,880)(-\shiftii,-\shifti)%
1443 \iforigpt \put(-\shiftii,-\shifti){\circle*{50}}%
1444  \put(-\noshift,-\noshift){\circle{50}}%
1445 \typeout{command `decaheterovi' origin: %
1446  (\the\noshift,\the\noshift) ---> (\the\shiftii,\the\shifti)}\fi%

1447 \fi

1448 % %%%%%%%%%%%%%%%%%%
1449 % % outer skeleton %
1450 % %%%%%%%%%%%%%%%%%%
1451 \begingroup

1452 \resetbdsw%
1453 \@bond@@omit{#5}%
1454 {\let\fff=\jjj \let\eee=\iii%
1455 \put(342,0){\set@skel@bond{#1}{c}{a}}%
1456 % bond between 1 and 2 \@aaa -> \skbonda etc
1457 \put(342,0){\set@skel@bond{#1}{b}{b}}%
1458 % bond between 2 and 3 \@bbb -> \skbondb etc
1459 \put(342,0){\set@skel@bond{#1}{a}{c}}%
1460 % bond between 3 and 4 \@ccc -> \skbondc etc
1461 \put(342,0){\set@skel@bond{#1}{j}{d}}%
1462 % bond between 4 and 4a \@ddd -> \skbondd etc
1463 \put(342,0){\set@skel@bond{#1}{k}{e}}%
1464 % bond between 4a and 8a \@kkk -> \skbonde etc
1465 \put(342,0){\set@skel@bond{#1}{d}{f}}%
1466 % bond between 8a and 1 \@jjj -> \skbondf etc

1467 }%

1468 {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\ggg%
1469 \let\ccc=\iii\let\bbb=\jjj%
1470 \set@skel@bond{#1}{e}{a}% bond between 8 and 8a \@eee -> \skbonda etc
1471 \set@skel@bond{#1}{i}{c}% bond between 5 and 4a \@iii -> \skbondc etc
1472 \set@skel@bond{#1}{h}{d}% bond between 5 and 6 \@hhh -> \skbondd etc
1473 \set@skel@bond{#1}{g}{e}% bond between 6 and 7 \@ggg -> \skbonde etc
1474 \set@skel@bond{#1}{f}{f}% bond between 7 and 8 \@fff -> \skbondf etc

1475 }%

1476 \endgroup
1477 % %%%%%%%%%%%%%%%%%%%%%
1478 % % inner double bond %
1479 % %%%%%%%%%%%%%%%%%%%%%
1480 \@tfor\member:=#2\do{%
1481 \if\member r\relax%
1482 {\let\fff=\jjj \let\eee=\iii%
1483 \put(342,0){\bonda}% bond between 1 and 2
1484 \put(342,0){\bondc}% bond between 3 and 4

1485 }%

1486 {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\ggg%
1487 \let\ccc=\iii\let\bbb=\jjj%
1488 \put(0,0){\bondb}% bond between 8a and 4a
1489 \put(0,0){\bondf}% bond between 8 and 7
1490 \put(0,0){\bondd}% bond between 5 and 6

1491 }%

1492 \else\if\member l\relax%
1493 \else\if\member a\relax%
1494 \put(342,0){\bondc}% bond between 3 and 4
1495 \else\if\member b\relax%
1496 \put(342,0){\bondb}% bond between 2 and 3
1497 \else\if\member c\relax%
1498 \put(342,0){\bonda}% bond between 1 and 2
1499 \else\if\member d\relax%
1500 {\let\fff=\jjj%

1501 \put(342,0){\bondf}% bond between 1 and 8a

1502 }%

1503 \else\if\member e\relax%
1504 {\let\aaa=\hhh \let\bbb=\jjj%
1505 \put(0,0){\bonda}% bond between 8 and 8a

1506 }%

1507 \else\if\member f\relax%
1508 {\let\aaa=\hhh \let\fff=\ggg%
1509 \put(0,0){\bondf}% bond between 8 and 7

1510 }%

1511 \else\if\member g\relax%
1512 {\let\eee=\fff \let\fff=\ggg%
1513 \put(0,0){\bonde}% bond between 6 and 7

1514 }%

1515 \else\if\member h\relax%
1516 {\let\ddd=\eee \let\eee=\fff%
1517 \put(0,0){\bondd}% bond between 5 and 6

1518 }%

1519 \else\if\member i\relax%
1520 {\let\ccc=\iii \let\ddd=\eee%
1521 \put(0,0){\bondc}% bond between 5 and 4a

1522 }%

1523 \else\if\member j\relax%
1524 {\let\eee=\iii%
1525 \put(342,0){\bondd}% bond between 4 and 4a

1526 }%

1527 \else\if\member k\relax%
1528 {\let\ccc=\iii\let\bbb=\jjj%
1529 \put(0,0){\bondb}% bond between 8a and 4a

1530 }%

1531 \else\if\member K\relax%
1532 {\let\eee=\iii\let\fff=\jjj%
1533 \put(342,0){\bonde}% bond between 8a and 4a in the other ring

1534 }%

1535 \else\if\member A%left aromatic circle
1536 \put(0,203){\circle{240}}               %circle
1537 \else\if\member B%left aromatic circle
1538 \put(342,203){\circle{240}}             %circle
1539 \else
1540 \expandafter\twoCH@@R\member//%
1541 \def\aax{4a}\def\aay{8a}\def\aaz{10}%
1542  \if\@@tmpa 4\relax%                  % plus charge etc.
1543  \putratom{304}{282}{\@@tmpb}%      % right type
1544  \else\if\@@tmpa 3\relax%
1545  \putratom{402}{253}{\@@tmpb}%      % right type
1546  \else\if\@@tmpa 2\relax%
1547  \putratom{402}{120}{\@@tmpb}%      % right type
1548  \else\if\@@tmpa 1\relax%
1549  \putratom{304}{68}{\@@tmpb}%       % right type
1550  \else\if\@@tmpa 7\relax%

1551  \putlatom{-60}{253}{\@@tmpb}%      % left type
1552  \else\if\@@tmpa 6\relax%
1553  \putlatom{-60}{120}{\@@tmpb}%      % left type
1554  \else\if\@@tmpa 5\relax%
1555  \putratom{-38}{282}{\@@tmpb}%      % right type
1556  \else\if\@@tmpa 9\relax%
1557  \putratom{60}{253}{\@@tmpb}%       % right type
1558  \else\ifx\@@tmpa\aax\relax%
1559  \putratom{60}{253}{\@@tmpb}%       % right type
1560  \else\ifx\@@tmpa\aay\relax%
1561  \putratom{60}{120}{\@@tmpb}%       % right type
1562  \else\ifx\@@tmpa\aaz\relax% 1998/10/17 by S. Fujita
1563 %      \else\if\@@tmpa 10\relax%
1564  \putratom{60}{120}{\@@tmpb}%       % right type
1565  \else\if\@@tmpa 8\relax%
1566  \putratom{-38}{68}{\@@tmpb}%       % right type
1567  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
1568 % ***********************
1569 % * setting fused rings *
1570 % ***********************
1571 \expandafter\twoCH@R\member//%
1572 \set@fusion@decavi
1573 \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
1574 \fi\fi\fi\fi\fi\fi%

1575 }%

1576 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1577 % % setting hetero atoms and spiro rings %
1578 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1579 \iniflag\iniatom%
1580 \@tmpclipfalse
1581 \put(0,0){\set@hetatom@sixv{#3}{12}{3}{7}{-1}%
1582 \@gclipfalse \if@fclip \global\@gcliptrue \fi%
1583 \@fclipfalse \if@eclip \global\@fcliptrue \fi%
1584 \@eclipfalse \if@clip \global\@ecliptrue \fi%
1585 }%substituents on 6 to 8
1586 \put(0,0){\set@hetatom@sixv{#3}{-4}{0}{2}{0}%
1587 \@aclipfalse \if@aclip \global\@hcliptrue \fi%
1588 }%%substituent on 5
1589 \put(0,0){\set@vrtx@decafusevi{#3}%
1590 \@tmpclipfalse
1591 \if@iclip \global\@tmpcliptrue \fi
1592 \if@jclip \global\@icliptrue \fi
1593 \if@tmpclip \global\@jcliptrue \fi
1594 }% fused positions
1595 %to be done after all
1596 \put(342,0){\set@hetatom@sixv{#3}{5}{0}{5}{-1}%
1597 \if@aclip \global\@acliptrue\fi
1598 \if@bclip \global\@bcliptrue\fi
1599 \if@cclip \global\@ccliptrue\fi

1600 \if@clip \global\@cliptrue\fi
1601 }% %substituents on 1 to 4
1602 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1603 % % setting substituents and exocyclic bonds %
1604 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1605 \put(342,0){\setsixringv{#4}{5}{0}{5}{-1}}% %substituents on 1 to 4
1606 {\@clipfalse \if@eclip \@cliptrue \fi%      %substituents on 6 to 8
1607 \@eclipfalse \if@fclip \@ecliptrue \fi%
1608 \@fclipfalse \if@gclip \@fcliptrue \fi%
1609 \put(0,0){\setsixringv{#4}{12}{3}{7}{-1}}%

1610 }

1611 {\@aclipfalse \if@hclip \@acliptrue \fi%    %substituent on 5
1612 \put(0,0){\setsixringv{#4}{-4}{0}{2}{0}}%

1613 }%

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

1616 }%

1617 {\@clipfusefalse \if@jclip \@clipfusetrue \fi%
1618 \put(171,303){\setatombond{#4}{-8}{1}}%   %9 for 4a position

1619 }%

1620 \end{picture}\iniatom\iniflag}%   %end of \decaheterovi macro

The macro \test@vertix@decavi is used to test the presence of a hetero atom or a spiro substituent on a vertex of the decaheterovi nucleus.

\if@tmpclip
\test@vertix@decavi
1621 \newif\if@tmpclip \@tmpclipfalse
1622 \def\test@vertix@decavi#1{%
1623 \@forsemicol\member:=#1\do{%
1624 \ifx\member\empty\else%
1625 \expandafter\@m@mb@r\member;\relax%
1626 \expandafter\twoch@r\@membera{}%
1627 \ifcase\@tmpa%
1628 \or%
1629 \if\@tmpb s\relax\def\ddd{}\else\def\ddd{@}\fi
1630 \or%2
1631 \if\@tmpb s\relax\def\ccc{}\else\def\ccc{@}\fi
1632 \or%3
1633 \if\@tmpb s\relax\def\bbb{}\else\def\bbb{@}\fi
1634 \or%
1635 \if\@tmpb a%
1636  \def\jjj{@}%4a
1637 \else\if\@tmpb s%
1638  \def\aaa{}%4
1639 \else\if\@tmpb h%
1640  \def\aaa{@}%4
1641 \else\ifx\@tmpb\empty%
1642  \def\aaa{@}%4
1643 \fi\fi\fi\fi%

1644 \or%5
1645 \if\@tmpb s\relax\def\hhh{}\else\def\hhh{@}\fi
1646 \or%6
1647 \if\@tmpb s\relax\def\ggg{}\else\def\ggg{@}\fi
1648 \or%7
1649 \if\@tmpb s\relax\def\fff{}\else\def\fff{@}\fi
1650 \or%
1651 \if\@tmpb a%
1652  \xdef\iii{@}%8a
1653 \else\if\@tmpb s%
1654  \xdef\eee{}%8s
1655 \else\if\@tmpb h%
1656  \xdef\eee{@}%8h
1657 \else\ifx\@tmpb\empty%
1658  \xdef\eee{@}%8
1659 \fi\fi\fi\fi%
1660 \or%9 (= 4a)
1661 \if\@tmpb s\relax\def\jjj{}\else\def\jjj{@}\fi
1662 \or%10 (= 8a)
1663 \if\@tmpb s\relax\def\iii{}\else\def\iii{@}\fi
1664 \fi\fi}}

The macro \set@vrtx@decafusevi is used to set a hetero atom or on a vertex of a bridgehead location.

\set@vrtx@decafusevi
1665 \def\set@vrtx@decafusevi#1{%
1666 \@forsemicol\member:=#1\do{%
1667 \ifx\member\empty\else%
1668 \expandafter\@m@mb@r\member;\relax%
1669 \expandafter\twoch@r\@membera{}%
1670 \ifcase\@tmpa\or\or\or
1671 \or%%%%4
1672 \if\@tmpb a%
1673  \global\@icliptrue%
1674  \putlatom{207}{280}{\@memberb}% % left type
1675 \else\relax

1676 \fi

1677 \or\or\or
1678 \or%8
1679 \if\@tmpb a%
1680  \global\@jcliptrue%
1681  \putlatom{207}{65}{\@memberb}%  % left type
1682 \else\relax

1683 \fi

1684 \or%9 (= 4a)
1685  \global\@icliptrue%
1686  \putlatom{207}{280}{\@memberb}% % left type
1687 \or%10 (= 8a)
1688  \global\@jcliptrue%

1689  \putlatom{207}{65}{\@memberb}%  % left type
1690 \fi\fi}%
1691 }% end of the macro \set@vrtx@decafusevi

The macro \set@fusion@decavi is used to set a fused ring or on an edge of the decaheterovi nucleus.

\set@fusion@decavi
1692 \def\set@fusion@decavi{%
1693 \let\@@tmpa=\@tmpa
1694 \let\@@tmpb=\@tmpb
1695 \if\@tmpa a%
1696  \let\@@tmpa=\@tmpa
1697  \put(342,0){\set@fusionadd@sixvi}%
1698 \else\if\@tmpa A%
1699  \let\@@tmpa=\@tmpa
1700  \put(342,0){\set@fusionadd@sixvi}%
1701 \else\if\@tmpa b%
1702  \let\@@tmpa=\@tmpa
1703  \put(342,0){\set@fusionadd@sixvi}%
1704 \else\if\@tmpa B%
1705  \let\@@tmpa=\@tmpa
1706  \put(342,0){\set@fusionadd@sixvi}%
1707 \else\if\@tmpa c%
1708  \let\@@tmpa=\@tmpa
1709  \put(342,0){\set@fusionadd@sixvi}%
1710 \else\if\@tmpa C%
1711  \let\@@tmpa=\@tmpa
1712  \put(342,0){\set@fusionadd@sixvi}%
1713 \else\if\@tmpa d%
1714  \let\@@tmpa=\@tmpa
1715  \put(342,0){\set@fusionadd@sixvi}%
1716  \if@smallringsw\else
1717  \XyMTeXWarning{Unfavorable Fusion for bond `d'}%

1718 \fi

1719 \else\if\@tmpa D%
1720  \let\@@tmpa=\@tmpa
1721  \put(342,0){\set@fusionadd@sixvi}%
1722  \if@smallringsw\else
1723  \XyMTeXWarning{Unfavorable Fusion for bond `D'}%

1724 \fi

1725 \else\if\@tmpa e%
1726  \edef\@@tmpa{c}%
1727  \put(0,0){\set@fusionadd@sixvi}%
1728  \if@smallringsw\else
1729  \XyMTeXWarning{Unfavorable Fusion for bond `e'}%

1730 \fi

1731 \else\if\@tmpa E%
1732  \edef\@@tmpa{C}%
1733  \put(0,0){\set@fusionadd@sixvi}%

1734  \if@smallringsw\else
1735  \XyMTeXWarning{Unfavorable Fusion for bond `E'}%

1736 \fi

1737 \else\if\@tmpa f%
1738  \edef\@@tmpa{d}%
1739  \put(0,0){\set@fusionadd@sixvi}%
1740 \else\if\@tmpa F%
1741  \edef\@@tmpa{D}%
1742  \put(0,0){\set@fusionadd@sixvi}%
1743 \else\if\@tmpa g%
1744  \edef\@@tmpa{e}%
1745  \put(0,0){\set@fusionadd@sixvi}%
1746 \else\if\@tmpa G%
1747  \edef\@@tmpa{E}%
1748  \put(0,0){\set@fusionadd@sixvi}%
1749 \else\if\@tmpa h%
1750  \edef\@@tmpa{f}%
1751  \put(0,0){\set@fusionadd@sixvi}%
1752 \else\if\@tmpa H%
1753  \edef\@@tmpa{F}%
1754  \put(0,0){\set@fusionadd@sixvi}%
1755 \else\if\@tmpa i%
1756  \edef\@@tmpa{a}%
1757  \put(0,0){\set@fusionadd@sixvi}%
1758  \if@smallringsw\else
1759  \XyMTeXWarning{Unfavorable Fusion for bond `i'}%

1760 \fi

1761 \else\if\@tmpa I%
1762  \edef\@@tmpa{A}%
1763  \put(0,0){\set@fusionadd@sixvi}%
1764  \if@smallringsw\else
1765  \XyMTeXWarning{Unfavorable Fusion for bond `I'}%

1766 \fi

1767 \else\if\@tmpa j%
1768  \edef\@@tmpa{f}%
1769  \put(342,0){\set@fusionadd@sixvi}%
1770  \if@smallringsw\else
1771  \XyMTeXWarning{Unfavorable Fusion for bond `j'}%

1772 \fi

1773 \else\if\@tmpa J%
1774  \edef\@@tmpa{F}%
1775  \put(342,0){\set@fusionadd@sixvi}%
1776  \if@smallringsw\else
1777  \XyMTeXWarning{Unfavorable Fusion for bond `J'}%

1778 \fi

1779 \else\if\@tmpa k%
1780  \edef\@@tmpa{e}%
1781  \put(342,0){\set@fusionadd@sixvi}%
1782  \if@smallringsw\else
1783  \XyMTeXWarning{Forbidden Fusion for bond `k'}%

1784 \fi

1785 \else\if\@tmpa K%
1786  \edef\@@tmpa{E}%
1787  \put(342,0){\set@fusionadd@sixvi}%
1788  \if@smallringsw\else
1789  \XyMTeXWarning{Forbidden Fusion for bond `K'}%

1790 \fi

1791 \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
1792 \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
1793 }% end of the macro \set@fusion@decavi

8.3 Vertical-bottom type

The macro \decaheterovb is used for drawing six-six heterocyclic derivatives of vertical-bottom type (numbering from the bottom to the left-upper part). The word “vertical” means that each benzene ring is a vertical type. The word “bottom” means that the benzene ring with young locant numbers is located at the bottom. The skeleton and endocyclic double bonds are drawn directly, while substituents and exocyclic bonds are placed by useing the inner macro \setsixringv.

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

 ***************************
 * decahetro derivatives   *
 *  (vertical bottom type) *
 ***************************
 The following numbering is adopted in this macro.
          7
          *
     6  *   * 8
       |     |
       |     | 0G (4a)
     5  *   * *
  0F(4a)  *     * 1
          |     |
          |     |
        4  *   *  2
             *
             3
             ^
             |
            the original point

The macro \decaheterovb 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.

   \decaheterovb(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          :  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
           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.
\decaheterovb{1==N}{1==Cl;2==F}
\decaheterovb[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
\decaheterovb[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl}

The definition of \decaheterovb 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 several times.

\decaheterovb
\@deca@heterovb
\@deca@@heterovb
\@decaheterovb

1794 \def\decaheterovb{\@ifnextchar({\@deca@heterovb(@}{\@deca@heterovb(@)}}
1795 \def\@deca@heterovb(#1){\@ifnextchar[{\@deca@@heterovb(#1)[@}%
1796 {\@deca@@heterovb(#1)[@]}}
1797 \def\@deca@@heterovb(#1)[#2]#3#4{\@ifnextchar[%
1798 {\@decaheterovb(#1)[#2]{#3}{#4}[@}%
1799 {\@decaheterovb(#1)[#2]{#3}{#4}[@]}}
1800 \def\@decaheterovb(#1)[#2]#3#4[#5]{%
1801 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1802 % % treatment of atom list %
1803 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1804 \iniflag\iniatom%
1805 \test@vertix@decavb{#3}%
1806 % %%%%%%%%%%%%%%%%%%%%%%%
1807 % % adjustment for (yl) %
1808 % %%%%%%%%%%%%%%%%%%%%%%%
1809 \@reset@ylsw%
1810 {\let\eee=\ddd\let\ddd=\ccc
1811 \let\ccc=\bbb\let\bbb=\aaa
1812 \ylhetpositionb{#4}{1}{1}{6}{0}% %substituents on 1 to 4

1813 }%

1814 \if@ylsw \ifx\@@ylii\empty
1815 \def\@@ylii{0}\def\@@yli{0}\fi
1816 \else
1817 \ylhetpositionb{#4}{0}{4}{7}{0}% %substituents on 5 to 6

1818 \fi

1819 \if@ylsw \ifx\@@ylii\empty
1820 \def\@@ylii{171}\def\@@yli{-303}\fi
1821 \else
1822 {\let\aaa=\ggg \let\bbb=\hhh
1823 \ylhetpositionb{#4}{-6}{0}{3}{0}% %substituents on 7 to 8

1824 }% 1825 \fi

1826 \if@ylsw \ifx\@@ylii\empty
1827 \def\@@ylii{171}\def\@@yli{-303}\fi
1828 \else

1829 {%

1830 \clipdetection%
1831 \@clipfusefalse \if@iclip \@clipfusetrue \fi%
1832 \ylatombondposition{#4}{-8}{9}%   %9 %for 4a position

1833 }% 1834 \fi

1835 \if@ylsw \ifx\@@ylii\empty
1836 \def\@@ylii{171}\def\@@yli{-303}\fi
1837 \else

1838 {%

1839 \clipdetection%
1840 \@clipfusefalse \if@jclip \@clipfusetrue \fi%
1841 \ylatombondposition{#4}{-9}{3}%  %10 for 8a position

1842 }% 1843 \fi

1844 \if@ylsw \ifx\@@ylii\empty
1845 \def\@@ylii{0}\def\@@yli{-406}\fi

1846 \fi

1847 \if@ylsw
1848 \yl@shiftii=\@ylii
1849 \yl@shifti=\@yli
1850 \advance\yl@shiftii\@@ylii
1851 \advance\yl@shifti\@@yli
1852 \advance\yl@shiftii\yl@xdiff
1853 \advance\yl@shifti\yl@ydiff
1854 \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
1855 \reset@yl@xydiff%1999/1/6 by S. Fujita
1856 \else
1857 \begin{picture}(1000,1200)(-550,-240)
1858 \iforigpt \put(-550,-240){\circle*{50}}%
1859  \put(0,0){\circle{50}}%
1860 \typeout{command `decaheterovb' origin: %
1861  (\the\noshift,\the\noshift) ---> (\the\shiftii,\the\shifti)}\fi%

1862 \fi

1863 % %%%%%%%%%%%%%%%%%%
1864 % % outer skeleton %
1865 % %%%%%%%%%%%%%%%%%%
1866 \begingroup
1867 \resetbdsw%
1868 \@bond@@omit{#5}%
1869 {\let\eee=\ddd\let\ddd=\ccc
1870 \let\ccc=\bbb\let\bbb=\aaa
1871 \let\aaa=\jjj \let\fff=\iii
1872 \set@skel@bond{#1}{j}{a}% bond between 8a and 1 \@jjj -> \skbonda etc
1873 \set@skel@bond{#1}{a}{b}% bond between 1 and 2 \@aaa -> \skbondb etc
1874 \set@skel@bond{#1}{b}{c}% bond between 2 and 3 \@bbb -> \skbondc etc
1875 \set@skel@bond{#1}{c}{d}% bond between 3 and 4 \@ccc -> \skbondd etc
1876 \set@skel@bond{#1}{d}{e}% bond between 4 and 4a \@ddd -> \skbonde etc
1877 \set@skel@bond{#1}{k}{f}% bond between 4a and 8a \@kkk -> \skbondf etc

1878 }%

1879 {\let\aaa=\ggg\let\bbb=\hhh\let\ccc=\jjj\let\ddd=\iii
1880 \put(-171,303){\set@skel@bond{#1}{h}{a}}%
1881 % bond between 7 and 8 \@hhh -> \skbonda etc

1882 \put(-171,303){\set@skel@bond{#1}{i}{b}}%
1883 % bond between 8 and 8a \@iii -> \skbondb etc
1884 \put(-171,303){\set@skel@bond{#1}{e}{d}}%
1885 % bond between 4a and 5 \@eee -> \skbondd etc
1886 \put(-171,303){\set@skel@bond{#1}{f}{e}}%
1887 % bond between 5 and 6 \@fff -> \skbonde etc
1888 \put(-171,303){\set@skel@bond{#1}{g}{f}}%
1889 % bond between 6 and 7 \@ggg -> \skbondf etc

1890 }%

1891 \endgroup
1892 % %%%%%%%%%%%%%%%%%%%%%
1893 % % inner double bond %
1894 % %%%%%%%%%%%%%%%%%%%%%
1895 \@tfor\member:=#2\do{%
1896 \if\member r\relax%
1897 {\let\aaa=\ggg\let\bbb=\hhh\let\ccc=\jjj\let\ddd=\iii
1898 \put(-171,303){\bonda}% bond between 7 and 8
1899 \put(-171,303){\bonde}% bond between 5 and 6

1900 }%

1901 {\let\eee=\ddd\let\ddd=\ccc
1902 \let\ccc=\bbb\let\bbb=\aaa
1903 \let\aaa=\jjj \let\fff=\iii
1904 \put(0,0){\bondb}% bond between 1 and 2
1905 \put(0,0){\bondd}% bond between 3 and 4
1906 \put(0,0){\bondf}% bond between 4a and 4b

1907 }%

1908 \else\if\member l\relax%
1909 \else\if\member a\relax%
1910 {\let\ccc=\bbb\let\bbb=\aaa
1911 \put(0,0){\bondb}% bond between 1 and 2

1912 }%

1913 \else\if\member b\relax
1914 {\let\ddd=\ccc\let\ccc=\bbb
1915 \put(0,0){\bondc}% bond between 2 and 3

1916 }%

1917 \else\if\member c\relax
1918 {\let\eee=\ddd\let\ddd=\ccc
1919 \put(0,0){\bondd}% bond between 3 and 4

1920 }%

1921 \else\if\member d\relax%
1922 {\let\fff=\eee\let\eee=\ddd
1923 \put(0,0){\bonde}% bond between 4 and 4a

1924 }%

1925 \else\if\member e\relax%
1926 {\let\ddd=\iii%
1927 \put(-171,303){\bondd}% bond between 5 and 4a

1928 }%

1929 \else\if\member f\relax%
1930 \put(-171,303){\bonde}% bond between 5 and 6

1931 \else\if\member g\relax%
1932 {\let\aaa=\ggg
1933 \put(-171,303){\bondf}% bond between 6 and 7

1934 }%

1935 \else\if\member h\relax%
1936 {\let\aaa=\ggg \let\bbb=\hhh%
1937 \put(-171,303){\bonda}% bond between 8 and 7

1938 }%

1939 \else\if\member i\relax%
1940 {\let\bbb=\hhh \let\ccc=\jjj%
1941 \put(-171,303){\bondb}% bond between 8 and 8a

1942 }%

1943 \else\if\member j\relax%
1944 {\let\bbb=\aaa\let\aaa=\jjj%
1945 \put(0,0){\bonda}% bond between 1 and 8a

1946 }%

1947 \else\if\member k\relax%
1948 {\let\aaa=\jjj\let\fff=\iii%
1949 \put(0,0){\bondf}% bond between 8a and 4a

1950 }%

1951 \else\if\member K\relax%
1952 {\let\ccc=\jjj\let\ddd=\iii%
1953 \put(-171,303){\bondc}% bond between 8a and 4a in the other ring

1954 }%

1955 \else\if\member A%left aromatic circle
1956 \put(-171,506){\circle{240}}               %circle
1957 \else\if\member B%left aromatic circle
1958 \put(0,203){\circle{240}}             %circle
1959 \else \expandafter\twoCH@@R\member//%
1960 \def\aax{8a}\def\aay{4a}\def\aaz{10}%
1961  \if\@@tmpa 1\relax%                  % plus charge etc.
1962  \putratom{60}{253}{\@@tmpb}%      % right type
1963  \else\if\@@tmpa 2\relax%
1964  \putratom{60}{120}{\@@tmpb}%      % right type
1965  \else\if\@@tmpa 3\relax%
1966  \putratom{-38}{68}{\@@tmpb}%       % right type
1967  \else\if\@@tmpa 4\relax%
1968  \putratom{-120}{120}{\@@tmpb}%       % right type
1969  \else\if\@@tmpa 5\relax%
1970  \putlatom{-209}{431}{\@@tmpb}%      % left type
1971  \else\if\@@tmpa 6\relax%
1972  \putlatom{-209}{546}{\@@tmpb}%      % left type
1973  \else\if\@@tmpa 7\relax%
1974  \putratom{-209}{585}{\@@tmpb}%      % right type
1975  \else\if\@@tmpa 8\relax%
1976  \putratom{-111}{546}{\@@tmpb}%      % right type
1977  \else\if\@@tmpa 9\relax%
1978  \putlatom{-60}{253}{\@@tmpb}%      % left type
1979  \else\ifx\@@tmpa\aaz\relax%
1980  \putratom{-38}{282}{\@@tmpb}%      % right type

1981  \else\ifx\@@tmpa\aax\relax%
1982  \putratom{-38}{282}{\@@tmpb}%      % right type
1983  \else\ifx\@@tmpa\aay\relax%
1984  \putratom{-209}{371}{\@@tmpb}%       % right type
1985  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
1986 % ***********************
1987 % * setting fused rings *
1988 % ***********************
1989 \expandafter\twoCH@R\member//%
1990 \set@fusion@decavb
1991 \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
1992 \fi\fi\fi\fi\fi\fi%

1993 }%

1994 % %%%%%%%%%%%%%%%%%%%%%%%%
1995 % % setting hetero atoms %
1996 % %%%%%%%%%%%%%%%%%%%%%%%%
1997 \iniflag\iniatom
1998 \put(-171,303){\set@hetatom@sixv{#3}{0}{4}{7}{0}%
1999 \if@eclip \global\@ecliptrue\fi%
2000 \if@fclip \global\@fcliptrue\fi%
2001 }% %substituents on 5 to 6
2002 \put(-171,303){\set@hetatom@sixv{#3}{-6}{0}{3}{0}%
2003 \@gclipfalse \if@aclip \global\@gcliptrue \fi%
2004 \@hclipfalse \if@bclip \global\@hcliptrue \fi%
2005 }% %substituents on 7 to 8
2006 \put(0,0){\set@vrtx@decafusevb{#3}%
2007 \if@iclip \global\@icliptrue \fi
2008 \if@jclip \global\@jcliptrue \fi
2009 }%9 %for 4a position, %10 for 8a position
2010 %to be done after all
2011 \put(0,0){\iniflag%2000/11/11 by S. Fujita
2012 \set@hetatom@sixv{#3}{1}{1}{6}{0}%
2013 \@aclipfalse \if@bclip \global\@acliptrue \fi%
2014 \@bclipfalse \if@cclip \global\@bcliptrue \fi%
2015 \@cclipfalse \if@clip \global\@ccliptrue \fi%
2016 \@clipfalse \if@eclip \global\@cliptrue \fi%
2017 }% %substituents on 1 to 4
2018 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2019 % % setting substituents and exocyclic bonds %
2020 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

2021 {%

2022 \@eclipfalse \if@clip \@ecliptrue \fi%
2023 \@clipfalse \if@cclip \@cliptrue \fi%
2024 \@cclipfalse \if@bclip \@ccliptrue \fi%
2025 \@bclipfalse \if@aclip \@bcliptrue \fi%
2026 \put(0,0){\setsixringv{#4}{1}{1}{6}{0}}% %substituents on 1 to 4

2027 }% 2028 {%

2029 \put(-171,303){\setsixringv{#4}{0}{4}{7}{0}}% %substituents on 5 to 6

2030 }% 2031 {%

2032 \@aclipfalse \if@gclip \@acliptrue \fi%
2033 \@bclipfalse \if@hclip \@bcliptrue \fi%
2034 \put(-171,303){\setsixringv{#4}{-6}{0}{3}{0}}% %substituents on 7 to 8

2035 }%

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

2038 }%

2039 {\@clipfusefalse \if@jclip \@clipfusetrue \fi%
2040 \put(0,406){\setatombond{#4}{-9}{3}}%  %10 for 8a position

2041 }%

2042 \end{picture}\iniatom\iniflag}% %end of \decaheterovb macro

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

\ylhetpositionb
2043 \def\ylhetpositionb#1#2#3#4#5{%
2044 \@@ylswfalse%%%\@reset@ylsw
2045 \@forsemicol\member:=#1\do{%
2046 \if@@ylsw\else%
2047 \ifx\member\empty\else%
2048 \expandafter\@m@mb@r\member;\relax%
2049 \expandafter\threech@r\@membera{}{}\relax%
2050 \ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi
2051 \if@@ylsw
2052 \ifnum#5<0\relax%
2053 \@tmpaa=-\@tmpa\relax \advance\@tmpaa by#2\relax%
2054 \else\@tmpaa=\@tmpa\relax \advance\@tmpaa by#2\relax\fi
2055 \ifnum\@tmpaa>#3\relax%
2056 \ifnum\@tmpaa<#4\relax%
2057 \ifcase\@tmpaa%0 omit

2058 \or

2059  \ifx\aaa\empty%
2060  \ifx\ggg\empty% aaa and ggg are absent
2061  \gdef\@ylii{0}\gdef\@yli{-406}\global\@ylswtrue%\@ylatrue% subst. on 1
2062  \else% ggg is present
2063  \gdef\@ylii{0}\gdef\@yli{-442}\global\@ylswtrue%\@ylatrue% subst. on 1

2064 \fi

2065  \else%aaa is present
2066  \gdef\@ylii{0}\gdef\@yli{-442}\global\@ylswtrue%\@ylatrue% subst. on 1

2067 \fi 2068 \or

2069  \ifx\bbb\empty
2070  \ifx\hhh\empty% aaa and hhh are absent
2071  \gdef\@ylii{-171}\gdef\@yli{-303}\global\@ylswtrue%\@ylbtrue% subst. on 2
2072  \else%hhh is present
2073  \gdef\@ylii{-213}\gdef\@yli{-327}\global\@ylswtrue%\@ylbtrue% subst. on 2

2074 \fi

2075  \else
2076  \gdef\@ylii{-213}\gdef\@yli{-327}\global\@ylswtrue%\@ylbtrue% subst. on 2

2077 \fi

2078 \or\ifx\ccc\empty
2079  \gdef\@ylii{-171}\gdef\@yli{-103}\global\@ylswtrue%\@ylctrue% subst. on 3
2080  \else
2081  \gdef\@ylii{-213}\gdef\@yli{-79}\global\@ylswtrue%\@ylctrue% subst. on 3

2082 \fi 2083 \or

2084 \ifx\ddd\empty
2085  \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%\@yldtrue% subst. on 4
2086  \else% ddd present
2087  \gdef\@ylii{0}\gdef\@yli{36}\global\@ylswtrue%\@yldtrue% subst. on 4

2088 \fi 2089 \or

2090  \ifx\eee\empty
2091  \gdef\@ylii{173}\gdef\@yli{-103}\global\@ylswtrue%\@yletrue% subst. on 5
2092  \else% eee is present
2093  \gdef\@ylii{223}\gdef\@yli{-79}\global\@ylswtrue%\@yletrue% subst. on 5

2094 \fi 2095 \or

2096  \ifx\fff\empty
2097  \gdef\@ylii{173}\gdef\@yli{-303}\global\@ylswtrue%\@ylftrue% subst. on 6
2098  \else%fff is present
2099  \gdef\@ylii{213}\gdef\@yli{-327}\global\@ylswtrue%\@ylftrue% subst. on 6

2100 \fi

2101 \fi%end of ifcase
2102 \fi\fi\fi\fi\fi}}%

The macro \test@vertix@decavb determines the presence of a hetro atom or a spriro ring at each of the vertices.

\test@vertix@decavb
2103 \def\test@vertix@decavb#1{%
2104 \@forsemicol\member:=#1\do{%
2105 \ifx\member\empty\else%
2106 \expandafter\@m@mb@r\member;\relax%
2107 \expandafter\twoch@r\@membera{}%
2108 \ifcase\@tmpa%
2109 \or% \xdef\aaa{\@memberb}%1
2110 \if\@tmpb s\relax\def\aaa{}\else\def\aaa{@}\fi
2111 \or% \xdef\bbb{\@memberb}%2
2112 \if\@tmpb s\relax\def\bbb{}\else\def\bbb{@}\fi
2113 \or% \xdef\ccc{\@memberb}%3
2114 \if\@tmpb s\relax\def\ccc{}\else\def\ccc{@}\fi
2115 \or%
2116 \if\@tmpb a%
2117  \def\iii{@}%4a
2118 \else\if\@tmpb s%
2119  \def\ddd{}%4

2120 \else\if\@tmpb h%
2121  \def\ddd{@}%4
2122 \else\ifx\@tmpb\empty%
2123  \def\ddd{@}%4
2124 \fi\fi\fi\fi%
2125 \or% \xdef\eee{\@memberb}%5
2126 \if\@tmpb s\relax\def\eee{}\else\def\eee{@}\fi
2127 \or% \xdef\fff{\@memberb}%6
2128 \if\@tmpb s\relax\def\fff{}\else\def\fff{@}\fi
2129 \or% \xdef\ggg{\@memberb}%7
2130 \if\@tmpb s\relax\def\ggg{}\else\def\ggg{@}\fi
2131 \or%
2132 \if\@tmpb a%
2133  \def\jjj{@}%8a
2134 \else\if\@tmpb s%
2135  \def\hhh{}%8
2136 \else\if\@tmpb h%
2137  \def\hhh{@}%4
2138 \else\ifx\@tmpb\empty%
2139  \def\hhh{@}%4
2140 \fi\fi\fi\fi%
2141 \or% \xdef\iii{\@memberb}%9 (= 4a)
2142 \if\@tmpb s\relax\def\iii{}\else\def\iii{@}\fi
2143 \or% \xdef\jjj{\@memberb}%10 (= 8a)
2144 \if\@tmpb s\relax\def\jjj{}\else\def\jjj{@}\fi
2145 \fi\fi}%
2146 }% end of the macro \test@vertix@decavb

The macro \set@vrtx@decafusevb typesets a hetero atom at each fused position.

\set@vrtx@decafusevb
2147 \def\set@vrtx@decafusevb#1{%
2148 \@forsemicol\member:=#1\do{%
2149 \ifx\member\empty\else%
2150 \expandafter\@m@mb@r\member;\relax%
2151 \expandafter\twoch@r\@membera{}%
2152 \ifcase\@tmpa\or\or\or
2153 \or%%%%4
2154 \if\@tmpb a%
2155  \global\@icliptrue%
2156  \putlatom{-135}{280}{\@memberb}% % left type
2157 \else\relax

2158 \fi

2159 \or\or\or
2160 \or%8
2161 \if\@tmpb a%
2162  \global\@jcliptrue%
2163  \putratom{-31}{356}{\@memberb}%  % right type
2164 \else\relax

2165 \fi

2166 \or%9 (= 4a)
2167  \global\@icliptrue%
2168  \putlatom{-135}{280}{\@memberb}% % left type
2169 \or%10 (= 8a)
2170  \global\@jcliptrue%
2171  \putratom{-31}{356}{\@memberb}%  % right type
2172 \fi\fi}%
2173 }% end of the macro \set@vrtx@decafusevb

8.4 Vertical-top type

The macro \decaheterovt is used for drawing six-to-six fused derivatives of vertical-bottom type (numbering from the top to the left-down part). The word “vertical” means that each benzene ring is a vertical type. The word “top” means that the benzene ring with young locant numbers is located at the top. The skeleton and endocyclic double bonds are drawn directly, while substituents and exocyclic bonds are placed by useing the inner macro \setsixringv.

 ****************************
 * decaheterovt derivatives *
 *  (vertical-top type)     *
 ****************************
 The following numbering is adopted in this macro.
                     2
                     *
                1  *   * 3
                  |     |
                  |     |
         0G (8a)   *   * 4
             8   *   * 0F(4a)
                |     |
                |     |
              7  *   *  5
                   *
                   6
                   ^
                   |
                   the original point

The macro \decaheterovt 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.

   \decaheterovt(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          :  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
           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.
\decaheterovt{1==N}{1==Cl;2==F}
\decaheterovt[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
\decaheterovt[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl}

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

1. treatment of atom list,

2. placing outer skeletons, 4. setting hetero atoms, and

5. placing substituents by using \setsixringv several times.

\decaheterovt
\@deca@heterovt
\@deca@@heterovt
\@decaheterovt

2174 \def\decaheterovt{\@ifnextchar({\@deca@heterovt(@}{\@deca@heterovt(@)}}
2175 \def\@deca@heterovt(#1){\@ifnextchar[{\@deca@@heterovt(#1)[@}%
2176 {\@deca@@heterovt(#1)[@]}}
2177 \def\@deca@@heterovt(#1)[#2]#3#4{\@ifnextchar[%
2178 {\@decaheterovt(#1)[#2]{#3}{#4}[@}%
2179 {\@decaheterovt(#1)[#2]{#3}{#4}[@]}}
2180 \def\@decaheterovt(#1)[#2]#3#4[#5]{%
2181 % %%%%%%%%%%%%%%%%%%%%%%%%%%
2182 % % treatment of atom list %
2183 % %%%%%%%%%%%%%%%%%%%%%%%%%%
2184 \iniflag\iniatom%
2185 \test@vertix@decavb{#3}%
2186 % %%%%%%%%%%%%%%%%%%%%%%%
2187 % % adjustment for (yl) %
2188 % %%%%%%%%%%%%%%%%%%%%%%%
2189 \@reset@ylsw%
2190 {\let\fff=\aaa
2191 \ylhetpositiont{#4}{5}{5}{7}{0}% %substituent on 1

2192 }%

2193 \if@ylsw \ifx\@@ylii\empty
2194 \def\@@ylii{-171}\def\@@yli{-303}\fi
2195 \else
2196 {\let\aaa=\bbb\let\bbb=\ccc\let\ccc=\ddd
2197 \ylhetpositiont{#4}{-1}{0}{4}{0}% %substituents on 2 to 4

2198 }% 2199 \fi

2200 \if@ylsw \ifx\@@ylii\empty
2201 \def\@@ylii{-171}\def\@@yli{-303}\fi
2202 \else
2203 {\let\ccc=\eee\let\ddd=\fff
2204 \let\eee=\ggg\let\fff=\hhh
2205 \ylhetpositiont{#4}{-2}{2}{7}{0}% %substituents on 5 to 8

2206 }% 2207 \fi

2208 \if@ylsw \ifx\@@ylii\empty
2209 \def\@@ylii{0}\def\@@yli{0}\fi
2210 \else

2211 {%

2212 \clipdetection%
2213 \@clipfusefalse \if@iclip \@clipfusetrue \fi%
2214 \ylatombondposition{#4}{-8}{5}%   %9 %for 4a position

2215 }% 2216 \fi

2217 \if@ylsw \ifx\@@ylii\empty
2218 \def\@@ylii{-171}\def\@@yli{-303}\fi
2219 \else

2220 {%

2221 \clipdetection%
2222 \@clipfusefalse \if@jclip \@clipfusetrue \fi%
2223 \ylatombondposition{#4}{-9}{11}%  %10 for 8a position

2224 }% 2225 \fi

2226 \if@ylsw \ifx\@@ylii\empty
2227 \def\@@ylii{0}\def\@@yli{-406}\fi

2228 \fi

2229 \if@ylsw
2230 \yl@shiftii=\@ylii
2231 \yl@shifti=\@yli
2232 \advance\yl@shiftii\@@ylii
2233 \advance\yl@shifti\@@yli
2234 \advance\yl@shiftii\yl@xdiff
2235 \advance\yl@shifti\yl@ydiff
2236 \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
2237 \reset@yl@xydiff%1999/1/6 by S. Fujita
2238 \else
2239 \begin{picture}(1200,880)(-\shiftii,-\shifti)%
2240 \iforigpt \put(-\shiftii,-\shifti){\circle*{50}}%
2241  \put(-\noshift,-\noshift){\circle{50}}%
2242 \typeout{command `decaheterovt' origin: %
2243  (\the\noshift,\the\noshift) ---> (\the\shiftii,\the\shifti)}\fi%

2244 \fi

2245 % %%%%%%%%%%%%%%%%%%
2246 % % outer skeleton %
2247 % %%%%%%%%%%%%%%%%%%
2248 \begingroup
2249 \resetbdsw%
2250 \@bond@@omit{#5}%

2251 {%

2252 \let\fff=\aaa \let\aaa=\bbb \let\bbb=\ccc
2253 \let\ccc=\ddd \let\ddd=\iii \let\eee=\jjj
2254 \put(171,303){\set@skel@bond{#1}{b}{a}}%
2255 % bond between 2 and 3 \@bbb -> \skbonda etc
2256 \put(171,303){\set@skel@bond{#1}{c}{b}}%
2257 % bond between 3 and 4 \@ccc -> \skbondb etc
2258 \put(171,303){\set@skel@bond{#1}{d}{c}}%
2259 % bond between 4 and 4a \@ddd -> \skbondc etc
2260 \put(171,303){\set@skel@bond{#1}{k}{d}}%
2261 % bond between 4a and 8a \@kkk -> \skbondd etc
2262 \put(171,303){\set@skel@bond{#1}{j}{e}}%
2263 % bond between 8a and 1 \@jjj -> \skbonde etc
2264 \put(171,303){\set@skel@bond{#1}{a}{f}}%
2265 % bond between 1 and 2 \@aaa -> \skbondf etc

2266 }% 2267 {%

2268 \let\aaa=\jjj\let\bbb=\iii
2269 \let\ccc=\eee\let\ddd=\fff
2270 \let\eee=\ggg\let\fff=\hhh
2271 \set@skel@bond{#1}{e}{b}% bond between 4a and 5 \@eee -> \skbondb etc
2272 \set@skel@bond{#1}{f}{c}% bond between 5 and 6 \@fff -> \skbondc etc
2273 \set@skel@bond{#1}{g}{d}% bond between 6 and 7 \@ggg -> \skbondd etc
2274 \set@skel@bond{#1}{h}{e}% bond between 7 and 8 \@hhh -> \skbonde etc
2275 \set@skel@bond{#1}{i}{f}% bond between 8 and 8a \@iii -> \skbondf etc

2276 }%

2277 \endgroup
2278 % %%%%%%%%%%%%%%%%%%%%%
2279 % % inner double bond %
2280 % %%%%%%%%%%%%%%%%%%%%%
2281 \@tfor\member:=#2\do{%
2282 \if\member r\relax%

2283 {%

2284 \let\ccc=\eee\let\ddd=\fff\let\eee=\ggg\let\fff=\ggg
2285 \put(0,0){\bondc}% bond between 7 and 8
2286 \put(0,0){\bonde}% bond between 5 and 6

2287 }% 2288 {%

2289 \let\fff=\aaa\let\aaa=\bbb
2290 \let\bbb=\ccc\let\ccc=\ddd
2291 \let\ddd=\iii\let\eee=\jjj
2292 \put(171,303){\bondf}% bond between 1 and 2
2293 \put(171,303){\bondb}% bond between 3 and 4
2294 \put(171,303){\bondd}% bond between 4a and 8a

2295 }%

2296 \else\if\member l\relax%
2297 \else\if\member a\relax%
2298 {\let\fff=\aaa\let\aaa=\bbb
2299 \put(171,303){\bondf}% bond between 1 and 2

2300 }%

2301 \else\if\member b\relax
2302 {\let\aaa=\bbb\let\bbb=\ccc
2303 \put(171,303){\bonda}% bond between 2 and 3

2304 }%

2305 \else\if\member c\relax
2306 {\let\bbb=\ccc\let\ccc=\ddd
2307 \put(171,303){\bondb}% bond between 3 and 4

2308 }%

2309 \else\if\member d\relax%
2310 {\let\ccc=\ddd\let\ddd=\eee
2311 \put(171,303){\bondc}% bond between 4 and 4a

2312 }%

2313 \else\if\member e\relax%
2314 {\let\ccc=\eee\let\bbb=\iii%

2315 \put(0,0){\bondb}% bond between 5 and 4a

2316 }%

2317 \else\if\member f\relax%
2318 {\let\ccc=\eee\let\ddd=\fff
2319 \put(0,0){\bondc}% bond between 5 and 6

2320 }%

2321 \else\if\member g\relax%
2322 {\let\ddd=\fff\let\eee=\ggg
2323 \put(0,0){\bondd}% bond between 6 and 7

2324 }%

2325 \else\if\member h\relax%
2326 {\let\eee=\ggg \let\fff=\hhh%
2327 \put(0,0){\bonde}% bond between 8 and 7

2328 }%

2329 \else\if\member i\relax%
2330 {\let\aaa=\jjj \let\fff=\hhh%
2331 \put(0,0){\bondf}% bond between 8 and 8a

2332 }%

2333 \else\if\member j\relax%
2334 {\let\fff=\aaa\let\eee=\jjj%
2335 \put(171,303){\bonde}% bond between 1 and 8a

2336 }%

2337 \else\if\member k\relax%
2338 {\let\aaa=\jjj\let\bbb=\iii%
2339 \put(0,0){\bonda}% bond between 8a and 4a

2340 }%

2341 \else\if\member K\relax%
2342 {\let\eee=\jjj\let\ddd=\iii%
2343 \put(171,303){\bondd}% bond between 8a and 4a in the other ring

2344 }%

2345 \else\if\member A%left aromatic circle
2346 \put(171,506){\circle{240}}               %circle
2347 \else\if\member B%left aromatic circle
2348 \put(0,203){\circle{240}}             %circle
2349 \else
2350 \expandafter\twoCH@@R\member//%
2351 \def\aax{8a}\def\aay{4a}\def\aaz{10}%
2352  \if\@@tmpa 1\relax%                  % plus charge etc.
2353  \putlatom{111}{546}{\@@tmpb}%      % left type
2354  \else\if\@@tmpa 2\relax%
2355  \putlatom{209}{585}{\@@tmpb}%      % left type
2356  \else\if\@@tmpa 3\relax%
2357  \putratom{209}{546}{\@@tmpb}%      % right type
2358  \else\if\@@tmpa 4\relax%
2359  \putratom{209}{431}{\@@tmpb}%      % right type
2360  \else\if\@@tmpa 5\relax%
2361  \putratom{60}{120}{\@@tmpb}%      % right type
2362  \else\if\@@tmpa 6\relax%
2363  \putratom{-38}{68}{\@@tmpb}%       % right type
2364  \else\if\@@tmpa 7\relax%

2365  \putratom{-120}{120}{\@@tmpb}%       % right type
2366  \else\if\@@tmpa 8\relax%
2367  \putlatom{-60}{253}{\@@tmpb}%      % left type
2368  \else\if\@@tmpa 9\relax%
2369  \putratom{60}{253}{\@@tmpb}%      % right type
2370  \else\ifx\@@tmpa\aaz\relax%
2371  \putratom{-38}{282}{\@@tmpb}%      % right type
2372  \else\ifx\@@tmpa\aax\relax%
2373  \putratom{-38}{282}{\@@tmpb}%      % right type
2374  \else\ifx\@@tmpa\aay\relax%
2375  \putratom{60}{253}{\@@tmpb}%      % right type
2376  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
2377 % ***********************
2378 % * setting fused rings *
2379 % ***********************
2380 \expandafter\twoCH@R\member//%
2381 \set@fusion@decavt
2382 \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
2383 \fi\fi\fi\fi\fi\fi%

2384 }%

2385 % %%%%%%%%%%%%%%%%%%%%%%%%
2386 % % setting hetero atoms %
2387 % %%%%%%%%%%%%%%%%%%%%%%%%
2388 \iniflag
2389 \put(0,0){\set@hetatom@sixv{#3}{-2}{2}{7}{0}%
2390 \@hclipfalse \if@fclip \global\@hcliptrue \fi%
2391 \@gclipfalse \if@eclip \global\@gcliptrue \fi%
2392 \@fclipfalse \if@clip \global\@fcliptrue \fi%
2393 \@eclipfalse \if@cclip \global\@ecliptrue \fi%
2394 }% %substituents on 5 to 8
2395 \put(0,0){\set@vrtx@decafusevt{#3}%
2396 \if@iclip \global\@icliptrue \fi
2397 \if@jclip \global\@jcliptrue \fi
2398 }%9 %for 4a position, %10 for 8a position
2399 %to be done after all (exept aclip)
2400 \put(171,303){\set@hetatom@sixv{#3}{-1}{0}{4}{0}%
2401 \@clipfalse \if@cclip \global\@cliptrue \fi%
2402 \@cclipfalse \if@bclip \global\@ccliptrue \fi%
2403 \@bclipfalse \if@aclip \global\@bcliptrue \fi%
2404 }% %substituents on 2 to 4

2405 {%

2406 \@fclipfalse%locally cancelled 1999/2/15 by Shinsaku Fujita
2407 \put(171,303){\set@hetatom@sixv{#3}{5}{5}{7}{0}%
2408 \@aclipfalse \if@fclip \global\@acliptrue \fi%
2409 }% %substituent on 1

2410 }%

2411 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2412 % % setting substituents and exocyclic bonds %
2413 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

2414 {%

2415 \@fclipfalse \if@aclip \@fcliptrue \fi%
2416 \put(171,303){\setsixringv{#4}{5}{5}{7}{0}}% %substituent on 1

2417 }% 2418 {%

2419 \@aclipfalse \if@bclip \@acliptrue \fi%
2420 \@bclipfalse \if@cclip \@bcliptrue \fi%
2421 \@cclipfalse \if@clip \@ccliptrue \fi%
2422 \put(171,303){\setsixringv{#4}{-1}{0}{4}{0}}% %substituents on 2 to 4

2423 }% 2424 {%

2425 \@cclipfalse \if@eclip \@ccliptrue \fi%
2426 \@clipfalse \if@fclip \@cliptrue \fi%
2427 \@eclipfalse \if@gclip \@ecliptrue \fi%
2428 \@fclipfalse \if@hclip \@fcliptrue \fi%
2429 \put(0,0){\setsixringv{#4}{-2}{2}{7}{0}}% %substituents on 5 to 8

2430 }%

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

2433 }%

2434 {\@clipfusefalse \if@jclip \@clipfusetrue \fi%
2435 \put(0,406){\setatombond{#4}{-9}{11}}%  %10 for 8a position

2436 }%

2437 \end{picture}\iniatom\iniflag}%  %end of \decaheterovt macro

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

\ylhetpositiont
2438 \def\ylhetpositiont#1#2#3#4#5{%
2439 \@@ylswfalse%%%\@reset@ylsw
2440 \@forsemicol\member:=#1\do{%
2441 \if@@ylsw\else%
2442 \ifx\member\empty\else%
2443 \expandafter\@m@mb@r\member;\relax%
2444 \expandafter\threech@r\@membera{}{}\relax%
2445 \ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi
2446 \if@@ylsw
2447 \ifnum#5<0\relax%
2448 \@tmpaa=-\@tmpa\relax \advance\@tmpaa by#2\relax%
2449 \else\@tmpaa=\@tmpa\relax \advance\@tmpaa by#2\relax\fi
2450 \ifnum\@tmpaa>#3\relax%
2451 \ifnum\@tmpaa<#4\relax%
2452 \ifcase\@tmpaa%0 omit

2453 \or

2454  \ifx\aaa\empty%
2455  \ifx\bbb\empty% aaa and bbb are absent
2456  \gdef\@ylii{0}\gdef\@yli{-406}\global\@ylswtrue%\@ylatrue% subst. on 1
2457  \else% bbb is present
2458  \gdef\@ylii{0}\gdef\@yli{-442}\global\@ylswtrue%\@ylatrue% subst. on 1

2459 \fi

2460  \else%aaa is present
2461  \gdef\@ylii{0}\gdef\@yli{-442}\global\@ylswtrue%\@ylatrue% subst. on 1

2462 \fi 2463 \or

2464  \ifx\bbb\empty
2465  \ifx\ccc\empty% aaa and ccc are absent
2466  \gdef\@ylii{-171}\gdef\@yli{-303}\global\@ylswtrue%\@ylbtrue% subst. on 2
2467  \else%ccc is present
2468  \gdef\@ylii{-213}\gdef\@yli{-327}\global\@ylswtrue%\@ylbtrue% subst. on 2

2469 \fi

2470  \else
2471  \gdef\@ylii{-213}\gdef\@yli{-327}\global\@ylswtrue%\@ylbtrue% subst. on 2

2472 \fi 2473 \or

2474  \ifx\ccc\empty
2475  \ifx\ddd\empty
2476  \ifx\eee\empty% ccc, ddd, eee are absent
2477  \gdef\@ylii{-171}\gdef\@yli{-103}\global\@ylswtrue%\@ylctrue%subst. on 3
2478  \else%eee is present
2479  \gdef\@ylii{-213}\gdef\@yli{-79}\global\@ylswtrue%\@ylctrue% subst. on 3

2480 \fi

2481  \else%ddd is present
2482  \gdef\@ylii{-213}\gdef\@yli{-79}\global\@ylswtrue%\@ylctrue% subst. on 3

2483 \fi

2484  \else%ccc is present
2485  \gdef\@ylii{-213}\gdef\@yli{-79}\global\@ylswtrue%\@ylctrue% subst. on 3

2486 \fi 2487 \or

2488 \ifx\ddd\empty
2489  \ifx\fff\empty%ddd and fff are absent
2490  \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%\@yldtrue% subst. on 4
2491  \else%fff present
2492  \gdef\@ylii{0}\gdef\@yli{36}\global\@ylswtrue%\@yldtrue% subst. on 4

2493 \fi

2494  \else% ddd present
2495  \gdef\@ylii{0}\gdef\@yli{36}\global\@ylswtrue%\@yldtrue% subst. on 4

2496 \fi 2497 \or

2498  \ifx\eee\empty
2499  \ifx\ggg\empty%eee and ggg are absent
2500  \gdef\@ylii{173}\gdef\@yli{-103}\global\@ylswtrue%\@yletrue% subst. on 5
2501  \else% ggg is present
2502  \gdef\@ylii{223}\gdef\@yli{-79}\global\@ylswtrue%\@yletrue% subst. on 5

2503 \fi

2504  \else% eee is present
2505  \gdef\@ylii{223}\gdef\@yli{-79}\global\@ylswtrue%\@yletrue% subst. on 5

2506 \fi 2507 \or

2508  \ifx\fff\empty

2509  \ifx\hhh\empty%fff and hhh are absent
2510  \gdef\@ylii{173}\gdef\@yli{-303}\global\@ylswtrue%\@ylftrue% subst. on 6
2511  \else%hhh is present
2512  \gdef\@ylii{213}\gdef\@yli{-327}\global\@ylswtrue%\@ylftrue% subst. on 6

2513 \fi

2514  \else%fff is present
2515  \gdef\@ylii{213}\gdef\@yli{-327}\global\@ylswtrue%\@ylftrue% subst. on 6

2516 \fi

2517 \fi%end of ifcase
2518 \fi\fi\fi\fi\fi}}%

The macro \set@vrtx@decafusevt is used to typeset a hetero atom at each fused vertex (4a or 8a) of a decaheterovt ring.

\set@vrtx@decafusevt
2519 \def\set@vrtx@decafusevt#1{%
2520 \@forsemicol\member:=#1\do{%
2521 \ifx\member\empty\else%
2522 \expandafter\@m@mb@r\member;\relax%
2523 \expandafter\twoch@r\@membera{}%
2524 \ifcase\@tmpa\or\or\or
2525 \or%%%%4
2526 \if\@tmpb a%
2527  \global\@icliptrue%
2528  \putratom{135}{280}{\@memberb}% % right type
2529 \else\relax

2530 \fi

2531 \or\or\or
2532 \or%8
2533 \if\@tmpb a%
2534  \global\@jcliptrue%
2535  \putlatom{31}{356}{\@memberb}%  % left type
2536 \else\relax

2537 \fi

2538 \or%9 (= 4a)
2539  \global\@icliptrue%
2540  \putratom{135}{280}{\@memberb}% % right type
2541 \or%10 (= 8a)
2542  \global\@jcliptrue%
2543  \putlatom{31}{356}{\@memberb}%  % left type
2544 \fi\fi}%
2545 }% end of the macro \set@vrtx@decafusevt

8.5 Short-cut commands for fused heterocycles

  The macros \decaheterov, \decaheterovb, and \decaheterovt 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 *
*  (vertical type)                                 *
****************************************************
\quinolinev[BONDLIST]{SUBSLIST}
\quinolinevi[BONDLIST]{SUBSLIST}
\quinolinevb[BONDLIST]{SUBSLIST}
\quinolinevt[BONDLIST]{SUBSLIST}
\isoquinolinev[BONDLIST]{SUBSLIST}
\isoquinolinevi[BONDLIST]{SUBSLIST}
\isoquinolinevb[BONDLIST]{SUBSLIST}
\isoquinolinevt[BONDLIST]{SUBSLIST}
\quinoxalinev[BONDLIST]{SUBSLIST}
\quinoxalinevi[BONDLIST]{SUBSLIST}
\quinoxalinevb[BONDLIST]{SUBSLIST}
\quinoxalinevt[BONDLIST]{SUBSLIST}
\quinazolinev[BONDLIST]{SUBSLIST}
\quinazolinevi[BONDLIST]{SUBSLIST}
\quinazolinevb[BONDLIST]{SUBSLIST}
\quinazolinevt[BONDLIST]{SUBSLIST}
\cinnolinev[BONDLIST]{SUBSLIST}
\cinnolinevi[BONDLIST]{SUBSLIST}
\cinnolinevb[BONDLIST]{SUBSLIST}
\cinnolinevt[BONDLIST]{SUBSLIST}
\pteridinev[BONDLIST]{SUBSLIST}
\pteridinevi[BONDLIST]{SUBSLIST}
\pteridinevb[BONDLIST]{SUBSLIST}
\pteridinevt[BONDLIST]{SUBSLIST}

The BONDLIST argument contains one character selected from a to k (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
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 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.

          \quinolinev{3==Cl;2==F}
          \quinolinev{3==Cl;4==F;2==CH$_{3}$}

\quinolinev
\quinolinevi
\quinolinevb
\quinolinevt

2546 \def\quinolinev{%
2547 \@ifnextchar[{\@quinolinev[@}{\@quinolinev[acfhk]}}
2548 \def\@quinolinev[#1]#2{%
2549 \iforigpt \typeout{command `quinolinev' %
2550 is based on `decaheterov'.}\fi%
2551 \decaheterov[#1]{1==N}{#2}}
2552 \def\quinolinevi{%
2553 \@ifnextchar[{\@quinolinevi[@}{\@quinolinevi[acfhk]}}
2554 \def\@quinolinevi[#1]#2{%
2555 \iforigpt \typeout{command `quinolinevi' %
2556 is based on `decaheterovi'.}\fi%
2557 \decaheterovi[#1]{1==N}{#2}}
2558 \def\quinolinevb{%
2559 \@ifnextchar[{\@quinolinevb[@}{\@quinolinevb[acfhk]}}
2560 \def\@quinolinevb[#1]#2{%
2561 \iforigpt \typeout{command `quinolinevb' %
2562 is based on `decaheterovb'.}\fi%
2563 \decaheterovb[#1]{1==N}{#2}}
2564 \def\quinolinevt{%
2565 \@ifnextchar[{\@quinolinevt[@}{\@quinolinevt[acfhk]}}
2566 \def\@quinolinevt[#1]#2{%
2567 \iforigpt \typeout{command `quinolinevt' %
2568 is based on `decaheterovt'.}\fi%
2569 \decaheterovt[#1]{1==N}{#2}}
\isoquinolinev
\isoquinolinevi
\isoquinolinevb
\isoquinolinevt

2570 \def\isoquinolinev{%
2571 \@ifnextchar[{\@isoquinolinev[@}{\@isoquinolinev[acfhk]}}
2572 \def\@isoquinolinev[#1]#2{%
2573 \iforigpt \typeout{command `isoquinolinev' %
2574 is based on `decaheterov'.}\fi%
2575 \decaheterov[#1]{2==N}{#2}}
2576 \def\isoquinolinevi{%
2577 \@ifnextchar[{\@isoquinolinevi[@}{\@isoquinolinevi[acfhk]}}
2578 \def\@isoquinolinevi[#1]#2{%
2579 \iforigpt \typeout{command `isoquinolinevi' %
2580 is based on `decaheterovi'.}\fi%
2581 \decaheterovi[#1]{2==N}{#2}}%
2582 \def\isoquinolinevb{%
2583 \@ifnextchar[{\@isoquinolinevb[@}{\@isoquinolinevb[acfhk]}}
2584 \def\@isoquinolinevb[#1]#2{%
2585 \iforigpt \typeout{command `isoquinolinevb' %
2586 is based on `decaheterovi'.}\fi%
2587 \decaheterovb[#1]{2==N}{#2}}%
2588 \def\isoquinolinevt{%

2589 \@ifnextchar[{\@isoquinolinevt[@}{\@isoquinolinevt[acfhk]}}
2590 \def\@isoquinolinevt[#1]#2{%
2591 \iforigpt \typeout{command `isoquinolinevt' %
2592 is based on `decaheterovt'.}\fi%
2593 \decaheterovt[#1]{2==N}{#2}}%
\quinoxalinev
\quinoxalinevi
\quinoxalinevb
\quinoxalinevt

2594 \def\quinoxalinev{%
2595 \@ifnextchar[{\@quinoxalinev[@}{\@quinoxalinev[acfhk]}}
2596 \def\@quinoxalinev[#1]#2{%
2597 \iforigpt \typeout{command `quinoxalinev' %
2598 is based on `decaheterov'.}\fi%
2599 \decaheterov[#1]{1==N;4==N}{#2}}
2600 \def\quinoxalinevi{%
2601 \@ifnextchar[{\@quinoxalinevi[@}{\@quinoxalinevi[acfhk]}}
2602 \def\@quinoxalinev[#1]#2{%
2603 \iforigpt \typeout{command `quinoxalinevi' %
2604 is based on `decaheterovi'.}\fi%
2605 \decaheterovi[#1]{1==N;4==N}{#2}}
2606 \def\quinoxalinevb{%
2607 \@ifnextchar[{\@quinoxalinevb[@}{\@quinoxalinevb[acfhk]}}
2608 \def\@quinoxalinevb[#1]#2{%
2609 \iforigpt \typeout{command `quinoxalinevb' %
2610 is based on `decaheterovb'.}\fi%
2611 \decaheterovb[#1]{1==N;4==N}{#2}}
2612 \def\quinoxalinevt{%
2613 \@ifnextchar[{\@quinoxalinevt[@}{\@quinoxalinevt[acfhk]}}
2614 \def\@quinoxalinevt[#1]#2{%
2615 \iforigpt \typeout{command `quinoxalinevt' %
2616 is based on `decaheterovt'.}\fi%
2617 \decaheterovt[#1]{1==N;4==N}{#2}}
\quinazolinev
\quinazolinevi
\quinazolinevb
\quinazolinevt

2618 \def\quinazolinev{%
2619 \@ifnextchar[{\@quinazolinev[@}{\@quinazolinev[acfhk]}}
2620 \def\@quinazolinev[#1]#2{%
2621 \iforigpt \typeout{command `quinazolinev' %
2622 is based on `decaheterov'.}\fi%
2623 \decaheterov[#1]{1==N;3==N}{#2}}
2624 \def\quinazolinevi{%
2625 \@ifnextchar[{\@quinazolinevi[@}{\@quinazolinevi[acfhk]}}
2626 \def\@quinazolinevi[#1]#2{%
2627 \iforigpt \typeout{command `quinazolinevi' %
2628 is based on `decaheterovi'.}\fi%
2629 \decaheterovi[#1]{1==N;3==N}{#2}}
2630 \def\quinazolinevb{%
2631 \@ifnextchar[{\@quinazolinevb[@}{\@quinazolinevb[acfhk]}}
2632 \def\@quinazolinevb[#1]#2{%
2633 \iforigpt \typeout{command `quinazolinevb' %
2634 is based on `decaheterovb'.}\fi%

2635 \decaheterovb[#1]{1==N;3==N}{#2}}
2636 \def\quinazolinevt{%
2637 \@ifnextchar[{\@quinazolinevt[@}{\@quinazolinevt[acfhk]}}
2638 \def\@quinazolinevt[#1]#2{%
2639 \iforigpt \typeout{command `quinazolinevt' %
2640 is based on `decaheterovt'.}\fi%
2641 \decaheterovt[#1]{1==N;3==N}{#2}}
\cinnolinev
\cinnolinevi
\cinnolinevb
\cinnolinevt

2642 \def\cinnolinev{%
2643 \@ifnextchar[{\@cinnolinev[@}{\@cinnolinev[acfhk]}}
2644 \def\@cinnolinev[#1]#2{%
2645 \iforigpt \typeout{command `cinnolinev' %
2646 is based on `decaheterov'.}\fi%
2647 \decaheterov[#1]{1==N;2==N}{#2}}
2648 \def\cinnolinevi{%
2649 \@ifnextchar[{\@cinnolinevi[@}{\@cinnolinevi[acfhk]}}
2650 \def\@cinnolinevi[#1]#2{%
2651 \iforigpt \typeout{command `cinnolinevi' %
2652 is based on `decaheterovi'.}\fi%
2653 \decaheterovi[#1]{1==N;2==N}{#2}}
2654 \def\cinnolinevb{%
2655 \@ifnextchar[{\@cinnolinevb[@}{\@cinnolinevb[acfhk]}}
2656 \def\@cinnolinevb[#1]#2{%
2657 \iforigpt \typeout{command `cinnolinevb' %
2658 is based on `decaheterovb'.}\fi%
2659 \decaheterovb[#1]{1==N;2==N}{#2}}
2660 \def\cinnolinevt{%
2661 \@ifnextchar[{\@cinnolinevt[@}{\@cinnolinevt[acfhk]}}
2662 \def\@cinnolinevt[#1]#2{%
2663 \iforigpt \typeout{command `cinnolinevt' %
2664 is based on `decaheterovt'.}\fi%
2665 \decaheterovt[#1]{1==N;2==N}{#2}}
\pteridinev
\pteridinevi
\pteridinevb
\pteridinevt

2666 \def\pteridinev{\@ifnextchar[{\@pteridinev[@}{\@pteridinev[acfhk]}}
2667 \def\@pteridinev[#1]#2{%
2668 \iforigpt \typeout{command `pteridinev' %
2669 is based on `decaheterov'.}\fi%
2670 \decaheterov[#1]{1==N;3==N;5==N;8==N}{#2}}
2671 \def\pteridinevi{\@ifnextchar[{\@pteridinevi[@}{\@pteridinevi[acfhk]}}
2672 \def\@pteridinevi[#1]#2{%
2673 \iforigpt \typeout{command `pteridinevi' %
2674 is based on `decaheterovi'.}\fi%
2675 \decaheterovi[#1]{1==N;3==N;5==N;8==N}{#2}}
2676 \def\pteridinevb{\@ifnextchar[{\@pteridinevb[@}{\@pteridinevb[acfhk]}}
2677 \def\@pteridinevb[#1]#2{%
2678 \iforigpt \typeout{command `pteridinevb' %
2679 is based on `decaheterovb'.}\fi%
2680 \decaheterovb[#1]{1==N;3==N;5==N;8==N}{#2}}

2681 \def\pteridinevt{\@ifnextchar[{\@pteridinevt[@}{\@pteridinevt[acfhk]}}
2682 \def\@pteridinevt[#1]#2{%
2683 \iforigpt \typeout{command `pteridinevt' %
2684 is based on `decaheterovt'.}\fi%
2685 \decaheterovt[#1]{1==N;3==N;5==N;8==N}{#2}}

9 Six-to-five fused heterocycles

9.1 Vertical type

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

 **************************
 * nonahetero derivatives *
 *  (vertical type)       *
 **************************
 The following numbering is adopted in this macro.
          4
          *  3a(8)
     5  *   * _____3
       |     |     |
       |     |     |
     6  *   * *   *  2
          *  7a *
          7 (9) 1
          ^
          |
          the original point

The macro \nonaheterov 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.

   \nonaheterov(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 ring)
B    :  aromatic circle (five-membered ring)
{n+}       :  plus at the n-nitrogen atom (n = 1 to 9)

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.
\nonaheterov{1==N}{1==Cl;2==F}
\nonaheterov[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}

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

\nonaheterov
\@nona@heterov
\@nona@@heterov
\@nonaheterov

2686 \def\nonaheterov{\@ifnextchar({\@nona@heterov(@}{\@nona@heterov(@)}}
2687 \def\@nona@heterov(#1){\@ifnextchar[{\@nona@@heterov(#1)[@}%

2688 {\@nona@@heterov(#1)[@]}}
2689 \def\@nona@@heterov(#1)[#2]#3#4{\@ifnextchar[%
2690 {\@nonaheterov(#1)[#2]{#3}{#4}[@}%
2691 {\@nonaheterov(#1)[#2]{#3}{#4}[@]}}
2692 \def\@nonaheterov(#1)[#2]#3#4[#5]{%
2693 % %%%%%%%%%%%%%%%%%%%%%%%%%%
2694 % % treatment of atom list %
2695 % %%%%%%%%%%%%%%%%%%%%%%%%%%
2696 \iniflag\iniatom%
2697 \test@vertix@nonav{#3}%
2698 % %%%%%%%%%%%%%%%%%%%%%%%
2699 % % adjustment for (yl) %
2700 % %%%%%%%%%%%%%%%%%%%%%%%
2701 \@reset@ylsw%
2702 \ylposition{#4}{5}{1}{5}{-1}% %substituents on 1 to 3
2703 \if@ylsw \ifx\@@ylii\empty
2704 \def\@@ylii{-342}\def\@@yli{0}\fi
2705 \else
2706 {\let\ddd=\eee\let\eee=\fff\let\fff=\ggg
2707 \ylposition{#4}{11}{3}{7}{-1}% %substituents on 5 to 7

2708 }% 2709 \fi

2710 \if@ylsw \ifx\@@ylii\empty
2711 \def\@@ylii{0}\def\@@yli{0}\fi
2712 \else
2713 {\let\aaa=\hhh
2714 \ylposition{#4}{-3}{0}{2}{0}%%substituent on 4

2715 }% 2716 \fi

2717 \if@ylsw \ifx\@@ylii\empty
2718 \def\@@ylii{0}\def\@@yli{0}\fi
2719 \else

2720 {%

2721 \clipdetection%
2722 \@clipfusefalse \if@iclip \@clipfusetrue \fi%
2723 \ylatombondposition{#4}{-8}{7}%   %9 %for 7a position

2724 }% 2725 \fi

2726 \if@ylsw \ifx\@@ylii\empty
2727 \def\@@ylii{-171}\def\@@yli{-103}\fi
2728 \else

2729 {%

2730 \clipdetection%
2731 \@clipfusefalse \if@jclip \@clipfusetrue \fi%
2732 \ylatombondposition{#4}{-7}{1}%   %8 for 3a position

2733 }% 2734 \fi

2735 \if@ylsw \ifx\@@ylii\empty
2736 \def\@@ylii{-171}\def\@@yli{-303}\fi

2737 \fi

2738 \if@ylsw
2739 \yl@shiftii=\@ylii
2740 \yl@shifti=\@yli
2741 \advance\yl@shiftii\@@ylii
2742 \advance\yl@shifti\@@yli
2743 \advance\yl@shiftii\yl@xdiff
2744 \advance\yl@shifti\yl@ydiff
2745 \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
2746 \reset@yl@xydiff%1999/1/6 by S. Fujita
2747 \else
2748 \begin{picture}(1200,880)(-\shiftii,-\shifti)%
2749 \iforigpt \put(-\shiftii,-\shifti){\circle*{50}}%
2750  \put(-\noshift,-\noshift){\circle{50}}%
2751 \typeout{command `nonaheterov' origin: %
2752  (\the\noshift,\the\noshift) ---> (\the\shiftii,\the\shifti)}\fi%

2753 \fi

2754 % %%%%%%%%%%%%%%%%%%
2755 % % outer skeleton %
2756 % %%%%%%%%%%%%%%%%%%
2757 \begingroup
2758 \resetbdsw%
2759 \@bond@@omit{#5}%
2760 {\let\fff=\jjj \let\eee=\iii%
2761 \put(342,0){\set@skel@bond{#1}{a}{c}}%
2762 % bond between 1 and 2 \@aaa -> \skbondc etc
2763 \put(342,0){\set@skel@bond{#1}{b}{b}}%
2764 % bond between 2 and 3 \@bbb -> \skbondb etc
2765 \put(342,0){\set@skel@longbond{#1}{c}{skbondhoriz}}%
2766 % bond between 3 and 3a \@ccc -> \skbondhoriz etc
2767 \put(342,0){\set@skel@bond{#1}{j}{e}}%
2768 % bond between 3a and 7a \@jjj -> \skbonde etc
2769 \put(342,0){\set@skel@bond{#1}{i}{d}}%
2770 % bond between 7a and 1 \@iii -> \skbondd etc

2771 }%

2772 {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\ggg%
2773 \let\ccc=\iii\let\bbb=\jjj%
2774 \set@skel@bond{#1}{d}{a}% bond between 3a and 4 \@ddd -> \skbonda etc
2775 \set@skel@bond{#1}{h}{c}% bond between 7 and 7a \@hhh -> \skbondc etc
2776 \set@skel@bond{#1}{g}{d}% bond between 6 and 7 \@ggg -> \skbondd etc
2777 \set@skel@bond{#1}{f}{e}% bond between 5 and 6 \@fff -> \skbonde etc
2778 \set@skel@bond{#1}{e}{f}% bond between 4 and 5 \@eee -> \skbondf etc

2779 }%

2780 \endgroup
2781 % %%%%%%%%%%%%%%%%%%%%%
2782 % % inner double bond %
2783 % %%%%%%%%%%%%%%%%%%%%%
2784 \@tfor\member:=#2\do{%
2785 \if\member r\relax%

2786 {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\ggg%
2787 \let\ccc=\iii\let\bbb=\jjj%
2788 \put(0,0){\bondb}% bond between 3a and 7a
2789 \put(0,0){\bondf}% bond between 4 and 5
2790 \put(0,0){\bondd}% bond between 6 and 7

2791 }%

2792 \else\if\member l\relax%
2793 \else\if\member a\relax%
2794 \put(342,0){\bondc}% bond between 3 and 4
2795 \else\if\member b\relax%
2796 \put(342,0){\bondb}% bond between 2 and 3
2797 \else\if\member c\relax%
2798 \put(342,0){\bondhoriz}% bond between 3 and 3a
2799 \else\if\member d\relax%
2800 {\let\aaa=\hhh \let\bbb=\jjj%
2801 \put(0,0){\bonda}% bond between 4 and 3a

2802 }

2803 \else\if\member e\relax%
2804 {\let\aaa=\hhh \let\fff=\ggg%
2805 \put(0,0){\bondf}% bond between 4 and 5

2806 }%

2807 \else\if\member f\relax%
2808 {\let\eee=\fff \let\fff=\ggg%
2809 \put(0,0){\bonde}% bond between 5 and 6

2810 }%

2811 \else\if\member g\relax%
2812 {\let\ddd=\eee \let\eee=\fff%
2813 \put(0,0){\bondd}% bond between 6 and 7

2814 }%

2815 \else\if\member h\relax%
2816 {\let\ccc=\iii \let\ddd=\eee%
2817 \put(0,0){\bondc}% bond between 7 and 7a

2818 }%

2819 \else\if\member i\relax%
2820 {\let\eee=\iii%
2821 \put(342,0){\bondd}% bond between 1 and 7a

2822 }%

2823 \else\if\member j\relax%
2824 {\let\ccc=\iii\let\bbb=\jjj%
2825 \put(0,0){\bondb}% bond between 7a and 3a

2826 }%

2827 \else\if\member J\relax%
2828 {\let\eee=\iii\let\fff=\jjj%
2829 \put(342,0){\bonde}% bond between 7a and 3a

2830 }%

2831 \else\if\member A%left aromatic circle
2832 \put(0,203){\circle{240}}               %circle
2833 \else\if\member B%left aromatic circle
2834 \put(342,173){\circle{180}}               %circle 1993/11/20 S.Fujita
2835 \else

2836 \expandafter\twoCH@@R\member//%
2837 \def\aax{7a} \def\aay{3a}%
2838  \if\@@tmpa 1\relax%
2839  \putratom{304}{68}{\@@tmpb}%       % right type
2840  \else\if\@@tmpa 2\relax%
2841  \putratom{402}{120}{\@@tmpb}%      % right type
2842  \else\if\@@tmpa 3\relax%
2843  \putratom{402}{253}{\@@tmpb}%      % right type
2844  \else\if\@@tmpa 4\relax%
2845  \putratom{-38}{282}{\@@tmpb}%      % right type
2846  \else\if\@@tmpa 5\relax%
2847  \putlatom{-60}{120}{\@@tmpb}%      % left type
2848  \else\if\@@tmpa 6\relax%
2849  \putlatom{-60}{253}{\@@tmpb}%      % left type
2850  \else\if\@@tmpa 7\relax%
2851  \putratom{-38}{68}{\@@tmpb}%       % right type
2852  \else\if\@@tmpa 8\relax%
2853  \putratom{60}{253}{\@@tmpb}%       % right type
2854  \else\ifx\@@tmpa\aax\relax%
2855  \putratom{60}{253}{\@@tmpb}%       % right type
2856  \else\ifx\@@tmpa\aay\relax%
2857  \putratom{60}{120}{\@@tmpb}%       % right type
2858  \else\if\@@tmpa 9\relax%
2859  \putratom{60}{120}{\@@tmpb}%       % right type
2860  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
2861 % ***********************
2862 % * setting fused rings *
2863 % ***********************
2864 \expandafter\twoCH@R\member//%
2865 \set@fusion@nonav
2866 \fi\fi\fi\fi\fi\fi\fi\fi\fi%
2867 \fi\fi\fi\fi\fi\fi%

2868 }%

2869 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2870 % % setting hetero atoms and spiro rings %
2871 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2872 \iniflag\iniatom%
2873 \@tmpclipfalse
2874 %position 7 should be treated befor position 1 (using the same \if@clip)
2875 \put(0,0){\set@hetatom@sixv{#3}{11}{3}{7}{-1}%
2876 \@gclipfalse \if@fclip \global\@gcliptrue \fi%
2877 \@fclipfalse \if@eclip \global\@fcliptrue \fi%
2878 \@eclipfalse \if@clip \global\@ecliptrue \fi%
2879 }%substituents on 5 to 7
2880 \put(342,0){\set@hetatom@sixv{#3}{5}{1}{5}{-1}%
2881 \if@bclip \global\@bcliptrue\fi
2882 \if@cclip \global\@ccliptrue\fi
2883 \if@clip \global\@cliptrue\fi
2884 }% %substituents on 1 to 3

2885 \put(0,0){\set@hetatom@sixv{#3}{-3}{0}{2}{0}%
2886 \@aclipfalse \if@aclip \global\@hcliptrue \fi%
2887 }%%substituent on 4
2888 \put(0,0){\set@vrtx@nonafusev{#3}%
2889 \@tmpclipfalse
2890 \if@iclip \global\@tmpcliptrue \fi
2891 \if@jclip \global\@icliptrue \fi
2892 \if@tmpclip \global\@jcliptrue \fi
2893 }% fused positions
2894 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2895 % % setting substituents and exocyclic bonds %
2896 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2897 \put(342,0){\setsixringv{#4}{5}{1}{5}{-1}}% %substituents on 1 to 3
2898 {\@clipfalse \if@eclip \@cliptrue \fi%      %substituents on 5 to 7
2899 \@eclipfalse \if@fclip \@ecliptrue \fi%
2900 \@fclipfalse \if@gclip \@fcliptrue \fi%
2901 \put(0,0){\setsixringv{#4}{11}{3}{7}{-1}}%

2902 }%

2903 {\@aclipfalse \if@hclip \@acliptrue \fi%    %substituent on 4
2904 \put(0,0){\setsixringv{#4}{-3}{0}{2}{0}}%

2905 }%

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

2908 }%

2909 {\@clipfusefalse \if@jclip \@clipfusetrue \fi%
2910 \put(171,303){\setatombond{#4}{-7}{1}}%   %8 for 3a position

2911 }%

2912 \end{picture}\iniatom\iniflag}%    %end of \nonaheterov macro

The macro \test@vertix@nonav is used to test the presence of a hetero atom or a spiro substituent on a vertex of the nonaheterov nucleus.

\test@vertix@nonav
2913 \def\test@vertix@nonav#1{%
2914 \@forsemicol\member:=#1\do{%
2915 \ifx\member\empty\else%
2916 \expandafter\@m@mb@r\member;\relax%
2917 \expandafter\twoch@r\@membera{}%
2918 \ifcase\@tmpa%
2919 \or%
2920 \if\@tmpb s\relax\def\ddd{}\else\def\ddd{@}\fi
2921 \or%2
2922 \if\@tmpb s\relax\def\ccc{}\else\def\ccc{@}\fi
2923 \or%3%
2924 \if\@tmpb a%
2925  \def\jjj{@}%3a
2926 \else\if\@tmpb s%
2927  \def\bbb{}%3
2928 \else\if\@tmpb h%

2929  \def\bbb{@}%3
2930 \else\ifx\@tmpb\empty%
2931  \def\bbb{@}%3
2932 \fi\fi\fi\fi%
2933 \or%4
2934 \if\@tmpb s\relax\def\hhh{}\else\def\hhh{@}\fi
2935 \or%5
2936 \if\@tmpb s\relax\def\ggg{}\else\def\ggg{@}\fi
2937 \or%6
2938 \if\@tmpb s\relax\def\fff{}\else\def\fff{@}\fi
2939 \or%7
2940 \if\@tmpb a%
2941  \xdef\iii{@}%7a
2942 \else\if\@tmpb s%
2943  \xdef\eee{}%7s
2944 \else\if\@tmpb h%
2945  \xdef\eee{@}%7h
2946 \else\ifx\@tmpb\empty%
2947  \xdef\eee{@}%7
2948 \fi\fi\fi\fi%
2949 \or%8 (= 3a)
2950 \if\@tmpb s\relax\def\jjj{}\else\def\jjj{@}\fi
2951 \or%9 (= 7a)
2952 \if\@tmpb s\relax\def\iii{}\else\def\iii{@}\fi
2953 \fi\fi}}% end of \test@vertix@nonav

The macro \set@vrtx@nonafusev is used to set a hetero atom or on a vertex of a bridgehead location.

\set@vrtx@nonafusev
2954 \def\set@vrtx@nonafusev#1{%
2955 \@forsemicol\member:=#1\do{%
2956 \ifx\member\empty\else%
2957 \expandafter\@m@mb@r\member;\relax%
2958 \expandafter\twoch@r\@membera{}%
2959 \ifcase\@tmpa\or\or
2960 \or%%%%3
2961 \if\@tmpb a%
2962  \global\@icliptrue%
2963  \putlatom{207}{280}{\@memberb}% % left type
2964 \else\relax

2965 \fi

2966 \or\or\or
2967 \or%7
2968 \if\@tmpb a%
2969  \global\@jcliptrue%
2970  \putlatom{207}{65}{\@memberb}%  % left type
2971 \else\relax

2972 \fi

2973 \or%8 (= 3a)

2974  \global\@icliptrue%
2975  \putlatom{207}{280}{\@memberb}% % left type
2976 \or%9 (= 7a)
2977  \global\@jcliptrue%
2978  \putlatom{207}{65}{\@memberb}%  % left type
2979 \fi\fi}%
2980 }% end of the macro \set@vrtx@nonafusev

9.2 Inverse vertical type

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

 **********************************
 * nonahetero derivatives         *
 *  (vertical type, inverse type) *
 **********************************
 The following numbering is adopted in this macro.
          7(10) 1
          * 7a  *
     6  *   * *   *  2
       |     |     |
       |     |_____|
     5  *   *        3
          *  3a(8)
          4
          ^
          |
          the original point

The macro \nonaheterovi 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.

   \nonaheterovi(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 ring)
B    :  aromatic circle (five-membered ring)
{n+}       :  plus at the n-nitrogen atom (n = 1 to 9)

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.
\nonaheterovi{1==N}{1==Cl;2==F}
\nonaheterovi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}

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

\nonaheterovi
\@nona@heterovi
\@nona@@heterovi
\@nonaheterovi

2981 \def\nonaheterovi{\@ifnextchar({\@nona@heterovi(@}{\@nona@heterovi(@)}}
2982 \def\@nona@heterovi(#1){\@ifnextchar[{\@nona@@heterovi(#1)[@}%

2983 {\@nona@@heterovi(#1)[@]}}
2984 \def\@nona@@heterovi(#1)[#2]#3#4{\@ifnextchar[%
2985 {\@nonaheterovi(#1)[#2]{#3}{#4}[@}%
2986 {\@nonaheterovi(#1)[#2]{#3}{#4}[@]}}
2987 \def\@nonaheterovi(#1)[#2]#3#4[#5]{%
2988 % %%%%%%%%%%%%%%%%%%%%%%%%%%
2989 % % treatment of atom list %
2990 % %%%%%%%%%%%%%%%%%%%%%%%%%%
2991 \iniflag\iniatom%initialize
2992 \test@vertix@nonavi{#3}%
2993 % %%%%%%%%%%%%%%%%%%%%%%%
2994 % % adjustment for (yl) %
2995 % %%%%%%%%%%%%%%%%%%%%%%%
2996 \@reset@ylsw%
2997 \ylposition{#4}{0}{0}{4}{0}% %substituents on 1 to 3
2998 \if@ylsw \ifx\@@ylii\empty
2999 \def\@@ylii{-342}\def\@@yli{0}\fi
3000 \else
3001 {\let\ddd=\eee\let\eee=\fff\let\fff=\ggg
3002 \ylposition{#4}{0}{3}{7}{0}%%substituents on 4 to 6

3003 }% 3004 \fi

3005 \if@ylsw \ifx\@@ylii\empty
3006 \def\@@ylii{0}\def\@@yli{0}\fi
3007 \else
3008 {\let\aaa=\hhh
3009 \ylposition{#4}{-6}{0}{2}{0}%%substituent on 7

3010 }% 3011 \fi

3012 \if@ylsw \ifx\@@ylii\empty
3013 \def\@@ylii{0}\def\@@yli{0}\fi
3014 \else

3015 {%

3016 \clipdetection%
3017 \@clipfusefalse \if@iclip \@clipfusetrue \fi%
3018 \ylatombondposition{#4}{-7}{7}%   %8 for 3a position

3019 }% 3020 \fi

3021 \if@ylsw \ifx\@@ylii\empty
3022 \def\@@ylii{-171}\def\@@yli{-103}\fi
3023 \else

3024 {%

3025 \clipdetection%
3026 \@clipfusefalse \if@jclip \@clipfusetrue \fi%
3027 \ylatombondposition{#4}{-8}{1}%  %9 for 7a position

3028 }% 3029 \fi

3030 \if@ylsw \ifx\@@ylii\empty
3031 \def\@@ylii{-171}\def\@@yli{-303}\fi

3032 \fi

3033 \if@ylsw
3034 \yl@shiftii=\@ylii
3035 \yl@shifti=\@yli
3036 \advance\yl@shiftii\@@ylii
3037 \advance\yl@shifti\@@yli
3038 \advance\yl@shiftii\yl@xdiff
3039 \advance\yl@shifti\yl@ydiff
3040 \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
3041 \reset@yl@xydiff%1999/1/6 by S. Fujita
3042 \else
3043 \begin{picture}(1200,880)(-\shiftii,-\shifti)%
3044 \iforigpt \put(-\shiftii,-\shifti){\circle*{50}}%
3045  \put(-\noshift,-\noshift){\circle{50}}%
3046 \typeout{command `nonaheterovi' origin: %
3047  (\the\noshift,\the\noshift) ---> (\the\shiftii,\the\shifti)}\fi%

3048 \fi

3049 % %%%%%%%%%%%%%%%%%%
3050 % % outer skeleton %
3051 % %%%%%%%%%%%%%%%%%%
3052 \begingroup
3053 \resetbdsw%
3054 \@bond@@omit{#5}%
3055 {\let\fff=\jjj \let\eee=\iii%
3056 \put(342,0){\set@skel@bond{#1}{a}{a}}%
3057 % bond between 1 and 2 \@aaa -> \skbonda etc
3058 \put(342,0){\set@skel@bond{#1}{b}{b}}%
3059 % bond between 2 and 3 \@bbb -> \skbondb etc
3060 \put(342,0){\set@skel@longbond{#1}{c}{skbondhorizi}}%
3061 % bond between 3 and 3a \@ccc -> \skbondhoriz etc
3062 \put(342,0){\set@skel@bond{#1}{j}{e}}%
3063 % bond between 3a and 7a \@jjj -> \skbonde etc
3064 \put(342,0){\set@skel@bond{#1}{i}{f}}%
3065 % bond between 7a and 1 \@iii -> \skbondf etc

3066 %

3067 % \put(342,0){\skbonda}% bond between 1 and 2
3068 % \put(342,0){\skbondb}% bond between 2 and 3
3069 % \put(342,0){\skbonde}% bond between 7a and 3a
3070 % \put(342,0){\skbondf}% bond between 1 and 7a
3071 % \put(342,0){\skbondhorizi}% bond between 3 and 3a

3072 }%

3073 {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\ggg%
3074 \let\ccc=\iii\let\bbb=\jjj%
3075 \set@skel@bond{#1}{h}{a}% bond between 7a and 7 \@hhh -> \skbonda etc
3076 \set@skel@bond{#1}{d}{c}% bond between 3a and 4 \@ddd -> \skbondc etc
3077 \set@skel@bond{#1}{e}{d}% bond between 4 and 5 \@eee -> \skbondd etc
3078 \set@skel@bond{#1}{f}{e}% bond between 5 and 6 \@fff -> \skbonde etc
3079 \set@skel@bond{#1}{g}{f}% bond between 6 and 7 \@ggg -> \skbondf etc

3080 %

3081 % \put(0,0){\skbonda}% bond between 7 and 7a
3082 % \put(0,0){\skbondc}% bond between 4 and 3a
3083 % \put(0,0){\skbondf}% bond between 6 and 7
3084 % \put(0,0){\skbondd}% bond between 4 and 5
3085 % \put(0,0){\skbonde}% bond between 5 and 6

3086 }%

3087 \endgroup
3088 % %%%%%%%%%%%%%%%%%%%%%
3089 % % inner double bond %
3090 % %%%%%%%%%%%%%%%%%%%%%
3091 \@tfor\member:=#2\do{%
3092 \if\member r\relax%
3093 {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\ggg
3094 \let\ccc=\iii\let\bbb=\jjj
3095 \put(0,0){\bondb}% bond between 3a and 7a
3096 \put(0,0){\bondf}% bond between 6 and 7
3097 \put(0,0){\bondd}% bond between 4 and 5

3098 }%

3099 \else\if\member l\relax%
3100 \else\if\member a\relax%
3101 \put(342,0){\bonda}% bond between 1 and 2
3102 \else\if\member b\relax%
3103 \put(342,0){\bondb}% bond between 2 and 3
3104 \else\if\member c\relax%
3105 \put(342,0){\bondhorizi}% bond between 3 and 3a
3106 \else\if\member d\relax%
3107 {\let\ccc=\iii \let\ddd=\eee%
3108 \put(0,0){\bondc}% bond between 4 and 3a

3109 }%

3110 \else\if\member e\relax%
3111 {\let\ddd=\eee\let\eee=\fff%
3112 \put(0,0){\bondd}% bond between 4 and 5

3113 }%

3114 \else\if\member f\relax%
3115 {\let\eee=\fff \let\fff=\ggg%
3116 \put(0,0){\bonde}% bond between 5 and 6

3117 }%

3118 \else\if\member g\relax%
3119 {\let\aaa=\hhh \let\fff=\ggg%
3120 \put(0,0){\bondf}% bond between 7 and 6

3121 }%

3122 \else\if\member h\relax%
3123 {\let\aaa=\hhh \let\bbb=\jjj%
3124 \put(0,0){\bonda}% bond between 7 and 7a

3125 }%

3126 \else\if\member i\relax%
3127 {\let\fff=\jjj%
3128 \put(342,0){\bondf}% bond between 1 and 7a

3129 }%

3130 \else\if\member j\relax%
3131 {\let\ccc=\iii\let\bbb=\jjj%
3132 \put(0,0){\bondb}% bond between 7a and 3a

3133 }%

3134 \else\if\member J\relax%
3135 {\let\eee=\iii\let\fff=\jjj%
3136 \put(342,0){\bonde}% bond between 7a and 3a

3137 }%

3138 \else\if\member A%left aromatic circle
3139 \put(0,203){\circle{240}}%               %circle
3140 \else\if\member B%left aromatic circle
3141 \put(342,233){\circle{180}}               %circle 1993/11/20 S.Fujita
3142 \else
3143 \expandafter\twoCH@@R\member//%
3144 \def\aax{7a} \def\aay{3a}%
3145  \if\@@tmpa 1\relax%
3146  \putratom{304}{282}{\@@tmpb}%       % right type
3147  \else\if\@@tmpa 3\relax%
3148  \putratom{402}{120}{\@@tmpb}%      % right type
3149  \else\if\@@tmpa 2\relax%
3150  \putratom{402}{253}{\@@tmpb}%      % right type
3151  \else\if\@@tmpa 7\relax%
3152  \putratom{-38}{282}{\@@tmpb}%      % right type
3153  \else\if\@@tmpa 6\relax%
3154  \putlatom{-60}{120}{\@@tmpb}%      % left type
3155  \else\if\@@tmpa 5\relax%
3156  \putlatom{-60}{253}{\@@tmpb}%      % left type
3157  \else\if\@@tmpa 4\relax%
3158  \putratom{-38}{68}{\@@tmpb}%       % right type
3159  \else\if\@@tmpa 9\relax%
3160  \putratom{60}{253}{\@@tmpb}%       % right type
3161  \else\ifx\@@tmpa\aax\relax%
3162  \putratom{60}{253}{\@@tmpb}%       % right type
3163  \else\ifx\@@tmpa\aay\relax%
3164  \putratom{60}{120}{\@@tmpb}%       % right type
3165  \else\if\@@tmpa 8\relax%
3166  \putratom{60}{120}{\@@tmpb}%       % right type
3167  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
3168 % ***********************
3169 % * setting fused rings *
3170 % ***********************
3171 \expandafter\twoCH@R\member//%
3172 \set@fusion@nonavi
3173 \fi\fi\fi\fi\fi\fi\fi\fi\fi%
3174 \fi\fi\fi\fi\fi\fi%

3175 }%

3176 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3177 % % setting hetero atoms and spiro rings %
3178 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

3179 \iniflag
3180 \put(342,0){\set@hetatom@sixv{#3}{0}{0}{4}{0}%
3181 \if@aclip \global\@acliptrue\fi
3182 \if@bclip \global\@bcliptrue\fi
3183 \if@cclip \global\@ccliptrue\fi
3184 }% %substituents on 1 to 3
3185 \put(0,0){\set@hetatom@sixv{#3}{0}{3}{7}{0}%
3186 \@gclipfalse \if@fclip \global\@gcliptrue \fi%
3187 \@fclipfalse \if@eclip \global\@fcliptrue \fi%
3188 \@eclipfalse \if@clip \global\@ecliptrue \fi}%substituents on 4 to 6
3189 \put(0,0){\set@hetatom@sixv{#3}{-6}{0}{2}{0}%
3190 \@hclipfalse \if@aclip \global\@hcliptrue \fi}%%substituent on 7
3191 \put(0,0){\set@vrtx@nonafusevi{#3}%
3192 \if@iclip \global\@icliptrue \fi
3193 \if@jclip \global\@jcliptrue \fi}% fused positions
3194 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3195 % % setting substituents and exocyclic bonds %
3196 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3197 \put(342,0){\setsixringv{#4}{0}{0}{4}{0}}% %substituents on 1 to 3
3198 {\@clipfalse \if@eclip \@cliptrue \fi%     %substituents on 4 to 6
3199 \@eclipfalse \if@fclip \@ecliptrue \fi%
3200 \@fclipfalse \if@gclip \@fcliptrue \fi%
3201 \put(0,0){\setsixringv{#4}{0}{3}{7}{0}}%

3202 }%

3203 {\@aclipfalse \if@hclip \@acliptrue \fi%   %substituent on 7
3204 \put(0,0){\setsixringv{#4}{-6}{0}{2}{0}}%

3205 }%

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

3208 }%

3209 {\@clipfusefalse \if@jclip \@clipfusetrue \fi%
3210 \put(171,303){\setatombond{#4}{-8}{1}}%  %9 for 7a position

3211 }%

3212 \end{picture}\iniatom\iniflag}%    %end of \nonaheterovi macro

The macro \test@vertix@nonavi is used to test the presence of a hetero atom or a spiro substituent on a vertex of the nonaheterovi nucleus.

\test@vertix@nonavi
3213 \def\test@vertix@nonavi#1{%
3214 \@forsemicol\member:=#1\do{%
3215 \ifx\member\empty\else%
3216 \expandafter\@m@mb@r\member;\relax%
3217 \expandafter\twoch@r\@membera{}%
3218 \ifcase\@tmpa%
3219 \or%
3220 \if\@tmpb s\relax\def\aaa{}\else\def\aaa{@}\fi
3221 \or%2
3222 \if\@tmpb s\relax\def\bbb{}\else\def\bbb{@}\fi

3223 \or%3%
3224 \if\@tmpb a%
3225  \def\iii{@}%3a
3226 \else\if\@tmpb s%
3227  \def\ccc{}%3
3228 \else\if\@tmpb h%
3229  \def\ccc{@}%3
3230 \else\ifx\@tmpb\empty%
3231  \def\ccc{@}%3
3232 \fi\fi\fi\fi%
3233 \or%4
3234 \if\@tmpb s\relax\def\eee{}\else\def\eee{@}\fi
3235 \or%5
3236 \if\@tmpb s\relax\def\fff{}\else\def\fff{@}\fi
3237 \or%6
3238 \if\@tmpb s\relax\def\ggg{}\else\def\ggg{@}\fi
3239 \or%7
3240 \if\@tmpb a%
3241  \xdef\jjj{@}%7a
3242 \else\if\@tmpb s%
3243  \xdef\hhh{}%7s
3244 \else\if\@tmpb h%
3245  \xdef\hhh{@}%7h
3246 \else\ifx\@tmpb\empty%
3247  \xdef\hhh{@}%7
3248 \fi\fi\fi\fi%
3249 \or%8 (= 3a)
3250 \if\@tmpb s\relax\def\iii{}\else\def\iii{@}\fi
3251 \or%9 (= 7a)
3252 \if\@tmpb s\relax\def\jjj{}\else\def\jjj{@}\fi
3253 \fi\fi}}

The macro \set@vrtx@nonafusevi is used to set a hetero atom on a vertex of a bridgehead location.

\set@vrtx@nonafusevi
3254 \def\set@vrtx@nonafusevi#1{%
3255 \@forsemicol\member:=#1\do{%
3256 \ifx\member\empty\else%
3257 \expandafter\@m@mb@r\member;\relax%
3258 \expandafter\twoch@r\@membera{}%
3259 \ifcase\@tmpa\or\or
3260 \or%%%%3
3261 \if\@tmpb a%
3262  \global\@icliptrue%
3263  \putlatom{207}{65}{\@memberb}%  % left type
3264 \else\relax

3265 \fi

3266 \or\or\or
3267 \or%7

3268 \if\@tmpb a%
3269  \global\@jcliptrue%
3270  \putlatom{207}{280}{\@memberb}% % left type
3271 \else\relax

3272 \fi

3273 \or%8 (= 3a)
3274  \global\@icliptrue%
3275  \putlatom{207}{65}{\@memberb}%  % left type
3276 \or%9 (= 7a)
3277  \global\@jcliptrue%
3278  \putlatom{207}{280}{\@memberb}% % left type
3279 \fi\fi}%
3280 }% end of the macro \set@vrtx@nonafusevi

9.3 Short-cut commands for fused heterocycles

The macros \nonaheterov and \nonaheterovi 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 *
*  (vertical type)                                       *
**********************************************************
N-heterocycles:
\indolev[BONDLIST]{SUBSLIST}
\indolevi[BONDLIST]{SUBSLIST}
\isoindolev[BONDLIST]{SUBSLIST}
\isoindolevi[BONDLIST]{SUBSLIST}
\indolizinev[BONDLIST]{SUBSLIST}
\indolizinevi[BONDLIST]{SUBSLIST}
       (different from the IUPAC numbering)
\purinev[BONDLIST]{SUBSLIST}
\purinevi[BONDLIST]{SUBSLIST}
       (different from the IUPAC numbering)
O-heterocycles:
\benzofuranev[BONDLIST]{SUBSLIST}
\benzofuranevi[BONDLIST]{SUBSLIST}
\isobenzofuranevi[BONDLIST]{SUBSLIST}
\benzoxazolev[BONDLIST]{SUBSLIST}

\benzoxazolevi[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’ and ‘B’ typeset aromatic circles. 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 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.
          \indolev{1==N}{1==Cl;2==F}
          \indolev[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}

\purinev \purinevi
3281 \def\purinev{\@ifnextchar[{\@purinev[@}{\@purinev[ra]}}
3282 \def\@purinev[#1]#2{%
3283 \iforigpt \typeout{command `purinev' %
3284 is based on `nonaheterov'.}\fi%
3285 \nonaheterov[#1]{1==N;3==N;5==N;7==N}{#2}}
3286 \def\purinevi{\@ifnextchar[{\@purinevi[@}{\@purinevi[ra]}}
3287 \def\@purinevi[#1]#2{%
3288 \iforigpt \typeout{command `purinevi' %
3289 is based on `nonaheterovi'.}\fi%
3290 \nonaheterovi[#1]{1==N;3==N;5==N;7==N}{#2}}
\indolev \indolevi
3291 \def\indolev{\@ifnextchar[{\@indolev[@}{\@indolev[rb]}}
3292 \def\@indolev[#1]#2{%
3293 \iforigpt \typeout{command `indolev' %
3294 is based on `nonaheterov'.}\fi%
3295 \nonaheterov[#1]{1==N}{#2}}
3296 \def\indolevi{\@ifnextchar[{\@indolevi[@}{\@indolevi[rb]}}
3297 \def\@indolevi[#1]#2{%
3298 \iforigpt \typeout{command `indolevi' %
3299 is based on `nonaheterovi'.}\fi%
3300 \nonaheterovi[#1]{1==N}{#2}}
\indolizinev
\indolizinevi
3301 \def\indolizinev{%
3302 \@ifnextchar[{\@indolizinev[@}{\@indolizinev[aceg]}}
3303 \def\@indolizinev[#1]#2{%
3304 \iforigpt \typeout{command `indolizinev' %
3305 is based on `nonaheterov'.}\fi%

3306 \nonaheterov[#1]{7a==N}{#2}}
3307 \def\indolizinevi{%
3308 \@ifnextchar[{\@indolizinevi[@}{\@indolizinevi[aceg]}}
3309 \def\@indolizinevi[#1]#2{%
3310 \iforigpt \typeout{command `indolizinevi' %
3311 is based on `nonaheterovi'.}\fi%
3312 \nonaheterovi[#1]{7a==N}{#2}}
\isoindolev
\isoindolevi
3313 \def\isoindolev{\@ifnextchar[{\@isoindolev[@}{\@isoindolev[cegi]}}
3314 \def\@isoindolev[#1]#2{%
3315 \iforigpt \typeout{command `isoindolev' %
3316 is based on `nonaheterov'.}\fi%
3317 \nonaheterov[#1]{2==N}{#2}}
3318 \def\isoindolevi{\@ifnextchar[{\@isoindolevi[@}{\@isoindolevi[cegi]}}
3319 \def\@isoindolevi[#1]#2{%
3320 \iforigpt \typeout{command `isoindolevi' %
3321 is based on `nonaheterovi'.}\fi%
3322 \nonaheterovi[#1]{2==N}{#2}}
\benzofuranev
\benzofuranevi
3323 \def\benzofuranev{%
3324 \@ifnextchar[{\@benzofuranev[@}{\@benzofuranev[rb]}}
3325 \def\@benzofuranev[#1]#2{%
3326 \iforigpt \typeout{command `benzofuranev' %
3327 is based on `nonaheterov'.}\fi%
3328 \nonaheterov[#1]{1==O}{#2}}
3329 \def\benzofuranevi{%
3330 \@ifnextchar[{\@benzofuranevi[@}{\@benzofuranevi[rb]}}
3331 \def\@benzofuranevi[#1]#2{%
3332 \iforigpt \typeout{command `benzofuranevi' %
3333 is based on `nonaheterovi'.}\fi%
3334 \nonaheterovi[#1]{1==O}{#2}}
\isobenzofuranev
\isobenzofuranevi
3335 \def\isobenzofuranev{\@ifnextchar[{\@isobenzofuranev[@}%
3336 {\@isobenzofuranev[cegi]}}
3337 \def\@isobenzofuranev[#1]#2{%
3338 \iforigpt \typeout{command `isobenzofuranev' %
3339 is based on `nonaheterov'.}\fi%
3340 \nonaheterov[#1]{2==O}{#2}}
3341 \def\isobenzofuranevi{\@ifnextchar[{\@isobenzofuranevi[@}%
3342 {\@isobenzofuranevi[cegi]}}
3343 \def\@isobenzofuranevi[#1]#2{%
3344 \iforigpt \typeout{command `isobenzofuranevi' %
3345 is based on `nonaheterovi'.}\fi%
3346 \nonaheterovi[#1]{2==O}{#2}}
\benzoxazolev
\benzoxazolevi

3347 \def\benzoxazolev{%
3348 \@ifnextchar[{\@benzoxazolev[@}{\@benzoxazolev[rb]}}
3349 \def\@benzoxazolev[#1]#2{%
3350 \iforigpt \typeout{command `benzoxazolev' %
3351 is based on `nonaheterov'.}\fi%
3352 \nonaheterov[#1]{1==O;3==N}{#2}}
3353 \def\benzoxazolevi{%
3354 \@ifnextchar[{\@benzoxazolevi[@}{\@benzoxazolevi[rb]}}
3355 \def\@benzoxazolevi[#1]#2{%
3356 \iforigpt \typeout{command `benzoxazolevi' %
3357 is based on `nonaheterovi'.}\fi%
3358 \nonaheterovi[#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 \sixunitv 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  *
 *  (vertical type)   *
 **********************
          1
          *
     6  *   *  2
       |     |
       |     |
     5  *   *  3
          *
          4 <===== the original point

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

   \sixunitv[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 \sixunitv 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.

\sixunitv \@sixunitv
3359 \def\sixunitv{\@ifnextchar[{\@sixunitv[@}{\@sixunitv[@]}}
3360 \def\@sixunitv[#1]#2#3#4{\sixheterov[#1]{#2}{#3}[#4]}
(Old difinition)
% \begin{macro}{\sixunitv}
% \begin{macro}{\@sixunitv}
%    \begin{macrocode}
\def\sixunitv{\@ifnextchar[{\@sixunitv}{\@sixunitv[r]}}
\def\@sixunitv[#1]#2#3#4{%
%    \end{macrocode}
%
%    \begin{macrocode}
% %%%%%%%%%%%%%%%%%%%%%%%%%%
% % treatment of atom list %
% %%%%%%%%%%%%%%%%%%%%%%%%%%
\iniatom\iniflag%initialize%
\@forsemicol\member:=#2\do{%

\expandafter\@m@mb@r\member;\relax%
\expandafter\twoch@r\@membera{}%
\ifcase\@tmpa%
 \or \xdef\aaa{\@memberb}%
 \or \xdef\bbb{\@memberb}%
 \or \xdef\ccc{\@memberb}%
 \or \xdef\ddd{\@memberb}%
 \or \xdef\eee{\@memberb}%
 \or \xdef\fff{\@memberb}%
\fi}%
 \begin{picture}(800,880)(-\shiftii,-\shifti)%
  \iforigpt \put(-\shiftii,-\shifti){\circle*{50}}%
           \put(-\noshift,-\noshift){\circle{50}}%
   \typeout{command `sixunitv' origin: %
    (\the\noshift,\the\noshift) ---> (\the\shiftii,\the\shifti)}\fi%
%    \end{macrocode}
%
%    \begin{macrocode}
% %%%%%%%%%%%%%%%%%%
% % outer skeleton %
% %%%%%%%%%%%%%%%%%%
% changed OMIT into a list 1993/11/21 by Shinsaku Fujita
{\resetbdsw%
\@tfor\memBer:=#4\do{%
\if\memBer a\relax\gdef\@aaa{}\fi%
\if\memBer b\relax\gdef\@bbb{}\fi%
\if\memBer c\relax\gdef\@ccc{}\fi%
\if\memBer d\relax\gdef\@ddd{}\fi%
\if\memBer e\relax\gdef\@eee{}\fi%
\if\memBer f\relax\gdef\@fff{}\fi%
}%
\if\@aaa a\relax\skbonda\fi% bond between 1 and 2
\if\@bbb b\relax\skbondb\fi% bond between 2 and 3
\if\@ccc c\relax\skbondc\fi% bond between 3 and 4
\if\@ddd d\relax\skbondd\fi% bond between 4 and 5
\if\@eee e\relax\skbonde\fi% bond between 5 and 6
\if\@fff f\relax\skbondf\fi% bond between 6 and 1
}%
%    \end{macrocode}
%
%    \begin{macrocode}
% %%%%%%%%%%%%%%%%%%%%%
% % inner double bond %
% %%%%%%%%%%%%%%%%%%%%%
\@tfor\member:=#1\do{%
\if\member r\relax%
\else\if\member l\relax%
\else\if\member a\relax%
 \ifx#4a\relax\else%
  \bonda%

 \fi%
\else\if\member b\relax%
 \ifx#4b\relax\else%
   \bondb%
 \fi%
\else\if\member c\relax%
 \ifx#4c\relax\else%
   \bondc%
 \fi%
\else\if\member d\relax%
 \ifx#4d\relax\else%
   \bondd%
 \fi%
\else\if\member e\relax%
 \ifx#4e\relax\else%
   \bonde%
 \fi%
\else\if\member f\relax%
 \ifx#4f\relax\else%
   \bondf%
 \fi%
\else\if\member A%left aromatic circle
  \put(0,203){\circle{240}}%               %circle
\else \expandafter\twoch@@r\member{}{}%
      \if\@@tmpa 1\relax%
        \putratom{-38}{282}{\@@tmpb}%      % right type
      \else\if\@@tmpa 2\relax%
        \putratom{60}{253}{\@@tmpb}%       % right type
      \else\if\@@tmpa 3\relax%
        \putratom{60}{120}{\@@tmpb}%       % right type
      \else\if\@@tmpa 4\relax%
        \putratom{-38}{68}{\@@tmpb}%       % right type
      \fi\fi\fi\fi%
\fi\fi\fi\fi\fi\fi\fi\fi\fi%
}%
%    \end{macrocode}
%
%    \begin{macrocode}
% %%%%%%%%%%%%%%%%%%%%%%%%
% % setting hetero atoms %
% %%%%%%%%%%%%%%%%%%%%%%%%
\ifx\ddd\empty\else%
   \@cliptrue%
   \putratom{-31}{-10}{\ddd}%  % right type
\fi%
\ifx\aaa\empty\else%
     \@acliptrue%
     \putratom{-31}{356}{\aaa}%  % right type
\fi%
\ifx\bbb\empty\else%

     \@bcliptrue%
     \putratom{135}{280}{\bbb}%  % right type
\fi%
\ifx\ccc\empty\else%
     \@ccliptrue%
     \putratom{135}{65}{\ccc}%   % right type
\fi%
\ifx\fff\empty\else%
     \@fcliptrue%
%     \putlatom{-135}{280}{\bbb}% % left type
     \putlatom{-135}{280}{\fff}% % left type
\fi%
\ifx\eee\empty\else%
     \@ecliptrue%
%     \putlatom{-135}{65}{\ccc}%  % left type
     \putlatom{-135}{65}{\eee}%  % left type
\fi%
% %%%%%%%%%%%%%%%%%%%%%%%%
% % setting substituents %
% %%%%%%%%%%%%%%%%%%%%%%%%
\setsixringv{#3}{0}{0}{7}{0}%
\end{picture}\iniatom\iniflag}%     %end of \sixunitv macro
%    \end{macrocode}
% \end{macro}
% \end{macro}
%

10.2 Five-membered ring unit

10.2.1 Vertical type

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

The macro \fiveunitv 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 *
*  (vertical type)   *
**********************
    4 _______3
      |     |
      |     |
    5  *   *  2
         *
         1 <===== the original point

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

   \fiveunitv[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
           {n+}       :  plus at the n-nitrogen atom (n = 1 to 5)

The ATOMLIST argument contains one or more heteroatom descriptors which are separated from each other by a semicolon. Each heteroatom descriptor consists of a locant number and a heteroatom, where these are separated with a double equality symbol.

     ATOMLIST: list of heteroatoms (max 5 atoms)
       for n = 1 to 5
           n          : Hetero atom, e.g. N, O, etc. at n-position
                        e.g. 1==N for N at 1-position

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

     SUBSLIST: list of substituents
       for n = 1 to 5
           nD         :  exocyclic double bond at n-atom
           n or nS    :  exocyclic single bond at n-atom
           nA         :  alpha single bond at n-atom
           nB         :  beta single bond at n-atom
           nSA        :  alpha single bond at n-atom (boldface)
           nSB        :  beta single bond at n-atom (dotted line)
           nSa        :  alpha (not specified) single bond at n-atom

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

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

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

\fiveunitv \@fiveunitv
3361 \def\fiveunitv{\@ifnextchar[{\@fiveunitv[@}{\@fiveunitv[r]}}
3362 \def\@fiveunitv[#1]#2#3#4{\fiveheterov[#1]{#2}{#3}[#4]}
(Old definition)
% \begin{macro}{\fiveunitv}
% \begin{macro}{\@fiveunitv}
%    \begin{macrocode}
\def\fiveunitv{\@ifnextchar[{\@fiveunitv}{\@fiveunitv[r]}}

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

%\fi%
%\ifx#4e\relax\else%
% \skbondd%bond between 1 and 5
%\fi%
%\ifx#4b\relax\else%
%  \skbondb%bond between 2 to 3
%\fi%
%\ifx#4d\relax\else%
% \skbonde%bond between 5 and 4
%\fi%
%\ifx#4c\relax\else%
% \skbondhoriz%bond between 4 and 3
%\fi%
%    \end{macrocode}
%
%    \begin{macrocode}
% %%%%%%%%%%%%%%%%%%%%%%
% %% inner double bond %
% %%%%%%%%%%%%%%%%%%%%%%
\@tfor\member:=#1\do{%
\if\member r%
\else\if\member a\relax%
 \ifx#4a\relax\else%
   \bondc%
 \fi%
\else\if\member b\relax%
 \ifx#4b\relax\else%
  \bondb%
 \fi%
\else\if\member c\relax%
 \ifx#4c\relax\else%
   \bondhoriz%
 \fi%
\else\if\member d\relax%
 \ifx#4d\relax\else%
  \bonde%
 \fi%
\else\if\member e\relax%
 \ifx#4e\relax\else%
  \bondd%
 \fi%
\else \expandafter\twoch@@r\member{}{}%     %plus or minus charges
      \if\@@tmpa 1\relax%
        \putratom{-38}{68}{\@@tmpb}%        % right type
      \else\if\@@tmpa 2\relax%
        \putratom{60}{120}{\@@tmpb}%        % right type
      \else\if\@@tmpa 3\relax%
        \putratom{60}{233}{\@@tmpb}%        % right type
      \else\if\@@tmpa 4\relax%
        \putratom{-60}{233}{\@@tmpb}%       % right type

      \else\if\@@tmpa 5\relax%
        \putratom{-60}{120}{\@@tmpb}%       % right type
      \fi\fi\fi\fi\fi%
\fi\fi\fi\fi\fi\fi}%
%    \end{macrocode}
%
%    \begin{macrocode}
% %%%%%%%%%%%%%%%%%%%%%%%
% % setting heteroatoms %
% %%%%%%%%%%%%%%%%%%%%%%%
\ifx\ddd\empty\else%
   \@cliptrue%
   \putratom{-31}{-10}{\ddd}%    % right type at 1
\fi%
\ifx\bbb\empty\else%
     \@bcliptrue%
     \putratom{135}{280}{\bbb}%  % right type at 3
\fi%
\ifx\fff\empty\else%
     \@fcliptrue%
     \putlatom{-135}{280}{\fff}% % left type at 4
\fi%
\ifx\ccc\empty\else%
     \@ccliptrue%
     \putratom{135}{65}{\ccc}%   % right type at 2
\fi%
\ifx\eee\empty\else%
     \@ecliptrue%
     \putlatom{-135}{65}{\eee}%  % left type at 5
\fi%
%    \end{macrocode}
%
%    \begin{macrocode}
% %%%%%%%%%%%%%%%%%%%%%%%%
% % setting substituents %
% %%%%%%%%%%%%%%%%%%%%%%%%
\setsixringv{#3}{5}{1}{5}{-1}%   % for 1 to 3
\setsixringv{#3}{10}{4}{7}{-1}%  % for 4 to 5
\end{picture}\iniatom\iniflag}%end of \fiveunitv macro
%    \end{macrocode}
% \end{macro}
% \end{macro}

10.2.2 Inverse vertical type

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

The macro \fiveunitvi 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               *
 *  (vertical type, inverse type)   *
 ************************************
          1
          *
     6  *   *  2
       |     |
       |_____|
     4         3
          *
        (0,0) <===== the original point

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

as well as an optional argument BONDLIST.

   \fiveunitvi[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
           {n+}       :  plus at the n-nitrogen atom (n = 1 to 5)

The ATOMLIST argument contains one or more heteroatom descriptors which are separated from each other by a semicolon. Each heteroatom descriptor consists of a locant number and a heteroatom, where these are separated with a double equality symbol.

     ATOMLIST: list of heteroatoms (max 5 atoms)
       for n = 1 to 5
           n          : Hetero atom, e.g. N, O, etc. at n-position
                        e.g. 1==N for N at 1-position

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

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

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

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

1. treatment of atom list,

2. placing outer skeletons, 4. setting hetero atoms, and

5. placing substituents by using \setsixringv partially.

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

\if\memBer c\relax\gdef\@ccc{}\fi%
\if\memBer d\relax\gdef\@ddd{}\fi%
\if\memBer e\relax\gdef\@eee{}\fi%
%\if\memBer f\relax\gdef\@fff{}\fi%
}%
\if\@aaa a\relax\skbonda\fi% bond between 1 and 2
\if\@bbb b\relax\skbondb\fi% bond between 2 and 3
\if\@ccc c\relax\skbondhorizi\fi% bond between 3 and 4
\if\@ddd d\relax\skbonde\fi% bond between 4 and 5
\if\@eee e\relax\skbondf\fi% bond between 5 and 6
%\if\@fff f\relax\skbondf\fi% bond between 6 and 1
}%
%    \end{macrocode}
%
%    \begin{macrocode}
% %%%%%%%%%%%%%%%%%%%%%
% % inner double bond %
% %%%%%%%%%%%%%%%%%%%%%
\@tfor\member:=#1\do{%
\if\member r%
\else\if\member a\relax%
 \ifx#4a\relax\else%
   \bonda%
 \fi%
\else\if\member b\relax%
 \ifx#4b\relax\else%
  \bondb%
 \fi%
\else\if\member c\relax%
 \ifx#4c\relax\else%
   \bondhorizi%
 \fi%
\else\if\member d\relax%
 \ifx#4d\relax\else%
  \bonde%
 \fi%
\else\if\member e\relax%
 \ifx#4e\relax\else%
  \bondf%
 \fi%
\else \expandafter\twoch@@r\member{}{}%     %plus or minus charges
      \if\@@tmpa 1\relax%
        \putratom{-38}{282}{\@@tmpb}%      % right type
      \else\if\@@tmpa 2\relax%
        \putratom{60}{233}{\@@tmpb}%        % right type
      \else\if\@@tmpa 3\relax%
        \putratom{60}{120}{\@@tmpb}%        % right type
      \else\if\@@tmpa 4\relax%
        \putratom{-60}{120}{\@@tmpb}%       % right type
      \else\if\@@tmpa 5\relax%

        \putratom{-60}{233}{\@@tmpb}%       % right type
      \fi\fi\fi\fi\fi%
\fi\fi\fi\fi\fi\fi}%
%    \end{macrocode}
%
%    \begin{macrocode}
% %%%%%%%%%%%%%%%%%%%%%%%
% % setting heteroatoms %
% %%%%%%%%%%%%%%%%%%%%%%%
\ifx\aaa\empty\else%
     \@acliptrue%
     \putratom{-31}{356}{\aaa}%  % right type  at 1
\fi%
\ifx\bbb\empty\else%
     \@bcliptrue%
     \putratom{135}{280}{\bbb}%  % right type at 3
\fi%
\ifx\fff\empty\else%
     \@fcliptrue%
     \putlatom{-135}{280}{\fff}% % left type at 4
\fi%
\ifx\ccc\empty\else%
     \@ccliptrue%
     \putratom{135}{65}{\ccc}%   % right type at 2
\fi%
\ifx\eee\empty\else%
     \@ecliptrue%
     \putlatom{-135}{65}{\eee}%  % left type at 5
\fi%
%    \end{macrocode}
%
%    \begin{macrocode}
% %%%%%%%%%%%%%%%%%%%%%%%%
% % setting substituents %
% %%%%%%%%%%%%%%%%%%%%%%%%
\setsixringv{#3}{0}{0}{4}{0}%  % for 1 to 3
\setsixringv{#3}{1}{4}{7}{0}%  % for 4 to 5
\end{picture}\iniatom\iniflag}%               %end of \fiveunitvi macro
%    \end{macrocode}
% \end{macro}
% \end{macro}

11 Four-membered heterocycles

11.1 Horizontal bonds

\bondshoriz
3365 % %%%%%%%%%%%%%%%%%%%

3366 % % horizontal bond %
3367 % %%%%%%%%%%%%%%%%%%%
3368 % horizontal inner bond for four-membered rings
3369 \def\bondshoriz{%
3370 \begin{picture}(200,300)(0,0)
3371 \ifx\fff\empty%
3372  \ifx\bbb\empty%
3373  \put(-138,270){\line(1,0){134}}%double bond 4-3
3374  \else%
3375  \put(-138,270){\line(1,0){115}}%double bond 4-3
3376  \fi%
3377 \else%
3378  \ifx\bbb\empty%
3379  \put(-120,270){\line(1,0){115}}%double bond 4-3
3380  \else%
3381  \put(-120,270){\line(1,0){96}}%double bond 4-3
3382  \fi%
3383 \fi\end{picture}}%
3384 % horizontal inner bond for four-membered rings (inverse type)
3385 \def\bondshorizi{%
3386 \begin{picture}(200,300)(0,0)
3387 \ifx\eee\empty%
3388  \ifx\ccc\empty%
3389  \put(-138,136){\line(1,0){134}}%double bond 4-3
3390  \else%%
3391  \put(-138,136){\line(1,0){115}}%double bond 4-3
3392  \fi%
3393 \else%
3394  \ifx\ccc\empty%
3395  \put(-120,136){\line(1,0){115}}%double bond 4-3
3396  \else%
3397  \put(-120,136){\line(1,0){96}}%double bond 4-3
3398  \fi%
3399 \fi\end{picture}}%
\skbondshoriz
3400 %horizontal bond for four-membered rings
3401 \def\skbondshoriz{%
3402 \begin{picture}(200,300)(0,0)
3403 \ifx\fff\empty%
3404  \ifx\bbb\empty%
3405  \put(-171,303){\line(1,0){200}}%bond 4-3
3406  \else%
3407  \put(-171,303){\line(1,0){158}}%bond 4-3
3408  \fi%
3409 \else%
3410  \ifx\bbb\empty%
3411  \put(29,303){\line(-1,0){158}}%bond 4-3
3412  \else%
3413  \put(-129,303){\line(1,0){116}}%bond 4-3

3414  \fi%
3415 \fi\end{picture}}%
\skbondshorizi
3416 %horizontal bond for four-membered rings (inverse type)
3417 \def\skbondshorizi{%
3418 \begin{picture}(200,300)(0,0)
3419 \ifx\eee\empty%
3420  \ifx\ccc\empty%
3421  \put(-171,103){\line(1,0){200}}%bond 4-3
3422  \else%
3423  \put(-171,103){\line(1,0){158}}%bond 4-3
3424  \fi%
3425 \else%
3426  \ifx\ccc\empty%
3427  \put(29,103){\line(-1,0){158}}%bond 4-3
3428  \else%
3429  \put(-129,103){\line(1,0){116}}%bond 4-3
3430  \fi%
3431 \fi\end{picture}}%
\dotskbondshoriz
3432 %horizontal bond for four-membered rings
3433 \def\dotskbondshoriz{%
3434 \begin{picture}(200,300)(0,0)
3435 \ifx\fff\empty%
3436  \ifx\bbb\empty%
3437  \@ifundefined{dottedline}{%
3438  \put(-171,303){\line(1,0){200}}%bond 4-3
3439  }{{\thicklines%
3440  \dottedline{20}(-171,303)(29,303)}}%
3441  \else%
3442  \@ifundefined{dottedline}{%
3443  \put(-171,303){\line(1,0){158}}%bond 4-3
3444  }{{\thicklines%
3445  \dottedline{20}(-171,303)(-29,303)}}%
3446  \fi%
3447 \else%
3448  \ifx\bbb\empty%
3449  \@ifundefined{dottedline}{%
3450  \put(29,303){\line(-1,0){158}}%bond 4-3
3451  }{{\thicklines%
3452  \dottedline{20}(29,303)(-129,303)}}%
3453  \else%
3454  \@ifundefined{dottedline}{%
3455  \put(-129,303){\line(1,0){116}}%bond 4-3
3456  }{{\thicklines%
3457  \dottedline{20}(-129,303)(-13,303)}}%
3458  \fi%
3459 \fi\end{picture}}%

\dotskbondshorizi
3460 %horizontal bond for four-membered rings (inverse type)
3461 \def\dotskbondshorizi{%
3462 \begin{picture}(200,300)(0,0)
3463 \ifx\eee\empty%
3464  \ifx\ccc\empty%
3465  \@ifundefined{dottedline}{%
3466  \put(-171,103){\line(1,0){200}}%bond 4-3
3467  }{{\thicklines%
3468  \dottedline{20}(-171,103)(29,103)}}%
3469  \else%
3470  \@ifundefined{dottedline}{%
3471  \put(-171,103){\line(1,0){158}}%bond 4-3
3472  }{{\thicklines%
3473  \dottedline{20}(-171,103)(-29,103)}}%
3474  \fi%
3475 \else%
3476  \ifx\ccc\empty%
3477  \@ifundefined{dottedline}{%
3478  \put(29,103){\line(-1,0){158}}%bond 4-3
3479  }{{\thicklines%
3480  \dottedline{20}(29,103)(-129,103)}}%
3481  \else%
3482  \@ifundefined{dottedline}{%
3483  \put(-129,103){\line(1,0){116}}%bond 4-3
3484  }{{\thicklines%
3485  \dottedline{20}(-129,103)(-13,103)}}%
3486  \fi%
3487 \fi\end{picture}}%

11.2 Drawing four-membered heterocycles

The macro \fourhetero typesets a four-membered ring. The following numbering is adopted in this macro.

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

The macro \fourhetero 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.

   \fourhetero(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 ‘d’ and a uppercase character ‘A’ or ‘B’.

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

     BONDLIST: list of inner double bonds
           a          :  1,2-double bond
           b          :  2,3-double bond
           c          :  4,3-double bond
           e          :  4,1-double bond
           {n+}       :  plus at the n-nitrogen atom (n = 1 to 4)

The ATOMLIST argument contains one or more heteroatom descriptors which are separated from each other by a semicolon. Each heteroatom descriptor consists of a locant number and a heteroatom, where these are separated with a double equality symbol.

     ATOMLIST: list of heteroatoms (max 4 atoms)
       for n = 1 to 4
           n          : Hetero atom, e.g. N, O, etc. at n-position
                        e.g. 1==N for N at 1-position

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

     SUBSLIST: list of substituents
       for n = 1 to 4
           nD         :  exocyclic double bond at n-atom
           n or nS    :  exocyclic single bond at n-atom

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

The argument 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 d: see BONDLIST)

Several examples are shown as follows.

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

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

\fourhetero
\@four@hetero
\@four@@hetero
\@fourhetero

3488 \def\fourhetero{\@ifnextchar({\@four@hetero(@}{\@four@hetero(@)}}

3489 \def\@four@hetero(#1){\@ifnextchar[{\@four@@hetero(#1)[@}%
3490 {\@four@@hetero(#1)[@]}}
3491 \def\@four@@hetero(#1)[#2]#3#4{\@ifnextchar[%
3492 {\@fourhetero(#1)[#2]{#3}{#4}[@}%
3493 {\@fourhetero(#1)[#2]{#3}{#4}[@]}}
3494 \def\@fourhetero(#1)[#2]#3#4[#5]{%
3495 % %%%%%%%%%%%%%%%%%%%%%%%%%%
3496 % % treatment of atom list %
3497 % %%%%%%%%%%%%%%%%%%%%%%%%%%
3498 \iniatom\iniflag%initialize
3499 \test@vertix@sixv{#3}{e}{c}{b}{f}{@}{@}%
3500 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3501 % % adustment of subs positions %
3502 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3503 \@reset@ylsw%
3504 \ylposition{#4}{5}{1}{4}{-1}% for 2 to 3
3505 \if@ylsw \ifx\@@ylii\empty
3506 \def\@@ylii{142}\def\@@yli{0}\fi
3507 \else
3508 \ylposition{#4}{4}{4}{6}{0}% for 1

3509 \fi

3510 \if@ylsw \ifx\@@ylii\empty
3511 \def\@@ylii{0}\def\@@yli{0}\fi
3512 \else
3513 \ylposition{#4}{2}{5}{7}{0}% for 4

3514 \fi

3515 \if@ylsw \ifx\@@ylii\empty
3516 \def\@@ylii{0}\def\@@yli{0}\fi

3517 \fi

3518 \if@ylsw
3519 \yl@shiftii=\@ylii
3520 \yl@shifti=\@yli
3521 \advance\yl@shiftii\@@ylii
3522 \advance\yl@shifti\@@yli
3523 \advance\yl@shiftii\yl@xdiff
3524 \advance\yl@shifti\yl@ydiff
3525 \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
3526 \reset@yl@xydiff%1999/1/6 by S. Fujita
3527 \else

3528 %

3529 %\begin{picture}(800,880)(-\shiftii,-\shifti)%
3530 %  \iforigpt\put(-\shiftii,-\shifti){\circle*{50}}%
3531 %           \put(-\noshift,-\noshift){\circle{50}}%
3532 %   \typeout{command `fourhetero' origin: %
3533 %    (\the\noshift,\the\noshift) ---> (\the\shiftii,\the\shifti)}\fi%
3534 % Correction of the zero point: S. Fujita 1993/11/19
3535 %   x axis: 400 + 171 = 571
3536 %   y axis: 240 - 103 = 137

3537 %

3538 \begin{picture}(800,880)(-571,-137)%
3539 \iforigpt\put(-571,-137){\circle*{50}}%
3540  \put(-171,103){\circle{50}}%
3541 \typeout{command `fourhetero' origin: %
3542  (\the\noshift,\the\noshift) ---> (\the\shiftii,\the\shifti)}\fi%

3543 \fi

3544 % %%%%%%%%%%%%%%%%%%
3545 % % outer skeleton %
3546 % %%%%%%%%%%%%%%%%%%
3547 {\resetbdsw%
3548 \@bond@@omit{#5}%
3549 \put(0,0){\set@skel@longbond{#1}{a}{skbondshorizi}}%
3550  % bond between 1 and 2 \@aaa -> \skbondshorizi etc
3551 \put(-142,0){\set@skel@bond{#1}{b}{b}}%
3552  % bond between 2 and 3 \@bbb -> \skbondb etc
3553 \put(0,0){\set@skel@longbond{#1}{c}{skbondshoriz}}%
3554  % bond between 3 and 4 \@ccc -> \skbondshoriz etc
3555 \put(0,0){\set@skel@bond{#1}{d}{e}}%
3556  % bond between 4 and 1 \@ddd -> \skbonde etc

3557 }%

3558 % %%%%%%%%%%%%%%%%%%%%%
3559 % % inner double bond %
3560 % %%%%%%%%%%%%%%%%%%%%%
3561 \@tfor\member:=#2\do{%
3562 \if\member r%
3563 \else\if\member a\relax \put(0,0){\bondshorizi}%
3564 \else\if\member b\relax \put(-142,0){\bondb}%
3565 \else\if\member c\relax \put(0,0){\bondshoriz}%
3566 \else\if\member d\relax \put(0,0){\bonde}%
3567 \else
3568 % %%%%%%%%%%%%%%%%%%%%%%%%%
3569 % % inner bond attachment %
3570 % %%%%%%%%%%%%%%%%%%%%%%%%%
3571 \expandafter\twoCH@@R\member//%
3572  \set@fusionadd@fourv
3573 \fi\fi\fi\fi\fi}%
3574 % %%%%%%%%%%%%%%%%%%%%%%%
3575 % % setting heteroatoms %
3576 % %%%%%%%%%%%%%%%%%%%%%%%
3577 \put(-142,0){\set@hetatom@sixv{#3}{5}{1}{4}{-1}}% for 2 to 3
3578 \put(0,0){\set@hetatom@sixv{#3}{4}{4}{6}{0}}% for 1
3579 \put(0,0){\set@hetatom@sixv{#3}{2}{5}{7}{0}}% for 4
3580 % %%%%%%%%%%%%%%%%%%%%%%%%
3581 % % setting substituents %
3582 % %%%%%%%%%%%%%%%%%%%%%%%%
3583 \put(-142,0){\setsixringv{#4}{5}{1}{4}{-1}}% for 2 to 3
3584 \put(0,0){\setsixringv{#4}{4}{4}{6}{0}}% for 1
3585 \put(0,0){\setsixringv{#4}{2}{5}{7}{0}}% for 4

3586 \end{picture}\iniatom\iniflag}%     %end of \fourhetero macro

The macro \set@fusionadd@fourv is an inner command contained in the definition of \fourhetero 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@fourv.
\set@fusionadd@fourv
3587 \def\set@fusionadd@fourv{%
3588  \if\@@tmpa 1\relax%
3589  \putlatom{-200}{120}{\scriptsize \@@tmpb}%       % right type
3590  \else\if\@@tmpa 2\relax%
3591  \putratom{60}{120}{\scriptsize \@@tmpb}%        % right type
3592  \else\if\@@tmpa 3\relax%
3593  \putratom{60}{233}{\scriptsize \@@tmpb}%        % right type
3594  \else\if\@@tmpa 4\relax%
3595  \putlatom{-200}{233}{\scriptsize \@@tmpb}%       % right type
3596  \else
3597 % %%%%%%%%%%%%%%%%%%%%%
3598 % % inner bond fusion %
3599 % %%%%%%%%%%%%%%%%%%%%%
3600  \set@fusion@fourv
3601  \fi\fi\fi\fi%

3602 }%

The inner command \set@fusion@fourv 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@fourv
3603 \def\set@fusion@fourv{%
3604 % %%%%%%%%%%%%%%%%%%%%%
3605 % % inner bond fusion %
3606 % %%%%%%%%%%%%%%%%%%%%%
3607 \if\@@tmpa d\relax%
3608  \putlratom{-171}{303}{\@@tmpb}%     % bond fused
3609  \FuseWarning{0}{200}%
3610  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{d}%
3611  \else\if\@@tmpa D\relax%
3612  \putlratom{-171}{103}{\@@tmpb}%     % bond fused
3613  \FuseWarning{0}{-200}%
3614  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{D}%
3615  \else\if\@@tmpa a\relax%
3616  \putlratom{-173}{103}{\@@tmpb}%     % bond fused
3617  \FuseWarning{-200}{0}%
3618  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{f}%
3619  \else\if\@@tmpa A\relax%
3620  \putlratom{27}{103}{\@@tmpb}%       % bond fused
3621  \FuseWarning{200}{0}%

3622  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}%
3623  \else\if\@@tmpa b\relax%
3624  \putlratom{27}{103}{\@@tmpb}%    % bond fused
3625  \FuseWarning{0}{-200}%
3626  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}%
3627  \else\if\@@tmpa B\relax%
3628  \putlratom{27}{303}{\@@tmpb}%    % bond fused
3629  \FuseWarning{0}{200}%
3630  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}%
3631  \else\if\@@tmpa c\relax%
3632  \putlratom{27}{303}{\@@tmpb}%    % bond fused
3633  \FuseWarning{200}{0}%
3634  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c}%
3635  \else\if\@@tmpa C\relax%
3636  \putlratom{-171}{303}{\@@tmpb}%      % bond fused
3637  \FuseWarning{-200}{0}%
3638  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C}%
3639 \fi\fi\fi\fi\fi\fi\fi\fi%
3640 }% end of the macro \set@fusion@fourv

12 Three-membered heterocycles

12.1 Vertical type

12.1.1 Sloped bonds

\bondtria
3641 % **********************
3642 % * bonds for triangle *
3643 % **********************
3644 % fff 3--------2bbb

3645 % ` /

3646 %   ddd  `1/ <===== the original point
3647 % bond between 1 and 2
3648 \def\bondtria{%
3649 \ifx\ddd\empty%
3650 \ifx\bbb\empty%
3651  \put(-6,42){\line(3,5){72}}%           %double bond 1-2
3652 \else%
3653  \put(-6,42){\line(3,5){60}}%           %double bond 1-2
3654 \fi%
3655 \else%
3656 \ifx\bbb\empty%
3657  \put(6,62){\line(3,5){60}}%            %double bond 1-2
3658 \else%
3659  \put(10,32){\line(3,5){60}}%           %double bond 1-2
3660 \fi%
3661 \fi%

3662 }%

\bondtrib
3663 % bond between 1 and 3
3664 \def\bondtrib{%
3665 \ifx\ddd\empty%
3666 \ifx\fff\empty%
3667  \put(6,42){\line(-3,5){72}}%           %double bond 1-3
3668 \else%
3669  \put(6,42){\line(-3,5){60}}%           %double bond 1-3
3670 \fi%
3671 \else%
3672 \ifx\fff\empty%
3673  \put(-6,62){\line(-3,5){60}}%          %double bond 1-2
3674 \else%
3675  \put(6,42){\line(-3,5){60}}%           %double bond 1-2
3676 \fi%
3677 \fi%

3678 }%

\skbondtria
3679 %bond between 1 and 2
3680 \def\skbondtria{%
3681 \begin{picture}(200,200)(0,0)
3682 \ifx\ddd\empty%
3683  \ifx\bbb\empty%
3684  \put(0,0){\line(3,5){103}}%           %bond 1-2
3685  \else%
3686  \put(0,0){\line(3,5){80}}%            %bond 1-2
3687  \fi%
3688 \else%
3689  \ifx\bbb\empty%
3690  \put(103,171){\line(-3,-5){80}}%      %bond 1-2
3691  \else%
3692  \put(35,21){\line(3,5){60}}%          %bond 1-2
3693  \fi%
3694 \fi\end{picture}}%
\skbondtrib
3695 %bond between 1 and 3
3696 \def\skbondtrib{%
3697 \begin{picture}(200,200)(0,0)
3698 \ifx\ddd\empty%
3699  \ifx\fff\empty%
3700  \put(0,0){\line(-3,5){103}}%         %bond 1-3
3701  \else%
3702  \put(0,0){\line(-3,5){80}}%          %bond 1-3
3703  \fi%
3704 \else%
3705 %    \ifx\eee\empty%bug fix 1993/11/19
3706  \ifx\fff\empty%

3707  \put(-103,171){\line(3,-5){80}}%     %bond 1-3
3708  \else%
3709  \put(-35,21){\line(-3,5){60}}%       %bond 1-3
3710  \fi%
3711 \fi\end{picture}}%
\dotskbondtria
3712 %bond between 1 and 2
3713 \def\dotskbondtria{%
3714 \begin{picture}(200,200)(0,0)
3715 \ifx\ddd\empty%
3716  \ifx\bbb\empty%
3717  \@ifundefined{dottedline}{%
3718  \put(0,0){\line(3,5){103}}%           %bond 1-2
3719  }{{\thicklines%
3720  \dottedline{20}(0,0)(103,171)}}%
3721  \else%
3722  \@ifundefined{dottedline}{%
3723  \put(0,0){\line(3,5){80}}%            %bond 1-2
3724  }{{\thicklines%
3725  \dottedline{20}(0,0)(80,133)}}%
3726  \fi%
3727 \else%
3728  \ifx\bbb\empty%
3729  \@ifundefined{dottedline}{%
3730  \put(103,171){\line(-3,-5){80}}%      %bond 1-2
3731  }{{\thicklines%
3732 %              \dottedline{20}(0,0)(23,38)}}%
3733  \dottedline{20}(103,171)(23,38)}}%
3734  \else%
3735  \@ifundefined{dottedline}{%
3736  \put(35,21){\line(3,5){60}}%          %bond 1-2
3737  }{{\thicklines%
3738  \dottedline{20}(35,21)(95,121)}}%
3739  \fi%
3740 \fi\end{picture}}%
\dotskbondtrib
3741 %bond between 1 and 3
3742 \def\dotskbondtrib{%
3743 \begin{picture}(200,200)(0,0)
3744 \ifx\ddd\empty%
3745  \ifx\fff\empty%
3746  \@ifundefined{dottedline}{%
3747  \put(0,0){\line(-3,5){103}}%         %bond 1-3
3748  }{{\thicklines%
3749  \dottedline{20}(0,0)(-103,171)}}%
3750  \else%
3751  \@ifundefined{dottedline}{%
3752  \put(0,0){\line(-3,5){80}}%          %bond 1-3

3753  }{{\thicklines%
3754  \dottedline{20}(0,0)(-80,133)}}%
3755  \fi%
3756 \else%
3757  \ifx\fff\empty%
3758  \@ifundefined{dottedline}{%
3759  \put(-103,171){\line(3,-5){80}}%     %bond 1-3
3760  }{{\thicklines%
3761  \dottedline{20}(-103,171)(-23,38)}}%
3762  \else%
3763  \@ifundefined{dottedline}{%
3764  \put(-35,21){\line(-3,5){60}}%       %bond 1-3
3765  }{{\thicklines%
3766  \dottedline{20}(-35,21)(-95,121)}}%
3767  \fi%
3768 \fi\end{picture}}%

12.1.2 Drawing three-membered heterocycles

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

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

The macro \threehetero 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.

   \threehetero(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT]
   \threeheterov(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.
          \threehetero{1==N}{1==Cl;2==F}
          \threehetero[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
          \threehetero{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl}

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

\threehetero
\@three@hetero
\@three@@hetero
\@threehetero

3769 \def\threehetero{\@ifnextchar({\@three@hetero(@}{\@three@hetero(@)}}
3770 \def\@three@hetero(#1){\@ifnextchar[{\@three@@hetero(#1)[@}%
3771 {\@three@@hetero(#1)[@]}}
3772 \def\@three@@hetero(#1)[#2]#3#4{\@ifnextchar[%
3773 {\@threehetero(#1)[#2]{#3}{#4}[@}%
3774 {\@threehetero(#1)[#2]{#3}{#4}[@]}}
3775 \def\@threehetero(#1)[#2]#3#4[#5]{%

3776 % %%%%%%%%%%%%%%%%%%%%%%%%%%
3777 % % treatment of atom list %
3778 % %%%%%%%%%%%%%%%%%%%%%%%%%%
3779 \iniatom\iniflag%initialize
3780 \test@vertix@sixv{#3}{d}{b}{f}{@}{@}{@}%
3781 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3782 % % adustment of subs positions %
3783 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3784 \@reset@ylsw%
3785 \ylposition{#4}{3}{3}{5}{0}%subst 1
3786 \if@ylsw \ifx\@@ylii\empty
3787 \def\@@ylii{68}\def\@@yli{0}\fi
3788 \else
3789 \ylposition{#4}{0}{1}{3}{0}%subst 2

3790 \fi

3791 \if@ylsw \ifx\@@ylii\empty
3792 \def\@@ylii{142}\def\@@yli{132}\fi
3793 \else
3794 \ylposition{#4}{3}{5}{7}{0}%subst 3

3795 \fi

3796 \if@ylsw \ifx\@@ylii\empty
3797 \def\@@ylii{0}\def\@@yli{132}\fi

3798 \fi

3799 \if@ylsw
3800 \yl@shiftii=\@ylii
3801 \yl@shifti=\@yli
3802 \advance\yl@shiftii\@@ylii
3803 \advance\yl@shifti\@@yli
3804 \advance\yl@shiftii\yl@xdiff
3805 \advance\yl@shifti\yl@ydiff
3806 \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
3807 \reset@yl@xydiff%1999/1/6 by S. Fujita
3808 \else

3809 %

3810 %\begin{picture}(800,880)(-\shiftii,-\shifti)%
3811 %  \iforigpt \put(-\shiftii,-\shifti){\circle*{50}}%
3812 %           \put(-\noshift,-\noshift){\circle{50}}%
3813 %  adjust x,y-coodinate by S. Fujita 1993/11/20
3814 \begin{picture}(800,580)(-468,-240)%
3815 \iforigpt \put(-468,-240){\circle*{50}}%
3816  \put(-68,0){\circle{50}}%
3817 \typeout{command `threeheterov' origin: %
3818  (68,0) ---> (468,240)}\fi%

3819 \fi

3820 % %%%%%%%%%%%%%%%%%%
3821 % % outer skeleton %
3822 % %%%%%%%%%%%%%%%%%%
3823 {\resetbdsw%
3824 \@bond@@omit{#5}%

3825 \put(-68,0){\set@skel@longbond{#1}{a}{skbondtria}}%
3826  % bond between 1 and 2 \@aaa -> \skbondtria etc
3827 \put(0,-132){\set@skel@longbond{#1}{b}{skbondshoriz}}%
3828  % bond between 2 and 3 \@bbb -> \skbondb etc
3829 \put(-68,0){\set@skel@longbond{#1}{c}{skbondtrib}}%
3830  % bond between 3 and 1 \@ccc -> \skbondtria etc

3831 }%

3832 % %%%%%%%%%%%%%%%%%%%%%
3833 % % inner double bond %
3834 % %%%%%%%%%%%%%%%%%%%%%
3835 \@tfor\member:=#2\do{%
3836 \if\member r\relax%
3837 \else\if\member a\relax\put(-68,0){\bondtria}%
3838 \else\if\member b\relax\put(0,-126){\bondshoriz}%
3839 \else\if\member c\relax\put(-68,0){\bondtrib}%
3840 \else\if\member A\relax% aromatic circle
3841 \put(-70,108){\circle{100}}%               %circle
3842 \else
3843 % %%%%%%%%%%%%%%%%%%%%%%%%%
3844 % % inner bond attachment %
3845 % %%%%%%%%%%%%%%%%%%%%%%%%%
3846 \expandafter\twoCH@@R\member//%
3847  \set@fusionadd@threev
3848 \fi\fi\fi\fi\fi%

3849 }%

3850 % %%%%%%%%%%%%%%%%%%%%%%%%
3851 % % setting hetero atoms %
3852 % %%%%%%%%%%%%%%%%%%%%%%%%
3853 \put(-68,0){\set@hetatom@sixv{#3}{3}{3}{5}{0}%
3854 \if@clip\global\@cliptrue\fi
3855 }%subst 1
3856 \put(-142,-132){\set@hetatom@sixv{#3}{0}{1}{3}{0}%
3857 \if@bclip\global\@bcliptrue\fi
3858 }%subst 2
3859 \put(0,-132){\set@hetatom@sixv{#3}{3}{5}{7}{0}%
3860 \if@fclip\global\@fcliptrue\fi
3861 }%subst 3
3862 % %%%%%%%%%%%%%%%%%%%%%%%%
3863 % % setting substituents %
3864 % %%%%%%%%%%%%%%%%%%%%%%%%
3865 \put(-68,0){\setsixringv{#4}{3}{3}{5}{0}}%subst 1
3866 \put(-142,-132){\setsixringv{#4}{0}{1}{3}{0}}%subst 2
3867 \put(0,-132){\setsixringv{#4}{3}{5}{7}{0}}%subst 3
3868 \end{picture}%
3869 \iniatom\iniflag}%     %end of \threehetero macro
\threeheterov
3870 \let\threeheterov=\threehetero

The macro \set@fusionadd@threev is an inner command contained in the definition of \threehetero 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@threev.
\set@fusionadd@threev
3871 \def\set@fusionadd@threev{%
3872  \if\@@tmpa 0\relax%
3873  \putratom{-94}{92}{\scriptsize\@@tmpb}%      % right type
3874  \else\if\@@tmpa 1\relax%
3875  \putratom{-94}{60}{\scriptsize\@@tmpb}%      % right type
3876  \else\if\@@tmpa 2\relax%
3877  \putratom{-52}{120}{\scriptsize\@@tmpb}%     % right type
3878  \else\if\@@tmpa 3\relax%
3879  \putratom{-126}{126}{\scriptsize\@@tmpb}%    % right type
3880  \else\if\@@tmpa 4\relax%
3881  \putratom{-30}{-20}{\scriptsize\@@tmpb}%      % right type
3882  \else\if\@@tmpa 5\relax%
3883  \putratom{52}{110}{\scriptsize\@@tmpb}%      % right type
3884  \else\if\@@tmpa 6\relax%
3885  \putratom{-250}{110}{\scriptsize\@@tmpb}%    % right type
3886  \else
3887 % %%%%%%%%%%%%%%%%%%%%%
3888 % % inner bond fusion %
3889 % %%%%%%%%%%%%%%%%%%%%%
3890  \set@fusion@threev
3891  \fi\fi\fi\fi\fi\fi\fi%

3892 }%

The inner command \set@fusion@threev 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@threev
3893 \def\set@fusion@threev{%
3894 % %%%%%%%%%%%%%%%%%%%%%
3895 % % inner bond fusion %
3896 % %%%%%%%%%%%%%%%%%%%%%
3897 \if\@@tmpa b\relax%
3898  \putlratom{29}{171}{\@@tmpb}%    % bond fused
3899  \FuseWarning{200}{0}%
3900  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}%
3901  \else\if\@@tmpa B\relax%
3902  \putlratom{-171}{171}{\@@tmpb}%      % bond fused
3903  \FuseWarning{-200}{0}%
3904  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}%
3905  \else\if\@@tmpa a\relax%
3906  \putlratom{-68}{0}{\@@tmpb}%    % bond fused
3907  \FuseWarning{-103}{-171}%

3908  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}%
3909  \else\if\@@tmpa A\relax%
3910  \putlratom{29}{171}{\@@tmpb}%    % bond fused
3911  \FuseWarning{103}{171}%
3912  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}%
3913  \else\if\@@tmpa c\relax%
3914  \putlratom{-171}{171}{\@@tmpb}%      % bond fused
3915  \FuseWarning{-103}{171}%
3916  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c}%
3917  \else\if\@@tmpa C\relax%
3918  \putlratom{-68}{0}{\@@tmpb}%    % bond fused
3919  \FuseWarning{103}{-171}%
3920  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C}%
3921 \fi\fi\fi\fi\fi\fi%
3922 }% end of the macro \set@fusion@threev

12.2 Inverse vertical type

12.2.1 Sloped bonds

\Bondtria
3923 % **********************
3924 % * bonds for triangle *
3925 % **********************

3926 %

3927 %   aaa /1` <===== the original point

3928 % / `

3929 % eee 3--------2ccc
3930 % bond between 1 and 2
3931 \def\Bondtria{%
3932 \ifx\aaa\empty%
3933 \ifx\ccc\empty%
3934  \put(-6,-42){\line(3,-5){72}}%           %double bond 1-2
3935 \else%
3936  \put(-6,-42){\line(3,-5){60}}%           %double bond 1-2
3937 \fi%
3938 \else%
3939 \ifx\ccc\empty%
3940  \put(6,-62){\line(3,-5){60}}%            %double bond 1-2
3941 \else%
3942  \put(10,-32){\line(3,-5){60}}%           %double bond 1-2
3943 \fi%
3944 \fi%

3945 }%

\Bondtrib
3946 % bond between 1 and 3
3947 \def\Bondtrib{%
3948 \ifx\aaa\empty%

3949 \ifx\eee\empty%
3950  \put(6,-42){\line(-3,-5){72}}%           %double bond 1-3
3951 \else%
3952  \put(6,-42){\line(-3,-5){60}}%           %double bond 1-3
3953 \fi%
3954 \else%
3955 \ifx\fff\empty%
3956  \put(-6,-62){\line(-3,-5){60}}%          %double bond 1-2
3957 \else%
3958  \put(6,-42){\line(-3,-5){60}}%           %double bond 1-2
3959 \fi%
3960 \fi%

3961 }%

\skBondtria
3962 %bond between 1 and 2
3963 \def\skBondtria{%
3964 % \begin{picture}(200,200)(0,0)
3965 % \begin{picture}(0,0)(0,0)
3966 \ifx\aaa\empty%
3967  \ifx\ccc\empty%
3968  \put(0,0){\line(3,-5){103}}%           %bond 1-2
3969  \else%
3970  \put(0,0){\line(3,-5){80}}%            %bond 1-2
3971  \fi%
3972 \else%
3973  \ifx\ccc\empty%
3974  \put(103,-171){\line(-3,5){80}}%      %bond 1-2
3975  \else%
3976  \put(35,-21){\line(3,-5){60}}%          %bond 1-2
3977  \fi%

3978 \fi

3979 %\end{picture}

3980 }%

\skBondtrib
3981 %bond between 1 and 3
3982 \def\skBondtrib{%
3983 % \begin{picture}(0,0)(0,0)
3984 % \begin{picture}(200,200)(0,0)
3985 \ifx\aaa\empty%
3986  \ifx\eee\empty%
3987  \put(0,0){\line(-3,-5){103}}%         %bond 1-3
3988  \else%
3989  \put(0,0){\line(-3,-5){80}}%          %bond 1-3
3990  \fi%
3991 \else%
3992  \ifx\eee\empty%
3993  \put(-103,-171){\line(3,5){80}}%     %bond 1-3
3994  \else%

3995  \put(-35,-21){\line(-3,-5){60}}%       %bond 1-3
3996  \fi%

3997 \fi

3998 %\end{picture}

3999 }%

\dotskBondtria
4000 %bond between 1 and 2
4001 \def\dotskBondtria{%
4002 \ifx\aaa\empty%
4003  \ifx\ccc\empty%
4004  \@ifundefined{dottedline}{%
4005  \put(0,0){\line(3,-5){103}}%           %bond 1-2
4006  }{{\thicklines%
4007  \dottedline{20}(0,0)(103,-171)}}%
4008  \else%
4009  \@ifundefined{dottedline}{%
4010  \put(0,0){\line(3,-5){80}}%            %bond 1-2
4011  }{{\thicklines%
4012  \dottedline{20}(0,0)(80,-133)}}%
4013  \fi%
4014 \else%
4015  \ifx\ccc\empty%
4016  \@ifundefined{dottedline}{%
4017  \put(103,-171){\line(-3,5){80}}%      %bond 1-2
4018  }{{\thicklines%
4019  \dottedline{20}(103,-171)(23,-38)}}%
4020  \else%
4021  \@ifundefined{dottedline}{%
4022  \put(35,-21){\line(3,-5){60}}%          %bond 1-2
4023  }{{\thicklines%
4024  \dottedline{20}(35,-21)(95,-121)}}%
4025  \fi%

4026 \fi 4027 }%

\dotskBondtrib
4028 %bond between 1 and 3
4029 \def\dotskBondtrib{%
4030 \ifx\aaa\empty%
4031  \ifx\eee\empty%
4032  \@ifundefined{dottedline}{%
4033  \put(0,0){\line(-3,-5){103}}%         %bond 1-3
4034  }{{\thicklines%
4035  \dottedline{20}(0,0)(-103,-171)}}%
4036  \else%
4037  \@ifundefined{dottedline}{%
4038  \put(0,0){\line(-3,-5){80}}%          %bond 1-3
4039  }{{\thicklines%
4040  \dottedline{20}(0,0)(-80,-133)}}%

4041  \fi%
4042 \else%
4043  \ifx\eee\empty%
4044  \@ifundefined{dottedline}{%
4045  \put(-103,-171){\line(3,5){80}}%     %bond 1-3
4046  }{{\thicklines%
4047  \dottedline{20}(-103,-171)(-23,-38)}}%
4048  \else%
4049  \@ifundefined{dottedline}{%
4050  \put(-35,-21){\line(-3,-5){60}}%       %bond 1-3
4051  }{{\thicklines%
4052  \dottedline{20}(-35,-21)(-95,-121)}}%
4053  \fi%

4054 \fi 4055 }%

12.2.2 Drawing three-membered heterocycles (inverse)

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

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

The macro \threeheteroi 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.

   \threeheteroi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT]
   \threeheterovi(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.

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.
          \threeheteroi{1==N}{1==Cl;2==F}
          \threeheteroi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}
          \threeheteroi{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl}

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

\threeheteroi
\@three@heteroi
\@three@@heteroi
\@threeheteroi

4056 \def\threeheteroi{\@ifnextchar({\@three@heteroi(@}{\@three@heteroi(@)}}
4057 \def\@three@heteroi(#1){\@ifnextchar[{\@three@@heteroi(#1)[@}%
4058 {\@three@@heteroi(#1)[@]}}
4059 \def\@three@@heteroi(#1)[#2]#3#4{\@ifnextchar[%
4060 {\@threeheteroi(#1)[#2]{#3}{#4}[@}%
4061 {\@threeheteroi(#1)[#2]{#3}{#4}[@]}}
4062 \def\@threeheteroi(#1)[#2]#3#4[#5]{%
4063 % %%%%%%%%%%%%%%%%%%%%%%%%%%
4064 % % treatment of atom list %
4065 % %%%%%%%%%%%%%%%%%%%%%%%%%%
4066 \iniatom\iniflag%initialize
4067 \test@vertix@sixv{#3}{a}{c}{e}{@}{@}{@}%
4068 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

4069 % % adustment of subs positions %
4070 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4071 \@reset@ylsw%
4072 \ylposition{#4}{0}{0}{2}{0}%subst 1
4073 \if@ylsw \ifx\@@ylii\empty
4074 \def\@@ylii{68}\def\@@yli{406}\fi
4075 \else
4076 \ylposition{#4}{1}{2}{4}{0}%subst 2

4077 \fi

4078 \if@ylsw \ifx\@@ylii\empty
4079 \def\@@ylii{142}\def\@@yli{275}\fi
4080 \else
4081 \ylposition{#4}{2}{4}{6}{0}%subst 3

4082 \fi

4083 \if@ylsw \ifx\@@ylii\empty
4084 \def\@@ylii{0}\def\@@yli{275}\fi

4085 \fi

4086 \if@ylsw
4087 \yl@shiftii=\@ylii
4088 \yl@shifti=\@yli
4089 \advance\yl@shiftii\@@ylii
4090 \advance\yl@shifti\@@yli
4091 \advance\yl@shiftii\yl@xdiff
4092 \advance\yl@shifti\yl@ydiff
4093 \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti)
4094 \reset@yl@xydiff%1999/1/6 by S. Fujita
4095 \else
4096 \begin{picture}(800,580)(-468,-340)%
4097 \iforigpt \put(-468,-340){\circle*{50}}%
4098  \put(-68,0){\circle{50}}%
4099 \typeout{command `threeheteroi' origin: %
4100  (0,0) ---> (-468,-340)}\fi%

4101 \fi

4102 % %%%%%%%%%%%%%%%%%%
4103 % % outer skeleton %
4104 % %%%%%%%%%%%%%%%%%%
4105 {\resetbdsw%
4106 \@bond@@omit{#5}%
4107 \put(-68,0){\set@skel@longbond{#1}{a}{skBondtria}}%
4108  % bond between 1 and 2 \@aaa -> \skBondtria etc
4109 \put(0,-275){\set@skel@longbond{#1}{b}{skbondshorizi}}%
4110  % bond between 2 and 3 \@bbb -> \skbondb etc
4111 \put(-68,0){\set@skel@longbond{#1}{c}{skBondtrib}}%
4112  % bond between 3 and 1 \@ccc -> \skBondtrib etc

4113 }%

4114 % %%%%%%%%%%%%%%%%%%%%%
4115 % % inner double bond %
4116 % %%%%%%%%%%%%%%%%%%%%%
4117 \@tfor\member:=#2\do{%

4118 \if\member r\relax%
4119 \else\if\member a\relax\put(-68,0){\Bondtria}%
4120 \else\if\member b\relax\put(0,-274){\bondshorizi}%
4121 \else\if\member c\relax\put(-68,0){\Bondtrib}%
4122 \else\if\member A\relax% aromatic circle
4123 \put(-70,-108){\circle{100}}%               %circle
4124 \else
4125 % %%%%%%%%%%%%%%%%%%%%%%%%%
4126 % % inner bond attachment %
4127 % %%%%%%%%%%%%%%%%%%%%%%%%%
4128 \expandafter\twoCH@@R\member//%
4129  \set@fusionadd@threevi
4130 \fi\fi\fi\fi\fi%

4131 }%

4132 % %%%%%%%%%%%%%%%%%%%%%%%%
4133 % % setting hetero atoms %
4134 % %%%%%%%%%%%%%%%%%%%%%%%%
4135 \put(-68,-406){\set@hetatom@sixv{#3}{0}{0}{2}{0}%
4136 \if@aclip\global\@acliptrue\fi
4137 }%subst 1
4138 \put(0,-275){\set@hetatom@sixv{#3}{2}{4}{6}{0}%
4139 \if@eclip\global\@ecliptrue\fi
4140 }%subst 3
4141 \put(-142,-275){\set@hetatom@sixv{#3}{1}{2}{4}{0}%
4142 \if@cclip\global\@ccliptrue\fi
4143 }%subst 2
4144 % %%%%%%%%%%%%%%%%%%%%%%%%
4145 % % setting substituents %
4146 % %%%%%%%%%%%%%%%%%%%%%%%%
4147 \put(-68,-406){\setsixringv{#4}{0}{0}{2}{0}}%subst 1
4148 \put(0,-275){\setsixringv{#4}{2}{4}{6}{0}}%subst 3
4149 \put(-142,-275){\setsixringv{#4}{1}{2}{4}{0}}%subst 2
4150 \end{picture}%
4151 \iniatom\iniflag}%     %end of \threeheteroi macro
\threeheterovi
4152 \let\threeheterovi=\threeheteroi

The macro \set@fusionadd@threevi is an inner command contained in the definition of \threeheteroi 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@threevi.
\set@fusionadd@threevi
4153 \def\set@fusionadd@threevi{%
4154  \if\@@tmpa 0\relax%
4155  \putratom{-94}{-120}{\scriptsize\@@tmpb}%      % right type
4156  \else\if\@@tmpa 1\relax%
4157  \putratom{-94}{-80}{\scriptsize\@@tmpb}%      % right type

4158  \else\if\@@tmpa 2\relax%
4159  \putratom{-52}{-150}{\scriptsize\@@tmpb}%     % right type
4160  \else\if\@@tmpa 3\relax%
4161  \putratom{-126}{-150}{\scriptsize\@@tmpb}%    % right type
4162  \else\if\@@tmpa 4\relax%
4163  \putratom{-30}{0}{\scriptsize\@@tmpb}%      % right type
4164  \else\if\@@tmpa 5\relax%
4165  \putratom{32}{-130}{\scriptsize\@@tmpb}%      % right type
4166  \else\if\@@tmpa 6\relax%
4167  \putratom{-230}{-130}{\scriptsize\@@tmpb}%    % right type
4168  \else
4169 % %%%%%%%%%%%%%%%%%%%%%
4170 % % inner bond fusion %
4171 % %%%%%%%%%%%%%%%%%%%%%
4172  \set@fusion@threevi
4173  \fi\fi\fi\fi\fi\fi\fi%

4174 }%

The inner command \set@fusion@threevi 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@threevi
4175 \def\set@fusion@threevi{%
4176 % %%%%%%%%%%%%%%%%%%%%%
4177 % % inner bond fusion %
4178 % %%%%%%%%%%%%%%%%%%%%%
4179 \if\@@tmpa b\relax%
4180  \putlratom{29}{-171}{\@@tmpb}%    % bond fused
4181  \FuseWarning{200}{0}%
4182  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}%
4183 \else\if\@@tmpa B\relax%
4184  \putlratom{-171}{-171}{\@@tmpb}%      % bond fused
4185  \FuseWarning{-200}{0}%
4186  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}%
4187 \else\if\@@tmpa a\relax%
4188  \putlratom{-68}{0}{\@@tmpb}%    % bond fused
4189  \FuseWarning{-103}{171}%
4190  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}%
4191 \else\if\@@tmpa A\relax%
4192  \putlratom{29}{-171}{\@@tmpb}%      % bond fused
4193  \FuseWarning{103}{-171}%
4194  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}%
4195 \else\if\@@tmpa c\relax%
4196  \putlratom{-171}{-171}{\@@tmpb}%      % bond fused
4197  \FuseWarning{103}{171}%
4198  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c}%
4199 \else\if\@@tmpa C\relax%
4200  \putlratom{-68}{0}{\@@tmpb}%    % bond fused
4201  \FuseWarning{-103}{-171}%

4202  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C}%
4203 \fi\fi\fi\fi\fi\fi%
4204 }% end of the macro \set@fusion@threevi

4205 ⟨/hetarom⟩