% \iffalse meta-comment %% File: hetaromh.dtx % % Copyright 1993,1996,1998,2000 by Shinsaku Fujita % % This file is part of XyMTeX system. % ------------------------------------- % % This file is a successor to: % % hetaromh.sty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %\typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 1.00} %\typeout{ -- Released December 1, 1993 by Shinsaku Fujita} % Copyright (C) 1993 by Shinsaku Fujita, all rights reserved. % % This file is a part of the macro package ``XyMTeX'' which has been % designed for typesetting chemical structural formulas. % % This file is to be contained in the ``xymtex'' directory which is % an input directory for TeX. It is a LaTeX optional style file and % should be used only within LaTeX, because several macros of the file % are based on LaTeX commands. % % For the review of XyMTeX, see % (1) Shinsaku Fujita, ``Typesetting structural formulas with the text % formatter TeX/LaTeX'', Computers and Chemistry, in press. % The following book deals with an application of TeX/LaTeX to % preparation of manuscripts of chemical fields: % (2) Shinsaku Fujita, ``LaTeX for Chemists and Biochemists'' % Tokyo Kagaku Dozin, Tokyo (1993) [in Japanese]. % % Copying of this file is authorized only if either % (1) you make absolutely no changes to your copy, including name and % directory name; or % (2) if you do make changes, % (a) you name it something other than the names included in the % ``xymtex'' directory and % (b) you are requested to leave this notice intact. % This restriction ensures that all standard styles are identical. % % Please report any bugs, comments, suggestions, etc. to: % Shinsaku Fujita, % Ashigara Research Laboratories, Fuji Photo Film Co., Ltd., % Minami-Ashigara, Kanagawa-ken, 250-01, Japan. % % New address: % Shinsaku Fujita, % Department of Chemistry and Materials Technology, % Kyoto Institute of Technology, \\ % Matsugasaki, Sakyoku, Kyoto, 606 Japan % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \def\j@urnalname{hetaromh} % \def\versi@ndate{December 01, 1993} % \def\versi@nno{ver1.00} % \def\copyrighth@lder{SF} % Shinsaku Fujita % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \def\j@urnalname{hetaromh} % \def\versi@ndate{August 16, 1996} % \def\versi@nno{ver1.01} % \def\copyrighth@lder{SF} % Shinsaku Fujita % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \def\j@urnalname{hetaromh} % \def\versi@ndate{October 31, 1998} % \def\versi@nno{ver1.02} % \def\copyrighth@lder{SF} % Shinsaku Fujita % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \def\j@urnalname{hetaromh} % \def\versi@ndate{December 25, 1998} % \def\versi@nno{ver2.00} % \def\copyrighth@lder{SF} % Shinsaku Fujita % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % \fi % % \CheckSum{5947} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z %% Digits \0\1\2\3\4\5\6\7\8\9 %% Exclamation \! Double quote \" Hash (number) \# %% Dollar \$ Percent \% Ampersand \& %% Acute accent \' Left paren \( Right paren \) %% Asterisk \* Plus \+ Comma \, %% Minus \- Point \. Solidus \/ %% Colon \: Semicolon \; Less than \< %% Equals \= Greater than \> Question mark \? %% Commercial at \@ Left bracket \[ Backslash \\ %% Right bracket \] Circumflex \^ Underscore \_ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} % % \setcounter{StandardModuleDepth}{1} % % \StopEventually{} % \MakeShortVerb{\|} % % \iffalse % \changes{v1.01}{1996/06/26}{first edition for LaTeX2e} % \changes{v1.02}{1998/10/31}{revised edition for LaTeX2e} % \changes{v2.00}{1998/12/25}{enhanced edition for LaTeX2e} % \changes{v2.00a}{2000/11/11}{bug fix} % \fi % % \iffalse %<*driver> \NeedsTeXFormat{pLaTeX2e} % \fi \ProvidesFile{hetaromh.dtx}[1998/12/25 v2.00 XyMTeX{} package file] % \iffalse \documentclass{ltxdoc} \GetFileInfo{hetaromh.dtx} % % %%XyMTeX Logo: Definition 2%%% \def\UPSILON{\char'7} \def\XyM{X\kern-.30em\smash{% \raise.50ex\hbox{\UPSILON}}\kern-.30em{M}} \def\XyMTeX{\XyM\kern-.1em\TeX} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \title{Heterocycles of horizontal type by {\sffamily hetaromh.sty} (\fileversion) of \XyMTeX{}} \author{Shinsaku Fujita \\ Department of Chemistry and Materials Technology, \\ Kyoto Institute of Technology, \\ Matsugasaki, Sakyoku, Kyoto, 606-8585 Japan % % (old address) % % Ashigara Research Laboratories, % % Fuji Photo Film Co., Ltd., \\ % % Minami-Ashigara, Kanagawa, 250-01 Japan } \date{\filedate} % \begin{document} \maketitle \DocInput{hetaromh.dtx} \end{document} % % \fi % % \section{Introduction}\label{hetaromh:intro} % % \subsection{Options for {\sffamily docstrip}} % % \DeleteShortVerb{\|} % \begin{center} % \begin{tabular}{|l|l|} % \hline % \emph{option} & \emph{function}\\ \hline % hetaromh & hetaromh.sty \\ % driver & driver for this dtx file \\ % \hline % \end{tabular} % \end{center} % \MakeShortVerb{\|} % % \subsection{Version Information} % % \begin{macrocode} %<*hetaromh> \typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 2.00} \typeout{ -- Released December 25, 1998 by Shinsaku Fujita} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\j@urnalname{hetaromh} \def\versi@ndate{November 11, 2000} \def\versi@nno{ver2.00a} \def\copyrighth@lder{SF} % Shinsaku Fujita % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \typeout{XyMTeX Macro File `\j@urnalname' (\versi@nno) <\versi@ndate>% \space[\copyrighth@lder]} % \end{macrocode} % % \section{List of commands for hetaromh.sty} % % \begin{verbatim} % % ********************************** % * hetaromh.sty: list of commands * % ********************************** % % % % \hbonda % \hbondf % \hbondb % \hbondc % \hbondd % \hbonde % \hbondvert % \hbondverti % % \hskbonda % \hskbondf % \hskbondc % \hskbondd % \hskbondb % \hskbonde % \hskbondvert % \hskbondverti % % \dothskbonda % \dothskbondf % \dothskbondc % \dothskbondd % \dothskbondb % \dothskbonde % \dothskbondvert % \dothskbondverti % \end{verbatim} % % \begin{verbatim} % % % % Basic Macros % % \sixheteroh \@sixheteroh % \sixheterohi \@sixheterohi % % Application Macros % % \pyridineh \@pyridineh % \pyridinehi \@pyridinehi % \pyrazineh \@pyrazineh % \pyrimidineh \@pyrimidineh % \pyrimidinehi \@pyrimidinehi % \pyridazineh \@pyridazineh % \pyridazinehi \@pyridazinehi % \triazineh \@triazineh % \triazinehi \@triazinehi % \end{verbatim} % % \begin{verbatim} % % % % Basic Macros % % \fiveheteroh \@fiveheteroh % \fiveheterohi \@fiveheterohi % % Application Macros % % \pyrroleh \@pyrroleh % \pyrazoleh \@pyrazoleh % \imidazoleh \@imidazoleh % \isoxazoleh \@isoxazoleh % \oxazoleh \@oxazoleh % % \furanh \@furanh % \thiopheneh \@thiopheneh % % \pyrrolehi \@pyrrolehi % \pyrazolehi \@pyrazolehi % \imidazolehi \@imidazolehi % \isoxazolehi \@isoxazolehi % \oxazolehi \@oxazolehi % % \furanhi \@furanhi % \thiophenehi \@thiophenehi % % \end{verbatim} % % \begin{verbatim} % % % % Basic Macros % % \decaheteroh \@decaheteroh % \decaheterohi \@decaheterohi % % Application Macros % % \quinolineh \@quinolineh % \quinolinehi \@quinolinehi % \isoquinolineh \@isoquinolineh % \isoquinolinehi \@isoquinolinehi % \quinoxalineh \@quinoxalineh % \quinazolineh \@quinazolineh % \quinazolinehi \@quinazolinehi % \cinnolineh \@cinnolineh % \cinnolinehi \@cinnolinehi % \pteridineh \@pteridineh % \pteridinehi \@pteridinehi % \end{verbatim} % % \begin{verbatim} % % % % Basic Macros % % \nonaheteroh \@nonaheteroh % \nonaheterohi \@nonaheterohi % % Application Macros % % \purineh \@purineh % \purinehi \@purinehi % \indoleh \@indoleh % \indolehi \@indolehi % \indolizineh \@indolizineh % \indolizinehi \@indolizinehi % \isoindoleh \@isoindoleh % \isoindolehi \@isoindolehi % \benzofuraneh \@benzofuraneh % \benzofuranehi \@benzofuranehi % \isobenzofuraneh \@isobenzofuraneh % \isobenzofuranehi \@isobenzofuranehi % \benzoxazoleh \@benzoxazoleh % \benzoxazolehi \@benzoxazolehi % \end{verbatim} % % \begin{verbatim} % % % % \sixunith \@sixunith % \fiveunith \@fiveunith % \fiveunithi \@fiveunithi % \end{verbatim} % % \begin{verbatim} % % % % \threeheteroh \@threeheteroh % \threeheterohi \@threeheterohi % \end{verbatim} % % \section{Input of basic macros} % % To assure the compatibility to \LaTeX{}2.09 (the native mode), % the commands added by \LaTeXe{} have not been used in the resulting sty % files ({\sf hetaromh.sty} for the present case). Hence, the combination % of |\input| and |\@ifundefined| is used to crossload sty % files ({\sf chemstr.sty} for the present case) in place of the % |\RequirePackage| command of \LaTeXe{}. % % \begin{macrocode} % ************************* % * input of basic macros * % ************************* \@ifundefined{setsixringv}{\input chemstr.sty\relax}{}% \@ifundefined{test@vertix@decavi}{\input hetarom.sty\relax}{}% \unitlength=0.1pt% % \end{macrocode} % % \section{Various switches} % % These control sequences have been commented out, since they are % defined elsewhere. % % \begin{macrocode} % % **************************** % % * various flags (switches) * % % **************************** % \newif\if@gclip \@gclipfalse% % \newif\if@hclip \@hclipfalse% % \newif\if@iclip \@iclipfalse% % \newif\if@jclip \@jclipfalse% % \def\iniflag{% % \@aclipfalse \@bclipfalse\@cclipfalse\@clipfalse\@eclipfalse% % \@fclipfalse\@gclipfalse\@hclipfalse\@iclipfalse\@jclipfalse% % \@clipfusefalse}% % \def\iniatom{% % \def\aaa{}\def\bbb{}\def\ccc{}\def\ddd{}\def\eee{}\def\fff{}% % \def\ggg{}\def\hhh{}\def\iii{}\def\jjj{}% % \def\@aaa{}\def\@bbb{}\def\@ccc{}\def\@ddd{}\def\@eee{}\def\@fff{}% % }% % \def\resetbdsw{\gdef\@aaa{a}\gdef\@bbb{b}\gdef\@ccc{c}% % \gdef\@ddd{d}\gdef\@eee{e}\gdef\@fff{f}}% % \iniatom% % \end{macrocode} % % \section{Macros for setting bonds} % \subsection{Inner double bonds} % % The macros |\sixheteroh| and |\fiveheteroh| use internal macros for setting % inner double bonds in accordance with the presence or the absence of % hetero atoms. During the processes of such setting, % the inner macros |\hbonda| to |\hbondf| are used to set a bond % on each edge of a six- or five-membered ring; and % the inner macros |\hbondvert| and |\hbondverti| draw vertical bonds % of a five-membered ring. % % Note that % comments (conerning locant numbers) on the end of each row have % lost the exact meaning, % since such a command moiety is used in many macros after copying. % % \begin{verbatim} % ****************************** % * setting inner double bonds * % ****************************** % % b % (bbb) 2 3 (ccc) % a ----- c % * * % the original point ===> 1 * (aaa) * 4 (ddd) % (0,0) * * c % f ----- % (fff) 6 5 (eee) % e % \end{verbatim} % % \begin{macro}{\hbonda} % The macro |\hbonda| refers to the control sequences representing % atoms on both of the terminal vertices (|\aaa| and |\bbb|) and % examine whether these are empty or not. Thereby, % it decides the vertices to be truncated. % % \begin{macrocode} % bond between 1 and 2 \def\hbonda{% \ifx\aaa\empty% \ifx\bbb\empty% \put(42,6){\line(3,5){78}}% %double bond 1-2 \else% \put(42,6){\line(3,5){62}}% %double bond 1-2 \fi% \else% \ifx\bbb\empty% \put(57,36){\line(3,5){62}}% %double bond 1-2 \else% \put(57,36){\line(3,5){62}}% %double bond 1-2 \fi\fi}% % \end{macrocode} % \end{macro} % % \begin{macro}{\hbondf} % The macro |\hbondf| refers to the control sequences representing % atoms on both of the terminal vertices (|\aaa| and |\fff|) and % examine whether these are empty or not. Thereby, % it decides the vertices to be truncated. % % \begin{macrocode} % bond between 1 and 6 \def\hbondf{% \ifx\aaa\empty% \ifx\fff\empty% \put(42,-6){\line(3,-5){78}}% %double bond 1-6 \else% \put(42,-6){\line(3,-5){62}}% %double bond 1-6 \fi% \else% \ifx\fff\empty% \put(57,-36){\line(3,-5){62}}% %double bond 1-6 \else% \put(57,-36){\line(3,-5){62}}% %double bond 1-6 \fi\fi}% % \end{macrocode} % \end{macro} % % \begin{macro}{\hbondb} % The macro |\hbondf| refers to the control sequences representing % atoms on both of the terminal vertices (|\bbb| and |\ccc|) and % examine whether these are empty or not. Thereby, % it decides the vertices to be truncated. % % \begin{macrocode} % bond between 3 and 2 \def\hbondb{% \ifx\bbb\empty% \ifx\ccc\empty% \put(129,138){\line(1,0){148}}% %double bond 2-3 \else% \put(129,138){\line(1,0){134}}% %double bond 3-2 \fi% \else% \ifx\ccc\empty% \put(143,138){\line(1,0){134}}% %double bond 3-2 \else% \put(143,138){\line(1,0){110}}% %double bond 3-2 \fi\fi}% % \end{macrocode} % \end{macro} % % \begin{macro}{\hbondc} % The macro |\hbondc| refers to the control sequences representing % atoms on both of the terminal vertices (|\ddd| and |\ccc|) and % examine whether these are empty or not. Thereby, % it decides the vertices to be truncated. % % \begin{macrocode} % bond between 4 and 3 \def\hbondc{% \ifx\ddd\empty% \ifx\ccc\empty% \put(364,6){\line(-3,5){78}}% %double bond 4-3 \else% \put(364,6){\line(-3,5){62}}% %double bond 4-3 \fi% \else% \ifx\ccc\empty% \put(349,36){\line(-3,5){62}}% %double bond 4-3 \else% \put(349,36){\line(-3,5){62}}% %double bond 4-3 \fi\fi}% % \end{macrocode} % \end{macro} % % \begin{macro}{\hbondd} % The macro |\hbondf| refers to the control sequences representing % atoms on both of the terminal vertices (|\ddd| and |\eee|) and % examine whether these are empty or not. Thereby, % it decides the vertices to be truncated. % % \begin{macrocode} % bond between 4 and 5 \def\hbondd{% \ifx\ddd\empty% \ifx\eee\empty% \put(364,-6){\line(-3,-5){78}}% %double bond 4-5 \else% \put(364,-6){\line(-3,-5){62}}% %double bond 4-5 \fi% \else% \ifx\eee\empty% \put(349,-36){\line(-3,-5){62}}% %double bond 4-5 \else% \put(349,-36){\line(-3,-5){62}}% %double bond 4-5 \fi\fi}% % \end{macrocode} % \end{macro} % % \begin{macro}{\hbonde} % The macro |\hbonde| refers to the control sequences representing % atoms on both of the terminal vertices (|\fff| and |\eee|) and % examine whether these are empty or not. Thereby, % it decides the vertices to be truncated. % % \begin{macrocode} % bond between 5 and 6 \def\hbonde{% \ifx\fff\empty% \ifx\eee\empty% \put(129,-138){\line(1,0){148}}% %double bond 6-5 \else% \put(129,-138){\line(1,0){134}}% %double bond 5-6 \fi% \else% \ifx\eee\empty% \put(143,-138){\line(1,0){134}}% %double bond 5-6 \else% \put(143,-138){\line(1,0){110}}% %double bond 5-6 \fi\fi}% % \end{macrocode} % \end{macro} % % \begin{macro}{\hbondvert} % The macro |\hbondvert| refers to the control sequences representing % atoms on both of the terminal vertices (|\fff| and |\bbb|) and % examine whether these are empty or not. Thereby, % it decides the vertices to be truncated. % % \begin{macrocode} % vertical inner bond for five-membered rings \def\hbondvert{% \ifx\fff\empty% \ifx\bbb\empty% \put(136,-138){\line(0,1){277}}% %double bond 4-3 \else% \put(136,-138){\line(0,1){258}}% %double bond 4-3 \fi% \else% \ifx\bbb\empty% \put(136,-120){\line(0,1){258}}% %double bond 4-3 \else \put(136,-120){\line(0,1){239}}% %double bond 4-3 \fi\fi}% % \end{macrocode} % \end{macro} % % \begin{macro}{\hbondverti} % The macro |\hbondverti| refers to the control sequences representing % atoms on both of the terminal vertices (|\ccc| and |\eee|) and % examine whether these are empty or not. Thereby, % it decides the vertices to be truncated. % % \begin{macrocode} % horizontal inner bond for five-membered rings (inverse type) \def\hbondverti{% \ifx\eee\empty% \ifx\ccc\empty% \put(270,-138){\line(0,0){277}}% %double bond 4-3 \else% \put(270,-138){\line(0,1){258}}% %double bond 4-3 \fi% \else% \ifx\ccc\empty% \put(270,-120){\line(0,1){258}}% %double bond 4-3 \else% \put(270,-120){\line(0,1){239}}% %double bond 4-3 \fi\fi}% % \end{macrocode} % \end{macro} % % \subsection{Skeletal bonds} % % The macros |\sixheteroh| and |\fiveheteroh| use inner macros for setting % skeletal bonds in accordance with the presence or the absence of % hetero atoms. During the processes of such setting, % the inner macros |\skbonda| to |\skbondf| are used to set a bond % on each edge of a six- or five-membered ring; and % the inner macros |\hskibondverti| to |\hskibondverti| draw vertical bonds % of a five-membered ring. % % \begin{verbatim} % ******************************************** % * setting skeletal bonds (horizontal type) * % ******************************************** % The following numbering is adopted in this macro. % % b % (bbb) 2 3 (ccc) % a ----- c % * * % the original point ===> 1 * (aaa) * 4 (ddd) % (0,0) * * d % f ----- % (fff) 6 5 (eee) % e % \end{verbatim} % % \begin{macro}{\hskbonda} % The macro |\hskbonda| refers to the control sequences representing % atoms on both of the terminal vertices (|\aaa| and |\bbb|) and % examine whether these are empty or not. Thereby, % it decides the vertices to be truncated. % % \begin{macrocode} %bond between 1 and 2 \def\hskbonda{% \ifx\aaa\empty% \ifx\bbb\empty% \put(0,0){\line(3,5){103}}% %bond 1-2 \else% \put(0,0){\line(3,5){79}}% %bond 1-2 \fi% \else% \ifx\bbb\empty% \put(24,40){\line(3,5){79}}% %bond 1-2 \else% \put(24,40){\line(3,5){62}}% %bond 1-2 \fi\fi}% % \end{macrocode} % \end{macro} % % \begin{macro}{\hskbondf} % The macro |\hskbondf| refers to the control sequences representing % atoms on both of the terminal vertices (|\aaa| and |\fff|) and % examine whether these are empty or not. Thereby, % it decides the vertices to be truncated. % % \begin{macrocode} %bond between 1 and 6 \def\hskbondf{% \ifx\aaa\empty% \ifx\fff\empty \put(0,0){\line(3,-5){103}}% %bond 1-6 \else% \put(0,0){\line(3,-5){79}}% %bond 1-6 \fi% \else% \ifx\fff\empty% \put(24,-40){\line(3,-5){79}}% %bond 1-6 \else% \put(24,-40){\line(3,-5){62}}% %bond 1-6 \fi\fi}% % \end{macrocode} % \end{macro} % % \begin{macro}{\hskbondc} % The macro |\hskbondc| refers to the control sequences representing % atoms on both of the terminal vertices (|\ddd| and |\ccc|) and % examine whether these are empty or not. Thereby, % it decides the vertices to be truncated. % % \begin{macrocode} %bond between 4 and 3 \def\hskbondc{% \ifx\ddd\empty% \ifx\ccc\empty% \put(406,0){\line(-3,5){103}}% %bond 4-3 \else% \put(406,0){\line(-3,5){79}}% %bond 4-3 \fi% \else% \ifx\ccc\empty% \put(382,40){\line(-3,5){79}}% %bond 4-3 \else% \put(382,40){\line(-3,5){62}}% %bond 4-3 \fi\fi}% % \end{macrocode} % \end{macro} % % \begin{macro}{\hskbondd} % The macro |\hskbondd| refers to the control sequences representing % atoms on both of the terminal vertices (|\ddd| and |\eee|) and % examine whether these are empty or not. Thereby, % it decides the vertices to be truncated. % % \begin{macrocode} %bond between 4 and 5 \def\hskbondd{% \ifx\ddd\empty% \ifx\eee\empty% \put(406,0){\line(-3,-5){103}}% %bond 4-5 \else% \put(406,0){\line(-3,-5){79}}% %bond 4-5 \fi% \else% \ifx\eee\empty% \put(382,-40){\line(-3,-5){79}}% %bond 4-5 \else% \put(382,-40){\line(-3,-5){62}}% %bond 4-5 \fi\fi}% % \end{macrocode} % \end{macro} % % \begin{macro}{\hskbondb} % The macro |\hskbondb| refers to the control sequences representing % atoms on both of the terminal vertices (|\bbb| and |\ccc|) and % examine whether these are empty or not. Thereby, % it decides the vertices to be truncated. % % \begin{macrocode} %bond between 3 and 2 \def\hskbondb{% \ifx\bbb\empty% \ifx\ccc\empty% \put(103,171){\line(1,0){200}}% %bond 2-3 \else% \put(103,171){\line(1,0){160}}% %bond 3-2 \fi% \else% \ifx\ccc\empty% \put(143,171){\line(1,0){160}}% %bond 3-2 \else% \put(143,171){\line(1,0){120}}% %bond 3-2 \fi\fi}% % \end{macrocode} % \end{macro} % % \begin{macro}{\hskbonde} % The macro |\hskbonde| refers to the control sequences representing % atoms on both of the terminal vertices (|\eee| and |\fff|) and % examine whether these are empty or not. Thereby, % it decides the vertices to be truncated. % % \begin{macrocode} %bond between 5 and 6 \def\hskbonde{% \ifx\eee\empty% \ifx\fff\empty% \put(103,-171){\line(1,0){200}}% %bond 6-5 \else% \put(143,-171){\line(1,0){160}}% %bond 5-6 \fi% \else% \ifx\fff\empty% \put(103,-171){\line(1,0){160}}% %bond 5-6 \else% \put(143,-171){\line(1,0){120}}% %bond 5-6 \fi\fi}% % \end{macrocode} % \end{macro} % % \begin{macro}{\hskbondvert} % The macro |\hskbondvert| refers to the control sequences representing % atoms on both of the terminal vertices (|\bbb| and |\fff|) and % examine whether these are empty or not. Thereby, % it decides the vertices to be truncated. % % \begin{macrocode} %vertical bond for five-membered rings \def\hskbondvert{% \ifx\fff\empty% \ifx\bbb\empty% \put(103,-171){\line(0,1){342}}% %bond 4-3 \else% \put(103,-171){\line(0,1){300}}% %bond 4-3 \fi% \else% \ifx\bbb\empty% \put(103,171){\line(0,-1){300}}% %bond 4-3 \else% \put(103,-129){\line(0,1){258}}% %bond 4-3 \fi\fi}% % \end{macrocode} % \end{macro} % % \begin{macro}{\hskbondverti} % The macro |\hskbondverti| refers to the control sequences representing % atoms on both of the terminal vertices (|\eee| and |\ccc|) and % examine whether these are empty or not. Thereby, % it decides the vertices to be truncated. % % \begin{macrocode} %vertical bond for five-membered rings (inverse type) \def\hskbondverti{% \ifx\eee\empty% \ifx\ccc\empty% \put(303,-171){\line(0,1){342}}% %bond 4-3 \else% \put(303,-171){\line(0,1){300}}% %bond 4-3 \fi% \else% \ifx\ccc\empty% \put(303,171){\line(0,-1){300}}% %bond 4-3 \else% \put(303,-129){\line(0,1){258}}% %bond 4-3 \fi\fi}% % \end{macrocode} % \end{macro} % % \subsection{Dotted Skeletal Bonds} % % The macros |\sixfuseh| etc. use inner macros for setting % skeletal bonds in accordance with the presence or the absence of % hetero atoms. During the processes of such setting, % the inner macros |\dothskbonda| to |\dothskbondf| are used % to set a dotted bond on each edge of a six- or five-membered ring. % % \begin{macro}{\dothskbonda} % The macro |\dothskbonda| is the dotted counterpart of |\hskbonda|, % which refers to the control sequences representing % atoms on both of the terminal vertices (|\aaa| and |\bbb|) and % examine whether these are empty or not. Thereby, % it decides the vertices to be truncated. % % \begin{macrocode} %bond between 1 and 2 \def\dothskbonda{% \ifx\aaa\empty% \ifx\bbb\empty% \@ifundefined{dottedline}{% \put(0,0){\line(3,5){103}}% %bond 1-2 }{{\thicklines% \dottedline{20}(0,0)(103,171)}}% \else% \@ifundefined{dottedline}{% \put(0,0){\line(3,5){79}}% %bond 1-2 }{{\thicklines% \dottedline{20}(0,0)(79,132)}}% \fi% \else% \ifx\bbb\empty% \@ifundefined{dottedline}{% \put(24,40){\line(3,5){79}}% %bond 1-2 }{{\thicklines% \dottedline{20}(24,40)(103,171)}}% \else% \@ifundefined{dottedline}{% \put(24,40){\line(3,5){62}}% %bond 1-2 }{{\thicklines% \dottedline{20}(24,40)(86,143)}}% \fi\fi}% % \end{macrocode} % \end{macro} % % \begin{macro}{\dothskbondb} % The macro |\dothskbondb| is the dotted counterpart of |\hskbondb|, % which refers to the control sequences representing % atoms on both of the terminal vertices (|\bbb| and |\ccc|) and % examine whether these are empty or not. Thereby, % it decides the vertices to be truncated. % % \begin{macrocode} %bond between 3 and 2 \def\dothskbondb{% \ifx\bbb\empty% \ifx\ccc\empty% \@ifundefined{dottedline}{% \put(103,171){\line(1,0){200}}% %bond 2-3 }{{\thicklines% \dottedline{20}(103,171)(303,171)}}% \else% \@ifundefined{dottedline}{% \put(103,171){\line(1,0){160}}% %bond 3-2 }{{\thicklines% \dottedline{20}(103,171)(263,171)}}% \fi% \else% \ifx\ccc\empty% \@ifundefined{dottedline}{% \put(143,171){\line(1,0){160}}% %bond 3-2 }{{\thicklines% \dottedline{20}(143,171)(303,171)}}% \else% \@ifundefined{dottedline}{% \put(143,171){\line(1,0){120}}% %bond 3-2 }{{\thicklines% \dottedline{20}(143,171)(263,171)}}% \fi\fi}% % \end{macrocode} % \end{macro} % % \begin{macro}{\dothskbondc} % The macro |\dothskbondc| is the dotted counterpart of |\hskbondc|, % which refers to the control sequences representing % atoms on both of the terminal vertices (|\ddd| and |\ccc|) and % examine whether these are empty or not. Thereby, % it decides the vertices to be truncated. % % \begin{macrocode} %bond between 4 and 3 \def\dothskbondc{% \ifx\ddd\empty% \ifx\ccc\empty% \@ifundefined{dottedline}{% \put(406,0){\line(-3,5){103}}% %bond 4-3 }{{\thicklines% \dottedline{20}(406,0)(303,171)}}% \else% \@ifundefined{dottedline}{% \put(406,0){\line(-3,5){79}}% %bond 4-3 }{{\thicklines% \dottedline{20}(406,0)(327,132)}}% \fi% \else% \ifx\ccc\empty% \@ifundefined{dottedline}{% \put(382,40){\line(-3,5){79}}% %bond 4-3 }{{\thicklines% \dottedline{20}(382,40)(303,171)}}% \else% \@ifundefined{dottedline}{% \put(382,40){\line(-3,5){62}}% %bond 4-3 }{{\thicklines% \dottedline{20}(382,40)(320,143)}}% \fi\fi}% % \end{macrocode} % \end{macro} % % \begin{macro}{\dothskbondd} % The macro |\dothskbondd| is the dotted counterpart of |\hskbondd|, % which refers to the control sequences representing % atoms on both of the terminal vertices (|\ddd| and |\eee|) and % examine whether these are empty or not. Thereby, % it decides the vertices to be truncated. % % \begin{macrocode} %bond between 4 and 5 \def\dothskbondd{% \ifx\ddd\empty% \ifx\eee\empty% \@ifundefined{dottedline}{% \put(406,0){\line(-3,-5){103}}% %bond 4-5 }{{\thicklines% \dottedline{20}(406,0)(303,-171)}}% \else% \@ifundefined{dottedline}{% \put(406,0){\line(-3,-5){79}}% %bond 4-5 }{{\thicklines% \dottedline{20}(406,0)(327,-132)}}% \fi% \else% \ifx\eee\empty% \@ifundefined{dottedline}{% \put(382,-40){\line(-3,-5){79}}% %bond 4-5 }{{\thicklines% \dottedline{20}(382,-40)(303,-171)}}% \else% \@ifundefined{dottedline}{% \put(382,-40){\line(-3,-5){62}}% %bond 4-5 }{{\thicklines% \dottedline{20}(382,-40)(320,-143)}}% \fi\fi}% % \end{macrocode} % \end{macro} % % \begin{macro}{\dothskbonde} % The macro |\dothskbonde| is the dotted counterpart of |\hskbonde|, % which refers to the control sequences representing % atoms on both of the terminal vertices (|\eee| and |\fff|) and % examine whether these are empty or not. Thereby, % it decides the vertices to be truncated. % % \begin{macrocode} %bond between 5 and 6 \def\dothskbonde{% \ifx\eee\empty% \ifx\fff\empty% \@ifundefined{dottedline}{% \put(103,-171){\line(1,0){200}}% %bond 6-5 }{{\thicklines% \dottedline{20}(103,-171)(303,-171)}}% \else% \@ifundefined{dottedline}{% \put(143,-171){\line(1,0){160}}% %bond 5-6 }{{\thicklines% \dottedline{20}(143,-171)(303,-171)}}% \fi% \else% \ifx\fff\empty% \@ifundefined{dottedline}{% \put(103,-171){\line(1,0){160}}% %bond 5-6 }{{\thicklines% \dottedline{20}(103,-171)(263,-171)}}% \else% \@ifundefined{dottedline}{% \put(143,-171){\line(1,0){120}}% %bond 5-6 }{{\thicklines% \dottedline{20}(143,-171)(263,-171)}}% \fi\fi}% % \end{macrocode} % \end{macro} % % \begin{macro}{\dothskbondf} % The macro |\dothskbondf| is the dotted counterpart of |\hskbondf|, % which refers to the control sequences representing % atoms on both of the terminal vertices (|\aaa| and |\fff|) and % examine whether these are empty or not. Thereby, % it decides the vertices to be truncated. % % \begin{macrocode} %bond between 1 and 6 \def\dothskbondf{% \ifx\aaa\empty% \ifx\fff\empty \@ifundefined{dottedline}{% \put(0,0){\line(3,-5){103}}% %bond 1-6 }{{\thicklines% \dottedline{20}(0,0)(103,-171)}}% \else% \@ifundefined{dottedline}{% \put(0,0){\line(3,-5){79}}% %bond 1-6 }{{\thicklines% \dottedline{20}(0,0)(79,-131)}}% \fi% \else% \ifx\fff\empty% \@ifundefined{dottedline}{% \put(24,-40){\line(3,-5){79}}% %bond 1-6 }{{\thicklines% \dottedline{20}(24,-40)(103,-171)}}% \else% \@ifundefined{dottedline}{% \put(24,-40){\line(3,-5){62}}% %bond 1-6 }{{\thicklines% \dottedline{20}(24,-40)(86,-143)}}% \fi\fi}% % \end{macrocode} % \end{macro} % % \begin{macro}{\dothskbondvert} % The macro |\dothskbondvert| refers to the control sequences representing % atoms on both of the terminal vertices (|\bbb| and |\fff|) and % examine whether these are empty or not. Thereby, % it decides the vertices to be truncated. % % \begin{macrocode} %vertical bond for five-membered rings \def\dothskbondvert{% \ifx\fff\empty% \ifx\bbb\empty% \@ifundefined{dottedline}{% \put(103,-171){\line(0,1){342}}% %bond 4-3 }{{\thicklines% \dottedline{20}(103,-171)(103,171)}}% \else% \@ifundefined{dottedline}{% \put(103,-171){\line(0,1){300}}% %bond 4-3 }{{\thicklines% \dottedline{20}(103,-171)(103,129)}}% \fi% \else% \ifx\bbb\empty% \@ifundefined{dottedline}{% \put(103,171){\line(0,-1){300}}% %bond 4-3 }{{\thicklines% \dottedline{20}(103,171)(103,-129)}}% \else% \@ifundefined{dottedline}{% \put(103,-129){\line(0,1){258}}% %bond 4-3 }{{\thicklines% \dottedline{20}(103,-129)(103,129)}}% \fi\fi}% % \end{macrocode} % \end{macro} % % \begin{macro}{\dothskbondverti} % The macro |\dothskbondverti| refers to the control sequences representing % atoms on both of the terminal vertices (|\eee| and |\ccc|) and % examine whether these are empty or not. Thereby, % it decides the vertices to be truncated. % % \begin{macrocode} %vertical bond for five-membered rings (inverse type) \def\dothskbondverti{% \ifx\eee\empty% \ifx\ccc\empty% \@ifundefined{dottedline}{% \put(303,-171){\line(0,1){342}}% %bond 4-3 }{{\thicklines% \dottedline{20}(303,-171)(303,171)}}% \else% \@ifundefined{dottedline}{% \put(303,-171){\line(0,1){300}}% %bond 4-3 }{{\thicklines% \dottedline{20}(303,-171)(303,129)}}% \fi% \else% \ifx\ccc\empty% \@ifundefined{dottedline}{% \put(303,171){\line(0,-1){300}}% %bond 4-3 }{{\thicklines% \dottedline{20}(303,171)(303,-129)}}% \else% \@ifundefined{dottedline}{% \put(303,-129){\line(0,1){258}}% %bond 4-3 }{{\thicklines% \dottedline{20}(303,-129)(303,129)}}% \fi\fi}% % \end{macrocode} % \end{macro} % % The macro |\set@skel@bondh| is used in |\sixfuseh| etc. % for setting skeletal bonds (outer bonds), when |\@aaa| etc. % (produced by |\csname|...|\endcsname|) are equal to `a' % etc. (given as \#2). Thinline, thickline and dotted-line % skeletal bonds are available. % % \begin{macro}{\set@skel@bondh} % \begin{macrocode} \def\set@skel@bondh#1#2#3{% \expandafter\if\csname @#2#2#2\endcsname #2\relax%OK % \if\@aaa #2\relax%OK \@skbondlistfalse \@tfor\member:=#1\do{% \expandafter\twoCH@@R\member// \if\@@tmpa #2\relax% \if\@@tmpb A\relax% \expandafter\csname dothskbond#3\endcsname% \dothskbonda etc. \@skbondlisttrue \else\if\@@tmpb B\relax% {\thicklines \expandafter\csname hskbond#3\endcsname% \hskbonda etc. }% \@skbondlisttrue \fi\fi \fi% }% \if@skbondlist\else {\thinlines \expandafter\csname hskbond#3\endcsname% \hskbonda etc. }% \fi% \else \expandafter\ifx\csname @#2#2#2\endcsname \empty\relax% % \ifx\@aaa\empty\relax \@tfor\member:=#1\do{% \expandafter\twoCH@@R\member// \if\@@tmpa #2\relax% \XyMTeXWarning{Unavailable bond `#2' in SKBONDLIST}\fi }% \fi\fi }% end of \set@skel@bondh % \end{macrocode} % \end{macro} % % \section{Six-membered heterocyles} % \subsection{Horizontal type} % % The standard skeleton of a six-membered heterocycle is selected % to have the following locant numbers. % % \begin{verbatim} % ************************* % * sixhetero derivatives * % * (horizontal type) * % ************************* % The following numbering is adopted in this macro. % % b % 2 3 % a ----- c % * * % the original point ===> 1 * * 4 % (0,0) * * d % f ----- % 6 5 % e % % \end{verbatim} % % The macro |\sixheterovh| has two arguments |ATOMLIST| and |SUBSLIST| % as well as an optional argument |BONDLIST|. % Two optional arguments |SKBONDLIST| and |OMIT| are added to % treat stereochemical information or other bond situations. % % \begin{verbatim} % \sixheteroh(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] % \end{verbatim} % % 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. % % \begin{verbatim} % BONDLIST = % % none or r : sixhetero (right-handed) % l : sixhetero (left-handed) % a : 1,2-double bond % b : 2,3-double bond % c : 4,3-double bond % d : 4,5-double bond % e : 5,6-double bond % f : 6,1-double bond % A : aromatic circle % {n+} : plus at the n-nitrogen atom (n = 1 to 6) % \end{verbatim} % % 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. % % \begin{verbatim} % 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 % \end{verbatim} % % 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. % % \begin{verbatim} % SUBSLIST: list of substituents (max 6 substitution positions) % % for n = 1 to 6 % % nD : exocyclic double bond at n-atom % n or nS : exocyclic single bond at n-atom % nA : alpha single bond at n-atom % nB : beta single bond at n-atom % nSA : alpha single bond at n-atom (boldface) % nSB : beta single bond at n-atom (dotted line) % nSa : alpha (not specified) single bond at n-atom % nSb : beta (not specified) single bond at n-atom % % nSd : alpha single bond at n-atom (dotted line) % with an alternative direction to nSA % nSu : beta single bond at n-atom (boldface) % with an alternative direction to nSB % nFA : alpha single bond at n-atom (dotted line) % for ring fusion % nFB : beta single bond at n-atom (boldface) % for ring fusion % nGA : alpha single bond at n-atom (dotted line) % for the other ring fusion % nGB : beta single bond at n-atom (boldface) % for the other ring fusion % \end{verbatim} % % The argument |OMIT| represents one or more bonds to be omitted. % The omitted edges may be regarded as both fused and non-fused % positions. % % \begin{verbatim} % OMIT: one or more bonds omitted (a, b, c, d, e, or f) % \end{verbatim} % % Several examples are shown as follows. % \begin{verbatim} % e.g. % % \sixheteroh{1==N}{1==Cl;2==F} % \sixheteroh[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} % \sixheteroh[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl} % \end{verbatim} % % The definition of |\sixheteroh| uses a picture environment and % consists of the following unit processes: % \begin{enumerate} % \item treatment of atom list, % \item placing outer skeletons, % \item placing inner double bonds, % \item setting hetero atoms, and % \item placing substituents by |\setsixringh|. % \end{enumerate} % % \changes{v1.02}{1998/10/31}{Adding \cs{ylpositionh}, \cs{if@ylsw}, % \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, % \cs{yl@xdiff} and \cs{yl@ydiff}} % \changes{v2.00}{1998/11/29}{Add: Spiro and fused rings} % % \begin{macro}{\sixheteroh} % \begin{macro}{\@six@heteroh} % \begin{macro}{\@six@@heteroh} % \begin{macro}{\@sixheteroh} % \begin{macrocode} \def\sixheteroh{\@ifnextchar({\@six@heteroh(@}{\@six@heteroh(@)}} \def\@six@heteroh(#1){\@ifnextchar[{\@six@@heteroh(#1)[@}% {\@six@@heteroh(#1)[@]}} \def\@six@@heteroh(#1)[#2]#3#4{\@ifnextchar[% {\@sixheteroh(#1)[#2]{#3}{#4}[@}% {\@sixheteroh(#1)[#2]{#3}{#4}[@]}} \def\@sixheteroh(#1)[#2]#3#4[#5]{% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%%%% % % treatment of atom list % % %%%%%%%%%%%%%%%%%%%%%%%%%% \iniatom\iniflag%initialize \test@vrtx@sixh{#3}% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adjustment of attached positions % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \@reset@ylsw% \ylpositionh{#4}{0}{0}{7}{0}% \if@ylsw \yl@shiftii=\@ylii \yl@shifti=\@yli \advance\yl@shiftii\yl@xdiff \advance\yl@shifti\yl@ydiff \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti) \reset@yl@xydiff%1999/1/6 by S. Fujita \else \begin{picture}(880,800)(-240,-400)% \iforigpt \put(-\shifti,-\shiftii){\circle*{50}}% \put(-\noshift,-\noshift){\circle{50}}% \typeout{command `sixheteroh' origin: % (\the\noshift,\the\noshift) ---> (\the\shifti,\the\shiftii)}\fi% \fi % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%% % % outer skeleton % % %%%%%%%%%%%%%%%%%% {% \resetbdsw% \@bond@@omit{#5}% \set@skel@bondh{#1}{a}{a}% bond between 1 and 2 \@aaa -> \hskbonda etc \set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc \set@skel@bondh{#1}{c}{c}% bond between 3 and 4 \@ccc -> \hskbondc etc \set@skel@bondh{#1}{d}{d}% bond between 4 and 5 \@ddd -> \hskbondd etc \set@skel@bondh{#1}{e}{e}% bond between 5 and 6 \@eee -> \hskbonde etc \set@skel@bondh{#1}{f}{f}% bond between 6 and 1 \@fff -> \hskbondf etc }% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%% % % inner double bond % % %%%%%%%%%%%%%%%%%%%%% \@tfor\member:=#2\do{% \if\member r\relax \hbondd \hbondf \hbondb% \else \if\member l\relax \hbonda \hbondc \hbonde% \else \if\member a\relax \hbonda% \else \if\member b\relax \hbondb% \else \if\member c\relax \hbondc% \else \if\member d\relax \hbondd% \else \if\member e\relax \hbonde% \else \if\member f\relax \hbondf% \else \if\member A%left aromatic circle % \put(0,203){\circle{240}}% %circle \put(203,0){\circle{240}}% %circle % %%%%%%%%%%%%%%%%%%%%%%%%% % % inner bond attachment % % %%%%%%%%%%%%%%%%%%%%%%%%% \else \expandafter\twoCH@@R\member//% \set@fusionadd@sixh \fi\fi\fi\fi\fi\fi\fi\fi\fi}% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%% % % setting hetero atoms % % %%%%%%%%%%%%%%%%%%%%%%%% \set@hetatom@sixh{#3}{0}{0}{7}{0}% %atom 1--6% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%% % % setting substituents % % %%%%%%%%%%%%%%%%%%%%%%%% \setsixringh{#4}{0}{0}{7}{0}% %subst 1--6 \end{picture}\iniatom\iniflag}% %end of \sixheteroh macro % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % The macro |\test@vrtx@sixh| is used to test the presence of % a hetero atom or a spiro substituent on a vertex of the % sixheteroh nucleus. % % \begin{macro}{\test@vrtx@sixh} % \begin{macrocode} \def\test@vrtx@sixh#1{% \@forsemicol\member:=#1\do{% \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax% \expandafter\twoch@r\@membera{}% \ifcase\@tmpa% \or% \xdef\aaa{\@memberb}% \if\@tmpb s\relax\def\aaa{}\else\def\aaa{@}\fi \or% \xdef\bbb{\@memberb}% \if\@tmpb s\relax\def\bbb{}\else\def\bbb{@}\fi \or% \xdef\ccc{\@memberb}% \if\@tmpb s\relax\def\ccc{}\else\def\ccc{@}\fi \or% \xdef\ddd{\@memberb}% \if\@tmpb s\relax\def\ddd{}\else\def\ddd{@}\fi \or% \xdef\eee{\@memberb}% \if\@tmpb s\relax\def\eee{}\else\def\eee{@}\fi \or% \xdef\fff{\@memberb}% \if\@tmpb s\relax\def\fff{}\else\def\fff{@}\fi \fi\fi}% }% end of \test@vrtx@sixh % \end{macrocode} % \end{macro} % % \subsection{Inverse horizontal type} % % The standard skeleton of a six-membered heterocycle of inverse type % is selected to have the following locant numbers. % % \begin{verbatim} % ************************************ % * sixhetero derivatives * % * (horizontal type, inverse type) * % ************************************ % The following numbering is adopted in this macro. % % b % 3 2 % c ----- a % * * % the original point ===> 4 * * 1 % (0,0) * * f % d ----- % 5 6 % e % \end{verbatim} % % The macro |\sixheterohi| has two arguments |ATOMLIST| and |SUBSLIST| % as well as an optional argument |BONDLIST|. % Two optional arguments |SKBONDLIST| and |OMIT| are added to % treat stereochemical information or other bond situations. % % \begin{verbatim} % \sixheterohi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] % \end{verbatim} % % 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. % % \begin{verbatim} % % BONDLIST = % % none or r : sixhetero (right-handed) % l : sixhetero (left-handed) % [] : fully saturated form % a : 1,2-double bond % b : 2,3-double bond % c : 4,3-double bond % d : 4,5-double bond % e : 5,6-double bond % f : 6,1-double bond % A : aromatic circle % {n+} : plus at the n-nitrogen atom (n = 1 to 4) % \end{verbatim} % % 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. % % \begin{verbatim} % 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 % \end{verbatim} % % 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. % % \begin{verbatim} % SUBSLIST: list of substituents (max 6 substitution positions) % % for n = 1 to 6 % % nD : exocyclic double bond at n-atom % n or nS : exocyclic single bond at n-atom % nA : alpha single bond at n-atom % nB : beta single bond at n-atom % nSA : alpha single bond at n-atom (boldface) % nSB : beta single bond at n-atom (dotted line) % nSa : alpha (not specified) single bond at n-atom % nSb : beta (not specified) single bond at n-atom % % nSd : alpha single bond at n-atom (dotted line) % with an alternative direction to nSA % nSu : beta single bond at n-atom (boldface) % with an alternative direction to nSB % nFA : alpha single bond at n-atom (dotted line) % for ring fusion % nFB : beta single bond at n-atom (boldface) % for ring fusion % nGA : alpha single bond at n-atom (dotted line) % for the other ring fusion % nGB : beta single bond at n-atom (boldface) % for the other ring fusion % \end{verbatim} % % The argument |OMIT| represents one or more bonds to be omitted. % The omitted edges may be regarded as both fused and non-fused % positions. % % \begin{verbatim} % OMIT: one or more bonds omitted (a, b, c, d, e, or f) % \end{verbatim} % % Several examples are shown as follows. % \begin{verbatim} % e.g. % % \sixheterohi{1==N}{1==Cl;2==F} % \sixheterohi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} % \sixheterohi[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl} % \end{verbatim} % % The definition of |\sixheterohi| uses a picture environment and % consists of the same unit processes as shown in |\sixheterov|: % \begin{enumerate} % \item treatment of atom list, % \item placing outer skeletons, % \item placing inner double bonds, % \item setting hetero atoms, and % \item placing substituents by |\setsixringh|. % \end{enumerate} % \changes{v1.02}{1998/10/31}{Adding \cs{ylpositionh}, \cs{if@ylsw}, % \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, % \cs{yl@xdiff} and \cs{yl@ydiff}} % \changes{v2.00}{1998/11/29}{Add: Spiro and fused rings} % % \begin{macro}{\sixheterohi} % \begin{macro}{\@six@heterohi} % \begin{macro}{\@six@@heterohi} % \begin{macro}{\@sixheterohi} % \begin{macrocode} \def\sixheterohi{\@ifnextchar({\@six@heterohi(@}{\@six@heterohi(@)}} \def\@six@heterohi(#1){\@ifnextchar[{\@six@@heterohi(#1)[@}% {\@six@@heterohi(#1)[@]}} \def\@six@@heterohi(#1)[#2]#3#4{\@ifnextchar[% {\@sixheterohi(#1)[#2]{#3}{#4}[@}% {\@sixheterohi(#1)[#2]{#3}{#4}[@]}} \def\@sixheterohi(#1)[#2]#3#4[#5]{% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%%%% % % treatment of atom list % % %%%%%%%%%%%%%%%%%%%%%%%%%% \iniatom\iniflag%initialize \test@vrtx@sixhi{#3}% \@reset@ylsw% \ylpositionh{#4}{5}{0}{5}{-1}% %subst 1--4 \ylpositionh{#4}{11}{4}{7}{-1}% %subst 5 and 6 \if@ylsw \yl@shiftii=\@ylii \yl@shifti=\@yli \advance\yl@shiftii\yl@xdiff \advance\yl@shifti\yl@ydiff \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti) \reset@yl@xydiff%1999/1/6 by S. Fujita \else \begin{picture}(880,800)(-240,-400)% \iforigpt \put(-\shifti,-\shiftii){\circle*{50}}% \put(-\noshift,-\noshift){\circle{50}}% \typeout{command `sixheterohi' origin: % (\the\noshift,\the\noshift) ---> (\the\shifti,\the\shiftii)}\fi% \fi % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%% % % outer skeleton % % %%%%%%%%%%%%%%%%%% {\resetbdsw% \@bond@@omit{#5}% \set@skel@bondh{#1}{a}{c}% bond between 1 and 2 \@aaa -> \hskbondc etc \set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc \set@skel@bondh{#1}{c}{a}% bond between 3 and 4 \@ccc -> \hskbonda etc \set@skel@bondh{#1}{d}{f}% bond between 4 and 5 \@ddd -> \hskbondf etc \set@skel@bondh{#1}{e}{e}% bond between 5 and 6 \@eee -> \hskbonde etc \set@skel@bondh{#1}{f}{d}% bond between 6 and 1 \@fff -> \hskbondd etc }% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%% % % inner double bond % % %%%%%%%%%%%%%%%%%%%%% \@tfor\member:=#2\do{% \if\member r\relax \hbondd \hbondf \hbondb% \else \if\member l\relax \hbonda \hbondc \hbonde% \else \if\member a\relax \hbondc% \else \if\member b\relax \hbondb% \else \if\member c\relax \hbonda% \else \if\member d\relax \hbondf% \else \if\member e\relax \hbonde% \else \if\member f\relax \hbondd% \else \if\member A%left aromatic circle % \put(0,203){\circle{240}}% %circle \put(203,0){\circle{240}}% %circle % %%%%%%%%%%%%%%%%%%%%%%%%% % % inner bond attachment % % %%%%%%%%%%%%%%%%%%%%%%%%% \else \expandafter\twoCH@@R\member//% \set@fusionadd@sixhi \fi\fi\fi\fi\fi\fi\fi\fi\fi}% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%% % % setting hetero atoms % % %%%%%%%%%%%%%%%%%%%%%%%% \set@hetatom@sixh{#3}{5}{0}{5}{-1}% %subst 1--4 \set@hetatom@sixh{#3}{11}{4}{7}{-1}% %subst 5 and 6 % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%% % % setting substituents % % %%%%%%%%%%%%%%%%%%%%%%%% \setsixringh{#4}{5}{0}{5}{-1}% %subst 1--4 \setsixringh{#4}{11}{4}{7}{-1}% %subst 5 and 6 \end{picture}\iniatom\iniflag}% %end of \sixheterohi macro % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % The macro |\test@vrtx@sixhi| is used to test the presence of % a hetero atom or a spiro substituent on a vertex of the % sixheteroh nucleus. % % \begin{macro}{\test@vrtx@sixhi} % \begin{macrocode} \def\test@vrtx@sixhi#1{% \@forsemicol\member:=#1\do{% \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax% \expandafter\twoch@r\@membera{}% \ifcase\@tmpa% \or \if\@tmpb s\relax\def\ddd{}\else\def\ddd{@}\fi \or \if\@tmpb s\relax\def\ccc{}\else\def\ccc{@}\fi \or \if\@tmpb s\relax\def\bbb{}\else\def\bbb{@}\fi \or \if\@tmpb s\relax\def\aaa{}\else\def\aaa{@}\fi \or \if\@tmpb s\relax\def\fff{}\else\def\fff{@}\fi \or \if\@tmpb s\relax\def\eee{}\else\def\eee{@}\fi \fi\fi}% }% end of \test@vrtx@sixhi % \end{macrocode} % \end{macro} % % \subsection{Pyridine derivatives of horizontal type} % % The macros |\sixheteroh| and |\sixheterohi| can be used in the % form of a fixed |ATOMLIST|. Hence, the resulting commands for % drawing a six-membered heterocyle with one or more nitrogen atoms % have an argument |SUBSLIST| as well as an optional argument |BONDLIST|. % % \begin{verbatim} % ************************ % * pyridine derivatives * % * (horizontal type) * % ************************ % % \pyridineh[BONDLIST]{SUBSLIST} % \pyridinehi[BONDLIST]{SUBSLIST} % \pyrazineh[BONDLIST]{SUBSLIST} % \pyrimidineh[BONDLIST]{SUBSLIST} % \pyrimidinehi[BONDLIST]{SUBSLIST} % \triazineh[BONDLIST]{SUBSLIST} % \triazinehi[BONDLIST]{SUBSLIST} % \end{verbatim} % % 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. % % \begin{verbatim} % BONDLIST = % % none or r : pyridine (right-handed) % l : pyridine (left-handed) % [] : fully saturated ring % a : 1,2-double bond % b : 2,3-double bond % c : 4,3-double bond % d : 4,5-double bond % e : 5,6-double bond % f : 6,1-double bond % A : aromatic circle % {n+} : plus at the nitrogen atom % \end{verbatim} % % 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. % % \begin{verbatim} % 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 % \end{verbatim} % % Several examples are shown as follows. % \begin{verbatim} % e.g. % % \pyridineh{1==Cl;2==F} % \pyridineh[c]{1==Cl;4==F;2==CH$_{3}$} % \pyridineh[eb]{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl} % \end{verbatim} % \changes{v2.00}{1998/11/29}{Add: fused rings} % % \begin{macro}{\pyridineh} % \begin{macro}{\pyridinehi} % \begin{macrocode} \def\pyridineh{\@ifnextchar[{\@pyridineh[@}{\@pyridineh[r]}}% \def\@pyridineh[#1]#2{% \iforigpt \typeout{command `pyridineh' % is based on `sixheteroh'.}\fi% \sixheteroh[#1]{1==N}{#2}}%end of \pyridineh macro \def\pyridinehi{\@ifnextchar[{\@pyridinehi}{\@pyridinehi[r]}}% \def\@pyridinehi[#1]#2{% \iforigpt \typeout{command `pyridinehi' % is based on `sixheterohi'.}\fi% \sixheterohi[#1]{1==N}{#2}}% %end of \pyridinehi macro % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\pyridazineh} % \begin{macrocode} \def\pyrazineh{\@ifnextchar[{\@pyrazineh[@}{\@pyrazineh[r]}}% \def\@pyrazineh[#1]#2{% \iforigpt \typeout{command `pyrazineh' % is based on `sixheteroh'.}\fi% \sixheteroh[#1]{1==N;4==N}{#2}}%end of \pyrazineh macro % \end{macrocode} % \end{macro} % % \begin{macro}{\pyrimidineh} % \begin{macro}{\pyrimidinehi} % \begin{macrocode} \def\pyrimidineh{% \@ifnextchar[{\@pyrimidineh[@}{\@pyrimidineh[r]}}% \def\@pyrimidineh[#1]#2{% \iforigpt \typeout{command `pyrimidineh' % is based on `sixheteroh'.}\fi% \sixheteroh[#1]{1==N;3==N}{#2}}% %end of \pyrimidineh macro \def\pyrimidinehi{% \@ifnextchar[{\@pyrimidinehi[@}{\@pyrimidinehi[r]}}% \def\@pyrimidinehi[#1]#2{% \iforigpt \typeout{command `pyrimidinehi' % is based on `sixheterohi'.}\fi% \sixheterohi[#1]{1==N;3==N}{#2}}%end of \pyrimidinehi macro % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\pyridazineh} % \begin{macro}{\pyridazinehi} % \begin{macrocode} \def\pyridazineh{\@ifnextchar[{\@pyridazineh[@}{\@pyridazineh[r]}}% \def\@pyridazineh[#1]#2{% \iforigpt \typeout{command `pyridazineh' % is based on `sixheteroh'.}\fi% \sixheteroh[#1]{1==N;2==N}{#2}}% %end of \pyridazineh macro \def\pyridazinehi{% \@ifnextchar[{\@pyridazinehi}{\@pyridazinehi[r]}}% \def\@pyridazinehi[#1]#2{% \iforigpt \typeout{command `pyridazinehi' % is based on `sixheterohi'.}\fi% \sixheterohi[#1]{1==N;2==N}{#2}}%end of \pyridazinehi macro % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\triazineh} % \begin{macro}{\triazinehi} % \begin{macrocode} \def\triazineh{\@ifnextchar[{\@triazineh[@}{\@triazineh[r]}}% \def\@triazineh[#1]#2{% \iforigpt \typeout{command `triazineh' % is based on `sixheteroh'.}\fi% \sixheteroh[#1]{1==N;3==N;5==N}{#2}}%end of \triazineh macro \def\triazinehi{\@ifnextchar[{\@triazinehi[@}{\@triazinehi[r]}}% \def\@triazinehi[#1]#2{% \iforigpt \typeout{command `triazinehi' % is based on `sixheterohi'.}\fi% \sixheterohi[#1]{1==N;3==N;5==N}{#2}}%end of \triazinehi macro % \end{macrocode} % \end{macro} % \end{macro} % % \section{Five-membered heterocycles} % \subsection{Horizontal type} % % The standard skeleton of a five-membered heterocycle % is selected to have the following locant numbers. % % \begin{verbatim} % **************************** % * fivehetero derivatives * % * (horizontal type) * % **************************** % The following numbering is adopted in this macro. % % 3 _____ 2 % | * % | * 1 <===== the original point % | * % 4 ----- 5 % \end{verbatim} % % The macro |\fiveheteroh| has two arguments |ATOMLIST| and |SUBSLIST| % as well as an optional argument |BONDLIST|. % Two optional arguments |SKBONDLIST| and |OMIT| are added to % treat stereochemical information or other bond situations. % % \begin{verbatim} % \fiveheteroh(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] % \end{verbatim} % % The |SKBONDLIST| argument contains pairs of two alphabets in % parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase % character selected from bond specifiers `a' to `e' and a uppercase % character `A' or `B'. % % The |BONDLIST| argument contains one % character selected from a to e, each of which indicates the presence of % an inner (endcyclic) double bond on the corresponding position. % The option `A' represents an aromatic circle. The option % `$n+$' ($n=1$ to $5$) represents a plus charge on a hetero atom % at the $n$-position. The option % `$0+$' represents a plus charge at the center of the ring. % % \begin{verbatim} % BONDLIST: list of inner double bonds % % a : 1,2-double bond % b : 2,3-double bond % c : 4,3-double bond % d : 4,5-double bond % e : 5,1-double bond % A : aromatic circle % {n+} : plus at the n-nitrogen atom (n = 1 to 5) % {0+} : plus (or others) at the center % \end{verbatim} % % 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. % % \begin{verbatim} % 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 % \end{verbatim} % % 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. % % \begin{verbatim} % 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 % \end{verbatim} % % The argument |OMIT| represents one or more bonds to be omitted. % The omitted edges may be regarded as both fused and non-fused % positions. % % \begin{verbatim} % OMIT: one or more bonds omitted (a, b, c, d, or e) % \end{verbatim} % % Several examples are shown as follows. % \begin{verbatim} % e.g. % % \fiveheteroh{1==N}{1==H;2==F} % \fiveheteroh[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} % \fiveheteroh[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl} % \end{verbatim} % % The definition of |\fiveheteroh| uses a picture environment and % consists of the same unit processes as shown in |\sixheterov|: % \begin{enumerate} % \item treatment of atom list, % \item placing outer skeletons, % \item placing inner double bonds, % \item setting hetero atoms, and % \item placing substituents by |\setsixringh| partially. % \end{enumerate} % \changes{v1.02}{1998/10/31}{Adding \cs{ylpositionh}, \cs{if@ylsw}, % \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, % \cs{yl@xdiff} and \cs{yl@ydiff}} % \changes{v2.00}{1998/12/5}{Add: fused and spiro rings} % % \begin{macro}{\fiveheteroh} % \begin{macro}{\@five@heteroh} % \begin{macro}{\@five@@heteroh} % \begin{macro}{\@fiveheteroh} % \begin{macrocode} \def\fiveheteroh{\@ifnextchar({\@five@heteroh(@}{\@five@heteroh(@)}} \def\@five@heteroh(#1){\@ifnextchar[{\@five@@heteroh(#1)[@}% {\@five@@heteroh(#1)[@]}} \def\@five@@heteroh(#1)[#2]#3#4{\@ifnextchar[% {\@fiveheteroh(#1)[#2]{#3}{#4}[@}% {\@fiveheteroh(#1)[#2]{#3}{#4}[@]}} \def\@fiveheteroh(#1)[#2]#3#4[#5]{% \iniatom\iniflag%initialize % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%%%% % % treatment of atom list % % %%%%%%%%%%%%%%%%%%%%%%%%%% \test@vrtx@fivehi{#3}% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adustment of subs positions % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \@reset@ylsw% \ylpositionh{#4}{5}{1}{5}{-1}% % for 1 to 3 \if@ylsw \ifx\@@ylii\empty \def\@@ylii{0}\def\@@yli{0}\fi \else \ylpositionh{#4}{10}{4}{7}{-1}% % for 4 to 5 \fi \if@ylsw \ifx\@@ylii\empty \def\@@ylii{0}\def\@@yli{0}\fi \fi \if@ylsw \yl@shiftii=\@ylii \yl@shifti=\@yli \advance\yl@shiftii\@@ylii \advance\yl@shifti\@@yli \advance\yl@shiftii\yl@xdiff \advance\yl@shifti\yl@ydiff \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti) \reset@yl@xydiff%1999/1/6 by S. Fujita \else \begin{picture}(800,880)(-240,-400)% \iforigpt \put(-\shifti,-\shiftii){\circle*{50}}% \put(-\noshift,-\noshift){\circle{50}}% \typeout{command `fiveheteroh' origin: % (\the\noshift,\the\noshift) ---> (\the\shifti,\the\shiftii)}\fi% \fi % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%% % % outer skeleton % % %%%%%%%%%%%%%%%%%% {\resetbdsw% \@bond@@omit{#5}% \set@skel@bondh{#1}{a}{c}% bond between 1 and 2 \@aaa -> \skbondc etc \set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc \set@skel@longbond{#1}{c}{hskbondvert}% % bond between 3 and 4 \@ccc -> \skbondhoriz etc \set@skel@bondh{#1}{d}{e}% bond between 4 and 5 \@ddd -> \skbonde etc \set@skel@bondh{#1}{e}{d}% bond between 5 and 1 \@eee -> \skbondd etc }% % %%%%%%%%%%%%%%%%%%%%% % % inner double bond % % %%%%%%%%%%%%%%%%%%%%% \@tfor\member:=#2\do{% \if\member r% \else \if\member a\relax \hbondc% \else \if\member b\relax \hbondb% \else \if\member c\relax \hbondvert% \else \if\member d\relax \hbonde% \else \if\member e\relax \hbondd% \else \if\member A%left aromatic circle \put(233,0){\circle{180}}% %circle \else \expandafter\twoCH@@R\member//% \set@fusionadd@fiveh \fi\fi\fi\fi\fi\fi\fi}% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%% % % setting hetero atoms % % %%%%%%%%%%%%%%%%%%%%%%%% \put(0,0){\set@hetatom@sixh{#3}{5}{1}{5}{-1}}% % for 1 to 3 \put(0,0){\set@hetatom@sixh{#3}{10}{4}{7}{-1}}% % for 4 to 5 % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%% % % setting substituents % % %%%%%%%%%%%%%%%%%%%%%%%% \put(0,0){\setsixringh{#4}{5}{1}{5}{-1}}% % for 1 to 3 \put(0,0){\setsixringh{#4}{10}{4}{7}{-1}}% % for 4 to 5 \end{picture}\iniatom\iniflag}% %end of \fiveheteroh macro % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % The macro |\test@vrtx@fivehi| is used to test the presence of % a hetero atom or a spiro substituent on a vertex of the % fiveheteroh nucleus. % % \begin{macro}{\test@vrtx@fivehi} % \begin{macrocode} \def\test@vrtx@fivehi#1{% \@forsemicol\member:=#1\do{% \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax% \expandafter\twoch@r\@membera{}% \ifcase\@tmpa% \or \if\@tmpb s\relax\def\ddd{}\else\def\ddd{@}\fi \or \if\@tmpb s\relax\def\ccc{}\else\def\ccc{@}\fi \or \if\@tmpb s\relax\def\bbb{}\else\def\bbb{@}\fi \or \if\@tmpb s\relax\def\fff{}\else\def\fff{@}\fi \or \if\@tmpb s\relax\def\eee{}\else\def\eee{@}\fi \or \if\@tmpb s\relax\def\aaa{}\else\def\aaa{@}\fi% dummy \fi\fi}% }% end of \test@vrtx@sixhi % \end{macrocode} % \end{macro} % % \subsection{Inverse horizontal type} % % The standard skeleton of a five-membered heterocycle of inverse type % is selected to have the following locant numbers. % % \begin{verbatim} % ******************************* % * fivehetero derivatives * % * (horizontal type, inverse) * % ******************************* % The following numbering is adopted in this macro. % % 2 ----- 3 % * | % the original point 1 * | % * | % _____| % 5 4 % \end{verbatim} % % The macro |\fiveheterohi| has two arguments |ATOMLIST| and |SUBSLIST| % as well as an optional argument |BONDLIST|. % Two optional arguments |SKBONDLIST| and |OMIT| are added to % treat stereochemical information or other bond situations. % % \begin{verbatim} % \fiveheterohi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] % \end{verbatim} % % The |SKBONDLIST| argument contains pairs of two alphabets in % parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase % character selected from bond specifiers `a' to `e' and a uppercase % character `A' or `B'. % % The |BONDLIST| argument contains one % character selected from a to e, each of which indicates the presence of % an inner (endcyclic) double bond on the corresponding position. % The option `A' represents an aromatic circle. The option % `$n+$' ($n=1$ to $5$) represents a plus charge on a hetero atom % at the $n$-position. The option % `$0+$' represents a plus charge at the center of the ring. % % \begin{verbatim} % % BONDLIST: list of inner double bonds % % a : 1,2-double bond % b : 2,3-double bond % c : 4,3-double bond % d : 4,5-double bond % e : 5,1-double bond % A : aromatic circle % {n+} : plus at the n-nitrogen atom (n = 1 to 5) % {0+} : plus (or others) at the center % \end{verbatim} % % 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. % % \begin{verbatim} % 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 % \end{verbatim} % % 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. % % \begin{verbatim} % 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 % \end{verbatim} % % The argument |OMIT| represents one or more bonds to be omitted. % The omitted edges may be regarded as both fused and non-fused % positions. % % \begin{verbatim} % OMIT: one or more bonds omitted (a, b, c, d, or e) % \end{verbatim} % % Several examples are shown as follows. % \begin{verbatim} % e.g. % % \fiveheterohi{1==N}{1==H;2==F} % \fiveheterohi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} % \fiveheterohi[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl} % \end{verbatim} % % The definition of |\fiveheterohi| uses a picture environment and % consists of the same unit processes as shown in |\sixheteroh|: % \begin{enumerate} % \item treatment of atom list, % \item placing outer skeletons, % \item placing inner double bonds, % \item setting hetero atoms, and % \item placing substituents by |\setsixringh| partially. % \end{enumerate} % \changes{v1.02}{1998/10/31}{Adding \cs{ylpositionh}, \cs{if@ylsw}, % \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, % \cs{yl@xdiff} and \cs{yl@ydiff}} % \changes{v2.00}{1998/12/5}{Add: fused and spiro rings} % % \begin{macro}{\fiveheterohi} % \begin{macro}{\@five@heterohi} % \begin{macro}{\@five@@heterohi} % \begin{macro}{\@fiveheterohi} % \begin{macrocode} \def\fiveheterohi{\@ifnextchar({\@five@heterohi(@}{\@five@heterohi(@)}} \def\@five@heterohi(#1){\@ifnextchar[{\@five@@heterohi(#1)[@}% {\@five@@heterohi(#1)[@]}} \def\@five@@heterohi(#1)[#2]#3#4{\@ifnextchar[% {\@fiveheterohi(#1)[#2]{#3}{#4}[@}% {\@fiveheterohi(#1)[#2]{#3}{#4}[@]}} \def\@fiveheterohi(#1)[#2]#3#4[#5]{% \iniatom\iniflag%initialize % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%%%% % % treatment of atom list % % %%%%%%%%%%%%%%%%%%%%%%%%%% \test@vertix@sixv{#3}{a}{b}{c}{e}{f}{d}%d--dummy \@reset@ylsw% \ylpositionh{#4}{0}{0}{4}{0}% % for 1 to 3 \if@ylsw \ifx\@@ylii\empty \def\@@ylii{0}\def\@@yli{0}\fi \else \ylpositionh{#4}{1}{4}{7}{0}% % for 4 to 5 \fi \if@ylsw \ifx\@@ylii\empty \def\@@ylii{0}\def\@@yli{0}\fi \fi \if@ylsw \yl@shiftii=\@ylii \yl@shifti=\@yli \advance\yl@shiftii\@@ylii \advance\yl@shifti\@@yli \advance\yl@shiftii\yl@xdiff \advance\yl@shifti\yl@ydiff \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti) \reset@yl@xydiff%1999/1/6 by S. Fujita \else \begin{picture}(800,880)(-240,-400)% \iforigpt \put(-\shifti,-\shiftii){\circle*{50}}% \put(-\noshift,-\noshift){\circle{50}}% \typeout{command `fiveheterohi' origin: % (\the\noshift,\the\noshift) ---> (\the\shifti,\the\shiftii)}\fi% \fi % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%% % % outer skeleton % % %%%%%%%%%%%%%%%%%% {\resetbdsw% \@bond@@omit{#5}% \set@skel@bondh{#1}{a}{a}% bond between 1 and 2 \@aaa -> \hskbonda etc \set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc \set@skel@longbond{#1}{c}{hskbondverti}% % bond between 3 and 4 \@ccc -> \hskbondverti etc \set@skel@bondh{#1}{d}{e}% bond between 4 and 5 \@ddd -> \hskbonde etc \set@skel@bondh{#1}{e}{f}% bond between 5 and 6 \@eee -> \hskbondf etc }% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%% % % inner double bond % % %%%%%%%%%%%%%%%%%%%%% \@tfor\member:=#2\do{% \if\member r% \else \if\member a\relax \hbonda% \else \if\member b\relax \hbondb% \else \if\member c\relax \hbondverti% \else \if\member d\relax \hbonde% \else \if\member e\relax \hbondf% \else \if\member A%left aromatic circle \put(173,0){\circle{180}}% %circle \else \expandafter\twoCH@@R\member//% \set@fusionadd@fivehi \fi\fi\fi\fi\fi\fi\fi}% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%% % % setting hetero atoms % % %%%%%%%%%%%%%%%%%%%%%%%% \set@hetatom@sixh{#3}{0}{0}{4}{0}% % for 1 to 3 \set@hetatom@sixh{#3}{1}{4}{7}{0}% % for 4 to 5 % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%% % % setting substituents % % %%%%%%%%%%%%%%%%%%%%%%%% \setsixringh{#4}{0}{0}{4}{0}% % for 1 to 3 \setsixringh{#4}{1}{4}{7}{0}% % for 4 to 5 \end{picture}\iniatom\iniflag}% %end of \fiveheterohi macro % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \subsection{Pyrrole derivatives of horizontal type} % % The macro |\fiveheteroh| can be used in the % form of a fixed |ATOMLIST|. Hence, the resulting commands for % drawing a five-membered heterocyle with one or more nitrogen atoms % have an argument |SUBSLIST| as well as an optional argument |BONDLIST|. % % \begin{verbatim} % *********************************** % * pyrrole derivatives and others * % * (horizontal type) * % *********************************** % % \pyrroleh[BONDLIST]{SUBSLIST} % \pyrazoleh[BONDLIST]{SUBSLIST} % \imidazoleh[BONDLIST]{SUBSLIST} % \isoxazoleh[BONDLIST]{SUBSLIST} % \oxazoleh[BONDLIST]{SUBSLIST} % \end{verbatim} % % 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. % % \begin{verbatim} % 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) % \end{verbatim} % % 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. % % \begin{verbatim} % 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 % \end{verbatim} % % Several examples are shown as follows. % \begin{verbatim} % e.g. % % \pyrroleh{1==H;2==F} % \pyrroleh[]{1==H;2==F} % \imidazoleh[c]{1==Cl;4==F;2==CH$_{3}$} % \isoxazoleh[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl} % \end{verbatim} % % \begin{macro}{\pyrroleh} % \begin{macro}{\pyrazoleh} % \begin{macro}{\imidazoleh} % \begin{macro}{\isoxazoleh} % \begin{macro}{\oxazoleh} % \begin{macrocode} \def\pyrroleh{\@ifnextchar[{\@pyrroleh[@}{\@pyrroleh[bd]}}% \def\@pyrroleh[#1]#2{% \iforigpt \typeout{command `pyrroleh' % is based on `fiveheteroh'.}\fi% \fiveheteroh[#1]{1==N}{#2}}% \def\pyrazoleh{\@ifnextchar[{\@pyrazoleh[@}{\@pyrazoleh[bd]}}% \def\@pyrazoleh[#1]#2{% \iforigpt \typeout{command `pyrazoleh' % is based on `fiveheteroh'.}\fi% \fiveheteroh[#1]{1==N;2==N}{#2}}% \def\imidazoleh{\@ifnextchar[{\@imidazoleh[@}{\@imidazoleh[bd]}}% \def\@imidazoleh[#1]#2{% \iforigpt \typeout{command `imidazoleh' % is based on `fiveheteroh'.}\fi% \fiveheteroh[#1]{1==N;3==N}{#2}}% \def\isoxazoleh{\@ifnextchar[{\@isoxazoleh[@}{\@isoxazoleh[bd]}}% \def\@isoxazoleh[#1]#2{% \iforigpt \typeout{command `isoxazoleh' % is based on `fiveheteroh'.}\fi% \fiveheteroh[#1]{1==O;2==N}{#2}}% \def\oxazoleh{\@ifnextchar[{\@oxazoleh[@}{\@oxazoleh[bd]}}% \def\@oxazoleh[#1]#2{% \iforigpt \typeout{command `oxazoleh' % is based on `fiveheteroh'.}\fi% \fiveheteroh[#1]{1==O;3==N}{#2}}% % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\furanh} % \begin{macro}{\thiopheneh} % \begin{macrocode} \def\furanh{\@ifnextchar[{\@furanh[@}{\@furanh[bd]}} \def\@furanh[#1]#2{% \iforigpt \typeout{command `furanh' % is based on `fiveheteroh'.}\fi% \fiveheteroh[#1]{1==O}{#2}} \def\thiopheneh{\@ifnextchar[{\@thiopheneh[@}{\@thiopheneh[bd]}} \def\@thiopheneh[#1]#2{% \iforigpt \typeout{command `thiopheneh' % is based on `fiveheteroh'.}\fi% \fiveheteroh[#1]{1==S}{#2}} % \end{macrocode} % \end{macro} % \end{macro} % % \subsection{Pyrrole derivatives of inverse horizontal type} % % The macro |\fiveheterohi| can be used in the % form of a fixed |ATOMLIST|. Hence, the resulting commands for % drawing a five-membered heterocyle with one or more nitrogen atoms % have an argument |SUBSLIST| as well as an optional argument |BONDLIST|. % % \begin{verbatim} % ************************************* % * pyrrole derivatives and others * % * (horizontal type, inverse) * % ************************************* % % \pyrrolehi[BONDLIST]{SUBSLIST} % \pyrazolehi[BONDLIST]{SUBSLIST} % \imidazolehi[BONDLIST]{SUBSLIST} % \isoxazolehi[BONDLIST]{SUBSLIST} % \oxazolehi[BONDLIST]{SUBSLIST} % \end{verbatim} % % 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. % % \begin{verbatim} % 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) % \end{verbatim} % % 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. % % \begin{verbatim} % 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 % \end{verbatim} % % Several examples are shown as follows. % \begin{verbatim} % e.g. % % \pyrrolehi{1==H;2==F} % \pyrrolehi[]{1==H;2==F} % \imidazolehi[c]{1==Cl;4==F;2==CH$_{3}$} % \isoxazolehi[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl} % \end{verbatim} % % \begin{macro}{\pyrrolehi} % \begin{macro}{\pyrazolehi} % \begin{macro}{\imidazolehi} % \begin{macro}{\isoxazolehi} % \begin{macro}{\oxazolehi} % \begin{macrocode} \def\pyrrolehi{\@ifnextchar[{\@pyrrolehi[@}{\@pyrrolehi[bd]}}% \def\@pyrrolehi[#1]#2{% \iforigpt \typeout{command `pyrrolehi' % is based on `fiveheterohi'.}\fi% \fiveheterohi[#1]{1==N}{#2}}% \def\pyrazolehi{\@ifnextchar[{\@pyrazolehi[@}{\@pyrazolehi[bd]}}% \def\@pyrazolehi[#1]#2{% \iforigpt \typeout{command `pyrazolehi' % is based on `fiveheterohi'.}\fi% \fiveheterohi[#1]{1==N;2==N}{#2}}% \def\imidazolehi{\@ifnextchar[{\@imidazolehi[@}{\@imidazolehi[bd]}}% \def\@imidazolehi[#1]#2{% \iforigpt \typeout{command `imidazolehi' % is based on `fiveheterohi'.}\fi% \fiveheterohi[#1]{1==N;3==N}{#2}}% \def\isoxazolehi{\@ifnextchar[{\@isoxazolehi[@}{\@isoxazolehi[bd]}}% \def\@isoxazolehi[#1]#2{% \iforigpt \typeout{command `isoxazolehi' % is based on `fiveheterohi'.}\fi% \fiveheterohi[#1]{1==O;2==N}{#2}}% \def\oxazolehi{\@ifnextchar[{\@oxazolehi[@}{\@oxazolehi[bd]}}% \def\@oxazolehi[#1]#2{% \iforigpt \typeout{command `oxazolehi' % is based on `fiveheterohi'.}\fi% \fiveheterohi[#1]{1==O;3==N}{#2}}% % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\furanhi} % \begin{macro}{\thiophenehi} % \begin{macrocode} \def\furanhi{\@ifnextchar[{\@furanhi[@}{\@furanhi[bd]}} \def\@furanhi[#1]#2{% \iforigpt \typeout{command `furanhi' % is based on `fiveheterohi'.}\fi% \fiveheterohi[#1]{1==O}{#2}} \def\thiophenehi{\@ifnextchar[{\@thiophenehi[@}{\@thiophenehi[bd]}} \def\@thiophenehi[#1]#2{% \iforigpt \typeout{command `thiophenehi' % is based on `fiveheterohi'.}\fi% \fiveheterohi[#1]{1==S}{#2}} % \end{macrocode} % \end{macro} % \end{macro} % % \section{Six-to-six fused heterocyles} % \subsection{Horizontal type} % % The standard skeleton of a six-to-six fused heterocycle is selected % to have the following locant numbers. % % \begin{verbatim} % **************************** % * decahetero derivatives * % * (horizontal type) * % **************************** % The following numbering is adopted in this macro. % % 2 3 % % *1 4 (*1 origin) % % (10)8a 4a(9) % % 8 5 % % 7 6 % ____ ____ % |cf. | % | 8 (10)1 | % | * 8a * | % | 7 * * * * 2 | % | | | | | % | | | | | % | 6 * * * * 3 | % | * 4a * | % | 5 (9) 4 | % | ^ | % | | | % | the original point | % |____ ____| % \end{verbatim} % % The macro |\decaheteroh| has two arguments |ATOMLIST| and |SUBSLIST| % as well as an optional argument |BONDLIST|. % Two optional arguments |SKBONDLIST| and |OMIT| are added to % treat stereochemical information or other bond situations. % % \begin{verbatim} % \decaheteroh(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] % \end{verbatim} % % 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. % % \begin{verbatim} % BONDLIST: list of bonds % % none or r : decahetero (right-handed) % l : no action % [] : fully saturated form % a : 1,2-double bond b : 2,3-double bond % c : 4,3-double bond d : 4,4a-double bond % e : 4a,5-double bond f : 5,6-double bond % g : 6,7-double bond h : 7,8-double bond % i : 8,8a-double bond j : 1,8a-double bond % k : 4a,8a-double bond % K : 4a,8a-double bond in the other ring % A : aromatic circle B : aromatic circle % {n+} : plus at the n-nitrogen atom (n = 1 to 10) % \end{verbatim} % % 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. % % \begin{verbatim} % 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 % \end{verbatim} % % 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. % % \begin{verbatim} % 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 % \end{verbatim} % % The argument |OMIT| represents one or more bonds to be omitted. % The omitted edges may be regarded as both fused and non-fused % positions. % % \begin{verbatim} % OMIT: one or more bonds omitted (a to k; see BONDLIST) % \end{verbatim} % % Several examples are shown as follows. % \begin{verbatim} % e.g. % % \decaheteroh{1==N}{1==Cl;2==F} % \decaheteroh[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} % \decaheteroh[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl} % \end{verbatim} % % The definition of |\decaheteroh| uses a picture environment and % consists of the same unit processes as shown in |\sixheterov|: % \begin{enumerate} % \item treatment of atom list, % \item placing outer skeletons, % \item placing inner double bonds, % \item setting hetero atoms, and % \item placing substituents by using |\setsixringh| several times. % \end{enumerate} % \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw}, % \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, % \cs{yl@xdiff} and \cs{yl@ydiff}} % \changes{v2.00}{1998/11/30}{Add: spiro and fused rings} % % \begin{macro}{\decaheteroh} % \begin{macro}{\@deca@heteroh} % \begin{macro}{\@deca@@heteroh} % \begin{macro}{\@decaheteroh} % \begin{macrocode} \def\decaheteroh{\@ifnextchar({\@deca@heteroh(@}{\@deca@heteroh(@)}} \def\@deca@heteroh(#1){\@ifnextchar[{\@deca@@heteroh(#1)[@}% {\@deca@@heteroh(#1)[@]}} \def\@deca@@heteroh(#1)[#2]#3#4{\@ifnextchar[% {\@decaheteroh(#1)[#2]{#3}{#4}[@}% {\@decaheteroh(#1)[#2]{#3}{#4}[@]}} \def\@decaheteroh(#1)[#2]#3#4[#5]{% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%%%% % % treatment of atom list % % %%%%%%%%%%%%%%%%%%%%%%%%%% \iniflag\iniatom% \test@vertix@sixv{#3}{a}{b}{c}{d}{e}{f}% \test@vertix@decav{#3}{g}{h}{i}{j}{@}{@}% % %%%%%%%%%%%%%%%%%%%%%%% % % adjustment for (yl) % % %%%%%%%%%%%%%%%%%%%%%%% \@reset@ylsw% \ylhetpositionh{#4}{0}{0}{5}{0}% %substituents on 1 to 4 \if@ylsw \ifx\@@ylii\empty \def\@@ylii{0}\def\@@yli{0}\fi \else {\let\ddd=\eee\let\eee=\fff\let\fff=\ggg \ylhetpositionh{#4}{-1}{3}{7}{0}% %substituents on 5 to 7 }% \fi \if@ylsw \ifx\@@ylii\empty \def\@@ylii{0}\def\@@yli{342}\fi \else {\let\aaa=\hhh \ylhetpositionh{#4}{-7}{0}{2}{0}% %substituent on 8 }% \fi \if@ylsw \ifx\@@ylii\empty \def\@@ylii{0}\def\@@yli{342}\fi \else {% \clipdetection% \@clipfusefalse \if@iclip \@clipfusetrue \fi% \ylatombondposition{#4}{-8}{4}% %9 for 4a position }% \fi \if@ylsw \ifx\@@ylii\empty \def\@@ylii{-303}\def\@@yli{171}\fi \else {% \clipdetection% \@clipfusefalse \if@jclip \@clipfusetrue \fi% \ylatombondposition{#4}{-9}{10}% %10 for 8a position }% \fi \if@ylsw \ifx\@@ylii\empty \def\@@ylii{-103}\def\@@yli{171}\fi \fi \if@ylsw \yl@shiftii=\@ylii \yl@shifti=\@yli \advance\yl@shiftii\@@ylii \advance\yl@shifti\@@yli \advance\yl@shiftii\yl@xdiff \advance\yl@shifti\yl@ydiff \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti) \reset@yl@xydiff%1999/1/6 by S. Fujita \else \begin{picture}(1200,1200)(-400,-800) \iforigpt \put(-\shiftii,-\shiftiii){\circle*{50}}% \put(-\noshift,-\noshift){\circle{50}}% \typeout{command `decaheteroh' origin: % (\the\noshift,\the\noshift) ---> (\the\shiftii,\the\shiftiii)}\fi% \fi % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%% % % outer skeleton % % %%%%%%%%%%%%%%%%%% \begingroup \resetbdsw% \@bond@@omit{#5}% {\let\fff=\jjj \let\eee=\iii% \set@skel@bondh{#1}{a}{a}% bond between 1 and 2 \@aaa -> \hskbonda etc \set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc \set@skel@bondh{#1}{c}{c}% bond between 3 and 4 \@ccc -> \hskbondc etc \set@skel@bondh{#1}{d}{d}% bond between 4 and 5 \@ddd -> \skbondd etc \set@skel@bondh{#1}{k}{e}% bond between 7 and 8 \@kkk -> \skbonde etc \set@skel@bondh{#1}{j}{f}% bond between 7 and 8 \@jjj -> \skbondf etc }% {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\ggg% \let\ccc=\iii\let\bbb=\jjj% \put(0,-342){\set@skel@bondh{#1}{i}{a}}% % bond between 8a and 8 \@iii -> \hskbonda etc \put(0,-342){\set@skel@bondh{#1}{e}{c}}% % bond between 4a and 5 \@eee -> \hskbondc etc \put(0,-342){\set@skel@bondh{#1}{f}{d}}% % bond between 5 and 6 \@fff -> \hskbondd etc \put(0,-342){\set@skel@bondh{#1}{g}{e}}% % bond between 6 and 7 \@ggg -> \hskbonde etc \put(0,-342){\set@skel@bondh{#1}{h}{f}}% % bond between 7 and 8 \@hhh -> \hskbondf etc }% \endgroup % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%% % % inner double bond % % %%%%%%%%%%%%%%%%%%%%% \@tfor\member:=#2\do{% \if\member r\relax% {\let\fff=\jjj \let\eee=\iii% \put(0,0){\hbonda}% bond between 1 and 2% \put(0,0){\hbondc}% bond between 3 and 4% }% {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\ggg% \let\ccc=\iii\let\bbb=\jjj% \put(0,-342){\hbondb}% bond between 8a and 4a \put(0,-342){\hbondf}% bond between 8 and 7 \put(0,-342){\hbondd}% bond between 5 and 6 }% \else \if\member l\relax% \else \if\member a\relax% \put(0,0){\hbonda}% bond between 1 and 2 \else \if\member b\relax% \put(0,0){\hbondb}% bond between 2 and 3 \else \if\member c\relax% \put(0,0){\hbondc}% bond between 3 and 4 % \put(342,0){\hbondc}% bond between 3 and 4 \else \if\member d\relax% {\let\eee=\iii% \put(0,0){\hbondd}% bond between 4 and 4a }% \else \if\member e\relax% {\let\ccc=\iii \let\ddd=\eee% \put(0,-342){\hbondc}% bond between 5 and 4a }% \else \if\member f\relax% {\let\ddd=\eee \let\eee=\fff% \put(0,-342){\hbondd}% bond between 5 and 6 }% \else \if\member g\relax% {\let\eee=\fff \let\fff=\ggg% \put(0,-342){\hbonde}% bond between 6 and 7 }% \else \if\member h\relax% {\let\aaa=\hhh \let\fff=\ggg% \put(0,-342){\hbondf}% bond between 8 and 7 }% \else \if\member i\relax% {\let\aaa=\hhh \let\bbb=\jjj% \put(0,-342){\hbonda}% bond between 8 and 8a }% \else \if\member j\relax% {\let\fff=\jjj% \put(0,0){\hbondf}% bond between 1 and 8a }% \else \if\member k\relax% {\let\ccc=\iii\let\bbb=\jjj% \put(0,-342){\hbondb}% bond between 8a and 4a }% \else \if\member K\relax% {\let\eee=\iii\let\fff=\jjj% \put(0,0){\hbonde}% bond between 8a and 4a in the other ring }% \else \if\member A%left aromatic circle \put(203,0){\circle{240}}% %circle \else \if\member B%left aromatic circle \put(203,-342){\circle{240}}% %circle \else \expandafter\twoCH@@R\member//% \def\aax{8a} \def\aay{4a} \def\aaz{10}% \if\@@tmpa 4\relax% \putratom{272}{-18}{\@@tmpb}% % right type \else\if\@@tmpa 1\relax% \putratom{68}{-18}{\@@tmpb}% % right type \else\if\@@tmpa 3\relax% \putratom{233}{60}{\@@tmpb}% % right type \else\if\@@tmpa 2\relax% \putratom{120}{60}{\@@tmpb}% % right type \else\ifx\@@tmpa\aaz\relax% \putratom{120}{-110}{\@@tmpb}% % right type \else\ifx\@@tmpa\aax\relax% \putratom{120}{-110}{\@@tmpb}% % right type \else\ifx\@@tmpa\aay\relax \putratom{233}{-110}{\@@tmpb}% % right type \else\if\@@tmpa 9\relax% \putratom{233}{-110}{\@@tmpb}% % right type \else\if\@@tmpa 5\relax% \putratom{272}{-360}{\@@tmpb}% % right type \else\if\@@tmpa 8\relax% \putratom{68}{-360}{\@@tmpb}% % right type \else\if\@@tmpa 6\relax% \putratom{233}{-452}{\@@tmpb}% % right type \else\if\@@tmpa 7\relax% \putratom{120}{-452}{\@@tmpb}% % right type \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% % *********************** % * setting fused rings * % *********************** \expandafter\twoCH@R\member//% \set@fusion@decah \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% \fi\fi\fi\fi\fi\fi}% % \end{macrocode} % % \changes{v2.00a}{2000/11/11}{The % \cs{iniflag} command is added to 5- and 8-substitution.} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%% % % setting hetero atoms % % %%%%%%%%%%%%%%%%%%%%%%%% \iniflag \put(0,0){\set@hetatom@sixh{#3}{0}{0}{5}{0}% \if@aclip \global\@acliptrue\fi \if@bclip \global\@bcliptrue\fi \if@cclip \global\@ccliptrue\fi \if@clip \global\@cliptrue\fi}% %substituents on 1 to 4 \put(0,-342){\iniflag%2000/11/11 by Shinsaku Fujita \set@hetatom@sixh{#3}{-1}{3}{7}{0}% \@gclipfalse \if@fclip \global\@gcliptrue \fi% \@fclipfalse \if@eclip \global\@fcliptrue \fi% \@eclipfalse \if@clip \global\@ecliptrue \fi}%substituents on 5 to 7 \put(0,-342){\iniflag%2000/11/11 by Shinsaku Fujita \set@hetatom@sixh{#3}{-7}{0}{2}{0}% \@hclipfalse \if@aclip \global\@hcliptrue \fi}%%substituent on 8 \put(0,0){\set@vrtx@fuseh{#3}% \if@iclip \global\@icliptrue \fi \if@jclip \global\@jcliptrue \fi}% fused positions % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % setting substituents and exocyclic bonds % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \put(0,0){\setsixringh{#4}{0}{0}{5}{0}}% %substituents on 1 to 4 {\@clipfalse \if@eclip \@cliptrue \fi% %substituents on 5 to 7 \@eclipfalse \if@fclip \@ecliptrue \fi% \@fclipfalse \if@gclip \@fcliptrue \fi% \put(0,-342){\setsixringh{#4}{-1}{3}{7}{0}}% }% {\@aclipfalse \if@hclip \@acliptrue \fi% %substituent on 8 \put(0,-342){\setsixringh{#4}{-7}{0}{2}{0}}% }% {\@clipfusefalse \if@iclip \@clipfusetrue \fi% \put(303,-171){\setatombond{#4}{-8}{4}} %9 for 4a position }% {\@clipfusefalse \if@jclip \@clipfusetrue \fi% \put(103,-171){\setatombond{#4}{-9}{10}} %10 for 8a position }% \end{picture}\iniatom\iniflag}% %end of \decaheteroh macro % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % The command |\ylhetpositionh| is used in the |\decaheteroh| command, % giving the sift values for drawing a structure as a substituent. % \changes{v1.02}{1998/10/16}{Newly added command} % % \begin{macro}{\ylhetpositionh} % \begin{macrocode} \def\ylhetpositionh#1#2#3#4#5{% \@@ylswfalse%%%\@reset@ylsw \@forsemicol\member:=#1\do{% \if@@ylsw\else \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax \expandafter\threech@r\@membera{}{}\relax \ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi \if@@ylsw \ifnum#5<0\relax% \@tmpaa=-\@tmpa\relax \advance\@tmpaa by#2\relax% \else\@tmpaa=\@tmpa\relax \advance\@tmpaa by#2\relax\fi \ifnum\@tmpaa>#3\relax% \ifnum\@tmpaa<#4\relax% \ifcase\@tmpaa%0 omit \or \ifx\aaa\empty \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%\@ylatrue% subst. on 1 \else \gdef\@ylii{30}\gdef\@yli{0}\global\@ylswtrue%\@ylatrue% subst. on 1 \fi \or \ifx\bbb\empty \gdef\@ylii{-103}\gdef\@yli{-171}\global\@ylswtrue%\@ylbtrue% subst. on 2 \else \gdef\@ylii{-73}\gdef\@yli{-223}\global\@ylswtrue%\@ylbtrue% subst. on 2 \fi \or \ifx\ccc\empty \gdef\@ylii{-303}\gdef\@yli{-171}\global\@ylswtrue%\@ylctrue% subst. on 3 \else \gdef\@ylii{-333}\gdef\@yli{-223}\global\@ylswtrue%\@ylctrue% subst. on 3 \fi \or \ifx\ddd\empty \gdef\@ylii{-406}\gdef\@yli{0}\global\@ylswtrue%\@yldtrue% subst. on 4 \else \gdef\@ylii{-436}\gdef\@yli{0}\global\@ylswtrue%\@yldtrue% subst. on 4 \fi \or \ifx\eee\empty \gdef\@ylii{-303}\gdef\@yli{171}\global\@ylswtrue%\@yletrue% subst. on 5 \else \gdef\@ylii{-333}\gdef\@yli{223}\global\@ylswtrue%\@yletrue% subst. on 5 \fi \or \ifx\fff\empty \gdef\@ylii{-103}\gdef\@yli{171}\global\@ylswtrue%\@ylftrue% subst. on 6 \else \gdef\@ylii{-73}\gdef\@yli{223}\global\@ylswtrue%\@ylftrue% subst. on 6 \fi \fi%end of ifcase \fi\fi\fi\fi\fi}}% % \end{macrocode} % \end{macro} % % \subsection{Inverse horizontal type} % % The standard skeleton of a six-to-six fused heterocycle is selected % to have the following locant numbers. % % \begin{verbatim} % ************************************ % * decahetero derivatives * % * (horizonatl type, inverse type) * % ************************************ % The following numbering is adopted in this macro. % % 3 2 % % *4 1 (*4 origin) % % (8)4a 8a(10) % % 5 8 % % 6 7 % ____ ____ % |cf. | % | 5 (9) 4 | % | * 4a * | % | 6 * * * * 3 | % | | | | | % | | | | | % | 7 * * * * 2 | % | * 8a * | % | 8 (9) 1 | % | ^ | % | | | % | the original point | % |____ ____| % \end{verbatim} % % The macro |\decaheterohi| has two arguments |ATOMLIST| and |SUBSLIST| % as well as an optional argument |BONDLIST|. % Two optional arguments |SKBONDLIST| and |OMIT| are added to % treat stereochemical information or other bond situations. % % \begin{verbatim} % \decaheterohi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] % \end{verbatim} % % 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. % % \begin{verbatim} % BONDLIST: list of bonds % % none or r : decahetero (right-handed) % l : no action % [] : fully saturated form % a : 1,2-double bond b : 2,3-double bond % c : 4,3-double bond d : 4,4a-double bond % e : 4a,5-double bond f : 5,6-double bond % g : 6,7-double bond h : 7,8-double bond % i : 8,8a-double bond j : 1,8a-double bond % k : 4a,8a-double bond % K : 4a,8a-double bond in the other ring % A : aromatic circle B : aromatic circle % {n+} : plus at the n-nitrogen atom (n = 1 to 10) % \end{verbatim} % % 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. % % \begin{verbatim} % 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 % \end{verbatim} % % 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. % % \begin{verbatim} % 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 % \end{verbatim} % % The argument |OMIT| represents one or more bonds to be omitted. % The omitted edges may be regarded as both fused and non-fused % positions. % % \begin{verbatim} % OMIT: one or more bonds omitted (a to k; see BONDLIST) % \end{verbatim} % % Several examples are shown as follows. % \begin{verbatim} % e.g. % % \decaheterohi{1==N}{1==Cl;2==F} % \decaheterohi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} % \decaheterohi[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl} % \end{verbatim} % % The definition of |\decaheterohi| uses a picture environment and % consists of the same unit processes as shown in |\sixheterov|: % \begin{enumerate} % \item treatment of atom list, % \item placing outer skeletons, % \item placing inner double bonds, % \item setting hetero atoms, and % \item placing substituents by using |\setsixringh| several times. % \end{enumerate} % \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw}, % \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, % \cs{yl@xdiff} and \cs{yl@ydiff}} % \changes{v2.00}{1998/12/1}{Add: spiro and fused rings} % % \begin{macro}{\decaheterohi} % \begin{macro}{\@deca@heterohi} % \begin{macro}{\@deca@@heterohi} % \begin{macro}{\@decaheterohi} % \begin{macrocode} \def\decaheterohi{\@ifnextchar({\@deca@heterohi(@}{\@deca@heterohi(@)}} \def\@deca@heterohi(#1){\@ifnextchar[{\@deca@@heterohi(#1)[@}% {\@deca@@heterohi(#1)[@]}} \def\@deca@@heterohi(#1)[#2]#3#4{\@ifnextchar[% {\@decaheterohi(#1)[#2]{#3}{#4}[@}% {\@decaheterohi(#1)[#2]{#3}{#4}[@]}} \def\@decaheterohi(#1)[#2]#3#4[#5]{% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%%%% % % treatment of atom list % % %%%%%%%%%%%%%%%%%%%%%%%%%% \iniflag\iniatom% \test@vertix@decavi{#3}% % %%%%%%%%%%%%%%%%%%%%%%% % % adjustment for (yl) % % %%%%%%%%%%%%%%%%%%%%%%% \@reset@ylsw% \ylhetpositionh{#4}{5}{0}{5}{-1}% %substituents on 1 to 4 \if@ylsw \ifx\@@ylii\empty \def\@@ylii{0}\def\@@yli{0}\fi \else {\let\ddd=\eee\let\eee=\fff\let\fff=\ggg \ylhetpositionh{#4}{12}{3}{7}{-1}% %substituents on 6 to 8 }% \fi \if@ylsw \ifx\@@ylii\empty \def\@@ylii{0}\def\@@yli{342}\fi \else {\let\aaa=\hhh \ylhetpositionh{#4}{-4}{0}{2}{0}% %substituent on 5 }% \fi \if@ylsw \ifx\@@ylii\empty \def\@@ylii{0}\def\@@yli{342}\fi \else {% \clipdetection% \@clipfusefalse \if@iclip \@clipfusetrue \fi% \ylatombondposition{#4}{-9}{4}% %10 for 8a position }% \fi \if@ylsw \ifx\@@ylii\empty \def\@@ylii{-303}\def\@@yli{171}\fi \else {% \clipdetection% \@clipfusefalse \if@jclip \@clipfusetrue \fi% \ylatombondposition{#4}{-8}{10}% %9 for 4a position }% \fi \if@ylsw \ifx\@@ylii\empty \def\@@ylii{-103}\def\@@yli{171}\fi \fi \if@ylsw \yl@shiftii=\@ylii \yl@shifti=\@yli \advance\yl@shiftii\@@ylii \advance\yl@shifti\@@yli \advance\yl@shiftii\yl@xdiff \advance\yl@shifti\yl@ydiff \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti) \reset@yl@xydiff%1999/1/6 by S. Fujita \else \begin{picture}(1200,1200)(-400,-800)% \iforigpt \put(-\shiftii,-\shiftiii){\circle*{50}}% \put(-\noshift,-\noshift){\circle{50}}% \typeout{command `decaheterohi' origin: % (\the\noshift,\the\noshift) ---> (\the\shiftii,\the\shiftiii)}\fi% \fi % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%% % % outer skeleton % % %%%%%%%%%%%%%%%%%% \begingroup \resetbdsw% \@bond@@omit{#5}% {\let\fff=\jjj \let\eee=\iii% \set@skel@bondh{#1}{a}{c}% bond between 1 and 2 \@aaa -> \hskbondc etc \set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc \set@skel@bondh{#1}{c}{a}% bond between 3 and 4 \@ccc -> \hskbonda etc \set@skel@bondh{#1}{d}{f}% bond between 4 and 4a \@ddd -> \hskbondf etc \set@skel@bondh{#1}{k}{e}% bond between 4a and 8a \@kkk -> \hskbonde etc \set@skel@bondh{#1}{j}{d}% bond between 8a and 1 \@jjj -> \hskbondd etc }% {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\ggg% \let\ccc=\iii\let\bbb=\jjj% \put(0,-342){\set@skel@bondh{#1}{e}{a}}% % bond between 4a and 5 \@eee -> \hskbonda etc \put(0,-342){\set@skel@bondh{#1}{i}{c}}% % bond between 8a and 8 \@iii -> \hskbondc etc \put(0,-342){\set@skel@bondh{#1}{h}{d}}% % bond between 7 and 8 \@hhh -> \hskbondd etc \put(0,-342){\set@skel@bondh{#1}{g}{e}}% % bond between 6 and 7 \@ggg -> \hskbonde etc \put(0,-342){\set@skel@bondh{#1}{f}{f}}% % bond between 5 and 6 \@fff -> \hskbondf etc }% \endgroup % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%% % % inner double bond % % %%%%%%%%%%%%%%%%%%%%% \@tfor\member:=#2\do{% \if\member r\relax% {\let\fff=\jjj \let\eee=\iii% \put(0,0){\hbonda}% bond between 1 and 2 \put(0,0){\hbondc}% bond between 3 and 4 }% {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\ggg% \let\ccc=\iii\let\bbb=\jjj% \put(0,-342){\hbondb}% bond between 8a and 4a \put(0,-342){\hbondf}% bond between 8 and 7 \put(0,-342){\hbondd}% bond between 5 and 6 }% \else \if\member l\relax% \else \if\member a\relax% \put(0,0){\hbondc}% bond between 3 and 4 \else \if\member b\relax \put(0,0){\hbondb}% bond between 2 and 3 \else \if\member c\relax \put(0,0){\hbonda}% bond between 1 and 2 \else \if\member d\relax% {\let\fff=\jjj% \put(0,0){\hbondf}% bond between 1 and 8a }% \else \if\member e\relax% {\let\aaa=\hhh \let\bbb=\jjj% \put(0,-342){\hbonda}% bond between 8 and 8a }% \else \if\member f\relax% {\let\aaa=\hhh \let\fff=\ggg% \put(0,-342){\hbondf}% bond between 8 and 7 }% \else \if\member g\relax% {\let\eee=\fff \let\fff=\ggg% \put(0,-342){\hbonde}% bond between 6 and 7 }% \else \if\member h\relax% {\let\ddd=\eee \let\eee=\fff% \put(0,-342){\hbondd}% bond between 5 and 6 }% \else \if\member i\relax% {\let\ccc=\iii \let\ddd=\eee% \put(0,-342){\hbondc}% bond between 5 and 4a }% \else \if\member j\relax% {\let\eee=\iii% \put(0,0){\hbondd}% bond between 4 and 4a }% \else \if\member k\relax% {\let\ccc=\iii\let\bbb=\jjj% \put(0,-342){\hbondb}% bond between 8a and 4a }% \else \if\member K\relax% {\let\eee=\iii\let\fff=\jjj% \put(0,0){\hbonde}% bond between 8a and 4a }% \else \if\member A%left aromatic circle \put(203,0){\circle{240}}% %circle \else \if\member B%left aromatic circle \put(203,-342){\circle{240}}% %circle \else \expandafter\twoCH@@R\member//% \def\aax{8a}\def\aay{4a}\def\aaz{10}% \if\@@tmpa 4\relax% \putratom{68}{-18}{\@@tmpb}% % right type \else\if\@@tmpa 1\relax% \putratom{272}{-18}{\@@tmpb}% % right type \else\if\@@tmpa 3\relax% \putratom{120}{60}{\@@tmpb}% % right type \else\if\@@tmpa 2\relax% \putratom{233}{60}{\@@tmpb}% % right type \else\ifx\@@tmpa\aaz\relax% \putratom{233}{-110}{\@@tmpb}% % right type \else\ifx\@@tmpa\aax\relax% \putratom{233}{-110}{\@@tmpb}% % right type \else\ifx\@@tmpa\aay\relax% \putratom{120}{-110}{\@@tmpb}% % right type \else\if\@@tmpa 9\relax% \putratom{120}{-110}{\@@tmpb}% % right type \else\if\@@tmpa 5\relax% \putratom{68}{-360}{\@@tmpb}% % right type \else\if\@@tmpa 8\relax% \putratom{272}{-360}{\@@tmpb}% % right type \else\if\@@tmpa 6\relax% \putratom{120}{-452}{\@@tmpb}% % right type \else\if\@@tmpa 7\relax% \putratom{233}{-452}{\@@tmpb}% % right type \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% % *********************** % * setting fused rings * % *********************** \expandafter\twoCH@R\member//% \set@fusion@decahi \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% \fi\fi\fi\fi\fi\fi}% % \end{macrocode} % % \changes{v2.00a}{2000/11/11}{The % \cs{iniflag} command is added to 8-substitution.} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%% % % setting hetero atoms % % %%%%%%%%%%%%%%%%%%%%%%%% \iniflag \@tmpclipfalse \put(0,0){\set@hetatom@sixh{#3}{5}{0}{5}{-1}% \if@aclip \global\@acliptrue\fi \if@bclip \global\@bcliptrue\fi \if@cclip \global\@ccliptrue\fi \if@clip \global\@cliptrue\fi }% %substituents on 1 to 4 \put(0,-342){\iniflag%2000/11/11 by Shinsaku Fujita \set@hetatom@sixh{#3}{12}{3}{7}{-1}% \@gclipfalse \if@fclip \global\@gcliptrue \fi% \@fclipfalse \if@eclip \global\@fcliptrue \fi% \@eclipfalse \if@clip \global\@ecliptrue \fi% }%substituents on 6 to 8 \put(0,-342){\set@hetatom@sixh{#3}{-4}{0}{2}{0}% \@aclipfalse \if@aclip \global\@hcliptrue \fi% }%%substituent on 5 \put(0,0){\set@vrtx@decafusehi{#3}% \@tmpclipfalse \if@iclip \global\@tmpcliptrue \fi \if@jclip \global\@icliptrue \fi \if@tmpclip \global\@jcliptrue \fi }% fused positions % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % setting substituents and exocyclic bonds % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \put(0,0){\setsixringh{#4}{5}{0}{5}{-1}}% %substituents on 1 to 4 {\@clipfalse \if@eclip \@cliptrue \fi% %substituents on 6 to 8 \@eclipfalse \if@fclip \@ecliptrue \fi% \@fclipfalse \if@gclip \@fcliptrue \fi% \put(0,-342){\setsixringh{#4}{12}{3}{7}{-1}}% }% {\@aclipfalse \if@hclip \@acliptrue \fi% %substituent on 5 \put(0,-342){\setsixringh{#4}{-4}{0}{2}{0}}% }% {\@clipfusefalse \if@iclip \@clipfusetrue \fi% \put(303,-171){\setatombond{#4}{-9}{4}}% %10 for 8a position }% {\@clipfusefalse \if@jclip \@clipfusetrue \fi \put(103,-171){\setatombond{#4}{-8}{10}}% %9 for 4a position }% \end{picture}\iniatom\iniflag}% %end of \decaheterohi macro % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % The macro |\set@vrtx@decafusehi| is an inner command contained % in the definition of |\decaheterohi|, where the macro is used to set % a hetero atom or on a vertex of a bridgehead location. % % \begin{macro}{\set@vrtx@decafusehi} % \begin{macrocode} \def\set@vrtx@decafusehi#1{% \@forsemicol\member:=#1\do{% \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax% \expandafter\twoch@r\@membera{}% \ifcase\@tmpa\or\or\or \or%%%%4 \if\@tmpb a% \global\@icliptrue% \putlatom{135}{-211}{\@memberb}% % left type \else\if\@tmpb h% \XyMTeXWarning{Forbidden fused position `4a' or `9'}% \else\if\@tmpb s% \XyMTeXWarning{Forbidden fused position `4a' or `9'}% \else\ifx\@tmpb\empty\relax \else \XyMTeXWarning{Forbidden fused position `4a' or `9'}% \fi\fi\fi\fi \or\or\or \or%8 \if\@tmpb a% \global\@jcliptrue% \putratom{273}{-211}{\@memberb}% % right type \else\if\@tmpb h% \XyMTeXWarning{Forbidden fused position `8a' or `10'}% \else\if\@tmpb s% \XyMTeXWarning{Forbidden fused position `8a' or `10'}% \else\ifx\@tmpb\empty\relax \else \XyMTeXWarning{Forbidden fused position `8a' or `10'}% \fi\fi\fi\fi \or%9 (= 4a) \ifx\@tmpb\empty% \global\@icliptrue% \putlatom{135}{-211}{\@memberb}% % left type \else \XyMTeXWarning{Forbidden fused position `4a' or `9'}% \fi \or%10 (= 8a) \ifx\@tmpb\empty% \global\@jcliptrue% \putratom{273}{-211}{\@memberb}% % right type \else \XyMTeXWarning{Forbidden fused position `8a' or `10'}% \fi \fi\fi}% }% end of the macro \set@vrtx@decafusehi % \end{macrocode} % \end{macro} % % The macro |\set@fusion@decahi| is an inner command contained % in the definition of |\decaheterohi|, where % the macro is used for setting an additive % or a fused ring at each bond (designated by |\@@tmpa|). The % fused ring is typeset by the inner command |\set@fusionadd@sixhi|. % % \begin{macro}{\set@fusion@decahi} % \changes{v2.00}{1998/11/15}{New command: \cs{set@fusion@decahi}} % \begin{macrocode} \def\set@fusion@decahi{% \let\@@tmpa=\@tmpa \let\@@tmpb=\@tmpb \if\@tmpa a% \let\@@tmpa=\@tmpa \put(0,0){\set@fusionadd@sixhi}% \else\if\@tmpa A% \let\@@tmpa=\@tmpa \put(0,0){\set@fusionadd@sixhi}% \else\if\@tmpa b% \let\@@tmpa=\@tmpa \put(0,0){\set@fusionadd@sixhi}% \else\if\@tmpa B% \let\@@tmpa=\@tmpa \put(0,0){\set@fusionadd@sixhi}% \else\if\@tmpa c% \let\@@tmpa=\@tmpa \put(0,0){\set@fusionadd@sixhi}% \else\if\@tmpa C% \let\@@tmpa=\@tmpa \put(0,0){\set@fusionadd@sixhi}% \else\if\@tmpa d% \let\@@tmpa=\@tmpa \put(0,0){\set@fusionadd@sixhi}% \if@smallringsw\else \XyMTeXWarning{Unfavorable Fusion for bond `d'}% \fi \else\if\@tmpa D% \let\@@tmpa=\@tmpa \put(0,0){\set@fusionadd@sixhi}% \if@smallringsw\else \XyMTeXWarning{Unfavorable Fusion for bond `D'}% \fi \else\if\@tmpa e% \edef\@@tmpa{c}% \put(0,-342){\set@fusionadd@sixhi}% \if@smallringsw\else \XyMTeXWarning{Unfavorable Fusion for bond `e'}% \fi \else\if\@tmpa E% \edef\@@tmpa{C}% \put(0,-342){\set@fusionadd@sixhi}% \if@smallringsw\else \XyMTeXWarning{Unfavorable Fusion for bond `E'}% \fi \else\if\@tmpa f% \edef\@@tmpa{d}% \put(0,-342){\set@fusionadd@sixhi}% \else\if\@tmpa F% \edef\@@tmpa{D}% \put(0,-342){\set@fusionadd@sixhi}% \else\if\@tmpa g% \edef\@@tmpa{e}% \put(0,-342){\set@fusionadd@sixhi}% \else\if\@tmpa G% \edef\@@tmpa{E}% \put(0,-342){\set@fusionadd@sixhi}% \else\if\@tmpa h% \edef\@@tmpa{f}% \put(0,-342){\set@fusionadd@sixhi}% \else\if\@tmpa H% \edef\@@tmpa{F}% \put(0,-342){\set@fusionadd@sixhi}% \else\if\@tmpa i% \edef\@@tmpa{a}% \put(0,-342){\set@fusionadd@sixhi}% \if@smallringsw\else \XyMTeXWarning{Unfavorable Fusion for bond `i'}% \fi \else\if\@tmpa I% \edef\@@tmpa{A}% \put(0,-342){\set@fusionadd@sixhi}% \if@smallringsw\else \XyMTeXWarning{Unfavorable Fusion for bond `I'}% \fi \else\if\@tmpa j% \edef\@@tmpa{f}% \put(0,0){\set@fusionadd@sixhi}% \if@smallringsw\else \XyMTeXWarning{Unfavorable Fusion for bond `j'}% \fi \else\if\@tmpa J% \edef\@@tmpa{F}% \put(0,0){\set@fusionadd@sixhi}% \if@smallringsw\else \XyMTeXWarning{Unfavorable Fusion for bond `J'}% \fi \else\if\@tmpa k% \edef\@@tmpa{e}% \put(0,0){\set@fusionadd@sixhi}% \if@smallringsw\else \XyMTeXWarning{Forbidden Fusion for bond `k'}% \fi \else\if\@tmpa K% \edef\@@tmpa{E}% \put(0,0){\set@fusionadd@sixhi}% \if@smallringsw\else \XyMTeXWarning{Forbidden Fusion for bond `K'}% \fi \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% }% end of the macro \set@fusion@decahi % \end{macrocode} % \end{macro} % % \subsection{Short-cut commands for fused heterocycles} % % The macro |\decaheteroh| can be used in the % form of a fixed |ATOMLIST|. Hence, the resulting commands for % drawing a fused heterocyle with one or more nitrogen atoms % have an argument |SUBSLIST| as well as an optional argument |BONDLIST|. % % \begin{verbatim} % **************************************************** % * heterocycles having two fused six-membered rings * % * (horizontal type) * % **************************************************** % % \quinolineh[BONDLIST]{SUBSLIST} % \quinolinehi[BONDLIST]{SUBSLIST} % \isoquinolineh[BONDLIST]{SUBSLIST} % \isoquinolinehi[BONDLIST]{SUBSLIST} % \quinoxalineh[BONDLIST]{SUBSLIST} % \quinazolineh[BONDLIST]{SUBSLIST} % \quinazolinehi[BONDLIST]{SUBSLIST} % \cinnolineh[BONDLIST]{SUBSLIST} % \cinnolinehi[BONDLIST]{SUBSLIST} % \pteridineh[BONDLIST]{SUBSLIST} % \pteridinehi[BONDLIST]{SUBSLIST} % \end{verbatim} % % The |BONDLIST| argument contains one % character selected from a to k, each of which indicates the presence of % an inner (endcyclic) double bond on the corresponding position. % The optiona `A' and `B' typeset aromatic circles. % The option % `$n+$' ($n=1$ to $10$) represents a plus charge on a hetero atom % at the $n$-position. % % \begin{verbatim} % 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) % \end{verbatim} % % 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. % % \begin{verbatim} % 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 % \end{verbatim} % % Several examples are shown as follows. % \begin{verbatim} % e.g. % % \quinolineh{2==Cl;3==F} % \end{verbatim} % % \begin{macro}{\quinolineh} % \begin{macro}{\quinolinehi} % \begin{macrocode} \def\quinolineh{% \@ifnextchar[{\@quinolineh[@}{\@quinolineh[acfhk]}}% \def\@quinolineh[#1]#2{% \iforigpt \typeout{command `quinolineh' % is based on `decaheteroh'.}\fi% \decaheteroh[#1]{1==N}{#2}}% \def\quinolinehi{% \@ifnextchar[{\@quinolinehi[@}{\@quinolinehi[acfhk]}}% \def\@quinolinehi[#1]#2{% \iforigpt \typeout{command `quinolinehi' % is based on `decaheterohi'.}\fi% \decaheterohi[#1]{1==N}{#2}}% % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\isoquinolineh} % \begin{macro}{\isoquinolinehi} % \begin{macrocode} \def\isoquinolineh{% \@ifnextchar[{\@isoquinolineh[@}{\@isoquinolineh[acfhk]}}% \def\@isoquinolineh[#1]#2{% \iforigpt \typeout{command `isoquinolineh' % is based on `decaheteroh'.}\fi% \decaheteroh[#1]{2==N}{#2}}% \def\isoquinolinehi{% \@ifnextchar[{\@isoquinolinehi[@}{\@isoquinolinehi[acfhk]}}% \def\@isoquinolinehi[#1]#2{% \iforigpt \typeout{command `isoquinolinehi' % is based on `decaheterohi'.}\fi% \decaheterohi[#1]{2==N}{#2}}% % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{quinoxalineh} % \begin{macrocode} \def\quinoxalineh{% \@ifnextchar[{\@quinoxalineh[@}{\@quinoxalineh[acfhk]}}% \def\@quinoxalineh[#1]#2{% \iforigpt \typeout{command `quinoxalineh' % is based on `decaheteroh'.}\fi% \decaheteroh[#1]{1==N;4==N}{#2}}% % \end{macrocode} % \end{macro} % % \begin{macro}{\quinazolineh} % \begin{macro}{\quinazolinehi} % \begin{macrocode} \def\quinazolineh{% \@ifnextchar[{\@quinazolineh[@}{\@quinazolineh[acfhk]}}% \def\@quinazolineh[#1]#2{% \iforigpt \typeout{command `quinazolineh' % is based on `decaheteroh'.}\fi% \decaheteroh[#1]{1==N;3==N}{#2}}% \def\quinazolinehi{% \@ifnextchar[{\@quinazolinehi[@}{\@quinazolinehi[acfhk]}}% \def\@quinazolinehi[#1]#2{% \iforigpt \typeout{command `quinazolinehi' % is based on `decaheterohi'.}\fi% \decaheterohi[#1]{1==N;3==N}{#2}}% % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\cinnolineh} % \begin{macro}{\cinnolinehi} % \begin{macrocode} \def\cinnolineh{% \@ifnextchar[{\@cinnolineh[@}{\@cinnolineh[acfhk]}}% \def\@cinnolineh[#1]#2{% \iforigpt \typeout{command `cinnolineh' % is based on `decaheteroh'.}\fi% \decaheteroh[#1]{1==N;2==N}{#2}}% \def\cinnolinehi{% \@ifnextchar[{\@cinnolinehi[@}{\@cinnolinehi[acfhk]}}% \def\@cinnolinehi[#1]#2{% \iforigpt \typeout{command `cinnolinehi' % is based on `decaheterohi'.}\fi% \decaheterohi[#1]{1==N;2==N}{#2}}% % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\pteridineh} % \begin{macro}{\pteridinehi} % \begin{macrocode} \def\pteridineh{% \@ifnextchar[{\@pteridineh[@}{\@pteridineh[acfhk]}}% \def\@pteridineh[#1]#2{% \iforigpt \typeout{command `pteridineh' % is based on `decaheteroh'.}\fi% \decaheteroh[#1]{1==N;3==N;5==N;8==N}{#2}}% \def\pteridinehi{% \@ifnextchar[{\@pteridinehi[@}{\@pteridinehi[acfhk]}}% \def\@pteridinehi[#1]#2{% \iforigpt \typeout{command `pteridinehi' % is based on `decaheterohi'.}\fi% \decaheterohi[#1]{1==N;3==N;5==N;8==N}{#2}}% % \end{macrocode} % \end{macro} % \end{macro} % % \section{Six-to-five fused heterocycles} % \subsection{Horizontal type} % % The standard skeleton of a six-to-five fused heterocycle is selected % to have the following locant numbers. % % \begin{verbatim} % ************************** % * nonahetero derivatives * % * (horizontal type) * % ************************** % The following numbering is adopted in this macro. % % 3 2 % % 1 (*1 origin) % % (8)3a 7a(9) % % 4 7 % % 5 6 % ____ ____ % |cf. | % | 4 (8) | % | * 3a | % | 5 * * ----- 3 | % | | | | | % | | | | | % | 6 * * * * 2 | % | * 7a * | % | 7 (9) 1 | % | ^ | % | | | % | the original point | % |____ ____| % \end{verbatim} % % The macro |\nonaheteroh| has two arguments |ATOMLIST| and |SUBSLIST| % as well as an optional argument |BONDLIST|. % Two optional arguments |SKBONDLIST| and |OMIT| are added to % treat stereochemical information or other bond situations. % % \begin{verbatim} % \nonaheteroh(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] % \end{verbatim} % % 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. % % \begin{verbatim} % BONDLIST: list of bonds % % none or r : aromatic six-membered ring % [] : fully saturated form % a : 1,2-double bond b : 2,3-double bond % c : 3,3a-double bond d : 4,3a-double bond % e : 4,5-double bond f : 5,6-double bond % g : 6,7-double bond h : 7,7a-double bond % i : 1,7a-double bond % j : 3a,4a-double bond % J : 3a,4a-double bond in the other ring % A : aromatic circle (six-membered) % B : aromatic circle (five-membered) % {n+} : plus at the n-nitrogen atom (n = 1 to 9) % {0+} : plus (or others) at the center % of the five-membered cycle % \end{verbatim} % % 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. % % \begin{verbatim} % 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 % \end{verbatim} % % 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. % % \begin{verbatim} % 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 % \end{verbatim} % % The argument |OMIT| represents one or more bonds to be omitted. % The omitted edges may be regarded as both fused and non-fused % positions. % % \begin{verbatim} % OMIT: one or more bonds omitted (a to j; see BONDLIST) % \end{verbatim} % % Several examples are shown as follows. % \begin{verbatim} % e.g. % % \nonaheteroh{1==N}{1==Cl;2==F} % \nonaheteroh[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} % \end{verbatim} % % The definition of |\nonaheteroh| uses a picture environment and % consists of the same unit processes as shown in |\sixheteroh|: % \begin{enumerate} % \item treatment of atom list, % \item placing outer skeletons, % \item placing inner double bonds, % \item setting hetero atoms, and % \item placing substituents by using |\setsixringh| several times in % a restricted fashion. % \end{enumerate} % \changes{v1.02}{1998/10/31}{Adding \cs{ylpositionh}, \cs{if@ylsw}, % \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, % \cs{yl@xdiff} and \cs{yl@ydiff}} % \changes{v2.00}{1998/12/05}{Add: fused and spiro rings} % % \begin{macro}{\nonaheteroh} % \begin{macro}{\@nona@heteroh} % \begin{macro}{\@nona@@heteroh} % \begin{macro}{\@nonaheteroh} % \begin{macrocode} \def\nonaheteroh{\@ifnextchar({\@nona@heteroh(@}{\@nona@heteroh(@)}} \def\@nona@heteroh(#1){\@ifnextchar[{\@nona@@heteroh(#1)[@}% {\@nona@@heteroh(#1)[@]}} \def\@nona@@heteroh(#1)[#2]#3#4{\@ifnextchar[% {\@nonaheteroh(#1)[#2]{#3}{#4}[@}% {\@nonaheteroh(#1)[#2]{#3}{#4}[@]}} \def\@nonaheteroh(#1)[#2]#3#4[#5]{% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%%%% % % treatment of atom list % % %%%%%%%%%%%%%%%%%%%%%%%%%% \iniflag\iniatom% \test@vertix@nonav{#3}% % %%%%%%%%%%%%%%%%%%%%%%% % % adjustment for (yl) % % %%%%%%%%%%%%%%%%%%%%%%% \@reset@ylsw% \ylpositionh{#4}{5}{1}{5}{-1}% %substituents on 1 to 3 \if@ylsw \ifx\@@ylii\empty \def\@@ylii{0}\def\@@yli{0}\fi \else {\let\ddd=\eee\let\eee=\fff\let\fff=\ggg \ylpositionh{#4}{11}{3}{7}{-1}% %substituents on 5 to 7 }% \fi \if@ylsw \ifx\@@ylii\empty \def\@@ylii{0}\def\@@yli{342}\fi \else {\let\aaa=\hhh \ylpositionh{#4}{-3}{0}{2}{0}%%substituent on 4 }% \fi \if@ylsw \ifx\@@ylii\empty \def\@@ylii{0}\def\@@yli{342}\fi \else {% \clipdetection% \@clipfusefalse \if@iclip \@clipfusetrue \fi% \ylatombondposition{#4}{-8}{4}% %9 for 7a position }% \fi \if@ylsw \ifx\@@ylii\empty \def\@@ylii{-303}\def\@@yli{171}\fi \else {% \clipdetection% \@clipfusefalse \if@jclip \@clipfusetrue \fi% \ylatombondposition{#4}{-7}{10}% %8 for 3a position }% \fi \if@ylsw \ifx\@@ylii\empty \def\@@ylii{-103}\def\@@yli{171}\fi \fi \if@ylsw \yl@shiftii=\@ylii \yl@shifti=\@yli \advance\yl@shiftii\@@ylii \advance\yl@shifti\@@yli \advance\yl@shiftii\yl@xdiff \advance\yl@shifti\yl@ydiff \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti) \reset@yl@xydiff%1999/1/6 by S. Fujita \else \begin{picture}(1200,1200)(-400,-800)% \iforigpt \put(-\shiftii,-\shiftiii){\circle*{50}}% \put(-\noshift,-\noshift){\circle{50}}% \typeout{command `nonahetero' origin: % (\the\noshift,\the\noshift) ---> (\the\shiftii,\the\shiftiii)}\fi% \fi % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%% % % outer skeleton % % %%%%%%%%%%%%%%%%%% \begingroup \resetbdsw% \@bond@@omit{#5}% {\let\fff=\jjj \let\eee=\iii% \set@skel@bondh{#1}{a}{c}% bond between 1 and 2 \@aaa -> \hskbondc etc \set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc \set@skel@longbond{#1}{c}{hskbondvert}% % bond between 3 and 3a \@ccc -> \hskbondhoriz etc \set@skel@bondh{#1}{j}{e}% bond between 3a and 7a \@jjj -> \hskbonde etc \set@skel@bondh{#1}{i}{d}% bond between 7a and 1 \@iii -> \hskbondd etc }% {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\ggg \let\ccc=\iii\let\bbb=\jjj% \put(0,-342){\set@skel@bondh{#1}{d}{a}}% % bond between 3a and 4 \@ddd -> \hskbonda etc \put(0,-342){\set@skel@bondh{#1}{h}{c}}% % bond between 7a and 7 \@hhh -> \hskbondc etc \put(0,-342){\set@skel@bondh{#1}{g}{d}}% % bond between 6 and 7 \@ggg -> \hskbondd etc \put(0,-342){\set@skel@bondh{#1}{f}{e}}% % bond between 5 and 6 \@fff -> \hskbonde etc \put(0,-342){\set@skel@bondh{#1}{e}{f}}% % bond between 4 and 5 \@eee -> \hskbondf etc }% \endgroup % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%% % % inner double bond % % %%%%%%%%%%%%%%%%%%%%% \@tfor\member:=#2\do{% \if\member r\relax% {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\ggg% \let\ccc=\iii\let\bbb=\jjj% \put(0,-342){\hbondb}% bond between 3a and 7a \put(0,-342){\hbondf}% bond between 4 and 5 \put(0,-342){\hbondd}% bond between 6 and 7 }% \else \if\member l\relax% \else \if\member a\relax% \put(0,0){\hbondc}% bond between 3 and 4 \else \if\member b\relax% \put(0,0){\hbondb}% bond between 2 and 3 \else \if\member c\relax% \put(0,0){\hbondvert}% bond between 3 and 3a \else \if\member d\relax% {\let\aaa=\hhh \let\bbb=\jjj% \put(0,-342){\hbonda}% bond between 4 and 3a }% \else \if\member e\relax% {\let\aaa=\hhh \let\fff=\ggg% \put(0,-342){\hbondf}% bond between 4 and 5 }% \else \if\member f\relax% {\let\eee=\fff \let\fff=\ggg% \put(0,-342){\hbonde}% bond between 5 and 6 }% \else \if\member g\relax% {\let\ddd=\eee \let\eee=\fff% \put(0,-342){\hbondd}% bond between 6 and 7 }% \else \if\member h\relax% {\let\ccc=\iii \let\ddd=\eee% \put(0,-342){\hbondc}% bond between 7 and 7a }% \else \if\member i\relax% {\let\eee=\iii% \put(0,0){\hbondd}% bond between 1 and 7a }% \else \if\member j\relax% {\let\ccc=\iii\let\bbb=\jjj% \put(0,-342){\hbondb}% bond between 7a and 3a }% \else \if\member J\relax% {\let\eee=\iii\let\fff=\jjj% \put(0,0){\hbonde}% bond between 7a and 3a }% \else \if\member B%left aromatic circle \put(233,0){\circle{180}}% %circle (five-membered) \else \if\member A%left aromatic circle \put(203,-342){\circle{240}}% %circle (six-membered) \else \expandafter\twoCH@@R\member//% \def\aax{3a} \def\aay{7a}% \if\@@tmpa 1\relax% \putratom{272}{-18}{\@@tmpb}% % right type \else\if\@@tmpa 2\relax% \putratom{233}{60}{\@@tmpb}% % right type \else\if\@@tmpa 3\relax% \putratom{120}{60}{\@@tmpb}% % right type \else\if\@@tmpa 4\relax% \putratom{68}{-360}{\@@tmpb}% % right type \else\if\@@tmpa 5\relax% \putratom{120}{-452}{\@@tmpb}% % right type \else\if\@@tmpa 6\relax% \putratom{233}{-452}{\@@tmpb}% % right type \else\if\@@tmpa 7\relax% \putratom{272}{-360}{\@@tmpb}% % right type \else\if\@@tmpa 8\relax% \putratom{120}{-110}{\@@tmpb}% % right type \else\ifx\@@tmpa\aax\relax% \putratom{120}{-110}{\@@tmpb}% % right type \else\ifx\@@tmpa\aay\relax% \putratom{233}{-110}{\@@tmpb}% % right type \else\if\@@tmpa 9\relax% \putratom{233}{-110}{\@@tmpb}% % right type \else\if\@@tmpa 0\relax% \putratom{196}{-30}{\@@tmpb}% % right type \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% % *********************** % * setting fused rings * % *********************** \expandafter\twoCH@R\member//% \set@fusion@nonah \fi\fi\fi\fi\fi\fi\fi\fi\fi% \fi\fi\fi\fi\fi\fi}% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%% % % setting hetero atoms % % %%%%%%%%%%%%%%%%%%%%%%%% \iniflag \@tmpclipfalse \put(0,0){\set@hetatom@sixh{#3}{5}{1}{5}{-1}% \if@aclip \global\@acliptrue\fi \if@bclip \global\@bcliptrue\fi \if@cclip \global\@ccliptrue\fi }% %substituents on 1 to 3 \put(0,-342){\set@hetatom@sixh{#3}{11}{3}{7}{-1}% \@gclipfalse \if@fclip \global\@gcliptrue \fi% \@fclipfalse \if@eclip \global\@fcliptrue \fi% \@eclipfalse \if@clip \global\@ecliptrue \fi% }%substituents on 5 to 7 \put(0,-342){\set@hetatom@sixh{#3}{-3}{0}{2}{0}% \@aclipfalse \if@aclip \global\@hcliptrue \fi% }%%substituent on 4 \put(0,0){\set@vrtx@nonafuseh{#3}% \@tmpclipfalse \if@iclip \global\@tmpcliptrue \fi \if@jclip \global\@icliptrue \fi \if@tmpclip \global\@jcliptrue \fi }% fused positions % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % setting substituents and exocyclic bonds % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \put(0,0){\setsixringh{#4}{5}{1}{5}{-1}}% %substituents on 1 to 3 {\@clipfalse \if@eclip \@cliptrue \fi% %substituents on 5 to 7 \@eclipfalse \if@fclip \@ecliptrue \fi% \@fclipfalse \if@gclip \@fcliptrue \fi% \put(0,-342){\setsixringh{#4}{11}{3}{7}{-1}}% }% {\@aclipfalse \if@hclip \@acliptrue \fi% %substituent on 4 \put(0,-342){\setsixringh{#4}{-3}{0}{2}{0}}% }% {\@clipfusefalse \if@iclip \@clipfusetrue \fi% \put(303,-171){\setatombond{#4}{-8}{4}}% %9 for 7a position }% {\@clipfusefalse \if@jclip \@clipfusetrue \fi% \put(103,-171){\setatombond{#4}{-7}{10}}% %8 for 3a position }% \end{picture}\iniatom\iniflag}% %end of \nonaheteroh macro % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % The macro |\set@vrtx@nonafuseh| is an inner command contained % in the definition of |\nonaheteroh|, where the macro is used to set % a hetero atom on a vertex of a bridgehead location. % \changes{v2.00}{1998/12/05}{New command: \cs{set@vrtx@nonafuseh}} % % \begin{macro}{\set@vrtx@nonafuseh} % \begin{macrocode} \def\set@vrtx@nonafuseh#1{% \@forsemicol\member:=#1\do{% \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax% \expandafter\twoch@r\@membera{}% \ifcase\@tmpa\or\or \or%%%%3 \if\@tmpb a% \global\@icliptrue% \putlatom{135}{-211}{\@memberb}% % left type \else\if\@tmpb h% \XyMTeXWarning{Forbidden fused position `3a' or `8'}% \else\if\@tmpb s% \XyMTeXWarning{Forbidden fused position `3a' or `8'}% \else\ifx\@tmpb\empty\relax \else \XyMTeXWarning{Forbidden fused position `3a' or `8'}% \fi\fi\fi\fi \or\or\or \or%7 \if\@tmpb a% \global\@jcliptrue% \putratom{273}{-211}{\@memberb}% % right type \else\if\@tmpb h% \XyMTeXWarning{Forbidden fused position `7a' or `9'}% \else\if\@tmpb s% \XyMTeXWarning{Forbidden fused position `7a' or `9'}% \else\ifx\@tmpb\empty\relax \else \XyMTeXWarning{Forbidden fused position `7a' or `9'}% \fi\fi\fi\fi \or%8 (= 3a) \ifx\@tmpb\empty% \global\@icliptrue% \putlatom{135}{-211}{\@memberb}% % left type \else \XyMTeXWarning{Forbidden fused position `3a' or `8'}% \fi \or%9 (= 7a) \ifx\@tmpb\empty% \global\@jcliptrue% \putratom{273}{-211}{\@memberb}% % right type \else \XyMTeXWarning{Forbidden fused position `7a' or `9'}% \fi \fi\fi}% }% end of the macro \set@vrtx@nonafuseh % \end{macrocode} % \end{macro} % % \subsection{Inverse horizontal type} % % The standard skeleton of a six-to-five fused heterocycle is selected % to have the following locant numbers. % % \begin{verbatim} % ************************************ % * nonahetero derivatives * % * (horizontal type, inverse type) * % ************************************ % The following numbering is adopted in this macro. % % % 2 3 % % 1 % % (9)7a 3a(8) % % 7 4 % % 6 5 % ____ ____ % |cf. | % | 7 (9) 1 | % | * 7a * | % | 6 * * * * 2 | % | | | | | % | | | | | % | 5 * * ----- 3 | % | * 3a | % | 4 (8) | % | ^ | % | | | % | the original point | % |____ ____| % \end{verbatim} % % The macro |\nonaheterohi| has two arguments |ATOMLIST| and |SUBSLIST| % as well as an optional argument |BONDLIST|. % Two optional arguments |SKBONDLIST| and |OMIT| are added to % treat stereochemical information or other bond situations. % % \begin{verbatim} % \nonaheterohi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] % \end{verbatim} % % 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. % % \begin{verbatim} % % BONDLIST: list of bonds % % none or r : aromatic six-membered ring % [] : fully saturated form % a : 1,2-double bond b : 2,3-double bond % c : 3,3a-double bond d : 4,3a-double bond % e : 4,5-double bond f : 5,6-double bond % g : 6,7-double bond h : 7,7a-double bond % i : 1,7a-double bond % j : 3a,4a-double bond % J : 3a,4a-double bond in the other ring % A : aromatic circle (six-membered) % B : aromatic circle (five-membered) % {n+} : plus at the n-nitrogen atom (n = 1 to 9) % {0+} : plus (or others) at the center % of the five-membered cycle % \end{verbatim} % % 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. % % \begin{verbatim} % 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 % \end{verbatim} % % 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. % % \begin{verbatim} % 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 % \end{verbatim} % % The argument |OMIT| represents one or more bonds to be omitted. % The omitted edges may be regarded as both fused and non-fused % positions. % % \begin{verbatim} % OMIT: one or more bonds omitted (a to j; see BONDLIST) % \end{verbatim} % % Several examples are shown as follows. % \begin{verbatim} % e.g. % % \nonaheterohi{1==N}{1==Cl;2==F} % \nonaheterohi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} % \end{verbatim} % % The definition of |\nonaheterohi| uses a picture environment and % consists of the same unit processes as shown in |\sixheteroh|: % \begin{enumerate} % \item treatment of atom list, % \item placing outer skeletons, % \item placing inner double bonds, % \item setting hetero atoms, and % \item placing substituents by using |\setsixringh| several times in % a restricted fashion. % \end{enumerate} % \changes{v1.02}{1998/10/31}{Adding \cs{ylpositionh}, \cs{if@ylsw}, % \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, % \cs{yl@xdiff} and \cs{yl@ydiff}} % \changes{v2.00}{1998/12/05}{Add: fused and spiro rings} % % \begin{macro}{\nonaheterohi} % \begin{macro}{\@nona@heterohi} % \begin{macro}{\@nona@@heterohi} % \begin{macro}{\@nonaheterohi} % \begin{macrocode} \def\nonaheterohi{\@ifnextchar({\@nona@heterohi(@}{\@nona@heterohi(@)}} \def\@nona@heterohi(#1){\@ifnextchar[{\@nona@@heterohi(#1)[@}% {\@nona@@heterohi(#1)[@]}} \def\@nona@@heterohi(#1)[#2]#3#4{\@ifnextchar[% {\@nonaheterohi(#1)[#2]{#3}{#4}[@}% {\@nonaheterohi(#1)[#2]{#3}{#4}[@]}} \def\@nonaheterohi(#1)[#2]#3#4[#5]{% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%%%% % % treatment of atom list % % %%%%%%%%%%%%%%%%%%%%%%%%%% \iniflag\iniatom%initialize \test@vertix@nonavi{#3}% % %%%%%%%%%%%%%%%%%%%%%%% % % adjustment for (yl) % % %%%%%%%%%%%%%%%%%%%%%%% \@reset@ylsw% \ylpositionh{#4}{0}{0}{4}{0}% %substituents on 1 to 3 \if@ylsw \ifx\@@ylii\empty \def\@@ylii{0}\def\@@yli{0}\fi \else {\let\ddd=\eee\let\eee=\fff\let\fff=\ggg \ylpositionh{#4}{0}{3}{7}{0}%%substituents on 4 to 6 }% \fi \if@ylsw \ifx\@@ylii\empty \def\@@ylii{0}\def\@@yli{342}\fi \else {\let\aaa=\hhh \ylpositionh{#4}{-6}{0}{2}{0}%%substituent on 7 }% \fi \if@ylsw \ifx\@@ylii\empty \def\@@ylii{0}\def\@@yli{342}\fi \else {% \clipdetection% \@clipfusefalse \if@iclip \@clipfusetrue \fi% \ylatombondposition{#4}{-7}{4}% %8 for 3a position }% \fi \if@ylsw \ifx\@@ylii\empty \def\@@ylii{-303}\def\@@yli{171}\fi \else {% \clipdetection% \@clipfusefalse \if@jclip \@clipfusetrue \fi% \ylatombondposition{#4}{-8}{10}%%9 for 7a position }% \fi \if@ylsw \ifx\@@ylii\empty \def\@@ylii{-103}\def\@@yli{171}\fi \fi \if@ylsw \yl@shiftii=\@ylii \yl@shifti=\@yli \advance\yl@shiftii\@@ylii \advance\yl@shifti\@@yli \advance\yl@shiftii\yl@xdiff \advance\yl@shifti\yl@ydiff \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti) \reset@yl@xydiff%1999/1/6 by S. Fujita \else \begin{picture}(1200,1200)(-400,-800)% \iforigpt \put(-\shiftii,-\shiftiii){\circle*{50}}% \put(-\noshift,-\noshift){\circle{50}}% \typeout{command `nonaheterohi' origin: % (\the\noshift,\the\noshift) ---> (\the\shiftii,\the\shiftiii)}\fi% \fi % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%% % % outer skeleton % % %%%%%%%%%%%%%%%%%% \begingroup \resetbdsw% \@bond@@omit{#5}% {\let\fff=\jjj \let\eee=\iii% \set@skel@bondh{#1}{a}{a}% bond between 1 and 2 \@aaa -> \hskbonda etc \set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc \set@skel@longbond{#1}{c}{hskbondverti}% % bond between 3 and 3a \@ccc -> \hskbondverti etc \set@skel@bondh{#1}{j}{e}% bond between 3a and 7a \@jjj -> \hskbonde etc \set@skel@bondh{#1}{i}{f}% bond between 7a and 1 \@iii -> \hskbondf etc }% {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\ggg% \let\ccc=\iii\let\bbb=\jjj% \put(0,-342){\set@skel@bondh{#1}{h}{a}}% % bond between 7a and 7 \@hhh -> \hskbonda etc \put(0,-342){\set@skel@bondh{#1}{d}{c}}% % bond between 3a and 4 \@ddd -> \hskbondc etc \put(0,-342){\set@skel@bondh{#1}{e}{d}}% % bond between 4 and 5 \@eee -> \hskbondd etc \put(0,-342){\set@skel@bondh{#1}{f}{e}}% % bond between 5 and 6 \@fff -> \hskbonde etc \put(0,-342){\set@skel@bondh{#1}{g}{f}}% % bond between 6 and 7 \@ggg -> \hskbondf etc }% \endgroup % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%% % % inner double bond % % %%%%%%%%%%%%%%%%%%%%% \@tfor\member:=#2\do{% \if\member r\relax% {\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\ggg% \let\ccc=\iii\let\bbb=\jjj% \put(0,-342){\hbondb}% bond between 3a and 7a \put(0,-342){\hbondf}% bond between 6 and 7 \put(0,-342){\hbondd}% bond between 4 and 5 }% \else \if\member l\relax% \else \if\member a\relax% \put(0,0){\hbonda}% bond between 1 and 2 \else \if\member b\relax% \put(0,0){\hbondb}% bond between 2 and 3 \else \if\member c\relax% \put(0,0){\hbondverti}% bond between 3 and 3a \else \if\member d\relax% {\let\ccc=\iii \let\ddd=\eee% \put(0,-342){\hbondc}% bond between 4 and 3a }% \else \if\member e\relax% {\let\ddd=\eee\let\eee=\fff% \put(0,-342){\hbondd}% bond between 4 and 5 }% \else \if\member f\relax% {\let\eee=\fff \let\fff=\ggg% \put(0,-342){\hbonde}% bond between 5 and 6 }% \else \if\member g\relax% {\let\aaa=\hhh \let\fff=\ggg% \put(0,-342){\hbondf}% bond between 7 and 6 }% \else \if\member h\relax% {\let\aaa=\hhh \let\bbb=\jjj% \put(0,-342){\hbonda}% bond between 7 and 7a }% \else \if\member i\relax% {\let\fff=\jjj% \put(0,0){\hbondf}% bond between 1 and 7a }% \else \if\member j\relax% {\let\ccc=\iii\let\bbb=\jjj% \put(0,-342){\hbondb}% bond between 7a and 3a }% \else \if\member J\relax% {\let\eee=\iii\let\fff=\jjj% \put(0,0){\hbonde}% bond between 7a and 3a }% \else \if\member B%aromatic circle \put(173,0){\circle{180}}% %circle (five-membered) \else \if\member A%aromatic circle \put(203,-342){\circle{240}}% %circle (six-membered) \else \expandafter\twoCH@@R\member//% \def\aax{7a} \def\aay{3a}% \if\@@tmpa 1\relax% \putratom{68}{-18}{\@@tmpb}% % right type \else\if\@@tmpa 3\relax% \putratom{233}{60}{\@@tmpb}% % right type \else\if\@@tmpa 2\relax% \putratom{120}{60}{\@@tmpb}% % right type \else\if\@@tmpa 7\relax% \putratom{68}{-360}{\@@tmpb}% % right type \else\if\@@tmpa 6\relax% \putratom{120}{-452}{\@@tmpb}% % right type \else\if\@@tmpa 5\relax% \putratom{233}{-452}{\@@tmpb}% % right type \else\if\@@tmpa 4\relax% \putratom{272}{-360}{\@@tmpb}% % right type \else\if\@@tmpa 9\relax% \putratom{120}{-110}{\@@tmpb}% % right type \else\ifx\@@tmpa\aax\relax% \putratom{120}{-110}{\@@tmpb}% % right type \else\ifx\@@tmpa\aay\relax% \putratom{233}{-110}{\@@tmpb}% % right type \else\if\@@tmpa 8\relax% \putratom{233}{-110}{\@@tmpb}% % right type \else\if\@@tmpa 0\relax% \putratom{140}{-30}{\@@tmpb}% % right type \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% % *********************** % * setting fused rings * % *********************** \expandafter\twoCH@R\member//% \set@fusion@nonahi \fi\fi\fi\fi\fi\fi\fi\fi\fi% \fi\fi\fi\fi\fi\fi}% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%% % % setting hetero atoms % % %%%%%%%%%%%%%%%%%%%%%%%% \iniflag \put(0,0){\set@hetatom@sixh{#3}{0}{0}{4}{0}% \if@aclip \global\@acliptrue\fi \if@bclip \global\@bcliptrue\fi \if@cclip \global\@ccliptrue\fi }% %substituents on 1 to 3 \put(0,-342){\set@hetatom@sixh{#3}{0}{3}{7}{0}% \@gclipfalse \if@fclip \global\@gcliptrue \fi% \@fclipfalse \if@eclip \global\@fcliptrue \fi% \@eclipfalse \if@clip \global\@ecliptrue \fi}%substituents on 4 to 6 \put(0,-342){\set@hetatom@sixh{#3}{-6}{0}{2}{0}% \@hclipfalse \if@aclip \global\@hcliptrue \fi}%%substituent on 7 \put(0,0){\set@vrtx@nonafusehi{#3}% \if@iclip \global\@icliptrue \fi \if@jclip \global\@jcliptrue \fi}% fused positions % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % setting substituents and exocyclic bonds % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \put(0,0){\setsixringh{#4}{0}{0}{4}{0}}% %substituents on 1 to 3 {\@clipfalse \if@eclip \@cliptrue \fi% %substituents on 4 to 6 \@eclipfalse \if@fclip \@ecliptrue \fi% \@fclipfalse \if@gclip \@fcliptrue \fi% \put(0,-342){\setsixringh{#4}{0}{3}{7}{0}}% }% {\@aclipfalse \if@hclip \@acliptrue \fi% %substituent on 7 \put(0,-342){\setsixringh{#4}{-6}{0}{2}{0}}% }% {\@clipfusefalse \if@iclip \@clipfusetrue \fi% \put(303,-171){\setatombond{#4}{-7}{4}}% %8 for 3a position }% {\@clipfusefalse \if@jclip \@clipfusetrue \fi% \put(103,-171){\setatombond{#4}{-8}{10}}%%9 for 7a position }% \end{picture}\iniatom\iniflag}% %end of \nonaheterohi macro % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % The command |\set@vrtx@nonafusehi| is to set an atom (stored as % |\@memberb|) at one (stored as |\@tmpa|) of the fused vertices % of a six-five ring. % These vertices are incapable of accomodating a spiro group. % On the other hand, the other positions can take spiro groups % (stored as |\@memberb|), which are treated by means of % the command |\set@hetatom@sixh|. % The command |\set@vrtx@nonafusehi| is used in such commands % as |\nonaheterohi| for treating thier ATOMLISTs, % % \begin{macro}{\set@vrtx@nonafusehi} % \changes{v2.00}{1998/12/5}{New command: \cs{set@vrtx@nonafusehi}} % \begin{macrocode} \def\set@vrtx@nonafusehi#1{% \@forsemicol\member:=#1\do{% \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax% \expandafter\twoCH@R\@membera//% \ifcase\@tmpa% \or \or \or%%%%3 \if\@tmpb a% \global\@icliptrue% \putratom{273}{-211}{\@memberb}% % right type \else\relax \fi \or%4 \or%5 \or%6 \or%7 \if\@tmpb a% \global\@jcliptrue% \putlatom{135}{-211}{\@memberb}% % left type \else\relax \fi \or%8 (= 3a) \ifx\@tmpb\empty \global\@icliptrue% \putratom{273}{-211}{\@memberb}% % right type \else \XyMTeXWarning{Forbidden spiro ring for the 3a position}% \fi \or%9 (= 7a) \ifx\@tmpb\empty \global\@jcliptrue% \putlatom{135}{-211}{\@memberb}% % left type \else \XyMTeXWarning{Forbidden spiro ring for the 7a position}% \fi \fi\fi}% }% end of the macro \set@vrtx@nonafusehi % \end{macrocode} % \end{macro} % % \subsection{Short-cut commands for fused heterocycles} % % The macros |\nonaheteroh| and |\nonaheterohi| can be used in the % form of a fixed |ATOMLIST|. Hence, the resulting commands for % drawing a fused heterocyle with one or more nitrogen atoms % have an argument |SUBSLIST| as well as an optional argument |BONDLIST|. % % \begin{verbatim} % ********************************************************** % * heterocycles having fused six- and five-membered rings * % * (horizontal type) * % ********************************************************** % % N-heterocycles: % % \indoleh[BONDLIST]{SUBSLIST} % \indolehi[BONDLIST]{SUBSLIST} % % \isoindoleh[BONDLIST]{SUBSLIST} % \isoindolehi[BONDLIST]{SUBSLIST} % % \indolizineh[BONDLIST]{SUBSLIST} % \indolizinehi[BONDLIST]{SUBSLIST} % (different from the IUPAC numbering) % % \purineh[BONDLIST]{SUBSLIST} % \purinehi[BONDLIST]{SUBSLIST} % (different from the IUPAC numbering) % % O-heterocycles: % % \benzofuraneh[BONDLIST]{SUBSLIST} % \benzofuranehi[BONDLIST]{SUBSLIST} % % \isobenzofuranehi[BONDLIST]{SUBSLIST} % % \benzoxazoleh[BONDLIST]{SUBSLIST} % \benzoxazolehi[BONDLIST]{SUBSLIST} % \end{verbatim} % % The |BONDLIST| argument contains one % character selected from a to j, each of which indicates the presence of % an inner (endcyclic) double bond on the corresponding position. % The optiona `A' typesets an aromatic circle. % The option % `$n+$' ($n=1$ to $9$) represents a plus charge on a hetero atom % at the $n$-position. % % \begin{verbatim} % BONDLIST: list of bonds % % none or r : aromatic six-membered ring % [] : fully saturated form % a : 1,2-double bond b : 2,3-double bond % c : 3,3a-double bond d : 4,3a-double bond % e : 4,5-double bond f : 5,6-double bond % g : 6,7-double bond h : 7,7a-double bond % i : 1,7a-double bond % j : 3a,4a-double bond % J : 3a,4a-double bond in the other ring % A : aromatic circle % {n+} : plus at the n-nitrogen atom (n = 1 to 9) % \end{verbatim} % % 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. % % \begin{verbatim} % 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 % \end{verbatim} % % Several examples are shown as follows. % \begin{verbatim} % e.g. % % \indoleh{1==N}{1==Cl;2==F} % \indoleh[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} % \end{verbatim} % % \begin{macro}{\purineh} % \begin{macro}{\purinehi} % \begin{macrocode} \def\purineh{\@ifnextchar[{\@purineh[@}{\@purineh[ra]}}% \def\@purineh[#1]#2{% \iforigpt \typeout{command `purineh' % is based on `nonaheteroh'.}\fi% \nonaheteroh[#1]{1==N;3==N;5==N;7==N}{#2}}% \def\purinehi{\@ifnextchar[{\@purinehi[@}{\@purinehi[ra]}}% \def\@purinehi[#1]#2{% \iforigpt \typeout{command `purinehi' % is based on `nonaheterohi'.}\fi% \nonaheterohi[#1]{1==N;3==N;5==N;7==N}{#2}}% % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\indoleh} % \begin{macro}{\indolehi} % \begin{macrocode} \def\indoleh{\@ifnextchar[{\@indoleh[@}{\@indoleh[rb]}}% \def\@indoleh[#1]#2{% \iforigpt \typeout{command `indoleh' % is based on `nonaheteroh'.}\fi% \nonaheteroh[#1]{1==N}{#2}}% \def\indolehi{\@ifnextchar[{\@indolehi[@}{\@indolehi[rb]}}% \def\@indolehi[#1]#2{% \iforigpt \typeout{command `indolehi' % is based on `nonaheterohi'.}\fi% \nonaheterohi[#1]{1==N}{#2}}% % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\indolizineh} % \begin{macro}{\indolizinehi} % \begin{macrocode} \def\indolizineh{% \@ifnextchar[{\@indolizineh[@}{\@indolizineh[aceg]}}% \def\@indolizineh[#1]#2{% \iforigpt \typeout{command `indolizineh' % is based on `nonaheteroh'.}\fi% \nonaheteroh[#1]{7a==N}{#2}}% \def\indolizinehi{% \@ifnextchar[{\@indolizinehi[@}{\@indolizinehi[aceg]}}% \def\@indolizinehi[#1]#2{% \iforigpt \typeout{command `indolizinehi' % is based on `nonaheterohi'.}\fi% \nonaheterohi[#1]{7a==N}{#2}}% % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\isoindoleh} % \begin{macro}{\isoindolehi} % \begin{macrocode} \def\isoindoleh{% \@ifnextchar[{\@isoindoleh[@}{\@isoindoleh[cegi]}}% \def\@isoindoleh[#1]#2{% \iforigpt \typeout{command `isoindoleh' % is based on `nonaheteroh'.}\fi% \nonaheteroh[#1]{2==N}{#2}}% \def\isoindolehi{% \@ifnextchar[{\@isoindolehi[@}{\@isoindolehi[cegi]}}% \def\@isoindolehi[#1]#2{% \iforigpt \typeout{command `isoindolehi' % is based on `nonaheterohi'.}\fi% \nonaheterohi[#1]{2==N}{#2}}% % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\benzofuraneh} % \begin{macro}{\benzofuranehi} % \begin{macrocode} \def\benzofuraneh{% \@ifnextchar[{\@benzofuraneh[@}{\@benzofuraneh[rb]}}% \def\@benzofuraneh[#1]#2{% \iforigpt \typeout{command `benzofuraneh' % is based on `nonaheteroh'.}\fi% \nonaheteroh[#1]{1==O}{#2}}% \def\benzofuranehi{% \@ifnextchar[{\@benzofuranehi[@}{\@benzofuranehi[rb]}}% \def\@benzofuranehi[#1]#2{% \iforigpt \typeout{command `benzofuranehi' % is based on `nonaheterohi'.}\fi% \nonaheterohi[#1]{1==O}{#2}}% % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\isobenzofuraneh} % \begin{macro}{\isobenzofuranehi} % \begin{macrocode} \def\isobenzofuraneh{\@ifnextchar[{\@isobenzofuraneh[@}% {\@isobenzofuraneh[cegi]}}% \def\@isobenzofuraneh[#1]#2{% \iforigpt \typeout{command `isobenzofuraneh' % is based on `nonaheteroh'.}\fi% \nonaheteroh[#1]{2==O}{#2}}% \def\isobenzofuranehi{\@ifnextchar[{\@isobenzofuranehi[@}% {\@isobenzofuranehi[cegi]}}% \def\@isobenzofuranehi[#1]#2{% \iforigpt \typeout{command `isobenzofuranehi' % is based on `nonaheterohi'.}\fi% \nonaheterohi[#1]{2==O}{#2}}% % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\benzoxazoleh} % \begin{macro}{\benzoxazolehi} % \begin{macrocode} \def\benzoxazoleh{% \@ifnextchar[{\@benzoxazoleh[@}{\@benzoxazoleh[rb]}}% \def\@benzoxazoleh[#1]#2{% \iforigpt \typeout{command `benzoxazoleh' % is based on `nonaheteroh'.}\fi% \nonaheteroh[#1]{1==O;3==N}{#2}}% \def\benzoxazolehi{% \@ifnextchar[{\@benzoxazolehi[@}{\@benzoxazolehi[rb]}}% \def\@benzoxazolehi[#1]#2{% \iforigpt \typeout{command `benzoxazolehi' % is based on `nonaheterohi'.}\fi% \nonaheterohi[#1]{1==O;3==N}{#2}}% % \end{macrocode} % \end{macro} % \end{macro} % % \section{Building blocks} % \subsection{Six-membered ring unit} % % The old function (v1.01) of |\sixunitv| as a fusing ring unit % is succeeded by |\sixfusev| and |\sixfusevi|. % The command |\sixunitv| has been changed into a subsidiary % command of |\sixheterov| (v2.00). % % The macro |\sixunith| is a six-membered fragment that can be % fused to another % ring structure to produce a new ring system. The following % numbering is adopted in this macro. % % \begin{verbatim} % ********************** % * six-membered unit * % * (horizontal type) * % ********************** % b % 2 3 % a ----- c % * * % the original point ===> 1 * * 4 % (0,0) * * d % f ----- % 6 5 % e % \end{verbatim} % % The macro |\sixunith| has three arguments |ATOMLIST|, |SUBSLIST| % and |OMIT| % as well as an optional argument |BONDLIST|. % % \begin{verbatim} % \sixunith[BONDLIST]{ATOMLIST}{SUBSLIST}{OMIT} % \end{verbatim} % % 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. % % \begin{verbatim} % 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) % \end{verbatim} % % 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. % % \begin{verbatim} % 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 % \end{verbatim} % % 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. % % \begin{verbatim} % 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 % \end{verbatim} % % The argument |OMIT| represents one bond to be omitted. % The omitted edge is regarded as a fused position. % % \begin{verbatim} % OMIT: one bond omitted (a, b, c, d, e, or f) % \end{verbatim} % % Several examples are shown as follows. % \begin{verbatim} % e.g. % % \sixhunitv{1==N}{1==Cl;2==F}{e} % \end{verbatim} % % The definition of |\sixunith| uses a picture environment and % consists of the same unit processes as shown in |\sixheteroh|: % \begin{enumerate} % \item treatment of atom list, % \item placing outer skeletons, % \item placing inner double bonds, % \item setting hetero atoms, and % \item placing substituents by using |\setsixringh|. % \end{enumerate} % % \begin{macro}{\sixunith} % \begin{macro}{\@sixunith} % \begin{macrocode} \def\sixunith{\@ifnextchar[{\@sixunith[@}{\@sixunith[@]}} \def\@sixunith[#1]#2#3#4{\sixheteroh[#1]{#2}{#3}[#4]} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{verbatim} % (Old difinition) % % \begin{macro}{\sixunith} % % \begin{macro}{\@sixunith} % % \begin{macrocode} % \def\sixunith{\@ifnextchar[{\@sixunith}{\@sixunith[r]}} % \def\@sixunith[#1]#2#3#4{% % % \end{macrocode} % % % % \begin{macrocode} % % %%%%%%%%%%%%%%%%%%%%%%%%%% % % % treatment of atom list % % % %%%%%%%%%%%%%%%%%%%%%%%%%% % \iniatom\iniflag%initialize% % \@forsemicol\member:=#2\do{% % \expandafter\@m@mb@r\member;\relax% % \expandafter\twoch@r\@membera{}% % \ifcase\@tmpa% % \or \xdef\aaa{\@memberb}% % \or \xdef\bbb{\@memberb}% % \or \xdef\ccc{\@memberb}% % \or \xdef\ddd{\@memberb}% % \or \xdef\eee{\@memberb}% % \or \xdef\fff{\@memberb}% % \fi}% % \begin{picture}(800,880)(-240,-400)% % \iforigpt \put(-\shifti,-\shiftii){\circle*{50}}% % \put(-\noshift,-\noshift){\circle{50}}% % \typeout{command `sixunith' origin: % % (\the\noshift,\the\noshift) ---> (\the\shifti,\the\shiftii)}\fi% % % \end{macrocode} % % % % \begin{macrocode} % % %%%%%%%%%%%%%%%%%% % % % outer skeleton % % % %%%%%%%%%%%%%%%%%% % % changed OMIT into a list 1993/11/21 by Shinsaku Fujita % {\resetbdsw% % \@tfor\memBer:=#4\do{% % \if\memBer a\relax\gdef\@aaa{}\fi% % \if\memBer b\relax\gdef\@bbb{}\fi% % \if\memBer c\relax\gdef\@ccc{}\fi% % \if\memBer d\relax\gdef\@ddd{}\fi% % \if\memBer e\relax\gdef\@eee{}\fi% % \if\memBer f\relax\gdef\@fff{}\fi% % }% % \if\@aaa a\relax\hskbonda\fi% bond between 1 and 2 % \if\@bbb b\relax\hskbondb\fi% bond between 2 and 3 % \if\@ccc c\relax\hskbondc\fi% bond between 3 and 4 % \if\@ddd d\relax\hskbondd\fi% bond between 4 and 5 % \if\@eee e\relax\hskbonde\fi% bond between 5 and 6 % \if\@fff f\relax\hskbondf\fi% bond between 6 and 1 % }% % %\ifx#4a\relax \else% % % \hskbonda% bond between 1 and 2 % %\fi% % %\ifx#4f\relax \else% % % \hskbondf% bond between 1 and 6 % %\fi% % %\ifx#4c\relax \else% % % \hskbondc% bond between 4 and 3 % %\fi% % %\ifx#4d\relax \else% % % \hskbondd% bond between 4 and 5 % %\fi% % %\ifx#4b\relax \else% % % \hskbondb% bond between 3 and 2 % %\fi% % %\ifx#4e\relax \else% % % \hskbonde% bond between 5 and 6 % %\fi% % % \end{macrocode} % % % % \begin{macrocode} % % %%%%%%%%%%%%%%%%%%%%% % % % inner double bond % % % %%%%%%%%%%%%%%%%%%%%% % \@tfor\member:=#1\do{% % \if\member r\relax% % \else \if\member l\relax% % \else \if\member a\relax% % \ifx#4a\relax \else% % \hbonda% % \fi% % \else \if\member b\relax% % \ifx#4b\relax \else% % \hbondb% % \fi% % \else \if\member c\relax% % \ifx#4c\relax \else% % \hbondc% % \fi% % \else \if\member d\relax% % \ifx#4d\relax \else% % \hbondd% % \fi% % \else \if\member e\relax% % \ifx#4e\relax \else% % \hbonde% % \fi% % \else \if\member f\relax% % \ifx#4f\relax \else% % \hbondf% % \fi% % \else \if\member A%left aromatic circle % \put(203,0){\circle{240}}% %circle % \else \expandafter\twoch@@r\member{}{}% % \if\@@tmpa 4\relax% % \putratom{272}{-18}{\@@tmpb}% % right type % \else\if\@@tmpa 1\relax% % \putratom{68}{-18}{\@@tmpb}% % right type % \else\if\@@tmpa 3\relax % \putratom{233}{60}{\@@tmpb}% % right type % \else\if\@@tmpa 2\relax% % \putratom{120}{60}{\@@tmpb}% % right type % \else\if\@@tmpa 5\relax% % \putratom{233}{-110}{\@@tmpb}% % right type % \else\if\@@tmpa 6\relax% % \putratom{120}{-110}{\@@tmpb}% % right type % \fi\fi\fi\fi\fi\fi% % \fi\fi\fi\fi\fi\fi\fi\fi\fi}% % % \end{macrocode} % % % % \begin{macrocode} % % %%%%%%%%%%%%%%%%%%%%%%%% % % % setting hetero atoms % % % %%%%%%%%%%%%%%%%%%%%%%%% % \ifx\ddd\empty\else% % \@cliptrue% % \putratom{346}{-36}{\ddd}% % right type % \fi% % \ifx\aaa\empty\else% % \@acliptrue% % \putlatom{60}{-36}{\aaa}% % left type % \fi% % \ifx\bbb\empty\else% % \@bcliptrue% % \putlatom{135}{141}{\bbb}% % left type % \fi% % \ifx\ccc\empty\else% % \@ccliptrue% % \putratom{273}{141}{\ccc}% % right type % \fi% % \ifx\fff\empty\else% % \@fcliptrue% % \putlatom{135}{-211}{\fff}% % left type % \fi% % \ifx\eee\empty\else% % \@ecliptrue% % \putratom{273}{-211}{\eee}% % right type % \fi% % \setsixringh{#3}{0}{0}{7}{0}% % \end{picture}\iniatom\iniflag}% %end of \sixunith macro % % \end{macrocode} % % \end{macro} % % \end{macro} % \end{verbatim} % % \subsection{Five-membered ring unit} % \subsubsection{Horizonatl type} % % The old function (v1.01) of |\fiveunith| as a fusing ring unit % is succeeded by |\fivefuseh|. % The command |\fiveunith| has been changed into a subsidiary % command of |\fiveheteroh| (v2.00). % % The macro |\fiveunith| is a five-membered fragment that can be % fused to another % ring structure to produce a new ring system. The following % numbering is adopted in this macro. % % \begin{verbatim} % ********************** % * five-membered unit * % * (horizontal type) * % ********************** % % 3 _____ 2 % | * % | * 1 <===== the original point % | * % 4 ----- 5 % \end{verbatim} % % The macro |\fiveunith| has three arguments |ATOMLIST|, |SUBSLIST| % and |OMIT| % as well as an optional argument |BONDLIST|. % % \begin{verbatim} % \fiveunith[BONDLIST]{ATOMLIST}{SUBSLIST}{OMIT} % \end{verbatim} % % 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. % % \begin{verbatim} % BONDLIST: list of inner double bonds % % a : 1,2-double bond % b : 2,3-double bond % c : 4,3-double bond % d : 4,5-double bond % e : 5,1-double bond % A : aromatic circle % {n+} : plus at the n-nitrogen atom (n = 1 to 5) % {0+} : plus (or others) at the center % \end{verbatim} % % 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. % % \begin{verbatim} % 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 % \end{verbatim} % % 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. % % \begin{verbatim} % 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 % \end{verbatim} % % The argument |OMIT| represents one bond to be omitted. % The omitted edge is regarded as a fused position. % % \begin{verbatim} % OMIT: one bond omitted (a, b, c, d, e, or f) % \end{verbatim} % % Several examples are shown as follows. % \begin{verbatim} % e.g. % % \fiveunith{1==N}{1==H;2==F}{a} % \end{verbatim} % % The definition of |\fiveunith| uses a picture environment and % consists of the same unit processes as shown in |\sixheteroh|: % \begin{enumerate} % \item treatment of atom list, % \item placing outer skeletons, % \item placing inner double bonds, % \item setting hetero atoms, and % \item placing substituents by using |\setsixringh| partially. % \end{enumerate} % % \begin{macro}{\fiveunith} % \begin{macro}{\@fiveunith} % \begin{macrocode} \def\fiveunith{\@ifnextchar[{\@fiveunith[@}{\@fiveunith[r]}} \def\@fiveunith[#1]#2#3#4{\fiveheteroh[#1]{#2}{#3}[#4]} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{verbatim} % (Old definition) % % \begin{macro}{\fiveunith} % % \begin{macro}{\@fiveunith} % % \begin{macrocode} % \def\fiveunith{\@ifnextchar[{\@fiveunith}{\@fiveunith[r]}} % \def\@fiveunith[#1]#2#3#4{% % \iniatom\iniflag%initialize % % \end{macrocode} % % % % \begin{macrocode} % % %%%%%%%%%%%%%%%%%%%%%%%%%% % % % treatment of atom list % % % %%%%%%%%%%%%%%%%%%%%%%%%%% % %\def\aaa{}\def\bbb{}\def\ccc{}\def\ddd{}\def\eee{}\def\fff{}% % \@forsemicol\member:=#2\do{% % \expandafter\@m@mb@r\member;\relax% % \expandafter\twoch@r\@membera{}% % \ifcase\@tmpa% % \or \xdef\ddd{\@memberb}% % \or \xdef\ccc{\@memberb}% % \or \xdef\bbb{\@memberb}% % \or \xdef\fff{\@memberb}% % \or \xdef\eee{\@memberb}% % \fi}% % \begin{picture}(800,880)(-240,-400)% % \iforigpt \put(-\shifti,-\shiftii){\circle*{50}}% % \put(-\noshift,-\noshift){\circle{50}}% % \typeout{command `fiveunith' origin: % % (\the\noshift,\the\noshift) ---> (\the\shifti,\the\shiftii)}\fi% % % \end{macrocode} % % % % \begin{macrocode} % % %%%%%%%%%%%%%%%%%% % % % outer skeleton % % % %%%%%%%%%%%%%%%%%% % % changed OMIT to a list 1993/11/21 by Shinsaku Fujita % {\resetbdsw% % \@tfor\memBer:=#4\do{% % \if\memBer a\relax\gdef\@aaa{}\fi% % \if\memBer b\relax\gdef\@bbb{}\fi% % \if\memBer c\relax\gdef\@ccc{}\fi% % \if\memBer d\relax\gdef\@ddd{}\fi% % \if\memBer e\relax\gdef\@eee{}\fi% % %\if\memBer f\relax\gdef\@fff{}\fi% % }% % \if\@aaa a\relax\hskbondc\fi% bond between 1 and 2 % \if\@bbb b\relax\hskbondb\fi% bond between 2 and 3 % \if\@ccc c\relax\hskbondvert\fi% bond between 3 and 4 % \if\@ddd d\relax\hskbonde\fi% bond between 4 and 5 % \if\@eee e\relax\hskbondd\fi% bond between 5 and 6 % %\if\@fff f\relax\hskbondf\fi% bond between 6 and 1 % }% % % old % %\ifx#4a\relax\else% % % \hskbondc%bond between 1 and 2 % %\fi% % %\ifx#4e\relax\else% % % \hskbondd%bond between 1 and 5 % %\fi% % %\ifx#4b\relax\else% % % \hskbondb%bond between 2 to 3 % %\fi% % %\ifx#4d\relax\else% % % \hskbonde%bond between 5 and 4 % %\fi% % %\ifx#4c\relax\else% % % \hskbondvert%bond between 4 and 3 % %\fi% % % \end{macrocode} % % % % \begin{macrocode} % % %%%%%%%%%%%%%%%%%%%%% % % % inner double bond % % % %%%%%%%%%%%%%%%%%%%%% % \@tfor\member:=#1\do{% % \if\member r% % \else \if\member a\relax% % \ifx#4a\relax\else% % \hbondc% % \fi% % \else \if\member b\relax% % \ifx#4b\relax\else% % \hbondb% % \fi% % \else \if\member c\relax% % \ifx#4c\relax\else% % \hbondvert% % \fi% % \else \if\member d\relax% % \ifx#4d\relax\else% % \hbonde% % \fi% % \else \if\member e\relax% % \ifx#4e\relax\else% % \hbondd% % \fi% % \else \if\member A%left aromatic circle % \put(233,0){\circle{180}}% %circle % \else \expandafter\twoch@@r\member{}{}% % \if\@@tmpa 1\relax% % \putratom{272}{-18}{\@@tmpb}% % right type % \else\if\@@tmpa 2\relax% % \putratom{233}{60}{\@@tmpb}% % right type % \else\if\@@tmpa 3\relax% % \putratom{120}{60}{\@@tmpb}% % right type % \else\if\@@tmpa 5\relax% % \putratom{233}{-110}{\@@tmpb}% % right type % \else\if\@@tmpa 4\relax% % \putratom{120}{-110}{\@@tmpb}% % right type % \else\if\@@tmpa 0\relax% % \putratom{196}{-30}{\@@tmpb}% % right type % \fi\fi\fi\fi\fi\fi% % \fi\fi\fi\fi\fi\fi\fi}% % % \end{macrocode} % % % % \begin{macrocode} % % %%%%%%%%%%%%%%%%%%%%%%% % % % setting heteroatoms % % % %%%%%%%%%%%%%%%%%%%%%%% % \ifx\ddd\empty\else% % \@cliptrue% % \putratom{346}{-36}{\ddd}% % right type % \fi% % \ifx\bbb\empty\else% % \@bcliptrue% % \putlatom{135}{141}{\bbb}% % left type % \fi% % \ifx\ccc\empty\else% % \@ccliptrue% % \putratom{273}{141}{\ccc}% % right type % \fi% % \ifx\fff\empty\else% % \@fcliptrue% % \putlatom{135}{-211}{\fff}% % left type % \fi% % \ifx\eee\empty\else% % \@ecliptrue% % \putratom{273}{-211}{\eee}% % right type % \fi% % % \end{macrocode} % % % % \begin{macrocode} % % %%%%%%%%%%%%%%%%%%%%%%%% % % % setting substituents % % % %%%%%%%%%%%%%%%%%%%%%%%% % \setsixringh{#3}{5}{1}{5}{-1}% % for 1 to 3 % \setsixringh{#3}{10}{4}{7}{-1}% % for 4 to 5 % \end{picture}\iniatom\iniflag}% %end of \fiveunith macro % % \end{macrocode} % % \end{macro} % % \end{macro} % \end{verbatim} % % \subsubsection{Inverse horizontal type} % % The old function (v1.01) of |\fiveunithi| as a fusing ring unit % is succeeded by |\fivefusehi|. % The command |\fiveunithi| has been changed into a subsidiary % command of |\fiveheterohi| (v2.00). % % The macro |\fiveunithi| typesets a five-membered fragment that can be % fused to another % ring structure to produce a new ring system. The following % numbering is adopted in this macro. % % \begin{verbatim} % ************************************ % * five-membered unit * % * (horizontal type, inverse type) * % ************************************ % % 2 ----- 3 % * | % the original point 1 * | % * | % _____| % 5 4 % \end{verbatim} % % The macro |\fiveunithi| has three arguments |ATOMLIST|, |SUBSLIST| % and |OMIT| % as well as an optional argument |BONDLIST|. % % \begin{verbatim} % \fiveunithi[BONDLIST]{ATOMLIST}{SUBSLIST}{OMIT} % \end{verbatim} % % 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. % % \begin{verbatim} % BONDLIST: list of inner double bonds % % a : 1,2-double bond % b : 2,3-double bond % c : 4,3-double bond % d : 4,5-double bond % e : 5,1-double bond % A : aromatic circle % {n+} : plus at the n-nitrogen atom (n = 1 to 5) % {0+} : plus (or others) at the center % \end{verbatim} % % 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. % % \begin{verbatim} % 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 % \end{verbatim} % % 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. % % \begin{verbatim} % 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 % \end{verbatim} % % The argument |OMIT| represents one bond to be omitted. % The omitted edge is regarded as a fused position. % % \begin{verbatim} % OMIT: one bond omitted (a, b, c, d, e, or f) % \end{verbatim} % % Several examples are shown as follows. % \begin{verbatim} % e.g. % % \fiveunithi{1==N}{1==H;2==F}{a} % \end{verbatim} % % The definition of |\fiveunithi| uses a picture environment and % consists of the same unit processes as shown in |\sixheteroh|: % \begin{enumerate} % \item treatment of atom list, % \item placing outer skeletons, % \item placing inner double bonds, % \item setting hetero atoms, and % \item placing substituents by using |\setsixringh| partially. % \end{enumerate} % % \begin{macro}{\fiveunithi} % \begin{macro}{\@fiveunithi} % \begin{macrocode} \def\fiveunithi{\@ifnextchar[{\@fiveunithi[@}{\@fiveunithi[r]}} \def\@fiveunithi[#1]#2#3#4{\fiveheterohi[#1]{#2}{#3}[#4]} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{verbatim} % (Old definition) % % \begin{macro}{\fiveunithi} % % \begin{macro}{\@fiveunithi} % % \begin{macrocode} % \def\fiveunithi{\@ifnextchar[{\@fiveunithi}{\@fiveunithi[r]}}% % \def\@fiveunithi[#1]#2#3#4{% % \iniatom\iniflag%initialize % % \end{macrocode} % % % % \begin{macrocode} % % %%%%%%%%%%%%%%%%%%%%%%%%%% % % % treatment of atom list % % % %%%%%%%%%%%%%%%%%%%%%%%%%% % %\def\aaa{}\def\bbb{}\def\ccc{}\def\ddd{}\def\eee{}\def\fff{}% % \@forsemicol\member:=#2\do{% % \expandafter\@m@mb@r\member;\relax% % \expandafter\twoch@r\@membera{}% % \ifcase\@tmpa% % \or \xdef\aaa{\@memberb}% % \or \xdef\bbb{\@memberb}% % \or \xdef\ccc{\@memberb}% % \or \xdef\eee{\@memberb}% % \or \xdef\fff{\@memberb}% % \fi}% % \begin{picture}(800,880)(-240,-400)% % \iforigpt \put(-\shifti,-\shiftii){\circle*{50}}% % \put(-\noshift,-\noshift){\circle{50}}% % \typeout{command `fiveunithi' origin: % % (\the\noshift,\the\noshift) ---> (\the\shifti,\the\shiftii)}\fi% % % \end{macrocode} % % % % \begin{macrocode} % % %%%%%%%%%%%%%%%%%% % % % outer skeleton % % % %%%%%%%%%%%%%%%%%% % % changed OMIT to a list 1993/11/21 by Shinsaku Fujita % {\resetbdsw% % \@tfor\memBer:=#4\do{% % \if\memBer a\relax\gdef\@aaa{}\fi% % \if\memBer b\relax\gdef\@bbb{}\fi% % \if\memBer c\relax\gdef\@ccc{}\fi% % \if\memBer d\relax\gdef\@ddd{}\fi% % \if\memBer e\relax\gdef\@eee{}\fi% % %\if\memBer f\relax\gdef\@fff{}\fi% % }% % \if\@aaa a\relax\hskbonda\fi% bond between 1 and 2 % \if\@bbb b\relax\hskbondb\fi% bond between 2 and 3 % \if\@ccc c\relax\hskbondverti\fi% bond between 3 and 4 % \if\@ddd d\relax\hskbonde\fi% bond between 4 and 5 % \if\@eee e\relax\hskbondf\fi% bond between 5 and 6 % %\if\@fff f\relax\hskbondf\fi% bond between 6 and 1 % }% % % old % %\ifx#4a\relax\else% % % \hskbonda%bond between 1 and 2 % %\fi% % %\ifx#4e\relax\else% % % \hskbondf%bond between 1 and 5 % %\fi% % %\ifx#4b\relax\else% % % \hskbondb%bond between 2 to 3 % %\fi% % %\ifx#4d\relax\else% % % \hskbonde%bond between 5 and 4 % %\fi% % %\ifx#4c\relax\else% % % \hskbondverti%bond between 4 and 3 % %\fi% % % \end{macrocode} % % % % \begin{macrocode} % % %%%%%%%%%%%%%%%%%%%%% % % % inner double bond % % % %%%%%%%%%%%%%%%%%%%%% % \@tfor\member:=#1\do{% % \if\member r% % \else \if\member a\relax% % \ifx#4a\relax\else% % \hbonda% % \fi% % \else \if\member b\relax% % \ifx#4b\relax\else% % \hbondb% % \fi% % \else \if\member c\relax% % \ifx#4c\relax\else% % \hbondverti% % \fi% % \else \if\member d\relax% % \ifx#4d\relax\else% % \hbonde% % \fi% % \else \if\member e\relax% % \ifx#4e\relax\else% % \hbondf% % \fi% % \else \if\member A%left aromatic circle % \put(173,0){\circle{180}}% %circle % \else \expandafter\twoch@@r\member{}{}% %plus or minus charges % \if\@@tmpa 1\relax% % \putratom{-38}{282}{\@@tmpb}% % right type % \else\if\@@tmpa 2\relax% % \putratom{60}{233}{\@@tmpb}% % right type % \else\if\@@tmpa 3\relax% % \putratom{60}{120}{\@@tmpb}% % right type % \else\if\@@tmpa 4\relax% % \putratom{-60}{120}{\@@tmpb}% % right type % \else\if\@@tmpa 5\relax% % \putratom{-60}{233}{\@@tmpb}% % right type % \else\if\@@tmpa 0\relax% % \putratom{140}{-30}{\@@tmpb}% % right type % \fi\fi\fi\fi\fi\fi% % \fi\fi\fi\fi\fi\fi\fi}% % % \end{macrocode} % % % % \begin{macrocode} % % %%%%%%%%%%%%%%%%%%%%%%% % % % setting heteroatoms % % % %%%%%%%%%%%%%%%%%%%%%%% % \ifx\aaa\empty\else% % \@acliptrue% % \putlatom{60}{-36}{\aaa}% % left type % \fi% % \ifx\bbb\empty\else% % \@bcliptrue% % \putlatom{135}{141}{\bbb}% % left type % \fi% % \ifx\ccc\empty\else% % \@ccliptrue% % \putratom{273}{141}{\ccc}% % right type % \fi% % \ifx\fff\empty\else% % \@fcliptrue% % \putlatom{135}{-211}{\fff}% % left type % \fi% % \ifx\eee\empty\else% % \@ecliptrue% % \putratom{273}{-211}{\eee}% % right type % \fi% % % \end{macrocode} % % % % \begin{macrocode} % % %%%%%%%%%%%%%%%%%%%%%%%% % % % setting substituents % % % %%%%%%%%%%%%%%%%%%%%%%%% % \setsixringh{#3}{0}{0}{4}{0}% % for 1 to 3 % \setsixringh{#3}{1}{4}{7}{0}% % for 4 to 5 % \end{picture}\iniatom\iniflag}% %end of \fiveunithi macro % % \end{macrocode} % % \end{macro} % \end{verbatim} % % \section{Three-membered heterocycles} % \subsection{Horizontal type} % % The macro |\threeheteroh| typesets a three-membered ring. The following % numbering is adopted in this macro. % % \begin{verbatim} % **************************** % * thereehetero derivatives * % * (horizontal type) * % **************************** % aaa fff % 3 % | ` c % b | 1 bbb ccc % | / a % 2/ % ddd eee % % -- -- % | cf. threeehetero | % | fff 3--------2bbb | % | ` / | % | ddd `1/ <===== the original point | % | | % -- -- % \end{verbatim} % % The macro |\threeheteroh| has two arguments |ATOMLIST| and |SUBSLIST| % as well as an optional argument |BONDLIST|. % Two optional arguments |SKBONDLIST| and |OMIT| are added to % treat stereochemical information or other bond situations. % % \begin{verbatim} % \threeheteroh(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] % \end{verbatim} % % 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. % % \begin{verbatim} % 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 % \end{verbatim} % % 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. % % \begin{verbatim} % 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 % \end{verbatim} % % 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. % % \begin{verbatim} % 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 % \end{verbatim} % % The argument |OMIT| represents one or more bonds to be omitted. % The omitted edges may be regarded as both fused and non-fused % positions. % % \begin{verbatim} % OMIT: one or more bonds omitted (a to c; see BONDLIST) % \end{verbatim} % % Several examples are shown as follows. % \begin{verbatim} % e.g. % % \threeheteroh{1==N}{1==Cl;2==F} % \threeheteroh[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} % \threeheteroh{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl} % \end{verbatim} % % The definition of |\threeheteroh| uses a picture environment and % consists of the same unit processes as shown in |\sixheterov|: % \begin{enumerate} % \item treatment of atom list, % \item placing outer skeletons, % \item placing inner double bonds, % \item setting hetero atoms, and % \item placing substituents by using |\setsixringv| partially. % \end{enumerate} % \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw}, % \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, % \cs{yl@xdiff} and \cs{yl@ydiff}} % \changes{v2.00}{1998/12/5}{Add: spiro and fused rings} % % \begin{macro}{\threeheteroh} % \begin{macro}{\@three@heteroh} % \begin{macro}{\@three@@heteroh} % \begin{macro}{\@threeheteroh} % \begin{macrocode} \def\threeheteroh{\@ifnextchar({\@three@heteroh(@}{\@three@heteroh(@)}} \def\@three@heteroh(#1){\@ifnextchar[{\@three@@heteroh(#1)[@}% {\@three@@heteroh(#1)[@]}} \def\@three@@heteroh(#1)[#2]#3#4{\@ifnextchar[% {\@threeheteroh(#1)[#2]{#3}{#4}[@}% {\@threeheteroh(#1)[#2]{#3}{#4}[@]}} \def\@threeheteroh(#1)[#2]#3#4[#5]{% % \end{macrocode} % % The procedure of adusting substitution positions is based on % a horizontal six-membered ring, in which the positions % 4 (ddd), 6 (fff), 2 (bbb) are used in place of the positions % 1, 2, and 3 of the three-membered ring. % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%%%% % % treatment of atom list % % %%%%%%%%%%%%%%%%%%%%%%%%%% \iniatom\iniflag%initialize \test@vertix@sixv{#3}{d}{f}{b}{@}{@}{@}%tentative use for six-h % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adustment of subs positions % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \@reset@ylsw% \ylpositionh{#4}{3}{3}{5}{0}%subst 1 \if@ylsw \ifx\@@ylii\empty \def\@@ylii{235}\def\@@yli{-103}\fi \else \ylpositionh{#4}{-1}{1}{3}{0}%subst 3 \fi \if@ylsw \ifx\@@ylii\empty \def\@@ylii{103}\def\@@yli{-29}\fi \else \ylpositionh{#4}{4}{5}{7}{0}%subst 2 \fi \if@ylsw \ifx\@@ylii\empty \def\@@ylii{103}\def\@@yli{-171}\fi \fi \if@ylsw \yl@shiftii=\@ylii \yl@shifti=\@yli \advance\yl@shiftii\@@ylii \advance\yl@shifti\@@yli \advance\yl@shiftii\yl@xdiff \advance\yl@shifti\yl@ydiff \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti) \reset@yl@xydiff%1999/1/6 by S. Fujita \else \begin{picture}(580,700)(-200,-240)% \iforigpt \put(-200,-240){\circle*{50}}% \put(0,0){\circle{50}}% \typeout{command `threeheteroh' origin: % (0,0) ---> (200,240)}\fi% \fi % \end{macrocode} % % The procedures of setting skeletal and inner bonds are based on % a vertical six-membered ring, where the bonds c, e, and a are % used in place of the bonds a, b, and c. Hence, % (1) the bond a of the latter should be related to |\bbb| and |\ccc| at % the one terminal and to |\eee| and |\ddd| at the other terminal; % (2) the bond b of the latter should be related to |\eee| and |\ddd| at % the one terminal and to |\aaa| and |\fff| at the other terminal; and % (3) the bond c of the latter should be related to |\bbb| and |\ccc| at % the one terminal and to |\aaa| and |\fff| at the other terminal. % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%%%%%% % % retreatment of atom list % % %%%%%%%%%%%%%%%%%%%%%%%%%%%% \iniatom\iniflag%initialize \test@vertix@sixv{#3}{c}{e}{a}{@}{@}{@}% \test@vertix@sixv{#3}{b}{d}{f}{@}{@}{@}% % %%%%%%%%%%%%%%%%%% % % outer skeleton % % %%%%%%%%%%%%%%%%%% {\resetbdsw% \@bond@@omit{#5}% \put(0,0){\set@skel@bond{#1}{a}{c}}% % bond between 1 and 2 \@aaa -> \skbondc etc \put(171,-103){\set@skel@bond{#1}{b}{e}}% % bond between 2 and 3 \@bbb -> \skbonde etc \put(0,-200){\set@skel@bond{#1}{c}{a}}% % bond between 3 and 1 \@ccc -> \skbonda etc }% % % \put(0,0){\skbondc}% bond between 1 and 2 % \put(0,-200){\skbonda}% bond between 1 and 3 % \put(171,-103){\skbonde}%bond between 2 and 3 % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%% % % inner double bond % % %%%%%%%%%%%%%%%%%%%%% \@tfor\member:=#2\do{% \if\member r\relax% \else\if\member a\relax\put(0,0){\bondc}% \else\if\member b\relax\put(171,-103){\bonde}% \else\if\member c\relax\put(0,-200){\bonda}% \else\if\member A\relax% aromatic circle \put(70,103){\circle{100}}% %circle \else % %%%%%%%%%%%%%%%%%%%%%%%%% % % inner bond attachment % % %%%%%%%%%%%%%%%%%%%%%%%%% \expandafter\twoCH@@R\member//% \set@fusionadd@threeh \fi\fi\fi\fi\fi% }% % \end{macrocode} % % The proceduce of setting hetero atoms on the vertices of % a three-membered ring is based on the macro |\set@hetaromh@sixh|, % where the positions 4, 6, and 2 of a horizontal six-membered ring % are used in place of the positions 1, 2, and 3 of the three-membered ring. % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%% % % setting hetero atoms % % %%%%%%%%%%%%%%%%%%%%%%%% \iniflag %\put(-235,103){\set@hetatom@sixh{#3}{3}{3}{5}{0}% \put(-215,103){\set@hetatom@sixh{#3}{3}{3}{5}{0}% \if@clip \global\@cliptrue\fi}%subst 1 <--six h 4 \put(-103,29){\set@hetatom@sixh{#3}{-1}{1}{3}{0}% \if@bclip \global\@bcliptrue\fi}%subst 3 <--six h 2 \put(-103,171){\set@hetatom@sixh{#3}{4}{5}{7}{0}% \if@fclip \global\@fcliptrue\fi}%subst 2 <--six h 6 % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%% % % setting substituents % % %%%%%%%%%%%%%%%%%%%%%%%% \put(-235,103){\setsixringh{#4}{3}{3}{5}{0}}%subst 1 \put(-103,29){\setsixringh{#4}{-1}{1}{3}{0}}%subst 3 \put(-103,171){\setsixringh{#4}{4}{5}{7}{0}}%subst 2 \end{picture}% \iniatom\iniflag}% %end of \threeheteroh macro % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % The macro |\set@fusionadd@threeh| is an inner command contained % in the definition of |\threeheteroh| etc., where % the macro is used for setting an additive % or a fused ring at each bond (designated by |\@@tmpa|). The % fused ring is typeset by the inner command |\set@fusion@threeh|. % % \begin{macro}{\set@fusionadd@threeh} % \changes{v2.00}{1998/12/5}{New command: \cs{set@fusionadd@threeh}} % \begin{macrocode} \def\set@fusionadd@threeh{% \if\@@tmpa 0\relax% \putratom{35}{85}{\scriptsize\@@tmpb}% % right type \else\if\@@tmpa 1\relax% \putratom{80}{85}{\scriptsize\@@tmpb}% % right type \else\if\@@tmpa 2\relax% \putratom{15}{50}{\scriptsize\@@tmpb}% % right type \else\if\@@tmpa 3\relax% \putratom{15}{120}{\scriptsize\@@tmpb}% % right type \else\if\@@tmpa 4\relax% \putratom{180}{130}{\scriptsize\@@tmpb}% % right type \else\if\@@tmpa 5\relax% \putratom{20}{-60}{\scriptsize\@@tmpb}% % right type \else\if\@@tmpa 6\relax% \putratom{20}{230}{\scriptsize\@@tmpb}% % right type \else % %%%%%%%%%%%%%%%%%%%%% % % inner bond fusion % % %%%%%%%%%%%%%%%%%%%%% \set@fusion@threeh \fi\fi\fi\fi\fi\fi\fi% }% % \end{macrocode} % \end{macro} % % The inner command |\set@fusion@threeh| is used for typesetting % a fused ring at each bond represented by |\@@tmpa|. Warnings % concerning mismatched ring-fusions are based on the command % |\FuseWarning|. % % \begin{macro}{\set@fusion@threeh} % \changes{v2.00}{1998/12/5}{New command: \cs{set@fusion@threeh}} % \begin{macrocode} \def\set@fusion@threeh{% % %%%%%%%%%%%%%%%%%%%%% % % inner bond fusion % % %%%%%%%%%%%%%%%%%%%%% \if\@@tmpa b\relax% \putlratom{0}{0}{\@@tmpb}% % bond fused \FuseWarning{0}{-200}% {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}% \else\if\@@tmpa B\relax% \putlratom{0}{200}{\@@tmpb}% % bond fused \FuseWarning{0}{200}% {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}% \else\if\@@tmpa a\relax% \putlratom{171}{103}{\@@tmpb}% % bond fused \FuseWarning{171}{103}% {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}% \else\if\@@tmpa A\relax% \putlratom{0}{0}{\@@tmpb}% % bond fused \FuseWarning{-171}{-103}% {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}% \else\if\@@tmpa c\relax% \putlratom{0}{200}{\@@tmpb}% % bond fused \FuseWarning{-171}{103}% {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c}% \else\if\@@tmpa C\relax% \putlratom{171}{103}{\@@tmpb}% % bond fused \FuseWarning{171}{-103}% {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C}% \fi\fi\fi\fi\fi\fi% }% end of the macro \set@fusion@threeh % \end{macrocode} % \end{macro} % % \subsection{Inverse horizontal type} % % The macro |\threeheterohi| typesets a three-membered ring. The following % numbering is adopted in this macro. % % \begin{verbatim} % ******************************* % * thereehetero derivatives * % * (vertical horizontal type) * % ******************************* % % aaa bbb % c 3 % / | % eee 1 | b % fff a` | % 2 <---original point % ccc ddd % \end{verbatim} % % The macro |\threeheterohi| has two arguments |ATOMLIST| and |SUBSLIST| % as well as an optional argument |BONDLIST|. % Two optional arguments |SKBONDLIST| and |OMIT| are added to % treat stereochemical information or other bond situations. % % \begin{verbatim} % \threeheterohi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] % \end{verbatim} % % 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. % % \begin{verbatim} % 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 % \end{verbatim} % % 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. % % \begin{verbatim} % 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 % \end{verbatim} % % 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. % % \begin{verbatim} % 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 % \end{verbatim} % % The argument |OMIT| represents one or more bonds to be omitted. % The omitted edges may be regarded as both fused and non-fused % positions. % % \begin{verbatim} % OMIT: one or more bonds omitted (a to c; see BONDLIST) % \end{verbatim} % % Several examples are shown as follows. % \begin{verbatim} % e.g. % % \threeheterohi{1==N}{1==Cl;2==F} % \threeheterohi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} % \threeheterohi{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl} % \end{verbatim} % % \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw}, % \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, % \cs{yl@xdiff} and \cs{yl@ydiff}} % \changes{v2.00}{1998/12/5}{Add: spiro and fused rings} % % \begin{macro}{\threeheterohi} % \begin{macro}{\@three@heterohi} % \begin{macro}{\@three@@heterohi} % \begin{macro}{\@threeheterohi} % \begin{macrocode} \def\threeheterohi{\@ifnextchar({\@three@heterohi(@}{\@three@heterohi(@)}} \def\@three@heterohi(#1){\@ifnextchar[{\@three@@heterohi(#1)[@}% {\@three@@heterohi(#1)[@]}} \def\@three@@heterohi(#1)[#2]#3#4{\@ifnextchar[% {\@threeheterohi(#1)[#2]{#3}{#4}[@}% {\@threeheterohi(#1)[#2]{#3}{#4}[@]}} \def\@threeheterohi(#1)[#2]#3#4[#5]{% % \end{macrocode} % % The procedure of adusting substitution positions is based on % a horizontal six-membered ring, in which the positions % 1 (aaa), 5 (eee), 3 (ccc) are used in place of the positions % 1, 2, and 3 of the three-membered ring. % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%%%% % % treatment of atom list % % %%%%%%%%%%%%%%%%%%%%%%%%%% \iniatom\iniflag%initialize \test@vertix@sixv{#3}{a}{e}{c}{@}{@}{@}%tentative use for six-h % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adustment of subs positions % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \@reset@ylsw% \ylpositionh{#4}{0}{0}{2}{0}%subst 1 \if@ylsw \ifx\@@ylii\empty \def\@@ylii{171}\def\@@yli{-103}\fi \else \ylpositionh{#4}{0}{2}{4}{0}%subst 3 \fi \if@ylsw \ifx\@@ylii\empty \def\@@ylii{303}\def\@@yli{-29}\fi \else \ylpositionh{#4}{3}{4}{6}{0}%subst 2 \fi \if@ylsw \ifx\@@ylii\empty \def\@@ylii{303}\def\@@yli{-171}\fi \fi \if@ylsw \yl@shiftii=\@ylii \yl@shifti=\@yli \advance\yl@shiftii\@@ylii \advance\yl@shifti\@@yli \advance\yl@shiftii\yl@xdiff \advance\yl@shifti\yl@ydiff \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti) \reset@yl@xydiff%1999/1/6 by S. Fujita \else \begin{picture}(580,700)(-400,-240)% \iforigpt \put(-400,-240){\circle*{50}}% \put(0,0){\circle{50}}% \typeout{command `threeheterohi' origin: % (0,0) ---> (400,240)}\fi% \fi % \end{macrocode} % % The procedures of setting skeletal and inner bonds are based on % a vertical six-membered ring, where the bonds d, b, and f are % used in place of the bonds a, b, and c. % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%%%%%% % % retreatment of atom list % % %%%%%%%%%%%%%%%%%%%%%%%%%%%% \iniatom\iniflag%initialize \test@vertix@sixv{#3}{e}{c}{a}{@}{@}{@}% \test@vertix@sixv{#3}{f}{d}{b}{@}{@}{@}% % %%%%%%%%%%%%%%%%%% % % outer skeleton % % %%%%%%%%%%%%%%%%%% {\resetbdsw% \@bond@@omit{#5}% \put(0,0){\set@skel@bond{#1}{a}{d}}% % bond between 1 and 2 \@aaa -> \skbondd etc \put(-171,-103){\set@skel@bond{#1}{b}{b}}% % bond between 2 and 3 \@bbb -> \skbondb etc \put(0,-200){\set@skel@bond{#1}{c}{f}}% % bond between 3 and 1 \@ccc -> \skbondf etc }% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%% % % inner double bond % % %%%%%%%%%%%%%%%%%%%%% \@tfor\member:=#2\do{% \if\member r\relax% \else\if\member a\relax\put(0,0){\bondd}% \else\if\member b\relax\put(-171,-103){\bondb}% \else\if\member c\relax\put(0,-200){\bondf}% \else\if\member A\relax% aromatic circle \put(70,103){\circle{100}}% %circle \else % %%%%%%%%%%%%%%%%%%%%%%%%% % % inner bond attachment % % %%%%%%%%%%%%%%%%%%%%%%%%% \expandafter\twoCH@@R\member//% \set@fusionadd@threehi \fi\fi\fi\fi\fi% }% % \end{macrocode} % % The proceduce of setting hetero atoms on the vertices of % a three-membered ring is based on the macro |\set@hetaromh@sixh|, % where the positions 1, 5, and 3 of a horizontal six-membered ring % are used in place of the positions 1, 2, and 3 of the three-membered ring. % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%% % % setting hetero atoms % % %%%%%%%%%%%%%%%%%%%%%%%% \iniflag \put(-171,103){\set@hetatom@sixh{#3}{0}{0}{2}{0}% \if@aclip \global\@acliptrue\fi}%subst 1 <--six h 1 \put(-303,29){\set@hetatom@sixh{#3}{0}{2}{4}{0}% \if@cclip \global\@ccliptrue\fi}%subst 3 <--six h 3 \put(-303,171){\set@hetatom@sixh{#3}{3}{4}{6}{0}% \if@eclip \global\@ecliptrue\fi}%subst 2 <--six h 5 % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%% % % setting substituents % % %%%%%%%%%%%%%%%%%%%%%%%% \put(-171,103){\setsixringh{#4}{0}{0}{2}{0}}%subst 1 \put(-303,29){\setsixringh{#4}{0}{2}{4}{0}}%subst 3 \put(-303,171){\setsixringh{#4}{3}{4}{6}{0}}%subst 2 \end{picture}% \iniatom\iniflag}% %end of \threeheterohi macro % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % The macro |\set@fusionadd@threehi| is an inner command contained % in the definition of |\threeheterohi| etc., where % the macro is used for setting an additive % or a fused ring at each bond (designated by |\@@tmpa|). The % fused ring is typeset by the inner command |\set@fusion@threehi|. % % \begin{macro}{\set@fusionadd@threeh} % \changes{v2.00}{1998/12/5}{New command: \cs{set@fusionadd@threehi}} % \begin{macrocode} \def\set@fusionadd@threehi{% \if\@@tmpa 0\relax% \putlatom{-35}{85}{\scriptsize\@@tmpb}% % left type \else\if\@@tmpa 1\relax% \putlatom{-80}{85}{\scriptsize\@@tmpb}% % left type \else\if\@@tmpa 2\relax% \putlatom{-15}{50}{\scriptsize\@@tmpb}% % left type \else\if\@@tmpa 3\relax% \putlatom{-15}{120}{\scriptsize\@@tmpb}% % left type \else\if\@@tmpa 4\relax% \putlatom{-180}{130}{\scriptsize\@@tmpb}% % left type \else\if\@@tmpa 5\relax% \putlatom{-20}{-60}{\scriptsize\@@tmpb}% % left type \else\if\@@tmpa 6\relax% \putlatom{-20}{230}{\scriptsize\@@tmpb}% % left type \else % %%%%%%%%%%%%%%%%%%%%% % % inner bond fusion % % %%%%%%%%%%%%%%%%%%%%% \set@fusion@threehi \fi\fi\fi\fi\fi\fi\fi% }% % \end{macrocode} % \end{macro} % % The inner command |\set@fusion@threehi| is used for typesetting % a fused ring at each bond represented by |\@@tmpa|. Warnings % concerning mismatched ring-fusions are based on the command % |\FuseWarning|. % % \begin{macro}{\set@fusion@threehi} % \changes{v2.00}{1998/12/5}{New command: \cs{set@fusion@threehi}} % \begin{macrocode} \def\set@fusion@threehi{% % %%%%%%%%%%%%%%%%%%%%% % % inner bond fusion % % %%%%%%%%%%%%%%%%%%%%% \if\@@tmpa b\relax% \putlratom{0}{0}{\@@tmpb}% % bond fused \FuseWarning{0}{-200}% {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}% \else\if\@@tmpa B\relax% \putlratom{0}{200}{\@@tmpb}% % bond fused \FuseWarning{0}{200}% {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}% \else\if\@@tmpa a\relax% \putlratom{-171}{103}{\@@tmpb}% % bond fused \FuseWarning{-171}{103}% {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}% \else\if\@@tmpa A\relax% \putlratom{0}{0}{\@@tmpb}% % bond fused \FuseWarning{171}{-103}% {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}% \else\if\@@tmpa c\relax% \putlratom{0}{200}{\@@tmpb}% % bond fused \FuseWarning{171}{103}% {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c}% \else\if\@@tmpa C\relax% \putlratom{-171}{103}{\@@tmpb}% % bond fused \FuseWarning{-171}{-103}% {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C}% \fi\fi\fi\fi\fi\fi% }% end of the macro \set@fusion@threehi % % \end{macrocode} % \end{macro} % % \Finale % \endinput