Heterocycles of vertical type by hetarom.sty (v4.03b) of XΥMTEX

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

2006/9/5

1 Introduction

1.1 Options for docstrip

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

1.2 Version Information

1 ⟨∗hetarom⟩

2 \typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 4.03b}
3 \typeout{       -- Released Semtember 5, 2006 by Shinsaku Fujita}
4 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5 \def\j@urnalname{hetarom}
6 \def\versi@ndate{September 5, 2006}
7 \def\versi@nno{ver4.03b}
8 \def\copyrighth@lder{SF} % Shinsaku Fujita
9 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10 \typeout{XyMTeX Macro File `\j@urnalname' (\versi@nno) <\versi@ndate>%
11 \space[\copyrighth@lder]}

2 List of commands for 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
\gggA
\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>
Basic Macros
\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\gggA{}\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@Line(6,364)(5,-3){126}%         %double bond 1-2
41 \else%
42  \Put@Line(6,364)(5,-3){100}%         %double bond 1-2
43 \fi%
44 \else%
45 \ifx\bbb\empty%
46  \Put@Line(35,340)(5,-3){100}%        %double bond 1-2
47 \else%
48  \Put@Line(35,352)(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@Line(138,129)(0,1){148}%        %double bond 3-2
57 \else%
58  \Put@Line(138,143)(0,1){134}%        %double bond 3-2
59 \fi%
60 \else%
61 \ifx\ccc\empty%
62  \Put@Line(138,129)(0,1){134}%        %double bond 3-2
63 \else%
64  \Put@Line(138,143)(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@Line(6,42)(5,3){126}%           %double bond 4-3
73 \else%
74  \Put@Line(6,42)(5,3){100}%           %double bond 4-3
75 \fi%
76 \else%
77 \ifx\ccc\empty%
78  \Put@Line(35,66)(5,3){100}%          %double bond 4-3
79 \else%
80  \Put@Line(35,60)(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@Line(-6,42)(-5,3){126}%         %double bond 4-5
89 \else%
90  \Put@Line(-6,42)(-5,3){100}%         %double bond 4-5
91 \fi%
92 \else%
93 \ifx\eee\empty%
94  \Put@Line(-35,66)(-5,3){100}%        %double bond 4-5
95 \else%
96  \Put@Line(-35,60)(-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@Line(-138,129)(0,1){148}%       %double bond 5-6
105 \else%
106  \Put@Line(-138,143)(0,1){134}%       %double bond 5-6
107 \fi%
108 \else%
109 \ifx\eee\empty%
110  \Put@Line(-138,129)(0,1){134}%       %double bond 5-6
111 \else%
112  \Put@Line(-138,143)(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@Line(-6,364)(-5,-3){126}%        %double bond 1-6
121 \else%
122  \Put@Line(-6,364)(-5,-3){100}%        %double bond 1-6
123 \fi%
124 \else%
125 \ifx\fff\empty%
126  \Put@Line(-35,340)(-5,-3){100}%       %double bond 1-6
127 \else%
128  \Put@Line(-35,352)(-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@Line(-138,270)(1,0){277}%      %double bond 4-3
137  \else%
138  \Put@Line(-138,270)(1,0){258}%      %double bond 4-3
139  \fi%
140 \else%
141  \ifx\bbb\empty%
142  \Put@Line(-120,270)(1,0){258}%      %double bond 4-3
143  \else%
144  \Put@Line(-120,270)(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@Line(-138,136)(1,0){277}%      %double bond 4-3
152  \else%
153  \Put@Line(-138,136)(1,0){258}%      %double bond 4-3

154  \fi%
155 \else%
156  \ifx\ccc\empty%
157  \Put@Line(-120,136)(1,0){258}%      %double bond 4-3
158  \else%
159  \Put@Line(-120,136)(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@Line(0,406)(5,-3){171}%        %bond 1-2
167  \else%
168  \Put@Line(0,406)(5,-3){136}%        %bond 1-2
169  \fi%
170 \else%
171  \ifx\bbb\empty%
172  \Put@Line(35,385)(5,-3){136}%       %bond 1-2
173  \else%
174  \Put@Line(35,385)(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@Line(0,406)(-5,-3){171}%       %bond 1-6
182  \else%
183  \Put@Line(0,406)(-5,-3){136}%       %bond 1-6
184  \fi%
185 \else%
186  \ifx\fff\empty%
187  \Put@Line(-35,385)(-5,-3){136}%     %bond 1-6
188  \else%
189  \Put@Line(-35,385)(-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@Line(0,0)(5,3){171}%           %bond 4-3
197  \else%
198  \Put@Line(0,0)(5,3){136}%           %bond 4-3
199  \fi%
200 \else%
201  \ifx\ccc\empty%
202  \Put@Line(35,21)(5,3){138}%         %bond 4-3
203  \else%
204  \Put@Line(35,21)(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@Line(0,0)(-5,3){171}%          %bond 4-5
212  \else%
213  \Put@Line(0,0)(-5,3){136}%          %bond 4-5
214  \fi%
215 \else%
216  \ifx\eee\empty%
217  \Put@Line(-35,21)(-5,3){138}%       %bond 4-5
218  \else%

219  \Put@Line(-35,21)(-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@Line(171,103)(0,1){200}%       %bond 3-2
227  \else%
228  \Put@Line(171,143)(0,1){160}%       %bond 3-2
229  \fi%
230 \else%
231  \ifx\ccc\empty%%
232  \Put@Line(171,103)(0,1){150}%       %bond 3-2
233  \else%
234  \Put@Line(171,143)(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@Line(-171,103)(0,1){200}%       %bond 5-6
242  \else%
243  \Put@Line(-171,103)(0,1){150}%       %bond 5-6
244  \fi%
245 \else%
246  \ifx\fff\empty%
247  \Put@Line(-171,143)(0,1){160}%       %bond 5-6
248  \else%
249  \Put@Line(-171,143)(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@Line(-171,303)(1,0){342}%      %bond 4-3
257  \else%
258  \Put@Line(-171,303)(1,0){300}%      %bond 4-3
259  \fi%

260 \else%
261  \ifx\bbb\empty%
262  \Put@Line(171,303)(-1,0){300}%      %bond 4-3
263  \else%
264  \Put@Line(-129,303)(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@Line(-171,103)(1,0){342}%      %bond 4-3
272  \else%
273  \Put@Line(-171,103)(1,0){300}%      %bond 4-3
274  \fi%
275 \else%
276  \ifx\ccc\empty%
277  \Put@Line(171,103)(-1,0){300}%      %bond 4-3
278  \else%
279  \Put@Line(-129,103)(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  \dotorline(0,406)(5,-3){171}/(0,406)(171,303)%
295  \else%
296  \dotorline(0,406)(5,-3){136}/(0,406)(136,324)%
297  \fi%
298 \else%
299  \ifx\bbb\empty%
300  \dotorline(35,385)(5,-3){136}/(35,386)(171,303)%
301  \else%
302  \dotorline(35,385)(5,-3){100}/(35,386)(136,324)%
303  \fi%
304 \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.

305 %bond between 3 and 2
306 \def\dotskbondb{%
307 \ifx\bbb\empty%%
308  \ifx\ccc\empty%%
309  \dotorline(171,103)(0,1){200}/(171,103)(171,303)%
310  \else%
311  \dotorline(171,143)(0,1){160}/(171,143)(171,303)%
312  \fi%
313 \else%
314  \ifx\ccc\empty%%
315  \dotorline(171,103)(0,1){150}/(171,103)(171,253)%
316  \else%
317  \dotorline(171,143)(0,1){110}/(171,143)(171,253)%
318  \fi%
319 \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.

320 %bond between 4 and 3
321 \def\dotskbondc{%
322 \ifx\ddd\empty%
323  \ifx\ccc\empty%%
324  \dotorline(0,0)(5,3){171}/(0,0)(171,103)%
325  \else%
326  \dotorline(0,0)(5,3){136}/(0,0)(136,81)%
327  \fi%
328 \else%
329  \ifx\ccc\empty%
330  \dotorline(35,21)(5,3){138}/(35,21)(171,103)%
331  \else%
332  \dotorline(35,21)(5,3){100}/(35,21)(136,81)%
333  \fi%
334 \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.

335 %bond between 4 and 5
336 \def\dotskbondd{%
337 \ifx\ddd\empty%
338  \ifx\eee\empty%
339  \dotorline(0,0)(-5,3){171}/(0,0)(-171,103)%
340  \else%
341  \dotorline(0,0)(-5,3){136}/(0,0)(-136,81)%
342  \fi%
343 \else%
344  \ifx\eee\empty%
345  \dotorline(-35,21)(-5,3){138}/(-35,21)(-171,103)%
346  \else%
347  \dotorline(-35,21)(-5,3){100}/(-35,21)(-136,81)%
348  \fi%
349 \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.

350 %bond between 5 and 6
351 \def\dotskbonde{%
352 \ifx\eee\empty%
353  \ifx\fff\empty%
354  \dotorline(-171,103)(0,1){200}/(-171,103)(-171,303)%
355  \else%
356  \dotorline(-171,103)(0,1){150}/(-171,103)(-171,253)%
357  \fi%
358 \else%
359  \ifx\fff\empty%
360  \dotorline(-171,143)(0,1){160}/(-171,143)(-171,303)%
361  \else%
362  \dotorline(-171,143)(0,1){110}/(-171,143)(-171,253)%
363  \fi%
364 \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.

365 %bond between 1 and 6
366 \def\dotskbondf{%
367 \ifx\aaa\empty%
368  \ifx\fff\empty%
369  \dotorline(0,406)(-5,-3){171}/(0,406)(-171,303)%
370  \else%
371  \dotorline(0,406)(-5,-3){136}/(0,406)(-136,325)%
372  \fi%

373 \else%
374  \ifx\fff\empty%
375  \dotorline(-35,385)(-5,-3){136}/(-35,385)(-171,303)%
376  \else%
377  \dotorline(-35,385)(-5,-3){100}/(-35,385)(-136,325)%
378  \fi%
379 \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.

380 %horizontal bond for five-membered rings
381 \def\dotskbondhoriz{%
382 \ifx\fff\empty%
383  \ifx\bbb\empty%
384  \dotorline(-171,303)(1,0){342}/(-171,303)(171,303)%
385  \else%
386  \dotorline(-171,303)(1,0){300}/(-171,303)(129,303)%
387  \fi%
388 \else%
389  \ifx\bbb\empty%
390  \dotorline(171,303)(-1,0){300}/(171,303)(-129,303)%
391  \else%
392  \dotorline(-129,303)(1,0){258}/(-129,303)(129,303)%
393  \fi%
394 \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.

395 %horizontal bond for five-membered rings (inverse type)
396 \def\dotskbondhorizi{%
397 \ifx\eee\empty%
398  \ifx\ccc\empty%
399  \dotorline(-171,103)(1,0){342}/(-171,103)(171,103)%
400  \else%
401  \dotorline(-171,103)(1,0){300}/(-171,103)(129,103)%
402  \fi%
403 \else%
404  \ifx\ccc\empty%
405  \dotorline(171,103)(-1,0){300}/(171,103)(-129,103)%
406  \else%
407  \dotorline(-129,103)(1,0){258}/(-129,103)(129,103)%
408  \fi%
409 \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

410 \newif\if@skbondlist
411 \@skbondlistfalse

from fusering.sty to hetarom.sty

\set@skel@bond
412 \def\set@skel@bond#1#2#3{%
413 \expandafter\if\csname @#2#2#2\endcsname #2\relax%OK
414  % \if\@aaa #2\relax%OK
415 \@skbondlistfalse
416 \@tfor\member:=#1\do{%
417 \expandafter\twoCH@@R\member//%
418  \if\@@tmpa #2\relax%
419  \if\@@tmpb A\relax%
420  \@skbondlisttrue
421  \expandafter\csname dotskbond#3\endcsname% \dotskbonda etc.
422 %        \@skbondlisttrue
423  \else\if\@@tmpb B\relax%
424  \@skbondlisttrue
425  {\thicklines
426  \expandafter\csname skbond#3\endcsname% \skbonda etc.

427 }%

428 %        \@skbondlisttrue
429  \fi\fi
430  \fi%

431 }%

432 \if@skbondlist\else
433  {\thinlines
434  \expandafter\csname skbond#3\endcsname% \skbonda etc.

435 }%

436 \fi%
437 \else
438  \expandafter\ifx\csname @#2#2#2\endcsname \empty\relax%
439  %    \ifx\@aaa\empty\relax
440  \@tfor\member:=#1\do{%
441  \expandafter\twoCH@@R\member//%
442  \if\@@tmpa #2\relax%
443  \XyMTeXWarning{Unavailable bond `#2' in SKBONDLIST}\fi

444 }%

445 \fi\fi
446 }% 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
447 \def\set@skel@longbond#1#2#3{%
448 \expandafter\if\csname @#2#2#2\endcsname #2\relax%OK
449  % \if\@aaa #2\relax%OK
450 \@skbondlistfalse
451 \@tfor\member:=#1\do{%
452 \expandafter\twoCH@@R\member//%

453  \if\@@tmpa #2\relax%
454  \if\@@tmpb A\relax%
455  \@skbondlisttrue
456  \expandafter\csname dot#3\endcsname% \dotskbonda etc.
457 %        \@skbondlisttrue
458  \else\if\@@tmpb B\relax%
459  \@skbondlisttrue
460  {\thicklines
461  \expandafter\csname #3\endcsname% \skbonda etc.

462 }%

463 %        \@skbondlisttrue
464  \fi\fi
465  \fi%

466 }%

467 \if@skbondlist\else
468  {\thinlines
469  \expandafter\csname #3\endcsname% \skbonda etc.

470 }%

471 \fi%
472 \else
473  \expandafter\ifx\csname @#2#2#2\endcsname \empty\relax%
474  %    \ifx\@aaa\empty\relax
475  \@tfor\member:=#1\do{%
476  \expandafter\twoCH@@R\member//%
477  \if\@@tmpa #2\relax%
478  \XyMTeXWarning{Unavailable bond `#2' in SKBONDLIST}\fi

479 }%

480 \fi\fi
481 }% 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
482 \def\@bond@@omit#1{%
483 \@tfor\memBer:=#1\do{%
484 \if\memBer a\relax\gdef\@aaa{}\fi%
485 \if\memBer A\relax\gdef\@aaa{}\fi%
486 \if\memBer b\relax\gdef\@bbb{}\fi%
487 \if\memBer B\relax\gdef\@bbb{}\fi%
488 \if\memBer c\relax\gdef\@ccc{}\fi%
489 \if\memBer C\relax\gdef\@ccc{}\fi%
490 \if\memBer d\relax\gdef\@ddd{}\fi%
491 \if\memBer D\relax\gdef\@ddd{}\fi%
492 \if\memBer e\relax\gdef\@eee{}\fi%
493 \if\memBer E\relax\gdef\@eee{}\fi%
494 \if\memBer f\relax\gdef\@fff{}\fi%
495 \if\memBer F\relax\gdef\@fff{}\fi%
496 \if\memBer g\relax\gdef\@ggg{}\fi%
497 \if\memBer G\relax\gdef\@ggg{}\fi%
498 \if\memBer h\relax\gdef\@hhh{}\fi%
499 \if\memBer H\relax\gdef\@hhh{}\fi%
500 \if\memBer i\relax\gdef\@iii{}\fi%
501 \if\memBer I\relax\gdef\@iii{}\fi%

502 \if\memBer j\relax\gdef\@jjj{}\fi%
503 \if\memBer J\relax\gdef\@jjj{}\fi%
504 \if\memBer k\relax\gdef\@kkk{}\fi%
505 \if\memBer K\relax\gdef\@kkk{}\fi%
506 }}%

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

507 \def\sixheterov{\@ifnextchar({\@six@heterov(@}{\@six@heterov(@)}}
508 \def\@six@heterov(#1){\@ifnextchar[{\@six@@heterov(#1)[@}%
509 {\@six@@heterov(#1)[@]}}
510 \def\@six@@heterov(#1)[#2]#3#4{\@ifnextchar[%
511 {\@sixheterov(#1)[#2]{#3}{#4}[@}%
512 {\@sixheterov(#1)[#2]{#3}{#4}[@]}}
513 \def\@sixheterov(#1)[#2]#3#4[#5]{%
514 % %%%%%%%%%%%%%%%%%%%%%%%%%%
515 % % treatment of atom list %
516 % %%%%%%%%%%%%%%%%%%%%%%%%%%
517 \iniatom\iniflag%initialize
518 \test@vertix@sixv{#3}{a}{b}{c}{d}{e}{f}%
519 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
520 % % adustment of subs positions %
521 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
522 \@reset@ylsw%
523 \ylposition{#4}{0}{0}{7}{0}%
524 \begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/%
525 (800,880)(-\shiftii,-\shifti){sixheterov}%2002/4/30 by S. Fujita
526 % %%%%%%%%%%%%%%%%%%
527 % % outer skeleton %
528 % %%%%%%%%%%%%%%%%%%

529 {%

530 \resetbdsw%
531 \@bond@@omit{#5}%
532 \set@skel@bond{#1}{a}{a}% bond between 1 and 2 \@aaa -> \skbonda etc

533 \set@skel@bond{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc
534 \set@skel@bond{#1}{c}{c}% bond between 3 and 4 \@ccc -> \skbondc etc
535 \set@skel@bond{#1}{d}{d}% bond between 4 and 5 \@ddd -> \skbondd etc
536 \set@skel@bond{#1}{e}{e}% bond between 5 and 6 \@eee -> \skbonde etc
537 \set@skel@bond{#1}{f}{f}% bond between 6 and 1 \@fff -> \skbondf etc

538 }%

539 %%%%%\set@outskel@sixv % replaced by above 1998/12/30
540 % %%%%%%%%%%%%%%%%%%%%%
541 % % inner double bond %
542 % %%%%%%%%%%%%%%%%%%%%%
543 \@tfor\member:=#2\do{%
544 \if\member r\relax \bondd \bondf \bondb%
545 \else\if\member l\relax \bonda \bondc \bonde%
546 \else\if\member a\relax \bonda%
547 \else\if\member b\relax \bondb%
548 \else\if\member c\relax \bondc%
549 \else\if\member d\relax \bondd%
550 \else\if\member e\relax \bonde%
551 \else\if\member f\relax \bondf%
552 \else\if\member A%left aromatic circle
553 \Put@oCircle(0,203){240}%               %circle
554 % %%%%%%%%%%%%%%%%%%%%%%%%%
555 % % inner bond attachment %
556 % %%%%%%%%%%%%%%%%%%%%%%%%%
557 \else \expandafter\twoCH@@R\member//%
558  \set@fusionadd@sixv
559 \fi\fi\fi\fi\fi\fi\fi\fi\fi%

560 }%

561 % %%%%%%%%%%%%%%%%%%%%%%%%
562 % % setting hetero atoms %
563 % %%%%%%%%%%%%%%%%%%%%%%%%
564 \set@hetatom@sixv{#3}{0}{0}{7}{0}%    %atom 1--6%
565 % %%%%%%%%%%%%%%%%%%%%%%%%
566 % % setting substituents %
567 % %%%%%%%%%%%%%%%%%%%%%%%%
568 \setsixringv{#4}{0}{0}{7}{0}%    %subst 1--6
569 \end{ShiftPicEnv}\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

570 \def\sixheterovi{\@ifnextchar({\@six@heterovi(@}{\@six@heterovi(@)}}
571 \def\@six@heterovi(#1){\@ifnextchar[{\@six@@heterovi(#1)[@}%
572 {\@six@@heterovi(#1)[@]}}
573 \def\@six@@heterovi(#1)[#2]#3#4{\@ifnextchar[%
574 {\@sixheterovi(#1)[#2]{#3}{#4}[@}%
575 {\@sixheterovi(#1)[#2]{#3}{#4}[@]}}
576 \def\@sixheterovi(#1)[#2]#3#4[#5]{%
577 % %%%%%%%%%%%%%%%%%%%%%%%%%%
578 % % treatment of atom list %
579 % %%%%%%%%%%%%%%%%%%%%%%%%%%
580 \iniatom\iniflag%initialize
581 \test@vertix@sixv{#3}{d}{c}{b}{a}{f}{e}%
582 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
583 % % adjustment of subs positions %
584 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
585 \@reset@ylsw%
586 \ylposition{#4}{5}{0}{5}{-1}%    %subst 1--4
587 \ylposition{#4}{11}{4}{7}{-1}%   %subst 5 and 6
588 \begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/%
589 (800,880)(-\shiftii,-\shifti){sixheterovi}%2002/4/30 by S. Fujita
590 % %%%%%%%%%%%%%%%%%%
591 % % outer skeleton %
592 % %%%%%%%%%%%%%%%%%%
593 {\resetbdsw%
594 \@bond@@omit{#5}%
595 \set@skel@bond{#1}{a}{c}% bond between 1 and 2 \@aaa -> \skbondc etc
596 \set@skel@bond{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc
597 \set@skel@bond{#1}{c}{a}% bond between 3 and 4 \@ccc -> \skbonda etc
598 \set@skel@bond{#1}{d}{f}% bond between 4 and 5 \@ddd -> \skbondf etc
599 \set@skel@bond{#1}{e}{e}% bond between 5 and 6 \@eee -> \skbonde etc
600 \set@skel@bond{#1}{f}{d}% bond between 6 and 1 \@fff -> \skbondd etc

601 }%

602 %%%\set@outskel@sixv% replaced by the above 1998/12/30
603 % %%%%%%%%%%%%%%%%%%%%%
604 % % inner double bond %
605 % %%%%%%%%%%%%%%%%%%%%%
606 \@tfor\member:=#2\do{%
607 \if\member r\relax \bondd \bondf \bondb%
608 \else\if\member l\relax \bonda \bondc \bonde%
609 \else\if\member a\relax \bondc%
610 \else\if\member b\relax \bondb%
611 \else\if\member c\relax \bonda%
612 \else\if\member d\relax \bondf%
613 \else\if\member e\relax \bonde%
614 \else\if\member f\relax \bondd%
615 \else\if\member A%left aromatic circle
616 \Put@oCircle(0,203){240}%               %circle
617 % %%%%%%%%%%%%%%%%%%%%%%%%%
618 % % inner bond attachment %
619 % %%%%%%%%%%%%%%%%%%%%%%%%%

620 \else \expandafter\twoCH@@R\member//%
621 \set@fusionadd@sixvi
622 \fi\fi\fi\fi\fi\fi\fi\fi\fi%

623 }%

624 % %%%%%%%%%%%%%%%%%%%%%%%%
625 % % setting hetero atoms %
626 % %%%%%%%%%%%%%%%%%%%%%%%%
627 \set@hetatom@sixv{#3}{5}{0}{5}{-1}%    %atom 1--4%
628 \set@hetatom@sixv{#3}{11}{4}{7}{-1}%   %atom 5 and 6%
629 % %%%%%%%%%%%%%%%%%%%%%%%%
630 % % setting substituents %
631 % %%%%%%%%%%%%%%%%%%%%%%%%
632 \setsixringv{#4}{5}{0}{5}{-1}%    %subst 1--4
633 \setsixringv{#4}{11}{4}{7}{-1}%   %subst 5 and 6
634 \end{ShiftPicEnv}\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
635 \def\pyridinev{\@ifnextchar[{\@pyridinev[@}{\@pyridinev[r]}}
636 \def\@pyridinev[#1]#2{%
637 \iforigpt \typeout{command `pyridinev' %
638 is based on `sixheterov'.}\fi%
639 \sixheterov[#1]{1==N}{#2}}%end of \pyridinev macro
640 \def\pyridinevi{\@ifnextchar[{\@pyridinevi[@}{\@pyridinevi[r]}}
641 \def\@pyridinevi[#1]#2{%
642 \iforigpt \typeout{command `pyridinevi' %
643 is based on `sixheterovi'.}\fi%
644 \sixheterovi[#1]{1==N}{#2}}%end of \pyridinevi macro

\pyrazinev \pyrazinevi
645 \def\pyrazinev{\@ifnextchar[{\@pyrazinev[@}{\@pyrazinev[r]}}
646 \def\@pyrazinev[#1]#2{%
647 \iforigpt \typeout{command `pyrazinev' %
648 is based on `sixheterov'.}\fi%
649 \sixheterov[#1]{1==N;4==N}{#2}}%end of \pyrazinev macro
650 %the same formula with an alternative locant numbering
651 \def\pyrazinevi{\@ifnextchar[{\@pyrazinevi[@}{\@pyrazinevi[r]}}
652 \def\@pyrazinevi[#1]#2{%
653 \iforigpt \typeout{command `pyrazinevi' %
654 is based on `sixheterovi'.}\fi%
655 \sixheterovi[#1]{1==N;4==N}{#2}}%end of \pyrazinevi macro
\pyrimidinev
\pyrimidinevi
656 \def\pyrimidinev{\@ifnextchar[{\@pyrimidinev[@}{\@pyrimidinev[r]}}
657 \def\@pyrimidinev[#1]#2{%
658 \iforigpt \typeout{command `pyrimidinev' %
659 is based on `sixheterov'.}\fi%
660 \sixheterov[#1]{1==N;3==N}{#2}}%end of \pyrimidinev macro
661 \def\pyrimidinevi{\@ifnextchar[{\@pyrimidinevi[@}{\@pyrimidinevi[r]}}
662 \def\@pyrimidinevi[#1]#2{%
663 \iforigpt \typeout{command `pyrimidinevi' %
664 is based on `sixheterovi'.}\fi%
665 \sixheterovi[#1]{1==N;3==N}{#2}}%end of \pyrimidinevi macro
\pyridazinev
\pyridazinevi
666 \def\pyridazinev{\@ifnextchar[{\@pyridazinev[@}{\@pyridazinev[r]}}
667 \def\@pyridazinev[#1]#2{%
668 \iforigpt \typeout{command `pyridazinev' %
669 is based on `sixheterov'.}\fi%
670 \sixheterov[#1]{1==N;2==N}{#2}}%end of \pyridazinev macro
671 \def\pyridazinevi{\@ifnextchar[{\@pyridazinevi[@}{\@pyridazinevi[r]}}
672 \def\@pyridazinevi[#1]#2{%
673 \iforigpt \typeout{command `pyridazinev' %
674 is based on `sixheterovi'.}\fi%
675 \sixheterovi[#1]{1==N;2==N}{#2}}%end of \pyridazinevi macro
\triazinev \triazinevi
676 \def\triazinev{\@ifnextchar[{\@triazinev[@}{\@triazinev[r]}}
677 \def\@triazinev[#1]#2{%
678 \iforigpt \typeout{command `triazinev' %
679 is based on `sixheterov'.}\fi%
680 \sixheterov[#1]{1==N;3==N;5==N}{#2}}%end of \triazinev macro
681 \def\triazinevi{\@ifnextchar[{\@triazinevi[@}{\@triazinevi[r]}}
682 \def\@triazinevi[#1]#2{%
683 \iforigpt \typeout{command `triazinevi' %
684 is based on `sixheterovi'.}\fi%
685 \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,

2. placing outer skeletons,

3. placing inner double bonds,

4. setting hetero atoms, and

5. placing substituents by using \setsixringv partially.

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

686 \def\fiveheterov{\@ifnextchar({\@five@heterov(@}{\@five@heterov(@)}}
687 \def\@five@heterov(#1){\@ifnextchar[{\@five@@heterov(#1)[@}%
688 {\@five@@heterov(#1)[@]}}
689 \def\@five@@heterov(#1)[#2]#3#4{\@ifnextchar[%
690 {\@fiveheterov(#1)[#2]{#3}{#4}[@}%
691 {\@fiveheterov(#1)[#2]{#3}{#4}[@]}}
692 \def\@fiveheterov(#1)[#2]#3#4[#5]{%
693 \iniatom\iniflag%initialize
694 % %%%%%%%%%%%%%
695 % % atom list %
696 % %%%%%%%%%%%%%
697 \test@vertix@sixv{#3}{d}{c}{b}{f}{e}{a}%
698 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
699 % % adustment of subs positions %
700 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
701 \@reset@ylsw%
702 \ylposition{#4}{5}{1}{5}{-1}%   % for 1 to 3
703 \ylposition{#4}{10}{4}{7}{-1}%  % for 4 to 5
704 \begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/%
705 (800,880)(-\shiftii,-\shifti){fiveheterov}%2002/4/30 by S. Fujita
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@longbond{#1}{c}{skbondhoriz}%
714  % bond between 3 and 4 \@ccc -> \skbondhoriz etc
715 \set@skel@bond{#1}{d}{e}% bond between 4 and 5 \@ddd -> \skbonde etc
716 \set@skel@bond{#1}{e}{d}% bond between 5 and 1 \@eee -> \skbondd etc

717 }%

718 % %%%%%%%%%%%%%%%%%%%%%
719 % % inner double bond %
720 % %%%%%%%%%%%%%%%%%%%%%
721 \@tfor\member:=#2\do{%
722 \if\member r%
723 \else\if\member a\relax \bondc%
724 \else\if\member b\relax \bondb%
725 \else\if\member c\relax \bondhoriz%

726 \else\if\member d\relax \bonde%
727 \else\if\member e\relax \bondd%
728 \else\if\member A\relax%
729 \Put@oCircle(0,173){180}%aromatic circle
730 % %%%%%%%%%%%%%%%%%%%%%%%%%
731 % % inner bond attachment %
732 % %%%%%%%%%%%%%%%%%%%%%%%%%
733 \else
734  \expandafter\twoCH@@R\member//%
735  \set@fusionadd@fivev
736 \fi\fi\fi\fi\fi\fi\fi}%
737 % %%%%%%%%%%%%%%%%%%%%%%%
738 % % setting heteroatoms %
739 % %%%%%%%%%%%%%%%%%%%%%%%
740 \set@hetatom@sixv{#3}{5}{1}{5}{-1}%   % for 1 to 3
741 \set@hetatom@sixv{#3}{10}{4}{7}{-1}%  % for 4 to 5
742 % %%%%%%%%%%%%%%%%%%%%%%%%
743 % % setting substituents %
744 % %%%%%%%%%%%%%%%%%%%%%%%%
745 \setsixringv{#4}{5}{1}{5}{-1}%   % for 1 to 3
746 \setsixringv{#4}{10}{4}{7}{-1}%  % for 4 to 5
747 \end{ShiftPicEnv}\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,

3. placing inner double bonds,

4. setting hetero atoms, and

5. placing substituents by using \setsixringv partially.

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

748 \def\fiveheterovi{\@ifnextchar({\@five@heterovi(@}{\@five@heterovi(@)}}
749 \def\@five@heterovi(#1){\@ifnextchar[{\@five@@heterovi(#1)[@}%
750 {\@five@@heterovi(#1)[@]}}
751 \def\@five@@heterovi(#1)[#2]#3#4{\@ifnextchar[%
752 {\@fiveheterovi(#1)[#2]{#3}{#4}[@}%
753 {\@fiveheterovi(#1)[#2]{#3}{#4}[@]}}
754 \def\@fiveheterovi(#1)[#2]#3#4[#5]{%
755 \iniatom\iniflag%initialize
756 % %%%%%%%%%%%%%
757 % % atom list %
758 % %%%%%%%%%%%%%
759 \test@vertix@sixv{#3}{a}{b}{c}{e}{f}{d}% d -- dummy
760 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
761 % % adustment of subs positions %
762 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
763 \@reset@ylsw%
764 \ylposition{#4}{0}{0}{4}{0}%  % for 1 to 3
765 \ylposition{#4}{1}{4}{7}{0}%  % for 4 to 5
766 \begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/%
767 (800,880)(-\shiftii,-\shifti){fiveheterov}%2002/4/30 by S. Fujita

768 % %%%%%%%%%%%%%%%%%%
769 % % outer skeleton %
770 % %%%%%%%%%%%%%%%%%%
771 {\resetbdsw%
772 \@bond@@omit{#5}%
773 \set@skel@bond{#1}{a}{a}% bond between 1 and 2 \@aaa -> \skbonda etc
774 \set@skel@bond{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc
775 \set@skel@longbond{#1}{c}{skbondhorizi}%
776  % bond between 3 and 4 \@ccc -> \skbondhorizi etc
777 \set@skel@bond{#1}{d}{e}% bond between 4 and 5 \@ddd -> \skbonde etc
778 \set@skel@bond{#1}{e}{f}% bond between 5 and 6 \@eee -> \skbondf etc

779 }%

780 % %%%%%%%%%%%%%%%%%%%%%
781 % % inner double bond %
782 % %%%%%%%%%%%%%%%%%%%%%
783 \@tfor\member:=#2\do{%
784 \if\member r%
785 \else\if\member a\relax \bonda%
786 \else\if\member b\relax \bondb%
787 \else\if\member c\relax \bondhorizi%
788 \else\if\member d\relax \bonde%
789 \else\if\member e\relax \bondf%
790 \else\if\member A\relax%
791 \Put@oCircle(0,233){180}%aromatic circle
792 \else
793  \expandafter\twoCH@@R\member//%
794  \set@fusionadd@fivevi
795 \fi\fi\fi\fi\fi\fi\fi}%
796 % %%%%%%%%%%%%%%%%%%%%%%%
797 % % setting heteroatoms %
798 % %%%%%%%%%%%%%%%%%%%%%%%
799 \set@hetatom@sixv{#3}{0}{0}{4}{0}%  % for 1 to 3
800 \set@hetatom@sixv{#3}{1}{4}{7}{0}%  % for 4 to 5
801 % %%%%%%%%%%%%%%%%%%%%%%%%
802 % % setting substituents %
803 % %%%%%%%%%%%%%%%%%%%%%%%%
804 \setsixringv{#4}{0}{0}{4}{0}%  % for 1 to 3
805 \setsixringv{#4}{1}{4}{7}{0}%  % for 4 to 5
806 \end{ShiftPicEnv}\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
807 \def\pyrrolev{\@ifnextchar[{\@pyrrolev[@}{\@pyrrolev[bd]}}
808 \def\@pyrrolev[#1]#2{%
809 \iforigpt \typeout{command `pyrrolev' %
810 is based on `fiveheterov'.}\fi%
811 \fiveheterov[#1]{1==N}{#2}}
812 \def\pyrazolev{\@ifnextchar[{\@pyrazolev[@}{\@pyrazolev[bd]}}
813 \def\@pyrazolev[#1]#2{%
814 \iforigpt \typeout{command `pyrazolev' %
815 is based on `fiveheterov'.}\fi%
816 \fiveheterov[#1]{1==N;2==N}{#2}}
817 \def\imidazolev{\@ifnextchar[{\@imidazolev[@}{\@imidazolev[bd]}}
818 \def\@imidazolev[#1]#2{%
819 \iforigpt \typeout{command `imidazolev' %
820 is based on `fiveheterov'.}\fi%
821 \fiveheterov[#1]{1==N;3==N}{#2}}
822 \def\isoxazolev{\@ifnextchar[{\@isoxazolev[@}{\@isoxazolev[bd]}}
823 \def\@isoxazolev[#1]#2{%
824 \iforigpt \typeout{command `isoxazolev' %
825 is based on `fiveheterov'.}\fi%
826 \fiveheterov[#1]{1==O;2==N}{#2}}
827 \def\oxazolev{\@ifnextchar[{\@oxazolev[@}{\@oxazolev[bd]}}
828 \def\@oxazolev[#1]#2{%
829 \iforigpt \typeout{command `oxazolev' %
830 is based on `fiveheterov'.}\fi%
831 \fiveheterov[#1]{1==O;3==N}{#2}}
\furanv \thiophenev
832 \def\furanv{\@ifnextchar[{\@furanv[@}{\@furanv[bd]}}
833 \def\@furanv[#1]#2{%
834 \iforigpt \typeout{command `furanv' %
835 is based on `fiveheterov'.}\fi%
836 \fiveheterov[#1]{1==O}{#2}}
837 \def\thiophenev{\@ifnextchar[{\@thiophenev[@}{\@thiophenev[bd]}}
838 \def\@thiophenev[#1]#2{%
839 \iforigpt \typeout{command `thiophenev' %
840 is based on `fiveheterov'.}\fi%
841 \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

842 \def\pyrrolevi{\@ifnextchar[{\@pyrrolevi[@}{\@pyrrolevi[bd]}}
843 \def\@pyrrolevi[#1]#2{%
844 \iforigpt \typeout{command `pyrrolevi' %
845 is based on `fiveheterovi'.}\fi%
846 \fiveheterovi[#1]{1==N}{#2}}
847 \def\pyrazolevi{\@ifnextchar[{\@pyrazolevi[@}{\@pyrazolevi[bd]}}
848 \def\@pyrazolevi[#1]#2{%
849 \iforigpt \typeout{command `pyrazolevi' %
850 is based on `fiveheterovi'.}\fi%
851 \fiveheterovi[#1]{1==N;2==N}{#2}}
852 \def\imidazolevi{\@ifnextchar[{\@imidazolevi[@}{\@imidazolevi[bd]}}
853 \def\@imidazolevi[#1]#2{%
854 \iforigpt \typeout{command `imidazolevi' %
855 is based on `fiveheterovi'.}\fi%
856 \fiveheterovi[#1]{1==N;3==N}{#2}}
857 \def\isoxazolevi{\@ifnextchar[{\@isoxazolevi[@}{\@isoxazolevi[bd]}}
858 \def\@isoxazolevi[#1]#2{%
859 \iforigpt \typeout{command `isoxazolevi' %
860 is based on `fiveheterovi'.}\fi%
861 \fiveheterovi[#1]{1==O;2==N}{#2}}
862 \def\oxazolevi{\@ifnextchar[{\@oxazolevi[@}{\@oxazolevi[bd]}}
863 \def\@oxazolevi[#1]#2{%
864 \iforigpt \typeout{command `oxazolevi' %
865 is based on `fiveheterovi'.}\fi%
866 \fiveheterovi[#1]{1==O;3==N}{#2}}
\furanvi
\thiophenevi
867 \def\furanvi{\@ifnextchar[{\@furanvi[@}{\@furanvi[bd]}}
868 \def\@furanvi[#1]#2{%
869 \iforigpt \typeout{command `furanvi' %
870 is based on `fiveheterovi'.}\fi%
871 \fiveheterovi[#1]{1==O}{#2}}
872 \def\thiophenevi{\@ifnextchar[{\@thiophenevi[@}{\@thiophenevi[bd]}}

873 \def\@thiophenevi[#1]#2{%
874 \iforigpt \typeout{command `thiophenevi' %
875 is based on `fiveheterovi'.}\fi%
876 \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

877 \def\decaheterov{\@ifnextchar({\@deca@heterov(@}{\@deca@heterov(@)}}
878 \def\@deca@heterov(#1){\@ifnextchar[{\@deca@@heterov(#1)[@}%
879 {\@deca@@heterov(#1)[@]}}
880 \def\@deca@@heterov(#1)[#2]#3#4{\@ifnextchar[%
881 {\@decaheterov(#1)[#2]{#3}{#4}[@}%
882 {\@decaheterov(#1)[#2]{#3}{#4}[@]}}%
883 \def\@decaheterov(#1)[#2]#3#4[#5]{%
884 % %%%%%%%%%%%%%%%%%%%%%%%%%%
885 % % treatment of atom list %
886 % %%%%%%%%%%%%%%%%%%%%%%%%%%
887 \iniflag\iniatom%
888 \test@vertix@sixv{#3}{a}{b}{c}{d}{e}{f}%
889 \test@vertix@decav{#3}{g}{h}{i}{j}{@}{@}%
890 % %%%%%%%%%%%%%%%%%%%%%%%
891 % % adjustment for (yl) %
892 % %%%%%%%%%%%%%%%%%%%%%%%
893 \@reset@ylsw%

894 \ylhetposition{#4}{0}{0}{5}{0}% %substituents on 1 to 4
895 \if@ylsw \ifx\@@ylii\empty
896 \def\@@ylii{-342}\def\@@yli{0}\fi
897 \else
898 \ylhetposition{#4}{-1}{3}{7}{0}% %substituents on 5 to 7
899 \fi
900 \if@ylsw \ifx\@@ylii\empty
901 \def\@@ylii{0}\def\@@yli{0}\fi
902 \else
903 \ylhetposition{#4}{-7}{0}{2}{0}% %substituent on 8
904 \fi
905 \if@ylsw \ifx\@@ylii\empty
906 \def\@@ylii{0}\def\@@yli{0}\fi
907 \else

908 {%

909 \clipdetection%
910 \@clipfusefalse \if@iclip \@clipfusetrue \fi%
911 \ylatombondposition{#4}{-8}{7}%   %9 %for 4a position

912 }%

913 \fi
914 \if@ylsw \ifx\@@ylii\empty
915 \def\@@ylii{-171}\def\@@yli{-103}\fi
916 \else

917 {%

918 \clipdetection%
919 \@clipfusefalse \if@jclip \@clipfusetrue \fi%
920 \ylatombondposition{#4}{-9}{1}%  %10 for 8a position

921 }%

922 \fi
923 \if@ylsw \ifx\@@ylii\empty
924 \def\@@ylii{-171}\def\@@yli{-303}\fi
925 \fi
926 \begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
927 (1200,880)(-\shiftii,-\shifti){decaheterov}%2002/4/30 by S. Fujita
928 % %%%%%%%%%%%%%%%%%%
929 % % outer skeleton %
930 % %%%%%%%%%%%%%%%%%%
931 \begingroup
932 \resetbdsw%
933 \@bond@@omit{#5}%
934 {\let\fff=\jjj \let\eee=\iii%
935 \Put@Direct(342,0){\set@skel@bond{#1}{a}{a}}%
936 % bond between 1 and 2 \@aaa -> \skbonda etc
937 \Put@Direct(342,0){\set@skel@bond{#1}{b}{b}}%
938 % bond between 2 and 3 \@bbb -> \skbondb etc
939 \Put@Direct(342,0){\set@skel@bond{#1}{c}{c}}%
940 % bond between 3 and 4 \@ccc -> \skbondc etc
941 \Put@Direct(342,0){\set@skel@bond{#1}{d}{d}}%
942 % bond between 4 and 4a \@ddd -> \skbondd etc
943 \Put@Direct(342,0){\set@skel@bond{#1}{k}{e}}%
944 % bond between 4a and 8a \@kkk -> \skbonde etc
945 \Put@Direct(342,0){\set@skel@bond{#1}{j}{f}}%
946 % bond between 8a and 1 \@jjj -> \skbondf etc

947 }%

948 {\let\aaa=\hhh \let\ddd=\eee \let\eee=\fff \let\fff=\gggA%
949 \let\ccc=\iii \let\bbb=\jjj%
950 \set@skel@bond{#1}{i}{a}% bond between 8 and 8a \@iii -> \skbonda etc
951 \set@skel@bond{#1}{e}{c}% bond between 5 and 4a \@eee -> \skbondc etc
952 \set@skel@bond{#1}{f}{d}% bond between 5 and 6 \@fff -> \skbondd etc
953 \set@skel@bond{#1}{g}{e}% bond between 6 and 7 \@ggg -> \skbonde etc
954 \set@skel@bond{#1}{h}{f}% bond between 7 and 8 \@hhh -> \skbondf etc

955 }%

956 \endgroup
957 % %%%%%%%%%%%%%%%%%%%%%
958 % % inner double bond %
959 % %%%%%%%%%%%%%%%%%%%%%
960 \@tfor\member:=#2\do{%
961 \if\member r\relax%
962 {\let\fff=\jjj \let\eee=\iii%
963 \Put@Direct(342,0){\bonda}% bond between 1 and 2
964 \Put@Direct(342,0){\bondc}% bond between 3 and 4

965 }%

966 {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA%
967 \let\ccc=\iii\let\bbb=\jjj%
968 \Put@Direct(0,0){\bondb}% bond between 8a and 4a
969 \Put@Direct(0,0){\bondf}% bond between 8 and 7
970 \Put@Direct(0,0){\bondd}% bond between 5 and 6

971 }%

972 \else\if\member l\relax%
973 \else\if\member a\relax%
974 \Put@Direct(342,0){\bonda}% bond between 1 and 2
975 \else\if\member b\relax
976 \Put@Direct(342,0){\bondb}% bond between 2 and 3
977 \else\if\member c\relax
978 \Put@Direct(342,0){\bondc}% bond between 3 and 4
979 \else\if\member d\relax%
980 {\let\eee=\iii%
981 \Put@Direct(342,0){\bondd}% bond between 4 and 4a

982 }%

983 \else\if\member e\relax%
984 {\let\ccc=\iii \let\ddd=\eee%
985 \Put@Direct(0,0){\bondc}% bond between 5 and 4a

986 }%

987 \else\if\member f\relax%
988 {\let\ddd=\eee \let\eee=\fff%
989 \Put@Direct(0,0){\bondd}% bond between 5 and 6

990 }%

991 \else\if\member g\relax%
992 {\let\eee=\fff \let\fff=\gggA%
993 \Put@Direct(0,0){\bonde}% bond between 6 and 7

994 }%

995 \else\if\member h\relax%
996 {\let\aaa=\hhh \let\fff=\gggA%
997 \Put@Direct(0,0){\bondf}% bond between 8 and 7

998 }%

999 \else\if\member i\relax%
1000 {\let\aaa=\hhh \let\bbb=\jjj%
1001 \Put@Direct(0,0){\bonda}% bond between 8 and 8a

1002 }%

1003 \else\if\member j\relax%
1004 {\let\fff=\jjj%
1005 \Put@Direct(342,0){\bondf}% bond between 1 and 8a

1006 }%

1007 \else\if\member k\relax%
1008 {\let\ccc=\iii\let\bbb=\jjj%
1009 \Put@Direct(0,0){\bondb}% bond between 8a and 4a

1010 }%

1011 \else\if\member K\relax%
1012 {\let\eee=\iii\let\fff=\jjj%
1013 \Put@Direct(342,0){\bonde}% bond between 8a and 4a in the other ring

1014 }%

1015 \else\if\member A%left aromatic circle
1016 \Put@oCircle(0,203){240}%               %circle
1017 \else\if\member B%left aromatic circle
1018 \Put@oCircle(342,203){240}%             %circle
1019 \else
1020 \expandafter\twoCH@@R\member//%
1021 \def\aax{8a}\def\aay{4a}\def\aaz{10}%
1022  \if\@@tmpa 1\relax%                  % plus charge etc.
1023  \putratom{304}{282}{\@@tmpb}%      % right type
1024  \else\if\@@tmpa 2\relax%
1025  \putratom{402}{253}{\@@tmpb}%      % right type
1026  \else\if\@@tmpa 3\relax%
1027  \putratom{402}{120}{\@@tmpb}%      % right type
1028  \else\if\@@tmpa 4\relax%
1029  \putratom{304}{68}{\@@tmpb}%       % right type
1030  \else\if\@@tmpa 5\relax%
1031  \putratom{-38}{68}{\@@tmpb}%       % right type
1032  \else\if\@@tmpa 6\relax%
1033  \putlatom{-60}{253}{\@@tmpb}%      % left type
1034  \else\if\@@tmpa 7\relax%
1035  \putlatom{-60}{120}{\@@tmpb}%      % left type
1036  \else\if\@@tmpa 8\relax%
1037  \putratom{-38}{282}{\@@tmpb}%      % right type
1038  \else\if\@@tmpa 9\relax%
1039  \putratom{60}{120}{\@@tmpb}%       % right type
1040 %      \else\if\@@tmpa 10\relax%
1041  \else\ifx\@@tmpa\aaz\relax%1998/10/17
1042  \putratom{60}{253}{\@@tmpb}%       % right type
1043  \else\ifx\@@tmpa\aax\relax%
1044  \putratom{60}{253}{\@@tmpb}%       % right type
1045  \else\ifx\@@tmpa\aay\relax%
1046  \putratom{60}{120}{\@@tmpb}%       % right type
1047  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
1048 % ***********************
1049 % * setting fused rings *
1050 % ***********************
1051 \expandafter\twoCH@R\member//%
1052 \set@fusion@decav
1053 \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
1054 \fi\fi\fi\fi\fi\fi%

1055 }%

1056 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1057 % % setting hetero atoms and spiro rings %
1058 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1059 \iniflag
1060 \Put@Direct(342,0){\set@hetatom@sixv{#3}{0}{0}{5}{0}%
1061 %   \if@aclip \global\@acliptrue\fi
1062 %   \if@bclip \global\@bcliptrue\fi
1063 %   \if@cclip \global\@ccliptrue\fi
1064 %   \if@clip \global\@cliptrue\fi
1065 \storeclipinfo%2001/06/20
1066 }% %substituents on 1 to 4

1067 {%

1068 %\developclipinfo%2001/06/20 %2006/9/5deleted
1069 \Put@Direct(0,0){\iniflag%2000/11/11 by S. Fujita
1070 \set@hetatom@sixv{#3}{-1}{3}{7}{0}%
1071 %   \@gclipfalse \if@fclip \global\@gcliptrue \fi%
1072 %   \@fclipfalse \if@eclip \global\@fcliptrue \fi%
1073 %   \@eclipfalse \if@clip \global\@ecliptrue \fi

1074 %

1075 \@gclipfalse \if@fclip \@gcliptrue \fi%
1076 \@fclipfalse \if@eclip \@fcliptrue \fi%
1077 \@eclipfalse \if@clip  \@ecliptrue \fi
1078 \@clipfalse%2006/9/5added

1079 %

1080 \storeclipinfo%2001/06/20
1081 }%substituents on 5 to 7

1082 }{%

1083 %\developclipinfo%2001/06/20 2006/9/5deleted
1084 \Put@Direct(0,0){\iniflag%2000/11/11 by S. Fujita
1085 \set@hetatom@sixv{#3}{-7}{0}{2}{0}%
1086 %%  \@hclipfalse \if@aclip \global\@hcliptrue \fi
1087 \@hclipfalse \if@aclip \@hcliptrue \fi
1088 \@aclipfalse%2006/9/5added
1089 \storeclipinfo%%2001/06/20
1090 %%====\clipinfo====%%%2006/9/5test
1091 }%%substituent on 8

1092 }{%

1093 %\developclipinfo%%2001/06/20 2006/9/5deleted
1094 \Put@Direct(0,0){\set@vrtx@fuse{#3}%
1095 %  \if@iclip \global\@icliptrue \fi
1096 %  \if@jclip \global\@jcliptrue \fi
1097 \storeclipinfo%%2001/06/20
1098 }% fused positions

1099 }%

1100 %====\clipinfo====%%2006/9/5test
1101 \developclipinfo%%2001/06/20
1102 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1103 % % setting substituents and exocyclic bonds %
1104 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1105 \global\drawsamesubsttrue%2002/05/30 warning on
1106 {%2006/9/5bugfix
1107 \Put@Direct(342,0){\setsixringv{#4}{0}{0}{5}{0}}% %substituents on 1 to 4

1108 }%

1109 \global\drawsamesubstfalse%2002/05/30 warning off

1110 {%

1111 \@clipfalse \if@eclip \@cliptrue \fi%   %substituents on 5 to 7
1112 \@eclipfalse \if@fclip \@ecliptrue \fi%
1113 \@fclipfalse \if@gclip \@fcliptrue \fi%
1114 \Put@Direct(0,0){\setsixringv{#4}{-1}{3}{7}{0}}%

1115 }%

1116 {\@aclipfalse \if@hclip \@acliptrue \fi%   %substituent on 8
1117 \Put@Direct(0,0){\setsixringv{#4}{-7}{0}{2}{0}}%

1118 }%

1119 {\@clipfusefalse \if@iclip \@clipfusetrue \fi%
1120 \Put@Direct(171,103){\setatombond{#4}{-8}{7}}%   %9 %for 4a position

1121 }%

1122 {\@clipfusefalse \if@jclip \@clipfusetrue \fi%
1123 \Put@Direct(171,303){\setatombond{#4}{-9}{1}}%  %10 for 8a position

1124 }%

1125 \end{ShiftPicEnvB}\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
1126 \def\clipdetection{%
1127 % hetero atom on 1
1128 \ifx\aaa\empty\else%
1129  \@acliptrue%
1130 \fi%
1131 % hetero atom on 2
1132 \ifx\bbb\empty\else%
1133  \@bcliptrue%
1134 \fi%
1135 % hetero atom on 3
1136 \ifx\ccc\empty\else%
1137  \@ccliptrue%
1138 \fi%
1139 % hetero atom on 4
1140 \ifx\ddd\empty\else%
1141 \@cliptrue%
1142 \fi%
1143 % hetero atom on 4a
1144 {\let\eee=\iii%
1145 \ifx\eee\empty\else%
1146 %     \global\@icliptrue%
1147  \@icliptrue%
1148  \storeclipinfo%2001/06/20
1149 \fi%

1150 }%

1151 \developclipinfo%2001/06/20
1152 % hetero atom on 8a
1153 {\let\fff=\jjj%
1154 \ifx\fff\empty\else%
1155 %     \global\@jcliptrue%
1156  \@jcliptrue%

1157  \storeclipinfo%2001/06/20
1158 \fi%

1159 }%

1160 \developclipinfo%2001/06/20
1161 % hetero atom on 5
1162 {\let\ddd=\eee%
1163 \ifx\ddd\empty\else
1164 %    \global\@ecliptrue%
1165  \@ecliptrue%
1166  \storeclipinfo%2001/06/20
1167 \fi%

1168 }%

1169 \developclipinfo%2001/06/20
1170 % hetero atom on 6
1171 {\let\eee=\fff%
1172 \ifx\eee\empty\else%
1173 %     \global\@fcliptrue%
1174  \@fcliptrue%
1175  \storeclipinfo%2001/06/20
1176 \fi%

1177 }%

1178 \developclipinfo%2001/06/20
1179 % hetero atom on 7
1180 {\let\fff=\gggA%
1181 \ifx\fff\empty\else%
1182 %     \global\@gcliptrue%
1183  \@gcliptrue%
1184  \storeclipinfo%2001/06/20
1185 \fi%

1186 }%

1187 \developclipinfo%2001/06/20
1188 % hetero atom on 8
1189 {\let\aaa=\hhh%
1190 \ifx\aaa\empty\else%
1191 %     \global\@hcliptrue%
1192  \@hcliptrue%
1193  \storeclipinfo%2001/06/20
1194 \fi%

1195 }%

1196 \developclipinfo%2001/06/20
1197 }% end \clipdetection

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

\ylhetposition
1198 \def\ylhetposition#1#2#3#4#5{%
1199 \@@ylswfalse%%%\@reset@ylsw
1200 \@forsemicol\member:=#1\do{%
1201 \if@@ylsw\else%
1202 \ifx\member\empty\else%
1203 \expandafter\@m@mb@r\member;\relax%
1204 \expandafter\threech@r\@membera{}{}\relax%
1205 \ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi

1206 \if@@ylsw
1207 \ifnum#5<0\relax%
1208 \@tmpaa=-\@tmpa\relax \advance\@tmpaa by#2\relax%
1209 \else\@tmpaa=\@tmpa\relax \advance\@tmpaa by#2\relax\fi
1210 \ifnum\@tmpaa>#3\relax%
1211 \ifnum\@tmpaa<#4\relax%
1212 \ifcase\@tmpaa%0 omit

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

1213 \or

1214  \ifx\aaa\empty
1215  \ifx\hhh\empty% aaa and hhh are absent
1216  \gdef\@ylii{0}\gdef\@yli{-406}\global\@ylswtrue%\@ylatrue% subst. on 1
1217  \else% hhh is present
1218  \def\@ylii{0}\def\@yli{-442}\@ylswtrue%\@ylatrue% subst. on 1

1219 \fi

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

1222 \fi

1223 \or\ifx\bbb\empty
1224  \def\@ylii{-171}\def\@yli{-303}\@ylswtrue%\@ylbtrue% subst. on 2
1225 %      \def\@ylii{-513}\def\@yli{-303}\@ylswtrue%\@ylbtrue% subst. on 2
1226  \else
1227  \def\@ylii{-213}\def\@yli{-327}\@ylswtrue%\@ylbtrue% subst. on 2
1228 %      \def\@ylii{-555}\def\@yli{-327}\@ylswtrue%\@ylbtrue% subst. on 2

1229 \fi

1230 \or\ifx\ccc\empty
1231  \def\@ylii{-171}\def\@yli{-103}\@ylswtrue%\@ylctrue% subst. on 3
1232 %      \def\@ylii{-513}\def\@yli{-103}\@ylswtrue%\@ylctrue% subst. on 3
1233  \else
1234  \def\@ylii{-213}\def\@yli{-79}\@ylswtrue%\@ylctrue% subst. on 3
1235 %      \def\@ylii{-555}\def\@yli{-79}\@ylswtrue%\@ylctrue% subst. on 3

1236 \fi

1237 \or\ifx\ddd\empty
1238  \ifx\eee\empty% ddd and eee are absent
1239  \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%\@yldtrue% subst. on 4
1240  \else% eee present
1241  \gdef\@ylii{0}\gdef\@yli{36}\global\@ylswtrue%\@yldtrue% subst. on 4

1242 \fi

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

1245 \fi 1246 \or

1247  \ifx\eee\empty
1248  \ifx\iii\empty
1249  \ifx\fff\empty% eee, iii and fff are absent
1250  \def\@ylii{173}\def\@yli{-103}\@ylswtrue%\@yletrue% subst. on 5
1251  \else% fff is present
1252  \def\@ylii{213}\def\@yli{-79}\@ylswtrue%\@yletrue% subst. on 5

1253 \fi

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

1256 \fi

1257  \else% eee is present

1258  \def\@ylii{213}\def\@yli{-79}\@ylswtrue%\@yletrue% subst. on 5

1259 \fi 1260 \or

1261  \ifx\fff\empty
1262  \ifx\jjj\empty
1263  \ifx\gggA\empty% fff, jjj, and ggg are absent
1264  \def\@ylii{173}\def\@yli{-303}\@ylswtrue%\@ylftrue% subst. on 6
1265  \else%ggg is present
1266  \def\@ylii{213}\def\@yli{-327}\@ylswtrue%\@ylftrue% subst. on 6

1267 \fi

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

1270 \fi

1271  \else%fff is present
1272  \def\@ylii{213}\def\@yli{-327}\@ylswtrue%\@ylftrue% subst. on 6
1273  \fi%
1274 \fi%end of ifcase
1275 \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

1276 \def\decaheterovi{\@ifnextchar({\@deca@heterovi(@}{\@deca@heterovi(@)}}
1277 \def\@deca@heterovi(#1){\@ifnextchar[{\@deca@@heterovi(#1)[@}%
1278 {\@deca@@heterovi(#1)[@]}}
1279 \def\@deca@@heterovi(#1)[#2]#3#4{\@ifnextchar[%

1280 {\@decaheterovi(#1)[#2]{#3}{#4}[@}%
1281 {\@decaheterovi(#1)[#2]{#3}{#4}[@]}}
1282 \def\@decaheterovi(#1)[#2]#3#4[#5]{%
1283 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1284 % % treatment of atom list %
1285 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1286 \iniflag\iniatom%
1287 %%\test@vertix@sixv{#3}{d}{c}{b}{a}{h}{g}%
1288 %%\test@vertix@decav{#3}{f}{e}{i}{j}{@}{@}%{i}{j} fixed
1289 \test@vertix@decavi{#3}%

1290 %

1291 % %%%%%%%%%%%%%%%%%%%%%%%
1292 % % adjustment for (yl) %
1293 % %%%%%%%%%%%%%%%%%%%%%%%
1294 \@reset@ylsw%
1295 \ylhetposition{#4}{5}{0}{5}{-1}% %substituents on 1 to 4
1296 \if@ylsw \ifx\@@ylii\empty
1297 \def\@@ylii{-342}\def\@@yli{0}\fi
1298 \else
1299 \ylhetposition{#4}{12}{3}{7}{-1}% %substituents on 6 to 8

1300 \fi

1301 \if@ylsw \ifx\@@ylii\empty
1302 \def\@@ylii{0}\def\@@yli{0}\fi
1303 \else
1304 \ylhetposition{#4}{-4}{0}{2}{0}% %substituent on 5

1305 \fi

1306 \if@ylsw \ifx\@@ylii\empty
1307 \def\@@ylii{0}\def\@@yli{0}\fi
1308 \else

1309 {%

1310 \clipdetection%
1311 \@clipfusefalse \if@iclip \@clipfusetrue \fi%
1312 \ylatombondposition{#4}{-9}{7}%  %10 for 8a position

1313 }% 1314 \fi

1315 \if@ylsw \ifx\@@ylii\empty
1316 \def\@@ylii{-171}\def\@@yli{-103}\fi
1317 \else

1318 {%

1319 \clipdetection%
1320 \@clipfusefalse \if@jclip \@clipfusetrue \fi%
1321 \ylatombondposition{#4}{-8}{1}%   %9 for 4a position

1322 }% 1323 \fi

1324 \if@ylsw \ifx\@@ylii\empty
1325 \def\@@ylii{-171}\def\@@yli{-303}\fi

1326 \fi

1327 \begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
1328 (1200,880)(-\shiftii,-\shifti){decaheterovi}%2002/4/30 by S. Fujita
1329 % %%%%%%%%%%%%%%%%%%
1330 % % outer skeleton %
1331 % %%%%%%%%%%%%%%%%%%
1332 \begingroup

1333 \resetbdsw%
1334 \@bond@@omit{#5}%
1335 {\let\fff=\jjj \let\eee=\iii%
1336 \Put@Direct(342,0){\set@skel@bond{#1}{c}{a}}%
1337 % bond between 1 and 2 \@aaa -> \skbonda etc
1338 \Put@Direct(342,0){\set@skel@bond{#1}{b}{b}}%
1339 % bond between 2 and 3 \@bbb -> \skbondb etc
1340 \Put@Direct(342,0){\set@skel@bond{#1}{a}{c}}%
1341 % bond between 3 and 4 \@ccc -> \skbondc etc
1342 \Put@Direct(342,0){\set@skel@bond{#1}{j}{d}}%
1343 % bond between 4 and 4a \@ddd -> \skbondd etc
1344 \Put@Direct(342,0){\set@skel@bond{#1}{k}{e}}%
1345 % bond between 4a and 8a \@kkk -> \skbonde etc
1346 \Put@Direct(342,0){\set@skel@bond{#1}{d}{f}}%
1347 % bond between 8a and 1 \@jjj -> \skbondf etc

1348 }%

1349 {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA%
1350 \let\ccc=\iii\let\bbb=\jjj%
1351 \set@skel@bond{#1}{e}{a}% bond between 8 and 8a \@eee -> \skbonda etc
1352 \set@skel@bond{#1}{i}{c}% bond between 5 and 4a \@iii -> \skbondc etc
1353 \set@skel@bond{#1}{h}{d}% bond between 5 and 6 \@hhh -> \skbondd etc
1354 \set@skel@bond{#1}{g}{e}% bond between 6 and 7 \@ggg -> \skbonde etc
1355 \set@skel@bond{#1}{f}{f}% bond between 7 and 8 \@fff -> \skbondf etc

1356 }%

1357 \endgroup
1358 % %%%%%%%%%%%%%%%%%%%%%
1359 % % inner double bond %
1360 % %%%%%%%%%%%%%%%%%%%%%
1361 \@tfor\member:=#2\do{%
1362 \if\member r\relax%
1363 {\let\fff=\jjj \let\eee=\iii%
1364 \Put@Direct(342,0){\bonda}% bond between 1 and 2
1365 \Put@Direct(342,0){\bondc}% bond between 3 and 4

1366 }%

1367 {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA%
1368 \let\ccc=\iii\let\bbb=\jjj%
1369 \Put@Direct(0,0){\bondb}% bond between 8a and 4a
1370 \Put@Direct(0,0){\bondf}% bond between 8 and 7
1371 \Put@Direct(0,0){\bondd}% bond between 5 and 6

1372 }%

1373 \else\if\member l\relax%
1374 \else\if\member a\relax%
1375 \Put@Direct(342,0){\bondc}% bond between 3 and 4
1376 \else\if\member b\relax%
1377 \Put@Direct(342,0){\bondb}% bond between 2 and 3
1378 \else\if\member c\relax%
1379 \Put@Direct(342,0){\bonda}% bond between 1 and 2
1380 \else\if\member d\relax%
1381 {\let\fff=\jjj%
1382 \Put@Direct(342,0){\bondf}% bond between 1 and 8a

1383 }%

1384 \else\if\member e\relax%
1385 {\let\aaa=\hhh \let\bbb=\jjj%
1386 \Put@Direct(0,0){\bonda}% bond between 8 and 8a

1387 }%

1388 \else\if\member f\relax%
1389 {\let\aaa=\hhh \let\fff=\gggA%
1390 \Put@Direct(0,0){\bondf}% bond between 8 and 7

1391 }%

1392 \else\if\member g\relax%
1393 {\let\eee=\fff \let\fff=\gggA%
1394 \Put@Direct(0,0){\bonde}% bond between 6 and 7

1395 }%

1396 \else\if\member h\relax%
1397 {\let\ddd=\eee \let\eee=\fff%
1398 \Put@Direct(0,0){\bondd}% bond between 5 and 6

1399 }%

1400 \else\if\member i\relax%
1401 {\let\ccc=\iii \let\ddd=\eee%
1402 \Put@Direct(0,0){\bondc}% bond between 5 and 4a

1403 }%

1404 \else\if\member j\relax%
1405 {\let\eee=\iii%
1406 \Put@Direct(342,0){\bondd}% bond between 4 and 4a

1407 }%

1408 \else\if\member k\relax%
1409 {\let\ccc=\iii\let\bbb=\jjj%
1410 \Put@Direct(0,0){\bondb}% bond between 8a and 4a

1411 }%

1412 \else\if\member K\relax%
1413 {\let\eee=\iii\let\fff=\jjj%
1414 \Put@Direct(342,0){\bonde}% bond between 8a and 4a in the other ring

1415 }%

1416 \else\if\member A%left aromatic circle
1417 \Put@oCircle(0,203){240}%               %circle
1418 \else\if\member B%left aromatic circle
1419 \Put@oCircle(342,203){240}%             %circle
1420 \else
1421 \expandafter\twoCH@@R\member//%
1422 \def\aax{4a}\def\aay{8a}\def\aaz{10}%
1423  \if\@@tmpa 4\relax%                  % plus charge etc.
1424  \putratom{304}{282}{\@@tmpb}%      % right type
1425  \else\if\@@tmpa 3\relax%
1426  \putratom{402}{253}{\@@tmpb}%      % right type
1427  \else\if\@@tmpa 2\relax%
1428  \putratom{402}{120}{\@@tmpb}%      % right type
1429  \else\if\@@tmpa 1\relax%
1430  \putratom{304}{68}{\@@tmpb}%       % right type
1431  \else\if\@@tmpa 7\relax%
1432  \putlatom{-60}{253}{\@@tmpb}%      % left type
1433  \else\if\@@tmpa 6\relax%
1434  \putlatom{-60}{120}{\@@tmpb}%      % left type
1435  \else\if\@@tmpa 5\relax%
1436  \putratom{-38}{282}{\@@tmpb}%      % right type
1437  \else\if\@@tmpa 9\relax%
1438  \putratom{60}{253}{\@@tmpb}%       % right type
1439  \else\ifx\@@tmpa\aax\relax%
1440  \putratom{60}{253}{\@@tmpb}%       % right type

1441  \else\ifx\@@tmpa\aay\relax%
1442  \putratom{60}{120}{\@@tmpb}%       % right type
1443  \else\ifx\@@tmpa\aaz\relax% 1998/10/17 by S. Fujita
1444 %      \else\if\@@tmpa 10\relax%
1445  \putratom{60}{120}{\@@tmpb}%       % right type
1446  \else\if\@@tmpa 8\relax%
1447  \putratom{-38}{68}{\@@tmpb}%       % right type
1448  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
1449 % ***********************
1450 % * setting fused rings *
1451 % ***********************
1452 \expandafter\twoCH@R\member//%
1453 \set@fusion@decavi
1454 \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
1455 \fi\fi\fi\fi\fi\fi%

1456 }%

1457 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1458 % % setting hetero atoms and spiro rings %
1459 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1460 \iniflag\iniatom%
1461 \@tmpclipfalse
1462 \Put@Direct(0,0){\set@hetatom@sixv{#3}{12}{3}{7}{-1}%
1463 % \@gclipfalse \if@fclip \global\@gcliptrue \fi%
1464 % \@fclipfalse \if@eclip \global\@fcliptrue \fi%
1465 % \@eclipfalse \if@clip \global\@ecliptrue \fi%
1466 \storeclipinfo
1467 }%substituents on 6 to 8
1468 \developclipinfo
1469 \Put@Direct(0,0){\set@hetatom@sixv{#3}{-4}{0}{2}{0}%
1470 % \@aclipfalse \if@aclip \global\@hcliptrue \fi%
1471 \@aclipfalse \if@aclip \@hcliptrue \fi%
1472 \storeclipinfo
1473 }%%substituent on 5
1474 \developclipinfo
1475 \Put@Direct(0,0){\set@vrtx@decafusevi{#3}%
1476 \@tmpclipfalse
1477 %  \if@iclip \global\@tmpcliptrue \fi
1478 %  \if@jclip \global\@icliptrue \fi
1479 %  \if@tmpclip \global\@jcliptrue \fi
1480 \if@iclip \@tmpcliptrue \fi
1481 \if@jclip \@icliptrue \fi
1482 \if@tmpclip \@jcliptrue \fi
1483 \storeclipinfo
1484 }% fused positions
1485 \developclipinfo
1486 %to be done after all
1487 \Put@Direct(342,0){\set@hetatom@sixv{#3}{5}{0}{5}{-1}%
1488 %   \if@aclip \global\@acliptrue\fi
1489 %   \if@bclip \global\@bcliptrue\fi
1490 %   \if@cclip \global\@ccliptrue\fi
1491 %   \if@clip \global\@cliptrue\fi
1492 \storeclipinfo
1493 }% %substituents on 1 to 4
1494 \developclipinfo

1495 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1496 % % setting substituents and exocyclic bonds %
1497 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1498 \global\drawsamesubsttrue%2002/05/30 warning on
1499 \Put@Direct(342,0){\setsixringv{#4}{5}{0}{5}{-1}}% %substituents on 1 to 4
1500 \global\drawsamesubstfalse%2002/05/30 warning off
1501 {\@clipfalse \if@eclip \@cliptrue \fi%      %substituents on 6 to 8
1502 \@eclipfalse \if@fclip \@ecliptrue \fi%
1503 \@fclipfalse \if@gclip \@fcliptrue \fi%
1504 \Put@Direct(0,0){\setsixringv{#4}{12}{3}{7}{-1}}%

1505 }%

1506 {\@aclipfalse \if@hclip \@acliptrue \fi%    %substituent on 5
1507 \Put@Direct(0,0){\setsixringv{#4}{-4}{0}{2}{0}}%

1508 }%

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

1511 }%

1512 {\@clipfusefalse \if@jclip \@clipfusetrue \fi%
1513 \Put@Direct(171,303){\setatombond{#4}{-8}{1}}%   %9 for 4a position

1514 }%

1515 \end{ShiftPicEnvB}\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
1516 \newif\if@tmpclip \@tmpclipfalse
1517 \def\test@vertix@decavi#1{%
1518 \@forsemicol\member:=#1\do{%
1519 \ifx\member\empty\else%
1520 \expandafter\@m@mb@r\member;\relax%
1521 \expandafter\twoch@r\@membera{}%
1522 \ifcase\@tmpa%
1523 \or%
1524 \if\@tmpb s\relax\def\ddd{}\else\def\ddd{@}\fi
1525 \or%2
1526 \if\@tmpb s\relax\def\ccc{}\else\def\ccc{@}\fi
1527 \or%3
1528 \if\@tmpb s\relax\def\bbb{}\else\def\bbb{@}\fi
1529 \or%
1530 \if\@tmpb a%
1531  \def\jjj{@}%4a
1532 \else\if\@tmpb s%
1533  \def\aaa{}%4
1534 \else\if\@tmpb h%
1535  \def\aaa{@}%4
1536 \else\ifx\@tmpb\empty%
1537  \def\aaa{@}%4
1538 \fi\fi\fi\fi%
1539 \or%5
1540 \if\@tmpb s\relax\def\hhh{}\else\def\hhh{@}\fi
1541 \or%6
1542 \if\@tmpb s\relax\def\gggA{}\else\def\gggA{@}\fi
1543 \or%7

1544 \if\@tmpb s\relax\def\fff{}\else\def\fff{@}\fi
1545 \or%
1546 \if\@tmpb a%
1547  \xdef\iii{@}%8a
1548 \else\if\@tmpb s%
1549  \xdef\eee{}%8s
1550 \else\if\@tmpb h%
1551  \xdef\eee{@}%8h
1552 \else\ifx\@tmpb\empty%
1553  \xdef\eee{@}%8
1554 \fi\fi\fi\fi%
1555 \or%9 (= 4a)
1556 \if\@tmpb s\relax\def\jjj{}\else\def\jjj{@}\fi
1557 \or%10 (= 8a)
1558 \if\@tmpb s\relax\def\iii{}\else\def\iii{@}\fi
1559 \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
1560 \def\set@vrtx@decafusevi#1{%
1561 \@forsemicol\member:=#1\do{%
1562 \ifx\member\empty\else%
1563 \expandafter\@m@mb@r\member;\relax%
1564 \expandafter\twoch@r\@membera{}%
1565 \ifcase\@tmpa\or\or\or
1566 \or%%%%4
1567 \if\@tmpb a\relax%
1568 %     \global\@icliptrue%
1569  \@icliptrue%2001/06/20 by S. Fujita
1570  \putlatom{207}{280}{\@memberb}% % left type
1571 \else\relax

1572 \fi

1573 \or\or\or
1574 \or%8
1575 \if\@tmpb a\relax%
1576 %     \global\@jcliptrue%
1577  \@jcliptrue%%2001/06/20 by S. Fujita
1578  \putlatom{207}{65}{\@memberb}%  % left type
1579 \else\relax

1580 \fi

1581 \or%9 (= 4a)
1582 %     \global\@icliptrue%
1583  \@icliptrue%%2001/06/20 by S. Fujita
1584  \putlatom{207}{280}{\@memberb}% % left type
1585 \or%10 (= 8a)
1586 %     \global\@jcliptrue%
1587  \@jcliptrue%%2001/06/20 by S. Fujita
1588  \putlatom{207}{65}{\@memberb}%  % left type
1589 \fi\fi}%
1590 }% 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
1591 \def\set@fusion@decavi{%
1592 \let\@@tmpa=\@tmpa
1593 \let\@@tmpb=\@tmpb
1594 \if\@tmpa a%
1595  \let\@@tmpa=\@tmpa
1596  \Put@Direct(342,0){\set@fusionadd@sixvi}%
1597 \else\if\@tmpa A%
1598  \let\@@tmpa=\@tmpa
1599  \Put@Direct(342,0){\set@fusionadd@sixvi}%
1600 \else\if\@tmpa b%
1601  \let\@@tmpa=\@tmpa
1602  \Put@Direct(342,0){\set@fusionadd@sixvi}%
1603 \else\if\@tmpa B%
1604  \let\@@tmpa=\@tmpa
1605  \Put@Direct(342,0){\set@fusionadd@sixvi}%
1606 \else\if\@tmpa c%
1607  \let\@@tmpa=\@tmpa
1608  \Put@Direct(342,0){\set@fusionadd@sixvi}%
1609 \else\if\@tmpa C%
1610  \let\@@tmpa=\@tmpa
1611  \Put@Direct(342,0){\set@fusionadd@sixvi}%
1612 \else\if\@tmpa d%
1613  \let\@@tmpa=\@tmpa
1614  \Put@Direct(342,0){\set@fusionadd@sixvi}%
1615  \if@smallringsw\else
1616  \XyMTeXWarning{Unfavorable Fusion for bond `d'}%

1617 \fi

1618 \else\if\@tmpa D%
1619  \let\@@tmpa=\@tmpa
1620  \Put@Direct(342,0){\set@fusionadd@sixvi}%
1621  \if@smallringsw\else
1622  \XyMTeXWarning{Unfavorable Fusion for bond `D'}%

1623 \fi

1624 \else\if\@tmpa e%
1625  \edef\@@tmpa{c}%
1626  \Put@Direct(0,0){\set@fusionadd@sixvi}%
1627  \if@smallringsw\else
1628  \XyMTeXWarning{Unfavorable Fusion for bond `e'}%

1629 \fi

1630 \else\if\@tmpa E%
1631  \edef\@@tmpa{C}%
1632  \Put@Direct(0,0){\set@fusionadd@sixvi}%
1633  \if@smallringsw\else
1634  \XyMTeXWarning{Unfavorable Fusion for bond `E'}%

1635 \fi

1636 \else\if\@tmpa f%
1637  \edef\@@tmpa{d}%
1638  \Put@Direct(0,0){\set@fusionadd@sixvi}%
1639 \else\if\@tmpa F%
1640  \edef\@@tmpa{D}%
1641  \Put@Direct(0,0){\set@fusionadd@sixvi}%
1642 \else\if\@tmpa g%
1643  \edef\@@tmpa{e}%

1644  \Put@Direct(0,0){\set@fusionadd@sixvi}%
1645 \else\if\@tmpa G%
1646  \edef\@@tmpa{E}%
1647  \Put@Direct(0,0){\set@fusionadd@sixvi}%
1648 \else\if\@tmpa h%
1649  \edef\@@tmpa{f}%
1650  \Put@Direct(0,0){\set@fusionadd@sixvi}%
1651 \else\if\@tmpa H%
1652  \edef\@@tmpa{F}%
1653  \Put@Direct(0,0){\set@fusionadd@sixvi}%
1654 \else\if\@tmpa i%
1655  \edef\@@tmpa{a}%
1656  \Put@Direct(0,0){\set@fusionadd@sixvi}%
1657  \if@smallringsw\else
1658  \XyMTeXWarning{Unfavorable Fusion for bond `i'}%

1659 \fi

1660 \else\if\@tmpa I%
1661  \edef\@@tmpa{A}%
1662  \Put@Direct(0,0){\set@fusionadd@sixvi}%
1663  \if@smallringsw\else
1664  \XyMTeXWarning{Unfavorable Fusion for bond `I'}%

1665 \fi

1666 \else\if\@tmpa j%
1667  \edef\@@tmpa{f}%
1668  \Put@Direct(342,0){\set@fusionadd@sixvi}%
1669  \if@smallringsw\else
1670  \XyMTeXWarning{Unfavorable Fusion for bond `j'}%

1671 \fi

1672 \else\if\@tmpa J%
1673  \edef\@@tmpa{F}%
1674  \Put@Direct(342,0){\set@fusionadd@sixvi}%
1675  \if@smallringsw\else
1676  \XyMTeXWarning{Unfavorable Fusion for bond `J'}%

1677 \fi

1678 \else\if\@tmpa k%
1679  \edef\@@tmpa{e}%
1680  \Put@Direct(342,0){\set@fusionadd@sixvi}%
1681  \if@smallringsw\else
1682  \XyMTeXWarning{Forbidden Fusion for bond `k'}%

1683 \fi

1684 \else\if\@tmpa K%
1685  \edef\@@tmpa{E}%
1686  \Put@Direct(342,0){\set@fusionadd@sixvi}%
1687  \if@smallringsw\else
1688  \XyMTeXWarning{Forbidden Fusion for bond `K'}%

1689 \fi

1690 \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
1691 \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
1692 }% 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

1693 \def\decaheterovb{\@ifnextchar({\@deca@heterovb(@}{\@deca@heterovb(@)}}
1694 \def\@deca@heterovb(#1){\@ifnextchar[{\@deca@@heterovb(#1)[@}%
1695 {\@deca@@heterovb(#1)[@]}}
1696 \def\@deca@@heterovb(#1)[#2]#3#4{\@ifnextchar[%
1697 {\@decaheterovb(#1)[#2]{#3}{#4}[@}%
1698 {\@decaheterovb(#1)[#2]{#3}{#4}[@]}}
1699 \def\@decaheterovb(#1)[#2]#3#4[#5]{%
1700 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1701 % % treatment of atom list %
1702 % %%%%%%%%%%%%%%%%%%%%%%%%%%
1703 \iniflag\iniatom%
1704 \test@vertix@decavb{#3}%
1705 % %%%%%%%%%%%%%%%%%%%%%%%
1706 % % adjustment for (yl) %
1707 % %%%%%%%%%%%%%%%%%%%%%%%
1708 \@reset@ylsw%
1709 {\let\eee=\ddd\let\ddd=\ccc
1710 \let\ccc=\bbb\let\bbb=\aaa

1711 \ylhetpositionb{#4}{1}{1}{6}{0}% %substituents on 1 to 4

1712 }%

1713 \if@ylsw \ifx\@@ylii\empty
1714 \def\@@ylii{0}\def\@@yli{0}\fi
1715 \else
1716 \ylhetpositionb{#4}{0}{4}{7}{0}% %substituents on 5 to 6

1717 \fi

1718 \if@ylsw \ifx\@@ylii\empty
1719 \def\@@ylii{171}\def\@@yli{-303}\fi
1720 \else
1721 {\let\aaa=\gggA \let\bbb=\hhh
1722 \ylhetpositionb{#4}{-6}{0}{3}{0}% %substituents on 7 to 8

1723 }% 1724 \fi

1725 \if@ylsw \ifx\@@ylii\empty
1726 \def\@@ylii{171}\def\@@yli{-303}\fi
1727 \else

1728 {%

1729 \clipdetection%
1730 \@clipfusefalse \if@iclip \@clipfusetrue \fi%
1731 \ylatombondposition{#4}{-8}{9}%   %9 %for 4a position

1732 }% 1733 \fi

1734 \if@ylsw \ifx\@@ylii\empty
1735 \def\@@ylii{171}\def\@@yli{-303}\fi
1736 \else

1737 {%

1738 \clipdetection%
1739 \@clipfusefalse \if@jclip \@clipfusetrue \fi%
1740 \ylatombondposition{#4}{-9}{3}%  %10 for 8a position

1741 }% 1742 \fi

1743 \if@ylsw \ifx\@@ylii\empty
1744 \def\@@ylii{0}\def\@@yli{-406}\fi

1745 \fi

1746 \begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
1747 (1000,1200)(-550,-240){decaheterob}%2002/4/30 by S. Fujita
1748 % %%%%%%%%%%%%%%%%%%
1749 % % outer skeleton %
1750 % %%%%%%%%%%%%%%%%%%
1751 \begingroup
1752 \resetbdsw%
1753 \@bond@@omit{#5}%
1754 {\let\eee=\ddd\let\ddd=\ccc
1755 \let\ccc=\bbb\let\bbb=\aaa
1756 \let\aaa=\jjj \let\fff=\iii
1757 \set@skel@bond{#1}{j}{a}% bond between 8a and 1 \@jjj -> \skbonda etc
1758 \set@skel@bond{#1}{a}{b}% bond between 1 and 2 \@aaa -> \skbondb etc
1759 \set@skel@bond{#1}{b}{c}% bond between 2 and 3 \@bbb -> \skbondc etc
1760 \set@skel@bond{#1}{c}{d}% bond between 3 and 4 \@ccc -> \skbondd etc
1761 \set@skel@bond{#1}{d}{e}% bond between 4 and 4a \@ddd -> \skbonde etc
1762 \set@skel@bond{#1}{k}{f}% bond between 4a and 8a \@kkk -> \skbondf etc

1763 }%

1764 {\let\aaa=\gggA\let\bbb=\hhh\let\ccc=\jjj\let\ddd=\iii

1765 \Put@Direct(-171,303){\set@skel@bond{#1}{h}{a}}%
1766 % bond between 7 and 8 \@hhh -> \skbonda etc
1767 \Put@Direct(-171,303){\set@skel@bond{#1}{i}{b}}%
1768 % bond between 8 and 8a \@iii -> \skbondb etc
1769 \Put@Direct(-171,303){\set@skel@bond{#1}{e}{d}}%
1770 % bond between 4a and 5 \@eee -> \skbondd etc
1771 \Put@Direct(-171,303){\set@skel@bond{#1}{f}{e}}%
1772 % bond between 5 and 6 \@fff -> \skbonde etc
1773 \Put@Direct(-171,303){\set@skel@bond{#1}{g}{f}}%
1774 % bond between 6 and 7 \@ggg -> \skbondf etc

1775 }%

1776 \endgroup
1777 % %%%%%%%%%%%%%%%%%%%%%
1778 % % inner double bond %
1779 % %%%%%%%%%%%%%%%%%%%%%
1780 \@tfor\member:=#2\do{%
1781 \if\member r\relax%
1782 {\let\aaa=\gggA\let\bbb=\hhh\let\ccc=\jjj\let\ddd=\iii
1783 \Put@Direct(-171,303){\bonda}% bond between 7 and 8
1784 \Put@Direct(-171,303){\bonde}% bond between 5 and 6

1785 }%

1786 {\let\eee=\ddd\let\ddd=\ccc
1787 \let\ccc=\bbb\let\bbb=\aaa
1788 \let\aaa=\jjj \let\fff=\iii
1789 \Put@Direct(0,0){\bondb}% bond between 1 and 2
1790 \Put@Direct(0,0){\bondd}% bond between 3 and 4
1791 \Put@Direct(0,0){\bondf}% bond between 4a and 4b

1792 }%

1793 \else\if\member l\relax%
1794 \else\if\member a\relax%
1795 {\let\ccc=\bbb\let\bbb=\aaa
1796 \Put@Direct(0,0){\bondb}% bond between 1 and 2

1797 }%

1798 \else\if\member b\relax
1799 {\let\ddd=\ccc\let\ccc=\bbb
1800 \Put@Direct(0,0){\bondc}% bond between 2 and 3

1801 }%

1802 \else\if\member c\relax
1803 {\let\eee=\ddd\let\ddd=\ccc
1804 \Put@Direct(0,0){\bondd}% bond between 3 and 4

1805 }%

1806 \else\if\member d\relax%
1807 {\let\fff=\eee\let\eee=\ddd
1808 \Put@Direct(0,0){\bonde}% bond between 4 and 4a

1809 }%

1810 \else\if\member e\relax%
1811 {\let\ddd=\iii%
1812 \Put@Direct(-171,303){\bondd}% bond between 5 and 4a

1813 }%

1814 \else\if\member f\relax%
1815 \Put@Direct(-171,303){\bonde}% bond between 5 and 6
1816 \else\if\member g\relax%
1817 {\let\aaa=\gggA
1818 \Put@Direct(-171,303){\bondf}% bond between 6 and 7

1819 }%

1820 \else\if\member h\relax%
1821 {\let\aaa=\gggA \let\bbb=\hhh%
1822 \Put@Direct(-171,303){\bonda}% bond between 8 and 7

1823 }%

1824 \else\if\member i\relax%
1825 {\let\bbb=\hhh \let\ccc=\jjj%
1826 \Put@Direct(-171,303){\bondb}% bond between 8 and 8a

1827 }%

1828 \else\if\member j\relax%
1829 {\let\bbb=\aaa\let\aaa=\jjj%
1830 \Put@Direct(0,0){\bonda}% bond between 1 and 8a

1831 }%

1832 \else\if\member k\relax%
1833 {\let\aaa=\jjj\let\fff=\iii%
1834 \Put@Direct(0,0){\bondf}% bond between 8a and 4a

1835 }%

1836 \else\if\member K\relax%
1837 {\let\ccc=\jjj\let\ddd=\iii%
1838 \Put@Direct(-171,303){\bondc}% bond between 8a and 4a in the other ring

1839 }%

1840 \else\if\member A%left aromatic circle
1841 \Put@oCircle(-171,506){240}%               %circle
1842 \else\if\member B%left aromatic circle
1843 \Put@oCircle(0,203){240}%             %circle
1844 \else \expandafter\twoCH@@R\member//%
1845 \def\aax{8a}\def\aay{4a}\def\aaz{10}%
1846  \if\@@tmpa 1\relax%                  % plus charge etc.
1847  \putratom{60}{253}{\@@tmpb}%      % right type
1848  \else\if\@@tmpa 2\relax%
1849  \putratom{60}{120}{\@@tmpb}%      % right type
1850  \else\if\@@tmpa 3\relax%
1851  \putratom{-38}{68}{\@@tmpb}%       % right type
1852  \else\if\@@tmpa 4\relax%
1853  \putratom{-120}{120}{\@@tmpb}%       % right type
1854  \else\if\@@tmpa 5\relax%
1855  \putlatom{-209}{431}{\@@tmpb}%      % left type
1856  \else\if\@@tmpa 6\relax%
1857  \putlatom{-209}{546}{\@@tmpb}%      % left type
1858  \else\if\@@tmpa 7\relax%
1859  \putratom{-209}{585}{\@@tmpb}%      % right type
1860  \else\if\@@tmpa 8\relax%
1861  \putratom{-111}{546}{\@@tmpb}%      % right type
1862  \else\if\@@tmpa 9\relax%
1863  \putlatom{-60}{253}{\@@tmpb}%      % left type
1864  \else\ifx\@@tmpa\aaz\relax%
1865  \putratom{-38}{282}{\@@tmpb}%      % right type
1866  \else\ifx\@@tmpa\aax\relax%
1867  \putratom{-38}{282}{\@@tmpb}%      % right type
1868  \else\ifx\@@tmpa\aay\relax%
1869  \putratom{-209}{371}{\@@tmpb}%       % right type
1870  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
1871 % ***********************
1872 % * setting fused rings *

1873 % ***********************
1874 \expandafter\twoCH@R\member//%
1875 \set@fusion@decavb
1876 \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
1877 \fi\fi\fi\fi\fi\fi%

1878 }%

1879 % %%%%%%%%%%%%%%%%%%%%%%%%
1880 % % setting hetero atoms %
1881 % %%%%%%%%%%%%%%%%%%%%%%%%
1882 \iniflag\iniatom
1883 \Put@Direct(-171,303){\set@hetatom@sixv{#3}{0}{4}{7}{0}%
1884 %\if@eclip \global\@ecliptrue\fi%
1885 %\if@fclip \global\@fcliptrue\fi%
1886 \storeclipinfo
1887 }% %substituents on 5 to 6
1888 \developclipinfo
1889 \Put@Direct(-171,303){\set@hetatom@sixv{#3}{-6}{0}{3}{0}%
1890 % \@gclipfalse \if@aclip \global\@gcliptrue \fi%
1891 % \@hclipfalse \if@bclip \global\@hcliptrue \fi%
1892 \@gclipfalse \if@aclip \@gcliptrue \fi%
1893 \@hclipfalse \if@bclip \@hcliptrue \fi%
1894 \storeclipinfo
1895 }% %substituents on 7 to 8
1896 \developclipinfo
1897 \Put@Direct(0,0){\set@vrtx@decafusevb{#3}%
1898 %  \if@iclip \global\@icliptrue \fi
1899 %  \if@jclip \global\@jcliptrue \fi
1900 \storeclipinfo
1901 }%9 %for 4a position, %10 for 8a position
1902 \developclipinfo
1903 %to be done after all
1904 \Put@Direct(0,0){\iniflag%2000/11/11 by S. Fujita
1905 \set@hetatom@sixv{#3}{1}{1}{6}{0}%
1906 %\@aclipfalse \if@bclip \global\@acliptrue \fi%
1907 %\@bclipfalse \if@cclip \global\@bcliptrue \fi%
1908 %\@cclipfalse \if@clip \global\@ccliptrue \fi%
1909 %\@clipfalse \if@eclip \global\@cliptrue \fi%
1910 \@aclipfalse \if@bclip \@acliptrue \fi%
1911 \@bclipfalse \if@cclip \@bcliptrue \fi%
1912 \@cclipfalse \if@clip \@ccliptrue \fi%
1913 \@clipfalse \if@eclip \@cliptrue \fi%
1914 \storeclipinfo
1915 }% %substituents on 1 to 4
1916 \developclipinfo
1917 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1918 % % setting substituents and exocyclic bonds %
1919 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1920 \global\drawsamesubsttrue%2002/05/30 warning on

1921 {%

1922 \@eclipfalse \if@clip \@ecliptrue \fi%
1923 \@clipfalse \if@cclip \@cliptrue \fi%
1924 \@cclipfalse \if@bclip \@ccliptrue \fi%
1925 \@bclipfalse \if@aclip \@bcliptrue \fi%

1926 \Put@Direct(0,0){\setsixringv{#4}{1}{1}{6}{0}}% %substituents on 1 to 4

1927 }%

1928 \global\drawsamesubstfalse%2002/05/30 warning off

1929 {%

1930 \Put@Direct(-171,303){\setsixringv{#4}{0}{4}{7}{0}}% %substituents on 5 to 6

1931 }% 1932 {%

1933 \@aclipfalse \if@gclip \@acliptrue \fi%
1934 \@bclipfalse \if@hclip \@bcliptrue \fi%
1935 \Put@Direct(-171,303){\setsixringv{#4}{-6}{0}{3}{0}}% %substituents on 7 to 8

1936 }%

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

1939 }%

1940 {\@clipfusefalse \if@jclip \@clipfusetrue \fi%
1941 \Put@Direct(0,406){\setatombond{#4}{-9}{3}}%  %10 for 8a position

1942 }%

1943 \end{ShiftPicEnvB}\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
1944 \def\ylhetpositionb#1#2#3#4#5{%
1945 \@@ylswfalse%%%\@reset@ylsw
1946 \@forsemicol\member:=#1\do{%
1947 \if@@ylsw\else%
1948 \ifx\member\empty\else%
1949 \expandafter\@m@mb@r\member;\relax%
1950 \expandafter\threech@r\@membera{}{}\relax%
1951 \ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi
1952 \if@@ylsw
1953 \ifnum#5<0\relax%
1954 \@tmpaa=-\@tmpa\relax \advance\@tmpaa by#2\relax%
1955 \else\@tmpaa=\@tmpa\relax \advance\@tmpaa by#2\relax\fi
1956 \ifnum\@tmpaa>#3\relax%
1957 \ifnum\@tmpaa<#4\relax%
1958 \ifcase\@tmpaa%0 omit

1959 \or

1960  \ifx\aaa\empty%
1961  \ifx\gggA\empty% aaa and ggg are absent
1962  \gdef\@ylii{0}\gdef\@yli{-406}\global\@ylswtrue%\@ylatrue% subst. on 1
1963  \else% ggg is present
1964  \gdef\@ylii{0}\gdef\@yli{-442}\global\@ylswtrue%\@ylatrue% subst. on 1

1965 \fi

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

1968 \fi 1969 \or

1970  \ifx\bbb\empty
1971  \ifx\hhh\empty% aaa and hhh are absent
1972  \gdef\@ylii{-171}\gdef\@yli{-303}\global\@ylswtrue%\@ylbtrue% subst. on 2
1973  \else%hhh is present
1974  \gdef\@ylii{-213}\gdef\@yli{-327}\global\@ylswtrue%\@ylbtrue% subst. on 2

1975 \fi

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

1978 \fi

1979 \or\ifx\ccc\empty
1980  \gdef\@ylii{-171}\gdef\@yli{-103}\global\@ylswtrue%\@ylctrue% subst. on 3
1981  \else
1982  \gdef\@ylii{-213}\gdef\@yli{-79}\global\@ylswtrue%\@ylctrue% subst. on 3

1983 \fi 1984 \or

1985 \ifx\ddd\empty
1986  \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%\@yldtrue% subst. on 4
1987  \else% ddd present
1988  \gdef\@ylii{0}\gdef\@yli{36}\global\@ylswtrue%\@yldtrue% subst. on 4

1989 \fi 1990 \or

1991  \ifx\eee\empty
1992  \gdef\@ylii{173}\gdef\@yli{-103}\global\@ylswtrue%\@yletrue% subst. on 5
1993  \else% eee is present
1994  \gdef\@ylii{223}\gdef\@yli{-79}\global\@ylswtrue%\@yletrue% subst. on 5

1995 \fi 1996 \or

1997  \ifx\fff\empty
1998  \gdef\@ylii{173}\gdef\@yli{-303}\global\@ylswtrue%\@ylftrue% subst. on 6
1999  \else%fff is present
2000  \gdef\@ylii{213}\gdef\@yli{-327}\global\@ylswtrue%\@ylftrue% subst. on 6

2001 \fi

2002 \fi%end of ifcase
2003 \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
2004 \def\test@vertix@decavb#1{%
2005 \@forsemicol\member:=#1\do{%
2006 \ifx\member\empty\else%
2007 \expandafter\@m@mb@r\member;\relax%
2008 \expandafter\twoch@r\@membera{}%
2009 \ifcase\@tmpa%
2010 \or% \xdef\aaa{\@memberb}%1
2011 \if\@tmpb s\relax\def\aaa{}\else\def\aaa{@}\fi
2012 \or% \xdef\bbb{\@memberb}%2
2013 \if\@tmpb s\relax\def\bbb{}\else\def\bbb{@}\fi
2014 \or% \xdef\ccc{\@memberb}%3
2015 \if\@tmpb s\relax\def\ccc{}\else\def\ccc{@}\fi
2016 \or%
2017 \if\@tmpb a%
2018  \def\iii{@}%4a
2019 \else\if\@tmpb s%
2020  \def\ddd{}%4
2021 \else\if\@tmpb h%
2022  \def\ddd{@}%4
2023 \else\ifx\@tmpb\empty%

2024  \def\ddd{@}%4
2025 \fi\fi\fi\fi%
2026 \or% \xdef\eee{\@memberb}%5
2027 \if\@tmpb s\relax\def\eee{}\else\def\eee{@}\fi
2028 \or% \xdef\fff{\@memberb}%6
2029 \if\@tmpb s\relax\def\fff{}\else\def\fff{@}\fi
2030 \or% \xdef\gggA{\@memberb}%7
2031 \if\@tmpb s\relax\def\gggA{}\else\def\gggA{@}\fi
2032 \or%
2033 \if\@tmpb a%
2034  \def\jjj{@}%8a
2035 \else\if\@tmpb s%
2036  \def\hhh{}%8
2037 \else\if\@tmpb h%
2038  \def\hhh{@}%4
2039 \else\ifx\@tmpb\empty%
2040  \def\hhh{@}%4
2041 \fi\fi\fi\fi%
2042 \or% \xdef\iii{\@memberb}%9 (= 4a)
2043 \if\@tmpb s\relax\def\iii{}\else\def\iii{@}\fi
2044 \or% \xdef\jjj{\@memberb}%10 (= 8a)
2045 \if\@tmpb s\relax\def\jjj{}\else\def\jjj{@}\fi
2046 \fi\fi}%
2047 }% end of the macro \test@vertix@decavb

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

\set@vrtx@decafusevb
2048 \def\set@vrtx@decafusevb#1{%
2049 \@forsemicol\member:=#1\do{%
2050 \ifx\member\empty\else%
2051 \expandafter\@m@mb@r\member;\relax%
2052 \expandafter\twoch@r\@membera{}%
2053 \ifcase\@tmpa\or\or\or
2054 \or%%%%4
2055 \if\@tmpb a\relax%
2056 %     \global\@icliptrue%
2057  \@icliptrue%%2001/06/20 by S. Fujita
2058  \putlatom{-135}{280}{\@memberb}% % left type
2059 \else\relax

2060 \fi

2061 \or\or\or
2062 \or%8
2063 \if\@tmpb a\relax%
2064 %     \global\@jcliptrue%
2065  \@jcliptrue%%2001/06/20 by S. Fujita
2066  \putratom{-31}{356}{\@memberb}%  % right type
2067 \else\relax

2068 \fi

2069 \or%9 (= 4a)
2070 %     \global\@icliptrue%
2071  \@icliptrue%%2001/06/20 by S. Fujita
2072  \putlatom{-135}{280}{\@memberb}% % left type

2073 \or%10 (= 8a)
2074 %     \global\@jcliptrue%
2075  \@jcliptrue%%2001/06/20 by S. Fujita
2076  \putratom{-31}{356}{\@memberb}%  % right type
2077 \fi\fi}%
2078 }% 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,

3. placing inner double bonds,

4. setting hetero atoms, and

5. placing substituents by using \setsixringv several times.

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

2079 \def\decaheterovt{\@ifnextchar({\@deca@heterovt(@}{\@deca@heterovt(@)}}
2080 \def\@deca@heterovt(#1){\@ifnextchar[{\@deca@@heterovt(#1)[@}%
2081 {\@deca@@heterovt(#1)[@]}}
2082 \def\@deca@@heterovt(#1)[#2]#3#4{\@ifnextchar[%
2083 {\@decaheterovt(#1)[#2]{#3}{#4}[@}%
2084 {\@decaheterovt(#1)[#2]{#3}{#4}[@]}}
2085 \def\@decaheterovt(#1)[#2]#3#4[#5]{%

2086 % %%%%%%%%%%%%%%%%%%%%%%%%%%
2087 % % treatment of atom list %
2088 % %%%%%%%%%%%%%%%%%%%%%%%%%%
2089 \iniflag\iniatom%
2090 \test@vertix@decavb{#3}%
2091 % %%%%%%%%%%%%%%%%%%%%%%%
2092 % % adjustment for (yl) %
2093 % %%%%%%%%%%%%%%%%%%%%%%%
2094 \@reset@ylsw%
2095 {\let\fff=\aaa
2096 \ylhetpositiont{#4}{5}{5}{7}{0}% %substituent on 1

2097 }%

2098 \if@ylsw \ifx\@@ylii\empty
2099 \def\@@ylii{-171}\def\@@yli{-303}\fi
2100 \else
2101 {\let\aaa=\bbb\let\bbb=\ccc\let\ccc=\ddd
2102 \ylhetpositiont{#4}{-1}{0}{4}{0}% %substituents on 2 to 4

2103 }% 2104 \fi

2105 \if@ylsw \ifx\@@ylii\empty
2106 \def\@@ylii{-171}\def\@@yli{-303}\fi
2107 \else
2108 {\let\ccc=\eee\let\ddd=\fff
2109 \let\eee=\gggA\let\fff=\hhh
2110 \ylhetpositiont{#4}{-2}{2}{7}{0}% %substituents on 5 to 8

2111 }% 2112 \fi

2113 \if@ylsw \ifx\@@ylii\empty
2114 \def\@@ylii{0}\def\@@yli{0}\fi
2115 \else

2116 {%

2117 \clipdetection%
2118 \@clipfusefalse \if@iclip \@clipfusetrue \fi%
2119 \ylatombondposition{#4}{-8}{5}%   %9 %for 4a position

2120 }% 2121 \fi

2122 \if@ylsw \ifx\@@ylii\empty
2123 \def\@@ylii{-171}\def\@@yli{-303}\fi
2124 \else

2125 {%

2126 \clipdetection%
2127 \@clipfusefalse \if@jclip \@clipfusetrue \fi%
2128 \ylatombondposition{#4}{-9}{11}%  %10 for 8a position

2129 }% 2130 \fi

2131 \if@ylsw \ifx\@@ylii\empty
2132 \def\@@ylii{0}\def\@@yli{-406}\fi

2133 \fi

2134 \begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
2135 (1200,880)(-\shiftii,-\shifti){decaheterovt}%2002/4/30 by S. Fujita
2136 % %%%%%%%%%%%%%%%%%%
2137 % % outer skeleton %
2138 % %%%%%%%%%%%%%%%%%%
2139 \begingroup

2140 \resetbdsw%
2141 \@bond@@omit{#5}%

2142 {%

2143 \let\fff=\aaa \let\aaa=\bbb \let\bbb=\ccc
2144 \let\ccc=\ddd \let\ddd=\iii \let\eee=\jjj
2145 \Put@Direct(171,303){\set@skel@bond{#1}{b}{a}}%
2146 % bond between 2 and 3 \@bbb -> \skbonda etc
2147 \Put@Direct(171,303){\set@skel@bond{#1}{c}{b}}%
2148 % bond between 3 and 4 \@ccc -> \skbondb etc
2149 \Put@Direct(171,303){\set@skel@bond{#1}{d}{c}}%
2150 % bond between 4 and 4a \@ddd -> \skbondc etc
2151 \Put@Direct(171,303){\set@skel@bond{#1}{k}{d}}%
2152 % bond between 4a and 8a \@kkk -> \skbondd etc
2153 \Put@Direct(171,303){\set@skel@bond{#1}{j}{e}}%
2154 % bond between 8a and 1 \@jjj -> \skbonde etc
2155 \Put@Direct(171,303){\set@skel@bond{#1}{a}{f}}%
2156 % bond between 1 and 2 \@aaa -> \skbondf etc

2157 }% 2158 {%

2159 \let\aaa=\jjj\let\bbb=\iii
2160 \let\ccc=\eee\let\ddd=\fff
2161 \let\eee=\gggA\let\fff=\hhh
2162 \set@skel@bond{#1}{e}{b}% bond between 4a and 5 \@eee -> \skbondb etc
2163 \set@skel@bond{#1}{f}{c}% bond between 5 and 6 \@fff -> \skbondc etc
2164 \set@skel@bond{#1}{g}{d}% bond between 6 and 7 \@ggg -> \skbondd etc
2165 \set@skel@bond{#1}{h}{e}% bond between 7 and 8 \@hhh -> \skbonde etc
2166 \set@skel@bond{#1}{i}{f}% bond between 8 and 8a \@iii -> \skbondf etc

2167 }%

2168 \endgroup
2169 % %%%%%%%%%%%%%%%%%%%%%
2170 % % inner double bond %
2171 % %%%%%%%%%%%%%%%%%%%%%
2172 \@tfor\member:=#2\do{%
2173 \if\member r\relax%

2174 {%

2175 \let\ccc=\eee\let\ddd=\fff\let\eee=\gggA\let\fff=\gggA
2176 \Put@Direct(0,0){\bondc}% bond between 7 and 8
2177 \Put@Direct(0,0){\bonde}% bond between 5 and 6

2178 }% 2179 {%

2180 \let\fff=\aaa\let\aaa=\bbb
2181 \let\bbb=\ccc\let\ccc=\ddd
2182 \let\ddd=\iii\let\eee=\jjj
2183 \Put@Direct(171,303){\bondf}% bond between 1 and 2
2184 \Put@Direct(171,303){\bondb}% bond between 3 and 4
2185 \Put@Direct(171,303){\bondd}% bond between 4a and 8a

2186 }%

2187 \else\if\member l\relax%
2188 \else\if\member a\relax%
2189 {\let\fff=\aaa\let\aaa=\bbb
2190 \Put@Direct(171,303){\bondf}% bond between 1 and 2

2191 }%

2192 \else\if\member b\relax
2193 {\let\aaa=\bbb\let\bbb=\ccc

2194 \Put@Direct(171,303){\bonda}% bond between 2 and 3

2195 }%

2196 \else\if\member c\relax
2197 {\let\bbb=\ccc\let\ccc=\ddd
2198 \Put@Direct(171,303){\bondb}% bond between 3 and 4

2199 }%

2200 \else\if\member d\relax%
2201 {\let\ccc=\ddd\let\ddd=\eee
2202 \Put@Direct(171,303){\bondc}% bond between 4 and 4a

2203 }%

2204 \else\if\member e\relax%
2205 {\let\ccc=\eee\let\bbb=\iii%
2206 \Put@Direct(0,0){\bondb}% bond between 5 and 4a

2207 }%

2208 \else\if\member f\relax%
2209 {\let\ccc=\eee\let\ddd=\fff
2210 \Put@Direct(0,0){\bondc}% bond between 5 and 6

2211 }%

2212 \else\if\member g\relax%
2213 {\let\ddd=\fff\let\eee=\gggA
2214 \Put@Direct(0,0){\bondd}% bond between 6 and 7

2215 }%

2216 \else\if\member h\relax%
2217 {\let\eee=\gggA \let\fff=\hhh%
2218 \Put@Direct(0,0){\bonde}% bond between 8 and 7

2219 }%

2220 \else\if\member i\relax%
2221 {\let\aaa=\jjj \let\fff=\hhh%
2222 \Put@Direct(0,0){\bondf}% bond between 8 and 8a

2223 }%

2224 \else\if\member j\relax%
2225 {\let\fff=\aaa\let\eee=\jjj%
2226 \Put@Direct(171,303){\bonde}% bond between 1 and 8a

2227 }%

2228 \else\if\member k\relax%
2229 {\let\aaa=\jjj\let\bbb=\iii%
2230 \Put@Direct(0,0){\bonda}% bond between 8a and 4a

2231 }%

2232 \else\if\member K\relax%
2233 {\let\eee=\jjj\let\ddd=\iii%
2234 \Put@Direct(171,303){\bondd}% bond between 8a and 4a in the other ring

2235 }%

2236 \else\if\member A%left aromatic circle
2237 \Put@oCircle(171,506){240}%               %circle
2238 \else\if\member B%left aromatic circle
2239 \Put@oCircle(0,203){240}%             %circle
2240 \else
2241 \expandafter\twoCH@@R\member//%
2242 \def\aax{8a}\def\aay{4a}\def\aaz{10}%
2243  \if\@@tmpa 1\relax%                  % plus charge etc.
2244  \putlatom{111}{546}{\@@tmpb}%      % left type
2245  \else\if\@@tmpa 2\relax%
2246  \putlatom{209}{585}{\@@tmpb}%      % left type
2247  \else\if\@@tmpa 3\relax%

2248  \putratom{209}{546}{\@@tmpb}%      % right type
2249  \else\if\@@tmpa 4\relax%
2250  \putratom{209}{431}{\@@tmpb}%      % right type
2251  \else\if\@@tmpa 5\relax%
2252  \putratom{60}{120}{\@@tmpb}%      % right type
2253  \else\if\@@tmpa 6\relax%
2254  \putratom{-38}{68}{\@@tmpb}%       % right type
2255  \else\if\@@tmpa 7\relax%
2256  \putratom{-120}{120}{\@@tmpb}%       % right type
2257  \else\if\@@tmpa 8\relax%
2258  \putlatom{-60}{253}{\@@tmpb}%      % left type
2259  \else\if\@@tmpa 9\relax%
2260  \putratom{60}{253}{\@@tmpb}%      % right type
2261  \else\ifx\@@tmpa\aaz\relax%
2262  \putratom{-38}{282}{\@@tmpb}%      % right type
2263  \else\ifx\@@tmpa\aax\relax%
2264  \putratom{-38}{282}{\@@tmpb}%      % right type
2265  \else\ifx\@@tmpa\aay\relax%
2266  \putratom{60}{253}{\@@tmpb}%      % right type
2267  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
2268 % ***********************
2269 % * setting fused rings *
2270 % ***********************
2271 \expandafter\twoCH@R\member//%
2272 \set@fusion@decavt
2273 \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
2274 \fi\fi\fi\fi\fi\fi%

2275 }%

2276 % %%%%%%%%%%%%%%%%%%%%%%%%
2277 % % setting hetero atoms %
2278 % %%%%%%%%%%%%%%%%%%%%%%%%
2279 \iniflag
2280 \Put@Direct(0,0){\set@hetatom@sixv{#3}{-2}{2}{7}{0}%
2281 % \@hclipfalse \if@fclip \global\@hcliptrue \fi%
2282 % \@gclipfalse \if@eclip \global\@gcliptrue \fi%
2283 % \@fclipfalse \if@clip \global\@fcliptrue \fi%
2284 % \@eclipfalse \if@cclip \global\@ecliptrue \fi%
2285 \@hclipfalse \if@fclip \@hcliptrue \fi%
2286 \@gclipfalse \if@eclip \@gcliptrue \fi%
2287 \@fclipfalse \if@clip \@fcliptrue \fi%
2288 \@eclipfalse \if@cclip \@ecliptrue \fi%
2289 \storeclipinfo
2290 }% %substituents on 5 to 8
2291 \developclipinfo
2292 \Put@Direct(0,0){\set@vrtx@decafusevt{#3}%
2293 %  \if@iclip \global\@icliptrue \fi
2294 %  \if@jclip \global\@jcliptrue \fi
2295 \storeclipinfo
2296 }%9 %for 4a position, %10 for 8a position
2297 \developclipinfo
2298 %to be done after all (exept aclip)
2299 \Put@Direct(171,303){\set@hetatom@sixv{#3}{-1}{0}{4}{0}%
2300 %\@clipfalse \if@cclip \global\@cliptrue \fi%
2301 %\@cclipfalse \if@bclip \global\@ccliptrue \fi%

2302 %\@bclipfalse \if@aclip \global\@bcliptrue \fi%
2303 \@clipfalse \if@cclip \@cliptrue \fi%
2304 \@cclipfalse \if@bclip \@ccliptrue \fi%
2305 \@bclipfalse \if@aclip \@bcliptrue \fi%
2306 \storeclipinfo
2307 }% %substituents on 2 to 4
2308 \developclipinfo

2309 {%

2310 \@fclipfalse%locally cancelled 1999/2/15 by Shinsaku Fujita
2311 \Put@Direct(171,303){\set@hetatom@sixv{#3}{5}{5}{7}{0}%
2312 %\@aclipfalse \if@fclip \global\@acliptrue \fi%
2313 \@aclipfalse \if@fclip \@acliptrue \fi%
2314 \storeclipinfo
2315 }% %substituent on 1
2316 \developclipinfo

2317 }%

2318 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2319 % % setting substituents and exocyclic bonds %
2320 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2321 \global\drawsamesubsttrue%2002/05/30 warning on

2322 {%

2323 \@fclipfalse \if@aclip \@fcliptrue \fi%
2324 \Put@Direct(171,303){\setsixringv{#4}{5}{5}{7}{0}}% %substituent on 1

2325 }%

2326 \global\drawsamesubstfalse%2002/05/30 warning off

2327 {%

2328 \@aclipfalse \if@bclip \@acliptrue \fi%
2329 \@bclipfalse \if@cclip \@bcliptrue \fi%
2330 \@cclipfalse \if@clip \@ccliptrue \fi%
2331 \Put@Direct(171,303){\setsixringv{#4}{-1}{0}{4}{0}}% %substituents on 2 to 4

2332 }% 2333 {%

2334 \@cclipfalse \if@eclip \@ccliptrue \fi%
2335 \@clipfalse \if@fclip \@cliptrue \fi%
2336 \@eclipfalse \if@gclip \@ecliptrue \fi%
2337 \@fclipfalse \if@hclip \@fcliptrue \fi%
2338 \Put@Direct(0,0){\setsixringv{#4}{-2}{2}{7}{0}}% %substituents on 5 to 8

2339 }%

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

2342 }%

2343 {\@clipfusefalse \if@jclip \@clipfusetrue \fi%
2344 \Put@Direct(0,406){\setatombond{#4}{-9}{11}}%  %10 for 8a position

2345 }%

2346 \end{ShiftPicEnvB}\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
2347 \def\ylhetpositiont#1#2#3#4#5{%
2348 \@@ylswfalse%%%\@reset@ylsw
2349 \@forsemicol\member:=#1\do{%
2350 \if@@ylsw\else%

2351 \ifx\member\empty\else%
2352 \expandafter\@m@mb@r\member;\relax%
2353 \expandafter\threech@r\@membera{}{}\relax%
2354 \ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi
2355 \if@@ylsw
2356 \ifnum#5<0\relax%
2357 \@tmpaa=-\@tmpa\relax \advance\@tmpaa by#2\relax%
2358 \else\@tmpaa=\@tmpa\relax \advance\@tmpaa by#2\relax\fi
2359 \ifnum\@tmpaa>#3\relax%
2360 \ifnum\@tmpaa<#4\relax%
2361 \ifcase\@tmpaa%0 omit

2362 \or

2363  \ifx\aaa\empty%
2364  \ifx\bbb\empty% aaa and bbb are absent
2365  \gdef\@ylii{0}\gdef\@yli{-406}\global\@ylswtrue%\@ylatrue% subst. on 1
2366  \else% bbb is present
2367  \gdef\@ylii{0}\gdef\@yli{-442}\global\@ylswtrue%\@ylatrue% subst. on 1

2368 \fi

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

2371 \fi 2372 \or

2373  \ifx\bbb\empty
2374  \ifx\ccc\empty% aaa and ccc are absent
2375  \gdef\@ylii{-171}\gdef\@yli{-303}\global\@ylswtrue%\@ylbtrue% subst. on 2
2376  \else%ccc is present
2377  \gdef\@ylii{-213}\gdef\@yli{-327}\global\@ylswtrue%\@ylbtrue% subst. on 2

2378 \fi

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

2381 \fi 2382 \or

2383  \ifx\ccc\empty
2384  \ifx\ddd\empty
2385  \ifx\eee\empty% ccc, ddd, eee are absent
2386  \gdef\@ylii{-171}\gdef\@yli{-103}\global\@ylswtrue%\@ylctrue%subst. on 3
2387  \else%eee is present
2388  \gdef\@ylii{-213}\gdef\@yli{-79}\global\@ylswtrue%\@ylctrue% subst. on 3

2389 \fi

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

2392 \fi

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

2395 \fi 2396 \or

2397 \ifx\ddd\empty
2398  \ifx\fff\empty%ddd and fff are absent
2399  \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%\@yldtrue% subst. on 4
2400  \else%fff present
2401  \gdef\@ylii{0}\gdef\@yli{36}\global\@ylswtrue%\@yldtrue% subst. on 4

2402 \fi

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

2405 \fi 2406 \or

2407  \ifx\eee\empty
2408  \ifx\gggA\empty%eee and ggg are absent
2409  \gdef\@ylii{173}\gdef\@yli{-103}\global\@ylswtrue%\@yletrue% subst. on 5
2410  \else% ggg is present
2411  \gdef\@ylii{223}\gdef\@yli{-79}\global\@ylswtrue%\@yletrue% subst. on 5

2412 \fi

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

2415 \fi 2416 \or

2417  \ifx\fff\empty
2418  \ifx\hhh\empty%fff and hhh are absent
2419  \gdef\@ylii{173}\gdef\@yli{-303}\global\@ylswtrue%\@ylftrue% subst. on 6
2420  \else%hhh is present
2421  \gdef\@ylii{213}\gdef\@yli{-327}\global\@ylswtrue%\@ylftrue% subst. on 6

2422 \fi

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

2425 \fi

2426 \fi%end of ifcase
2427 \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
2428 \def\set@vrtx@decafusevt#1{%
2429 \@forsemicol\member:=#1\do{%
2430 \ifx\member\empty\else%
2431 \expandafter\@m@mb@r\member;\relax%
2432 \expandafter\twoch@r\@membera{}%
2433 \ifcase\@tmpa\or\or\or
2434 \or%%%%4
2435 \if\@tmpb a\relax%
2436 %     \global\@icliptrue%
2437  \global\@icliptrue%%2001/06/20 by S. Fujita
2438  \putratom{135}{280}{\@memberb}% % right type
2439 \else\relax

2440 \fi

2441 \or\or\or
2442 \or%8
2443 \if\@tmpb a\relax%
2444 %     \global\@jcliptrue%
2445  \@jcliptrue%%2001/06/20 by S. Fujita
2446  \putlatom{31}{356}{\@memberb}%  % left type
2447 \else\relax

2448 \fi

2449 \or%9 (= 4a)
2450 %     \global\@icliptrue%
2451  \@icliptrue%%2001/06/20 by S. Fujita
2452  \putratom{135}{280}{\@memberb}% % right type
2453 \or%10 (= 8a)

2454 %     \global\@jcliptrue%
2455  \@jcliptrue%%2001/06/20 by S. Fujita
2456  \putlatom{31}{356}{\@memberb}%  % left type
2457 \fi\fi}%
2458 }% 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.

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

2459 \def\quinolinev{%
2460 \@ifnextchar[{\@quinolinev[@}{\@quinolinev[acfhk]}}
2461 \def\@quinolinev[#1]#2{%
2462 \iforigpt \typeout{command `quinolinev' %
2463 is based on `decaheterov'.}\fi%
2464 \decaheterov[#1]{1==N}{#2}}
2465 \def\quinolinevi{%
2466 \@ifnextchar[{\@quinolinevi[@}{\@quinolinevi[acfhk]}}
2467 \def\@quinolinevi[#1]#2{%
2468 \iforigpt \typeout{command `quinolinevi' %
2469 is based on `decaheterovi'.}\fi%
2470 \decaheterovi[#1]{1==N}{#2}}
2471 \def\quinolinevb{%
2472 \@ifnextchar[{\@quinolinevb[@}{\@quinolinevb[acfhk]}}
2473 \def\@quinolinevb[#1]#2{%
2474 \iforigpt \typeout{command `quinolinevb' %
2475 is based on `decaheterovb'.}\fi%
2476 \decaheterovb[#1]{1==N}{#2}}
2477 \def\quinolinevt{%
2478 \@ifnextchar[{\@quinolinevt[@}{\@quinolinevt[acfhk]}}
2479 \def\@quinolinevt[#1]#2{%
2480 \iforigpt \typeout{command `quinolinevt' %
2481 is based on `decaheterovt'.}\fi%
2482 \decaheterovt[#1]{1==N}{#2}}
\isoquinolinev
\isoquinolinevi
\isoquinolinevb
\isoquinolinevt

2483 \def\isoquinolinev{%
2484 \@ifnextchar[{\@isoquinolinev[@}{\@isoquinolinev[acfhk]}}
2485 \def\@isoquinolinev[#1]#2{%
2486 \iforigpt \typeout{command `isoquinolinev' %
2487 is based on `decaheterov'.}\fi%
2488 \decaheterov[#1]{2==N}{#2}}
2489 \def\isoquinolinevi{%
2490 \@ifnextchar[{\@isoquinolinevi[@}{\@isoquinolinevi[acfhk]}}
2491 \def\@isoquinolinevi[#1]#2{%
2492 \iforigpt \typeout{command `isoquinolinevi' %
2493 is based on `decaheterovi'.}\fi%
2494 \decaheterovi[#1]{2==N}{#2}}%
2495 \def\isoquinolinevb{%
2496 \@ifnextchar[{\@isoquinolinevb[@}{\@isoquinolinevb[acfhk]}}
2497 \def\@isoquinolinevb[#1]#2{%
2498 \iforigpt \typeout{command `isoquinolinevb' %
2499 is based on `decaheterovi'.}\fi%
2500 \decaheterovb[#1]{2==N}{#2}}%
2501 \def\isoquinolinevt{%

2502 \@ifnextchar[{\@isoquinolinevt[@}{\@isoquinolinevt[acfhk]}}
2503 \def\@isoquinolinevt[#1]#2{%
2504 \iforigpt \typeout{command `isoquinolinevt' %
2505 is based on `decaheterovt'.}\fi%
2506 \decaheterovt[#1]{2==N}{#2}}%
\quinoxalinev
\quinoxalinevi
\quinoxalinevb
\quinoxalinevt

2507 \def\quinoxalinev{%
2508 \@ifnextchar[{\@quinoxalinev[@}{\@quinoxalinev[acfhk]}}
2509 \def\@quinoxalinev[#1]#2{%
2510 \iforigpt \typeout{command `quinoxalinev' %
2511 is based on `decaheterov'.}\fi%
2512 \decaheterov[#1]{1==N;4==N}{#2}}
2513 \def\quinoxalinevi{%
2514 \@ifnextchar[{\@quinoxalinevi[@}{\@quinoxalinevi[acfhk]}}
2515 \def\@quinoxalinev[#1]#2{%
2516 \iforigpt \typeout{command `quinoxalinevi' %
2517 is based on `decaheterovi'.}\fi%
2518 \decaheterovi[#1]{1==N;4==N}{#2}}
2519 \def\quinoxalinevb{%
2520 \@ifnextchar[{\@quinoxalinevb[@}{\@quinoxalinevb[acfhk]}}
2521 \def\@quinoxalinevb[#1]#2{%
2522 \iforigpt \typeout{command `quinoxalinevb' %
2523 is based on `decaheterovb'.}\fi%
2524 \decaheterovb[#1]{1==N;4==N}{#2}}
2525 \def\quinoxalinevt{%
2526 \@ifnextchar[{\@quinoxalinevt[@}{\@quinoxalinevt[acfhk]}}
2527 \def\@quinoxalinevt[#1]#2{%
2528 \iforigpt \typeout{command `quinoxalinevt' %
2529 is based on `decaheterovt'.}\fi%
2530 \decaheterovt[#1]{1==N;4==N}{#2}}
\quinazolinev
\quinazolinevi
\quinazolinevb
\quinazolinevt

2531 \def\quinazolinev{%
2532 \@ifnextchar[{\@quinazolinev[@}{\@quinazolinev[acfhk]}}
2533 \def\@quinazolinev[#1]#2{%
2534 \iforigpt \typeout{command `quinazolinev' %
2535 is based on `decaheterov'.}\fi%
2536 \decaheterov[#1]{1==N;3==N}{#2}}
2537 \def\quinazolinevi{%
2538 \@ifnextchar[{\@quinazolinevi[@}{\@quinazolinevi[acfhk]}}
2539 \def\@quinazolinevi[#1]#2{%
2540 \iforigpt \typeout{command `quinazolinevi' %
2541 is based on `decaheterovi'.}\fi%
2542 \decaheterovi[#1]{1==N;3==N}{#2}}
2543 \def\quinazolinevb{%
2544 \@ifnextchar[{\@quinazolinevb[@}{\@quinazolinevb[acfhk]}}
2545 \def\@quinazolinevb[#1]#2{%
2546 \iforigpt \typeout{command `quinazolinevb' %
2547 is based on `decaheterovb'.}\fi%
2548 \decaheterovb[#1]{1==N;3==N}{#2}}
2549 \def\quinazolinevt{%
2550 \@ifnextchar[{\@quinazolinevt[@}{\@quinazolinevt[acfhk]}}
2551 \def\@quinazolinevt[#1]#2{%

2552 \iforigpt \typeout{command `quinazolinevt' %
2553 is based on `decaheterovt'.}\fi%
2554 \decaheterovt[#1]{1==N;3==N}{#2}}
\cinnolinev
\cinnolinevi
\cinnolinevb
\cinnolinevt

2555 \def\cinnolinev{%
2556 \@ifnextchar[{\@cinnolinev[@}{\@cinnolinev[acfhk]}}
2557 \def\@cinnolinev[#1]#2{%
2558 \iforigpt \typeout{command `cinnolinev' %
2559 is based on `decaheterov'.}\fi%
2560 \decaheterov[#1]{1==N;2==N}{#2}}
2561 \def\cinnolinevi{%
2562 \@ifnextchar[{\@cinnolinevi[@}{\@cinnolinevi[acfhk]}}
2563 \def\@cinnolinevi[#1]#2{%
2564 \iforigpt \typeout{command `cinnolinevi' %
2565 is based on `decaheterovi'.}\fi%
2566 \decaheterovi[#1]{1==N;2==N}{#2}}
2567 \def\cinnolinevb{%
2568 \@ifnextchar[{\@cinnolinevb[@}{\@cinnolinevb[acfhk]}}
2569 \def\@cinnolinevb[#1]#2{%
2570 \iforigpt \typeout{command `cinnolinevb' %
2571 is based on `decaheterovb'.}\fi%
2572 \decaheterovb[#1]{1==N;2==N}{#2}}
2573 \def\cinnolinevt{%
2574 \@ifnextchar[{\@cinnolinevt[@}{\@cinnolinevt[acfhk]}}
2575 \def\@cinnolinevt[#1]#2{%
2576 \iforigpt \typeout{command `cinnolinevt' %
2577 is based on `decaheterovt'.}\fi%
2578 \decaheterovt[#1]{1==N;2==N}{#2}}
\pteridinev
\pteridinevi
\pteridinevb
\pteridinevt

2579 \def\pteridinev{\@ifnextchar[{\@pteridinev[@}{\@pteridinev[acfhk]}}
2580 \def\@pteridinev[#1]#2{%
2581 \iforigpt \typeout{command `pteridinev' %
2582 is based on `decaheterov'.}\fi%
2583 \decaheterov[#1]{1==N;3==N;5==N;8==N}{#2}}
2584 \def\pteridinevi{\@ifnextchar[{\@pteridinevi[@}{\@pteridinevi[acfhk]}}
2585 \def\@pteridinevi[#1]#2{%
2586 \iforigpt \typeout{command `pteridinevi' %
2587 is based on `decaheterovi'.}\fi%
2588 \decaheterovi[#1]{1==N;3==N;5==N;8==N}{#2}}
2589 \def\pteridinevb{\@ifnextchar[{\@pteridinevb[@}{\@pteridinevb[acfhk]}}
2590 \def\@pteridinevb[#1]#2{%
2591 \iforigpt \typeout{command `pteridinevb' %
2592 is based on `decaheterovb'.}\fi%
2593 \decaheterovb[#1]{1==N;3==N;5==N;8==N}{#2}}
2594 \def\pteridinevt{\@ifnextchar[{\@pteridinevt[@}{\@pteridinevt[acfhk]}}
2595 \def\@pteridinevt[#1]#2{%
2596 \iforigpt \typeout{command `pteridinevt' %
2597 is based on `decaheterovt'.}\fi%
2598 \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

2599 \def\nonaheterov{\@ifnextchar({\@nona@heterov(@}{\@nona@heterov(@)}}
2600 \def\@nona@heterov(#1){\@ifnextchar[{\@nona@@heterov(#1)[@}%
2601 {\@nona@@heterov(#1)[@]}}
2602 \def\@nona@@heterov(#1)[#2]#3#4{\@ifnextchar[%
2603 {\@nonaheterov(#1)[#2]{#3}{#4}[@}%
2604 {\@nonaheterov(#1)[#2]{#3}{#4}[@]}}
2605 \def\@nonaheterov(#1)[#2]#3#4[#5]{%
2606 % %%%%%%%%%%%%%%%%%%%%%%%%%%
2607 % % treatment of atom list %
2608 % %%%%%%%%%%%%%%%%%%%%%%%%%%
2609 \iniflag\iniatom%
2610 \test@vertix@nonav{#3}%
2611 % %%%%%%%%%%%%%%%%%%%%%%%
2612 % % adjustment for (yl) %
2613 % %%%%%%%%%%%%%%%%%%%%%%%
2614 \@reset@ylsw%
2615 \ylposition{#4}{5}{1}{5}{-1}% %substituents on 1 to 3
2616 \if@ylsw \ifx\@@ylii\empty\relax
2617 \def\@@ylii{-342}\def\@@yli{0}\fi
2618 \else
2619 {\let\ddd=\eee\let\eee=\fff\let\fff=\gggA

2620 \ylposition{#4}{11}{3}{7}{-1}% %substituents on 5 to 7

2621 }% 2622 \fi

2623 \if@ylsw \ifx\@@ylii\empty\relax
2624 \def\@@ylii{0}\def\@@yli{0}\fi
2625 \else
2626 {\let\aaa=\hhh
2627 \ylposition{#4}{-3}{0}{2}{0}%%substituent on 4

2628 }% 2629 \fi

2630 \if@ylsw \ifx\@@ylii\empty\relax
2631 \def\@@ylii{0}\def\@@yli{0}\fi
2632 \else

2633 {%

2634 \clipdetection%
2635 \@clipfusefalse \if@iclip \@clipfusetrue \fi%
2636 \ylatombondposition{#4}{-8}{7}%   %9 %for 7a position

2637 }% 2638 \fi

2639 \if@ylsw \ifx\@@ylii\empty\relax
2640 \def\@@ylii{-171}\def\@@yli{-103}\fi
2641 \else

2642 {%

2643 \clipdetection%
2644 \@clipfusefalse \if@jclip \@clipfusetrue \fi%
2645 \ylatombondposition{#4}{-7}{1}%   %8 for 3a position

2646 }% 2647 \fi

2648 \if@ylsw \ifx\@@ylii\empty\relax
2649 \def\@@ylii{-171}\def\@@yli{-303}\fi

2650 \fi

2651 \begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
2652 (1200,880)(-\shiftii,-\shifti){nonaheterov}%2002/4/30 by S. Fujita
2653 % %%%%%%%%%%%%%%%%%%
2654 % % outer skeleton %
2655 % %%%%%%%%%%%%%%%%%%
2656 \begingroup
2657 \resetbdsw%
2658 \@bond@@omit{#5}%
2659 {\let\fff=\jjj \let\eee=\iii%
2660 \Put@Direct(342,0){\set@skel@bond{#1}{a}{c}}%
2661 % bond between 1 and 2 \@aaa -> \skbondc etc
2662 \Put@Direct(342,0){\set@skel@bond{#1}{b}{b}}%
2663 % bond between 2 and 3 \@bbb -> \skbondb etc
2664 \Put@Direct(342,0){\set@skel@longbond{#1}{c}{skbondhoriz}}%
2665 % bond between 3 and 3a \@ccc -> \skbondhoriz etc
2666 \Put@Direct(342,0){\set@skel@bond{#1}{j}{e}}%
2667 % bond between 3a and 7a \@jjj -> \skbonde etc
2668 \Put@Direct(342,0){\set@skel@bond{#1}{i}{d}}%
2669 % bond between 7a and 1 \@iii -> \skbondd etc

2670 }%

2671 {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA%
2672 \let\ccc=\iii\let\bbb=\jjj%
2673 \set@skel@bond{#1}{d}{a}% bond between 3a and 4 \@ddd -> \skbonda etc

2674 \set@skel@bond{#1}{h}{c}% bond between 7 and 7a \@hhh -> \skbondc etc
2675 \set@skel@bond{#1}{g}{d}% bond between 6 and 7 \@ggg -> \skbondd etc
2676 \set@skel@bond{#1}{f}{e}% bond between 5 and 6 \@fff -> \skbonde etc
2677 \set@skel@bond{#1}{e}{f}% bond between 4 and 5 \@eee -> \skbondf etc

2678 }%

2679 \endgroup
2680 % %%%%%%%%%%%%%%%%%%%%%
2681 % % inner double bond %
2682 % %%%%%%%%%%%%%%%%%%%%%
2683 \@tfor\member:=#2\do{%
2684 \if\member r\relax%
2685 {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA%
2686 \let\ccc=\iii\let\bbb=\jjj%
2687 \Put@Direct(0,0){\bondb}% bond between 3a and 7a
2688 \Put@Direct(0,0){\bondf}% bond between 4 and 5
2689 \Put@Direct(0,0){\bondd}% bond between 6 and 7

2690 }%

2691 \else\if\member l\relax%
2692 \else\if\member a\relax%
2693 \Put@Direct(342,0){\bondc}% bond between 3 and 4
2694 \else\if\member b\relax%
2695 \Put@Direct(342,0){\bondb}% bond between 2 and 3
2696 \else\if\member c\relax%
2697 \Put@Direct(342,0){\bondhoriz}% bond between 3 and 3a
2698 \else\if\member d\relax%
2699 {\let\aaa=\hhh \let\bbb=\jjj%
2700 \Put@Direct(0,0){\bonda}% bond between 4 and 3a

2701 }%

2702 \else\if\member e\relax%
2703 {\let\aaa=\hhh \let\fff=\gggA%
2704 \Put@Direct(0,0){\bondf}% bond between 4 and 5

2705 }%

2706 \else\if\member f\relax%
2707 {\let\eee=\fff \let\fff=\gggA%
2708 \Put@Direct(0,0){\bonde}% bond between 5 and 6

2709 }%

2710 \else\if\member g\relax%
2711 {\let\ddd=\eee \let\eee=\fff%
2712 \Put@Direct(0,0){\bondd}% bond between 6 and 7

2713 }%

2714 \else\if\member h\relax%
2715 {\let\ccc=\iii \let\ddd=\eee%
2716 \Put@Direct(0,0){\bondc}% bond between 7 and 7a

2717 }%

2718 \else\if\member i\relax%
2719 {\let\eee=\iii%
2720 \Put@Direct(342,0){\bondd}% bond between 1 and 7a

2721 }%

2722 \else\if\member j\relax%
2723 {\let\ccc=\iii\let\bbb=\jjj%
2724 \Put@Direct(0,0){\bondb}% bond between 7a and 3a

2725 }%

2726 \else\if\member J\relax%
2727 {\let\eee=\iii\let\fff=\jjj%

2728 \Put@Direct(342,0){\bonde}% bond between 7a and 3a

2729 }%

2730 \else\if\member A\relax%left aromatic circle
2731 \Put@oCircle(0,203){240}%               %circle
2732 \else\if\member B\relax%left aromatic circle
2733 \Put@oCircle(342,173){180}%               %circle 1993/11/20 S.Fujita
2734 \else
2735 \expandafter\twoCH@@R\member//%
2736 \def\aax{7a}\def\aay{3a}%
2737  \if\@@tmpa 1\relax%
2738  \putratom{304}{68}{\@@tmpb}%       % right type
2739  \else\if\@@tmpa 2\relax%
2740  \putratom{402}{120}{\@@tmpb}%      % right type
2741  \else\if\@@tmpa 3\relax%
2742  \putratom{402}{253}{\@@tmpb}%      % right type
2743  \else\if\@@tmpa 4\relax%
2744  \putratom{-38}{282}{\@@tmpb}%      % right type
2745  \else\if\@@tmpa 5\relax%
2746  \putlatom{-60}{120}{\@@tmpb}%      % left type
2747  \else\if\@@tmpa 6\relax%
2748  \putlatom{-60}{253}{\@@tmpb}%      % left type
2749  \else\if\@@tmpa 7\relax%
2750  \putratom{-38}{68}{\@@tmpb}%       % right type
2751  \else\if\@@tmpa 8\relax%
2752  \putratom{60}{253}{\@@tmpb}%       % right type
2753  \else\ifx\@@tmpa\aax\relax%
2754  \putratom{60}{253}{\@@tmpb}%       % right type
2755  \else\ifx\@@tmpa\aay\relax%
2756  \putratom{60}{120}{\@@tmpb}%       % right type
2757  \else\if\@@tmpa 9\relax%
2758  \putratom{60}{120}{\@@tmpb}%       % right type
2759  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
2760 % ***********************
2761 % * setting fused rings *
2762 % ***********************
2763 \expandafter\twoCH@R\member//%
2764 \set@fusion@nonav
2765 \fi\fi\fi\fi\fi\fi\fi\fi\fi%
2766 \fi\fi\fi\fi\fi\fi%

2767 }%

2768 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2769 % % setting hetero atoms and spiro rings %
2770 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2771 \iniflag\iniatom%
2772 \@tmpclipfalse
2773 %position 7 should be treated before
2774 %position 1 (using the same \if@clip)
2775 \Put@Direct(0,0){\set@hetatom@sixv{#3}{11}{3}{7}{-1}%
2776 % \@gclipfalse \if@fclip \global\@gcliptrue \fi%
2777 % \@fclipfalse \if@eclip \global\@fcliptrue \fi%
2778 % \@eclipfalse \if@clip \global\@ecliptrue \fi%
2779 \@gclipfalse \if@fclip \@gcliptrue \fi%
2780 \@fclipfalse \if@eclip \@fcliptrue \fi%
2781 \@eclipfalse \if@clip \@ecliptrue \fi%

2782 \@clipfalse%2006/9/5added
2783 \storeclipinfo
2784 }%substituents on 5 to 7
2785 %\developclipinfo%2006/9/5 deleted
2786 \Put@Direct(342,0){\set@hetatom@sixv{#3}{5}{1}{5}{-1}%
2787 %   \if@bclip \global\@bcliptrue\fi
2788 %   \if@cclip \global\@ccliptrue\fi
2789 %   \if@clip \global\@cliptrue\fi
2790 \storeclipinfo
2791 }% %substituents on 1 to 3
2792 %\developclipinfo%2006/9/5 deleted
2793 \Put@Direct(0,0){\set@hetatom@sixv{#3}{-3}{0}{2}{0}%
2794 % \@aclipfalse \if@aclip \global\@hcliptrue \fi%
2795 \@hclipfalse \if@aclip \@hcliptrue \fi%
2796 \storeclipinfo
2797 }%%substituent on 4
2798 %\developclipinfo%2006/9/5 deleted
2799 \Put@Direct(0,0){\set@vrtx@nonafusev{#3}%
2800 \@tmpclipfalse
2801 %  \if@iclip \global\@tmpcliptrue \fi
2802 %  \if@jclip \global\@icliptrue \fi
2803 %  \if@tmpclip \global\@jcliptrue \fi
2804 \if@iclip \@tmpcliptrue \fi
2805 %  \if@jclip \@icliptrue \fi
2806 %  \if@tmpclip \@jcliptrue \fi
2807 \if@jclip \@icliptrue \else \@iclipfalse \fi
2808 \if@tmpclip \@jcliptrue \else \@jclipfalse \fi
2809 \storeclipinfo
2810 %%%====\clipinfo====%%%2006/9/5test
2811 }% fused positions
2812 \developclipinfo
2813 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2814 % % setting substituents and exocyclic bonds %
2815 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2816 \Put@Direct(342,0){\setsixringv{#4}{5}{1}{5}{-1}}% %substituents on 1 to 3
2817 {\@clipfalse \if@eclip \@cliptrue \fi%      %substituents on 5 to 7
2818 \@eclipfalse \if@fclip \@ecliptrue \fi%
2819 \@fclipfalse \if@gclip \@fcliptrue \fi%
2820 \Put@Direct(0,0){\setsixringv{#4}{11}{3}{7}{-1}}%

2821 }%

2822 {\@aclipfalse \if@hclip \@acliptrue \fi%    %substituent on 4
2823 \Put@Direct(0,0){\setsixringv{#4}{-3}{0}{2}{0}}%

2824 }%

2825 {\@clipfusefalse \if@iclip \@clipfusetrue \fi%
2826 \Put@Direct(171,103){\setatombond{#4}{-8}{7}}%    %9 for 7a position

2827 }%

2828 {\@clipfusefalse \if@jclip \@clipfusetrue \fi%
2829 \Put@Direct(171,303){\setatombond{#4}{-7}{1}}%   %8 for 3a position

2830 }%

2831 \end{ShiftPicEnvB}\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
2832 \def\test@vertix@nonav#1{%
2833 \@forsemicol\member:=#1\do{%
2834 \ifx\member\empty\else%
2835 \expandafter\@m@mb@r\member;\relax%
2836 \expandafter\twoch@r\@membera{}%
2837 \ifcase\@tmpa%
2838 \or%
2839 \if\@tmpb s\relax\def\ddd{}\else\def\ddd{@}\fi
2840 \or%2
2841 \if\@tmpb s\relax\def\ccc{}\else\def\ccc{@}\fi
2842 \or%3%
2843 \if\@tmpb a\relax%
2844  \def\jjj{@}%3a
2845 \else\if\@tmpb s\relax%
2846  \def\bbb{}%3
2847 \else\if\@tmpb h\relax%
2848  \def\bbb{@}%3
2849 \else\ifx\@tmpb\empty\relax%
2850  \def\bbb{@}%3
2851 \fi\fi\fi\fi%
2852 \or%4
2853 \if\@tmpb s\relax\def\hhh{}\else\def\hhh{@}\fi
2854 \or%5
2855 \if\@tmpb s\relax\def\gggA{}\else\def\gggA{@}\fi
2856 \or%6
2857 \if\@tmpb s\relax\def\fff{}\else\def\fff{@}\fi
2858 \or%7
2859 \if\@tmpb a%
2860  \xdef\iii{@}%7a
2861 \else\if\@tmpb s\relax%
2862  \xdef\eee{}%7s
2863 \else\if\@tmpb h\relax%
2864  \xdef\eee{@}%7h
2865 \else\ifx\@tmpb\empty\relax%
2866  \xdef\eee{@}%7
2867 \fi\fi\fi\fi%
2868 \or%8 (= 3a)
2869 \if\@tmpb s\relax\def\jjj{}\else\def\jjj{@}\fi
2870 \or%9 (= 7a)
2871 \if\@tmpb s\relax\def\iii{}\else\def\iii{@}\fi
2872 \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
2873 \def\set@vrtx@nonafusev#1{%
2874 \@forsemicol\member:=#1\do{%
2875 \ifx\member\empty \relax\else%
2876 \expandafter\@m@mb@r\member;\relax%
2877 \expandafter\twoch@r\@membera{}%
2878 \ifcase\@tmpa\or\or
2879 \or%%%%3

2880 \if\@tmpb a\relax%
2881 %     \global\@icliptrue%
2882  \@icliptrue%20001/06/20 by S. Fujita
2883  \putlatom{207}{280}{\@memberb}% % left type
2884 \else\relax

2885 \fi

2886 \or\or\or
2887 \or%7
2888 \if\@tmpb a\relax%
2889 %     \global\@jcliptrue%
2890  \@jcliptrue%%20001/06/20 by S. Fujita
2891  \putlatom{207}{65}{\@memberb}%  % left type
2892 \else\relax

2893 \fi

2894 \or%8 (= 3a)
2895 %     \global\@icliptrue%
2896  \@icliptrue%%20001/06/20 by S. Fujita
2897  \putlatom{207}{280}{\@memberb}% % left type
2898 \or%9 (= 7a)
2899 %     \global\@jcliptrue%
2900  \@jcliptrue%%20001/06/20 by S. Fujita
2901  \putlatom{207}{65}{\@memberb}%  % left type
2902 \fi\fi}%
2903 }% 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

2904 \def\nonaheterovi{\@ifnextchar({\@nona@heterovi(@}{\@nona@heterovi(@)}}
2905 \def\@nona@heterovi(#1){\@ifnextchar[{\@nona@@heterovi(#1)[@}%
2906 {\@nona@@heterovi(#1)[@]}}
2907 \def\@nona@@heterovi(#1)[#2]#3#4{\@ifnextchar[%
2908 {\@nonaheterovi(#1)[#2]{#3}{#4}[@}%
2909 {\@nonaheterovi(#1)[#2]{#3}{#4}[@]}}
2910 \def\@nonaheterovi(#1)[#2]#3#4[#5]{%
2911 % %%%%%%%%%%%%%%%%%%%%%%%%%%
2912 % % treatment of atom list %
2913 % %%%%%%%%%%%%%%%%%%%%%%%%%%
2914 \iniflag\iniatom%initialize
2915 \test@vertix@nonavi{#3}%
2916 % %%%%%%%%%%%%%%%%%%%%%%%
2917 % % adjustment for (yl) %
2918 % %%%%%%%%%%%%%%%%%%%%%%%
2919 \@reset@ylsw%
2920 \ylposition{#4}{0}{0}{4}{0}% %substituents on 1 to 3
2921 \if@ylsw \ifx\@@ylii\empty
2922 \def\@@ylii{-342}\def\@@yli{0}\fi
2923 \else
2924 {\let\ddd=\eee\let\eee=\fff\let\fff=\gggA
2925 \ylposition{#4}{0}{3}{7}{0}%%substituents on 4 to 6

2926 }% 2927 \fi

2928 \if@ylsw \ifx\@@ylii\empty
2929 \def\@@ylii{0}\def\@@yli{0}\fi
2930 \else
2931 {\let\aaa=\hhh
2932 \ylposition{#4}{-6}{0}{2}{0}%%substituent on 7

2933 }% 2934 \fi

2935 \if@ylsw \ifx\@@ylii\empty
2936 \def\@@ylii{0}\def\@@yli{0}\fi
2937 \else

2938 {%

2939 \clipdetection%
2940 \@clipfusefalse \if@iclip \@clipfusetrue \fi%
2941 \ylatombondposition{#4}{-7}{7}%   %8 for 3a position

2942 }% 2943 \fi

2944 \if@ylsw \ifx\@@ylii\empty
2945 \def\@@ylii{-171}\def\@@yli{-103}\fi
2946 \else

2947 {%

2948 \clipdetection%
2949 \@clipfusefalse \if@jclip \@clipfusetrue \fi%
2950 \ylatombondposition{#4}{-8}{1}%  %9 for 7a position

2951 }% 2952 \fi

2953 \if@ylsw \ifx\@@ylii\empty
2954 \def\@@ylii{-171}\def\@@yli{-303}\fi

2955 \fi

2956 \begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%

2957 (1200,880)(-\shiftii,-\shifti){nonaheterovi}%2002/4/30 by S. Fujita
2958 % %%%%%%%%%%%%%%%%%%
2959 % % outer skeleton %
2960 % %%%%%%%%%%%%%%%%%%
2961 \begingroup
2962 \resetbdsw%
2963 \@bond@@omit{#5}%
2964 {\let\fff=\jjj \let\eee=\iii%
2965 \Put@Direct(342,0){\set@skel@bond{#1}{a}{a}}%
2966 % bond between 1 and 2 \@aaa -> \skbonda etc
2967 \Put@Direct(342,0){\set@skel@bond{#1}{b}{b}}%
2968 % bond between 2 and 3 \@bbb -> \skbondb etc
2969 \Put@Direct(342,0){\set@skel@longbond{#1}{c}{skbondhorizi}}%
2970 % bond between 3 and 3a \@ccc -> \skbondhoriz etc
2971 \Put@Direct(342,0){\set@skel@bond{#1}{j}{e}}%
2972 % bond between 3a and 7a \@jjj -> \skbonde etc
2973 \Put@Direct(342,0){\set@skel@bond{#1}{i}{f}}%
2974 % bond between 7a and 1 \@iii -> \skbondf etc

2975 }%

2976 {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA%
2977 \let\ccc=\iii\let\bbb=\jjj%
2978 \set@skel@bond{#1}{h}{a}% bond between 7a and 7 \@hhh -> \skbonda etc
2979 \set@skel@bond{#1}{d}{c}% bond between 3a and 4 \@ddd -> \skbondc etc
2980 \set@skel@bond{#1}{e}{d}% bond between 4 and 5 \@eee -> \skbondd etc
2981 \set@skel@bond{#1}{f}{e}% bond between 5 and 6 \@fff -> \skbonde etc
2982 \set@skel@bond{#1}{g}{f}% bond between 6 and 7 \@ggg -> \skbondf etc

2983 }%

2984 \endgroup
2985 % %%%%%%%%%%%%%%%%%%%%%
2986 % % inner double bond %
2987 % %%%%%%%%%%%%%%%%%%%%%
2988 \@tfor\member:=#2\do{%
2989 \if\member r\relax%
2990 {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA
2991 \let\ccc=\iii\let\bbb=\jjj
2992 \Put@Direct(0,0){\bondb}% bond between 3a and 7a
2993 \Put@Direct(0,0){\bondf}% bond between 6 and 7
2994 \Put@Direct(0,0){\bondd}% bond between 4 and 5

2995 }%

2996 \else\if\member l\relax%
2997 \else\if\member a\relax%
2998 \Put@Direct(342,0){\bonda}% bond between 1 and 2
2999 \else\if\member b\relax%
3000 \Put@Direct(342,0){\bondb}% bond between 2 and 3
3001 \else\if\member c\relax%
3002 \Put@Direct(342,0){\bondhorizi}% bond between 3 and 3a
3003 \else\if\member d\relax%
3004 {\let\ccc=\iii \let\ddd=\eee%
3005 \Put@Direct(0,0){\bondc}% bond between 4 and 3a

3006 }%

3007 \else\if\member e\relax%
3008 {\let\ddd=\eee\let\eee=\fff%
3009 \Put@Direct(0,0){\bondd}% bond between 4 and 5

3010 }%

3011 \else\if\member f\relax%
3012 {\let\eee=\fff \let\fff=\gggA%
3013 \Put@Direct(0,0){\bonde}% bond between 5 and 6

3014 }%

3015 \else\if\member g\relax%
3016 {\let\aaa=\hhh \let\fff=\gggA%
3017 \Put@Direct(0,0){\bondf}% bond between 7 and 6

3018 }%

3019 \else\if\member h\relax%
3020 {\let\aaa=\hhh \let\bbb=\jjj%
3021 \Put@Direct(0,0){\bonda}% bond between 7 and 7a

3022 }%

3023 \else\if\member i\relax%
3024 {\let\fff=\jjj%
3025 \Put@Direct(342,0){\bondf}% bond between 1 and 7a

3026 }%

3027 \else\if\member j\relax%
3028 {\let\ccc=\iii\let\bbb=\jjj%
3029 \Put@Direct(0,0){\bondb}% bond between 7a and 3a

3030 }%

3031 \else\if\member J\relax%
3032 {\let\eee=\iii\let\fff=\jjj%
3033 \Put@Direct(342,0){\bonde}% bond between 7a and 3a

3034 }%

3035 \else\if\member A\relax%left aromatic circle
3036 \Put@oCircle(0,203){240}%               %circle
3037 \else\if\member B\relax%left aromatic circle
3038 \Put@oCircle(342,233){180}%               %circle 1993/11/20 S.Fujita
3039 \else
3040 \expandafter\twoCH@@R\member//%
3041 \def\aax{7a}\def\aay{3a}%
3042  \if\@@tmpa 1\relax%
3043  \putratom{304}{282}{\@@tmpb}%       % right type
3044  \else\if\@@tmpa 3\relax%
3045  \putratom{402}{120}{\@@tmpb}%      % right type
3046  \else\if\@@tmpa 2\relax%
3047  \putratom{402}{253}{\@@tmpb}%      % right type
3048  \else\if\@@tmpa 7\relax%
3049  \putratom{-38}{282}{\@@tmpb}%      % right type
3050  \else\if\@@tmpa 6\relax%
3051  \putlatom{-60}{120}{\@@tmpb}%      % left type
3052  \else\if\@@tmpa 5\relax%
3053  \putlatom{-60}{253}{\@@tmpb}%      % left type
3054  \else\if\@@tmpa 4\relax%
3055  \putratom{-38}{68}{\@@tmpb}%       % right type
3056  \else\if\@@tmpa 9\relax%
3057  \putratom{60}{253}{\@@tmpb}%       % right type
3058  \else\ifx\@@tmpa\aax\relax%
3059  \putratom{60}{253}{\@@tmpb}%       % right type
3060  \else\ifx\@@tmpa\aay\relax%
3061  \putratom{60}{120}{\@@tmpb}%       % right type
3062  \else\if\@@tmpa 8\relax%
3063  \putratom{60}{120}{\@@tmpb}%       % right type

3064  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
3065 % ***********************
3066 % * setting fused rings *
3067 % ***********************
3068 \expandafter\twoCH@R\member//%
3069 \set@fusion@nonavi
3070 \fi\fi\fi\fi\fi\fi\fi\fi\fi%
3071 \fi\fi\fi\fi\fi\fi%

3072 }%

3073 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3074 % % setting hetero atoms and spiro rings %
3075 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3076 \iniflag
3077 \Put@Direct(342,0){\set@hetatom@sixv{#3}{0}{0}{4}{0}%
3078 %   \if@aclip \global\@acliptrue\fi
3079 %   \if@bclip \global\@bcliptrue\fi
3080 %   \if@cclip \global\@ccliptrue\fi
3081 \storeclipinfo
3082 }% %substituents on 1 to 3
3083 \developclipinfo
3084 \Put@Direct(0,0){\set@hetatom@sixv{#3}{0}{3}{7}{0}%
3085 \@gclipfalse \if@fclip \@gcliptrue \fi%
3086 \@fclipfalse \if@eclip \@fcliptrue \fi%
3087 \@eclipfalse \if@clip \@ecliptrue \fi
3088 \storeclipinfo
3089 }%substituents on 4 to 6
3090 \developclipinfo
3091 \Put@Direct(0,0){\set@hetatom@sixv{#3}{-6}{0}{2}{0}%
3092 \@hclipfalse \if@aclip \@hcliptrue \fi
3093 \storeclipinfo
3094 }%%substituent on 7
3095 \developclipinfo
3096 \Put@Direct(0,0){\set@vrtx@nonafusevi{#3}%
3097 \storeclipinfo
3098 }% fused positions
3099 \developclipinfo
3100 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3101 % % setting substituents and exocyclic bonds %
3102 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3103 \Put@Direct(342,0){\setsixringv{#4}{0}{0}{4}{0}}% %substituents on 1 to 3
3104 {\@clipfalse \if@eclip \@cliptrue \fi%     %substituents on 4 to 6
3105 \@eclipfalse \if@fclip \@ecliptrue \fi%
3106 \@fclipfalse \if@gclip \@fcliptrue \fi%
3107 \Put@Direct(0,0){\setsixringv{#4}{0}{3}{7}{0}}%

3108 }%

3109 {\@aclipfalse \if@hclip \@acliptrue \fi%   %substituent on 7
3110 \Put@Direct(0,0){\setsixringv{#4}{-6}{0}{2}{0}}%

3111 }%

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

3114 }%

3115 {\@clipfusefalse \if@jclip \@clipfusetrue \fi%
3116 \Put@Direct(171,303){\setatombond{#4}{-8}{1}}%  %9 for 7a position

3117 }%

3118 \end{ShiftPicEnvB}\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
3119 \def\test@vertix@nonavi#1{%
3120 \@forsemicol\member:=#1\do{%
3121 \ifx\member\empty\else%
3122 \expandafter\@m@mb@r\member;\relax%
3123 \expandafter\twoch@r\@membera{}%
3124 \ifcase\@tmpa%
3125 \or%
3126 \if\@tmpb s\relax\def\aaa{}\else\def\aaa{@}\fi
3127 \or%2
3128 \if\@tmpb s\relax\def\bbb{}\else\def\bbb{@}\fi
3129 \or%3%
3130 \if\@tmpb a\relax%
3131  \def\iii{@}%3a
3132 \else\if\@tmpb s\relax%
3133  \def\ccc{}%3
3134 \else\if\@tmpb h\relax%
3135  \def\ccc{@}%3
3136 \else\ifx\@tmpb\empty\relax%
3137  \def\ccc{@}%3
3138 \fi\fi\fi\fi%
3139 \or%4
3140 \if\@tmpb s\relax\def\eee{}\else\def\eee{@}\fi
3141 \or%5
3142 \if\@tmpb s\relax\def\fff{}\else\def\fff{@}\fi
3143 \or%6
3144 \if\@tmpb s\relax\def\gggA{}\else\def\gggA{@}\fi
3145 \or%7
3146 \if\@tmpb a%
3147  \xdef\jjj{@}%7a
3148 \else\if\@tmpb s\relax%
3149  \xdef\hhh{}%7s
3150 \else\if\@tmpb h\relax%
3151  \xdef\hhh{@}%7h
3152 \else\ifx\@tmpb\empty\relax%
3153  \xdef\hhh{@}%7
3154 \fi\fi\fi\fi%
3155 \or%8 (= 3a)
3156 \if\@tmpb s\relax\def\iii{}\else\def\iii{@}\fi
3157 \or%9 (= 7a)
3158 \if\@tmpb s\relax\def\jjj{}\else\def\jjj{@}\fi
3159 \fi\fi}}

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

\set@vrtx@nonafusevi
3160 \def\set@vrtx@nonafusevi#1{%

3161 \@forsemicol\member:=#1\do{%
3162 \ifx\member\empty\else%
3163 \expandafter\@m@mb@r\member;\relax%
3164 \expandafter\twoch@r\@membera{}%
3165 \ifcase\@tmpa\or\or
3166 \or%%%%3
3167 \if\@tmpb a\relax%
3168 %     \global\@icliptrue%
3169  \@icliptrue%%20001/06/20 by S. Fujita
3170  \putlatom{207}{65}{\@memberb}%  % left type
3171 \else\relax

3172 \fi

3173 \or\or\or
3174 \or%7
3175 \if\@tmpb a\relax%
3176 %     \global\@jcliptrue%
3177  \@jcliptrue%%20001/06/20 by S. Fujita
3178  \putlatom{207}{280}{\@memberb}% % left type
3179 \else\relax

3180 \fi

3181 \or%8 (= 3a)
3182 %     \global\@icliptrue%
3183  \@icliptrue%%20001/06/20 by S. Fujita
3184  \putlatom{207}{65}{\@memberb}%  % left type
3185 \or%9 (= 7a)
3186 %     \global\@jcliptrue%
3187  \@jcliptrue%%20001/06/20 by S. Fujita
3188  \putlatom{207}{280}{\@memberb}% % left type
3189 \fi\fi}%
3190 }% 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
3191 \def\purinev{\@ifnextchar[{\@purinev[@}{\@purinev[ra]}}
3192 \def\@purinev[#1]#2{%
3193 \iforigpt \typeout{command `purinev' %
3194 is based on `nonaheterov'.}\fi%
3195 \nonaheterov[#1]{1==N;3==N;5==N;7==N}{#2}}
3196 \def\purinevi{\@ifnextchar[{\@purinevi[@}{\@purinevi[ra]}}
3197 \def\@purinevi[#1]#2{%
3198 \iforigpt \typeout{command `purinevi' %
3199 is based on `nonaheterovi'.}\fi%
3200 \nonaheterovi[#1]{1==N;3==N;5==N;7==N}{#2}}
\indolev \indolevi
3201 \def\indolev{\@ifnextchar[{\@indolev[@}{\@indolev[rb]}}
3202 \def\@indolev[#1]#2{%
3203 \iforigpt \typeout{command `indolev' %
3204 is based on `nonaheterov'.}\fi%
3205 \nonaheterov[#1]{1==N}{#2}}
3206 \def\indolevi{\@ifnextchar[{\@indolevi[@}{\@indolevi[rb]}}
3207 \def\@indolevi[#1]#2{%
3208 \iforigpt \typeout{command `indolevi' %
3209 is based on `nonaheterovi'.}\fi%
3210 \nonaheterovi[#1]{1==N}{#2}}
\indolizinev
\indolizinevi

3211 \def\indolizinev{%
3212 \@ifnextchar[{\@indolizinev[@}{\@indolizinev[aceg]}}
3213 \def\@indolizinev[#1]#2{%
3214 \iforigpt \typeout{command `indolizinev' %
3215 is based on `nonaheterov'.}\fi%
3216 \nonaheterov[#1]{7a==N}{#2}}
3217 \def\indolizinevi{%
3218 \@ifnextchar[{\@indolizinevi[@}{\@indolizinevi[aceg]}}
3219 \def\@indolizinevi[#1]#2{%
3220 \iforigpt \typeout{command `indolizinevi' %
3221 is based on `nonaheterovi'.}\fi%
3222 \nonaheterovi[#1]{7a==N}{#2}}
\isoindolev
\isoindolevi
3223 \def\isoindolev{\@ifnextchar[{\@isoindolev[@}{\@isoindolev[cegi]}}
3224 \def\@isoindolev[#1]#2{%
3225 \iforigpt \typeout{command `isoindolev' %
3226 is based on `nonaheterov'.}\fi%
3227 \nonaheterov[#1]{2==N}{#2}}
3228 \def\isoindolevi{\@ifnextchar[{\@isoindolevi[@}{\@isoindolevi[cegi]}}
3229 \def\@isoindolevi[#1]#2{%
3230 \iforigpt \typeout{command `isoindolevi' %
3231 is based on `nonaheterovi'.}\fi%
3232 \nonaheterovi[#1]{2==N}{#2}}
\benzofuranev
\benzofuranevi
3233 \def\benzofuranev{%
3234 \@ifnextchar[{\@benzofuranev[@}{\@benzofuranev[rb]}}
3235 \def\@benzofuranev[#1]#2{%
3236 \iforigpt \typeout{command `benzofuranev' %
3237 is based on `nonaheterov'.}\fi%
3238 \nonaheterov[#1]{1==O}{#2}}
3239 \def\benzofuranevi{%
3240 \@ifnextchar[{\@benzofuranevi[@}{\@benzofuranevi[rb]}}
3241 \def\@benzofuranevi[#1]#2{%
3242 \iforigpt \typeout{command `benzofuranevi' %
3243 is based on `nonaheterovi'.}\fi%
3244 \nonaheterovi[#1]{1==O}{#2}}
\isobenzofuranev
\isobenzofuranevi
3245 \def\isobenzofuranev{\@ifnextchar[{\@isobenzofuranev[@}%
3246 {\@isobenzofuranev[cegi]}}
3247 \def\@isobenzofuranev[#1]#2{%
3248 \iforigpt \typeout{command `isobenzofuranev' %
3249 is based on `nonaheterov'.}\fi%
3250 \nonaheterov[#1]{2==O}{#2}}
3251 \def\isobenzofuranevi{\@ifnextchar[{\@isobenzofuranevi[@}%
3252 {\@isobenzofuranevi[cegi]}}
3253 \def\@isobenzofuranevi[#1]#2{%
3254 \iforigpt \typeout{command `isobenzofuranevi' %
3255 is based on `nonaheterovi'.}\fi%
3256 \nonaheterovi[#1]{2==O}{#2}}
\benzoxazolev
\benzoxazolevi

3257 \def\benzoxazolev{%
3258 \@ifnextchar[{\@benzoxazolev[@}{\@benzoxazolev[rb]}}
3259 \def\@benzoxazolev[#1]#2{%
3260 \iforigpt \typeout{command `benzoxazolev' %
3261 is based on `nonaheterov'.}\fi%
3262 \nonaheterov[#1]{1==O;3==N}{#2}}
3263 \def\benzoxazolevi{%
3264 \@ifnextchar[{\@benzoxazolevi[@}{\@benzoxazolevi[rb]}}
3265 \def\@benzoxazolevi[#1]#2{%
3266 \iforigpt \typeout{command `benzoxazolevi' %
3267 is based on `nonaheterovi'.}\fi%
3268 \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
3269 \def\sixunitv{\@ifnextchar[{\@sixunitv[@}{\@sixunitv[@]}}
3270 \def\@sixunitv[#1]#2#3#4{\sixheterov[#1]{#2}{#3}[#4]}

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 \fiveheterov:

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
3271 \def\fiveunitv{\@ifnextchar[{\@fiveunitv[@}{\@fiveunitv[r]}}
3272 \def\@fiveunitv[#1]#2#3#4{\fiveheterov[#1]{#2}{#3}[#4]}

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

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

3. placing inner double bonds,

4. setting hetero atoms, and

5. placing substituents by using \setsixringv partially.

\fiveunitvi
\@fiveunitvi
3273 \def\fiveunitvi{\@ifnextchar[{\@fiveunitvi[@}{\@fiveunitvi[r]}}
3274 \def\@fiveunitvi[#1]#2#3#4{\fiveheterovi[#1]{#2}{#3}[#4]}

11 Four-membered heterocycles

11.1 Horizontal bonds

\bondshoriz
3275 % %%%%%%%%%%%%%%%%%%%
3276 % % horizontal bond %
3277 % %%%%%%%%%%%%%%%%%%%
3278 % horizontal inner bond for four-membered rings
3279 \def\bondshoriz{%
3280 \begin{sfpicture}(200,300)(0,0)
3281 \ifx\fff\empty%
3282  \ifx\bbb\empty%
3283  \Put@Line(-138,270)(1,0){134}%double bond 4-3
3284  \else%
3285  \Put@Line(-138,270)(1,0){115}%double bond 4-3
3286  \fi%
3287 \else%
3288  \ifx\bbb\empty%
3289  \Put@Line(-120,270)(1,0){115}%double bond 4-3
3290  \else%
3291  \Put@Line(-120,270)(1,0){96}%double bond 4-3
3292  \fi%
3293 \fi\end{sfpicture}}%
3294 % horizontal inner bond for four-membered rings (inverse type)
3295 \def\bondshorizi{%
3296 \begin{sfpicture}(200,300)(0,0)
3297 \ifx\eee\empty%
3298  \ifx\ccc\empty%
3299  \Put@Line(-138,136)(1,0){134}%double bond 4-3
3300  \else%%
3301  \Put@Line(-138,136)(1,0){115}%double bond 4-3
3302  \fi%
3303 \else%
3304  \ifx\ccc\empty%
3305  \Put@Line(-120,136)(1,0){115}%double bond 4-3
3306  \else%
3307  \Put@Line(-120,136)(1,0){96}%double bond 4-3
3308  \fi%
3309 \fi\end{sfpicture}}%
\skbondshoriz
3310 %horizontal bond for four-membered rings
3311 \def\skbondshoriz{%
3312 \begin{sfpicture}(200,300)(0,0)
3313 \ifx\fff\empty%
3314  \ifx\bbb\empty%
3315  \Put@Line(-171,303)(1,0){200}%bond 4-3
3316  \else%
3317  \Put@Line(-171,303)(1,0){158}%bond 4-3
3318  \fi%
3319 \else%
3320  \ifx\bbb\empty%
3321  \Put@Line(29,303)(-1,0){158}%bond 4-3

3322  \else%
3323  \Put@Line(-129,303)(1,0){116}%bond 4-3
3324  \fi%
3325 \fi\end{sfpicture}}%
\skbondshorizi
3326 %horizontal bond for four-membered rings (inverse type)
3327 \def\skbondshorizi{%
3328 \begin{sfpicture}(200,300)(0,0)
3329 \ifx\eee\empty%
3330  \ifx\ccc\empty%
3331  \Put@Line(-171,103)(1,0){200}%bond 4-3
3332  \else%
3333  \Put@Line(-171,103)(1,0){158}%bond 4-3
3334  \fi%
3335 \else%
3336  \ifx\ccc\empty%
3337  \Put@Line(29,103)(-1,0){158}%bond 4-3
3338  \else%
3339  \Put@Line(-129,103)(1,0){116}%bond 4-3
3340  \fi%
3341 \fi\end{sfpicture}}%
\dotskbondshoriz
3342 %horizontal bond for four-membered rings
3343 \def\dotskbondshoriz{%
3344 \begin{sfpicture}(200,300)(0,0)
3345 \ifx\fff\empty%
3346  \ifx\bbb\empty%
3347  \dotorline(-171,303)(1,0){200}/(-171,303)(29,303)%
3348  \else%
3349  \dotorline(-171,303)(1,0){158}/(-171,303)(-29,303)%
3350  \fi%
3351 \else%
3352  \ifx\bbb\empty%
3353  \dotorline(29,303)(-1,0){158}/(29,303)(-129,303)%
3354  \else%
3355  \dotorline(-129,303)(1,0){116}/(-129,303)(-13,303)%
3356  \fi%
3357 \fi\end{sfpicture}}%
\dotskbondshorizi
3358 %horizontal bond for four-membered rings (inverse type)
3359 \def\dotskbondshorizi{%
3360 \begin{sfpicture}(200,300)(0,0)
3361 \ifx\eee\empty%
3362  \ifx\ccc\empty%
3363  \dotorline(-171,103)(1,0){200}/(-171,103)(29,103)%
3364  \else%
3365  \dotorline(-171,103)(1,0){158}/(-171,103)(-29,103)%
3366  \fi%
3367 \else%
3368  \ifx\ccc\empty%
3369  \dotorline(29,103)(-1,0){158}/(29,103)(-129,103)%

3370  \else%
3371  \dotorline(-129,103)(1,0){116}/(-129,103)(-13,103)%
3372  \fi%
3373 \fi\end{sfpicture}}%

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

3374 \def\fourhetero{\@ifnextchar({\@four@hetero(@}{\@four@hetero(@)}}
3375 \def\@four@hetero(#1){\@ifnextchar[{\@four@@hetero(#1)[@}%
3376 {\@four@@hetero(#1)[@]}}
3377 \def\@four@@hetero(#1)[#2]#3#4{\@ifnextchar[%
3378 {\@fourhetero(#1)[#2]{#3}{#4}[@}%
3379 {\@fourhetero(#1)[#2]{#3}{#4}[@]}}
3380 \def\@fourhetero(#1)[#2]#3#4[#5]{%
3381 % %%%%%%%%%%%%%%%%%%%%%%%%%%
3382 % % treatment of atom list %
3383 % %%%%%%%%%%%%%%%%%%%%%%%%%%
3384 \iniatom\iniflag%initialize
3385 \test@vertix@sixv{#3}{e}{c}{b}{f}{@}{@}%
3386 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3387 % % adustment of subs positions %
3388 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3389 \@reset@ylsw%
3390 \ylposition{#4}{5}{1}{4}{-1}% for 2 to 3
3391 \if@ylsw \ifx\@@ylii\empty
3392 \def\@@ylii{142}\def\@@yli{0}\fi
3393 \else
3394 \ylposition{#4}{4}{4}{6}{0}% for 1

3395 \fi

3396 \if@ylsw \ifx\@@ylii\empty
3397 \def\@@ylii{0}\def\@@yli{0}\fi
3398 \else
3399 \ylposition{#4}{2}{5}{7}{0}% for 4

3400 \fi

3401 \if@ylsw \ifx\@@ylii\empty
3402 \def\@@ylii{0}\def\@@yli{0}\fi

3403 \fi

3404 \begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
3405 (800,880)(-571,-137){fourhetero}%
3406 (571,137)(171,-103)%2002/4/30 by S. Fujita
3407 % %%%%%%%%%%%%%%%%%%
3408 % % outer skeleton %
3409 % %%%%%%%%%%%%%%%%%%
3410 {\resetbdsw%
3411 \@bond@@omit{#5}%
3412 \Put@Direct(0,0){\set@skel@longbond{#1}{a}{skbondshorizi}}%
3413  % bond between 1 and 2 \@aaa -> \skbondshorizi etc

3414 \Put@Direct(-142,0){\set@skel@bond{#1}{b}{b}}%
3415  % bond between 2 and 3 \@bbb -> \skbondb etc
3416 \Put@Direct(0,0){\set@skel@longbond{#1}{c}{skbondshoriz}}%
3417  % bond between 3 and 4 \@ccc -> \skbondshoriz etc
3418 \Put@Direct(0,0){\set@skel@bond{#1}{d}{e}}%
3419  % bond between 4 and 1 \@ddd -> \skbonde etc

3420 }%

3421 % %%%%%%%%%%%%%%%%%%%%%
3422 % % inner double bond %
3423 % %%%%%%%%%%%%%%%%%%%%%
3424 \@tfor\member:=#2\do{%
3425 \if\member r\relax%
3426 \else\if\member a\relax \Put@Direct(0,0){\bondshorizi}%
3427 \else\if\member b\relax \Put@Direct(-142,0){\bondb}%
3428 \else\if\member c\relax \Put@Direct(0,0){\bondshoriz}%
3429 \else\if\member d\relax \Put@Direct(0,0){\bonde}%
3430 \else
3431 % %%%%%%%%%%%%%%%%%%%%%%%%%
3432 % % inner bond attachment %
3433 % %%%%%%%%%%%%%%%%%%%%%%%%%
3434 \expandafter\twoCH@@R\member//%
3435  \set@fusionadd@fourv
3436 \fi\fi\fi\fi\fi}%
3437 % %%%%%%%%%%%%%%%%%%%%%%%
3438 % % setting heteroatoms %
3439 % %%%%%%%%%%%%%%%%%%%%%%%
3440 \Put@Direct(-142,0){\set@hetatom@sixv{#3}{5}{1}{4}{-1}%
3441 \storeclipinfo%added 2001/06/20 by S. Fujita
3442 }% for 2 to 3
3443 \developclipinfo%added 2001/06/20 by S. Fujita
3444 \Put@Direct(0,0){\set@hetatom@sixv{#3}{4}{4}{6}{0}%
3445 \storeclipinfo%added 2001/06/20 by S. Fujita
3446 }% for 1
3447 \developclipinfo%added 2001/06/20 by S. Fujita
3448 \Put@Direct(0,0){\set@hetatom@sixv{#3}{2}{5}{7}{0}%
3449 \storeclipinfo%added 2001/06/20 by S. Fujita
3450 }% for 4
3451 \developclipinfo%added 2001/06/20 by S. Fujita
3452 % %%%%%%%%%%%%%%%%%%%%%%%%
3453 % % setting substituents %
3454 % %%%%%%%%%%%%%%%%%%%%%%%%
3455 \Put@Direct(-142,0){\setsixringv{#4}{5}{1}{4}{-1}}% for 2 to 3
3456 \Put@Direct(0,0){\setsixringv{#4}{4}{4}{6}{0}}% for 1
3457 \Put@Direct(0,0){\setsixringv{#4}{2}{5}{7}{0}}% for 4
3458 \end{ShiftPicEnvB}\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
3459 \def\set@fusionadd@fourv{%

3460  \if\@@tmpa 1\relax%
3461  \putlatom{-200}{120}{\scriptsize \@@tmpb}%       % right type
3462  \else\if\@@tmpa 2\relax%
3463  \putratom{60}{120}{\scriptsize \@@tmpb}%        % right type
3464  \else\if\@@tmpa 3\relax%
3465  \putratom{60}{233}{\scriptsize \@@tmpb}%        % right type
3466  \else\if\@@tmpa 4\relax%
3467  \putlatom{-200}{233}{\scriptsize \@@tmpb}%       % right type
3468  \else
3469 % %%%%%%%%%%%%%%%%%%%%%
3470 % % inner bond fusion %
3471 % %%%%%%%%%%%%%%%%%%%%%
3472  \set@fusion@fourv
3473  \fi\fi\fi\fi%

3474 }%

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
3475 \def\set@fusion@fourv{%
3476 % %%%%%%%%%%%%%%%%%%%%%
3477 % % inner bond fusion %
3478 % %%%%%%%%%%%%%%%%%%%%%
3479 \if\@@tmpa d\relax%
3480  \putlratom{-171}{303}{\@@tmpb}%     % bond fused
3481  \FuseWarning{0}{200}%
3482  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{d}%
3483  \else\if\@@tmpa D\relax%
3484  \putlratom{-171}{103}{\@@tmpb}%     % bond fused
3485  \FuseWarning{0}{-200}%
3486  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{D}%
3487  \else\if\@@tmpa a\relax%
3488  \putlratom{-173}{103}{\@@tmpb}%     % bond fused
3489  \FuseWarning{-200}{0}%
3490  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{f}%
3491  \else\if\@@tmpa A\relax%
3492  \putlratom{27}{103}{\@@tmpb}%       % bond fused
3493  \FuseWarning{200}{0}%
3494  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}%
3495  \else\if\@@tmpa b\relax%
3496  \putlratom{27}{103}{\@@tmpb}%    % bond fused
3497  \FuseWarning{0}{-200}%
3498  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}%
3499  \else\if\@@tmpa B\relax%
3500  \putlratom{27}{303}{\@@tmpb}%    % bond fused
3501  \FuseWarning{0}{200}%
3502  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}%
3503  \else\if\@@tmpa c\relax%
3504  \putlratom{27}{303}{\@@tmpb}%    % bond fused
3505  \FuseWarning{200}{0}%
3506  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c}%
3507  \else\if\@@tmpa C\relax%

3508  \putlratom{-171}{303}{\@@tmpb}%      % bond fused
3509  \FuseWarning{-200}{0}%
3510  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C}%
3511 \fi\fi\fi\fi\fi\fi\fi\fi%
3512 }% end of the macro \set@fusion@fourv

12 Three-membered heterocycles

12.1 Vertical type

12.1.1 Sloped bonds

\bondtria
3513 % **********************
3514 % * bonds for triangle *
3515 % **********************
3516 % fff 3--------2bbb

3517 % ` /

3518 %   ddd  `1/ <===== the original point
3519 % bond between 1 and 2
3520 \def\bondtria{%
3521 \ifx\ddd\empty%
3522 \ifx\bbb\empty%
3523  \Put@Line(-6,42)(3,5){72}%           %double bond 1-2
3524 \else%
3525  \Put@Line(-6,42)(3,5){60}%           %double bond 1-2
3526 \fi%
3527 \else%
3528 \ifx\bbb\empty%
3529  \Put@Line(6,62)(3,5){60}%            %double bond 1-2
3530 \else%
3531  \Put@Line(10,32)(3,5){60}%           %double bond 1-2
3532 \fi%
3533 \fi%

3534 }%

\bondtrib
3535 % bond between 1 and 3
3536 \def\bondtrib{%
3537 \ifx\ddd\empty%
3538 \ifx\fff\empty%
3539  \Put@Line(6,42)(-3,5){72}%           %double bond 1-3
3540 \else%
3541  \Put@Line(6,42)(-3,5){60}%           %double bond 1-3
3542 \fi%
3543 \else%
3544 \ifx\fff\empty%
3545  \Put@Line(-6,62)(-3,5){60}%          %double bond 1-2
3546 \else%
3547  \Put@Line(6,42)(-3,5){60}%           %double bond 1-2
3548 \fi%
3549 \fi%

3550 }%

\skbondtria
3551 %bond between 1 and 2
3552 \def\skbondtria{%
3553 \begin{sfpicture}(200,200)(0,0)
3554 \ifx\ddd\empty%
3555  \ifx\bbb\empty%
3556  \Put@Line(0,0)(3,5){103}%           %bond 1-2
3557  \else%
3558  \Put@Line(0,0)(3,5){80}%            %bond 1-2
3559  \fi%
3560 \else%
3561  \ifx\bbb\empty%
3562  \Put@Line(103,171)(-3,-5){80}%      %bond 1-2
3563  \else%
3564  \Put@Line(35,21)(3,5){60}%          %bond 1-2
3565  \fi%
3566 \fi\end{sfpicture}}%
\skbondtrib
3567 %bond between 1 and 3
3568 \def\skbondtrib{%
3569 \begin{sfpicture}(200,200)(0,0)
3570 \ifx\ddd\empty%
3571  \ifx\fff\empty%
3572  \Put@Line(0,0)(-3,5){103}%         %bond 1-3
3573  \else%
3574  \Put@Line(0,0)(-3,5){80}%          %bond 1-3
3575  \fi%
3576 \else%
3577 %    \ifx\eee\empty%bug fix 1993/11/19
3578  \ifx\fff\empty%
3579  \Put@Line(-103,171)(3,-5){80}%     %bond 1-3
3580  \else%
3581  \Put@Line(-35,21)(-3,5){60}%       %bond 1-3
3582  \fi%
3583 \fi\end{sfpicture}}%
\dotskbondtria
3584 %bond between 1 and 2
3585 \def\dotskbondtria{%
3586 \begin{sfpicture}(200,200)(0,0)
3587 \ifx\ddd\empty%
3588  \ifx\bbb\empty%
3589  \dotorline(0,0)(3,5){103}/(0,0)(103,171)%
3590  \else%
3591  \dotorline(0,0)(3,5){80}/(0,0)(80,133)%
3592  \fi%
3593 \else%
3594  \ifx\bbb\empty%
3595  \dotorline(103,171)(-3,-5){80}/(103,171)(23,38)%
3596  \else%
3597  \dotorline(35,21)(3,5){60}/(35,21)(95,121)%
3598  \fi%
3599 \fi\end{sfpicture}}%

\dotskbondtrib
3600 %bond between 1 and 3
3601 \def\dotskbondtrib{%
3602 \begin{sfpicture}(200,200)(0,0)
3603 \ifx\ddd\empty%
3604  \ifx\fff\empty%
3605  \dotorline(0,0)(-3,5){103}/(0,0)(-103,171)%
3606  \else%
3607  \dotorline(0,0)(-3,5){80}/(0,0)(-80,133)%
3608  \fi%
3609 \else%
3610  \ifx\fff\empty%
3611  \dotorline(-103,171)(3,-5){80}/(-103,171)(-23,38)%
3612  \else%
3613  \dotorline(-35,21)(-3,5){60}/(-35,21)(-95,121)%
3614  \fi%
3615 \fi\end{sfpicture}}%

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

3616 \def\threehetero{\@ifnextchar({\@three@hetero(@}{\@three@hetero(@)}}
3617 \def\@three@hetero(#1){\@ifnextchar[{\@three@@hetero(#1)[@}%
3618 {\@three@@hetero(#1)[@]}}
3619 \def\@three@@hetero(#1)[#2]#3#4{\@ifnextchar[%
3620 {\@threehetero(#1)[#2]{#3}{#4}[@}%
3621 {\@threehetero(#1)[#2]{#3}{#4}[@]}}
3622 \def\@threehetero(#1)[#2]#3#4[#5]{%
3623 % %%%%%%%%%%%%%%%%%%%%%%%%%%
3624 % % treatment of atom list %
3625 % %%%%%%%%%%%%%%%%%%%%%%%%%%
3626 \iniatom\iniflag%initialize
3627 \test@vertix@sixv{#3}{d}{b}{f}{@}{@}{@}%
3628 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3629 % % adustment of subs positions %
3630 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3631 \@reset@ylsw%
3632 \ylposition{#4}{3}{3}{5}{0}%subst 1
3633 \if@ylsw \ifx\@@ylii\empty
3634 \def\@@ylii{68}\def\@@yli{0}\fi
3635 \else
3636 \ylposition{#4}{0}{1}{3}{0}%subst 2

3637 \fi

3638 \if@ylsw \ifx\@@ylii\empty
3639 \def\@@ylii{142}\def\@@yli{132}\fi
3640 \else
3641 \ylposition{#4}{3}{5}{7}{0}%subst 3

3642 \fi

3643 \if@ylsw \ifx\@@ylii\empty
3644 \def\@@ylii{0}\def\@@yli{132}\fi

3645 \fi

3646 \begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
3647 (800,580)(-468,-240){threeheterov}%
3648 (468,240)(68,0)%2002/4/30 by S. Fujita
3649 % %%%%%%%%%%%%%%%%%%
3650 % % outer skeleton %
3651 % %%%%%%%%%%%%%%%%%%
3652 {\resetbdsw%
3653 \@bond@@omit{#5}%
3654 \Put@Direct(-68,0){\set@skel@longbond{#1}{a}{skbondtria}}%
3655  % bond between 1 and 2 \@aaa -> \skbondtria etc
3656 \Put@Direct(0,-132){\set@skel@longbond{#1}{b}{skbondshoriz}}%
3657  % bond between 2 and 3 \@bbb -> \skbondb etc
3658 \Put@Direct(-68,0){\set@skel@longbond{#1}{c}{skbondtrib}}%
3659  % bond between 3 and 1 \@ccc -> \skbondtria etc

3660 }%

3661 % %%%%%%%%%%%%%%%%%%%%%
3662 % % inner double bond %
3663 % %%%%%%%%%%%%%%%%%%%%%
3664 \@tfor\member:=#2\do{%
3665 \if\member r\relax%
3666 \else\if\member a\relax\Put@Direct(-68,0){\bondtria}%
3667 \else\if\member b\relax\Put@Direct(0,-126){\bondshoriz}%
3668 \else\if\member c\relax\Put@Direct(-68,0){\bondtrib}%
3669 \else\if\member A\relax% aromatic circle
3670 \Put@oCircle(-70,108){100}%               %circle
3671 \else
3672 % %%%%%%%%%%%%%%%%%%%%%%%%%
3673 % % inner bond attachment %
3674 % %%%%%%%%%%%%%%%%%%%%%%%%%
3675 \expandafter\twoCH@@R\member//%
3676  \set@fusionadd@threev
3677 \fi\fi\fi\fi\fi%

3678 }%

3679 % %%%%%%%%%%%%%%%%%%%%%%%%
3680 % % setting hetero atoms %
3681 % %%%%%%%%%%%%%%%%%%%%%%%%
3682 \Put@Direct(-68,0){\set@hetatom@sixv{#3}{3}{3}{5}{0}%
3683 %\if@clip\global\@cliptrue\fi
3684 \storeclipinfo
3685 }%subst 1
3686 \developclipinfo
3687 \Put@Direct(-142,-132){\set@hetatom@sixv{#3}{0}{1}{3}{0}%
3688 %\if@bclip\global\@bcliptrue\fi
3689 \storeclipinfo
3690 }%subst 2

3691 \developclipinfo
3692 \Put@Direct(0,-132){\set@hetatom@sixv{#3}{3}{5}{7}{0}%
3693 %\if@fclip\global\@fcliptrue\fi
3694 \storeclipinfo
3695 }%subst 3
3696 \developclipinfo
3697 % %%%%%%%%%%%%%%%%%%%%%%%%
3698 % % setting substituents %
3699 % %%%%%%%%%%%%%%%%%%%%%%%%
3700 \Put@Direct(-68,0){\setsixringv{#4}{3}{3}{5}{0}}%subst 1
3701 \Put@Direct(-142,-132){\setsixringv{#4}{0}{1}{3}{0}}%subst 2
3702 \Put@Direct(0,-132){\setsixringv{#4}{3}{5}{7}{0}}%subst 3
3703 \end{ShiftPicEnvB}\iniatom\iniflag}% %end of \threehetero macro
\threeheterov
3704 \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
3705 \def\set@fusionadd@threev{%
3706  \if\@@tmpa 0\relax%
3707  \putratom{-94}{92}{\scriptsize\@@tmpb}%      % right type
3708  \else\if\@@tmpa 1\relax%
3709  \putratom{-94}{60}{\scriptsize\@@tmpb}%      % right type
3710  \else\if\@@tmpa 2\relax%
3711  \putratom{-52}{120}{\scriptsize\@@tmpb}%     % right type
3712  \else\if\@@tmpa 3\relax%
3713  \putratom{-126}{126}{\scriptsize\@@tmpb}%    % right type
3714  \else\if\@@tmpa 4\relax%
3715  \putratom{-30}{-20}{\scriptsize\@@tmpb}%      % right type
3716  \else\if\@@tmpa 5\relax%
3717  \putratom{52}{110}{\scriptsize\@@tmpb}%      % right type
3718  \else\if\@@tmpa 6\relax%
3719  \putratom{-250}{110}{\scriptsize\@@tmpb}%    % right type
3720  \else
3721 % %%%%%%%%%%%%%%%%%%%%%
3722 % % inner bond fusion %
3723 % %%%%%%%%%%%%%%%%%%%%%
3724  \set@fusion@threev
3725  \fi\fi\fi\fi\fi\fi\fi%

3726 }%

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
3727 \def\set@fusion@threev{%
3728 % %%%%%%%%%%%%%%%%%%%%%

3729 % % inner bond fusion %
3730 % %%%%%%%%%%%%%%%%%%%%%
3731 \if\@@tmpa b\relax%
3732  \putlratom{29}{171}{\@@tmpb}%    % bond fused
3733  \FuseWarning{200}{0}%
3734  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}%
3735  \else\if\@@tmpa B\relax%
3736  \putlratom{-171}{171}{\@@tmpb}%      % bond fused
3737  \FuseWarning{-200}{0}%
3738  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}%
3739  \else\if\@@tmpa a\relax%
3740  \putlratom{-68}{0}{\@@tmpb}%    % bond fused
3741  \FuseWarning{-103}{-171}%
3742  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}%
3743  \else\if\@@tmpa A\relax%
3744  \putlratom{29}{171}{\@@tmpb}%    % bond fused
3745  \FuseWarning{103}{171}%
3746  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}%
3747  \else\if\@@tmpa c\relax%
3748  \putlratom{-171}{171}{\@@tmpb}%      % bond fused
3749  \FuseWarning{-103}{171}%
3750  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c}%
3751  \else\if\@@tmpa C\relax%
3752  \putlratom{-68}{0}{\@@tmpb}%    % bond fused
3753  \FuseWarning{103}{-171}%
3754  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C}%
3755 \fi\fi\fi\fi\fi\fi%
3756 }% end of the macro \set@fusion@threev

12.2 Inverse vertical type

12.2.1 Sloped bonds

\Bondtria
3757 % **********************
3758 % * bonds for triangle *
3759 % **********************

3760 %

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

3762 % / `

3763 % eee 3--------2ccc
3764 % bond between 1 and 2
3765 \def\Bondtria{%
3766 \ifx\aaa\empty%
3767 \ifx\ccc\empty%
3768  \Put@Line(-6,-42)(3,-5){72}%           %double bond 1-2
3769 \else%
3770  \Put@Line(-6,-42)(3,-5){60}%           %double bond 1-2
3771 \fi%
3772 \else%
3773 \ifx\ccc\empty%
3774  \Put@Line(6,-62)(3,-5){60}%            %double bond 1-2
3775 \else%
3776  \Put@Line(10,-32)(3,-5){60}%           %double bond 1-2

\Bondtrib
3780 % bond between 1 and 3
3781 \def\Bondtrib{%
3782 \ifx\aaa\empty%
3783 \ifx\eee\empty%
3784  \Put@Line(6,-42)(-3,-5){72}%           %double bond 1-3
3785 \else%
3786  \Put@Line(6,-42)(-3,-5){60}%           %double bond 1-3
3787 \fi%
3788 \else%
3789 \ifx\fff\empty%
3790  \Put@Line(-6,-62)(-3,-5){60}%          %double bond 1-2
3791 \else%
3792  \Put@Line(6,-42)(-3,-5){60}%           %double bond 1-2
3793 \fi%
3794 \fi%

3795 }%

\skBondtria
3796 %bond between 1 and 2
3797 \def\skBondtria{%
3798 % \begin{sfpicture}(200,200)(0,0)
3799 % \begin{sfpicture}(0,0)(0,0)
3800 \ifx\aaa\empty%
3801  \ifx\ccc\empty%
3802  \Put@Line(0,0)(3,-5){103}%           %bond 1-2
3803  \else%
3804  \Put@Line(0,0)(3,-5){80}%            %bond 1-2
3805  \fi%
3806 \else%
3807  \ifx\ccc\empty%
3808  \Put@Line(103,-171)(-3,5){80}%      %bond 1-2
3809  \else%
3810  \Put@Line(35,-21)(3,-5){60}%          %bond 1-2
3811  \fi%

3812 \fi

3813 %\end{sfpicture}

3814 }%

\skBondtrib
3815 %bond between 1 and 3
3816 \def\skBondtrib{%
3817 % \begin{sfpicture}(0,0)(0,0)
3818 % \begin{sfpicture}(200,200)(0,0)
3819 \ifx\aaa\empty%
3820  \ifx\eee\empty%
3821  \Put@Line(0,0)(-3,-5){103}%         %bond 1-3
3822  \else%
3823  \Put@Line(0,0)(-3,-5){80}%          %bond 1-3
3824  \fi%

3825 \else%
3826  \ifx\eee\empty%
3827  \Put@Line(-103,-171)(3,5){80}%     %bond 1-3
3828  \else%
3829  \Put@Line(-35,-21)(-3,-5){60}%       %bond 1-3
3830  \fi%

3831 \fi

3832 %\end{sfpicture}

3833 }%

\dotskBondtria
3834 %bond between 1 and 2
3835 \def\dotskBondtria{%
3836 \ifx\aaa\empty%
3837  \ifx\ccc\empty%
3838  \dotorline(0,0)(3,-5){103}/(0,0)(103,-171)%
3839  \else%
3840  \dotorline(0,0)(3,-5){80}/(0,0)(80,-133)%
3841  \fi%
3842 \else%
3843  \ifx\ccc\empty%
3844  \dotorline(103,-171)(-3,5){80}/(103,-171)(23,-38)%
3845  \else%
3846  \dotorline(35,-21)(3,-5){60}/(35,-21)(95,-121)%
3847  \fi%

3848 \fi 3849 }%

\dotskBondtrib
3850 %bond between 1 and 3
3851 \def\dotskBondtrib{%
3852 \ifx\aaa\empty%
3853  \ifx\eee\empty%
3854  \dotorline(0,0)(-3,-5){103}/(0,0)(-103,-171)%
3855  \else%
3856  \dotorline(0,0)(-3,-5){80}/(0,0)(-80,-133)%
3857  \fi%
3858 \else%
3859  \ifx\eee\empty%
3860  \dotorline(-103,-171)(3,5){80}/(-103,-171)(-23,-38)%
3861  \else%
3862  \dotorline(-35,-21)(-3,-5){60}/(-35,-21)(-95,-121)%
3863  \fi%

3864 \fi 3865 }%

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.

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

3866 \def\threeheteroi{\@ifnextchar({\@three@heteroi(@}{\@three@heteroi(@)}}
3867 \def\@three@heteroi(#1){\@ifnextchar[{\@three@@heteroi(#1)[@}%
3868 {\@three@@heteroi(#1)[@]}}
3869 \def\@three@@heteroi(#1)[#2]#3#4{\@ifnextchar[%
3870 {\@threeheteroi(#1)[#2]{#3}{#4}[@}%
3871 {\@threeheteroi(#1)[#2]{#3}{#4}[@]}}
3872 \def\@threeheteroi(#1)[#2]#3#4[#5]{%
3873 % %%%%%%%%%%%%%%%%%%%%%%%%%%
3874 % % treatment of atom list %
3875 % %%%%%%%%%%%%%%%%%%%%%%%%%%
3876 \iniatom\iniflag%initialize
3877 \test@vertix@sixv{#3}{a}{c}{e}{@}{@}{@}%
3878 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3879 % % adustment of subs positions %
3880 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3881 \@reset@ylsw%
3882 \ylposition{#4}{0}{0}{2}{0}%subst 1
3883 \if@ylsw \ifx\@@ylii\empty
3884 \def\@@ylii{68}\def\@@yli{406}\fi
3885 \else
3886 \ylposition{#4}{1}{2}{4}{0}%subst 2

3887 \fi

3888 \if@ylsw \ifx\@@ylii\empty
3889 \def\@@ylii{142}\def\@@yli{275}\fi
3890 \else
3891 \ylposition{#4}{2}{4}{6}{0}%subst 3

3892 \fi

3893 \if@ylsw \ifx\@@ylii\empty
3894 \def\@@ylii{0}\def\@@yli{275}\fi

3895 \fi

3896 \begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/%
3897 (800,580)(-468,-340){threeheterovi}%
3898 (468,340)(68,0)%2002/4/30 by S. Fujita
3899 % %%%%%%%%%%%%%%%%%%
3900 % % outer skeleton %
3901 % %%%%%%%%%%%%%%%%%%
3902 {\resetbdsw%
3903 \@bond@@omit{#5}%
3904 \Put@Direct(-68,0){\set@skel@longbond{#1}{a}{skBondtria}}%
3905  % bond between 1 and 2 \@aaa -> \skBondtria etc
3906 \Put@Direct(0,-275){\set@skel@longbond{#1}{b}{skbondshorizi}}%
3907  % bond between 2 and 3 \@bbb -> \skbondb etc
3908 \Put@Direct(-68,0){\set@skel@longbond{#1}{c}{skBondtrib}}%
3909  % bond between 3 and 1 \@ccc -> \skBondtrib etc

3910 }%

3911 % %%%%%%%%%%%%%%%%%%%%%
3912 % % inner double bond %
3913 % %%%%%%%%%%%%%%%%%%%%%

3914 \@tfor\member:=#2\do{%
3915 \if\member r\relax%
3916 \else\if\member a\relax\Put@Direct(-68,0){\Bondtria}%
3917 \else\if\member b\relax\Put@Direct(0,-274){\bondshorizi}%
3918 \else\if\member c\relax\Put@Direct(-68,0){\Bondtrib}%
3919 \else\if\member A\relax% aromatic circle
3920 \Put@oCircle(-70,-108){100}%               %circle
3921 \else
3922 % %%%%%%%%%%%%%%%%%%%%%%%%%
3923 % % inner bond attachment %
3924 % %%%%%%%%%%%%%%%%%%%%%%%%%
3925 \expandafter\twoCH@@R\member//%
3926  \set@fusionadd@threevi
3927 \fi\fi\fi\fi\fi%

3928 }%

3929 % %%%%%%%%%%%%%%%%%%%%%%%%
3930 % % setting hetero atoms %
3931 % %%%%%%%%%%%%%%%%%%%%%%%%
3932 \Put@Direct(-68,-406){\set@hetatom@sixv{#3}{0}{0}{2}{0}%
3933 %\if@aclip\global\@acliptrue\fi
3934 \storeclipinfo
3935 }%subst 1
3936 \developclipinfo
3937 \Put@Direct(0,-275){\set@hetatom@sixv{#3}{2}{4}{6}{0}%
3938 %\if@eclip\global\@ecliptrue\fi
3939 \storeclipinfo
3940 }%subst 3
3941 \developclipinfo
3942 \Put@Direct(-142,-275){\set@hetatom@sixv{#3}{1}{2}{4}{0}%
3943 %\if@cclip\global\@ccliptrue\fi
3944 \storeclipinfo
3945 }%subst 2
3946 \developclipinfo
3947 % %%%%%%%%%%%%%%%%%%%%%%%%
3948 % % setting substituents %
3949 % %%%%%%%%%%%%%%%%%%%%%%%%
3950 \Put@Direct(-68,-406){\setsixringv{#4}{0}{0}{2}{0}}%subst 1
3951 \Put@Direct(0,-275){\setsixringv{#4}{2}{4}{6}{0}}%subst 3
3952 \Put@Direct(-142,-275){\setsixringv{#4}{1}{2}{4}{0}}%subst 2
3953 \end{ShiftPicEnvB}\iniatom\iniflag}% %end of \threeheteroi macro
\threeheterovi
3954 \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
3955 \def\set@fusionadd@threevi{%
3956  \if\@@tmpa 0\relax%
3957  \putratom{-94}{-120}{\scriptsize\@@tmpb}%      % right type

3958  \else\if\@@tmpa 1\relax%
3959  \putratom{-94}{-80}{\scriptsize\@@tmpb}%      % right type
3960  \else\if\@@tmpa 2\relax%
3961  \putratom{-52}{-150}{\scriptsize\@@tmpb}%     % right type
3962  \else\if\@@tmpa 3\relax%
3963  \putratom{-126}{-150}{\scriptsize\@@tmpb}%    % right type
3964  \else\if\@@tmpa 4\relax%
3965  \putratom{-30}{0}{\scriptsize\@@tmpb}%      % right type
3966  \else\if\@@tmpa 5\relax%
3967  \putratom{32}{-130}{\scriptsize\@@tmpb}%      % right type
3968  \else\if\@@tmpa 6\relax%
3969  \putratom{-230}{-130}{\scriptsize\@@tmpb}%    % right type
3970  \else
3971 % %%%%%%%%%%%%%%%%%%%%%
3972 % % inner bond fusion %
3973 % %%%%%%%%%%%%%%%%%%%%%
3974  \set@fusion@threevi
3975  \fi\fi\fi\fi\fi\fi\fi%

3976 }%

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
3977 \def\set@fusion@threevi{%
3978 % %%%%%%%%%%%%%%%%%%%%%
3979 % % inner bond fusion %
3980 % %%%%%%%%%%%%%%%%%%%%%
3981 \if\@@tmpa b\relax%
3982  \putlratom{29}{-171}{\@@tmpb}%    % bond fused
3983  \FuseWarning{200}{0}%
3984  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}%
3985 \else\if\@@tmpa B\relax%
3986  \putlratom{-171}{-171}{\@@tmpb}%      % bond fused
3987  \FuseWarning{-200}{0}%
3988  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}%
3989 \else\if\@@tmpa a\relax%
3990  \putlratom{-68}{0}{\@@tmpb}%    % bond fused
3991  \FuseWarning{-103}{171}%
3992  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}%
3993 \else\if\@@tmpa A\relax%
3994  \putlratom{29}{-171}{\@@tmpb}%      % bond fused
3995  \FuseWarning{103}{-171}%
3996  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}%
3997 \else\if\@@tmpa c\relax%
3998  \putlratom{-171}{-171}{\@@tmpb}%      % bond fused
3999  \FuseWarning{103}{171}%
4000  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c}%
4001 \else\if\@@tmpa C\relax%
4002  \putlratom{-68}{0}{\@@tmpb}%    % bond fused
4003  \FuseWarning{-103}{-171}%
4004  {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C}%
4005 \fi\fi\fi\fi\fi\fi%

4006 }% end of the macro \set@fusion@threevi

4007 ⟨/hetarom⟩