diff options
author | Karl Berry <karl@freefriends.org> | 2013-11-19 00:56:32 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2013-11-19 00:56:32 +0000 |
commit | 0c16ddd29d43c785b867739f9b8fad8885ee548b (patch) | |
tree | 7402f2695ae367f7c96dba3224b4f1158900f077 /Master/texmf-dist/source/latex/xymtex/base/hetarom.dtx | |
parent | 717e7ac16b923e6683f358eab146a2a96a46d7e4 (diff) |
xymtex (now lppl, minus manuals without sources)
git-svn-id: svn://tug.org/texlive/trunk@32182 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/xymtex/base/hetarom.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/xymtex/base/hetarom.dtx | 8620 |
1 files changed, 8620 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/xymtex/base/hetarom.dtx b/Master/texmf-dist/source/latex/xymtex/base/hetarom.dtx new file mode 100644 index 00000000000..a61bca3e297 --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/hetarom.dtx @@ -0,0 +1,8620 @@ +% \iffalse meta-comment +%% File: hetarom.dtx +% +% Copyright 1993,1996,1998,2000,2002,2004,2006,2010,2013 by Shinsaku Fujita +% +% This file is part of XyMTeX system. +% ------------------------------------- +% +% This file is a successor to: +% +% hetarom.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]. +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% The Current Maintainer of this work is Shinsaku Fujita. +% +% This work consists of the files hetarom.dtx and hetarom.ins +% and the derived file hetarom.sty. +% +% Please report any bugs, comments, suggestions, etc. to: +% Shinsaku Fujita, +% Shonan Institute of Chemoinformatics and Mathematical Chemistry +% Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun, Kanagawa 250-0019 Japan +% (old address) +% Ashigara Research Laboratories, Fuji Photo Film Co., Ltd., +% Minami-Ashigara, Kanagawa-ken, 250-01, Japan. +% (old address) +% Department of Chemistry and Materials Technology, +% Kyoto Institute of Technology, \\ +% Matsugasaki, Sakyoku, Kyoto, 606 Japan +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hetarom} +% \def\versi@ndate{December 01, 1993} +% \def\versi@nno{ver1.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hetarom} +% \def\versi@ndate{August 16, 1996} +% \def\versi@nno{ver1.01} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hetarom} +% \def\versi@ndate{October 31, 1998} +% \def\versi@nno{ver1.02} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hetarom} +% \def\versi@ndate{December 25, 1998} +% \def\versi@nno{ver2.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hetarom} +% \def\versi@ndate{November 11, 2000} +% \def\versi@nno{ver2.00a} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hetarom} +% \def\versi@ndate{June 20, 2001} +% \def\versi@nno{ver2.01} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hetarom} +% \def\versi@ndate{April 30, 2002} +% \def\versi@nno{ver3.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hetarom} +% \def\versi@ndate{May 30, 2002} +% \def\versi@nno{ver4.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hetarom} +% \def\versi@ndate{August 30, 2004} +% \def\versi@nno{ver4.01} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hetarom} +% \def\versi@ndate{December 20, 2004} +% \def\versi@nno{ver4.02} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hetarom} +% \def\versi@ndate{September 5, 2006} +% \def\versi@nno{ver4.03b} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hetarom} +% \def\versi@ndate{October 01, 2010} +% \def\versi@nno{ver5.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \fi +% +% \CheckSum{9032} +%% \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/27}{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}{1998/11/11}{bug fix} +% \changes{v2.01}{2001/06/20}{Size reduction and Clip infomation} +% \changes{v2.01}{2001/06/21}{The command \cs{dotorline} is added.} +% \changes{v3.00}{2002/04/30}{sfpicture environment etc.} +% \changes{v4.00}{2002/05/30}{PostScript output and ShiftPicEnv} +% \changes{v4.01}{2004/08/30}{Minor additions} +% \changes{v4.02}{2004/12/20}{Exception to wedged bonds} +% \changes{v4.02a}{2004/12/27}{Bug fix: \cs{ggg} to \cs{gggA}} +% \changes{v4.03b}{2006/9/5}{Bug fix: \cs{decahetero} and \cs{nonahetero}} +% \changes{v5.00}{2010/10/01}{for bond coloring and the LaTeX Project Public License} +% \changes{v5.01}{2013/03/19}{Three and four-membered specfic commands are added} +% \fi +% +% \iffalse +%<*driver> +\NeedsTeXFormat{pLaTeX2e} +% \fi +\ProvidesFile{hetarom.dtx}[2013/03/19 v5.01 XyMTeX{} package file] +% \iffalse +\documentclass{ltxdoc} +\GetFileInfo{hetarom.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 vertical type by {\sffamily hetarom.sty} +(\fileversion) of \XyMTeX{}} +\author{Shinsaku Fujita \\ +Shonan Institute of Chemoinformatics and Mathematical Chemistry, \\ +Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun, Kanagawa 250-0019 Japan +% % (old address) +% %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{hetarom.dtx} +\end{document} +%</driver> +% \fi +% +% \section{Introduction}\label{hetarom:intro} +% +% \subsection{Options for {\sffamily docstrip}} +% +% \DeleteShortVerb{\|} +% \begin{center} +% \begin{tabular}{|l|l|} +% \hline +% \emph{option} & \emph{function}\\ \hline +% hetarom & hetarom.sty \\ +% driver & driver for this dtx file \\ +% \hline +% \end{tabular} +% \end{center} +% \MakeShortVerb{\|} +% +% \subsection{Version Information} +% +% \begin{macrocode} +%<*hetarom> +\typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 5.01} +\typeout{ -- Released March 19, 2013 by Shinsaku Fujita} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\j@urnalname{hetarom} +\def\versi@ndate{March 19, 2013} +\def\versi@nno{ver5.01} +\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 hetarom.sty} +% +% \begin{verbatim} +% ********************************* +% * hetarom.sty: list of commands * +% ********************************* +% +% <Various flags (switches)> +% +% \if@gclip \@gclipfalse \@gcliptrue +% \if@hclip \@hclipfalse \@hcliptrue +% \if@iclip \@iclipfalse \@icliptrue +% \if@jclip \@jclipfalse \@jcliptrue +% \iniflag +% \iniatom +% \aaa +% \bbb +% \ccc +% \ddd +% \eee +% \fff +% \gggA +% \hhh +% \iii +% \jjj +% \end{verbatim} +% +% \begin{verbatim} +% +% <Six-Membered Heterocycles> +% Setting inner double bonds +% +% \bonda +% \bondb +% \bondc +% \bondd +% \bonde +% \bondf +% \bondhoriz +% \bondhorizi +% +% Setting skeletal bonds +% +% \skbonda +% \skbondf +% \skbondc +% \skbondd +% \skbondb +% \skbonde +% \skbondhoriz +% \skbondhorizi +% +% Setting dotted skeletal bonds +% +% \dotskbonda +% \dotskbondf +% \dotskbondc +% \dotskbondd +% \dotskbondb +% \dotskbonde +% \dotskbondhoriz +% \dotskbondhorizi +% +% Basic Macros +% +% \sixheterov \@sixheterov +% \sixheterovi \@sixheterovi +% +% Application Macros +% +% \pyridinev \@pyridinev +% \pyridinevi \@pyridinevi +% \pyrazinev \@pyrazinev +% \pyrimidinev \@pyrimidinev +% \pyrimidinevi \@pyrimidinevi +% \pyridazinev \@pyridazinev +% \pyridazinevi \@pyridazinevi +% \triazinev \@triazinev +% \triazinevi \@triazinevi +% \end{verbatim} +% +% \begin{verbatim} +% +% <Five-Membered Heterocycles> +% Basic Macros +% +% \fiveheterov \@fiveheterov +% \fiveheterovi \@fiveheterovi +% +% Application Macros +% +% \pyrrolev \@pyrrolev +% \pyrazolev \@pyrazolev +% \imidazolev \@imidazolev +% \isoxazolev \@isoxazolev +% \oxazolev \@oxazolev +% +% \furanv \@furanv +% \thiophenev \@thiophenev +% +% \pyrrolevi \@pyrrolevi +% \pyrazolevi \@pyrazolevi +% \imidazolevi \@imidazolevi +% \isoxazolevi \@isoxazolevi +% \oxazolevi \@oxazolevi +% +% \furanvi \@furanvi +% \thiophenevi \@thiophenevi +% \end{verbatim} +% +% \begin{verbatim} +% +% <Six-Six-Fused Heterocycles> +% Basic Macros +% +% \decaheterov \@decaheterov +% \decaheterovi \@decaheterovi +% \decaheterovb \@decaheterovb +% \decaheterovt \@decaheterovt +% +% Adjustment Macros (for structures as substituents) +% \changes{v1.02}{1998/10/16}{Newly added command} +% +% \clipdetection +% \ylhetposition +% \ylhetpositionb +% \ylhetpositiont +% +% Application Macros +% +% \quinolinev \@quinolinev +% \quinolinevi \@quinolinevi +% \quinolinevb \@quinolinevb +% \quinolinevt \@quinolinevt +% +% \isoquinolinev \@isoquinolinev +% \isoquinolinevi \@isoquinolinevi +% \isoquinolinevb \@isoquinolinevb +% \isoquinolinevt \@isoquinolinevt +% +% \quinoxalinev \@quinoxalinev +% \quinoxalinevi \@quinoxalinevi +% \quinoxalinevb \@quinoxalinevb +% \quinoxalinevt \@quinoxalinevt +% +% \quinazolinev \@quinazolinev +% \quinazolinevi \@quinazolinevi +% \quinazolinevb \@quinazolinevb +% \quinazolinevt \@quinazolinevt +% +% \cinnolinev \@cinnolinev +% \cinnolinevi \@cinnolinevi +% \cinnolinevb \@cinnolinevb +% \cinnolinevt \@cinnolinevt +% +% \pteridinev \@pteridinev +% \pteridinevi \@pteridinevi +% \pteridinevb \@pteridinevb +% \pteridinevt \@pteridinevt +% \end{verbatim} +% +% \begin{verbatim} +% +% <Six-Five-Fused Heterocycles> +% Basic Macros +% +% \nonaheterov \@nonaheterov +% \nonaheterovi \@nonaheterovi +% +% Application Macros +% +% \purinev \@purinev +% \purinevi \@purinevi +% \indolev \@indolev +% \indolevi \@indolevi +% \indolizinev \@indolizinev +% \indolizinevi \@indolizinevi +% \isoindolev \@isoindolev +% \isoindolevi \@isoindolevi +% \benzofuranev \@benzofuranev +% \benzofuranevi \@benzofuranevi +% \isobenzofuranev \@isobenzofuranev +% \isobenzofuranevi \@isobenzofuranevi +% \benzoxazolev \@benzoxazolev +% \benzoxazolevi \@benzoxazolevi +% \end{verbatim} +% +% \begin{verbatim} +% +% <Four-Membered Heterocycles> +% Setting bonds +% \bondshoriz \bondshorizi +% \skbondshoriz \skbondshorizi +% +% Basic Macros +% +% \fourhetero \@fourhetero +% +% Application Macros +% +% \oxetane +% \azetidine +% +% \end{verbatim} +% +% \begin{verbatim} +% +% <Four-Membered Heterocycles> +% Setting inner double bonds +% +% \bondtria \bondtrib +% \skbondtria \skbondtrib +% \Bondtria \Bondtrib +% \skBondtria \skBondtrib +% +% Basic Macros +% +% (\fourhetero) (\@fourhetero) +% \set@fusionadd@fourv \set@fusion@fourv +% +% <Three-Membered Heterocycles> +% +% \threehetero \@threehetero +% \threeheteroi \@threeheteroi +% +% \threeheterov \@threeheterov +% \threeheterovi \@threeheterovi +% +% \set@fusionadd@threev \set@fusion@threev +% \set@fusionadd@threevi \set@fusion@threevi +% +% Application Macros +% +% \oxiranev \oxiranevi +% \aziridinev \aziridinevi +% \thiiranev \thiiranevi +% +% \end{verbatim} +% +% \begin{verbatim} +% +% <Building Units> +% +% \sixunitv \@sixunitv +% \fiveunitv \@fiveunitv +% \fiveunitvi \@fiveunitvi +% \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 hetarom.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}{}% +\unitlength=0.1pt% +% \end{macrocode} +% +% The following switches and macros have been moved to {\sf chemstr.sty}; +% hence, they are commented out. +% \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\gggA{}\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}}% +% \end{macrocode} +% +% \section{Initialization} +% +% \begin{macrocode} +\iniatom% +% \end{macrocode} +% +% \section{Macros for setting bonds} +% \subsection{Inner double bonds} +% +% The macros |\sixhetero| and |\fivehetero| use internal macros for setting +% inner double bonds in accordance with the presence or the absence of +% hetero atoms. During the processes of such setting, +% the inner macros |\bonda| to |\bondf| are used to set a bond +% on each edge of a six- or five-membered ring; and +% the inner macros |\bondz| to |\bondzi| draw horizontal bonds +% of a five-membered ring. +% +% Note that +% comments (conerning locant numbers) on the end of each row have +% lost the exact meaning, +% since such a command moiety is used in many macros after copying. +% +% \begin{verbatim} +% ****************************** +% * setting inner double bonds * +% ****************************** +% The following numbering is adopted in these macros. +% aaa +% 1 +% f * a +% fff 6 * * 2 bbb +% e | | b +% | | +% eee 5 * * 3 ccc +% d * c +% 4 <===== the original point +% ddd +% \end{verbatim} +% +% \begin{macro}{\bonda} +% The macro |\bonda| refers to the control sequences representing +% atoms on both of the terminal vertices (|\aaa| and |\bbb|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +% bond between 1 and 2 +\def\bonda{% + \ifx\aaa\empty% + \ifx\bbb\empty% + \Put@Line(6,364)(5,-3){126}% %double bond 1-2 + \else% + \Put@Line(6,364)(5,-3){100}% %double bond 1-2 + \fi% + \else% + \ifx\bbb\empty% + \Put@Line(35,340)(5,-3){100}% %double bond 1-2 + \else% + \Put@Line(35,352)(5,-3){100}% %double bond 1-2 + \fi% % line <1OO not available + \fi% + }% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bondb} +% The macro |\bondb| refers to the control sequences representing +% atoms on both of the terminal vertices (|\bbb| and |\ccc|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +% bond between 3 and 2 + \def\bondb{% + \ifx\bbb\empty% + \ifx\ccc\empty% + \Put@Line(138,129)(0,1){148}% %double bond 3-2 + \else% + \Put@Line(138,143)(0,1){134}% %double bond 3-2 + \fi% + \else% + \ifx\ccc\empty% + \Put@Line(138,129)(0,1){134}% %double bond 3-2 + \else% + \Put@Line(138,143)(0,1){110}% %double bond 3-2 + \fi% + \fi% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bondc} +% The macro |\bondc| refers to the control sequences representing +% atoms on both of the terminal vertices (|\ddd| and |\ccc|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +% bond between 4 and 3 + \def\bondc{% + \ifx\ddd\empty% + \ifx\ccc\empty% + \Put@Line(6,42)(5,3){126}% %double bond 4-3 + \else% + \Put@Line(6,42)(5,3){100}% %double bond 4-3 + \fi% + \else% + \ifx\ccc\empty% + \Put@Line(35,66)(5,3){100}% %double bond 4-3 + \else% + \Put@Line(35,60)(5,3){100}% %double bond 4-3 + \fi% % line <1OO not available + \fi% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bondd} +% The macro |\bondd| refers to the control sequences representing +% atoms on both of the terminal vertices (|\ddd| and |\eee|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +% bond between 4 and 5 + \def\bondd{% + \ifx\ddd\empty% + \ifx\eee\empty% + \Put@Line(-6,42)(-5,3){126}% %double bond 4-5 + \else% + \Put@Line(-6,42)(-5,3){100}% %double bond 4-5 + \fi% + \else% + \ifx\eee\empty% + \Put@Line(-35,66)(-5,3){100}% %double bond 4-5 + \else% + \Put@Line(-35,60)(-5,3){100}% %double bond 4-5 + \fi% % line <1OO not available + \fi% + }% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bonde} +% The macro |\bonde| refers to the control sequences representing +% atoms on both of the terminal vertices (|\fff| and |\eee|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +% bond between 5 and 6 +\def\bonde{% + \ifx\fff\empty% + \ifx\eee\empty% + \Put@Line(-138,129)(0,1){148}% %double bond 5-6 + \else% + \Put@Line(-138,143)(0,1){134}% %double bond 5-6 + \fi% + \else% + \ifx\eee\empty% + \Put@Line(-138,129)(0,1){134}% %double bond 5-6 + \else% + \Put@Line(-138,143)(0,1){110}% %double bond 5-6 + \fi% + \fi% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bondf} +% The macro |\bondf| refers to the control sequences representing +% atoms on both of the terminal vertices (|\aaa| and |\fff|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +% bond between 1 and 6 +\def\bondf{% + \ifx\aaa\empty% + \ifx\fff\empty% + \Put@Line(-6,364)(-5,-3){126}% %double bond 1-6 + \else% + \Put@Line(-6,364)(-5,-3){100}% %double bond 1-6 + \fi% + \else% + \ifx\fff\empty% + \Put@Line(-35,340)(-5,-3){100}% %double bond 1-6 +% \Put@Line(-6,364)(-5,-3){126}% %double bond 1-6 bug fix 2010/10/01 + \else% + \Put@Line(-35,352)(-5,-3){100}% %double bond 1-6 + \fi% % line <1OO not available + \fi% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bondz} +% The macro |\bondz| refers to the control sequences representing +% atoms on both of the terminal vertices (|\fff| and |\bbb|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +% horizontal inner bond for five-membered rings +\def\bondhoriz{% + \ifx\fff\empty% + \ifx\bbb\empty% + \Put@Line(-138,270)(1,0){277}% %double bond 4-3 + \else% + \Put@Line(-138,270)(1,0){258}% %double bond 4-3 + \fi% + \else% + \ifx\bbb\empty% + \Put@Line(-120,270)(1,0){258}% %double bond 4-3 + \else% + \Put@Line(-120,270)(1,0){239}% %double bond 4-3 + \fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bondzi} +% The macro |\bondzi| refers to the control sequences representing +% atoms on both of the terminal vertices (|\eee| and |\ccc|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +% horizontal inner bond for five-membered rings (inverse type) +\def\bondhorizi{% + \ifx\eee\empty% + \ifx\ccc\empty% + \Put@Line(-138,136)(1,0){277}% %double bond 4-3 + \else% + \Put@Line(-138,136)(1,0){258}% %double bond 4-3 + \fi% + \else% + \ifx\ccc\empty% + \Put@Line(-120,136)(1,0){258}% %double bond 4-3 + \else% + \Put@Line(-120,136)(1,0){239}% %double bond 4-3 + \fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% \subsection{Skeletal bonds} +% +% The macros |\sixhetero| and |\fivehetero| use inner macros for setting +% skeletal bonds in accordance with the presence or the absence of +% hetero atoms. During the processes of such setting, +% the inner macros |\skbonda| to |\skbondf| are used to set a bond +% on each edge of a six- or five-membered ring; and +% the inner macros |\skbondz| to |\skbondzi| draw horizontal bonds +% of a five-membered ring. +% +% \begin{verbatim} +% ************************** +% * setting skeletal bonds * +% ************************** +% The following numbering is adopted in this macro. +% aaa +% 1 +% f * a +% fff 6 * * 2 bbb +% e | | b +% | | +% eee 5 * * 3 ccc +% d * c +% 4 <===== the original point +% ddd +% +% \end{verbatim} +% +% \begin{macro}{\skbonda} +% The macro |\skbonda| refers to the control sequences representing +% atoms on both of the terminal vertices (|\aaa| and |\bbb|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%bond between 1 and 2 +\def\skbonda{% + \ifx\aaa\empty% + \ifx\bbb\empty% + \Put@Line(0,406)(5,-3){171}% %bond 1-2 + \else% + \Put@Line(0,406)(5,-3){136}% %bond 1-2 + \fi% + \else% + \ifx\bbb\empty% + \Put@Line(35,385)(5,-3){136}% %bond 1-2 + \else% + \Put@Line(35,385)(5,-3){100}% %bond 1-2 + \fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\skbondf} +% The macro |\skbonda| refers to the control sequences representing +% atoms on both of the terminal vertices (|\aaa| and |\fff|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%bond between 1 and 6 +\def\skbondf{% + \ifx\aaa\empty% + \ifx\fff\empty% + \Put@Line(0,406)(-5,-3){171}% %bond 1-6 + \else% + \Put@Line(0,406)(-5,-3){136}% %bond 1-6 + \fi% + \else% + \ifx\fff\empty% + \Put@Line(-35,385)(-5,-3){136}% %bond 1-6 + \else% + \Put@Line(-35,385)(-5,-3){100}% %bond 1-6 + \fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\skbondc} +% The macro |\skbondc| refers to the control sequences representing +% atoms on both of the terminal vertices (|\ccc| and |\ddd|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%bond between 4 and 3 +\def\skbondc{% + \ifx\ddd\empty% + \ifx\ccc\empty% + \Put@Line(0,0)(5,3){171}% %bond 4-3 + \else% + \Put@Line(0,0)(5,3){136}% %bond 4-3 + \fi% + \else% + \ifx\ccc\empty% + \Put@Line(35,21)(5,3){138}% %bond 4-3 + \else% + \Put@Line(35,21)(5,3){100}% %bond 4-3 + \fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\skbondd} +% The macro |\skbondd| refers to the control sequences representing +% atoms on both of the terminal vertices (|\ddd| and |\eee|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%bond between 4 and 5 +\def\skbondd{% + \ifx\ddd\empty% + \ifx\eee\empty% + \Put@Line(0,0)(-5,3){171}% %bond 4-5 + \else% + \Put@Line(0,0)(-5,3){136}% %bond 4-5 + \fi% + \else% + \ifx\eee\empty% + \Put@Line(-35,21)(-5,3){138}% %bond 4-5 + \else% + \Put@Line(-35,21)(-5,3){100}% %bond 4-5 + \fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\skbondb} +% The macro |\skbondb| refers to the control sequences representing +% atoms on both of the terminal vertices (|\bbb| and |\ccc|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%bond between 3 and 2 +\def\skbondb{% + \ifx\bbb\empty%% + \ifx\ccc\empty%% + \Put@Line(171,103)(0,1){200}% %bond 3-2 + \else% + \Put@Line(171,143)(0,1){160}% %bond 3-2 + \fi% + \else% + \ifx\ccc\empty%% + \Put@Line(171,103)(0,1){150}% %bond 3-2 + \else% + \Put@Line(171,143)(0,1){110}% %bond 3-2 + \fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\skbonde} +% The macro |\skbonde| refers to the control sequences representing +% atoms on both of the terminal vertices (|\eee| and |\fff|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%bond between 5 and 6 +\def\skbonde{% + \ifx\eee\empty% + \ifx\fff\empty% + \Put@Line(-171,103)(0,1){200}% %bond 5-6 + \else% + \Put@Line(-171,103)(0,1){150}% %bond 5-6 + \fi% + \else% + \ifx\fff\empty% + \Put@Line(-171,143)(0,1){160}% %bond 5-6 + \else% + \Put@Line(-171,143)(0,1){110}% %bond 5-6 + \fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\skbondhoriz} +% The macro |\skbondhoriz| refers to the control sequences representing +% atoms on both of the terminal vertices (|\fff| and |\bbb|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%horizontal bond for five-membered rings +\def\skbondhoriz{% + \ifx\fff\empty% + \ifx\bbb\empty% + \Put@Line(-171,303)(1,0){342}% %bond 4-3 + \else% + \Put@Line(-171,303)(1,0){300}% %bond 4-3 + \fi% + \else% + \ifx\bbb\empty% + \Put@Line(171,303)(-1,0){300}% %bond 4-3 + \else% + \Put@Line(-129,303)(1,0){258}% %bond 4-3 + \fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\skbondhorizi} +% The macro |\skbondhorizi| refers to the control sequences representing +% atoms on both of the terminal vertices (|\eee| and |\ccc|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%horizontal bond for five-membered rings (inverse type) +\def\skbondhorizi{% + \ifx\eee\empty% + \ifx\ccc\empty% + \Put@Line(-171,103)(1,0){342}% %bond 4-3 + \else% + \Put@Line(-171,103)(1,0){300}% %bond 4-3 + \fi% + \else% + \ifx\ccc\empty% + \Put@Line(171,103)(-1,0){300}% %bond 4-3 + \else% + \Put@Line(-129,103)(1,0){258}% %bond 4-3 + \fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\set@outskel@sixv} +% The macro |\set@outskel@sixv| is to typeset a series of +% outer-skeleton bonds to six rings. It is +% used in |\sixheterov| and |\sixheterovi|. +% +% \begin{macrocode} +\def\set@outskel@sixv{% + \skbonda% bond between 1 and 2 + \skbondf% bond between 1 and 6 + \skbondc% bond between 4 and 3 + \skbondd% bond between 4 and 5 + \skbondb% bond between 3 and 2 + \skbonde% bond between 5 and 6 +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Dotted Skeletal Bonds} +% +% The macros |\sixfusev| etc. use inner macros for setting +% skeletal bonds in accordance with the presence or the absence of +% hetero atoms. During the processes of such setting, +% the inner macros |\dotskbonda| to |\dotskbondf| are used +% to set a dotted bond on each edge of a six- or five-membered ring. +% +% \begin{macro}{\dotskbonda} +% The macro |\dotskbonda| is the dotted couterpart of |\skbonda|, +% which refers to the control sequences representing +% atoms on both of the terminal vertices (|\aaa| and |\bbb|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%bond between 1 and 2 +\def\dotskbonda{% + \ifx\aaa\empty% + \ifx\bbb\empty% + \dotorline(0,406)(5,-3){171}/(0,406)(171,303)% + \else% + \dotorline(0,406)(5,-3){136}/(0,406)(136,324)% + \fi% + \else% + \ifx\bbb\empty% + \dotorline(35,385)(5,-3){136}/(35,386)(171,303)% + \else% + \dotorline(35,385)(5,-3){100}/(35,386)(136,324)% + \fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dotskbondb} +% The macro |\dotskbondb| is the dotted couterpart of |\skbondb|, +% which refers to the control sequences representing +% atoms on both of the terminal vertices (|\bbb| and |\ccc|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%bond between 3 and 2 +\def\dotskbondb{% + \ifx\bbb\empty%% + \ifx\ccc\empty%% + \dotorline(171,103)(0,1){200}/(171,103)(171,303)% + \else% + \dotorline(171,143)(0,1){160}/(171,143)(171,303)% + \fi% + \else% + \ifx\ccc\empty%% + \dotorline(171,103)(0,1){150}/(171,103)(171,253)% + \else% + \dotorline(171,143)(0,1){110}/(171,143)(171,253)% + \fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dotskbondc} +% The macro |\dotskbondc| is the dotted couterpart of |\skbondc|, +% which refers to the control sequences representing +% atoms on both of the terminal vertices (|\ccc| and |\ddd|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%bond between 4 and 3 +\def\dotskbondc{% + \ifx\ddd\empty% + \ifx\ccc\empty%% + \dotorline(0,0)(5,3){171}/(0,0)(171,103)% + \else% + \dotorline(0,0)(5,3){136}/(0,0)(136,81)% + \fi% + \else% + \ifx\ccc\empty% + \dotorline(35,21)(5,3){138}/(35,21)(171,103)% + \else% + \dotorline(35,21)(5,3){100}/(35,21)(136,81)% + \fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dotskbondd} +% The macro |\dotskbondd| is the dotted couterpart of |\skbondd|, +% which refers to the control sequences representing +% atoms on both of the terminal vertices (|\ddd| and |\eee|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%bond between 4 and 5 +\def\dotskbondd{% + \ifx\ddd\empty% + \ifx\eee\empty% + \dotorline(0,0)(-5,3){171}/(0,0)(-171,103)% + \else% + \dotorline(0,0)(-5,3){136}/(0,0)(-136,81)% + \fi% + \else% + \ifx\eee\empty% + \dotorline(-35,21)(-5,3){138}/(-35,21)(-171,103)% + \else% + \dotorline(-35,21)(-5,3){100}/(-35,21)(-136,81)% + \fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dotskbonde} +% The macro |\dotskbonde| is the dotted couterpart of |\skbonde|, +% which refers to the control sequences representing +% atoms on both of the terminal vertices (|\eee| and |\fff|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%bond between 5 and 6 +\def\dotskbonde{% + \ifx\eee\empty% + \ifx\fff\empty% + \dotorline(-171,103)(0,1){200}/(-171,103)(-171,303)% + \else% + \dotorline(-171,103)(0,1){150}/(-171,103)(-171,253)% + \fi% + \else% + \ifx\fff\empty% + \dotorline(-171,143)(0,1){160}/(-171,143)(-171,303)% + \else% + \dotorline(-171,143)(0,1){110}/(-171,143)(-171,253)% + \fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dotskbondf} +% The macro |\dotskbondf| is the dotted couterpart of |\skbondf|, +% which refers to the control sequences representing +% atoms on both of the terminal vertices (|\aaa| and |\fff|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%bond between 1 and 6 +\def\dotskbondf{% + \ifx\aaa\empty% + \ifx\fff\empty% + \dotorline(0,406)(-5,-3){171}/(0,406)(-171,303)% + \else% + \dotorline(0,406)(-5,-3){136}/(0,406)(-136,325)% + \fi% + \else% + \ifx\fff\empty% + \dotorline(-35,385)(-5,-3){136}/(-35,385)(-171,303)% + \else% + \dotorline(-35,385)(-5,-3){100}/(-35,385)(-136,325)% + \fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dotskbondhoriz} +% The macro |\dotskbondhoriz| is the dotted couterpart of |\skbondhoriz|, +% which refers to the control sequences representing +% atoms on both of the terminal vertices (|\fff| and |\bbb|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%horizontal bond for five-membered rings +\def\dotskbondhoriz{% + \ifx\fff\empty% + \ifx\bbb\empty% + \dotorline(-171,303)(1,0){342}/(-171,303)(171,303)% + \else% + \dotorline(-171,303)(1,0){300}/(-171,303)(129,303)% + \fi% + \else% + \ifx\bbb\empty% + \dotorline(171,303)(-1,0){300}/(171,303)(-129,303)% + \else% + \dotorline(-129,303)(1,0){258}/(-129,303)(129,303)% + \fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dotskbondhorizi} +% The macro |\dotskbondhorizi| refers to the control sequences representing +% atoms on both of the terminal vertices (|\eee| and |\ccc|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%horizontal bond for five-membered rings (inverse type) +\def\dotskbondhorizi{% + \ifx\eee\empty% + \ifx\ccc\empty% + \dotorline(-171,103)(1,0){342}/(-171,103)(171,103)% + \else% + \dotorline(-171,103)(1,0){300}/(-171,103)(129,103)% + \fi% + \else% + \ifx\ccc\empty% + \dotorline(171,103)(-1,0){300}/(171,103)(-129,103)% + \else% + \dotorline(-129,103)(1,0){258}/(-129,103)(129,103)% + \fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% The macro |\set@skel@bond| is used in such commands as |\sixheterov| +% and |\sixfusev| for setting skeletal bonds (outer bonds), +% when |\@aaa| etc. (produced by |\csname|...|\endcsname|) are equal +% to `a' etc. (given as \#2). Thinline, thickline and dotted-line +% skeletal bonds are available. +% +% \begin{macro}{\if@skbondlist} +% \begin{macrocode} +\newif\if@skbondlist +\@skbondlistfalse +% \end{macrocode} +% \end{macro}% from fusering.sty to hetarom.sty +% +% \changes{v4.02}{2004/12/20}{The positions of \cs{@skbondlisttrue} are changed.} +% \changes{v5.00}{2010/10/01}{For bond coloring} +% +% \begin{macro}{\set@skel@bond} +% \begin{macrocode} +\def\set@skel@bond#1#2#3{% + \expandafter\if\csname @#2#2#2\endcsname #2\relax%OK + % \if\@aaa #2\relax%OK + \def\skbondreplace{#3}% + \@skbondlistfalse + \@tfor\member:=#1\do{% + \expandafter\twoCH@@R\member//% + \if\@@tmpa #2\relax% + \if\@@tmpb A\relax% + \@skbondlisttrue + \expandafter\csname dotskbond#3\endcsname% \dotskbonda etc. +% \@skbondlisttrue + \else\if\@@tmpb B\relax% + \@skbondlisttrue + {\thicklines + \expandafter\csname skbond#3\endcsname% \skbonda etc. + }% +% \@skbondlisttrue + \else%%%added for color 2010/10/01 + \@skbondlisttrue% + \put(0,0){\@@tmpb}% + \fi\fi + \fi% + }% + \if@skbondlist\else + {\thinlines + \expandafter\csname skbond#3\endcsname% \skbonda 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@bond +% \end{macrocode} +% \end{macro} +% +% The macro |\set@skel@longbond| is used in |\fivefusev| etc. +% for setting skeletal bonds (outer bonds), when |\@aaa| etc. +% (produced by |\csname|...|\endcsname|) are equal to `a' +% etc. (given as \#2). Thinline, thickline and dotted-line +% skeletal bonds are available. +% +% hetarom.dtx +% \changes{v4.02}{2004/12/20}{The positions of \cs{@skbondlisttrue} are changed.} +% \changes{v5.00}{2010/10/01}{For bond coloring} +% +% \begin{macro}{\set@skel@longbond} +% \begin{macrocode} +\newif\iflongskbond \longskbondfalse +\def\set@skel@longbond#1#2#3{% + \expandafter\if\csname @#2#2#2\endcsname #2\relax%OK + % \if\@aaa #2\relax%OK + \def\skbondreplace{#3}% + \longskbondtrue% + \@skbondlistfalse + \@tfor\member:=#1\do{% + \expandafter\twoCH@@R\member//% + \if\@@tmpa #2\relax% + \if\@@tmpb A\relax% + \@skbondlisttrue + \expandafter\csname dot#3\endcsname% \dotskbonda etc. +% \@skbondlisttrue + \else\if\@@tmpb B\relax% + \@skbondlisttrue + {\thicklines + \expandafter\csname #3\endcsname% \skbonda etc. + }% +% \@skbondlisttrue + \else%%%added for color 2010/10/01 + \@skbondlisttrue% + \put(0,0){\@@tmpb}% + \fi\fi + \fi% + }% + \if@skbondlist\else + {\thinlines + \expandafter\csname #3\endcsname% \skbonda 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 + \longskbondfalse +}% end of \set@skel@longbond +% \end{macrocode} +% \end{macro} +% +% The macro |\@bond@@omit| is used in |\sixheterov| etc. +% for detecting omitted bonds, where |\@aaa| etc. are empty if +% they are omitted. +% +% \begin{macro}{\@bond@@omit} +% \begin{macrocode} +\def\@bond@@omit#1{% +\@tfor\memBer:=#1\do{% +\if\memBer a\relax\gdef\@aaa{}\fi% +\if\memBer A\relax\gdef\@aaa{}\fi% +\if\memBer b\relax\gdef\@bbb{}\fi% +\if\memBer B\relax\gdef\@bbb{}\fi% +\if\memBer c\relax\gdef\@ccc{}\fi% +\if\memBer C\relax\gdef\@ccc{}\fi% +\if\memBer d\relax\gdef\@ddd{}\fi% +\if\memBer D\relax\gdef\@ddd{}\fi% +\if\memBer e\relax\gdef\@eee{}\fi% +\if\memBer E\relax\gdef\@eee{}\fi% +\if\memBer f\relax\gdef\@fff{}\fi% +\if\memBer F\relax\gdef\@fff{}\fi% +\if\memBer g\relax\gdef\@ggg{}\fi% +\if\memBer G\relax\gdef\@ggg{}\fi% +\if\memBer h\relax\gdef\@hhh{}\fi% +\if\memBer H\relax\gdef\@hhh{}\fi% +\if\memBer i\relax\gdef\@iii{}\fi% +\if\memBer I\relax\gdef\@iii{}\fi% +\if\memBer j\relax\gdef\@jjj{}\fi% +\if\memBer J\relax\gdef\@jjj{}\fi% +\if\memBer k\relax\gdef\@kkk{}\fi% +\if\memBer K\relax\gdef\@kkk{}\fi% +}}% +% \end{macrocode} +% \end{macro} +% +% \section{Six-membered heterocyles} +% \subsection{Vertical type} +% +% The standard skeleton of a six-membered heterocycle is selected +% to have the following locant numbers. +% +% \begin{verbatim} +% ************************* +% * sixhetero derivatives * +% * (vertical type) * +% ************************* +% The following numbering is adopted in this macro. +% +% 1 +% * +% 6 * * 2 +% | | +% | | +% 5 * * 3 +% * +% 4 <===== the original point +% \end{verbatim} +% +% The macro |\sixheterov| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \sixheterov(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 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 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. +% +% \sixheterov{1==N}{1==Cl;2==F} +% \sixheterov[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \sixheterov[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl} +% \end{verbatim} +% +% The definition of |\sixheterov| 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 |\setsixringv|. +% \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/15}{Adding \cs{test@vertix@sixv}} +% +% \begin{macro}{\sixheterov} +% \begin{macro}{\@six@heterov} +% \begin{macro}{\@six@@heterov} +% \begin{macro}{\@sixheterov} +% \begin{macrocode} +\def\sixheterov{\@ifnextchar({\@six@heterov(@}{\@six@heterov(@)}} +\def\@six@heterov(#1){\@ifnextchar[{\@six@@heterov(#1)[@}% +{\@six@@heterov(#1)[@]}} +\def\@six@@heterov(#1)[#2]#3#4{\@ifnextchar[% +{\@sixheterov(#1)[#2]{#3}{#4}[@}% +{\@sixheterov(#1)[#2]{#3}{#4}[@]}} +\def\@sixheterov(#1)[#2]#3#4[#5]{% +% \end{macrocode} +% +% \changes{v3.01}{2002/4/30}{Replaced by \cs{ShiftPicEnv}} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%% +% % treatment of atom list % +% %%%%%%%%%%%%%%%%%%%%%%%%%% +\iniatom\iniflag%initialize +\test@vertix@sixv{#3}{a}{b}{c}{d}{e}{f}% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % adustment of subs positions % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\@reset@ylsw% +\ylposition{#4}{0}{0}{7}{0}% +\begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(800,880)(-\shiftii,-\shifti){sixheterov}%2002/4/30 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +{% +\resetbdsw% +\@bond@@omit{#5}% +\set@skel@bond{#1}{a}{a}% bond between 1 and 2 \@aaa -> \skbonda etc +\set@skel@bond{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc +\set@skel@bond{#1}{c}{c}% bond between 3 and 4 \@ccc -> \skbondc etc +\set@skel@bond{#1}{d}{d}% bond between 4 and 5 \@ddd -> \skbondd etc +\set@skel@bond{#1}{e}{e}% bond between 5 and 6 \@eee -> \skbonde etc +\set@skel@bond{#1}{f}{f}% bond between 6 and 1 \@fff -> \skbondf etc +}% +%%%%%\set@outskel@sixv % replaced by above 1998/12/30 +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\@tfor\member:=#2\do{% +\if\member r\relax \bondd \bondf \bondb% +\else\if\member l\relax \bonda \bondc \bonde% +\else\if\member a\relax \bonda% +\else\if\member b\relax \bondb% +\else\if\member c\relax \bondc% +\else\if\member d\relax \bondd% +\else\if\member e\relax \bonde% +\else\if\member f\relax \bondf% +\else\if\member A%left aromatic circle + \Put@oCircle(0,203){240}% %circle +% %%%%%%%%%%%%%%%%%%%%%%%%% +% % inner bond attachment % +% %%%%%%%%%%%%%%%%%%%%%%%%% +\else \expandafter\twoCH@@R\member//% + \set@fusionadd@sixv% +\fi\fi\fi\fi\fi\fi\fi\fi\fi% +}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting hetero atoms % +% %%%%%%%%%%%%%%%%%%%%%%%% +\set@hetatom@sixv{#3}{0}{0}{7}{0}% %atom 1--6% +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents % +% %%%%%%%%%%%%%%%%%%%%%%%% +\setsixringv{#4}{0}{0}{7}{0}% %subst 1--6 +\end{ShiftPicEnv}\iniatom\iniflag}% %end of \sixheterov macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Inverse vertical type} +% +% The standard skeleton of a six-membered heterocycle of inverse type +% is selected to have the following locant numbers. +% +% \begin{verbatim} +% ********************************** +% * sixhetero derivatives * +% * (vertical type, inverse type) * +% ********************************** +% The following numbering is adopted in this macro. +% +% 4 +% * +% 5 * * 3 +% | | +% | | +% 6 * * 2 +% * +% 1 <===== the original point +% \end{verbatim} +% +% The macro |\sixheterovi| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \sixheterovi(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 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 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. +% +% \sixheterovi{1==N}{1==Cl;2==F} +% \sixheterovi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \sixheterovi[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl} +% +% \end{verbatim} +% +% The definition of |\sixheterovi| 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 |\setsixringv|. +% \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}} +% +% \begin{macro}{\sixheterovi} +% \begin{macro}{\@six@heterovi} +% \begin{macro}{\@six@@heterovi} +% \begin{macro}{\@sixheterovi} +% \begin{macrocode} +\def\sixheterovi{\@ifnextchar({\@six@heterovi(@}{\@six@heterovi(@)}} +\def\@six@heterovi(#1){\@ifnextchar[{\@six@@heterovi(#1)[@}% +{\@six@@heterovi(#1)[@]}} +\def\@six@@heterovi(#1)[#2]#3#4{\@ifnextchar[% +{\@sixheterovi(#1)[#2]{#3}{#4}[@}% +{\@sixheterovi(#1)[#2]{#3}{#4}[@]}} +\def\@sixheterovi(#1)[#2]#3#4[#5]{% +% \end{macrocode} +% +% \changes{v3.01}{2002/4/30}{Replaced by \cs{ShiftPicEnv}} +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%% +% % treatment of atom list % +% %%%%%%%%%%%%%%%%%%%%%%%%%% +\iniatom\iniflag%initialize +\test@vertix@sixv{#3}{d}{c}{b}{a}{f}{e}% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % adjustment of subs positions % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\@reset@ylsw% +\ylposition{#4}{5}{0}{5}{-1}% %subst 1--4 +\ylposition{#4}{11}{4}{7}{-1}% %subst 5 and 6 +\begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(800,880)(-\shiftii,-\shifti){sixheterovi}%2002/4/30 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +{\resetbdsw% +\@bond@@omit{#5}% +\set@skel@bond{#1}{a}{c}% bond between 1 and 2 \@aaa -> \skbondc etc +\set@skel@bond{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc +\set@skel@bond{#1}{c}{a}% bond between 3 and 4 \@ccc -> \skbonda etc +\set@skel@bond{#1}{d}{f}% bond between 4 and 5 \@ddd -> \skbondf etc +\set@skel@bond{#1}{e}{e}% bond between 5 and 6 \@eee -> \skbonde etc +\set@skel@bond{#1}{f}{d}% bond between 6 and 1 \@fff -> \skbondd etc +}% +%%%\set@outskel@sixv% replaced by the above 1998/12/30 +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\@tfor\member:=#2\do{% +\if\member r\relax \bondd \bondf \bondb% +\else\if\member l\relax \bonda \bondc \bonde% +\else\if\member a\relax \bondc% +\else\if\member b\relax \bondb% +\else\if\member c\relax \bonda% +\else\if\member d\relax \bondf% +\else\if\member e\relax \bonde% +\else\if\member f\relax \bondd% +\else\if\member A%left aromatic circle + \Put@oCircle(0,203){240}% %circle +% %%%%%%%%%%%%%%%%%%%%%%%%% +% % inner bond attachment % +% %%%%%%%%%%%%%%%%%%%%%%%%% +\else \expandafter\twoCH@@R\member//% + \set@fusionadd@sixvi% +\fi\fi\fi\fi\fi\fi\fi\fi\fi% +}% +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting hetero atoms % +% %%%%%%%%%%%%%%%%%%%%%%%% +\set@hetatom@sixv{#3}{5}{0}{5}{-1}% %atom 1--4% +\set@hetatom@sixv{#3}{11}{4}{7}{-1}% %atom 5 and 6% +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents % +% %%%%%%%%%%%%%%%%%%%%%%%% +\setsixringv{#4}{5}{0}{5}{-1}% %subst 1--4 +\setsixringv{#4}{11}{4}{7}{-1}% %subst 5 and 6 +\end{ShiftPicEnv}\iniatom\iniflag}% %end of \sixheterovi macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Pyridine derivatives of vertical type} +% +% The macros |\sixheterov| and |\sixheterovi| can be used in the +% form of a fixed |ATOMLIST|. Hence, the resulting commands for +% drawing a six-membered heterocyle with one or more nitrogen atoms +% have an argument |SUBSLIST| as well as an optional argument |BONDLIST|. +% +% \begin{verbatim} +% ************************ +% * pyridine derivatives * +% * (vertical type) * +% ************************ +% +% \pyridinev[BONDLIST]{SUBSLIST} +% \pyridinevi[BONDLIST]{SUBSLIST} +% \pyrazinev[BONDLIST]{SUBSLIST} +% \pyrimidinev[BONDLIST]{SUBSLIST} +% \pyrimidinevi[BONDLIST]{SUBSLIST} +% \triazinev[BONDLIST]{SUBSLIST} +% \triazinevi[BONDLIST]{SUBSLIST} +% \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 n-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. +% +% \pyridinev{1==Cl;2==F} +% \pyridinev[c]{1==Cl;4==F;2==CH$_{3}$} +% \pyridinev[eb]{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl} +% \end{verbatim} +% +% \begin{macro}{\pridinev} +% \begin{macro}{\pridinevi} +% \begin{macrocode} +\def\pyridinev{\@ifnextchar[{\@pyridinev[@}{\@pyridinev[r]}} +\def\@pyridinev[#1]#2{% +\iforigpt \typeout{command `pyridinev' % + is based on `sixheterov'.}\fi% +\sixheterov[#1]{1==N}{#2}}%end of \pyridinev macro +\def\pyridinevi{\@ifnextchar[{\@pyridinevi[@}{\@pyridinevi[r]}} +\def\@pyridinevi[#1]#2{% +\iforigpt \typeout{command `pyridinevi' % + is based on `sixheterovi'.}\fi% +\sixheterovi[#1]{1==N}{#2}}%end of \pyridinevi macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\pyrazinev} +% \begin{macro}{\pyrazinevi} +% \begin{macrocode} +\def\pyrazinev{\@ifnextchar[{\@pyrazinev[@}{\@pyrazinev[r]}} +\def\@pyrazinev[#1]#2{% +\iforigpt \typeout{command `pyrazinev' % + is based on `sixheterov'.}\fi% +\sixheterov[#1]{1==N;4==N}{#2}}%end of \pyrazinev macro +%the same formula with an alternative locant numbering +\def\pyrazinevi{\@ifnextchar[{\@pyrazinevi[@}{\@pyrazinevi[r]}} +\def\@pyrazinevi[#1]#2{% +\iforigpt \typeout{command `pyrazinevi' % + is based on `sixheterovi'.}\fi% +\sixheterovi[#1]{1==N;4==N}{#2}}%end of \pyrazinevi macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\pyrimidinev} +% \begin{macro}{\pyrimidinevi} +% \begin{macrocode} +\def\pyrimidinev{\@ifnextchar[{\@pyrimidinev[@}{\@pyrimidinev[r]}} +\def\@pyrimidinev[#1]#2{% +\iforigpt \typeout{command `pyrimidinev' % + is based on `sixheterov'.}\fi% +\sixheterov[#1]{1==N;3==N}{#2}}%end of \pyrimidinev macro +\def\pyrimidinevi{\@ifnextchar[{\@pyrimidinevi[@}{\@pyrimidinevi[r]}} +\def\@pyrimidinevi[#1]#2{% +\iforigpt \typeout{command `pyrimidinevi' % + is based on `sixheterovi'.}\fi% +\sixheterovi[#1]{1==N;3==N}{#2}}%end of \pyrimidinevi macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\pyridazinev} +% \begin{macro}{\pyridazinevi} +% \begin{macrocode} +\def\pyridazinev{\@ifnextchar[{\@pyridazinev[@}{\@pyridazinev[r]}} +\def\@pyridazinev[#1]#2{% +\iforigpt \typeout{command `pyridazinev' % + is based on `sixheterov'.}\fi% +\sixheterov[#1]{1==N;2==N}{#2}}%end of \pyridazinev macro +\def\pyridazinevi{\@ifnextchar[{\@pyridazinevi[@}{\@pyridazinevi[r]}} +\def\@pyridazinevi[#1]#2{% +\iforigpt \typeout{command `pyridazinev' % + is based on `sixheterovi'.}\fi% +\sixheterovi[#1]{1==N;2==N}{#2}}%end of \pyridazinevi macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\triazinev} +% \begin{macro}{\triazinevi} +% \begin{macrocode} +\def\triazinev{\@ifnextchar[{\@triazinev[@}{\@triazinev[r]}} +\def\@triazinev[#1]#2{% +\iforigpt \typeout{command `triazinev' % + is based on `sixheterov'.}\fi% +\sixheterov[#1]{1==N;3==N;5==N}{#2}}%end of \triazinev macro +\def\triazinevi{\@ifnextchar[{\@triazinevi[@}{\@triazinevi[r]}} +\def\@triazinevi[#1]#2{% +\iforigpt \typeout{command `triazinevi' % + is based on `sixheterovi'.}\fi% +\sixheterovi[#1]{1==N;3==N;5==N}{#2}}%end of \triazinevi macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \section{Five-membered heterocycles} +% \subsection{Vertical type} +% +% The standard skeleton of a five-membered heterocycle +% is selected to have the following locant numbers. +% +% \begin{verbatim} +% ************************** +% * fivehetero derivatives * +% * (vertical type) * +% ************************** +% The following numbering is adopted in this macro. +% +% 4 _____ 3 +% | | +% | | +% 5 * * 2 +% * +% 1 <===== the original point +% \end{verbatim} +% +% The macro |\fiveheterov| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \fiveheterov(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+$' typesets 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 minus) 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. +% +% \fiveheterov{1==N}{1==H;2==F} +% \fiveheterov[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \fiveheterov[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl} +% \end{verbatim} +% +% The definition of |\fiveheterov| 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/10/31}{Add: fused and spiro rings} +% +% \begin{macro}{\fiveheterov} +% \begin{macro}{\@five@heterov} +% \begin{macro}{\@five@@heterov} +% \begin{macro}{\@fiveheterov} +% \begin{macrocode} +\def\fiveheterov{\@ifnextchar({\@five@heterov(@}{\@five@heterov(@)}} +\def\@five@heterov(#1){\@ifnextchar[{\@five@@heterov(#1)[@}% +{\@five@@heterov(#1)[@]}} +\def\@five@@heterov(#1)[#2]#3#4{\@ifnextchar[% +{\@fiveheterov(#1)[#2]{#3}{#4}[@}% +{\@fiveheterov(#1)[#2]{#3}{#4}[@]}} +\def\@fiveheterov(#1)[#2]#3#4[#5]{% +\iniatom\iniflag%initialize +% %%%%%%%%%%%%% +% % atom list % +% %%%%%%%%%%%%% +\test@vertix@sixv{#3}{d}{c}{b}{f}{e}{a}% +% \end{macrocode} +% +% \changes{v3.01}{2002/4/30}{Replaced by \cs{ShiftPicEnv}} +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % adustment of subs positions % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\@reset@ylsw% +\ylposition{#4}{5}{1}{5}{-1}% % for 1 to 3 +\ylposition{#4}{10}{4}{7}{-1}% % for 4 to 5 +\begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(800,880)(-\shiftii,-\shifti){fiveheterov}%2002/4/30 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +{\resetbdsw% +\@bond@@omit{#5}% +\set@skel@bond{#1}{a}{c}% bond between 1 and 2 \@aaa -> \skbondc etc +\set@skel@bond{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc +\set@skel@longbond{#1}{c}{skbondhoriz}% + % bond between 3 and 4 \@ccc -> \skbondhoriz etc +\set@skel@bond{#1}{d}{e}% bond between 4 and 5 \@ddd -> \skbonde etc +\set@skel@bond{#1}{e}{d}% bond between 5 and 1 \@eee -> \skbondd etc +}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\@tfor\member:=#2\do{% +\if\member r% +\else\if\member a\relax \bondc% +\else\if\member b\relax \bondb% +\else\if\member c\relax \bondhoriz% +\else\if\member d\relax \bonde% +\else\if\member e\relax \bondd% +\else\if\member A\relax% + \Put@oCircle(0,173){180}%aromatic circle +% %%%%%%%%%%%%%%%%%%%%%%%%% +% % inner bond attachment % +% %%%%%%%%%%%%%%%%%%%%%%%%% +\else + \expandafter\twoCH@@R\member//% + \set@fusionadd@fivev +\fi\fi\fi\fi\fi\fi\fi}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%% +% % setting heteroatoms % +% %%%%%%%%%%%%%%%%%%%%%%% +\set@hetatom@sixv{#3}{5}{1}{5}{-1}% % for 1 to 3 +\set@hetatom@sixv{#3}{10}{4}{7}{-1}% % for 4 to 5 +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents % +% %%%%%%%%%%%%%%%%%%%%%%%% +\setsixringv{#4}{5}{1}{5}{-1}% % for 1 to 3 +\setsixringv{#4}{10}{4}{7}{-1}% % for 4 to 5 +\end{ShiftPicEnv}\iniatom\iniflag}% %end of \fiveheterov macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Inverse vertical type} +% +% The standard skeleton of a five-membered heterocycle of inverse type +% is selected to have the following locant numbers. +% +% \begin{verbatim} +% ***************************** +% * fivehetero derivatives * +% * (vertical type, inverse) * +% ***************************** +% The following numbering is adopted in this macro. +% +% 1 +% * +% 6 * * 2 +% | | +% |_____| +% 4 3 +% * +% (0,0) <===== the original point +% \end{verbatim} +% +% The macro |\fiveheterovi| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \fiveheterovi(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 e, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The option `A' represents an aromatic circle. The option +% `$n+$' ($n=1$ to $5$) represents a plus charge on a hetero atom +% at the $n$-position. +% The option `$0+$' typesets a plus charge at the center of the ring. +% +% \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 minus) 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. +% +% \fiveheterovi{1==N}{1==H;2==F} +% \fiveheterovi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \fiveheterovi[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl} +% \end{verbatim} +% +% The definition of |\fiveheterovi| 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}} +% +% \begin{macro}{\fiveheterovi} +% \begin{macro}{\@five@heterovi} +% \begin{macro}{\@five@@heterovi} +% \begin{macro}{\@fiveheterovi} +% \begin{macrocode} +\def\fiveheterovi{\@ifnextchar({\@five@heterovi(@}{\@five@heterovi(@)}} +\def\@five@heterovi(#1){\@ifnextchar[{\@five@@heterovi(#1)[@}% +{\@five@@heterovi(#1)[@]}} +\def\@five@@heterovi(#1)[#2]#3#4{\@ifnextchar[% +{\@fiveheterovi(#1)[#2]{#3}{#4}[@}% +{\@fiveheterovi(#1)[#2]{#3}{#4}[@]}} +\def\@fiveheterovi(#1)[#2]#3#4[#5]{% +\iniatom\iniflag%initialize +% \end{macrocode} +% +% \changes{v3.01}{2002/4/30}{Replaced by \cs{ShiftPicEnv}} +% \begin{macrocode} +% %%%%%%%%%%%%% +% % atom list % +% %%%%%%%%%%%%% +\test@vertix@sixv{#3}{a}{b}{c}{e}{f}{d}% d -- dummy +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % adustment of subs positions % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\@reset@ylsw% +\ylposition{#4}{0}{0}{4}{0}% % for 1 to 3 +\ylposition{#4}{1}{4}{7}{0}% % for 4 to 5 +\begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(800,880)(-\shiftii,-\shifti){fiveheterov}%2002/4/30 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +{\resetbdsw% +\@bond@@omit{#5}% +\set@skel@bond{#1}{a}{a}% bond between 1 and 2 \@aaa -> \skbonda etc +\set@skel@bond{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc +\set@skel@longbond{#1}{c}{skbondhorizi}% + % bond between 3 and 4 \@ccc -> \skbondhorizi etc +\set@skel@bond{#1}{d}{e}% bond between 4 and 5 \@ddd -> \skbonde etc +\set@skel@bond{#1}{e}{f}% bond between 5 and 6 \@eee -> \skbondf etc +}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\@tfor\member:=#2\do{% +\if\member r% +\else\if\member a\relax \bonda% +\else\if\member b\relax \bondb% +\else\if\member c\relax \bondhorizi% +\else\if\member d\relax \bonde% +\else\if\member e\relax \bondf% +\else\if\member A\relax% + \Put@oCircle(0,233){180}%aromatic circle +\else + \expandafter\twoCH@@R\member//% + \set@fusionadd@fivevi +\fi\fi\fi\fi\fi\fi\fi}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%% +% % setting heteroatoms % +% %%%%%%%%%%%%%%%%%%%%%%% +\set@hetatom@sixv{#3}{0}{0}{4}{0}% % for 1 to 3 +\set@hetatom@sixv{#3}{1}{4}{7}{0}% % for 4 to 5 +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents % +% %%%%%%%%%%%%%%%%%%%%%%%% +\setsixringv{#4}{0}{0}{4}{0}% % for 1 to 3 +\setsixringv{#4}{1}{4}{7}{0}% % for 4 to 5 +\end{ShiftPicEnv}\iniatom\iniflag}% %end of \fiveheterovi macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Pyrrole derivatives of vertical type} +% +% The macro |\fiveheterov| can be used in the +% form of a fixed |ATOMLIST|. Hence, the resulting commands for +% drawing a five-membered heterocyle with one or more nitrogen atoms +% have an argument |SUBSLIST| as well as an optional argument |BONDLIST|. +% +% \begin{verbatim} +% *********************************** +% * pyrrole derivatives and others * +% * (vertical type) * +% *********************************** +% +% \pyrrolev[BONDLIST]{SUBSLIST} +% \pyrazolev[BONDLIST]{SUBSLIST} +% \imidazolev[BONDLIST]{SUBSLIST} +% \isoxazolev[BONDLIST]{SUBSLIST} +% \oxazolev[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. +% +% \pyrrolev{1==H;2==F} +% \pyrrolev[]{1==H;2==F} +% \imidazolev[c]{1==Cl;4==F;2==CH$_{3}$} +% \isoxazolev[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl} +% \end{verbatim} +% +% \begin{macro}{\pyrrolev} +% \begin{macro}{\pyrazolev} +% \begin{macro}{\imidazolev} +% \begin{macro}{\isoxazolev} +% \begin{macro}{\oxazolev} +% \begin{macrocode} +\def\pyrrolev{\@ifnextchar[{\@pyrrolev[@}{\@pyrrolev[bd]}} +\def\@pyrrolev[#1]#2{% +\iforigpt \typeout{command `pyrrolev' % + is based on `fiveheterov'.}\fi% +\fiveheterov[#1]{1==N}{#2}} +\def\pyrazolev{\@ifnextchar[{\@pyrazolev[@}{\@pyrazolev[bd]}} +\def\@pyrazolev[#1]#2{% +\iforigpt \typeout{command `pyrazolev' % + is based on `fiveheterov'.}\fi% +\fiveheterov[#1]{1==N;2==N}{#2}} +\def\imidazolev{\@ifnextchar[{\@imidazolev[@}{\@imidazolev[bd]}} +\def\@imidazolev[#1]#2{% +\iforigpt \typeout{command `imidazolev' % + is based on `fiveheterov'.}\fi% +\fiveheterov[#1]{1==N;3==N}{#2}} +\def\isoxazolev{\@ifnextchar[{\@isoxazolev[@}{\@isoxazolev[bd]}} +\def\@isoxazolev[#1]#2{% +\iforigpt \typeout{command `isoxazolev' % + is based on `fiveheterov'.}\fi% +\fiveheterov[#1]{1==O;2==N}{#2}} +\def\oxazolev{\@ifnextchar[{\@oxazolev[@}{\@oxazolev[bd]}} +\def\@oxazolev[#1]#2{% +\iforigpt \typeout{command `oxazolev' % + is based on `fiveheterov'.}\fi% +\fiveheterov[#1]{1==O;3==N}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\furanv} +% \begin{macro}{\thiophenev} +% \begin{macrocode} +\def\furanv{\@ifnextchar[{\@furanv[@}{\@furanv[bd]}} +\def\@furanv[#1]#2{% +\iforigpt \typeout{command `furanv' % + is based on `fiveheterov'.}\fi% +\fiveheterov[#1]{1==O}{#2}} +\def\thiophenev{\@ifnextchar[{\@thiophenev[@}{\@thiophenev[bd]}} +\def\@thiophenev[#1]#2{% +\iforigpt \typeout{command `thiophenev' % + is based on `fiveheterov'.}\fi% +\fiveheterov[#1]{1==S}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Pyrrole derivatives of inverse vertical type} +% +% The macro |\fiveheterovi| can be used in the +% form of a fixed |ATOMLIST|. Hence, the resulting commands for +% drawing a five-membered heterocyle with one or more nitrogen atoms +% have an argument |SUBSLIST| as well as an optional argument |BONDLIST|. +% +% \begin{verbatim} +% *********************************** +% * pyrrole derivatives and others * +% * (vertical type, inverse) * +% *********************************** +% +% \pyrrolevi[BONDLIST]{SUBSLIST} +% \pyrazolevi[BONDLIST]{SUBSLIST} +% \imidazolevi[BONDLIST]{SUBSLIST} +% \isoxazolevi[BONDLIST]{SUBSLIST} +% \oxazolevi[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 (max 6 substitution positions) +% +% for n = 1 to 5 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \pyrrolevi{1==H;2==F} +% \pyrrolevi[]{1==H;2==F} +% \imidazolevi[c]{1==Cl;4==F;2==CH$_{3}$} +% \isoxazolevi[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl} +% \end{verbatim} +% +% \begin{macro}{\pyrrolevi} +% \begin{macro}{\pyrazolevi} +% \begin{macro}{\imidazolevi} +% \begin{macro}{\isoxazolevi} +% \begin{macro}{\oxazolevi} +% \begin{macrocode} +\def\pyrrolevi{\@ifnextchar[{\@pyrrolevi[@}{\@pyrrolevi[bd]}} +\def\@pyrrolevi[#1]#2{% +\iforigpt \typeout{command `pyrrolevi' % + is based on `fiveheterovi'.}\fi% +\fiveheterovi[#1]{1==N}{#2}} +\def\pyrazolevi{\@ifnextchar[{\@pyrazolevi[@}{\@pyrazolevi[bd]}} +\def\@pyrazolevi[#1]#2{% +\iforigpt \typeout{command `pyrazolevi' % + is based on `fiveheterovi'.}\fi% +\fiveheterovi[#1]{1==N;2==N}{#2}} +\def\imidazolevi{\@ifnextchar[{\@imidazolevi[@}{\@imidazolevi[bd]}} +\def\@imidazolevi[#1]#2{% +\iforigpt \typeout{command `imidazolevi' % + is based on `fiveheterovi'.}\fi% +\fiveheterovi[#1]{1==N;3==N}{#2}} +\def\isoxazolevi{\@ifnextchar[{\@isoxazolevi[@}{\@isoxazolevi[bd]}} +\def\@isoxazolevi[#1]#2{% +\iforigpt \typeout{command `isoxazolevi' % + is based on `fiveheterovi'.}\fi% +\fiveheterovi[#1]{1==O;2==N}{#2}} +\def\oxazolevi{\@ifnextchar[{\@oxazolevi[@}{\@oxazolevi[bd]}} +\def\@oxazolevi[#1]#2{% +\iforigpt \typeout{command `oxazolevi' % + is based on `fiveheterovi'.}\fi% +\fiveheterovi[#1]{1==O;3==N}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\furanvi} +% \begin{macro}{\thiophenevi} +% \begin{macrocode} +\def\furanvi{\@ifnextchar[{\@furanvi[@}{\@furanvi[bd]}} +\def\@furanvi[#1]#2{% +\iforigpt \typeout{command `furanvi' % + is based on `fiveheterovi'.}\fi% +\fiveheterovi[#1]{1==O}{#2}} +\def\thiophenevi{\@ifnextchar[{\@thiophenevi[@}{\@thiophenevi[bd]}} +\def\@thiophenevi[#1]#2{% +\iforigpt \typeout{command `thiophenevi' % + is based on `fiveheterovi'.}\fi% +\fiveheterovi[#1]{1==S}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \section{Six-to-six fused heterocyles} +% \subsection{Vertical type} +% +% The standard skeleton of a six-to-six fused heterocycle is selected +% to have the following locant numbers. +% +% \begin{verbatim} +% ************************** +% * decahetero derivatives * +% * (vertical type) * +% ************************** +% The following numbering is adopted in this macro. +% +% 8 (10)1 +% * 8a * +% 7 * * * * 2 +% | | | +% | | | +% 6 * * * * 3 +% * 4a * +% 5 (9) 4 +% ^ +% | +% the original point +% \end{verbatim} +% +% The macro |\decaheterov| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \decaheterov(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 : 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 |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. +% +% \decaheterov{1==N}{1==Cl;2==F} +% \decaheterov[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \decaheterov[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl} +% \end{verbatim} +% +% The definition of |\decaheterov| 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| 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/25}{Spiro rings and fused rings +% \cs{test@vertix@sixv}, \cs{test@vertix@decav}, etc.} +% \changes{v4.03b}{2006/9/5}{bug fix \cs{ggg} to \cs{gggA} etc. in \cs{test@vertix@sixv}} +% +% \begin{macro}{\decaheterov} +% \begin{macro}{\@deca@heterov} +% \begin{macro}{\@deca@@heterov} +% \begin{macro}{\@decaheterov} +% \begin{macrocode} +\def\decaheterov{\@ifnextchar({\@deca@heterov(@}{\@deca@heterov(@)}} +\def\@deca@heterov(#1){\@ifnextchar[{\@deca@@heterov(#1)[@}% +{\@deca@@heterov(#1)[@]}} +\def\@deca@@heterov(#1)[#2]#3#4{\@ifnextchar[% +{\@decaheterov(#1)[#2]{#3}{#4}[@}% +{\@decaheterov(#1)[#2]{#3}{#4}[@]}}% +\def\@decaheterov(#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% +\ylhetposition{#4}{0}{0}{5}{0}% %substituents on 1 to 4 +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-342}\def\@@yli{0}\fi +\else +\ylhetposition{#4}{-1}{3}{7}{0}% %substituents on 5 to 7 +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +\ylhetposition{#4}{-7}{0}{2}{0}% %substituent on 8 +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +{% +\clipdetection% +\@clipfusefalse \if@iclip \@clipfusetrue \fi% +\ylatombondposition{#4}{-8}{7}% %9 %for 4a position +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-171}\def\@@yli{-103}\fi +\else +{% +\clipdetection% +\@clipfusefalse \if@jclip \@clipfusetrue \fi% +\ylatombondposition{#4}{-9}{1}% %10 for 8a position +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-171}\def\@@yli{-303}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(1200,880)(-\shiftii,-\shifti){decaheterov}%2002/4/30 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +\begingroup +\resetbdsw% +\@bond@@omit{#5}% +{\let\fff=\jjj \let\eee=\iii% +\Put@Direct(342,0){\set@skel@bond{#1}{a}{a}}% + % bond between 1 and 2 \@aaa -> \skbonda etc +\Put@Direct(342,0){\set@skel@bond{#1}{b}{b}}% + % bond between 2 and 3 \@bbb -> \skbondb etc +\Put@Direct(342,0){\set@skel@bond{#1}{c}{c}}% + % bond between 3 and 4 \@ccc -> \skbondc etc +\Put@Direct(342,0){\set@skel@bond{#1}{d}{d}}% + % bond between 4 and 4a \@ddd -> \skbondd etc +\Put@Direct(342,0){\set@skel@bond{#1}{k}{e}}% + % bond between 4a and 8a \@kkk -> \skbonde etc +\Put@Direct(342,0){\set@skel@bond{#1}{j}{f}}% + % bond between 8a and 1 \@jjj -> \skbondf etc +}% +{\let\aaa=\hhh \let\ddd=\eee \let\eee=\fff \let\fff=\gggA% + \let\ccc=\iii \let\bbb=\jjj% +\set@skel@bond{#1}{i}{a}% bond between 8 and 8a \@iii -> \skbonda etc +\set@skel@bond{#1}{e}{c}% bond between 5 and 4a \@eee -> \skbondc etc +\set@skel@bond{#1}{f}{d}% bond between 5 and 6 \@fff -> \skbondd etc +\set@skel@bond{#1}{g}{e}% bond between 6 and 7 \@ggg -> \skbonde etc +\set@skel@bond{#1}{h}{f}% bond between 7 and 8 \@hhh -> \skbondf etc +}% +\endgroup +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\@tfor\member:=#2\do{% +\if\member r\relax% +{\let\fff=\jjj \let\eee=\iii% + \Put@Direct(342,0){\bonda}% bond between 1 and 2 + \Put@Direct(342,0){\bondc}% bond between 3 and 4 +}% +{\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA% + \let\ccc=\iii\let\bbb=\jjj% + \Put@Direct(0,0){\bondb}% bond between 8a and 4a + \Put@Direct(0,0){\bondf}% bond between 8 and 7 + \Put@Direct(0,0){\bondd}% bond between 5 and 6 +}% +\else\if\member l\relax% +\else\if\member a\relax% + \Put@Direct(342,0){\bonda}% bond between 1 and 2 +\else\if\member b\relax + \Put@Direct(342,0){\bondb}% bond between 2 and 3 +\else\if\member c\relax + \Put@Direct(342,0){\bondc}% bond between 3 and 4 +\else\if\member d\relax% +{\let\eee=\iii% + \Put@Direct(342,0){\bondd}% bond between 4 and 4a +}% +\else\if\member e\relax% +{\let\ccc=\iii \let\ddd=\eee% + \Put@Direct(0,0){\bondc}% bond between 5 and 4a +}% +\else\if\member f\relax% +{\let\ddd=\eee \let\eee=\fff% + \Put@Direct(0,0){\bondd}% bond between 5 and 6 +}% +\else\if\member g\relax% +{\let\eee=\fff \let\fff=\gggA% + \Put@Direct(0,0){\bonde}% bond between 6 and 7 +}% +\else\if\member h\relax% +{\let\aaa=\hhh \let\fff=\gggA% + \Put@Direct(0,0){\bondf}% bond between 8 and 7 +}% +\else\if\member i\relax% +{\let\aaa=\hhh \let\bbb=\jjj% + \Put@Direct(0,0){\bonda}% bond between 8 and 8a +}% +\else\if\member j\relax% +{\let\fff=\jjj% + \Put@Direct(342,0){\bondf}% bond between 1 and 8a +}% +\else\if\member k\relax% +{\let\ccc=\iii\let\bbb=\jjj% + \Put@Direct(0,0){\bondb}% bond between 8a and 4a +}% +\else\if\member K\relax% +{\let\eee=\iii\let\fff=\jjj% + \Put@Direct(342,0){\bonde}% bond between 8a and 4a in the other ring +}% +\else\if\member A%left aromatic circle + \Put@oCircle(0,203){240}% %circle +\else\if\member B%left aromatic circle + \Put@oCircle(342,203){240}% %circle +\else + \expandafter\twoCH@@R\member//% + \def\aax{8a}\def\aay{4a}\def\aaz{10}% + \if\@@tmpa 1\relax% % plus charge etc. + \putratom{304}{282}{\@@tmpb}% % right type + \else\if\@@tmpa 2\relax% + \putratom{402}{253}{\@@tmpb}% % right type + \else\if\@@tmpa 3\relax% + \putratom{402}{120}{\@@tmpb}% % right type + \else\if\@@tmpa 4\relax% + \putratom{304}{68}{\@@tmpb}% % right type + \else\if\@@tmpa 5\relax% + \putratom{-38}{68}{\@@tmpb}% % right type + \else\if\@@tmpa 6\relax% + \putlatom{-60}{253}{\@@tmpb}% % left type + \else\if\@@tmpa 7\relax% + \putlatom{-60}{120}{\@@tmpb}% % left type + \else\if\@@tmpa 8\relax% + \putratom{-38}{282}{\@@tmpb}% % right type + \else\if\@@tmpa 9\relax% + \putratom{60}{120}{\@@tmpb}% % right type +% \else\if\@@tmpa 10\relax% + \else\ifx\@@tmpa\aaz\relax%1998/10/17 + \putratom{60}{253}{\@@tmpb}% % right type + \else\ifx\@@tmpa\aax\relax% + \putratom{60}{253}{\@@tmpb}% % right type + \else\ifx\@@tmpa\aay\relax% + \putratom{60}{120}{\@@tmpb}% % right type + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +% *********************** +% * setting fused rings * +% *********************** + \expandafter\twoCH@R\member//% + \set@fusion@decav +\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.} +% \changes{v2.01}{2001/6/20}{The \cs{storeclipinfo} command is added.} +% \changes{v4.03b}{2006/9/5}{The \cs{storeclipinfo} command, bugfixed} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % setting hetero atoms and spiro rings % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\iniflag +\Put@Direct(342,0){\set@hetatom@sixv{#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 +\storeclipinfo%2001/06/20 +}% %substituents on 1 to 4 +{% +%\developclipinfo%2001/06/20 %2006/9/5deleted +\Put@Direct(0,0){\iniflag%2000/11/11 by S. Fujita + \set@hetatom@sixv{#3}{-1}{3}{7}{0}% +% \@gclipfalse \if@fclip \global\@gcliptrue \fi% +% \@fclipfalse \if@eclip \global\@fcliptrue \fi% +% \@eclipfalse \if@clip \global\@ecliptrue \fi +% + \@gclipfalse \if@fclip \@gcliptrue \fi% + \@fclipfalse \if@eclip \@fcliptrue \fi% + \@eclipfalse \if@clip \@ecliptrue \fi + \@clipfalse%2006/9/5added +% +\storeclipinfo%2001/06/20 +}%substituents on 5 to 7 +}{% +%\developclipinfo%2001/06/20 2006/9/5deleted +\Put@Direct(0,0){\iniflag%2000/11/11 by S. Fujita + \set@hetatom@sixv{#3}{-7}{0}{2}{0}% +%% \@hclipfalse \if@aclip \global\@hcliptrue \fi + \@hclipfalse \if@aclip \@hcliptrue \fi + \@aclipfalse%2006/9/5added +\storeclipinfo%%2001/06/20 +%%====\clipinfo====%%%2006/9/5test +}%%substituent on 8 +}{% +%\developclipinfo%%2001/06/20 2006/9/5deleted +\Put@Direct(0,0){\set@vrtx@fuse{#3}% +% \if@iclip \global\@icliptrue \fi +% \if@jclip \global\@jcliptrue \fi +\storeclipinfo%%2001/06/20 +}% fused positions +}% +%====\clipinfo====%%2006/9/5test +\developclipinfo%%2001/06/20 +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents and exocyclic bonds % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\global\drawsamesubsttrue%2002/05/30 warning on +{%2006/9/5bugfix +\Put@Direct(342,0){\setsixringv{#4}{0}{0}{5}{0}}% %substituents on 1 to 4 +}% +\global\drawsamesubstfalse%2002/05/30 warning off +{% + \@clipfalse \if@eclip \@cliptrue \fi% %substituents on 5 to 7 + \@eclipfalse \if@fclip \@ecliptrue \fi% + \@fclipfalse \if@gclip \@fcliptrue \fi% +\Put@Direct(0,0){\setsixringv{#4}{-1}{3}{7}{0}}% +}% +{\@aclipfalse \if@hclip \@acliptrue \fi% %substituent on 8 +\Put@Direct(0,0){\setsixringv{#4}{-7}{0}{2}{0}}% +}% +{\@clipfusefalse \if@iclip \@clipfusetrue \fi% + \Put@Direct(171,103){\setatombond{#4}{-8}{7}}% %9 %for 4a position +}% +{\@clipfusefalse \if@jclip \@clipfusetrue \fi% + \Put@Direct(171,303){\setatombond{#4}{-9}{1}}% %10 for 8a position +}% +\end{ShiftPicEnvB}\iniatom\iniflag}% %end of \decaheterov macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The |\clipdetection| command is used for the detection of +% clippings for a six-six ring. In particular, the clippings +% at the fused positions are detected in the |\decaheterov| command, +% where the data are applied to the command +% |\ylatombondposition| (chemstr.dtx). +% \changes{v1.02}{1998/10/16}{Newly added command} +% \changes{v2.01}{2001/6/20}{The +% \cs{storeclipinfo} command is added.} +% +% \begin{macro}{\clipdetection} +% \begin{macrocode} +\def\clipdetection{% +% hetero atom on 1 +\ifx\aaa\empty\else% + \@acliptrue% +\fi% +% hetero atom on 2 +\ifx\bbb\empty\else% + \@bcliptrue% +\fi% +% hetero atom on 3 +\ifx\ccc\empty\else% + \@ccliptrue% +\fi% +% hetero atom on 4 +\ifx\ddd\empty\else% + \@cliptrue% +\fi% +% hetero atom on 4a +{\let\eee=\iii% +\ifx\eee\empty\else% +% \global\@icliptrue% + \@icliptrue% + \storeclipinfo%2001/06/20 +\fi% +}% +\developclipinfo%2001/06/20 +% hetero atom on 8a +{\let\fff=\jjj% +\ifx\fff\empty\else% +% \global\@jcliptrue% + \@jcliptrue% + \storeclipinfo%2001/06/20 +\fi% +}% +\developclipinfo%2001/06/20 +% hetero atom on 5 +{\let\ddd=\eee% +\ifx\ddd\empty\else +% \global\@ecliptrue% + \@ecliptrue% + \storeclipinfo%2001/06/20 +\fi% +}% +\developclipinfo%2001/06/20 +% hetero atom on 6 +{\let\eee=\fff% +\ifx\eee\empty\else% +% \global\@fcliptrue% + \@fcliptrue% + \storeclipinfo%2001/06/20 +\fi% +}% +\developclipinfo%2001/06/20 +% hetero atom on 7 +{\let\fff=\gggA% +\ifx\fff\empty\else% +% \global\@gcliptrue% + \@gcliptrue% + \storeclipinfo%2001/06/20 +\fi% +}% +\developclipinfo%2001/06/20 +% hetero atom on 8 +{\let\aaa=\hhh% +\ifx\aaa\empty\else% +% \global\@hcliptrue% + \@hcliptrue% + \storeclipinfo%2001/06/20 +\fi% +}% +\developclipinfo%2001/06/20 +}% end \clipdetection +% \end{macrocode} +% \end{macro} +% +% The command |\ylhetposition| is used in the |\decaheterov| command, +% giving the sift values for drawing a structure as a substituent. +% \changes{v1.02}{1998/10/16}{Newly added command} +% \changes{v5.01}{2012/03/25}{Bug fixed} +% +% \begin{macro}{\ylhetposition} +% \begin{macrocode} +\def\ylhetposition#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 +% \end{macrocode} +% +% The flags |\@lyatrue| etc are not used in a revised edition. +% +% \begin{macrocode} + \or + \ifx\aaa\empty + \ifx\hhh\empty% aaa and hhh are absent + \gdef\@ylii{0}\gdef\@yli{-406}\global\@ylswtrue%\@ylatrue% subst. on 1 + \else% hhh is present + \def\@ylii{0}\def\@yli{-442}\@ylswtrue%\@ylatrue% subst. on 1 + \fi + \else%aaa is present + \def\@ylii{0}\def\@yli{-442}\@ylswtrue%\@ylatrue% subst. on 1 + \fi + \or\ifx\bbb\empty + \def\@ylii{-171}\def\@yli{-303}\@ylswtrue%\@ylbtrue% subst. on 2 +% \def\@ylii{-513}\def\@yli{-303}\@ylswtrue%\@ylbtrue% subst. on 2 + \else + \def\@ylii{-213}\def\@yli{-327}\@ylswtrue%\@ylbtrue% subst. on 2 +% \def\@ylii{-555}\def\@yli{-327}\@ylswtrue%\@ylbtrue% subst. on 2 + \fi + \or\ifx\ccc\empty + \def\@ylii{-171}\def\@yli{-103}\@ylswtrue%\@ylctrue% subst. on 3 +% \def\@ylii{-513}\def\@yli{-103}\@ylswtrue%\@ylctrue% subst. on 3 + \else + \def\@ylii{-213}\def\@yli{-79}\@ylswtrue%\@ylctrue% subst. on 3 +% \def\@ylii{-555}\def\@yli{-79}\@ylswtrue%\@ylctrue% subst. on 3 + \fi + \or\ifx\ddd\empty + \ifx\eee\empty% ddd and eee are absent + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%\@yldtrue% subst. on 4 + \else% eee present + \gdef\@ylii{0}\gdef\@yli{36}\global\@ylswtrue%\@yldtrue% subst. on 4 + \fi + \else% ddd present + \gdef\@ylii{0}\gdef\@yli{36}\global\@ylswtrue%\@yldtrue% subst. on 4 + \fi + \or + \ifx\eee\empty + \ifx\iii\empty + \ifx\fff\empty% eee, iii and fff are absent +% \def\@ylii{173}\def\@yli{-103}\@ylswtrue%\@yletrue% subst. on 5 + \def\@ylii{171}\def\@yli{-103}\@ylswtrue%\@yletrue% subst. on 5 refined 2013/03/25 + \else% fff is present + \def\@ylii{213}\def\@yli{-79}\@ylswtrue%\@yletrue% subst. on 5 + \fi +% \else% iii is present; fused position => no action here +% \def\@ylii{0}\def\@yli{-36}\@ylswtrue%\@yletrue% subst. on 5 + \fi + \else% eee is present +% \def\@ylii{213}\def\@yli{-79}\@ylswtrue%\@yletrue% subst. on 5 + \def\@ylii{171}\def\@yli{-103}\@ylswtrue%\@yletrue% subst. on 5 bug fix 2013/03/25 + \fi + \or + \ifx\fff\empty + \ifx\jjj\empty + \ifx\gggA\empty% fff, jjj, and ggg are absent +% \def\@ylii{173}\def\@yli{-303}\@ylswtrue%\@ylftrue% subst. on 6 + \def\@ylii{171}\def\@yli{-303}\@ylswtrue%\@ylftrue% subst. on 6 refined 2013/03/25 + \else%ggg is present + \def\@ylii{213}\def\@yli{-327}\@ylswtrue%\@ylftrue% subst. on 6 + \fi +% \else%jjj is present; fused position => no action here +% \def\@ylii{213}\def\@yli{-327}\@ylswtrue%\@ylftrue% subst. on 6 + \fi + \else%fff is present + \def\@ylii{213}\def\@yli{-327}\@ylswtrue%\@ylftrue% subst. on 6 + \fi% +\fi%end of ifcase +\fi\fi\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% \subsection{Inverse vertical type} +% +% The standard skeleton of a six-to-six fused heterocycle is selected +% to have the following locant numbers. +% +% \begin{verbatim} +% ********************************** +% * decahetero derivatives * +% * (vertical type, inverse type) * +% ********************************** +% The following numbering is adopted in this macro. +% +% 5 (9) 4 +% * 4a * +% 6 * * * * 3 +% | | | +% | | | +% 7 * * * * 2 +% * 8a * +% 8 (10)1 +% ^ +% | +% the original point +% \end{verbatim} +% +% The macro |\decaheterovi| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \decaheterovi(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 : decahetero (left-handed) +% [] : fully saturated form +% a : 1,2-double bond b : 2,3-double bond +% c : 4,3-double bond d : 4,4a-double bond +% e : 4a,5-double bond f : 5,6-double bond +% g : 6,7-double bond h : 7,8-double bond +% i : 8,8a-double bond j : 1,8a-double bond +% k : 4a,8a-double bond +% K : 4a,8a-double bond in the other ring +% A : aromatic circle B : aromatic circle +% {n+} : plus at the n-nitrogen atom (n = 1 to 10) +% \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. +% +% \decaheterovi{1==N}{1==Cl;2==F} +% \decaheterovi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \decaheterovi[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl} +% \end{verbatim} +% +% The definition of |\decaheterovi| uses a picture environment and +% consists of the same unit processes as shown in |\sixheterovi|: +% \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| 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/25}{Spiro rings and fused rings: +% \cs{test@vertix@decavi}, etc.} +% \changes{v2.01}{2001/06/20}{The \cs{storeclipinfo} command, etc.} +% +% \begin{macro}{\decaheterovi} +% \begin{macro}{\@deca@heterovi} +% \begin{macro}{\@deca@@heterovi} +% \begin{macro}{\@decaheterovi} +% \begin{macrocode} +\def\decaheterovi{\@ifnextchar({\@deca@heterovi(@}{\@deca@heterovi(@)}} +\def\@deca@heterovi(#1){\@ifnextchar[{\@deca@@heterovi(#1)[@}% +{\@deca@@heterovi(#1)[@]}} +\def\@deca@@heterovi(#1)[#2]#3#4{\@ifnextchar[% +{\@decaheterovi(#1)[#2]{#3}{#4}[@}% +{\@decaheterovi(#1)[#2]{#3}{#4}[@]}} +\def\@decaheterovi(#1)[#2]#3#4[#5]{% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%% +% % treatment of atom list % +% %%%%%%%%%%%%%%%%%%%%%%%%%% +\iniflag\iniatom% +%%\test@vertix@sixv{#3}{d}{c}{b}{a}{h}{g}% +%%\test@vertix@decav{#3}{f}{e}{i}{j}{@}{@}%{i}{j} fixed +\test@vertix@decavi{#3}% +% +% %%%%%%%%%%%%%%%%%%%%%%% +% % adjustment for (yl) % +% %%%%%%%%%%%%%%%%%%%%%%% +\@reset@ylsw% +\ylhetposition{#4}{5}{0}{5}{-1}% %substituents on 1 to 4 +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-342}\def\@@yli{0}\fi +\else +\ylhetposition{#4}{12}{3}{7}{-1}% %substituents on 6 to 8 +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +\ylhetposition{#4}{-4}{0}{2}{0}% %substituent on 5 +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +{% +\clipdetection% +\@clipfusefalse \if@iclip \@clipfusetrue \fi% + \ylatombondposition{#4}{-9}{7}% %10 for 8a position +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-171}\def\@@yli{-103}\fi +\else +{% +\clipdetection% +\@clipfusefalse \if@jclip \@clipfusetrue \fi% +\ylatombondposition{#4}{-8}{1}% %9 for 4a position +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-171}\def\@@yli{-303}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(1200,880)(-\shiftii,-\shifti){decaheterovi}%2002/4/30 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +\begingroup +\resetbdsw% +\@bond@@omit{#5}% +{\let\fff=\jjj \let\eee=\iii% +\Put@Direct(342,0){\set@skel@bond{#1}{c}{a}}% + % bond between 1 and 2 \@aaa -> \skbonda etc +\Put@Direct(342,0){\set@skel@bond{#1}{b}{b}}% + % bond between 2 and 3 \@bbb -> \skbondb etc +\Put@Direct(342,0){\set@skel@bond{#1}{a}{c}}% + % bond between 3 and 4 \@ccc -> \skbondc etc +\Put@Direct(342,0){\set@skel@bond{#1}{j}{d}}% + % bond between 4 and 4a \@ddd -> \skbondd etc +\Put@Direct(342,0){\set@skel@bond{#1}{k}{e}}% + % bond between 4a and 8a \@kkk -> \skbonde etc +\Put@Direct(342,0){\set@skel@bond{#1}{d}{f}}% + % bond between 8a and 1 \@jjj -> \skbondf etc +}% +{\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA% + \let\ccc=\iii\let\bbb=\jjj% +\set@skel@bond{#1}{e}{a}% bond between 8 and 8a \@eee -> \skbonda etc +\set@skel@bond{#1}{i}{c}% bond between 5 and 4a \@iii -> \skbondc etc +\set@skel@bond{#1}{h}{d}% bond between 5 and 6 \@hhh -> \skbondd etc +\set@skel@bond{#1}{g}{e}% bond between 6 and 7 \@ggg -> \skbonde etc +\set@skel@bond{#1}{f}{f}% bond between 7 and 8 \@fff -> \skbondf etc +}% +\endgroup +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\@tfor\member:=#2\do{% +\if\member r\relax% +{\let\fff=\jjj \let\eee=\iii% + \Put@Direct(342,0){\bonda}% bond between 1 and 2 + \Put@Direct(342,0){\bondc}% bond between 3 and 4 +}% +{\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA% + \let\ccc=\iii\let\bbb=\jjj% + \Put@Direct(0,0){\bondb}% bond between 8a and 4a + \Put@Direct(0,0){\bondf}% bond between 8 and 7 + \Put@Direct(0,0){\bondd}% bond between 5 and 6 +}% +\else\if\member l\relax% +\else\if\member a\relax% + \Put@Direct(342,0){\bondc}% bond between 3 and 4 +\else\if\member b\relax% + \Put@Direct(342,0){\bondb}% bond between 2 and 3 +\else\if\member c\relax% + \Put@Direct(342,0){\bonda}% bond between 1 and 2 +\else\if\member d\relax% +{\let\fff=\jjj% + \Put@Direct(342,0){\bondf}% bond between 1 and 8a +}% +\else\if\member e\relax% +{\let\aaa=\hhh \let\bbb=\jjj% + \Put@Direct(0,0){\bonda}% bond between 8 and 8a +}% +\else\if\member f\relax% +{\let\aaa=\hhh \let\fff=\gggA% + \Put@Direct(0,0){\bondf}% bond between 8 and 7 +}% +\else\if\member g\relax% +{\let\eee=\fff \let\fff=\gggA% + \Put@Direct(0,0){\bonde}% bond between 6 and 7 +}% +\else\if\member h\relax% +{\let\ddd=\eee \let\eee=\fff% + \Put@Direct(0,0){\bondd}% bond between 5 and 6 +}% +\else\if\member i\relax% +{\let\ccc=\iii \let\ddd=\eee% + \Put@Direct(0,0){\bondc}% bond between 5 and 4a +}% +\else\if\member j\relax% +{\let\eee=\iii% + \Put@Direct(342,0){\bondd}% bond between 4 and 4a +}% +\else\if\member k\relax% +{\let\ccc=\iii\let\bbb=\jjj% + \Put@Direct(0,0){\bondb}% bond between 8a and 4a +}% +\else\if\member K\relax% +{\let\eee=\iii\let\fff=\jjj% + \Put@Direct(342,0){\bonde}% bond between 8a and 4a in the other ring +}% +\else\if\member A%left aromatic circle + \Put@oCircle(0,203){240}% %circle +\else\if\member B%left aromatic circle + \Put@oCircle(342,203){240}% %circle +\else + \expandafter\twoCH@@R\member//% + \def\aax{4a}\def\aay{8a}\def\aaz{10}% + \if\@@tmpa 4\relax% % plus charge etc. + \putratom{304}{282}{\@@tmpb}% % right type + \else\if\@@tmpa 3\relax% + \putratom{402}{253}{\@@tmpb}% % right type + \else\if\@@tmpa 2\relax% + \putratom{402}{120}{\@@tmpb}% % right type + \else\if\@@tmpa 1\relax% + \putratom{304}{68}{\@@tmpb}% % right type + \else\if\@@tmpa 7\relax% + \putlatom{-60}{253}{\@@tmpb}% % left type + \else\if\@@tmpa 6\relax% + \putlatom{-60}{120}{\@@tmpb}% % left type + \else\if\@@tmpa 5\relax% + \putratom{-38}{282}{\@@tmpb}% % right type + \else\if\@@tmpa 9\relax% + \putratom{60}{253}{\@@tmpb}% % right type + \else\ifx\@@tmpa\aax\relax% + \putratom{60}{253}{\@@tmpb}% % right type + \else\ifx\@@tmpa\aay\relax% + \putratom{60}{120}{\@@tmpb}% % right type + \else\ifx\@@tmpa\aaz\relax% 1998/10/17 by S. Fujita +% \else\if\@@tmpa 10\relax% + \putratom{60}{120}{\@@tmpb}% % right type + \else\if\@@tmpa 8\relax% + \putratom{-38}{68}{\@@tmpb}% % right type + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +% *********************** +% * setting fused rings * +% *********************** + \expandafter\twoCH@R\member//% + \set@fusion@decavi +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +\fi\fi\fi\fi\fi\fi% +}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % setting hetero atoms and spiro rings % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\iniflag\iniatom% +\@tmpclipfalse +\Put@Direct(0,0){\set@hetatom@sixv{#3}{12}{3}{7}{-1}% +% \@gclipfalse \if@fclip \global\@gcliptrue \fi% +% \@fclipfalse \if@eclip \global\@fcliptrue \fi% +% \@eclipfalse \if@clip \global\@ecliptrue \fi% + \@gclipfalse \if@fclip \@gcliptrue \fi%%bug fix 2013/03/25 + \@fclipfalse \if@eclip \@fcliptrue \fi%%bug fix 2013/03/25 + \@eclipfalse \if@clip \@ecliptrue \@clipfalse \fi%%bug fix 2013/03/25 +\storeclipinfo +}%substituents on 6 to 8 +\developclipinfo +\Put@Direct(0,0){\set@hetatom@sixv{#3}{-4}{0}{2}{0}% +% \@aclipfalse \if@aclip \global\@hcliptrue \fi% +% \@aclipfalse \if@aclip \@hcliptrue \fi% + \@hclipfalse \if@aclip \@hcliptrue \@aclipfalse\fi%bug fix 2013/03/25 + \storeclipinfo +}%%substituent on 5 +\developclipinfo +\Put@Direct(0,0){\set@vrtx@decafusevi{#3}% + \@tmpclipfalse +% \if@iclip \global\@tmpcliptrue \fi +% \if@jclip \global\@icliptrue \fi +% \if@tmpclip \global\@jcliptrue \fi + \if@iclip \@tmpcliptrue \fi + \if@jclip \@icliptrue \fi + \if@tmpclip \@jcliptrue \fi + \storeclipinfo +}% fused positions +\developclipinfo +%to be done after all +\Put@Direct(342,0){\set@hetatom@sixv{#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 +\storeclipinfo +}% %substituents on 1 to 4 +\developclipinfo +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents and exocyclic bonds % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\global\drawsamesubsttrue%2002/05/30 warning on +\Put@Direct(342,0){\setsixringv{#4}{5}{0}{5}{-1}}% %substituents on 1 to 4 +\global\drawsamesubstfalse%2002/05/30 warning off +{\@clipfalse \if@eclip \@cliptrue \fi% %substituents on 6 to 8 + \@eclipfalse \if@fclip \@ecliptrue \fi% + \@fclipfalse \if@gclip \@fcliptrue \fi% +\Put@Direct(0,0){\setsixringv{#4}{12}{3}{7}{-1}}% +}% +{\@aclipfalse \if@hclip \@acliptrue \fi% %substituent on 5 +\Put@Direct(0,0){\setsixringv{#4}{-4}{0}{2}{0}}% +}% +{\@clipfusefalse \if@iclip \@clipfusetrue \fi% + \Put@Direct(171,103){\setatombond{#4}{-9}{7}}% %10 for 8a position +}% +{\@clipfusefalse \if@jclip \@clipfusetrue \fi% + \Put@Direct(171,303){\setatombond{#4}{-8}{1}}% %9 for 4a position +}% +\end{ShiftPicEnvB}\iniatom\iniflag}% %end of \decaheterovi macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The macro |\test@vertix@decavi| is used to test the presence of +% a hetero atom or a spiro substituent on a vertex of the +% decaheterovi nucleus. +% +% \begin{macro}{\if@tmpclip} +% \begin{macro}{\test@vertix@decavi} +% \begin{macrocode} +\newif\if@tmpclip \@tmpclipfalse +\def\test@vertix@decavi#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%2 + \if\@tmpb s\relax\def\ccc{}\else\def\ccc{@}\fi + \or%3 + \if\@tmpb s\relax\def\bbb{}\else\def\bbb{@}\fi + \or% + \if\@tmpb a% + \def\jjj{@}%4a + \else\if\@tmpb s% + \def\aaa{}%4 + \else\if\@tmpb h% + \def\aaa{@}%4 + \else\ifx\@tmpb\empty% + \def\aaa{@}%4 + \fi\fi\fi\fi% + \or%5 + \if\@tmpb s\relax\def\hhh{}\else\def\hhh{@}\fi + \or%6 + \if\@tmpb s\relax\def\gggA{}\else\def\gggA{@}\fi + \or%7 + \if\@tmpb s\relax\def\fff{}\else\def\fff{@}\fi + \or% + \if\@tmpb a% + \xdef\iii{@}%8a + \else\if\@tmpb s% + \xdef\eee{}%8s + \else\if\@tmpb h% + \xdef\eee{@}%8h + \else\ifx\@tmpb\empty% + \xdef\eee{@}%8 + \fi\fi\fi\fi% +\or%9 (= 4a) + \if\@tmpb s\relax\def\jjj{}\else\def\jjj{@}\fi +\or%10 (= 8a) + \if\@tmpb s\relax\def\iii{}\else\def\iii{@}\fi +\fi\fi}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The macro |\set@vrtx@decafusevi| is used to set +% a hetero atom or on a vertex of a bridgehead location. +% +% \begin{macro}{\set@vrtx@decafusevi} +% \begin{macrocode} +\def\set@vrtx@decafusevi#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\relax% +% \global\@icliptrue% + \@icliptrue%2001/06/20 by S. Fujita + \putlatom{207}{280}{\@memberb}% % left type + \else\relax + \fi + \or\or\or + \or%8 + \if\@tmpb a\relax% +% \global\@jcliptrue% + \@jcliptrue%%2001/06/20 by S. Fujita + \putlatom{207}{65}{\@memberb}% % left type + \else\relax + \fi +\or%9 (= 4a) +% \global\@icliptrue% + \@icliptrue%%2001/06/20 by S. Fujita + \putlatom{207}{280}{\@memberb}% % left type +\or%10 (= 8a) +% \global\@jcliptrue% + \@jcliptrue%%2001/06/20 by S. Fujita + \putlatom{207}{65}{\@memberb}% % left type +\fi\fi}% +}% end of the macro \set@vrtx@decafusevi +% \end{macrocode} +% \end{macro} +% +% The macro |\set@fusion@decavi| is used to set +% a fused ring or on an edge of the decaheterovi nucleus. +% +% \begin{macro}{\set@fusion@decavi} +% \begin{macrocode} +\def\set@fusion@decavi{% + \let\@@tmpa=\@tmpa + \let\@@tmpb=\@tmpb + \if\@tmpa a% + \let\@@tmpa=\@tmpa + \Put@Direct(342,0){\set@fusionadd@sixvi}% + \else\if\@tmpa A% + \let\@@tmpa=\@tmpa + \Put@Direct(342,0){\set@fusionadd@sixvi}% + \else\if\@tmpa b% + \let\@@tmpa=\@tmpa + \Put@Direct(342,0){\set@fusionadd@sixvi}% + \else\if\@tmpa B% + \let\@@tmpa=\@tmpa + \Put@Direct(342,0){\set@fusionadd@sixvi}% + \else\if\@tmpa c% + \let\@@tmpa=\@tmpa + \Put@Direct(342,0){\set@fusionadd@sixvi}% + \else\if\@tmpa C% + \let\@@tmpa=\@tmpa + \Put@Direct(342,0){\set@fusionadd@sixvi}% + \else\if\@tmpa d% + \let\@@tmpa=\@tmpa + \Put@Direct(342,0){\set@fusionadd@sixvi}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `d'}% + \fi + \else\if\@tmpa D% + \let\@@tmpa=\@tmpa + \Put@Direct(342,0){\set@fusionadd@sixvi}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `D'}% + \fi + \else\if\@tmpa e% + \edef\@@tmpa{c}% + \Put@Direct(0,0){\set@fusionadd@sixvi}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `e'}% + \fi + \else\if\@tmpa E% + \edef\@@tmpa{C}% + \Put@Direct(0,0){\set@fusionadd@sixvi}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `E'}% + \fi + \else\if\@tmpa f% + \edef\@@tmpa{d}% + \Put@Direct(0,0){\set@fusionadd@sixvi}% + \else\if\@tmpa F% + \edef\@@tmpa{D}% + \Put@Direct(0,0){\set@fusionadd@sixvi}% + \else\if\@tmpa g% + \edef\@@tmpa{e}% + \Put@Direct(0,0){\set@fusionadd@sixvi}% + \else\if\@tmpa G% + \edef\@@tmpa{E}% + \Put@Direct(0,0){\set@fusionadd@sixvi}% + \else\if\@tmpa h% + \edef\@@tmpa{f}% + \Put@Direct(0,0){\set@fusionadd@sixvi}% + \else\if\@tmpa H% + \edef\@@tmpa{F}% + \Put@Direct(0,0){\set@fusionadd@sixvi}% + \else\if\@tmpa i% + \edef\@@tmpa{a}% + \Put@Direct(0,0){\set@fusionadd@sixvi}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `i'}% + \fi + \else\if\@tmpa I% + \edef\@@tmpa{A}% + \Put@Direct(0,0){\set@fusionadd@sixvi}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `I'}% + \fi + \else\if\@tmpa j% + \edef\@@tmpa{f}% + \Put@Direct(342,0){\set@fusionadd@sixvi}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `j'}% + \fi + \else\if\@tmpa J% + \edef\@@tmpa{F}% + \Put@Direct(342,0){\set@fusionadd@sixvi}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `J'}% + \fi + \else\if\@tmpa k% + \edef\@@tmpa{e}% + \Put@Direct(342,0){\set@fusionadd@sixvi}% + \if@smallringsw\else + \XyMTeXWarning{Forbidden Fusion for bond `k'}% + \fi + \else\if\@tmpa K% + \edef\@@tmpa{E}% + \Put@Direct(342,0){\set@fusionadd@sixvi}% + \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@decavi +% \end{macrocode} +% \end{macro} +% +% \subsection{Vertical-bottom type} +% The macro |\decaheterovb| is used for drawing six-six heterocyclic +% derivatives of vertical-bottom type (numbering from the bottom +% to the left-upper part). +% The word ``vertical'' means that each benzene ring is a vertical type. +% The word ``bottom'' means that the benzene ring with young locant numbers +% is located at the bottom. +% The skeleton and endocyclic double bonds are drawn directly, +% while substituents and exocyclic bonds are placed by useing +% the inner macro |\setsixringv|. +% +% The standard skeleton of a six-to-six fused heterocycle is selected +% to have the following locant numbers. +% +% \changes{v1.02}{1998/10/16}{Newly added command} +% \changes{v2.01}{2001/06/20}{The \cs{storeclipinfo} command, etc.} +% +% \begin{verbatim} +% *************************** +% * decahetro derivatives * +% * (vertical bottom type) * +% *************************** +% The following numbering is adopted in this macro. +% +% 7 +% * +% 6 * * 8 +% | | +% | | 0G (4a) +% 5 * * * +% 0F(4a) * * 1 +% | | +% | | +% 4 * * 2 +% * +% 3 +% ^ +% | +% the original point +% \end{verbatim} +% +% The macro |\decaheterovb| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \decaheterovb(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 : decahetero (left-handed) +% [] : fully saturated form +% a : 1,2-double bond b : 2,3-double bond +% c : 4,3-double bond d : 4,4a-double bond +% e : 4a,5-double bond f : 5,6-double bond +% g : 6,7-double bond h : 7,8-double bond +% i : 8,8a-double bond j : 1,8a-double bond +% k : 4a,8a-double bond +% K : 4a,8a-double bond in the other ring +% A : aromatic circle B : aromatic circle +% {n+} : plus at the n-nitrogen atom (n = 1 to 10) +% \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. +% +% \decaheterovb{1==N}{1==Cl;2==F} +% \decaheterovb[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \decaheterovb[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl} +% \end{verbatim} +% +% The definition of |\decaheterovb| 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| 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/25}{Spiro rings and fused rings} +% +% \begin{macro}{\decaheterovb} +% \begin{macro}{\@deca@heterovb} +% \begin{macro}{\@deca@@heterovb} +% \begin{macro}{\@decaheterovb} +% \begin{macrocode} +\def\decaheterovb{\@ifnextchar({\@deca@heterovb(@}{\@deca@heterovb(@)}} +\def\@deca@heterovb(#1){\@ifnextchar[{\@deca@@heterovb(#1)[@}% +{\@deca@@heterovb(#1)[@]}} +\def\@deca@@heterovb(#1)[#2]#3#4{\@ifnextchar[% +{\@decaheterovb(#1)[#2]{#3}{#4}[@}% +{\@decaheterovb(#1)[#2]{#3}{#4}[@]}} +\def\@decaheterovb(#1)[#2]#3#4[#5]{% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%% +% % treatment of atom list % +% %%%%%%%%%%%%%%%%%%%%%%%%%% +\iniflag\iniatom% +\test@vertix@decavb{#3}% +% %%%%%%%%%%%%%%%%%%%%%%% +% % adjustment for (yl) % +% %%%%%%%%%%%%%%%%%%%%%%% +\@reset@ylsw% +{\let\eee=\ddd\let\ddd=\ccc +\let\ccc=\bbb\let\bbb=\aaa +\ylhetpositionb{#4}{1}{1}{6}{0}% %substituents on 1 to 4 +}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +\ylhetpositionb{#4}{0}{4}{7}{0}% %substituents on 5 to 6 +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{171}\def\@@yli{-303}\fi +\else +{\let\aaa=\gggA \let\bbb=\hhh +\ylhetpositionb{#4}{-6}{0}{3}{0}% %substituents on 7 to 8 +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{171}\def\@@yli{-303}\fi +\else +{% +\clipdetection% +\@clipfusefalse \if@iclip \@clipfusetrue \fi% +\ylatombondposition{#4}{-8}{9}% %9 %for 4a position +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{171}\def\@@yli{-303}\fi +\else +{% +\clipdetection% +\@clipfusefalse \if@jclip \@clipfusetrue \fi% +\ylatombondposition{#4}{-9}{3}% %10 for 8a position +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{-406}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(1000,1200)(-550,-240){decaheterob}%2002/4/30 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +\begingroup +\resetbdsw% +\@bond@@omit{#5}% +{\let\eee=\ddd\let\ddd=\ccc + \let\ccc=\bbb\let\bbb=\aaa + \let\aaa=\jjj \let\fff=\iii +\set@skel@bond{#1}{j}{a}% bond between 8a and 1 \@jjj -> \skbonda etc +\set@skel@bond{#1}{a}{b}% bond between 1 and 2 \@aaa -> \skbondb etc +\set@skel@bond{#1}{b}{c}% bond between 2 and 3 \@bbb -> \skbondc etc +\set@skel@bond{#1}{c}{d}% bond between 3 and 4 \@ccc -> \skbondd etc +\set@skel@bond{#1}{d}{e}% bond between 4 and 4a \@ddd -> \skbonde etc +\set@skel@bond{#1}{k}{f}% bond between 4a and 8a \@kkk -> \skbondf etc +}% +{\let\aaa=\gggA\let\bbb=\hhh\let\ccc=\jjj\let\ddd=\iii +\Put@Direct(-171,303){\set@skel@bond{#1}{h}{a}}% + % bond between 7 and 8 \@hhh -> \skbonda etc +\Put@Direct(-171,303){\set@skel@bond{#1}{i}{b}}% + % bond between 8 and 8a \@iii -> \skbondb etc +\Put@Direct(-171,303){\set@skel@bond{#1}{e}{d}}% + % bond between 4a and 5 \@eee -> \skbondd etc +\Put@Direct(-171,303){\set@skel@bond{#1}{f}{e}}% + % bond between 5 and 6 \@fff -> \skbonde etc +\Put@Direct(-171,303){\set@skel@bond{#1}{g}{f}}% + % bond between 6 and 7 \@ggg -> \skbondf etc +}% +\endgroup +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\@tfor\member:=#2\do{% +\if\member r\relax% +{\let\aaa=\gggA\let\bbb=\hhh\let\ccc=\jjj\let\ddd=\iii + \Put@Direct(-171,303){\bonda}% bond between 7 and 8 + \Put@Direct(-171,303){\bonde}% bond between 5 and 6 +}% +{\let\eee=\ddd\let\ddd=\ccc + \let\ccc=\bbb\let\bbb=\aaa + \let\aaa=\jjj \let\fff=\iii + \Put@Direct(0,0){\bondb}% bond between 1 and 2 + \Put@Direct(0,0){\bondd}% bond between 3 and 4 + \Put@Direct(0,0){\bondf}% bond between 4a and 4b +}% +\else\if\member l\relax% +\else\if\member a\relax% +{\let\ccc=\bbb\let\bbb=\aaa + \Put@Direct(0,0){\bondb}% bond between 1 and 2 +}% +\else\if\member b\relax +{\let\ddd=\ccc\let\ccc=\bbb + \Put@Direct(0,0){\bondc}% bond between 2 and 3 +}% +\else\if\member c\relax +{\let\eee=\ddd\let\ddd=\ccc + \Put@Direct(0,0){\bondd}% bond between 3 and 4 +}% +\else\if\member d\relax% +{\let\fff=\eee\let\eee=\ddd + \Put@Direct(0,0){\bonde}% bond between 4 and 4a +}% +\else\if\member e\relax% +{\let\ddd=\iii% + \Put@Direct(-171,303){\bondd}% bond between 5 and 4a +}% +\else\if\member f\relax% + \Put@Direct(-171,303){\bonde}% bond between 5 and 6 +\else\if\member g\relax% +{\let\aaa=\gggA + \Put@Direct(-171,303){\bondf}% bond between 6 and 7 +}% +\else\if\member h\relax% +{\let\aaa=\gggA \let\bbb=\hhh% + \Put@Direct(-171,303){\bonda}% bond between 8 and 7 +}% +\else\if\member i\relax% +{\let\bbb=\hhh \let\ccc=\jjj% + \Put@Direct(-171,303){\bondb}% bond between 8 and 8a +}% +\else\if\member j\relax% +{\let\bbb=\aaa\let\aaa=\jjj% + \Put@Direct(0,0){\bonda}% bond between 1 and 8a +}% +\else\if\member k\relax% +{\let\aaa=\jjj\let\fff=\iii% + \Put@Direct(0,0){\bondf}% bond between 8a and 4a +}% +\else\if\member K\relax% +{\let\ccc=\jjj\let\ddd=\iii% + \Put@Direct(-171,303){\bondc}% bond between 8a and 4a in the other ring +}% +\else\if\member A%left aromatic circle + \Put@oCircle(-171,506){240}% %circle +\else\if\member B%left aromatic circle + \Put@oCircle(0,203){240}% %circle +\else \expandafter\twoCH@@R\member//% + \def\aax{8a}\def\aay{4a}\def\aaz{10}% + \if\@@tmpa 1\relax% % plus charge etc. + \putratom{60}{253}{\@@tmpb}% % right type + \else\if\@@tmpa 2\relax% + \putratom{60}{120}{\@@tmpb}% % right type + \else\if\@@tmpa 3\relax% + \putratom{-38}{68}{\@@tmpb}% % right type + \else\if\@@tmpa 4\relax% + \putratom{-120}{120}{\@@tmpb}% % right type + \else\if\@@tmpa 5\relax% + \putlatom{-209}{431}{\@@tmpb}% % left type + \else\if\@@tmpa 6\relax% + \putlatom{-209}{546}{\@@tmpb}% % left type + \else\if\@@tmpa 7\relax% + \putratom{-209}{585}{\@@tmpb}% % right type + \else\if\@@tmpa 8\relax% + \putratom{-111}{546}{\@@tmpb}% % right type + \else\if\@@tmpa 9\relax% + \putlatom{-60}{253}{\@@tmpb}% % left type + \else\ifx\@@tmpa\aaz\relax% + \putratom{-38}{282}{\@@tmpb}% % right type + \else\ifx\@@tmpa\aax\relax% + \putratom{-38}{282}{\@@tmpb}% % right type + \else\ifx\@@tmpa\aay\relax% + \putratom{-209}{371}{\@@tmpb}% % right type + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +% *********************** +% * setting fused rings * +% *********************** + \expandafter\twoCH@R\member//% + \set@fusion@decavb +\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.} +% \changes{v5.01}{2013/03/23}{bug fix subs 7 to 8.} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting hetero atoms % +% %%%%%%%%%%%%%%%%%%%%%%%% +\iniflag\iniatom +\Put@Direct(-171,303){\set@hetatom@sixv{#3}{0}{4}{7}{0}% +%\if@eclip \global\@ecliptrue\fi% +%\if@fclip \global\@fcliptrue\fi% +\storeclipinfo +}% %substituents on 5 to 6 +\developclipinfo +\Put@Direct(-171,303){\set@hetatom@sixv{#3}{-6}{0}{3}{0}% +% \@gclipfalse \if@aclip \global\@gcliptrue \fi% +% \@hclipfalse \if@bclip \global\@hcliptrue \fi% + \@gclipfalse \if@aclip \@gcliptrue \fi% +% \@hclipfalse \if@bclip \@hcliptrue \fi% + \@hclipfalse \if@bclip \@hcliptrue \@bclipfalse \fi%bugfix 2013/03/23 +\storeclipinfo +}% %substituents on 7 to 8 +\developclipinfo +\Put@Direct(0,0){\set@vrtx@decafusevb{#3}% +% \if@iclip \global\@icliptrue \fi +% \if@jclip \global\@jcliptrue \fi +\storeclipinfo +}%9 %for 4a position, %10 for 8a position +\developclipinfo +%to be done after all +\Put@Direct(0,0){\iniflag%2000/11/11 by S. Fujita +\set@hetatom@sixv{#3}{1}{1}{6}{0}% +%\@aclipfalse \if@bclip \global\@acliptrue \fi% +%\@bclipfalse \if@cclip \global\@bcliptrue \fi% +%\@cclipfalse \if@clip \global\@ccliptrue \fi% +%\@clipfalse \if@eclip \global\@cliptrue \fi% +\@aclipfalse \if@bclip \@acliptrue \fi% +\@bclipfalse \if@cclip \@bcliptrue \fi% +\@cclipfalse \if@clip \@ccliptrue \fi% +\@clipfalse \if@eclip \@cliptrue \fi% +\storeclipinfo +}% %substituents on 1 to 4 +\developclipinfo +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents and exocyclic bonds % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\global\drawsamesubsttrue%2002/05/30 warning on +{% +\@eclipfalse \if@clip \@ecliptrue \fi% +\@clipfalse \if@cclip \@cliptrue \fi% +\@cclipfalse \if@bclip \@ccliptrue \fi% +\@bclipfalse \if@aclip \@bcliptrue \fi% +\Put@Direct(0,0){\setsixringv{#4}{1}{1}{6}{0}}% %substituents on 1 to 4 +}% +\global\drawsamesubstfalse%2002/05/30 warning off +{% +\Put@Direct(-171,303){\setsixringv{#4}{0}{4}{7}{0}}% %substituents on 5 to 6 +}% +{% + \@aclipfalse \if@gclip \@acliptrue \fi% + \@bclipfalse \if@hclip \@bcliptrue \fi% +\Put@Direct(-171,303){\setsixringv{#4}{-6}{0}{3}{0}}% %substituents on 7 to 8 +}% +{\@clipfusefalse \if@iclip \@clipfusetrue \fi% + \Put@Direct(-171,303){\setatombond{#4}{-8}{9}}% %9 %for 4a position +}% +{\@clipfusefalse \if@jclip \@clipfusetrue \fi% + \Put@Direct(0,406){\setatombond{#4}{-9}{3}}% %10 for 8a position +}% +\end{ShiftPicEnvB}\iniatom\iniflag}% %end of \decaheterovb macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The command |\ylhetpositionb| is used in the |\decaheterovb| command, +% giving the sift values for drawing a structure as a substituent. +% \changes{v1.02}{1998/10/16}{Newly added command} +% +% \begin{macro}{\ylhetpositionb} +% \begin{macrocode} +\def\ylhetpositionb#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% + \ifx\gggA\empty% aaa and ggg are absent + \gdef\@ylii{0}\gdef\@yli{-406}\global\@ylswtrue%\@ylatrue% subst. on 1 + \else% ggg is present + \gdef\@ylii{0}\gdef\@yli{-442}\global\@ylswtrue%\@ylatrue% subst. on 1 + \fi + \else%aaa is present + \gdef\@ylii{0}\gdef\@yli{-442}\global\@ylswtrue%\@ylatrue% subst. on 1 + \fi + \or + \ifx\bbb\empty + \ifx\hhh\empty% aaa and hhh are absent + \gdef\@ylii{-171}\gdef\@yli{-303}\global\@ylswtrue%\@ylbtrue% subst. on 2 + \else%hhh is present + \gdef\@ylii{-213}\gdef\@yli{-327}\global\@ylswtrue%\@ylbtrue% subst. on 2 + \fi + \else + \gdef\@ylii{-213}\gdef\@yli{-327}\global\@ylswtrue%\@ylbtrue% subst. on 2 + \fi + \or\ifx\ccc\empty + \gdef\@ylii{-171}\gdef\@yli{-103}\global\@ylswtrue%\@ylctrue% subst. on 3 + \else + \gdef\@ylii{-213}\gdef\@yli{-79}\global\@ylswtrue%\@ylctrue% subst. on 3 + \fi + \or + \ifx\ddd\empty + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%\@yldtrue% subst. on 4 + \else% ddd present + \gdef\@ylii{0}\gdef\@yli{36}\global\@ylswtrue%\@yldtrue% subst. on 4 + \fi + \or + \ifx\eee\empty + \gdef\@ylii{173}\gdef\@yli{-103}\global\@ylswtrue%\@yletrue% subst. on 5 + \else% eee is present + \gdef\@ylii{223}\gdef\@yli{-79}\global\@ylswtrue%\@yletrue% subst. on 5 + \fi + \or + \ifx\fff\empty + \gdef\@ylii{173}\gdef\@yli{-303}\global\@ylswtrue%\@ylftrue% subst. on 6 + \else%fff is present + \gdef\@ylii{213}\gdef\@yli{-327}\global\@ylswtrue%\@ylftrue% subst. on 6 + \fi +\fi%end of ifcase +\fi\fi\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% The macro |\test@vertix@decavb| determines the presence of +% a hetro atom or a spriro ring at each of the vertices. +% \changes{v2.00}{1998/12/25}{Added: spiro rings} +% +% \begin{macro}{\test@vertix@decavb} +% \begin{macrocode} +\def\test@vertix@decavb#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}%1 + \if\@tmpb s\relax\def\aaa{}\else\def\aaa{@}\fi + \or% \xdef\bbb{\@memberb}%2 + \if\@tmpb s\relax\def\bbb{}\else\def\bbb{@}\fi + \or% \xdef\ccc{\@memberb}%3 + \if\@tmpb s\relax\def\ccc{}\else\def\ccc{@}\fi + \or% + \if\@tmpb a% + \def\iii{@}%4a + \else\if\@tmpb s% + \def\ddd{}%4 + \else\if\@tmpb h% + \def\ddd{@}%4 + \else\ifx\@tmpb\empty% + \def\ddd{@}%4 + \fi\fi\fi\fi% + \or% \xdef\eee{\@memberb}%5 + \if\@tmpb s\relax\def\eee{}\else\def\eee{@}\fi + \or% \xdef\fff{\@memberb}%6 + \if\@tmpb s\relax\def\fff{}\else\def\fff{@}\fi + \or% \xdef\gggA{\@memberb}%7 + \if\@tmpb s\relax\def\gggA{}\else\def\gggA{@}\fi + \or% + \if\@tmpb a% + \def\jjj{@}%8a + \else\if\@tmpb s% + \def\hhh{}%8 + \else\if\@tmpb h% + \def\hhh{@}%4 + \else\ifx\@tmpb\empty% + \def\hhh{@}%4 + \fi\fi\fi\fi% +\or% \xdef\iii{\@memberb}%9 (= 4a) + \if\@tmpb s\relax\def\iii{}\else\def\iii{@}\fi +\or% \xdef\jjj{\@memberb}%10 (= 8a) + \if\@tmpb s\relax\def\jjj{}\else\def\jjj{@}\fi +\fi\fi}% +}% end of the macro \test@vertix@decavb +% \end{macrocode} +% \end{macro} +% +% The macro |\set@vrtx@decafusevb| typesets a hetero atom +% at each fused position. +% \changes{v2.00}{1998/12/25}{Added: spiro rings} +% \changes{v2.01}{2001/06/20}{\cs{global} omitted} +% +% \begin{macro}{\set@vrtx@decafusevb} +% \begin{macrocode} +\def\set@vrtx@decafusevb#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\relax% +% \global\@icliptrue% + \@icliptrue%%2001/06/20 by S. Fujita + \putlatom{-135}{280}{\@memberb}% % left type + \else\relax + \fi + \or\or\or + \or%8 + \if\@tmpb a\relax% +% \global\@jcliptrue% + \@jcliptrue%%2001/06/20 by S. Fujita + \putratom{-31}{356}{\@memberb}% % right type + \else\relax + \fi +\or%9 (= 4a) +% \global\@icliptrue% + \@icliptrue%%2001/06/20 by S. Fujita + \putlatom{-135}{280}{\@memberb}% % left type +\or%10 (= 8a) +% \global\@jcliptrue% + \@jcliptrue%%2001/06/20 by S. Fujita + \putratom{-31}{356}{\@memberb}% % right type +\fi\fi}% +}% end of the macro \set@vrtx@decafusevb +% \end{macrocode} +% \end{macro} +% +% \subsection{Vertical-top type} +% +% The macro |\decaheterovt| is used for drawing six-to-six fused derivatives +% of vertical-bottom type (numbering from the top to the left-down part). +% The word ``vertical'' means that each benzene ring is a vertical type. +% The word ``top'' means that the benzene ring with young locant numbers +% is located at the top. +% The skeleton and endocyclic double bonds are drawn directly, +% while substituents and exocyclic bonds are placed by useing +% the inner macro |\setsixringv|. +% \changes{v1.02}{1998/10/18}{Newly added command} +% \changes{v2.01}{2001/06/20}{The \cs{storeclipinfo} command, etc.} +% +% \begin{verbatim} +% **************************** +% * decaheterovt derivatives * +% * (vertical-top type) * +% **************************** +% The following numbering is adopted in this macro. +% +% 2 +% * +% 1 * * 3 +% | | +% | | +% 0G (8a) * * 4 +% 8 * * 0F(4a) +% | | +% | | +% 7 * * 5 +% * +% 6 +% ^ +% | +% the original point +% \end{verbatim} +% +% The macro |\decaheterovt| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \decaheterovt(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 : decahetero (left-handed) +% [] : fully saturated form +% a : 1,2-double bond b : 2,3-double bond +% c : 4,3-double bond d : 4,4a-double bond +% e : 4a,5-double bond f : 5,6-double bond +% g : 6,7-double bond h : 7,8-double bond +% i : 8,8a-double bond j : 1,8a-double bond +% k : 4a,8a-double bond +% K : 4a,8a-double bond in the other ring +% A : aromatic circle B : aromatic circle +% {n+} : plus at the n-nitrogen atom (n = 1 to 10) +% \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. +% +% \decaheterovt{1==N}{1==Cl;2==F} +% \decaheterovt[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \decaheterovt[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl} +% \end{verbatim} +% +% The definition of |\decaheterovt| 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| 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/10/31}{Add: Spiro and fused rings} +% \changes{v5.01}{2013/03/23}{Bug fix: omit vacant at 1 position} +% +% \begin{macro}{\decaheterovt} +% \begin{macro}{\@deca@heterovt} +% \begin{macro}{\@deca@@heterovt} +% \begin{macro}{\@decaheterovt} +% \begin{macrocode} +\def\decaheterovt{\@ifnextchar({\@deca@heterovt(@}{\@deca@heterovt(@)}} +\def\@deca@heterovt(#1){\@ifnextchar[{\@deca@@heterovt(#1)[@}% +{\@deca@@heterovt(#1)[@]}} +\def\@deca@@heterovt(#1)[#2]#3#4{\@ifnextchar[% +{\@decaheterovt(#1)[#2]{#3}{#4}[@}% +{\@decaheterovt(#1)[#2]{#3}{#4}[@]}} +\def\@decaheterovt(#1)[#2]#3#4[#5]{% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%% +% % treatment of atom list % +% %%%%%%%%%%%%%%%%%%%%%%%%%% +\iniflag\iniatom% +\test@vertix@decavb{#3}% +% %%%%%%%%%%%%%%%%%%%%%%% +% % adjustment for (yl) % +% %%%%%%%%%%%%%%%%%%%%%%% +\@reset@ylsw% +{\let\fff=\aaa +\ylhetpositiont{#4}{5}{5}{7}{0}% %substituent on 1 +}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-171}\def\@@yli{-303}\fi +\else +{\let\aaa=\bbb\let\bbb=\ccc\let\ccc=\ddd +\ylhetpositiont{#4}{-1}{0}{4}{0}% %substituents on 2 to 4 +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-171}\def\@@yli{-303}\fi +\else +{\let\ccc=\eee\let\ddd=\fff +\let\eee=\gggA\let\fff=\hhh +\ylhetpositiont{#4}{-2}{2}{7}{0}% %substituents on 5 to 8 +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +{% +\clipdetection% +\@clipfusefalse \if@iclip \@clipfusetrue \fi% +\ylatombondposition{#4}{-8}{5}% %9 %for 4a position +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-171}\def\@@yli{-303}\fi +\else +{% +\clipdetection% +\@clipfusefalse \if@jclip \@clipfusetrue \fi% +\ylatombondposition{#4}{-9}{11}% %10 for 8a position +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{-406}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(1200,880)(-\shiftii,-\shifti){decaheterovt}%2002/4/30 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +\begingroup +\resetbdsw% +\@bond@@omit{#5}% +{% + \let\fff=\aaa \let\aaa=\bbb \let\bbb=\ccc + \let\ccc=\ddd \let\ddd=\iii \let\eee=\jjj +\Put@Direct(171,303){\set@skel@bond{#1}{b}{a}}% + % bond between 2 and 3 \@bbb -> \skbonda etc +\Put@Direct(171,303){\set@skel@bond{#1}{c}{b}}% + % bond between 3 and 4 \@ccc -> \skbondb etc +\Put@Direct(171,303){\set@skel@bond{#1}{d}{c}}% + % bond between 4 and 4a \@ddd -> \skbondc etc +\Put@Direct(171,303){\set@skel@bond{#1}{k}{d}}% + % bond between 4a and 8a \@kkk -> \skbondd etc +\Put@Direct(171,303){\set@skel@bond{#1}{j}{e}}% + % bond between 8a and 1 \@jjj -> \skbonde etc +\Put@Direct(171,303){\set@skel@bond{#1}{a}{f}}% + % bond between 1 and 2 \@aaa -> \skbondf etc +}% +{% + \let\aaa=\jjj\let\bbb=\iii + \let\ccc=\eee\let\ddd=\fff + \let\eee=\gggA\let\fff=\hhh +\set@skel@bond{#1}{e}{b}% bond between 4a and 5 \@eee -> \skbondb etc +\set@skel@bond{#1}{f}{c}% bond between 5 and 6 \@fff -> \skbondc etc +\set@skel@bond{#1}{g}{d}% bond between 6 and 7 \@ggg -> \skbondd etc +\set@skel@bond{#1}{h}{e}% bond between 7 and 8 \@hhh -> \skbonde etc +\set@skel@bond{#1}{i}{f}% bond between 8 and 8a \@iii -> \skbondf etc +}% +\endgroup +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\@tfor\member:=#2\do{% +\if\member r\relax% +{% + \let\ccc=\eee\let\ddd=\fff\let\eee=\gggA\let\fff=\gggA + \Put@Direct(0,0){\bondc}% bond between 7 and 8 + \Put@Direct(0,0){\bonde}% bond between 5 and 6 +}% +{% + \let\fff=\aaa\let\aaa=\bbb + \let\bbb=\ccc\let\ccc=\ddd + \let\ddd=\iii\let\eee=\jjj + \Put@Direct(171,303){\bondf}% bond between 1 and 2 + \Put@Direct(171,303){\bondb}% bond between 3 and 4 + \Put@Direct(171,303){\bondd}% bond between 4a and 8a +}% +\else\if\member l\relax% +\else\if\member a\relax% +{\let\fff=\aaa\let\aaa=\bbb + \Put@Direct(171,303){\bondf}% bond between 1 and 2 +}% +\else\if\member b\relax +{\let\aaa=\bbb\let\bbb=\ccc + \Put@Direct(171,303){\bonda}% bond between 2 and 3 +}% +\else\if\member c\relax +{\let\bbb=\ccc\let\ccc=\ddd + \Put@Direct(171,303){\bondb}% bond between 3 and 4 +}% +\else\if\member d\relax% +{\let\ccc=\ddd\let\ddd=\eee + \Put@Direct(171,303){\bondc}% bond between 4 and 4a +}% +\else\if\member e\relax% +{\let\ccc=\eee\let\bbb=\iii% + \Put@Direct(0,0){\bondb}% bond between 5 and 4a +}% +\else\if\member f\relax% +{\let\ccc=\eee\let\ddd=\fff + \Put@Direct(0,0){\bondc}% bond between 5 and 6 +}% +\else\if\member g\relax% +{\let\ddd=\fff\let\eee=\gggA + \Put@Direct(0,0){\bondd}% bond between 6 and 7 +}% +\else\if\member h\relax% +{\let\eee=\gggA \let\fff=\hhh% + \Put@Direct(0,0){\bonde}% bond between 8 and 7 +}% +\else\if\member i\relax% +{\let\aaa=\jjj \let\fff=\hhh% + \Put@Direct(0,0){\bondf}% bond between 8 and 8a +}% +\else\if\member j\relax% +{\let\fff=\aaa\let\eee=\jjj% + \Put@Direct(171,303){\bonde}% bond between 1 and 8a +}% +\else\if\member k\relax% +{\let\aaa=\jjj\let\bbb=\iii% + \Put@Direct(0,0){\bonda}% bond between 8a and 4a +}% +\else\if\member K\relax% +{\let\eee=\jjj\let\ddd=\iii% + \Put@Direct(171,303){\bondd}% bond between 8a and 4a in the other ring +}% +\else\if\member A%left aromatic circle + \Put@oCircle(171,506){240}% %circle +\else\if\member B%left aromatic circle + \Put@oCircle(0,203){240}% %circle +\else + \expandafter\twoCH@@R\member//% + \def\aax{8a}\def\aay{4a}\def\aaz{10}% + \if\@@tmpa 1\relax% % plus charge etc. + \putlatom{111}{546}{\@@tmpb}% % left type + \else\if\@@tmpa 2\relax% + \putlatom{209}{585}{\@@tmpb}% % left type + \else\if\@@tmpa 3\relax% + \putratom{209}{546}{\@@tmpb}% % right type + \else\if\@@tmpa 4\relax% + \putratom{209}{431}{\@@tmpb}% % right type + \else\if\@@tmpa 5\relax% + \putratom{60}{120}{\@@tmpb}% % right type + \else\if\@@tmpa 6\relax% + \putratom{-38}{68}{\@@tmpb}% % right type + \else\if\@@tmpa 7\relax% + \putratom{-120}{120}{\@@tmpb}% % right type + \else\if\@@tmpa 8\relax% + \putlatom{-60}{253}{\@@tmpb}% % left type + \else\if\@@tmpa 9\relax% + \putratom{60}{253}{\@@tmpb}% % right type + \else\ifx\@@tmpa\aaz\relax% + \putratom{-38}{282}{\@@tmpb}% % right type + \else\ifx\@@tmpa\aax\relax% + \putratom{-38}{282}{\@@tmpb}% % right type + \else\ifx\@@tmpa\aay\relax% + \putratom{60}{253}{\@@tmpb}% % right type + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +% *********************** +% * setting fused rings * +% *********************** + \expandafter\twoCH@R\member//% + \set@fusion@decavt +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +\fi\fi\fi\fi\fi\fi% +}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting hetero atoms % +% %%%%%%%%%%%%%%%%%%%%%%%% +\iniflag +\Put@Direct(0,0){\set@hetatom@sixv{#3}{-2}{2}{7}{0}% +% \@hclipfalse \if@fclip \global\@hcliptrue \fi% +% \@gclipfalse \if@eclip \global\@gcliptrue \fi% +% \@fclipfalse \if@clip \global\@fcliptrue \fi% +% \@eclipfalse \if@cclip \global\@ecliptrue \fi% + \@hclipfalse \if@fclip \@hcliptrue \fi% + \@gclipfalse \if@eclip \@gcliptrue \fi% + \@fclipfalse \if@clip \@fcliptrue \fi% + \@eclipfalse \if@cclip \@ecliptrue \fi% +\storeclipinfo +}% %substituents on 5 to 8 +\developclipinfo +\Put@Direct(0,0){\set@vrtx@decafusevt{#3}% +% \if@iclip \global\@icliptrue \fi +% \if@jclip \global\@jcliptrue \fi +\storeclipinfo +}%9 %for 4a position, %10 for 8a position +\developclipinfo +%to be done after all (exept aclip) +\Put@Direct(171,303){\set@hetatom@sixv{#3}{-1}{0}{4}{0}% +%\@clipfalse \if@cclip \global\@cliptrue \fi% +%\@cclipfalse \if@bclip \global\@ccliptrue \fi% +%\@bclipfalse \if@aclip \global\@bcliptrue \fi% +\@clipfalse \if@cclip \@cliptrue \fi% +\@cclipfalse \if@bclip \@ccliptrue \fi% +%\@bclipfalse \if@aclip \@bcliptrue \fi%bug fix 2013/03/23 +\@bclipfalse \if@aclip \@bcliptrue \@aclipfalse \fi% +\storeclipinfo +}% %substituents on 2 to 4 +\developclipinfo +{% +\@fclipfalse%locally cancelled 1999/2/15 by Shinsaku Fujita +\Put@Direct(171,303){\set@hetatom@sixv{#3}{5}{5}{7}{0}% +%\@aclipfalse \if@fclip \global\@acliptrue \fi% +\@aclipfalse \if@fclip \@acliptrue \fi% +\storeclipinfo +}% %substituent on 1 +\developclipinfo +}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents and exocyclic bonds % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\global\drawsamesubsttrue%2002/05/30 warning on +{% +\@fclipfalse \if@aclip \@fcliptrue \fi% +\Put@Direct(171,303){\setsixringv{#4}{5}{5}{7}{0}}% %substituent on 1 +}% +\global\drawsamesubstfalse%2002/05/30 warning off +{% +\@aclipfalse \if@bclip \@acliptrue \fi% +\@bclipfalse \if@cclip \@bcliptrue \fi% +\@cclipfalse \if@clip \@ccliptrue \fi% +\Put@Direct(171,303){\setsixringv{#4}{-1}{0}{4}{0}}% %substituents on 2 to 4 +}% +{% + \@cclipfalse \if@eclip \@ccliptrue \fi% + \@clipfalse \if@fclip \@cliptrue \fi% + \@eclipfalse \if@gclip \@ecliptrue \fi% + \@fclipfalse \if@hclip \@fcliptrue \fi% +\Put@Direct(0,0){\setsixringv{#4}{-2}{2}{7}{0}}% %substituents on 5 to 8 +}% +{\@clipfusefalse \if@iclip \@clipfusetrue \fi% + \Put@Direct(171,303){\setatombond{#4}{-8}{5}}% %9 %for 4a position +}% +{\@clipfusefalse \if@jclip \@clipfusetrue \fi% + \Put@Direct(0,406){\setatombond{#4}{-9}{11}}% %10 for 8a position +}% +\end{ShiftPicEnvB}\iniatom\iniflag}% %end of \decaheterovt macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The command |\ylhetpositiont| is used in the |\decaheterovt| command, +% giving the sift values for drawing a structure as a substituent. +% \changes{v1.02}{1998/10/18}{Newly added command} +% +% \begin{macro}{\ylhetpositiont} +% \begin{macrocode} +\def\ylhetpositiont#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% + \ifx\bbb\empty% aaa and bbb are absent + \gdef\@ylii{0}\gdef\@yli{-406}\global\@ylswtrue%\@ylatrue% subst. on 1 + \else% bbb is present + \gdef\@ylii{0}\gdef\@yli{-442}\global\@ylswtrue%\@ylatrue% subst. on 1 + \fi + \else%aaa is present + \gdef\@ylii{0}\gdef\@yli{-442}\global\@ylswtrue%\@ylatrue% subst. on 1 + \fi + \or + \ifx\bbb\empty + \ifx\ccc\empty% aaa and ccc are absent + \gdef\@ylii{-171}\gdef\@yli{-303}\global\@ylswtrue%\@ylbtrue% subst. on 2 + \else%ccc is present + \gdef\@ylii{-213}\gdef\@yli{-327}\global\@ylswtrue%\@ylbtrue% subst. on 2 + \fi + \else + \gdef\@ylii{-213}\gdef\@yli{-327}\global\@ylswtrue%\@ylbtrue% subst. on 2 + \fi + \or + \ifx\ccc\empty + \ifx\ddd\empty + \ifx\eee\empty% ccc, ddd, eee are absent + \gdef\@ylii{-171}\gdef\@yli{-103}\global\@ylswtrue%\@ylctrue%subst. on 3 + \else%eee is present + \gdef\@ylii{-213}\gdef\@yli{-79}\global\@ylswtrue%\@ylctrue% subst. on 3 + \fi + \else%ddd is present + \gdef\@ylii{-213}\gdef\@yli{-79}\global\@ylswtrue%\@ylctrue% subst. on 3 + \fi + \else%ccc is present + \gdef\@ylii{-213}\gdef\@yli{-79}\global\@ylswtrue%\@ylctrue% subst. on 3 + \fi + \or + \ifx\ddd\empty + \ifx\fff\empty%ddd and fff are absent + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%\@yldtrue% subst. on 4 + \else%fff present + \gdef\@ylii{0}\gdef\@yli{36}\global\@ylswtrue%\@yldtrue% subst. on 4 + \fi + \else% ddd present + \gdef\@ylii{0}\gdef\@yli{36}\global\@ylswtrue%\@yldtrue% subst. on 4 + \fi + \or + \ifx\eee\empty + \ifx\gggA\empty%eee and ggg are absent + \gdef\@ylii{173}\gdef\@yli{-103}\global\@ylswtrue%\@yletrue% subst. on 5 + \else% ggg is present + \gdef\@ylii{223}\gdef\@yli{-79}\global\@ylswtrue%\@yletrue% subst. on 5 + \fi + \else% eee is present + \gdef\@ylii{223}\gdef\@yli{-79}\global\@ylswtrue%\@yletrue% subst. on 5 + \fi + \or + \ifx\fff\empty + \ifx\hhh\empty%fff and hhh are absent + \gdef\@ylii{173}\gdef\@yli{-303}\global\@ylswtrue%\@ylftrue% subst. on 6 + \else%hhh is present + \gdef\@ylii{213}\gdef\@yli{-327}\global\@ylswtrue%\@ylftrue% subst. on 6 + \fi + \else%fff is present + \gdef\@ylii{213}\gdef\@yli{-327}\global\@ylswtrue%\@ylftrue% subst. on 6 + \fi +\fi%end of ifcase +\fi\fi\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% The macro |\set@vrtx@decafusevt| is used to typeset a hetero +% atom at each fused vertex (4a or 8a) of a decaheterovt ring. +% +% \begin{macro}{\set@vrtx@decafusevt} +% \begin{macrocode} +\def\set@vrtx@decafusevt#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\relax% +% \global\@icliptrue% + \global\@icliptrue%%2001/06/20 by S. Fujita + \putratom{135}{280}{\@memberb}% % right type + \else\relax + \fi + \or\or\or + \or%8 + \if\@tmpb a\relax% +% \global\@jcliptrue% + \@jcliptrue%%2001/06/20 by S. Fujita + \putlatom{31}{356}{\@memberb}% % left type + \else\relax + \fi +\or%9 (= 4a) +% \global\@icliptrue% + \@icliptrue%%2001/06/20 by S. Fujita + \putratom{135}{280}{\@memberb}% % right type +\or%10 (= 8a) +% \global\@jcliptrue% + \@jcliptrue%%2001/06/20 by S. Fujita + \putlatom{31}{356}{\@memberb}% % left type +\fi\fi}% +}% end of the macro \set@vrtx@decafusevt +% \end{macrocode} +% \end{macro} +% +% \subsection{Short-cut commands for fused heterocycles} +% +% The macros |\decaheterov|, |\decaheterovb|, and +% |\decaheterovt| can be used in the form of a fixed |ATOMLIST|. +% Hence, the resulting commands for drawing a fused heterocyle +% with one or more nitrogen atoms have an argument |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% +% \begin{verbatim} +% **************************************************** +% * heterocycles having two fused six-membered rings * +% * (vertical type) * +% **************************************************** +% +% \quinolinev[BONDLIST]{SUBSLIST} +% \quinolinevi[BONDLIST]{SUBSLIST} +% \quinolinevb[BONDLIST]{SUBSLIST} +% \quinolinevt[BONDLIST]{SUBSLIST} +% +% \isoquinolinev[BONDLIST]{SUBSLIST} +% \isoquinolinevi[BONDLIST]{SUBSLIST} +% \isoquinolinevb[BONDLIST]{SUBSLIST} +% \isoquinolinevt[BONDLIST]{SUBSLIST} +% +% \quinoxalinev[BONDLIST]{SUBSLIST} +% \quinoxalinevi[BONDLIST]{SUBSLIST} +% \quinoxalinevb[BONDLIST]{SUBSLIST} +% \quinoxalinevt[BONDLIST]{SUBSLIST} +% +% \quinazolinev[BONDLIST]{SUBSLIST} +% \quinazolinevi[BONDLIST]{SUBSLIST} +% \quinazolinevb[BONDLIST]{SUBSLIST} +% \quinazolinevt[BONDLIST]{SUBSLIST} +% +% \cinnolinev[BONDLIST]{SUBSLIST} +% \cinnolinevi[BONDLIST]{SUBSLIST} +% \cinnolinevb[BONDLIST]{SUBSLIST} +% \cinnolinevt[BONDLIST]{SUBSLIST} +% +% \pteridinev[BONDLIST]{SUBSLIST} +% \pteridinevi[BONDLIST]{SUBSLIST} +% \pteridinevb[BONDLIST]{SUBSLIST} +% \pteridinevt[BONDLIST]{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one character selected +% from a to k (K), each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The optiona `A' and `B' typeset aromatic circles. +% The option +% `$n+$' ($n=1$ to $10$) represents a plus charge on a hetero atom +% at the $n$-position. +% +% \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 +% 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 |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. +% +% \quinolinev{3==Cl;2==F} +% \quinolinev{3==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% +% \begin{macro}{\quinolinev} +% \begin{macro}{\quinolinevi} +% \begin{macro}{\quinolinevb} +% \begin{macro}{\quinolinevt} +% \changes{v1.02}{1998/10/18}{Newly added commands: +% \cs{quinolinevb} and \cs{quinolinevt}} +% \begin{macrocode} +\def\quinolinev{% + \@ifnextchar[{\@quinolinev[@}{\@quinolinev[acfhk]}} +\def\@quinolinev[#1]#2{% +\iforigpt \typeout{command `quinolinev' % + is based on `decaheterov'.}\fi% +\decaheterov[#1]{1==N}{#2}} +\def\quinolinevi{% + \@ifnextchar[{\@quinolinevi[@}{\@quinolinevi[acfhk]}} +\def\@quinolinevi[#1]#2{% +\iforigpt \typeout{command `quinolinevi' % + is based on `decaheterovi'.}\fi% +\decaheterovi[#1]{1==N}{#2}} +\def\quinolinevb{% + \@ifnextchar[{\@quinolinevb[@}{\@quinolinevb[acfhk]}} +\def\@quinolinevb[#1]#2{% +\iforigpt \typeout{command `quinolinevb' % + is based on `decaheterovb'.}\fi% +\decaheterovb[#1]{1==N}{#2}} +\def\quinolinevt{% + \@ifnextchar[{\@quinolinevt[@}{\@quinolinevt[acfhk]}} +\def\@quinolinevt[#1]#2{% +\iforigpt \typeout{command `quinolinevt' % + is based on `decaheterovt'.}\fi% +\decaheterovt[#1]{1==N}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\isoquinolinev} +% \begin{macro}{\isoquinolinevi} +% \begin{macro}{\isoquinolinevb} +% \begin{macro}{\isoquinolinevt} +% \changes{v1.02}{1998/10/18}{Newly added commands: +% \cs{isoquinolinevb} and \cs{isoquinolinevt}} +% \begin{macrocode} +\def\isoquinolinev{% + \@ifnextchar[{\@isoquinolinev[@}{\@isoquinolinev[acfhk]}} +\def\@isoquinolinev[#1]#2{% +\iforigpt \typeout{command `isoquinolinev' % + is based on `decaheterov'.}\fi% +\decaheterov[#1]{2==N}{#2}} +\def\isoquinolinevi{% + \@ifnextchar[{\@isoquinolinevi[@}{\@isoquinolinevi[acfhk]}} +\def\@isoquinolinevi[#1]#2{% +\iforigpt \typeout{command `isoquinolinevi' % + is based on `decaheterovi'.}\fi% +\decaheterovi[#1]{2==N}{#2}}% +\def\isoquinolinevb{% + \@ifnextchar[{\@isoquinolinevb[@}{\@isoquinolinevb[acfhk]}} +\def\@isoquinolinevb[#1]#2{% +\iforigpt \typeout{command `isoquinolinevb' % + is based on `decaheterovi'.}\fi% +\decaheterovb[#1]{2==N}{#2}}% +\def\isoquinolinevt{% + \@ifnextchar[{\@isoquinolinevt[@}{\@isoquinolinevt[acfhk]}} +\def\@isoquinolinevt[#1]#2{% +\iforigpt \typeout{command `isoquinolinevt' % + is based on `decaheterovt'.}\fi% +\decaheterovt[#1]{2==N}{#2}}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\quinoxalinev} +% \begin{macro}{\quinoxalinevi} +% \begin{macro}{\quinoxalinevb} +% \begin{macro}{\quinoxalinevt} +% \changes{v1.02}{1998/10/18}{Newly added commands: +% \cs{quinoxalinevb} and \cs{quinoxalinevt}} +% \begin{macrocode} +\def\quinoxalinev{% + \@ifnextchar[{\@quinoxalinev[@}{\@quinoxalinev[acfhk]}} +\def\@quinoxalinev[#1]#2{% +\iforigpt \typeout{command `quinoxalinev' % + is based on `decaheterov'.}\fi% +\decaheterov[#1]{1==N;4==N}{#2}} +\def\quinoxalinevi{% + \@ifnextchar[{\@quinoxalinevi[@}{\@quinoxalinevi[acfhk]}} +\def\@quinoxalinevi[#1]#2{%but v--->vi 2013/03/22 +\iforigpt \typeout{command `quinoxalinevi' % + is based on `decaheterovi'.}\fi% +\decaheterovi[#1]{1==N;4==N}{#2}} +\def\quinoxalinevb{% + \@ifnextchar[{\@quinoxalinevb[@}{\@quinoxalinevb[acfhk]}} +\def\@quinoxalinevb[#1]#2{% +\iforigpt \typeout{command `quinoxalinevb' % + is based on `decaheterovb'.}\fi% +\decaheterovb[#1]{1==N;4==N}{#2}} +\def\quinoxalinevt{% + \@ifnextchar[{\@quinoxalinevt[@}{\@quinoxalinevt[acfhk]}} +\def\@quinoxalinevt[#1]#2{% +\iforigpt \typeout{command `quinoxalinevt' % + is based on `decaheterovt'.}\fi% +\decaheterovt[#1]{1==N;4==N}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\quinazolinev} +% \begin{macro}{\quinazolinevi} +% \begin{macro}{\quinazolinevb} +% \begin{macro}{\quinazolinevt} +% \changes{v1.02}{1998/10/18}{Newly added commands: +% \cs{quinazolinevb} and \cs{quinazolinevt}} +% \begin{macrocode} +\def\quinazolinev{% + \@ifnextchar[{\@quinazolinev[@}{\@quinazolinev[acfhk]}} +\def\@quinazolinev[#1]#2{% +\iforigpt \typeout{command `quinazolinev' % + is based on `decaheterov'.}\fi% +\decaheterov[#1]{1==N;3==N}{#2}} +\def\quinazolinevi{% + \@ifnextchar[{\@quinazolinevi[@}{\@quinazolinevi[acfhk]}} +\def\@quinazolinevi[#1]#2{% +\iforigpt \typeout{command `quinazolinevi' % + is based on `decaheterovi'.}\fi% +\decaheterovi[#1]{1==N;3==N}{#2}} +\def\quinazolinevb{% + \@ifnextchar[{\@quinazolinevb[@}{\@quinazolinevb[acfhk]}} +\def\@quinazolinevb[#1]#2{% +\iforigpt \typeout{command `quinazolinevb' % + is based on `decaheterovb'.}\fi% +\decaheterovb[#1]{1==N;3==N}{#2}} +\def\quinazolinevt{% + \@ifnextchar[{\@quinazolinevt[@}{\@quinazolinevt[acfhk]}} +\def\@quinazolinevt[#1]#2{% +\iforigpt \typeout{command `quinazolinevt' % + is based on `decaheterovt'.}\fi% +\decaheterovt[#1]{1==N;3==N}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\cinnolinev} +% \begin{macro}{\cinnolinevi} +% \begin{macro}{\cinnolinevb} +% \begin{macro}{\cinnolinevt} +% \changes{v1.02}{1998/10/18}{Newly added commands: +% \cs{cinnolinevb} and \cs{cinnolinevt}} +% \begin{macrocode} +\def\cinnolinev{% + \@ifnextchar[{\@cinnolinev[@}{\@cinnolinev[acfhk]}} +\def\@cinnolinev[#1]#2{% +\iforigpt \typeout{command `cinnolinev' % + is based on `decaheterov'.}\fi% +\decaheterov[#1]{1==N;2==N}{#2}} +\def\cinnolinevi{% + \@ifnextchar[{\@cinnolinevi[@}{\@cinnolinevi[acfhk]}} +\def\@cinnolinevi[#1]#2{% +\iforigpt \typeout{command `cinnolinevi' % + is based on `decaheterovi'.}\fi% +\decaheterovi[#1]{1==N;2==N}{#2}} +\def\cinnolinevb{% + \@ifnextchar[{\@cinnolinevb[@}{\@cinnolinevb[acfhk]}} +\def\@cinnolinevb[#1]#2{% +\iforigpt \typeout{command `cinnolinevb' % + is based on `decaheterovb'.}\fi% +\decaheterovb[#1]{1==N;2==N}{#2}} +\def\cinnolinevt{% + \@ifnextchar[{\@cinnolinevt[@}{\@cinnolinevt[acfhk]}} +\def\@cinnolinevt[#1]#2{% +\iforigpt \typeout{command `cinnolinevt' % + is based on `decaheterovt'.}\fi% +\decaheterovt[#1]{1==N;2==N}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\pteridinev} +% \begin{macro}{\pteridinevi} +% \begin{macro}{\pteridinevb} +% \begin{macro}{\pteridinevt} +% \changes{v1.02}{1998/10/18}{Newly added commands: +% \cs{pteridinevb} and \cs{pteridinevt}} +% \begin{macrocode} +\def\pteridinev{\@ifnextchar[{\@pteridinev[@}{\@pteridinev[acfhk]}} +\def\@pteridinev[#1]#2{% +\iforigpt \typeout{command `pteridinev' % + is based on `decaheterov'.}\fi% +\decaheterov[#1]{1==N;3==N;5==N;8==N}{#2}} +\def\pteridinevi{\@ifnextchar[{\@pteridinevi[@}{\@pteridinevi[acfhk]}} +\def\@pteridinevi[#1]#2{% +\iforigpt \typeout{command `pteridinevi' % + is based on `decaheterovi'.}\fi% +\decaheterovi[#1]{1==N;3==N;5==N;8==N}{#2}} +\def\pteridinevb{\@ifnextchar[{\@pteridinevb[@}{\@pteridinevb[acfhk]}} +\def\@pteridinevb[#1]#2{% +\iforigpt \typeout{command `pteridinevb' % + is based on `decaheterovb'.}\fi% +\decaheterovb[#1]{1==N;3==N;5==N;8==N}{#2}} +\def\pteridinevt{\@ifnextchar[{\@pteridinevt[@}{\@pteridinevt[acfhk]}} +\def\@pteridinevt[#1]#2{% +\iforigpt \typeout{command `pteridinevt' % + is based on `decaheterovt'.}\fi% +\decaheterovt[#1]{1==N;3==N;5==N;8==N}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \section{Six-to-five fused heterocycles} +% \subsection{Vertical type} +% +% The standard skeleton of a six-to-five fused heterocycle is selected +% to have the following locant numbers. +% +% \begin{verbatim} +% ************************** +% * nonahetero derivatives * +% * (vertical type) * +% ************************** +% The following numbering is adopted in this macro. +% +% 4 +% * 3a(8) +% 5 * * _____ 3 +% | | | +% | | | +% 6 * * * * 2 +% * 7a * +% 7 (9) 1 +% ^ +% | +% the original point +% \end{verbatim} +% +% The macro |\nonaheterov| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \nonaheterov(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 ring) +% B : aromatic circle (five-membered ring) +% {n+} : plus at the n-nitrogen atom (n = 1 to 9) +% \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. +% +% \nonaheterov{1==N}{1==Cl;2==F} +% \nonaheterov[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% +% The definition of |\nonaheterov| 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| several times in +% a restricted fashion. +% \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: fused and spiro rings} +% \changes{v2.01}{2001/6/20}{The +% \cs{storeclipinfo} command is added.} +% +% \begin{macro}{\nonaheterov} +% \begin{macro}{\@nona@heterov} +% \begin{macro}{\@nona@@heterov} +% \begin{macro}{\@nonaheterov} +% \begin{macrocode} +\def\nonaheterov{\@ifnextchar({\@nona@heterov(@}{\@nona@heterov(@)}} +\def\@nona@heterov(#1){\@ifnextchar[{\@nona@@heterov(#1)[@}% +{\@nona@@heterov(#1)[@]}} +\def\@nona@@heterov(#1)[#2]#3#4{\@ifnextchar[% +{\@nonaheterov(#1)[#2]{#3}{#4}[@}% +{\@nonaheterov(#1)[#2]{#3}{#4}[@]}} +\def\@nonaheterov(#1)[#2]#3#4[#5]{% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%% +% % treatment of atom list % +% %%%%%%%%%%%%%%%%%%%%%%%%%% +\iniflag\iniatom% +\test@vertix@nonav{#3}% +% %%%%%%%%%%%%%%%%%%%%%%% +% % adjustment for (yl) % +% %%%%%%%%%%%%%%%%%%%%%%% +\@reset@ylsw% +\ylposition{#4}{5}{1}{5}{-1}% %substituents on 1 to 3 +\if@ylsw \ifx\@@ylii\empty\relax +\def\@@ylii{-342}\def\@@yli{0}\fi +\else +{\let\ddd=\eee\let\eee=\fff\let\fff=\gggA +\ylposition{#4}{11}{3}{7}{-1}% %substituents on 5 to 7 +}% +\fi +\if@ylsw \ifx\@@ylii\empty\relax +\def\@@ylii{0}\def\@@yli{0}\fi +\else +{\let\aaa=\hhh +\ylposition{#4}{-3}{0}{2}{0}%%substituent on 4 +}% +\fi +\if@ylsw \ifx\@@ylii\empty\relax +\def\@@ylii{0}\def\@@yli{0}\fi +\else +{% +\clipdetection% +\@clipfusefalse \if@iclip \@clipfusetrue \fi% +\ylatombondposition{#4}{-8}{7}% %9 %for 7a position +}% +\fi +\if@ylsw \ifx\@@ylii\empty\relax +\def\@@ylii{-171}\def\@@yli{-103}\fi +\else +{% +\clipdetection% +\@clipfusefalse \if@jclip \@clipfusetrue \fi% +\ylatombondposition{#4}{-7}{1}% %8 for 3a position +}% +\fi +\if@ylsw \ifx\@@ylii\empty\relax +\def\@@ylii{-171}\def\@@yli{-303}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(1200,880)(-\shiftii,-\shifti){nonaheterov}%2002/4/30 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +\begingroup +\resetbdsw% +\@bond@@omit{#5}% +{\let\fff=\jjj \let\eee=\iii% +\Put@Direct(342,0){\set@skel@bond{#1}{a}{c}}% + % bond between 1 and 2 \@aaa -> \skbondc etc +\Put@Direct(342,0){\set@skel@bond{#1}{b}{b}}% + % bond between 2 and 3 \@bbb -> \skbondb etc +\Put@Direct(342,0){\set@skel@longbond{#1}{c}{skbondhoriz}}% + % bond between 3 and 3a \@ccc -> \skbondhoriz etc +\Put@Direct(342,0){\set@skel@bond{#1}{j}{e}}% + % bond between 3a and 7a \@jjj -> \skbonde etc +\Put@Direct(342,0){\set@skel@bond{#1}{i}{d}}% + % bond between 7a and 1 \@iii -> \skbondd etc +}% +{\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA% + \let\ccc=\iii\let\bbb=\jjj% +\set@skel@bond{#1}{d}{a}% bond between 3a and 4 \@ddd -> \skbonda etc +\set@skel@bond{#1}{h}{c}% bond between 7 and 7a \@hhh -> \skbondc etc +\set@skel@bond{#1}{g}{d}% bond between 6 and 7 \@ggg -> \skbondd etc +\set@skel@bond{#1}{f}{e}% bond between 5 and 6 \@fff -> \skbonde etc +\set@skel@bond{#1}{e}{f}% bond between 4 and 5 \@eee -> \skbondf 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=\gggA% + \let\ccc=\iii\let\bbb=\jjj% + \Put@Direct(0,0){\bondb}% bond between 3a and 7a + \Put@Direct(0,0){\bondf}% bond between 4 and 5 + \Put@Direct(0,0){\bondd}% bond between 6 and 7 +}% +\else\if\member l\relax% +\else\if\member a\relax% + \Put@Direct(342,0){\bondc}% bond between 3 and 4 +\else\if\member b\relax% + \Put@Direct(342,0){\bondb}% bond between 2 and 3 +\else\if\member c\relax% + \Put@Direct(342,0){\bondhoriz}% bond between 3 and 3a +\else\if\member d\relax% +{\let\aaa=\hhh \let\bbb=\jjj% + \Put@Direct(0,0){\bonda}% bond between 4 and 3a +}% +\else\if\member e\relax% +{\let\aaa=\hhh \let\fff=\gggA% + \Put@Direct(0,0){\bondf}% bond between 4 and 5 +}% +\else\if\member f\relax% +{\let\eee=\fff \let\fff=\gggA% + \Put@Direct(0,0){\bonde}% bond between 5 and 6 +}% +\else\if\member g\relax% +{\let\ddd=\eee \let\eee=\fff% + \Put@Direct(0,0){\bondd}% bond between 6 and 7 +}% +\else\if\member h\relax% +{\let\ccc=\iii \let\ddd=\eee% + \Put@Direct(0,0){\bondc}% bond between 7 and 7a +}% +\else\if\member i\relax% +{\let\eee=\iii% + \Put@Direct(342,0){\bondd}% bond between 1 and 7a +}% +\else\if\member j\relax% +{\let\ccc=\iii\let\bbb=\jjj% + \Put@Direct(0,0){\bondb}% bond between 7a and 3a +}% +\else\if\member J\relax% +{\let\eee=\iii\let\fff=\jjj% + \Put@Direct(342,0){\bonde}% bond between 7a and 3a +}% +\else\if\member A\relax%left aromatic circle + \Put@oCircle(0,203){240}% %circle +\else\if\member B\relax%left aromatic circle + \Put@oCircle(342,173){180}% %circle 1993/11/20 S.Fujita +\else + \expandafter\twoCH@@R\member//% + \def\aax{7a}\def\aay{3a}% + \if\@@tmpa 1\relax% + \putratom{304}{68}{\@@tmpb}% % right type + \else\if\@@tmpa 2\relax% + \putratom{402}{120}{\@@tmpb}% % right type + \else\if\@@tmpa 3\relax% + \putratom{402}{253}{\@@tmpb}% % right type + \else\if\@@tmpa 4\relax% + \putratom{-38}{282}{\@@tmpb}% % right type + \else\if\@@tmpa 5\relax% + \putlatom{-60}{120}{\@@tmpb}% % left type + \else\if\@@tmpa 6\relax% + \putlatom{-60}{253}{\@@tmpb}% % left type + \else\if\@@tmpa 7\relax% + \putratom{-38}{68}{\@@tmpb}% % right type + \else\if\@@tmpa 8\relax% + \putratom{60}{253}{\@@tmpb}% % right type + \else\ifx\@@tmpa\aax\relax% + \putratom{60}{253}{\@@tmpb}% % right type + \else\ifx\@@tmpa\aay\relax% + \putratom{60}{120}{\@@tmpb}% % right type + \else\if\@@tmpa 9\relax% + \putratom{60}{120}{\@@tmpb}% % right type + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +% *********************** +% * setting fused rings * +% *********************** + \expandafter\twoCH@R\member//% + \set@fusion@nonav +\fi\fi\fi\fi\fi\fi\fi\fi\fi% +\fi\fi\fi\fi\fi\fi% +}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % setting hetero atoms and spiro rings % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\iniflag\iniatom% +\@tmpclipfalse +%position 7 should be treated before +%position 1 (using the same \if@clip) +\Put@Direct(0,0){\set@hetatom@sixv{#3}{11}{3}{7}{-1}% +% \@gclipfalse \if@fclip \global\@gcliptrue \fi% +% \@fclipfalse \if@eclip \global\@fcliptrue \fi% +% \@eclipfalse \if@clip \global\@ecliptrue \fi% + \@gclipfalse \if@fclip \@gcliptrue \fi% + \@fclipfalse \if@eclip \@fcliptrue \fi% + \@eclipfalse \if@clip \@ecliptrue \fi% + \@clipfalse%2006/9/5added +\storeclipinfo +}%substituents on 5 to 7 +%\developclipinfo%2006/9/5 deleted +\Put@Direct(342,0){\set@hetatom@sixv{#3}{5}{1}{5}{-1}% +% \if@bclip \global\@bcliptrue\fi +% \if@cclip \global\@ccliptrue\fi +% \if@clip \global\@cliptrue\fi +\storeclipinfo +}% %substituents on 1 to 3 +%\developclipinfo%2006/9/5 deleted +\Put@Direct(0,0){\set@hetatom@sixv{#3}{-3}{0}{2}{0}% +% \@aclipfalse \if@aclip \global\@hcliptrue \fi% + \@hclipfalse \if@aclip \@hcliptrue \fi% +\storeclipinfo +}%%substituent on 4 +%\developclipinfo%2006/9/5 deleted +\Put@Direct(0,0){\set@vrtx@nonafusev{#3}% + \@tmpclipfalse +% \if@iclip \global\@tmpcliptrue \fi +% \if@jclip \global\@icliptrue \fi +% \if@tmpclip \global\@jcliptrue \fi + \if@iclip \@tmpcliptrue \fi +% \if@jclip \@icliptrue \fi +% \if@tmpclip \@jcliptrue \fi + \if@jclip \@icliptrue \else \@iclipfalse \fi + \if@tmpclip \@jcliptrue \else \@jclipfalse \fi +\storeclipinfo +%%%====\clipinfo====%%%2006/9/5test +}% fused positions +\developclipinfo +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents and exocyclic bonds % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\Put@Direct(342,0){\setsixringv{#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@Direct(0,0){\setsixringv{#4}{11}{3}{7}{-1}}% +}% +{\@aclipfalse \if@hclip \@acliptrue \fi% %substituent on 4 +\Put@Direct(0,0){\setsixringv{#4}{-3}{0}{2}{0}}% +}% +{\@clipfusefalse \if@iclip \@clipfusetrue \fi% + \Put@Direct(171,103){\setatombond{#4}{-8}{7}}% %9 for 7a position +}% +{\@clipfusefalse \if@jclip \@clipfusetrue \fi% + \Put@Direct(171,303){\setatombond{#4}{-7}{1}}% %8 for 3a position +}% +\end{ShiftPicEnvB}\iniatom\iniflag}% %end of \nonaheterov macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The macro |\test@vertix@nonav| is used to test the presence of +% a hetero atom or a spiro substituent on a vertex of the +% nonaheterov nucleus. +% \changes{v2.00}{1998/12/05}{New command: \cs{test@vertix@nonav}} +% +% \begin{macro}{\test@vertix@nonav} +% \begin{macrocode} +\def\test@vertix@nonav#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%2 + \if\@tmpb s\relax\def\ccc{}\else\def\ccc{@}\fi + \or%3% + \if\@tmpb a\relax% + \def\jjj{@}%3a + \else\if\@tmpb s\relax% + \def\bbb{}%3 + \else\if\@tmpb h\relax% + \def\bbb{@}%3 + \else\ifx\@tmpb\empty\relax% + \def\bbb{@}%3 + \fi\fi\fi\fi% + \or%4 + \if\@tmpb s\relax\def\hhh{}\else\def\hhh{@}\fi + \or%5 + \if\@tmpb s\relax\def\gggA{}\else\def\gggA{@}\fi + \or%6 + \if\@tmpb s\relax\def\fff{}\else\def\fff{@}\fi + \or%7 + \if\@tmpb a% + \xdef\iii{@}%7a + \else\if\@tmpb s\relax% + \xdef\eee{}%7s + \else\if\@tmpb h\relax% + \xdef\eee{@}%7h + \else\ifx\@tmpb\empty\relax% + \xdef\eee{@}%7 + \fi\fi\fi\fi% +\or%8 (= 3a) + \if\@tmpb s\relax\def\jjj{}\else\def\jjj{@}\fi +\or%9 (= 7a) + \if\@tmpb s\relax\def\iii{}\else\def\iii{@}\fi +\fi\fi}}% end of \test@vertix@nonav +% \end{macrocode} +% \end{macro} +% +% The macro |\set@vrtx@nonafusev| is used to set +% a hetero atom or on a vertex of a bridgehead location. +% +% \begin{macro}{\set@vrtx@nonafusev} +% \begin{macrocode} +\def\set@vrtx@nonafusev#1{% +\@forsemicol\member:=#1\do{% +\ifx\member\empty \relax\else% +\expandafter\@m@mb@r\member;\relax% +\expandafter\twoch@r\@membera{}% +\ifcase\@tmpa\or\or + \or%%%%3 + \if\@tmpb a\relax% +% \global\@icliptrue% + \@icliptrue%20001/06/20 by S. Fujita + \putlatom{207}{280}{\@memberb}% % left type + \else\relax + \fi + \or\or\or + \or%7 + \if\@tmpb a\relax% +% \global\@jcliptrue% + \@jcliptrue%%20001/06/20 by S. Fujita + \putlatom{207}{65}{\@memberb}% % left type + \else\relax + \fi +\or%8 (= 3a) +% \global\@icliptrue% + \@icliptrue%%20001/06/20 by S. Fujita + \putlatom{207}{280}{\@memberb}% % left type +\or%9 (= 7a) +% \global\@jcliptrue% + \@jcliptrue%%20001/06/20 by S. Fujita + \putlatom{207}{65}{\@memberb}% % left type +\fi\fi}% +}% end of the macro \set@vrtx@nonafusev +% \end{macrocode} +% \end{macro} +% +% \subsection{Inverse vertical type} +% +% The standard skeleton of a six-to-five fused heterocycle is selected +% to have the following locant numbers. +% +% \begin{verbatim} +% ********************************** +% * nonahetero derivatives * +% * (vertical type, inverse type) * +% ********************************** +% The following numbering is adopted in this macro. +% +% 7(10) 1 +% * 7a * +% 6 * * * * 2 +% | | | +% | |_____| +% 5 * * 3 +% * 3a(8) +% 4 +% ^ +% | +% the original point +% \end{verbatim} +% +% The macro |\nonaheterovi| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \nonaheterovi(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 ring) +% B : aromatic circle (five-membered ring) +% {n+} : plus at the n-nitrogen atom (n = 1 to 9) +% \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. +% +% \nonaheterovi{1==N}{1==Cl;2==F} +% \nonaheterovi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% +% The definition of |\nonaheterovi| 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| several times in +% a restricted fashion. +% \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/05}{Added: spiro and fused rings} +% \changes{v2.01}{2001/6/20}{The +% \cs{storeclipinfo} command is added.} +% +% \begin{macro}{\nonaheterovi} +% \begin{macro}{\@nona@heterovi} +% \begin{macro}{\@nona@@heterovi} +% \begin{macro}{\@nonaheterovi} +% \begin{macrocode} +\def\nonaheterovi{\@ifnextchar({\@nona@heterovi(@}{\@nona@heterovi(@)}} +\def\@nona@heterovi(#1){\@ifnextchar[{\@nona@@heterovi(#1)[@}% +{\@nona@@heterovi(#1)[@]}} +\def\@nona@@heterovi(#1)[#2]#3#4{\@ifnextchar[% +{\@nonaheterovi(#1)[#2]{#3}{#4}[@}% +{\@nonaheterovi(#1)[#2]{#3}{#4}[@]}} +\def\@nonaheterovi(#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% +\ylposition{#4}{0}{0}{4}{0}% %substituents on 1 to 3 +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-342}\def\@@yli{0}\fi +\else +{\let\ddd=\eee\let\eee=\fff\let\fff=\gggA +\ylposition{#4}{0}{3}{7}{0}%%substituents on 4 to 6 +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +{\let\aaa=\hhh +\ylposition{#4}{-6}{0}{2}{0}%%substituent on 7 +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +{% +\clipdetection% +\@clipfusefalse \if@iclip \@clipfusetrue \fi% +\ylatombondposition{#4}{-7}{7}% %8 for 3a position +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-171}\def\@@yli{-103}\fi +\else +{% +\clipdetection% +\@clipfusefalse \if@jclip \@clipfusetrue \fi% +\ylatombondposition{#4}{-8}{1}% %9 for 7a position +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-171}\def\@@yli{-303}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(1200,880)(-\shiftii,-\shifti){nonaheterovi}%2002/4/30 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +\begingroup +\resetbdsw% +\@bond@@omit{#5}% +{\let\fff=\jjj \let\eee=\iii% +\Put@Direct(342,0){\set@skel@bond{#1}{a}{a}}% + % bond between 1 and 2 \@aaa -> \skbonda etc +\Put@Direct(342,0){\set@skel@bond{#1}{b}{b}}% + % bond between 2 and 3 \@bbb -> \skbondb etc +\Put@Direct(342,0){\set@skel@longbond{#1}{c}{skbondhorizi}}% + % bond between 3 and 3a \@ccc -> \skbondhoriz etc +\Put@Direct(342,0){\set@skel@bond{#1}{j}{e}}% + % bond between 3a and 7a \@jjj -> \skbonde etc +\Put@Direct(342,0){\set@skel@bond{#1}{i}{f}}% + % bond between 7a and 1 \@iii -> \skbondf etc +}% +{\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA% + \let\ccc=\iii\let\bbb=\jjj% +\set@skel@bond{#1}{h}{a}% bond between 7a and 7 \@hhh -> \skbonda etc +\set@skel@bond{#1}{d}{c}% bond between 3a and 4 \@ddd -> \skbondc etc +\set@skel@bond{#1}{e}{d}% bond between 4 and 5 \@eee -> \skbondd etc +\set@skel@bond{#1}{f}{e}% bond between 5 and 6 \@fff -> \skbonde etc +\set@skel@bond{#1}{g}{f}% bond between 6 and 7 \@ggg -> \skbondf 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=\gggA + \let\ccc=\iii\let\bbb=\jjj + \Put@Direct(0,0){\bondb}% bond between 3a and 7a + \Put@Direct(0,0){\bondf}% bond between 6 and 7 + \Put@Direct(0,0){\bondd}% bond between 4 and 5 +}% +\else\if\member l\relax% +\else\if\member a\relax% + \Put@Direct(342,0){\bonda}% bond between 1 and 2 +\else\if\member b\relax% + \Put@Direct(342,0){\bondb}% bond between 2 and 3 +\else\if\member c\relax% + \Put@Direct(342,0){\bondhorizi}% bond between 3 and 3a +\else\if\member d\relax% +{\let\ccc=\iii \let\ddd=\eee% + \Put@Direct(0,0){\bondc}% bond between 4 and 3a +}% +\else\if\member e\relax% +{\let\ddd=\eee\let\eee=\fff% + \Put@Direct(0,0){\bondd}% bond between 4 and 5 +}% +\else\if\member f\relax% +{\let\eee=\fff \let\fff=\gggA% + \Put@Direct(0,0){\bonde}% bond between 5 and 6 +}% +\else\if\member g\relax% +{\let\aaa=\hhh \let\fff=\gggA% + \Put@Direct(0,0){\bondf}% bond between 7 and 6 +}% +\else\if\member h\relax% +{\let\aaa=\hhh \let\bbb=\jjj% + \Put@Direct(0,0){\bonda}% bond between 7 and 7a +}% +\else\if\member i\relax% +{\let\fff=\jjj% + \Put@Direct(342,0){\bondf}% bond between 1 and 7a +}% +\else\if\member j\relax% +{\let\ccc=\iii\let\bbb=\jjj% + \Put@Direct(0,0){\bondb}% bond between 7a and 3a +}% +\else\if\member J\relax% +{\let\eee=\iii\let\fff=\jjj% + \Put@Direct(342,0){\bonde}% bond between 7a and 3a +}% +\else\if\member A\relax%left aromatic circle + \Put@oCircle(0,203){240}% %circle +\else\if\member B\relax%left aromatic circle + \Put@oCircle(342,233){180}% %circle 1993/11/20 S.Fujita +\else + \expandafter\twoCH@@R\member//% + \def\aax{7a}\def\aay{3a}% + \if\@@tmpa 1\relax% + \putratom{304}{282}{\@@tmpb}% % right type + \else\if\@@tmpa 3\relax% + \putratom{402}{120}{\@@tmpb}% % right type + \else\if\@@tmpa 2\relax% + \putratom{402}{253}{\@@tmpb}% % right type + \else\if\@@tmpa 7\relax% + \putratom{-38}{282}{\@@tmpb}% % right type + \else\if\@@tmpa 6\relax% + \putlatom{-60}{120}{\@@tmpb}% % left type + \else\if\@@tmpa 5\relax% + \putlatom{-60}{253}{\@@tmpb}% % left type + \else\if\@@tmpa 4\relax% + \putratom{-38}{68}{\@@tmpb}% % right type + \else\if\@@tmpa 9\relax% + \putratom{60}{253}{\@@tmpb}% % right type + \else\ifx\@@tmpa\aax\relax% + \putratom{60}{253}{\@@tmpb}% % right type + \else\ifx\@@tmpa\aay\relax% + \putratom{60}{120}{\@@tmpb}% % right type + \else\if\@@tmpa 8\relax% + \putratom{60}{120}{\@@tmpb}% % right type + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +% *********************** +% * setting fused rings * +% *********************** + \expandafter\twoCH@R\member//% + \set@fusion@nonavi +\fi\fi\fi\fi\fi\fi\fi\fi\fi% +\fi\fi\fi\fi\fi\fi% +}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % setting hetero atoms and spiro rings % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\iniflag +\Put@Direct(342,0){\set@hetatom@sixv{#3}{0}{0}{4}{0}% +% \if@aclip \global\@acliptrue\fi +% \if@bclip \global\@bcliptrue\fi +% \if@cclip \global\@ccliptrue\fi + \@xclipfalse \if@aclip \@xcliptrue \@aclipfalse\fi%avoid conflict position 7 2013/03/24 +\storeclipinfo +}% %substituents on 1 to 3 +\developclipinfo +\Put@Direct(0,0){\set@hetatom@sixv{#3}{0}{3}{7}{0}% + \@gclipfalse \if@fclip \@gcliptrue \fi% + \@fclipfalse \if@eclip \@fcliptrue \fi% + \@eclipfalse \if@clip \@ecliptrue \fi +\storeclipinfo +}%substituents on 4 to 6 +\developclipinfo +\Put@Direct(0,0){\set@hetatom@sixv{#3}{-6}{0}{2}{0}% + \@hclipfalse \if@aclip \@hcliptrue \fi +\storeclipinfo +}%%substituent on 7 +\developclipinfo +\Put@Direct(0,0){\set@vrtx@nonafusevi{#3}% +\storeclipinfo +}% fused positions +\developclipinfo +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents and exocyclic bonds % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +{% +\@aclipfalse \if@xclip \@acliptrue \fi% %avoid conflict 2013/3/24 +\Put@Direct(342,0){\setsixringv{#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@Direct(0,0){\setsixringv{#4}{0}{3}{7}{0}}% +}% +{\@aclipfalse \if@hclip \@acliptrue \fi% %substituent on 7 +\Put@Direct(0,0){\setsixringv{#4}{-6}{0}{2}{0}}% +}% +{\@clipfusefalse \if@iclip \@clipfusetrue \fi% + \Put@Direct(171,103){\setatombond{#4}{-7}{7}}% %8 for 3a position +}% +{\@clipfusefalse \if@jclip \@clipfusetrue \fi% + \Put@Direct(171,303){\setatombond{#4}{-8}{1}}% %9 for 7a position +}% +\end{ShiftPicEnvB}\iniatom\iniflag}% %end of \nonaheterovi macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The macro |\test@vertix@nonavi| is used to test the presence of +% a hetero atom or a spiro substituent on a vertex of the +% nonaheterovi nucleus. +% \changes{v2.00}{1998/12/05}{New command: \cs{test@vertix@nonavi}} +% +% \begin{macro}{\test@vertix@nonavi} +% \begin{macrocode} +\def\test@vertix@nonavi#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\aaa{}\else\def\aaa{@}\fi + \or%2 + \if\@tmpb s\relax\def\bbb{}\else\def\bbb{@}\fi + \or%3% + \if\@tmpb a\relax% + \def\iii{@}%3a + \else\if\@tmpb s\relax% + \def\ccc{}%3 + \else\if\@tmpb h\relax% + \def\ccc{@}%3 + \else\ifx\@tmpb\empty\relax% + \def\ccc{@}%3 + \fi\fi\fi\fi% + \or%4 + \if\@tmpb s\relax\def\eee{}\else\def\eee{@}\fi + \or%5 + \if\@tmpb s\relax\def\fff{}\else\def\fff{@}\fi + \or%6 + \if\@tmpb s\relax\def\gggA{}\else\def\gggA{@}\fi + \or%7 + \if\@tmpb a% + \xdef\jjj{@}%7a + \else\if\@tmpb s\relax% + \xdef\hhh{}%7s + \else\if\@tmpb h\relax% + \xdef\hhh{@}%7h + \else\ifx\@tmpb\empty\relax% + \xdef\hhh{@}%7 + \fi\fi\fi\fi% +\or%8 (= 3a) + \if\@tmpb s\relax\def\iii{}\else\def\iii{@}\fi +\or%9 (= 7a) + \if\@tmpb s\relax\def\jjj{}\else\def\jjj{@}\fi +\fi\fi}} +% \end{macrocode} +% \end{macro} +% +% The macro |\set@vrtx@nonafusevi| 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@nonafusevi}} +% +% \begin{macro}{\set@vrtx@nonafusevi} +% \begin{macrocode} +\def\set@vrtx@nonafusevi#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\relax% +% \global\@icliptrue% + \@icliptrue%%20001/06/20 by S. Fujita + \putlatom{207}{65}{\@memberb}% % left type + \else\relax + \fi + \or\or\or + \or%7 + \if\@tmpb a\relax% +% \global\@jcliptrue% + \@jcliptrue%%20001/06/20 by S. Fujita + \putlatom{207}{280}{\@memberb}% % left type + \else\relax + \fi +\or%8 (= 3a) +% \global\@icliptrue% + \@icliptrue%%20001/06/20 by S. Fujita + \putlatom{207}{65}{\@memberb}% % left type +\or%9 (= 7a) +% \global\@jcliptrue% + \@jcliptrue%%20001/06/20 by S. Fujita + \putlatom{207}{280}{\@memberb}% % left type +\fi\fi}% +}% end of the macro \set@vrtx@nonafusevi +% \end{macrocode} +% \end{macro} +% +% \subsection{Short-cut commands for fused heterocycles} +% +% The macros |\nonaheterov| and |\nonaheterovi| can be used in the +% form of a fixed |ATOMLIST|. Hence, the resulting commands for +% drawing a fused heterocyle with one or more nitrogen atoms +% have an argument |SUBSLIST| as well as an optional argument |BONDLIST|. +% +% \begin{verbatim} +% ********************************************************** +% * heterocycles having fused six- and five-membered rings * +% * (vertical type) * +% ********************************************************** +% +% N-heterocycles: +% +% \indolev[BONDLIST]{SUBSLIST} +% \indolevi[BONDLIST]{SUBSLIST} +% +% \isoindolev[BONDLIST]{SUBSLIST} +% \isoindolevi[BONDLIST]{SUBSLIST} +% +% \indolizinev[BONDLIST]{SUBSLIST} +% \indolizinevi[BONDLIST]{SUBSLIST} +% (different from the IUPAC numbering) +% +% \purinev[BONDLIST]{SUBSLIST} +% \purinevi[BONDLIST]{SUBSLIST} +% (different from the IUPAC numbering) +% +% O-heterocycles: +% +% \benzofuranev[BONDLIST]{SUBSLIST} +% \benzofuranevi[BONDLIST]{SUBSLIST} +% +% \isobenzofuranevi[BONDLIST]{SUBSLIST} +% +% \benzoxazolev[BONDLIST]{SUBSLIST} +% \benzoxazolevi[BONDLIST]{SUBSLIST} +% \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' and `B' typeset aromatic circles. +% 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 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. +% +% \indolev{1==N}{1==Cl;2==F} +% \indolev[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% +% \begin{macro}{\purinev} +% \begin{macro}{\purinevi} +% \begin{macrocode} +\def\purinev{\@ifnextchar[{\@purinev[@}{\@purinev[ra]}} +\def\@purinev[#1]#2{% +\iforigpt \typeout{command `purinev' % + is based on `nonaheterov'.}\fi% +\nonaheterov[#1]{1==N;3==N;5==N;7==N}{#2}} +\def\purinevi{\@ifnextchar[{\@purinevi[@}{\@purinevi[ra]}} +\def\@purinevi[#1]#2{% +\iforigpt \typeout{command `purinevi' % + is based on `nonaheterovi'.}\fi% +\nonaheterovi[#1]{1==N;3==N;5==N;7==N}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\indolev} +% \begin{macro}{\indolevi} +% \begin{macrocode} +\def\indolev{\@ifnextchar[{\@indolev[@}{\@indolev[rb]}} +\def\@indolev[#1]#2{% +\iforigpt \typeout{command `indolev' % + is based on `nonaheterov'.}\fi% +\nonaheterov[#1]{1==N}{#2}} +\def\indolevi{\@ifnextchar[{\@indolevi[@}{\@indolevi[rb]}} +\def\@indolevi[#1]#2{% +\iforigpt \typeout{command `indolevi' % + is based on `nonaheterovi'.}\fi% +\nonaheterovi[#1]{1==N}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\indolizinev} +% \begin{macro}{\indolizinevi} +% \begin{macrocode} +\def\indolizinev{% + \@ifnextchar[{\@indolizinev[@}{\@indolizinev[aceg]}} +\def\@indolizinev[#1]#2{% +\iforigpt \typeout{command `indolizinev' % + is based on `nonaheterov'.}\fi% +\nonaheterov[#1]{7a==N}{#2}} +\def\indolizinevi{% + \@ifnextchar[{\@indolizinevi[@}{\@indolizinevi[aceg]}} +\def\@indolizinevi[#1]#2{% +\iforigpt \typeout{command `indolizinevi' % + is based on `nonaheterovi'.}\fi% +\nonaheterovi[#1]{7a==N}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\isoindolev} +% \begin{macro}{\isoindolevi} +% \begin{macrocode} +\def\isoindolev{\@ifnextchar[{\@isoindolev[@}{\@isoindolev[cegi]}} +\def\@isoindolev[#1]#2{% +\iforigpt \typeout{command `isoindolev' % + is based on `nonaheterov'.}\fi% +\nonaheterov[#1]{2==N}{#2}} +\def\isoindolevi{\@ifnextchar[{\@isoindolevi[@}{\@isoindolevi[cegi]}} +\def\@isoindolevi[#1]#2{% +\iforigpt \typeout{command `isoindolevi' % + is based on `nonaheterovi'.}\fi% +\nonaheterovi[#1]{2==N}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\benzofuranev} +% \begin{macro}{\benzofuranevi} +% \begin{macrocode} +\def\benzofuranev{% + \@ifnextchar[{\@benzofuranev[@}{\@benzofuranev[rb]}} +\def\@benzofuranev[#1]#2{% +\iforigpt \typeout{command `benzofuranev' % + is based on `nonaheterov'.}\fi% +\nonaheterov[#1]{1==O}{#2}} +\def\benzofuranevi{% + \@ifnextchar[{\@benzofuranevi[@}{\@benzofuranevi[rb]}} +\def\@benzofuranevi[#1]#2{% +\iforigpt \typeout{command `benzofuranevi' % + is based on `nonaheterovi'.}\fi% +\nonaheterovi[#1]{1==O}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\isobenzofuranev} +% \begin{macro}{\isobenzofuranevi} +% \begin{macrocode} +\def\isobenzofuranev{\@ifnextchar[{\@isobenzofuranev[@}% + {\@isobenzofuranev[cegi]}} +\def\@isobenzofuranev[#1]#2{% +\iforigpt \typeout{command `isobenzofuranev' % + is based on `nonaheterov'.}\fi% +\nonaheterov[#1]{2==O}{#2}} +\def\isobenzofuranevi{\@ifnextchar[{\@isobenzofuranevi[@}% + {\@isobenzofuranevi[cegi]}} +\def\@isobenzofuranevi[#1]#2{% +\iforigpt \typeout{command `isobenzofuranevi' % + is based on `nonaheterovi'.}\fi% +\nonaheterovi[#1]{2==O}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\benzoxazolev} +% \begin{macro}{\benzoxazolevi} +% \begin{macrocode} +\def\benzoxazolev{% + \@ifnextchar[{\@benzoxazolev[@}{\@benzoxazolev[rb]}} +\def\@benzoxazolev[#1]#2{% +\iforigpt \typeout{command `benzoxazolev' % + is based on `nonaheterov'.}\fi% +\nonaheterov[#1]{1==O;3==N}{#2}} +\def\benzoxazolevi{% + \@ifnextchar[{\@benzoxazolevi[@}{\@benzoxazolevi[rb]}} +\def\@benzoxazolevi[#1]#2{% +\iforigpt \typeout{command `benzoxazolevi' % + is based on `nonaheterovi'.}\fi% +\nonaheterovi[#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 |\sixunitv| is a six-membered fragment that can be +% fused to another ring structure to produce a new ring system. +% The following +% numbering is adopted in this macro. +% +% \begin{verbatim} +% ********************** +% * six-membered unit * +% * (vertical type) * +% ********************** +% +% 1 +% * +% 6 * * 2 +% | | +% | | +% 5 * * 3 +% * +% 4 <===== the original point +% \end{verbatim} +% +% The macro |\sixunitv| has three arguments |ATOMLIST|, |SUBSLIST| +% and |OMIT| +% as well as an optional argument |BONDLIST|. +% +% \begin{verbatim} +% \sixunitv[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 |\sixunitv| 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|. +% \end{enumerate} +% +% \changes{v1.01a}{1998/06/08}{\cs{sixunitv} bug fix: +% \cs{bbb} to \cs{fff} and \cs{ccc} to \cs{eee}} +% +% \begin{macro}{\sixunitv} +% \begin{macro}{\@sixunitv} +% \begin{macrocode} +\def\sixunitv{\@ifnextchar[{\@sixunitv[@}{\@sixunitv[@]}} +\def\@sixunitv[#1]#2#3#4{\sixheterov[#1]{#2}{#3}[#4]} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \changes{v3.00}{2002/04/30}{\cs{sixunitv}: Old definition deleted.} +% +% \subsection{Five-membered ring unit} +% \subsubsection{Vertical type} +% +% The old function (v1.01) of |\fiveunitv| as a fusing ring unit +% is succeeded by |\fivefusev|. +% The command |\fiveunitv| has been changed into a subsidiary +% command of |\fiveheterov| (v2.00). +% +% The macro |\fiveunitv| is a five-membered fragment that can be +% fused to another +% ring structure to produce a new ring system. The following +% numbering is adopted in this macro. +% +% \begin{verbatim} +% ********************** +% * five-membered unit * +% * (vertical type) * +% ********************** +% +% 4 _______ 3 +% | | +% | | +% 5 * * 2 +% * +% 1 <===== the original point +% \end{verbatim} +% +% The macro |\fiveunitv| has three arguments |ATOMLIST|, |SUBSLIST| +% and |OMIT| +% as well as an optional argument |BONDLIST|. +% +% \begin{verbatim} +% \fiveunitv[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 +% {n+} : plus at the n-nitrogen atom (n = 1 to 5) +% \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. +% +% \fiveunitv{1==N}{1==H;2==F}{a} +% \end{verbatim} +% +% The definition of |\fiveunitv| uses a picture environment and +% consists of the same unit processes as shown in |\fiveheterov|: +% \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} +% +% \begin{macro}{\fiveunitv} +% \begin{macro}{\@fiveunitv} +% \begin{macrocode} +\def\fiveunitv{\@ifnextchar[{\@fiveunitv[@}{\@fiveunitv[r]}} +\def\@fiveunitv[#1]#2#3#4{\fiveheterov[#1]{#2}{#3}[#4]} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \changes{v3.00}{2002/04/30}{\cs{fivunitv}: Old definition deleted.} +% +% \subsubsection{Inverse vertical type} +% +% The old function (v1.01) of |\fiveunitvi| as a fusing ring unit +% is succeeded by |\fivefusevi|. +% The command |\fiveunitvi| has been changed into a subsidiary +% command of |\fiveheterovi| (v2.00). +% +% The macro |\fiveunitvi| typesets a five-membered fragment that can be +% fused to another +% ring structure to produce a new ring system. The following +% numbering is adopted in this macro. +% +% \begin{verbatim} +% ************************************ +% * five-membered unit * +% * (vertical type, inverse type) * +% ************************************ +% +% 1 +% * +% 6 * * 2 +% | | +% |_____| +% 4 3 +% * +% (0,0) <===== the original point +% \end{verbatim} +% +% The macro |\fiveunitvi| has three arguments |ATOMLIST|, |SUBSLIST| +% and |OMIT| +% as well as an optional argument |BONDLIST|. +% +% \begin{verbatim} +% \fiveunitvi[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 +% {n+} : plus at the n-nitrogen atom (n = 1 to 5) +% \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. +% +% \fiveunitvi{1==N}{1==H;2==F}{a} +% \end{verbatim} +% +% The definition of |\fiveunitvi| 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} +% +% \begin{macro}{\fiveunitvi} +% \begin{macro}{\@fiveunitvi} +% \begin{macrocode} +\def\fiveunitvi{\@ifnextchar[{\@fiveunitvi[@}{\@fiveunitvi[r]}} +\def\@fiveunitvi[#1]#2#3#4{\fiveheterovi[#1]{#2}{#3}[#4]} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \changes{v3.00}{2002/04/30}{\cs{fivunitvi}: Old definition deleted.} +% +% \section{Four-membered heterocycles} +% \subsection{Horizontal bonds} +% +% \begin{macro}{\bondshoriz} +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%% +% % horizontal bond % +% %%%%%%%%%%%%%%%%%%% +% horizontal inner bond for four-membered rings +\def\bondshoriz{% + \begin{sfpicture}(200,300)(0,0) + \ifx\fff\empty% + \ifx\bbb\empty% + \Put@Line(-138,270)(1,0){134}%double bond 4-3 + \else% + \Put@Line(-138,270)(1,0){115}%double bond 4-3 + \fi% + \else% + \ifx\bbb\empty% + \Put@Line(-120,270)(1,0){115}%double bond 4-3 + \else% + \Put@Line(-120,270)(1,0){96}%double bond 4-3 + \fi% + \fi\end{sfpicture}}% +% horizontal inner bond for four-membered rings (inverse type) +\def\bondshorizi{% + \begin{sfpicture}(200,300)(0,0) + \ifx\eee\empty% + \ifx\ccc\empty% + \Put@Line(-138,136)(1,0){134}%double bond 4-3 + \else%% + \Put@Line(-138,136)(1,0){115}%double bond 4-3 + \fi% + \else% + \ifx\ccc\empty% + \Put@Line(-120,136)(1,0){115}%double bond 4-3 + \else% + \Put@Line(-120,136)(1,0){96}%double bond 4-3 + \fi% + \fi\end{sfpicture}}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\skbondshoriz} +% \begin{macrocode} +%horizontal bond for four-membered rings +\def\skbondshoriz{% + \begin{sfpicture}(200,300)(0,0) + \ifx\fff\empty% + \ifx\bbb\empty% + \Put@Line(-171,303)(1,0){200}%bond 4-3 + \else% + \Put@Line(-171,303)(1,0){158}%bond 4-3 + \fi% + \else% + \ifx\bbb\empty% + \Put@Line(29,303)(-1,0){158}%bond 4-3 + \else% + \Put@Line(-129,303)(1,0){116}%bond 4-3 + \fi% + \fi\end{sfpicture}}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\skbondshorizi} +% \begin{macrocode} +%horizontal bond for four-membered rings (inverse type) +\def\skbondshorizi{% + \begin{sfpicture}(200,300)(0,0) + \ifx\eee\empty% + \ifx\ccc\empty% + \Put@Line(-171,103)(1,0){200}%bond 4-3 + \else% + \Put@Line(-171,103)(1,0){158}%bond 4-3 + \fi% + \else% + \ifx\ccc\empty% + \Put@Line(29,103)(-1,0){158}%bond 4-3 + \else% + \Put@Line(-129,103)(1,0){116}%bond 4-3 + \fi% + \fi\end{sfpicture}}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dotskbondshoriz} +% \begin{macrocode} +%horizontal bond for four-membered rings +\def\dotskbondshoriz{% + \begin{sfpicture}(200,300)(0,0) + \ifx\fff\empty% + \ifx\bbb\empty% + \dotorline(-171,303)(1,0){200}/(-171,303)(29,303)% + \else% + \dotorline(-171,303)(1,0){158}/(-171,303)(-29,303)% + \fi% + \else% + \ifx\bbb\empty% + \dotorline(29,303)(-1,0){158}/(29,303)(-129,303)% + \else% + \dotorline(-129,303)(1,0){116}/(-129,303)(-13,303)% + \fi% + \fi\end{sfpicture}}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dotskbondshorizi} +% \begin{macrocode} +%horizontal bond for four-membered rings (inverse type) +\def\dotskbondshorizi{% + \begin{sfpicture}(200,300)(0,0) + \ifx\eee\empty% + \ifx\ccc\empty% + \dotorline(-171,103)(1,0){200}/(-171,103)(29,103)% + \else% + \dotorline(-171,103)(1,0){158}/(-171,103)(-29,103)% + \fi% + \else% + \ifx\ccc\empty% + \dotorline(29,103)(-1,0){158}/(29,103)(-129,103)% + \else% + \dotorline(-129,103)(1,0){116}/(-129,103)(-13,103)% + \fi% + \fi\end{sfpicture}}% +% \end{macrocode} +% \end{macro} +% +% \subsection{Drawing four-membered heterocycles} +% +% The macro |\fourhetero| typesets a four-membered ring. The following +% numbering is adopted in this macro. +% +% \begin{verbatim} +% ************************** +% * fourhetero derivatives * +% * (vertical type) * +% ************************** +% The following numbering is adopted in this macro. +% +% c +% 4 _____ 3 +% d | | b +% | | +% 1 ----- 2<===== the original point +% a +% \end{verbatim} +% +% The macro |\fourhetero| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \fourhetero(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 `d' and a uppercase +% character `A' or `B'. +% +% The |BONDLIST| argument contains one +% character selected from a to e, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The option `$n+$' ($n=1$ to $4$) represents a plus charge on a hetero atom +% at the $n$-position. +% +% \begin{verbatim} +% BONDLIST: list of inner double bonds +% +% a : 1,2-double bond +% b : 2,3-double bond +% c : 4,3-double bond +% e : 4,1-double bond +% +% {n+} : plus at the n-nitrogen atom (n = 1 to 4) +% \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 4 atoms) +% +% for n = 1 to 4 +% +% n : Hetero atom, e.g. N, O, etc. at n-position +% e.g. 1==N for N at 1-position +% \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 4 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% \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 d: see BONDLIST) +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \fourhetero{1==N}{1==H;2==F} +% \fourhetero[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \fourhetero[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl} +% \end{verbatim} +% +% The definition of |\fourhetero| 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}{\fourhetero} +% \begin{macro}{\@four@hetero} +% \begin{macro}{\@four@@hetero} +% \begin{macro}{\@fourhetero} +% \begin{macrocode} +\def\fourhetero{\@ifnextchar({\@four@hetero(@}{\@four@hetero(@)}} +\def\@four@hetero(#1){\@ifnextchar[{\@four@@hetero(#1)[@}% +{\@four@@hetero(#1)[@]}} +\def\@four@@hetero(#1)[#2]#3#4{\@ifnextchar[% +{\@fourhetero(#1)[#2]{#3}{#4}[@}% +{\@fourhetero(#1)[#2]{#3}{#4}[@]}} +\def\@fourhetero(#1)[#2]#3#4[#5]{% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%% +% % treatment of atom list % +% %%%%%%%%%%%%%%%%%%%%%%%%%% +\iniatom\iniflag%initialize +\test@vertix@sixv{#3}{e}{c}{b}{f}{@}{@}% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % adustment of subs positions % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\@reset@ylsw% +\ylposition{#4}{5}{1}{4}{-1}% for 2 to 3 +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{142}\def\@@yli{0}\fi +\else +\ylposition{#4}{4}{4}{6}{0}% for 1 +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +\ylposition{#4}{2}{5}{7}{0}% for 4 +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(800,880)(-571,-137){fourhetero}% +(571,137)(171,-103)%2002/4/30 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +{\resetbdsw% +\@bond@@omit{#5}% +\Put@Direct(0,0){\set@skel@longbond{#1}{a}{skbondshorizi}}% + % bond between 1 and 2 \@aaa -> \skbondshorizi etc +\Put@Direct(-142,0){\set@skel@bond{#1}{b}{b}}% + % bond between 2 and 3 \@bbb -> \skbondb etc +\Put@Direct(0,0){\set@skel@longbond{#1}{c}{skbondshoriz}}% + % bond between 3 and 4 \@ccc -> \skbondshoriz etc +\Put@Direct(0,0){\set@skel@bond{#1}{d}{e}}% + % bond between 4 and 1 \@ddd -> \skbonde etc +}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\@tfor\member:=#2\do{% +\if\member r\relax% +\else\if\member a\relax \Put@Direct(0,0){\bondshorizi}% +\else\if\member b\relax \Put@Direct(-142,0){\bondb}% +\else\if\member c\relax \Put@Direct(0,0){\bondshoriz}% +\else\if\member d\relax \Put@Direct(0,0){\bonde}% +\else +% %%%%%%%%%%%%%%%%%%%%%%%%% +% % inner bond attachment % +% %%%%%%%%%%%%%%%%%%%%%%%%% + \expandafter\twoCH@@R\member//% + \set@fusionadd@fourv +\fi\fi\fi\fi\fi}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%% +% % setting heteroatoms % +% %%%%%%%%%%%%%%%%%%%%%%% +\Put@Direct(-142,0){\set@hetatom@sixv{#3}{5}{1}{4}{-1}% +\storeclipinfo%added 2001/06/20 by S. Fujita +}% for 2 to 3 +\developclipinfo%added 2001/06/20 by S. Fujita +\Put@Direct(0,0){\set@hetatom@sixv{#3}{4}{4}{6}{0}% +\storeclipinfo%added 2001/06/20 by S. Fujita +}% for 1 +\developclipinfo%added 2001/06/20 by S. Fujita +\Put@Direct(0,0){\set@hetatom@sixv{#3}{2}{5}{7}{0}% +\storeclipinfo%added 2001/06/20 by S. Fujita +}% for 4 +\developclipinfo%added 2001/06/20 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents % +% %%%%%%%%%%%%%%%%%%%%%%%% +\Put@Direct(-142,0){\setsixringv{#4}{5}{1}{4}{-1}}% for 2 to 3 +\Put@Direct(0,0){\setsixringv{#4}{4}{4}{6}{0}}% for 1 +\Put@Direct(0,0){\setsixringv{#4}{2}{5}{7}{0}}% for 4 +\end{ShiftPicEnvB}\iniatom\iniflag}% %end of \fourhetero macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The macro |\set@fusionadd@fourv| is an inner command contained +% in the definition of |\fourhetero| etc., where +% the macro is used for setting an additive +% or a fused ring at each bond (designated by |\@@tmpa|). The +% fused ring is typeset by the inner command |\set@fusion@fourv|. +% +% \begin{macro}{\set@fusionadd@fourv} +% \changes{v2.00}{1998/12/5}{New command: \cs{set@fusionadd@fourv}} +% \begin{macrocode} +\def\set@fusionadd@fourv{% + \if\@@tmpa 1\relax% + \putlatom{-200}{120}{\scriptsize \@@tmpb}% % right type + \else\if\@@tmpa 2\relax% + \putratom{60}{120}{\scriptsize \@@tmpb}% % right type + \else\if\@@tmpa 3\relax% + \putratom{60}{233}{\scriptsize \@@tmpb}% % right type + \else\if\@@tmpa 4\relax% + \putlatom{-200}{233}{\scriptsize \@@tmpb}% % right type + \else +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% + \set@fusion@fourv + \fi\fi\fi\fi% +}% +% \end{macrocode} +% \end{macro} +% +% The inner command |\set@fusion@fourv| is used for typesetting +% a fused ring at each bond represented by |\@@tmpa|. Warnings +% concerning mismatched ring-fusions are based on the command +% |\FuseWarning|. +% +% \begin{macro}{\set@fusion@fourv} +% \changes{v2.00}{1998/12/5}{New command: \cs{set@fusion@fourv}} +% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring} +% \begin{macrocode} +\def\set@fusion@fourv{% +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% +\if\@@tmpa d\relax% + \putlratom{-171}{303}{\@@tmpb}% % bond fused + \FuseWarning{0}{200}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{d}% + \else\if\@@tmpa D\relax% + \putlratom{-171}{103}{\@@tmpb}% % bond fused + \FuseWarning{0}{-200}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{D}% + \else\if\@@tmpa a\relax% + \putlratom{-173}{103}{\@@tmpb}% % bond fused + \FuseWarning{-200}{0}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{f}% + \else\if\@@tmpa A\relax% + \putlratom{27}{103}{\@@tmpb}% % bond fused + \FuseWarning{200}{0}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}% + \else\if\@@tmpa b\relax% + \putlratom{27}{103}{\@@tmpb}% % bond fused + \FuseWarning{0}{-200}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}% + \else\if\@@tmpa B\relax% + \putlratom{27}{303}{\@@tmpb}% % bond fused + \FuseWarning{0}{200}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}% + \else\if\@@tmpa c\relax% + \putlratom{27}{303}{\@@tmpb}% % bond fused + \FuseWarning{200}{0}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c}% + \else\if\@@tmpa C\relax% + \putlratom{-171}{303}{\@@tmpb}% % bond fused + \FuseWarning{-200}{0}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C}% +\fi\fi\fi\fi\fi\fi\fi\fi% +\global\let\FuseWarning=\FuseW@rning%added 2010/10/01 +}% end of the macro \set@fusion@fourv +% \end{macrocode} +% \end{macro} +% +% +% \changes{v5.01}{2013/3/19}{added \cs{oxetane}, \cs{thietane}, and \cs{azetidine} } +% \begin{macro}{\oxetane} +% \begin{macro}{\azetidine} +% \begin{macro}{\thietane} +% \begin{macrocode} +\def\oxetane{\@ifnextchar[{\@oxetane[@}{\@oxetane[]}} +\def\@oxetane[#1]#2{% +\iforigpt \typeout{command `oxetane' % + is based on `fourhetero'.}\fi% +\fourhetero[#1]{1==O}{#2}} +\def\azetidine{\@ifnextchar[{\@azetidine[@}{\@azetidine[]}} +\def\@azetidine[#1]#2{% +\iforigpt \typeout{command `azetidine' % + is based on `fourhetero'.}\fi% +\fourhetero[#1]{1==N}{#2}} +\def\thietane{\@ifnextchar[{\@thietane[@}{\@thietane[]}} +\def\@thietane[#1]#2{% +\iforigpt \typeout{command `thietane' % + is based on `fourhetero'.}\fi% +\fourhetero[#1]{1==S}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% +% \section{Three-membered heterocycles} +% \subsection{Vertical type} +% \subsubsection{Sloped bonds} +% +% \begin{macro}{\bondtria} +% \begin{macrocode} +% ********************** +% * bonds for triangle * +% ********************** +% fff 3--------2bbb +% ` / +% ddd `1/ <===== the original point +% bond between 1 and 2 + \def\bondtria{% + \ifx\ddd\empty% + \ifx\bbb\empty% + \Put@Line(-6,42)(3,5){72}% %double bond 1-2 + \else% + \Put@Line(-6,42)(3,5){60}% %double bond 1-2 + \fi% + \else% + \ifx\bbb\empty% + \Put@Line(6,62)(3,5){60}% %double bond 1-2 + \else% + \Put@Line(10,32)(3,5){60}% %double bond 1-2 + \fi% + \fi% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bondtrib} +% \begin{macrocode} +% bond between 1 and 3 + \def\bondtrib{% + \ifx\ddd\empty% + \ifx\fff\empty% + \Put@Line(6,42)(-3,5){72}% %double bond 1-3 + \else% + \Put@Line(6,42)(-3,5){60}% %double bond 1-3 + \fi% + \else% + \ifx\fff\empty% + \Put@Line(-6,62)(-3,5){60}% %double bond 1-2 + \else% + \Put@Line(6,42)(-3,5){60}% %double bond 1-2 + \fi% + \fi% + }% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\skbondtria} +% \begin{macrocode} +%bond between 1 and 2 +\def\skbondtria{% + \begin{sfpicture}(200,200)(0,0) + \ifx\ddd\empty% + \ifx\bbb\empty% + \Put@Line(0,0)(3,5){103}% %bond 1-2 + \else% + \Put@Line(0,0)(3,5){80}% %bond 1-2 + \fi% + \else% + \ifx\bbb\empty% + \Put@Line(103,171)(-3,-5){80}% %bond 1-2 + \else% + \Put@Line(35,21)(3,5){60}% %bond 1-2 + \fi% + \fi\end{sfpicture}}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\skbondtrib} +% \begin{macrocode} +%bond between 1 and 3 +\def\skbondtrib{% + \begin{sfpicture}(200,200)(0,0) + \ifx\ddd\empty% + \ifx\fff\empty% + \Put@Line(0,0)(-3,5){103}% %bond 1-3 + \else% + \Put@Line(0,0)(-3,5){80}% %bond 1-3 + \fi% + \else% +% \ifx\eee\empty%bug fix 1993/11/19 + \ifx\fff\empty% + \Put@Line(-103,171)(3,-5){80}% %bond 1-3 + \else% + \Put@Line(-35,21)(-3,5){60}% %bond 1-3 + \fi% + \fi\end{sfpicture}}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dotskbondtria} +% \begin{macrocode} +%bond between 1 and 2 +\def\dotskbondtria{% + \begin{sfpicture}(200,200)(0,0) + \ifx\ddd\empty% + \ifx\bbb\empty% + \dotorline(0,0)(3,5){103}/(0,0)(103,171)% + \else% + \dotorline(0,0)(3,5){80}/(0,0)(80,133)% + \fi% + \else% + \ifx\bbb\empty% + \dotorline(103,171)(-3,-5){80}/(103,171)(23,38)% + \else% + \dotorline(35,21)(3,5){60}/(35,21)(95,121)% + \fi% + \fi\end{sfpicture}}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dotskbondtrib} +% \begin{macrocode} +%bond between 1 and 3 +\def\dotskbondtrib{% + \begin{sfpicture}(200,200)(0,0) + \ifx\ddd\empty% + \ifx\fff\empty% + \dotorline(0,0)(-3,5){103}/(0,0)(-103,171)% + \else% + \dotorline(0,0)(-3,5){80}/(0,0)(-80,133)% + \fi% + \else% + \ifx\fff\empty% + \dotorline(-103,171)(3,-5){80}/(-103,171)(-23,38)% + \else% + \dotorline(-35,21)(-3,5){60}/(-35,21)(-95,121)% + \fi% + \fi\end{sfpicture}}% +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Drawing three-membered heterocycles} +% +% The macro |\threehetero| typesets a three-membered ring. The following +% numbering is adopted in this macro. +% +% \begin{verbatim} +% **************************** +% * thereehetero derivatives * +% * (vertical type) * +% **************************** +% +% b +% 3--------2 +% c ` / a +% `1/ <===== the original point +% \end{verbatim} +% +% The macro |\threehetero| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \threehetero(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] +% \threeheterov(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. +% +% \threehetero{1==N}{1==Cl;2==F} +% \threehetero[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \threehetero{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl} +% \end{verbatim} +% +% The definition of |\threehetero| 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} +% \changes{v2.01}{2001/6/20}{The +% \cs{storeclipinfo} command is added.} +% +% \begin{macro}{\threehetero} +% \begin{macro}{\@three@hetero} +% \begin{macro}{\@three@@hetero} +% \begin{macro}{\@threehetero} +% \begin{macrocode} +\def\threehetero{\@ifnextchar({\@three@hetero(@}{\@three@hetero(@)}} +\def\@three@hetero(#1){\@ifnextchar[{\@three@@hetero(#1)[@}% +{\@three@@hetero(#1)[@]}} +\def\@three@@hetero(#1)[#2]#3#4{\@ifnextchar[% +{\@threehetero(#1)[#2]{#3}{#4}[@}% +{\@threehetero(#1)[#2]{#3}{#4}[@]}} +\def\@threehetero(#1)[#2]#3#4[#5]{% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%% +% % treatment of atom list % +% %%%%%%%%%%%%%%%%%%%%%%%%%% +\iniatom\iniflag%initialize +\test@vertix@sixv{#3}{d}{b}{f}{@}{@}{@}% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % adustment of subs positions % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\@reset@ylsw% +\ylposition{#4}{3}{3}{5}{0}%subst 1 +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{68}\def\@@yli{0}\fi +\else +\ylposition{#4}{0}{1}{3}{0}%subst 2 +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{142}\def\@@yli{132}\fi +\else +\ylposition{#4}{3}{5}{7}{0}%subst 3 +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{132}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(800,580)(-468,-240){threeheterov}% +(468,240)(68,0)%2002/4/30 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +{\resetbdsw% +\@bond@@omit{#5}% +\Put@Direct(-68,0){\set@skel@longbond{#1}{a}{skbondtria}}% + % bond between 1 and 2 \@aaa -> \skbondtria etc +\Put@Direct(0,-132){\set@skel@longbond{#1}{b}{skbondshoriz}}% + % bond between 2 and 3 \@bbb -> \skbondb etc +\Put@Direct(-68,0){\set@skel@longbond{#1}{c}{skbondtrib}}% + % bond between 3 and 1 \@ccc -> \skbondtria etc +}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\@tfor\member:=#2\do{% +\if\member r\relax% +\else\if\member a\relax\Put@Direct(-68,0){\bondtria}% +\else\if\member b\relax\Put@Direct(0,-126){\bondshoriz}% +\else\if\member c\relax\Put@Direct(-68,0){\bondtrib}% +\else\if\member A\relax% aromatic circle + \Put@oCircle(-70,108){100}% %circle +\else +% %%%%%%%%%%%%%%%%%%%%%%%%% +% % inner bond attachment % +% %%%%%%%%%%%%%%%%%%%%%%%%% + \expandafter\twoCH@@R\member//% + \set@fusionadd@threev +\fi\fi\fi\fi\fi% +}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting hetero atoms % +% %%%%%%%%%%%%%%%%%%%%%%%% +\Put@Direct(-68,0){\set@hetatom@sixv{#3}{3}{3}{5}{0}% +%\if@clip\global\@cliptrue\fi +\storeclipinfo +}%subst 1 +\developclipinfo +\Put@Direct(-142,-132){\set@hetatom@sixv{#3}{0}{1}{3}{0}% +%\if@bclip\global\@bcliptrue\fi +\storeclipinfo +}%subst 2 +\developclipinfo +\Put@Direct(0,-132){\set@hetatom@sixv{#3}{3}{5}{7}{0}% +%\if@fclip\global\@fcliptrue\fi +\storeclipinfo +}%subst 3 +\developclipinfo +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents % +% %%%%%%%%%%%%%%%%%%%%%%%% +\Put@Direct(-68,0){\setsixringv{#4}{3}{3}{5}{0}}%subst 1 +\Put@Direct(-142,-132){\setsixringv{#4}{0}{1}{3}{0}}%subst 2 +\Put@Direct(0,-132){\setsixringv{#4}{3}{5}{7}{0}}%subst 3 +\end{ShiftPicEnvB}\iniatom\iniflag}% %end of \threehetero macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\threeheterov} +% \begin{macrocode} +\let\threeheterov=\threehetero +% \end{macrocode} +% \end{macro} +% +% The macro |\set@fusionadd@threev| is an inner command contained +% in the definition of |\threehetero| etc., where +% the macro is used for setting an additive +% or a fused ring at each bond (designated by |\@@tmpa|). The +% fused ring is typeset by the inner command |\set@fusion@threev|. +% +% \begin{macro}{\set@fusionadd@threev} +% \changes{v2.00}{1998/12/5}{New command: \cs{set@fusionadd@threev}} +% \begin{macrocode} +\def\set@fusionadd@threev{% + \if\@@tmpa 0\relax% + \putratom{-94}{92}{\scriptsize\@@tmpb}% % right type + \else\if\@@tmpa 1\relax% + \putratom{-94}{60}{\scriptsize\@@tmpb}% % right type + \else\if\@@tmpa 2\relax% + \putratom{-52}{120}{\scriptsize\@@tmpb}% % right type + \else\if\@@tmpa 3\relax% + \putratom{-126}{126}{\scriptsize\@@tmpb}% % right type + \else\if\@@tmpa 4\relax% + \putratom{-30}{-20}{\scriptsize\@@tmpb}% % right type + \else\if\@@tmpa 5\relax% + \putratom{52}{110}{\scriptsize\@@tmpb}% % right type + \else\if\@@tmpa 6\relax% + \putratom{-250}{110}{\scriptsize\@@tmpb}% % right type + \else +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% + \set@fusion@threev + \fi\fi\fi\fi\fi\fi\fi% +}% +% \end{macrocode} +% \end{macro} +% +% The inner command |\set@fusion@threev| 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@threev} +% \changes{v2.00}{1998/12/5}{New command: \cs{set@fusion@threev}} +% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring} +% \begin{macrocode} +\def\set@fusion@threev{% +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% +\if\@@tmpa b\relax% + \putlratom{29}{171}{\@@tmpb}% % bond fused + \FuseWarning{200}{0}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}% + \else\if\@@tmpa B\relax% + \putlratom{-171}{171}{\@@tmpb}% % bond fused + \FuseWarning{-200}{0}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}% + \else\if\@@tmpa a\relax% + \putlratom{-68}{0}{\@@tmpb}% % bond fused + \FuseWarning{-103}{-171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}% + \else\if\@@tmpa A\relax% + \putlratom{29}{171}{\@@tmpb}% % bond fused + \FuseWarning{103}{171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}% + \else\if\@@tmpa c\relax% + \putlratom{-171}{171}{\@@tmpb}% % bond fused + \FuseWarning{-103}{171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c}% + \else\if\@@tmpa C\relax% + \putlratom{-68}{0}{\@@tmpb}% % bond fused + \FuseWarning{103}{-171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C}% +\fi\fi\fi\fi\fi\fi% +\global\let\FuseWarning=\FuseW@rning%added 2010/10/01 +}% end of the macro \set@fusion@threev +% \end{macrocode} +% \end{macro} +% +% \changes{v5.01}{2013/3/19}{added \cs{oxiranev}, \cs{aziridinev}, and \cs{thiiranev} } +% \begin{macro}{\oxiranev} +% \begin{macro}{\aziridinev} +% \begin{macro}{\thiiranev} +% \begin{macrocode} +\def\oxiranev{\@ifnextchar[{\@oxiranev[@}{\@oxiranev[]}} +\def\@oxiranev[#1]#2{% +\iforigpt \typeout{command `oxiranev' % + is based on `threeheterov'.}\fi% +\threeheterov[#1]{1==O}{#2}} +\def\aziridinev{\@ifnextchar[{\@aziridinev[@}{\@aziridinev[]}} +\def\@aziridinev[#1]#2{% +\iforigpt \typeout{command `aziridinev' % + is based on `threeheterov'.}\fi% +\threeheterov[#1]{1==N}{#2}} +\def\thiiranev{\@ifnextchar[{\@thiiranev[@}{\@thiiranev[]}} +\def\@thiiranev[#1]#2{% +\iforigpt \typeout{command `thiiranev' % + is based on `threeheterov'.}\fi% +\threeheterov[#1]{1==S}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Inverse vertical type} +% \subsubsection{Sloped bonds} +% +% \changes{v1.02}{1998/10/20}{Newly added commands: +% \cs{Bondtria}} +% \begin{macro}{\Bondtria} +% \begin{macrocode} +% ********************** +% * bonds for triangle * +% ********************** +% +% aaa /1` <===== the original point +% / ` +% eee 3--------2ccc +% bond between 1 and 2 + \def\Bondtria{% + \ifx\aaa\empty% + \ifx\ccc\empty% + \Put@Line(-6,-42)(3,-5){72}% %double bond 1-2 + \else% + \Put@Line(-6,-42)(3,-5){60}% %double bond 1-2 + \fi% + \else% + \ifx\ccc\empty% + \Put@Line(6,-62)(3,-5){60}% %double bond 1-2 + \else% + \Put@Line(10,-32)(3,-5){60}% %double bond 1-2 + \fi% + \fi% +}% +% \end{macrocode} +% \end{macro} +% +% \changes{v1.02}{1998/10/20}{Newly added commands: \cs{Bondtrib}} +% \begin{macro}{\Bondtrib} +% \begin{macrocode} +% bond between 1 and 3 + \def\Bondtrib{% + \ifx\aaa\empty% + \ifx\eee\empty% + \Put@Line(6,-42)(-3,-5){72}% %double bond 1-3 + \else% + \Put@Line(6,-42)(-3,-5){60}% %double bond 1-3 + \fi% + \else% + \ifx\fff\empty% + \Put@Line(-6,-62)(-3,-5){60}% %double bond 1-2 + \else% + \Put@Line(6,-42)(-3,-5){60}% %double bond 1-2 + \fi% + \fi% + }% +% \end{macrocode} +% \end{macro} +% +% \changes{v1.02}{1998/10/20}{Newly added commands: +% \cs{skBondtria}} +% \begin{macro}{\skBondtria} +% \begin{macrocode} +%bond between 1 and 2 +\def\skBondtria{% +% \begin{sfpicture}(200,200)(0,0) +% \begin{sfpicture}(0,0)(0,0) + \ifx\aaa\empty% + \ifx\ccc\empty% + \Put@Line(0,0)(3,-5){103}% %bond 1-2 + \else% + \Put@Line(0,0)(3,-5){80}% %bond 1-2 + \fi% + \else% + \ifx\ccc\empty% + \Put@Line(103,-171)(-3,5){80}% %bond 1-2 + \else% + \Put@Line(35,-21)(3,-5){60}% %bond 1-2 + \fi% + \fi +%\end{sfpicture} +}% +% \end{macrocode} +% \end{macro} +% +% \changes{v1.02}{1998/10/20}{Newly added commands: +% \cs{skBondtrib}} +% \begin{macro}{\skBondtrib} +% \begin{macrocode} +%bond between 1 and 3 +\def\skBondtrib{% +% \begin{sfpicture}(0,0)(0,0) +% \begin{sfpicture}(200,200)(0,0) + \ifx\aaa\empty% + \ifx\eee\empty% + \Put@Line(0,0)(-3,-5){103}% %bond 1-3 + \else% + \Put@Line(0,0)(-3,-5){80}% %bond 1-3 + \fi% + \else% + \ifx\eee\empty% + \Put@Line(-103,-171)(3,5){80}% %bond 1-3 + \else% + \Put@Line(-35,-21)(-3,-5){60}% %bond 1-3 + \fi% + \fi +%\end{sfpicture} +}% +% \end{macrocode} +% \end{macro} +% +% \changes{v2.00}{1998/12/25}{Newly added commands: +% \cs{dotskBondtria}} +% \begin{macro}{\dotskBondtria} +% \begin{macrocode} +%bond between 1 and 2 +\def\dotskBondtria{% + \ifx\aaa\empty% + \ifx\ccc\empty% + \dotorline(0,0)(3,-5){103}/(0,0)(103,-171)% + \else% + \dotorline(0,0)(3,-5){80}/(0,0)(80,-133)% + \fi% + \else% + \ifx\ccc\empty% + \dotorline(103,-171)(-3,5){80}/(103,-171)(23,-38)% + \else% + \dotorline(35,-21)(3,-5){60}/(35,-21)(95,-121)% + \fi% + \fi +}% +% \end{macrocode} +% \end{macro} +% +% \changes{v2.00}{1998/12/25}{Newly added commands: +% \cs{dotskBondtrib}} +% \begin{macro}{\dotskBondtrib} +% \begin{macrocode} +%bond between 1 and 3 +\def\dotskBondtrib{% + \ifx\aaa\empty% + \ifx\eee\empty% + \dotorline(0,0)(-3,-5){103}/(0,0)(-103,-171)% + \else% + \dotorline(0,0)(-3,-5){80}/(0,0)(-80,-133)% + \fi% + \else% + \ifx\eee\empty% + \dotorline(-103,-171)(3,5){80}/(-103,-171)(-23,-38)% + \else% + \dotorline(-35,-21)(-3,-5){60}/(-35,-21)(-95,-121)% + \fi% + \fi +}% +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Drawing three-membered heterocycles (inverse)} +% +% The macro |\threeheteroi| typesets a three-membered ring of +% inverse vertical type. The following numbering is adopted +% in this macro. +% \changes{v1.02}{1998/10/20}{Newly added commands: +% \cs{threeheteroi}} +% +% \begin{verbatim} +% **************************** +% * thereehetero derivatives * +% * (inverse vertical type) * +% **************************** +% +% /1` <===== the original point +% c / ` a +% 3--------2 +% b +% \end{verbatim} +% +% The macro |\threeheteroi| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \threeheteroi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] +% \threeheterovi(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. +% +% \threeheteroi{1==N}{1==Cl;2==F} +% \threeheteroi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \threeheteroi{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl} +% \end{verbatim} +% +% The definition of |\threehetero| 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} +% \changes{v2.01}{2001/6/20}{The +% \cs{storeclipinfo} command is added.} +% +% \begin{macro}{\threeheteroi} +% \begin{macro}{\@three@heteroi} +% \begin{macro}{\@three@@heteroi} +% \begin{macro}{\@threeheteroi} +% \begin{macrocode} +\def\threeheteroi{\@ifnextchar({\@three@heteroi(@}{\@three@heteroi(@)}} +\def\@three@heteroi(#1){\@ifnextchar[{\@three@@heteroi(#1)[@}% +{\@three@@heteroi(#1)[@]}} +\def\@three@@heteroi(#1)[#2]#3#4{\@ifnextchar[% +{\@threeheteroi(#1)[#2]{#3}{#4}[@}% +{\@threeheteroi(#1)[#2]{#3}{#4}[@]}} +\def\@threeheteroi(#1)[#2]#3#4[#5]{% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%% +% % treatment of atom list % +% %%%%%%%%%%%%%%%%%%%%%%%%%% +\iniatom\iniflag%initialize +\test@vertix@sixv{#3}{a}{c}{e}{@}{@}{@}% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % adustment of subs positions % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\@reset@ylsw% +\ylposition{#4}{0}{0}{2}{0}%subst 1 +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{68}\def\@@yli{406}\fi +\else +\ylposition{#4}{1}{2}{4}{0}%subst 2 +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{142}\def\@@yli{275}\fi +\else +\ylposition{#4}{2}{4}{6}{0}%subst 3 +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{275}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(800,580)(-468,-340){threeheterovi}% +(468,340)(68,0)%2002/4/30 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +{\resetbdsw% +\@bond@@omit{#5}% +\Put@Direct(-68,0){\set@skel@longbond{#1}{a}{skBondtria}}% + % bond between 1 and 2 \@aaa -> \skBondtria etc +\Put@Direct(0,-275){\set@skel@longbond{#1}{b}{skbondshorizi}}% + % bond between 2 and 3 \@bbb -> \skbondb etc +\Put@Direct(-68,0){\set@skel@longbond{#1}{c}{skBondtrib}}% + % bond between 3 and 1 \@ccc -> \skBondtrib etc +}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\@tfor\member:=#2\do{% +\if\member r\relax% +\else\if\member a\relax\Put@Direct(-68,0){\Bondtria}% +\else\if\member b\relax\Put@Direct(0,-274){\bondshorizi}% +\else\if\member c\relax\Put@Direct(-68,0){\Bondtrib}% +\else\if\member A\relax% aromatic circle + \Put@oCircle(-70,-108){100}% %circle +\else +% %%%%%%%%%%%%%%%%%%%%%%%%% +% % inner bond attachment % +% %%%%%%%%%%%%%%%%%%%%%%%%% + \expandafter\twoCH@@R\member//% + \set@fusionadd@threevi +\fi\fi\fi\fi\fi% +}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting hetero atoms % +% %%%%%%%%%%%%%%%%%%%%%%%% +\Put@Direct(-68,-406){\set@hetatom@sixv{#3}{0}{0}{2}{0}% +%\if@aclip\global\@acliptrue\fi +\storeclipinfo +}%subst 1 +\developclipinfo +\Put@Direct(0,-275){\set@hetatom@sixv{#3}{2}{4}{6}{0}% +%\if@eclip\global\@ecliptrue\fi +\storeclipinfo +}%subst 3 +\developclipinfo +\Put@Direct(-142,-275){\set@hetatom@sixv{#3}{1}{2}{4}{0}% +%\if@cclip\global\@ccliptrue\fi +\storeclipinfo +}%subst 2 +\developclipinfo +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents % +% %%%%%%%%%%%%%%%%%%%%%%%% +\Put@Direct(-68,-406){\setsixringv{#4}{0}{0}{2}{0}}%subst 1 +\Put@Direct(0,-275){\setsixringv{#4}{2}{4}{6}{0}}%subst 3 +\Put@Direct(-142,-275){\setsixringv{#4}{1}{2}{4}{0}}%subst 2 +\end{ShiftPicEnvB}\iniatom\iniflag}% %end of \threeheteroi macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\threeheterovi} +% \begin{macrocode} +\let\threeheterovi=\threeheteroi +% \end{macrocode} +% \end{macro} +% +% The macro |\set@fusionadd@threevi| is an inner command contained +% in the definition of |\threeheteroi| etc., where +% the macro is used for setting an additive +% or a fused ring at each bond (designated by |\@@tmpa|). The +% fused ring is typeset by the inner command |\set@fusion@threevi|. +% +% \begin{macro}{\set@fusionadd@threevi} +% \changes{v2.00}{1998/12/5}{New command: \cs{set@fusionadd@threevi}} +% \begin{macrocode} +\def\set@fusionadd@threevi{% + \if\@@tmpa 0\relax% + \putratom{-94}{-120}{\scriptsize\@@tmpb}% % right type + \else\if\@@tmpa 1\relax% + \putratom{-94}{-80}{\scriptsize\@@tmpb}% % right type + \else\if\@@tmpa 2\relax% + \putratom{-52}{-150}{\scriptsize\@@tmpb}% % right type + \else\if\@@tmpa 3\relax% + \putratom{-126}{-150}{\scriptsize\@@tmpb}% % right type + \else\if\@@tmpa 4\relax% + \putratom{-30}{0}{\scriptsize\@@tmpb}% % right type + \else\if\@@tmpa 5\relax% + \putratom{32}{-130}{\scriptsize\@@tmpb}% % right type + \else\if\@@tmpa 6\relax% + \putratom{-230}{-130}{\scriptsize\@@tmpb}% % right type + \else +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% + \set@fusion@threevi + \fi\fi\fi\fi\fi\fi\fi% +}% +% \end{macrocode} +% \end{macro} +% +% The inner command |\set@fusion@threevi| is used for typesetting +% a fused ring at each bond represented by |\@@tmpa|. Warnings +% concerning mismatched ring-fusions are based on the command +% |\FuseWarning|. +% +% \begin{macro}{\set@fusion@threevi} +% \changes{v2.00}{1998/12/5}{New command: \cs{set@fusion@threevi}} +% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring} +% \begin{macrocode} +\def\set@fusion@threevi{% +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% +\if\@@tmpa b\relax% + \putlratom{29}{-171}{\@@tmpb}% % bond fused + \FuseWarning{200}{0}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}% + \else\if\@@tmpa B\relax% + \putlratom{-171}{-171}{\@@tmpb}% % bond fused + \FuseWarning{-200}{0}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}% + \else\if\@@tmpa a\relax% + \putlratom{-68}{0}{\@@tmpb}% % bond fused + \FuseWarning{-103}{171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}% + \else\if\@@tmpa A\relax% + \putlratom{29}{-171}{\@@tmpb}% % bond fused + \FuseWarning{103}{-171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}% + \else\if\@@tmpa c\relax% + \putlratom{-171}{-171}{\@@tmpb}% % bond fused + \FuseWarning{103}{171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c}% + \else\if\@@tmpa C\relax% + \putlratom{-68}{0}{\@@tmpb}% % bond fused + \FuseWarning{-103}{-171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C}% +\fi\fi\fi\fi\fi\fi% +\global\let\FuseWarning=\FuseW@rning%added 2010/10/01 +}% end of the macro \set@fusion@threevi +%</hetarom> +% \end{macrocode} +% \end{macro} +% +% \changes{v5.01}{2013/3/19}{added \cs{oxiranev}, \cs{aziridinev}, and \cs{thiiranev} } +% \begin{macro}{\oxiranevi} +% \begin{macro}{\aziridinevi} +% \begin{macro}{\thiiranevi} +% \begin{macrocode} +\def\oxiranevi{\@ifnextchar[{\@oxiranevi[@}{\@oxiranevi[]}} +\def\@oxiranevi[#1]#2{% +\iforigpt \typeout{command `oxiranevi' % + is based on `threeheterovi'.}\fi% +\threeheterovi[#1]{1==O}{#2}} +\def\aziridinevi{\@ifnextchar[{\@aziridinevi[@}{\@aziridinevi[]}} +\def\@aziridinevi[#1]#2{% +\iforigpt \typeout{command `aziridinevi' % + is based on `threeheterovi'.}\fi% +\threeheterovi[#1]{1==N}{#2}} +\def\thiiranevi{\@ifnextchar[{\@thiiranevi[@}{\@thiiranevi[]}} +\def\@thiiranevi[#1]#2{% +\iforigpt \typeout{command `thiiranevi' % + is based on `threeheterovi'.}\fi% +\threeheterovi[#1]{1==S}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \Finale +% +\endinput |