% \iffalse meta-comment %% File: fusering.dtx % % Copyright 1998,2001,2002,2004,2010 by Shinsaku Fujita % % This file is part of XyMTeX system. % ------------------------------------- % % 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 fusering.dtx and fusering.ins % and the derived file fusering.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{fusering} % \def\versi@ndate{December 25, 1998} % \def\versi@nno{ver2.00} % \def\copyrighth@lder{SF} % Shinsaku Fujita % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \def\j@urnalname{fusering} % \def\versi@ndate{June 20, 2001} % \def\versi@nno{ver2.01} % \def\copyrighth@lder{SF} % Shinsaku Fujita % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \def\j@urnalname{fusering} % \def\versi@ndate{April 30, 2002} % \def\versi@nno{ver3.00} % \def\copyrighth@lder{SF} % Shinsaku Fujita % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \def\j@urnalname{fusering} % \def\versi@ndate{May 30, 2002} % \def\versi@nno{ver4.00} % \def\copyrighth@lder{SF} % Shinsaku Fujita % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \def\j@urnalname{fusering} % \def\versi@ndate{August 30, 2004} % \def\versi@nno{ver4.01} % \def\copyrighth@lder{SF} % Shinsaku Fujita % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % \fi % % \CheckSum{3906} %% \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{v2.00}{1998/12/25}{enhanced edition for LaTeX2e} % \changes{v2.01}{2001/06/20}{Size reduction and % clipping information} % \changes{v3.00}{2002/04/30}{sfpicture environment, etc.} % \changes{v4.00}{2002/05/30}{PostScript output and ShiftPicEnv} % \changes{v5.00}{2010/10/01}{the LaTeX Project Public License} % \fi % % \iffalse %<*driver> \NeedsTeXFormat{pLaTeX2e} % \fi \ProvidesFile{fusering.dtx}[2010/10/01 v5.00 XyMTeX{} package file] % \iffalse \documentclass{ltxdoc} \GetFileInfo{fusering.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{Fusing Ring Units by {\sffamily fusering.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{fusering.dtx} \end{document} % % \fi % % \section{Introduction}\label{methylen:intro} % % \subsection{Options for {\sffamily docstrip}} % % \DeleteShortVerb{\|} % \begin{center} % \begin{tabular}{|l|l|} % \hline % \emph{option} & \emph{function}\\ \hline % fusering & fusering.sty \\ % driver & driver for this dtx file \\ % \hline % \end{tabular} % \end{center} % \MakeShortVerb{\|} % % \subsection{Version Information} % % \begin{macrocode} %<*fusering> \typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 5.00} \typeout{ -- Released October 01, 2010 by Shinsaku Fujita} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\j@urnalname{fusering} \def\versi@ndate{October 01, 2010} \def\versi@nno{ver5.00} \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 fusering.sty} % % \begin{verbatim} % ********************************** % * fusering.sty: list of commands * % ********************************** % % % \sixfusev \@sixfusev \sixfuseposv % \sixfusevi \@sixfusevi \sixfuseposvi % \sixfuseh \@sixfuseh \sixfuseposh % \sixfusehi \@sixfusehi \sixfuseposhi % % % \fivefusev \@fivefusev \fivefuseposv % \fivefusevi \@fivefusevi \fivefuseposvi % \fivefuseh \@fivefuseh \fivefuseposh % \fivefusehi \@fivefusehi \fivefuseposhi % % % \fourfuse \@fourfuse \fourfusepos % % % \threefusev \@threefusev \threefuseposv % \threefusevi \@threefusevi \threefuseposvi % \threefuseh \@threefuseh \threefuseposh % \threefusehi \@threefusehi \threefuseposhi % \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 polymers.sty} for the present case). Hence, the combination % of |\input| and |\@ifundefined| is used to crossload sty % files ({\sf chemstr.sty} etc. for the present case) in place of the % |\RequirePackage| command of \LaTeXe{}. % % \begin{macrocode} % ************************* % * input of basic macros * % ************************* \@ifundefined{setsixringv}{\input chemstr.sty\relax}{} \@ifundefined{bzdrv}{\input carom.sty\relax}{} \@ifundefined{hbonde}{\input hetaromh.sty\relax}{} \@ifundefined{bonde}{\input hetarom.sty\relax}{} \unitlength=0.1pt % \end{macrocode} % % \section{Six-Membered Fusing Units} % \subsection{Vertical Type} % % The command |\sixfusev| produces a six-membered fusing unit % of vertical type. The structure produced lacks a given bond % in order to realize ring fusion, which produces a new ring system. % The following numbering is adopted in this macro. % Note that the difference between |\sixfusev| and |\sixuniv|, % the latter of which is designed as an inner command for giving % a building block with no adjustment of attached sites, while % the former has a function of such adjustment. % % \begin{verbatim} % ***************************** % * six-membered fusing unit * % * (vertical type) * % ***************************** % % 1 % f * a % 6 * * 2 % d | | b % | | % 5 * * 3 % d * c % 4 <===== the original point % \end{verbatim} % % The macro |\sixfusev| has three arguments |ATOMLIST|, |SUBSLIST| % and |FUSE| 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} % \sixfusev(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[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'. % % \begin{verbatim} % SKBONDLIST = % A: dotted bond for an alpha (down) bond % B: boldfaced bond for a beta (upper) bond % % \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 |FUSE| represents one bond to be omitted. % The omitted edge is regarded as a fused position. % % \begin{verbatim} % FUSE: one bond omitted (a, b, c, d, e, or f) % \end{verbatim} % % The argument |OMIT| represents one or more bonds to be omitted. % The omitted edges are regarded as 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. % % \sixfusev{1==N}{1==Cl;2==F}{e} % \end{verbatim} % % \changes{v2.00}{1998/12/25}{New command: \cs{sixfusev}} % % \begin{macro}{\if@skbondlist} % \begin{macrocode} %\newif\if@skbondlist %\@skbondlistfalse % \end{macrocode} % \end{macro}% to hetarom.sty % % \begin{macro}{\sixfusev} % \begin{macro}{\@six@fusev} % \begin{macro}{\@six@@fusev} % \begin{macro}{\@sixfusev} % \begin{macrocode} \def\sixfusev{\@ifnextchar({\@six@fusev(@}{\@six@fusev(@)}} \def\@six@fusev(#1){\@ifnextchar[{\@six@@fusev(#1)[@}% {\@six@@fusev(#1)[@]}} \def\@six@@fusev(#1)[#2]#3#4#5{\@ifnextchar[% {\@sixfusev(#1)[#2]{#3}{#4}{#5}[@}% {\@sixfusev(#1)[#2]{#3}{#4}{#5}[@]}} \def\@sixfusev(#1)[#2]#3#4#5[#6]{% % %%%%%%%%%%%%%%%%%%%%%%%%%% % % treatment of atom list % % %%%%%%%%%%%%%%%%%%%%%%%%%% \iniatom\iniflag%initialize% \test@vertix@sixv{#3}{a}{b}{c}{d}{e}{f}% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adjustment of attached positions % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \sixfuseposv{#5}% \begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/% (800,880)(-\shiftii,-\shifti){sixfusev}%2002/4/30 by S. Fujita % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%% % % outer skeleton % % %%%%%%%%%%%%%%%%%% % changed FUSE into a list 1993/11/21 by Shinsaku Fujita {% \resetbdsw% \@bond@fuse@omit{#5}{#6}% \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 }% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%% % % inner double bond % % %%%%%%%%%%%%%%%%%%%%% \@tfor\member:=#2\do{% \if\member r\relax% \else\if\member l\relax% \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\relax%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}% \end{ShiftPicEnv}% \sixfuseposv{#5}%for FuseWaring when nested \iniatom\iniflag}% %end of \sixfusev macro % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % The macro |\sixfuseposv| is used in the definition of % the |\sixfusev| macro to detect a fused edge, where % the coordinates of a reference terminal (|\fuseAx| and |\fuseAy|) % and of the other terminal of the edge (|\fuseBx| and |\fuseBy|) % are given for the successive process of adjustment. % % \begin{macro}{\if@sixfuseposv} % \begin{macro}{\sixfuseposv} % \begin{macrocode} \newif\if@sixfuseposv \@sixfuseposvfalse \def\fuseAx{0} \def\fuseAy{0} \def\fuseBx{0} \def\fuseBy{0} \def\sixfuseposv#1{% \global\@sixfuseposvfalse {\resetbdsw% \@tfor\memBer:=#1\do{% \if\memBer a\relax \if@sixfuseposv \XyMTeXWarning{Double fused bond at bond `a'}% \else \gdef\fuseAx{0}\gdef\fuseAy{406}% \gdef\fuseBx{171}\gdef\fuseBy{303}% \global\@sixfuseposvtrue \fi \fi% \if\memBer A\relax \if@sixfuseposv \XyMTeXWarning{Double fused bond at bond `A'}% \else \gdef\fuseBx{0}\gdef\fuseBy{406}% \gdef\fuseAx{171}\gdef\fuseAy{303}% \global\@sixfuseposvtrue \fi \fi% \if\memBer b\relax \if@sixfuseposv \XyMTeXWarning{Double fused bond at bond `b'}% \else \gdef\fuseAx{171}\gdef\fuseAy{303}% \gdef\fuseBx{171}\gdef\fuseBy{103}% \global\@sixfuseposvtrue \fi \fi% \if\memBer B\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `B'}% \else \gdef\fuseBx{171}\gdef\fuseBy{303}% \gdef\fuseAx{171}\gdef\fuseAy{103}% \global\@sixfuseposvtrue \fi \fi% \if\memBer c\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `c'}% \else \gdef\fuseAx{171}\gdef\fuseAy{103}% \gdef\fuseBx{0}\gdef\fuseBy{0}% \global\@sixfuseposvtrue \fi \fi% \if\memBer C\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `C'}% \else \gdef\fuseBx{171}\gdef\fuseBy{103}% \gdef\fuseAx{0}\gdef\fuseAy{0}% \global\@sixfuseposvtrue \fi \fi% \if\memBer d\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `d'}% \else \gdef\fuseAx{0}\gdef\fuseAy{0}% \gdef\fuseBx{-171}\gdef\fuseBy{103}% \global\@sixfuseposvtrue \fi \fi% \if\memBer D\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `D'}% \else \gdef\fuseBx{0}\gdef\fuseBy{0}% \gdef\fuseAx{-171}\gdef\fuseAy{103}% \global\@sixfuseposvtrue \fi \fi% \if\memBer e\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `e'}% \else \gdef\fuseAx{-171}\gdef\fuseAy{103}% \gdef\fuseBx{-171}\gdef\fuseBy{303}% \global\@sixfuseposvtrue \fi \fi% \if\memBer E\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `E'}% \else \gdef\fuseBx{-171}\gdef\fuseBy{103}% \gdef\fuseAx{-171}\gdef\fuseAy{303}% \global\@sixfuseposvtrue \fi \fi% \if\memBer f\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `f'}% \else \gdef\fuseAx{-171}\gdef\fuseAy{303}% \gdef\fuseBx{0}\gdef\fuseBy{406}% \global\@sixfuseposvtrue \fi \fi% \if\memBer F\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `F'}% \else \gdef\fuseBx{-171}\gdef\fuseBy{303}% \gdef\fuseAx{0}\gdef\fuseAy{406}% \global\@sixfuseposvtrue \fi \fi}}}% end of the macro \sixfuseposv % \end{macrocode} % \end{macro} % \end{macro} % % The macro |\@bond@fuse@omit| is used in |\sixfusev| etc. % for detecting omitted bonds, where |\@aaa| etc. are empty if % they are omitted. % % \begin{macro}{\@bond@fuse@omit} % \begin{macrocode} \def\@bond@fuse@omit#1#2{% \ifx#1a\relax\gdef\@aaa{}\fi \ifx#1b\relax\gdef\@bbb{}\fi \ifx#1c\relax\gdef\@ccc{}\fi \ifx#1d\relax\gdef\@ddd{}\fi \ifx#1e\relax\gdef\@eee{}\fi \ifx#1f\relax\gdef\@fff{}\fi \ifx#1A\relax\gdef\@aaa{}\fi \ifx#1B\relax\gdef\@bbb{}\fi \ifx#1C\relax\gdef\@ccc{}\fi \ifx#1D\relax\gdef\@ddd{}\fi \ifx#1E\relax\gdef\@eee{}\fi \ifx#1F\relax\gdef\@fff{}\fi %%%% \@tfor\memBer:=#2\do{% \if\memBer a\relax\gdef\@aaa{}% \ifx#1a\relax \XyMTeXWarning{Double spec. of bond `a' in FUSE and OMIT}\fi \fi% \if\memBer A\relax\gdef\@aaa{}% \ifx#1a\relax \XyMTeXWarning{Double spec. of bond `a' in FUSE and OMIT}\fi \fi% \if\memBer b\relax\gdef\@bbb{}% \ifx#1b\relax \XyMTeXWarning{Double spec. of bond `b' in FUSE and OMIT}\fi \fi% \if\memBer B\relax\gdef\@bbb{}% \ifx#1b\relax \XyMTeXWarning{Double spec. of bond `b' in FUSE and OMIT}\fi \fi% \if\memBer c\relax\gdef\@ccc{}% \ifx#1c\relax \XyMTeXWarning{Double spec. of bond `c' in FUSE and OMIT}\fi \fi% \if\memBer C\relax\gdef\@ccc{}% \ifx#1c\relax \XyMTeXWarning{Double spec. of bond `c' in FUSE and OMIT}\fi \fi% \if\memBer d\relax\gdef\@ddd{}% \ifx#1d\relax \XyMTeXWarning{Double spec. of bond `d' in FUSE and OMIT}\fi \fi% \if\memBer D\relax\gdef\@ddd{}% \ifx#1d\relax \XyMTeXWarning{Double spec. of bond `d' in FUSE and OMIT}\fi \fi% \if\memBer e\relax\gdef\@eee{}% \ifx#1e\relax \XyMTeXWarning{Double spec. of bond `e' in FUSE and OMIT}\fi \fi% \if\memBer E\relax\gdef\@eee{}% \ifx#1e\relax \XyMTeXWarning{Double spec. of bond `e' in FUSE and OMIT}\fi \fi% \if\memBer f\relax\gdef\@fff{}% \ifx#1f\relax \XyMTeXWarning{Double spec. of bond `f' in FUSE and OMIT}\fi \fi% \if\memBer F\relax\gdef\@fff{}% \ifx#1f\relax \XyMTeXWarning{Double spec. of bond `f' in FUSE and OMIT}\fi \fi% }}% % \end{macrocode} % \end{macro} % % The macros |\sixunitv| has been revived for compativility. % \changes{v3.00}{2002/4/30}{Revived command: \cs{sixunitv}} % % \begin{macro}{\sixunitv} % \begin{macrocode} \def\sixunitv{\@ifnextchar[{\@six@unitv}{\@six@unitv[@]}} \def\@six@unitv[#1]#2#3#4{\sixfusev[#1]{#2}{#3}{#4}} % \end{macrocode} % \end{macro} % % % \subsection{Inverse Vertical Type} % % The command |\sixfusevi| produces a six-membered fusing unit % of vertical type. The structure produced lacks a given bond % in order to realize ring fusion, which produces a new ring system. % The following numbering is adopted in this macro. % Note that the difference between |\sixfusevi| and |\sixunivi|, % the latter of which is designed as an inner command for giving % a building block with no adjustment of attached sites, while % the former has a function of such adjustment. % % \begin{verbatim} % ***************************** % * six-membered fusing unit * % * (inverse vertical type) * % ***************************** % % 4 % d * c % 5 * * 3 % e | | b % | | % 6 * * 2 % f * a % 1 <===== the original point % \end{verbatim} % % The macro |\sixfusevi| has three arguments |ATOMLIST|, |SUBSLIST| % and |FUSE| 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} % \sixfusevi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[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'. % % \begin{verbatim} % SKBONDLIST = % A: dotted bond for an alpha (down) bond % B: boldfaced bond for a beta (upper) bond % \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 |FUSE| represents one bond to be omitted. % The omitted edge is regarded as a fused position. % % \begin{verbatim} % FUSE: one bond omitted (a, b, c, d, e, or f) % \end{verbatim} % % The argument |OMIT| represents one or more bonds to be omitted. % The omitted edges are regarded as 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. % % \sixfusevi{1==N}{1==Cl;2==F}{e} % \end{verbatim} % % \changes{v2.00}{1998/12/25}{New command: \cs{sixfusevi}} % % \begin{macro}{\sixfusevi} % \begin{macro}{\@six@fusevi} % \begin{macro}{\@six@@fusevi} % \begin{macro}{\@sixfusevi} % \begin{macrocode} \def\sixfusevi{\@ifnextchar({\@six@fusevi(@}{\@six@fusevi(@)}} \def\@six@fusevi(#1){\@ifnextchar[{\@six@@fusevi(#1)[@}% {\@six@@fusevi(#1)[@]}} \def\@six@@fusevi(#1)[#2]#3#4#5{\@ifnextchar[% {\@sixfusevi(#1)[#2]{#3}{#4}{#5}[@}% {\@sixfusevi(#1)[#2]{#3}{#4}{#5}[@]}} \def\@sixfusevi(#1)[#2]#3#4#5[#6]{% % %%%%%%%%%%%%%%%%%%%%%%%%%% % % treatment of atom list % % %%%%%%%%%%%%%%%%%%%%%%%%%% \iniatom\iniflag%initialize% \test@vertix@sixv{#3}{d}{c}{b}{a}{f}{e}% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adjustment of attached positions % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \sixfuseposvi{#5}% \begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/% (800,880)(-\shiftii,-\shifti){sixfusevi}%2002/4/30 by S. Fujita % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%% % % outer skeleton % % %%%%%%%%%%%%%%%%%% % changed FUSE into a list 1993/11/21 by Shinsaku Fujita {\resetbdsw% \@bond@fuse@omit{#5}{#6}% \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 }% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%% % % inner double bond % % %%%%%%%%%%%%%%%%%%%%% \@tfor\member:=#2\do{% \if\member r\relax% \else\if\member l\relax% \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% }% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%% % % 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}% \sixfuseposvi{#5}%%for FuseWaring when nested \iniatom\iniflag}% %end of \sixfusevi macro % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % The macro |\sixfuseposvi| is used in the definition of % the |\sixfusevi| macro to detect a fused edge, where % the coordinates of a reference terminal (|\fuseAx| and |\fuseAy|) % and of the other terminal of the edge (|\fuseBx| and |\fuseBy|) % are given for the successive process of adjustment. % % \begin{macro}{\sixfuseposvi} % \begin{macrocode} \def\sixfuseposvi#1{% \global\@sixfuseposvfalse {\resetbdsw% \@tfor\memBer:=#1\do{% \if\memBer c\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `c'}% \else \gdef\fuseBx{0}\gdef\fuseBy{406}% \gdef\fuseAx{171}\gdef\fuseAy{303}% \global\@sixfuseposvtrue \fi \fi% \if\memBer C\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `C'}% \else \gdef\fuseAx{0}\gdef\fuseAy{406}% \gdef\fuseBx{171}\gdef\fuseBy{303}% \global\@sixfuseposvtrue \fi \fi% \if\memBer b\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `b'}% \else \gdef\fuseBx{171}\gdef\fuseBy{303}% \gdef\fuseAx{171}\gdef\fuseAy{103}% \global\@sixfuseposvtrue \fi \fi% \if\memBer B\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `B'}% \else \gdef\fuseAx{171}\gdef\fuseAy{303}% \gdef\fuseBx{171}\gdef\fuseBy{103}% \global\@sixfuseposvtrue \fi \fi% \if\memBer a\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `a'}% \else \gdef\fuseBx{171}\gdef\fuseBy{103}% \gdef\fuseAx{0}\gdef\fuseAy{0}% \global\@sixfuseposvtrue \fi \fi% \if\memBer A\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `A'}% \else \gdef\fuseAx{171}\gdef\fuseAy{103}% \gdef\fuseBx{0}\gdef\fuseBy{0}% \global\@sixfuseposvtrue \fi \fi% \if\memBer f\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `f'}% \else \gdef\fuseBx{0}\gdef\fuseBy{0}% \gdef\fuseAx{-171}\gdef\fuseAy{103}% \global\@sixfuseposvtrue \fi \fi% \if\memBer F\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `F'}% \else \gdef\fuseAx{0}\gdef\fuseAy{0}% \gdef\fuseBx{-171}\gdef\fuseBy{103}% \global\@sixfuseposvtrue \fi \fi% \if\memBer e\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `e'}% \else \gdef\fuseBx{-171}\gdef\fuseBy{103}% \gdef\fuseAx{-171}\gdef\fuseAy{303}% \global\@sixfuseposvtrue \fi \fi% \if\memBer E\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `E'}% \else \gdef\fuseAx{-171}\gdef\fuseAy{103}% \gdef\fuseBx{-171}\gdef\fuseBy{303}% \global\@sixfuseposvtrue \fi \fi% \if\memBer d\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `d'}% \else \gdef\fuseBx{-171}\gdef\fuseBy{303}% \gdef\fuseAx{0}\gdef\fuseAy{406}% \global\@sixfuseposvtrue \fi \fi% \if\memBer D\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `D'}% \else \gdef\fuseAx{-171}\gdef\fuseAy{303}% \gdef\fuseBx{0}\gdef\fuseBy{406}% \global\@sixfuseposvtrue \fi \fi% }}}% end of the macro \sixfuseposvi % \end{macrocode} % \end{macro} % % The macros |\sixunitvi| has been revived for compativility. % \changes{v3.00}{2002/4/30}{Revived command: \cs{sixunitvi}} % % \begin{macro}{\sixunitvi} % \begin{macrocode} \def\sixunitvi{\@ifnextchar[{\@six@unitvi}{\@six@unitvi[@]}} \def\@six@unitvi[#1]#2#3#4{\sixfusevi[#1]{#2}{#3}{#4}} % \end{macrocode} % \end{macro} % % \subsection{Normal Horizontal Type} % % The command |\sixfuseh| produces a six-membered fusing unit % of horizontal type. The structure produced lacks a given bond % in order to realize ring fusion, which produces a new ring system. % The following numbering is adopted in this macro. % Note that the difference between |\sixfuseh| and |\sixunih|, % the latter of which is designed as an inner command for giving % a building block with no adjustment of attached sites, while % the former has a function of such adjustment. % % \begin{verbatim} % ***************************** % * six-membered fusing unit * % * (horizontal type) * % ***************************** % b % 2 3 % a ----- c % * * % the original point ===> 1 * * 4 % (0,0) * * d % f ----- % 6 5 % e % \end{verbatim} % % The macro |\sixfuseh| has three arguments |ATOMLIST|, |SUBSLIST| % and |FUSE| 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} % \sixfuseh(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[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 `$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 |FUSE| represents one bond to be omitted. % The omitted edge is regarded as a fused position. % % \begin{verbatim} % FUSE: one bond omitted (a, b, c, d, e, or f) % \end{verbatim} % % The argument |OMIT| represents one or more bonds to be omitted. % The omitted edges are regarded as 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. % % \sixfuseh{1==N}{1==Cl;2==F}{e} % \end{verbatim} % % The definition of |\sixfuseh| uses a picture environment and % consists of the same unit processes as shown in |\sixheteroh|: % \begin{enumerate} % \item treatment of atom list, % \item placing outer skeletons, % \item placing inner double bonds, % \item setting hetero atoms, and % \item placing substituents by using |\setsixringh|. % \end{enumerate} % \changes{v2.00}{1998/12/29}{New command: \cs{sixfuseh}} % % \begin{macro}{\sixfuseh} % \begin{macro}{\@six@fuseh} % \begin{macro}{\@six@@fuseh} % \begin{macro}{\@sixfuseh} % \begin{macrocode} \def\sixfuseh{\@ifnextchar({\@six@fuseh(@}{\@six@fuseh(@)}} \def\@six@fuseh(#1){\@ifnextchar[{\@six@@fuseh(#1)[@}% {\@six@@fuseh(#1)[@]}} \def\@six@@fuseh(#1)[#2]#3#4#5{\@ifnextchar[% {\@sixfuseh(#1)[#2]{#3}{#4}{#5}[@}% {\@sixfuseh(#1)[#2]{#3}{#4}{#5}[@]}} \def\@sixfuseh(#1)[#2]#3#4#5[#6]{% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%%%% % % treatment of atom list % % %%%%%%%%%%%%%%%%%%%%%%%%%% \iniatom\iniflag%initialize% \test@vrtx@sixh{#3}% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adjustment of attached positions % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \sixfuseposh{#5}% \begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/% (800,880)(-240,-400){sixfuseh}%2002/4/30 by S. Fujita % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%% % % outer skeleton % % %%%%%%%%%%%%%%%%%% % changed FUSE into a list 1993/11/21 by Shinsaku Fujita {\resetbdsw% \@bond@fuse@omit{#5}{#6}% \set@skel@bondh{#1}{a}{a}% bond between 1 and 2 \@aaa -> \hskbonda etc \set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc \set@skel@bondh{#1}{c}{c}% bond between 3 and 4 \@ccc -> \hskbondc etc \set@skel@bondh{#1}{d}{d}% bond between 4 and 5 \@ddd -> \hskbondd etc \set@skel@bondh{#1}{e}{e}% bond between 5 and 6 \@eee -> \hskbonde etc \set@skel@bondh{#1}{f}{f}% bond between 6 and 1 \@fff -> \hskbondf etc }% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%% % % inner double bond % % %%%%%%%%%%%%%%%%%%%%% \@tfor\member:=#2\do{% \if\member r\relax% \else \if\member l\relax% \else \if\member a\relax% \hbonda% \else \if\member b\relax% \hbondb% \else \if\member c\relax% \hbondc% \else \if\member d\relax% \hbondd% \else \if\member e\relax% \hbonde% \else \if\member f\relax% \hbondf% \else \if\member A%left aromatic circle \Put@oCircle(203,0){240}% %circle % %%%%%%%%%%%%%%%%%%%%%%%%% % % inner bond attachment % % %%%%%%%%%%%%%%%%%%%%%%%%% \else \expandafter\twoCH@@R\member//% \set@fusionadd@sixh \fi\fi\fi\fi\fi\fi\fi\fi\fi}% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%% % % setting hetero atoms % % %%%%%%%%%%%%%%%%%%%%%%%% \set@hetatom@sixh{#3}{0}{0}{7}{0}% %atom 1--6% % %%%%%%%%%%%%%%%%%%%%%%%% % % setting substituents % % %%%%%%%%%%%%%%%%%%%%%%%% \setsixringh{#4}{0}{0}{7}{0}% \end{ShiftPicEnv}% \sixfuseposh{#5}%%for FuseWaring when nested \iniatom\iniflag}% %end of \sixfuseh macro % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % The macro |\sixfuseposh| is used in the definition of % the |\sixfuseh| macro to detect a fused edge, where % the coordinates of a reference terminal (|\fuseAx| and |\fuseAy|) % and of the other terminal of the edge (|\fuseBx| and |\fuseBy|) % are given for the successive process of adjustment. % % \begin{macro}{\sixfuseposh} % \begin{macrocode} \def\sixfuseposh#1{% \global\@sixfuseposvfalse {\resetbdsw% \@tfor\memBer:=#1\do{% \if\memBer a\relax \if@sixfuseposv \XyMTeXWarning{Double fused bond at bond `a'}% \else \gdef\fuseAx{0}\gdef\fuseAy{0}% \gdef\fuseBx{103}\gdef\fuseBy{171}% \global\@sixfuseposvtrue \fi \fi% \if\memBer A\relax \if@sixfuseposv \XyMTeXWarning{Double fused bond at bond `A'}% \else \gdef\fuseBx{0}\gdef\fuseBy{0}% \gdef\fuseAx{103}\gdef\fuseAy{171}% \global\@sixfuseposvtrue \fi \fi% \if\memBer b\relax \if@sixfuseposv \XyMTeXWarning{Double fused bond at bond `b'}% \else \gdef\fuseAx{103}\gdef\fuseAy{171}% \gdef\fuseBx{303}\gdef\fuseBy{171}% \global\@sixfuseposvtrue \fi \fi% \if\memBer B\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `B'}% \else \gdef\fuseBx{103}\gdef\fuseBy{171}% \gdef\fuseAx{303}\gdef\fuseAy{171}% \global\@sixfuseposvtrue \fi \fi% \if\memBer c\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `c'}% \else \gdef\fuseAx{303}\gdef\fuseAy{171}% \gdef\fuseBx{406}\gdef\fuseBy{0}% \global\@sixfuseposvtrue \fi \fi% \if\memBer C\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `C'}% \else \gdef\fuseBx{303}\gdef\fuseBy{171}% \gdef\fuseAx{406}\gdef\fuseAy{0}% \global\@sixfuseposvtrue \fi \fi% \if\memBer d\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `d'}% \else \gdef\fuseAx{406}\gdef\fuseAy{0}% \gdef\fuseBx{303}\gdef\fuseBy{-171}% \global\@sixfuseposvtrue \fi \fi% \if\memBer D\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `D'}% \else \gdef\fuseBx{406}\gdef\fuseBy{0}% \gdef\fuseAx{303}\gdef\fuseAy{-171}% \global\@sixfuseposvtrue \fi \fi% \if\memBer e\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `e'}% \else \gdef\fuseAx{303}\gdef\fuseAy{-171}% \gdef\fuseBx{103}\gdef\fuseBy{-171}% \global\@sixfuseposvtrue \fi \fi% \if\memBer E\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `E'}% \else \gdef\fuseBx{303}\gdef\fuseBy{-171}% \gdef\fuseAx{103}\gdef\fuseAy{-171}% \global\@sixfuseposvtrue \fi \fi% \if\memBer f\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `f'}% \else \gdef\fuseAx{103}\gdef\fuseAy{-171}% \gdef\fuseBx{0}\gdef\fuseBy{0}% \global\@sixfuseposvtrue \fi \fi% \if\memBer F\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `F'}% \else \gdef\fuseBx{103}\gdef\fuseBy{-171}% \gdef\fuseAx{0}\gdef\fuseAy{0}% \global\@sixfuseposvtrue \fi \fi}}}% end of the macro \sixfuseposh % \end{macrocode} % \end{macro} % % The macros |\sixunith| has been revived for compativility. % \changes{v3.00}{2002/4/30}{Revived command: \cs{sixunith}} % % \begin{macro}{\sixunith} % \begin{macrocode} \def\sixunith{\@ifnextchar[{\@six@unith}{\@six@unith[@]}} \def\@six@unith[#1]#2#3#4{\sixfuseh[#1]{#2}{#3}{#4}} % \end{macrocode} % \end{macro} % % \subsection{Inverse Horizontal Type} % % The command |\sixfusehi| produces a six-membered fusing unit % of inverse horizontal type. The structure produced lacks a given bond % in order to realize ring fusion, which produces a new ring system. % The following numbering is adopted in this macro. % % \begin{verbatim} % ***************************** % * six-membered fusing unit * % * (inverse horizontal type) * % ***************************** % b % 3 2 % c ----- a % * * % 4 * * 1 <== the original point (0,0) % * * f % d ----- % 5 6 % e % \end{verbatim} % % The macro |\sixfusehi| has three arguments |ATOMLIST|, |SUBSLIST| % and |FUSE| 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} % \sixfusehi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[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 `$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 |FUSE| represents one bond to be omitted. % The omitted edge is regarded as a fused position. % % \begin{verbatim} % FUSE: one bond omitted (a, b, c, d, e, or f) % \end{verbatim} % % The argument |OMIT| represents one or more bonds to be omitted. % The omitted edges are regarded as 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. % % \sixfusehi{1==N}{1==Cl;2==F}{e} % \end{verbatim} % % \changes{v2.00}{1998/12/29}{New command: \cs{sixfusehi}} % % \begin{macro}{\sixfusehi} % \begin{macro}{\@six@fusehi} % \begin{macro}{\@six@@fusehi} % \begin{macro}{\@sixfusehi} % \begin{macrocode} \def\sixfusehi{\@ifnextchar({\@six@fusehi(@}{\@six@fusehi(@)}} \def\@six@fusehi(#1){\@ifnextchar[{\@six@@fusehi(#1)[@}% {\@six@@fusehi(#1)[@]}} \def\@six@@fusehi(#1)[#2]#3#4#5{\@ifnextchar[% {\@sixfusehi(#1)[#2]{#3}{#4}{#5}[@}% {\@sixfusehi(#1)[#2]{#3}{#4}{#5}[@]}} \def\@sixfusehi(#1)[#2]#3#4#5[#6]{% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%%%% % % treatment of atom list % % %%%%%%%%%%%%%%%%%%%%%%%%%% \iniatom\iniflag%initialize% \test@vrtx@sixhi{#3}% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adjustment of attached positions % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \sixfuseposhi{#5}% \begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/% (800,880)(-240,-400){sixfusehi}%2002/4/30 by S. Fujita % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%% % % outer skeleton % % %%%%%%%%%%%%%%%%%% % changed FUSE into a list 1993/11/21 by Shinsaku Fujita {\resetbdsw% \@bond@fuse@omit{#5}{#6}% \set@skel@bondh{#1}{a}{c}% bond between 1 and 2 \@aaa -> \hskbondc etc \set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc \set@skel@bondh{#1}{c}{a}% bond between 3 and 4 \@ccc -> \hskbonda etc \set@skel@bondh{#1}{d}{f}% bond between 4 and 5 \@ddd -> \hskbondf etc \set@skel@bondh{#1}{e}{e}% bond between 5 and 6 \@eee -> \hskbonde etc \set@skel@bondh{#1}{f}{d}% bond between 6 and 1 \@fff -> \hskbondd etc }% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%% % % inner double bond % % %%%%%%%%%%%%%%%%%%%%% \@tfor\member:=#2\do{% \if\member r\relax% \else \if\member l\relax% \else \if\member a\relax% \hbondc% \else \if\member b\relax% \hbondb% \else \if\member c\relax% \hbonda% \else \if\member d\relax% \hbondf% \else \if\member e\relax% \hbonde% \else \if\member f\relax% \hbondd% \else \if\member A%left aromatic circle \Put@oCircle(203,0){240}% %circle % %%%%%%%%%%%%%%%%%%%%%%%%% % % inner bond attachment % % %%%%%%%%%%%%%%%%%%%%%%%%% \else \expandafter\twoCH@@R\member//% \set@fusionadd@sixhi \fi\fi\fi\fi\fi\fi\fi\fi\fi}% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%% % % setting hetero atoms % % %%%%%%%%%%%%%%%%%%%%%%%% \set@hetatom@sixh{#3}{5}{0}{5}{-1}% %subst 1--4 \set@hetatom@sixh{#3}{11}{4}{7}{-1}% %subst 5 and 6 % %%%%%%%%%%%%%%%%%%%%%%%% % % setting substituents % % %%%%%%%%%%%%%%%%%%%%%%%% \setsixringh{#4}{5}{0}{5}{-1}% %subst 1--4 \setsixringh{#4}{11}{4}{7}{-1}% %subst 5 and 6 \end{ShiftPicEnv}% \sixfuseposhi{#5}%%for FuseWaring when nested \iniatom\iniflag}% %end of \sixfusehi macro % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % The macro |\sixfuseposhi| is used in the definition of % the |\sixfusehi| macro to detect a fused edge, where % the coordinates of a reference terminal (|\fuseAx| and |\fuseAy|) % and of the other terminal of the edge (|\fuseBx| and |\fuseBy|) % are given for the successive process of adjustment. % % \begin{macro}{\sixfuseposhi} % \begin{macrocode} \def\sixfuseposhi#1{% \global\@sixfuseposvfalse {\resetbdsw% \@tfor\memBer:=#1\do{% \if\memBer C\relax \if@sixfuseposv \XyMTeXWarning{Double fused bond at bond `C'}% \else \gdef\fuseAx{0}\gdef\fuseAy{0}% \gdef\fuseBx{103}\gdef\fuseBy{171}% \global\@sixfuseposvtrue \fi \fi% \if\memBer c\relax \if@sixfuseposv \XyMTeXWarning{Double fused bond at bond `c'}% \else \gdef\fuseBx{0}\gdef\fuseBy{0}% \gdef\fuseAx{103}\gdef\fuseAy{171}% \global\@sixfuseposvtrue \fi \fi% \if\memBer B\relax \if@sixfuseposv \XyMTeXWarning{Double fused bond at bond `B'}% \else \gdef\fuseAx{103}\gdef\fuseAy{171}% \gdef\fuseBx{303}\gdef\fuseBy{171}% \global\@sixfuseposvtrue \fi \fi% \if\memBer b\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `b'}% \else \gdef\fuseBx{103}\gdef\fuseBy{171}% \gdef\fuseAx{303}\gdef\fuseAy{171}% \global\@sixfuseposvtrue \fi \fi% \if\memBer A\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `A'}% \else \gdef\fuseAx{303}\gdef\fuseAy{171}% \gdef\fuseBx{406}\gdef\fuseBy{0}% \global\@sixfuseposvtrue \fi \fi% \if\memBer a\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `a'}% \else \gdef\fuseBx{303}\gdef\fuseBy{171}% \gdef\fuseAx{406}\gdef\fuseAy{0}% \global\@sixfuseposvtrue \fi \fi% \if\memBer F\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `F'}% \else \gdef\fuseAx{406}\gdef\fuseAy{0}% \gdef\fuseBx{303}\gdef\fuseBy{-171}% \global\@sixfuseposvtrue \fi \fi% \if\memBer f\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `f'}% \else \gdef\fuseBx{406}\gdef\fuseBy{0}% \gdef\fuseAx{303}\gdef\fuseAy{-171}% \global\@sixfuseposvtrue \fi \fi% \if\memBer E\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `E'}% \else \gdef\fuseAx{303}\gdef\fuseAy{-171}% \gdef\fuseBx{103}\gdef\fuseBy{-171}% \global\@sixfuseposvtrue \fi \fi% \if\memBer e\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `e'}% \else \gdef\fuseBx{303}\gdef\fuseBy{-171}% \gdef\fuseAx{103}\gdef\fuseAy{-171}% \global\@sixfuseposvtrue \fi \fi% \if\memBer D\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `D'}% \else \gdef\fuseAx{103}\gdef\fuseAy{-171}% \gdef\fuseBx{0}\gdef\fuseBy{0}% \global\@sixfuseposvtrue \fi \fi% \if\memBer d\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `d'}% \else \gdef\fuseBx{103}\gdef\fuseBy{-171}% \gdef\fuseAx{0}\gdef\fuseAy{0}% \global\@sixfuseposvtrue \fi \fi}}}% end of the macro \sixfuseposhi % \end{macrocode} % \end{macro} % % % The macros |\sixunithi| has been revived for compativility. % \changes{v3.00}{2002/4/30}{Revived command: \cs{sixunithi}} % % \begin{macro}{\sixunithi} % \begin{macrocode} \def\sixunithi{\@ifnextchar[{\@six@unithi}{\@six@unithi[@]}} \def\@six@unithi[#1]#2#3#4{\sixfusehi[#1]{#2}{#3}{#4}} % \end{macrocode} % \end{macro} % % \section{Five-membered fused ring unit} % \subsection{Vertical type} % % The macro |\fivefusev| 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 fused* % * (vertical type) * % ********************** % % 4 _______ 3 % | | % | | % 5 * * 2 % * % 1 <===== the original point % \end{verbatim} % % The macro |\fivefusev| has three arguments |ATOMLIST|, |SUBSLIST| % and |FUSE| 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} % \fivefusev(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[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 `$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 |FUSE| represents one bond to be omitted for fusion. % The omitted edge is regarded as a fused position. % % \begin{verbatim} % FUSE: one bond omitted (a, b, c, d, or e) % \end{verbatim} % % The argument |OMIT| represents one or more bonds to be omitted. % The omitted edges are regarded as 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. % % \fivefusev{1==N}{1==H;2==F}{a} % \end{verbatim} % % \begin{macro}{\fivefusev} % \begin{macro}{\@five@fusev} % \begin{macro}{\@five@@fusev} % \begin{macro}{\@fivefusev} % \begin{macrocode} \def\fivefusev{\@ifnextchar({\@five@fusev(@}{\@five@fusev(@)}} \def\@five@fusev(#1){\@ifnextchar[{\@five@@fusev(#1)[@}% {\@five@@fusev(#1)[@]}} \def\@five@@fusev(#1)[#2]#3#4#5{\@ifnextchar[% {\@fivefusev(#1)[#2]{#3}{#4}{#5}[@}% {\@fivefusev(#1)[#2]{#3}{#4}{#5}[@]}} \def\@fivefusev(#1)[#2]#3#4#5[#6]{% \iniatom\iniflag%initialize % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%%%% % % treatment of atom list % % %%%%%%%%%%%%%%%%%%%%%%%%%% \test@vertix@sixv{#3}{d}{c}{b}{f}{e}{@}% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adjustment of attached positions % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \fivefuseposv{#5}% \begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/% (800,880)(-\shiftii,-\shifti){fivefusev}%2002/4/30 by S. Fujita % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%% % %% outer skeleton % % %%%%%%%%%%%%%%%%%%% % changed FUSE to a list 1993/11/21 by Shinsaku Fujita {\resetbdsw% \@bond@fuse@omit{#5}{#6}% \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 % %%%%%%%%%%%%%%%%%%%%%%%%% % % inner bond attachment % % %%%%%%%%%%%%%%%%%%%%%%%%% \expandafter\twoCH@@R\member//% \set@fusionadd@fivev \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}% {\let\XyMTeXWarning\@gobble \fivefuseposv{#5}}%%for FuseWaring when nested \iniatom\iniflag}%end of \fivefusev macro % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % The macro |\fivefuseposv| is used in the definition of % the |\fivefusev| macro to detect a fused edge, where % the coordinates of a reference terminal (|\fuseAx| and |\fuseAy|) % and of the other terminal of the edge (|\fuseBx| and |\fuseBy|) % are given for the successive process of adjustment. % % \begin{macro}{\fivefuseposv} % \begin{macrocode} \def\fivefuseposv#1{% \global\@sixfuseposvfalse {\resetbdsw% \@tfor\memBer:=#1\do{% \if\memBer c\relax \XyMTeXWarning{Not-used fusion at bond `c'}% \fi \if\memBer C\relax \XyMTeXWarning{Not-used fusion at bond `C'}% \fi \if\memBer b\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `b'}% \else \gdef\fuseBx{171}\gdef\fuseBy{303}% \gdef\fuseAx{171}\gdef\fuseAy{103}% \global\@sixfuseposvtrue \fi \fi% \if\memBer B\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `B'}% \else \gdef\fuseAx{171}\gdef\fuseAy{303}% \gdef\fuseBx{171}\gdef\fuseBy{103}% \global\@sixfuseposvtrue \fi \fi% \if\memBer a\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `a'}% \else \gdef\fuseBx{171}\gdef\fuseBy{103}% \gdef\fuseAx{0}\gdef\fuseAy{0}% \global\@sixfuseposvtrue \fi \fi% \if\memBer A\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `A'}% \else \gdef\fuseAx{171}\gdef\fuseAy{103}% \gdef\fuseBx{0}\gdef\fuseBy{0}% \global\@sixfuseposvtrue \fi \fi% \if\memBer e\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `f'}% \else \gdef\fuseBx{0}\gdef\fuseBy{0}% \gdef\fuseAx{-171}\gdef\fuseAy{103}% \global\@sixfuseposvtrue \fi \fi% \if\memBer E\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `F'}% \else \gdef\fuseAx{0}\gdef\fuseAy{0}% \gdef\fuseBx{-171}\gdef\fuseBy{103}% \global\@sixfuseposvtrue \fi \fi% \if\memBer d\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `e'}% \else \gdef\fuseBx{-171}\gdef\fuseBy{103}% \gdef\fuseAx{-171}\gdef\fuseAy{303}% \global\@sixfuseposvtrue \fi \fi% \if\memBer D\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `E'}% \else \gdef\fuseAx{-171}\gdef\fuseAy{103}% \gdef\fuseBx{-171}\gdef\fuseBy{303}% \global\@sixfuseposvtrue \fi \fi% }}}% end of the macro \fivefuseposv % \end{macrocode} % \end{macro} % % The macros |\fiveunitv| has been revived for compativility. % \changes{v3.00}{2002/4/30}{Revived command: \cs{fiveunitv}} % % \begin{macro}{\fiveunitv} % \begin{macrocode} \def\fiveunitv{\@ifnextchar[{\@five@unitv}{\@five@unitv[@]}} \def\@five@unitv[#1]#2#3#4{\fivefusev[#1]{#2}{#3}{#4}} % \end{macrocode} % \end{macro} % % \subsection{Inverse vertical type} % % The macro |\fivefusevi| 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 fusing unit * % * (vertical type, inverse type) * % ************************************ % % 1 % * % 6 * * 2 % | | % |_____| % 4 3 % * % (0,0) <===== the original point % \end{verbatim} % % The macro |\fivefusevi| has three arguments |ATOMLIST|, |SUBSLIST| % and |FUSE| 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} % \fivefusevi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[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 `$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 |FUSE| represents one bond to be omitted. % The omitted edge is regarded as a fused position. % % \begin{verbatim} % FUSE: one bond omitted (a, b, c, d, or e) % \end{verbatim} % % The argument |OMIT| represents one or more bonds to be omitted. % The omitted edges are regarded as 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. % % \fivefusevi{1==N}{1==H;2==F}{a} % \end{verbatim} % % \begin{macro}{\fivefusevi} % \begin{macro}{\@five@fusevi} % \begin{macro}{\@five@@fusevi} % \begin{macro}{\@fivefusevi} % \begin{macrocode} \def\fivefusevi{\@ifnextchar({\@five@fusevi(@}{\@five@fusevi(@)}} \def\@five@fusevi(#1){\@ifnextchar[{\@five@@fusevi(#1)[@}% {\@five@@fusevi(#1)[@]}} \def\@five@@fusevi(#1)[#2]#3#4#5{\@ifnextchar[% {\@fivefusevi(#1)[#2]{#3}{#4}{#5}[@}% {\@fivefusevi(#1)[#2]{#3}{#4}{#5}[@]}} \def\@fivefusevi(#1)[#2]#3#4#5[#6]{% \iniatom\iniflag%initialize % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%%%% % % treatment of atom list % % %%%%%%%%%%%%%%%%%%%%%%%%%% \test@vertix@sixv{#3}{a}{b}{c}{e}{f}{@}% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adjustment of attached positions % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \fivefuseposvi{#5}% \begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/% (800,880)(-\shiftii,-\shifti){fivefusevi}%2002/4/30 by S. Fujita % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%% % % outer skeleton % % %%%%%%%%%%%%%%%%%% % changed FUSE to a list 1993/11/21 by Shinsaku Fujita {\resetbdsw% \@bond@fuse@omit{#5}{#6}% \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 % %%%%%%%%%%%%%%%%%%%%%%%%% % % inner bond attachment % % %%%%%%%%%%%%%%%%%%%%%%%%% \expandafter\twoCH@@R\member//% \set@fusionadd@fivevi \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}% {\let\XyMTeXWarning\@gobble \fivefuseposvi{#5}}%%for FuseWaring when nested \iniatom\iniflag}% %end of \fivefusevi macro % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % The macro |\fivefuseposvi| is used in the definition of % the |\fivefusev| macro to detect a fused edge, where % the coordinates of a reference terminal (|\fuseAx| and |\fuseAy|) % and of the other terminal of the edge (|\fuseBx| and |\fuseBy|) % are given for the successive process of adjustment. % % \begin{macro}{\fivefuseposvi} % \begin{macrocode} \def\fivefuseposvi#1{% \global\@sixfuseposvfalse {\resetbdsw% \@tfor\memBer:=#1\do{% \if\memBer a\relax \if@sixfuseposv \XyMTeXWarning{Double fused bond at bond `a'}% \else \gdef\fuseAx{0}\gdef\fuseAy{406}% \gdef\fuseBx{171}\gdef\fuseBy{303}% \global\@sixfuseposvtrue \fi \fi% \if\memBer A\relax \if@sixfuseposv \XyMTeXWarning{Double fused bond at bond `A'}% \else \gdef\fuseBx{0}\gdef\fuseBy{406}% \gdef\fuseAx{171}\gdef\fuseAy{303}% \global\@sixfuseposvtrue \fi \fi% \if\memBer b\relax \if@sixfuseposv \XyMTeXWarning{Double fused bond at bond `b'}% \else \gdef\fuseAx{171}\gdef\fuseAy{303}% \gdef\fuseBx{171}\gdef\fuseBy{103}% \global\@sixfuseposvtrue \fi \fi% \if\memBer B\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `B'}% \else \gdef\fuseBx{171}\gdef\fuseBy{303}% \gdef\fuseAx{171}\gdef\fuseAy{103}% \global\@sixfuseposvtrue \fi \fi% \if\memBer c\relax \XyMTeXWarning{Not-used fusion at bond `c'}% \fi \if\memBer C\relax \XyMTeXWarning{Not-used fusion at bond `C'}% \fi \if\memBer d\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `d'}% \else \gdef\fuseAx{-171}\gdef\fuseAy{103}% \gdef\fuseBx{-171}\gdef\fuseBy{303}% \global\@sixfuseposvtrue \fi \fi% \if\memBer D\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `D'}% \else \gdef\fuseBx{-171}\gdef\fuseBy{103}% \gdef\fuseAx{-171}\gdef\fuseAy{303}% \global\@sixfuseposvtrue \fi \fi% \if\memBer e\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `e'}% \else \gdef\fuseAx{-171}\gdef\fuseAy{303}% \gdef\fuseBx{0}\gdef\fuseBy{406}% \global\@sixfuseposvtrue \fi \fi% \if\memBer E\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `e'}% \else \gdef\fuseBx{-171}\gdef\fuseBy{303}% \gdef\fuseAx{0}\gdef\fuseAy{406}% \global\@sixfuseposvtrue \fi \fi}}}% end of the macro \fivefuseposvi % \end{macrocode} % \end{macro} % % The macros |\fiveunitvi| has been revived for compativility. % \changes{v3.00}{2002/4/30}{Revived command: \cs{fiveunitvi}} % % \begin{macro}{\fiveunitvi} % \begin{macrocode} \def\fiveunitvi{\@ifnextchar[{\@five@unitvi}{\@five@unitvi[@]}} \def\@five@unitvi[#1]#2#3#4{\fivefusevi[#1]{#2}{#3}{#4}} % \end{macrocode} % \end{macro} % % \subsection{Horizonatl type} % % The macro |\fivefuseh| is a five-membered fragment that can be % fused to another % ring structure to produce a new ring system. The following % numbering is adopted in this macro. % % \begin{verbatim} % ********************** % * five-membered unit * % * (horizontal type) * % ********************** % % 3 _____ 2 % | * % | * 1 <===== the original point % | * % 4 ----- 5 % \end{verbatim} % % The macro |\fivefuseh| has three arguments |ATOMLIST|, |SUBSLIST| % and |FUSE| 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} % \fivefuseh(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[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 `$n+$' ($n=1$ to $5$) represents a plus charge on a hetero atom % at the $n$-position. % % \begin{verbatim} % BONDLIST: list of inner double bonds % % a : 1,2-double bond % b : 2,3-double bond % c : 4,3-double bond % d : 4,5-double bond % e : 5,1-double bond % A : aromatic circle % {n+} : plus at the n-nitrogen atom (n = 1 to 5) % {0+} : plus (or others) at the center % \end{verbatim} % % The |ATOMLIST| argument contains one or more heteroatom descriptors % which are separated from each other by a semicolon. Each heteroatom % descriptor consists of a locant number and a heteroatom, % where these are separated with a double equality symbol. % % \begin{verbatim} % ATOMLIST: list of heteroatoms (max 5 atoms) % % for n = 1 to 5 % % n : Hetero atom, e.g. N, O, etc. at n-position % e.g. 1==N for N at 1-position % \end{verbatim} % % The |SUBSLIST| argument contains one or more substitution descriptors % which are separated from each other by a semicolon. Each substitution % descriptor has a locant number with a bond modifier and a substituent, % where these are separated with a double equality symbol. % % \begin{verbatim} % SUBSLIST: list of substituents % % for n = 1 to 5 % % nD : exocyclic double bond at n-atom % n or nS : exocyclic single bond at n-atom % nA : alpha single bond at n-atom % nB : beta single bond at n-atom % nSA : alpha single bond at n-atom (boldface) % nSB : beta single bond at n-atom (dotted line) % nSa : alpha (not specified) single bond at n-atom % nSb : beta (not specified) single bond at n-atom % % nSd : alpha single bond at n-atom (dotted line) % with an alternative direction to nSA % nSu : beta single bond at n-atom (boldface) % with an alternative direction to nSB % nFA : alpha single bond at n-atom (dotted line) % for ring fusion % nFB : beta single bond at n-atom (boldface) % for ring fusion % nGA : alpha single bond at n-atom (dotted line) % for the other ring fusion % nGB : beta single bond at n-atom (boldface) % for the other ring fusion % \end{verbatim} % % The argument |FUSE| represents one bond to be omitted. % The omitted edge is regarded as a fused position. % % \begin{verbatim} % FUSE: one bond omitted (a, b, c, d, or e) % \end{verbatim} % % The argument |OMIT| represents one or more bonds to be omitted. % The omitted edges are regarded as 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. % % \fivefuseh{1==N}{1==H;2==F}{a} % \end{verbatim} % % \begin{macro}{\fivefuseh} % \begin{macro}{\@five@fuseh} % \begin{macro}{\@five@@fuseh} % \begin{macro}{\@fivefuseh} % \begin{macrocode} \def\fivefuseh{\@ifnextchar({\@five@fuseh(@}{\@five@fuseh(@)}} \def\@five@fuseh(#1){\@ifnextchar[{\@five@@fuseh(#1)[@}% {\@five@@fuseh(#1)[@]}} \def\@five@@fuseh(#1)[#2]#3#4#5{\@ifnextchar[% {\@fivefuseh(#1)[#2]{#3}{#4}{#5}[@}% {\@fivefuseh(#1)[#2]{#3}{#4}{#5}[@]}} \def\@fivefuseh(#1)[#2]#3#4#5[#6]{% \iniatom\iniflag%initialize % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%%%% % % treatment of atom list % % %%%%%%%%%%%%%%%%%%%%%%%%%% \test@vertix@sixv{#3}{d}{c}{b}{f}{e}{@}% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adjustment of attached positions % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \fivefuseposh{#5}% \begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/% (800,880)(-240,-400){fivefuseh}%2002/4/30 by S. Fujita % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%% % % outer skeleton % % %%%%%%%%%%%%%%%%%% % changed FUSE to a list 1993/11/21 by Shinsaku Fujita {\resetbdsw% \@bond@fuse@omit{#5}{#6}% \set@skel@bondh{#1}{a}{c}% bond between 1 and 2 \@aaa -> \skbondc etc \set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc \set@skel@longbond{#1}{c}{hskbondvert}% % bond between 3 and 4 \@ccc -> \hskbondvert etc \set@skel@bondh{#1}{d}{e}% bond between 4 and 5 \@ddd -> \skbonde etc \set@skel@bondh{#1}{e}{d}% bond between 5 and 6 \@eee -> \skbondd etc }% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%% % % inner double bond % % %%%%%%%%%%%%%%%%%%%%% \@tfor\member:=#2\do{% \if\member r% \else \if\member a\relax% \hbondc% \else \if\member b\relax% \hbondb% \else \if\member c\relax% \hbondvert% \else \if\member d\relax% \hbonde% \else \if\member e\relax% \hbondd% \else \if\member A%left aromatic circle \Put@oCircle(233,0){180}% %circle \else % %%%%%%%%%%%%%%%%%%%%%%%%% % % inner bond attachment % % %%%%%%%%%%%%%%%%%%%%%%%%% \expandafter\twoCH@@R\member//% \set@fusionadd@fiveh \fi\fi\fi\fi\fi\fi\fi}% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%% % % setting heteroatoms % % %%%%%%%%%%%%%%%%%%%%%%% \set@hetatom@sixh{#3}{5}{1}{5}{-1}% % for 1 to 3 \set@hetatom@sixh{#3}{10}{4}{7}{-1}% % for 4 to 5 % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%% % % setting substituents % % %%%%%%%%%%%%%%%%%%%%%%%% \setsixringh{#4}{5}{1}{5}{-1}% % for 1 to 3 \setsixringh{#4}{10}{4}{7}{-1}% % for 4 to 5 \end{ShiftPicEnv}% {\let\XyMTeXWarning\@gobble \fivefuseposh{#5}}%for FuseWaring when nested% \iniatom\iniflag}% %end of \fivefuseh macro % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % The macro |\fivefuseposh| is used in the definition of % the |\sixfusehi| macro to detect a fused edge, where % the coordinates of a reference terminal (|\fuseAx| and |\fuseAy|) % and of the other terminal of the edge (|\fuseBx| and |\fuseBy|) % are given for the successive process of adjustment. % % \begin{macro}{\fivefuseposh} % \begin{macrocode} \def\fivefuseposh#1{% \global\@sixfuseposvfalse {\resetbdsw% \@tfor\memBer:=#1\do{% \if\memBer c\relax \XyMTeXWarning{Not-used fusion at bond `c'}% \fi \if\memBer C\relax \XyMTeXWarning{Not-used fusion at bond `C'}% \fi \if\memBer B\relax \if@sixfuseposv \XyMTeXWarning{Double fused bond at bond `B'}% \else \gdef\fuseAx{103}\gdef\fuseAy{171}% \gdef\fuseBx{303}\gdef\fuseBy{171}% \global\@sixfuseposvtrue \fi \fi% \if\memBer b\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `b'}% \else \gdef\fuseBx{103}\gdef\fuseBy{171}% \gdef\fuseAx{303}\gdef\fuseAy{171}% \global\@sixfuseposvtrue \fi \fi% \if\memBer A\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `A'}% \else \gdef\fuseAx{303}\gdef\fuseAy{171}% \gdef\fuseBx{406}\gdef\fuseBy{0}% \global\@sixfuseposvtrue \fi \fi% \if\memBer a\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `a'}% \else \gdef\fuseBx{303}\gdef\fuseBy{171}% \gdef\fuseAx{406}\gdef\fuseAy{0}% \global\@sixfuseposvtrue \fi \fi% \if\memBer E\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `E'}% \else \gdef\fuseAx{406}\gdef\fuseAy{0}% \gdef\fuseBx{303}\gdef\fuseBy{-171}% \global\@sixfuseposvtrue \fi \fi% \if\memBer e\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `e'}% \else \gdef\fuseBx{406}\gdef\fuseBy{0}% \gdef\fuseAx{303}\gdef\fuseAy{-171}% \global\@sixfuseposvtrue \fi \fi% \if\memBer D\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `D'}% \else \gdef\fuseAx{303}\gdef\fuseAy{-171}% \gdef\fuseBx{103}\gdef\fuseBy{-171}% \global\@sixfuseposvtrue \fi \fi% \if\memBer d\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `d'}% \else \gdef\fuseBx{303}\gdef\fuseBy{-171}% \gdef\fuseAx{103}\gdef\fuseAy{-171}% \global\@sixfuseposvtrue \fi \fi% }}}% end of the macro \fivefuseposh % \end{macrocode} % \end{macro} % % The macros |\fiveunith| has been revived for compativility. % \changes{v3.00}{2002/4/30}{Revived command: \cs{fiveunith}} % % \begin{macro}{\fiveunith} % \begin{macrocode} \def\fiveunith{\@ifnextchar[{\@five@unith}{\@five@unith[@]}} \def\@five@unith[#1]#2#3#4{\fivefuseh[#1]{#2}{#3}{#4}} % \end{macrocode} % \end{macro} % % \subsection{Inverse horizontal type} % % The macro |\fivefusehi| 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 fusing unit * % * (horizontal type, inverse type) * % ************************************ % % 2 ----- 3 % * | % the original point 1 * | % * | % _____| % 5 4 % \end{verbatim} % % The macro |\fivefusehi| has three arguments |ATOMLIST|, |SUBSLIST| % and |FUSE| % 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} % \fivefusehi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[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 `$n+$' ($n=1$ to $5$) represents a plus charge on a hetero atom % at the $n$-position. % % \begin{verbatim} % BONDLIST: list of inner double bonds % % a : 1,2-double bond % b : 2,3-double bond % c : 4,3-double bond % d : 4,5-double bond % e : 5,1-double bond % A : aromatic circle % {n+} : plus at the n-nitrogen atom (n = 1 to 5) % {0+} : plus (or others) at the center % \end{verbatim} % % The |ATOMLIST| argument contains one or more heteroatom descriptors % which are separated from each other by a semicolon. Each heteroatom % descriptor consists of a locant number and a heteroatom, % where these are separated with a double equality symbol. % % \begin{verbatim} % ATOMLIST: list of heteroatoms (max 5 atoms) % % for n = 1 to 5 % % n : Hetero atom, e.g. N, O, etc. at n-position % e.g. 1==N for N at 1-position % \end{verbatim} % % The |SUBSLIST| argument contains one or more substitution descriptors % which are separated from each other by a semicolon. Each substitution % descriptor has a locant number with a bond modifier and a substituent, % where these are separated with a double equality symbol. % % \begin{verbatim} % SUBSLIST: list of substituents % % for n = 1 to 5 % % nD : exocyclic double bond at n-atom % n or nS : exocyclic single bond at n-atom % nA : alpha single bond at n-atom % nB : beta single bond at n-atom % nSA : alpha single bond at n-atom (boldface) % nSB : beta single bond at n-atom (dotted line) % nSa : alpha (not specified) single bond at n-atom % nSb : beta (not specified) single bond at n-atom % % nSd : alpha single bond at n-atom (dotted line) % with an alternative direction to nSA % nSu : beta single bond at n-atom (boldface) % with an alternative direction to nSB % nFA : alpha single bond at n-atom (dotted line) % for ring fusion % nFB : beta single bond at n-atom (boldface) % for ring fusion % nGA : alpha single bond at n-atom (dotted line) % for the other ring fusion % nGB : beta single bond at n-atom (boldface) % for the other ring fusion % \end{verbatim} % % The argument |FUSE| represents one bond to be omitted. % The omitted edge is regarded as a fused position. % % \begin{verbatim} % FUSE: one bond omitted (a, b, c, d, or e) % \end{verbatim} % % The argument |OMIT| represents one or more bonds to be omitted. % The omitted edges are regarded as 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. % % \fivefusehi{1==N}{1==H;2==F}{a} % \end{verbatim} % % \begin{macro}{\fivefusehi} % \begin{macro}{\@five@fusehi} % \begin{macro}{\@five@@fusehi} % \begin{macro}{\@fivefusehi} % \begin{macrocode} \def\fivefusehi{\@ifnextchar({\@five@fusehi(@}{\@five@fusehi(@)}} \def\@five@fusehi(#1){\@ifnextchar[{\@five@@fusehi(#1)[@}% {\@five@@fusehi(#1)[@]}} \def\@five@@fusehi(#1)[#2]#3#4#5{\@ifnextchar[% {\@fivefusehi(#1)[#2]{#3}{#4}{#5}[@}% {\@fivefusehi(#1)[#2]{#3}{#4}{#5}[@]}} \def\@fivefusehi(#1)[#2]#3#4#5[#6]{% \iniatom\iniflag%initialize % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%%%% % % treatment of atom list % % %%%%%%%%%%%%%%%%%%%%%%%%%% \test@vertix@sixv{#3}{a}{b}{c}{e}{f}{@}% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adjustment of attached positions % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \fivefuseposhi{#5}% \begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/% (800,880)(-240,-400){fivefusehi}%2002/4/30 by S. Fujita % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%% % % outer skeleton % % %%%%%%%%%%%%%%%%%% % changed FUSE to a list 1993/11/21 by Shinsaku Fujita {\resetbdsw% \@bond@fuse@omit{#5}{#6}% \set@skel@bondh{#1}{a}{a}% bond between 1 and 2 \@aaa -> \hskbonda etc \set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc \set@skel@longbond{#1}{c}{hskbondverti}% % bond between 3 and 4 \@ccc -> \hskbondverti etc \set@skel@bondh{#1}{d}{e}% bond between 4 and 5 \@ddd -> \hskbonde etc \set@skel@bondh{#1}{e}{f}% bond between 5 and 6 \@eee -> \hskbondf etc }% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%% % % inner double bond % % %%%%%%%%%%%%%%%%%%%%% \@tfor\member:=#2\do{% \if\member r% \else \if\member a\relax% \hbonda% \else \if\member b\relax% \hbondb% \else \if\member c\relax% \hbondverti% \else \if\member d\relax% \hbonde% \else \if\member e\relax% \hbondf% \else \if\member A%left aromatic circle \Put@oCircle(173,0){180}% %circle \else % %%%%%%%%%%%%%%%%%%%%%%%%% % % inner bond attachment % % %%%%%%%%%%%%%%%%%%%%%%%%% \expandafter\twoCH@@R\member//% \set@fusionadd@fivehi \fi\fi\fi\fi\fi\fi\fi}% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%% % % setting heteroatoms % % %%%%%%%%%%%%%%%%%%%%%%% \set@hetatom@sixh{#3}{0}{0}{4}{0}% % for 1 to 3 \set@hetatom@sixh{#3}{1}{4}{7}{0}% % for 4 to 5 % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%% % % setting substituents % % %%%%%%%%%%%%%%%%%%%%%%%% \setsixringh{#4}{0}{0}{4}{0}% % for 1 to 3 \setsixringh{#4}{1}{4}{7}{0}% % for 4 to 5 \end{ShiftPicEnv}% {\let\XyMTeXWarning\@gobble \fivefuseposhi{#5}}%for FuseWaring when nested \iniatom\iniflag}% %end of \fivefusehi macro % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % The macro |\fivefuseposhi| is used in the definition of % the |\sixfuseh| macro to detect a fused edge, where % the coordinates of a reference terminal (|\fuseAx| and |\fuseAy|) % and of the other terminal of the edge (|\fuseBx| and |\fuseBy|) % are given for the successive process of adjustment. % % \begin{macro}{\fivefuseposhi} % \begin{macrocode} \def\fivefuseposhi#1{% \global\@sixfuseposvfalse {\resetbdsw% \@tfor\memBer:=#1\do{% \if\memBer a\relax \if@sixfuseposv \XyMTeXWarning{Double fused bond at bond `a'}% \else \gdef\fuseAx{0}\gdef\fuseAy{0}% \gdef\fuseBx{103}\gdef\fuseBy{171}% \global\@sixfuseposvtrue \fi \fi% \if\memBer A\relax \if@sixfuseposv \XyMTeXWarning{Double fused bond at bond `A'}% \else \gdef\fuseBx{0}\gdef\fuseBy{0}% \gdef\fuseAx{103}\gdef\fuseAy{171}% \global\@sixfuseposvtrue \fi \fi% \if\memBer b\relax \if@sixfuseposv \XyMTeXWarning{Double fused bond at bond `b'}% \else \gdef\fuseAx{103}\gdef\fuseAy{171}% \gdef\fuseBx{303}\gdef\fuseBy{171}% \global\@sixfuseposvtrue \fi \fi% \if\memBer B\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `B'}% \else \gdef\fuseBx{103}\gdef\fuseBy{171}% \gdef\fuseAx{303}\gdef\fuseAy{171}% \global\@sixfuseposvtrue \fi \fi% \if\memBer c\relax \XyMTeXWarning{Not-used fusion at bond `c'}% \fi \if\memBer C\relax \XyMTeXWarning{Not-used fusion at bond `C'}% \fi \if\memBer d\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `d'}% \else \gdef\fuseAx{303}\gdef\fuseAy{-171}% \gdef\fuseBx{103}\gdef\fuseBy{-171}% \global\@sixfuseposvtrue \fi \fi% \if\memBer D\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `D'}% \else \gdef\fuseBx{303}\gdef\fuseBy{-171}% \gdef\fuseAx{103}\gdef\fuseAy{-171}% \global\@sixfuseposvtrue \fi \fi% \if\memBer e\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `e'}% \else \gdef\fuseAx{103}\gdef\fuseAy{-171}% \gdef\fuseBx{0}\gdef\fuseBy{0}% \global\@sixfuseposvtrue \fi \fi% \if\memBer E\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `E'}% \else \gdef\fuseBx{103}\gdef\fuseBy{-171}% \gdef\fuseAx{0}\gdef\fuseAy{0}% \global\@sixfuseposvtrue \fi \fi}}}% end of the macro \fivefuseposhi % \end{macrocode} % \end{macro} % % The macros |\fiveunithi| has been revived for compativility. % \changes{v3.00}{2002/4/30}{Revived command: \cs{fiveunithi}} % % \begin{macro}{\fiveunithi} % \begin{macrocode} \def\fiveunithi{\@ifnextchar[{\@five@unithi}{\@five@unithi[@]}} \def\@five@unithi[#1]#2#3#4{\fivefusehi[#1]{#2}{#3}{#4}} % \end{macrocode} % \end{macro} % % \section{Four-membered fused ring unit} % % The macro |\fourfuse| typesets a four-membered ring unit for ring fusion. % The following numbering is adopted in this macro. % % \begin{verbatim} % ************************** % * fourfuse 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 |\fourfuse| has two arguments |ATOMLIST|, |SUBSLIST| and |FUSE| % 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} % \fourfuse(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[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 `$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 |FUSE| represents one bond to be omitted. % The omitted edge is regarded as a fused position. % % \begin{verbatim} % FUSE: one bond omitted (a, b, c, or d) % \end{verbatim} % % The argument |OMIT| represents one or more bonds to be omitted. % The omitted edges are regarded as non-fused positions. % % \begin{verbatim} % OMIT: one or more bonds omitted (a, b, c, or d) % \end{verbatim} % % Several examples are shown as follows. % \begin{verbatim} % e.g. % % \fourfuse{1==N}{1==H;2==F}{c} % \fourfuse[c]{1==N}{1==Cl;4==F;2==CH$_{3}$}{a} % \end{verbatim} % % \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw}, % \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, % \cs{yl@xdiff} and \cs{yl@ydiff}} % \changes{v2.00}{1998/12/5}{Add: spiro and fused rings} % % \begin{macro}{\fourfuse} % \begin{macro}{\@four@fuse} % \begin{macro}{\@four@@fuse} % \begin{macro}{\@fourfuse} % \begin{macrocode} \def\fourfuse{\@ifnextchar({\@four@fuse(@}{\@four@fuse(@)}} \def\@four@fuse(#1){\@ifnextchar[{\@four@@fuse(#1)[@}% {\@four@@fuse(#1)[@]}} \def\@four@@fuse(#1)[#2]#3#4#5{\@ifnextchar[% {\@fourfuse(#1)[#2]{#3}{#4}{#5}[@}% {\@fourfuse(#1)[#2]{#3}{#4}{#5}[@]}} \def\@fourfuse(#1)[#2]#3#4#5[#6]{% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%%%% % % treatment of atom list % % %%%%%%%%%%%%%%%%%%%%%%%%%% \iniatom\iniflag%initialize \test@vertix@sixv{#3}{e}{c}{b}{f}{@}{@}% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adustment of subs positions % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \fourfusepos{#5}% \begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/% (800,880)(-571,-137){fourfuse}%2002/4/30 by S. Fujita (571,137)(171,-103)% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%% % % outer skeleton % % %%%%%%%%%%%%%%%%%% {\resetbdsw% \@bond@fuse@omit{#5}{#6}% \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% \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} % % \changes{v2.01}{2001/6/20}{The \cs{storeclipinfo} command is added.} % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%% % % setting heteroatoms % % %%%%%%%%%%%%%%%%%%%%%%% \Put@Direct(-142,0){\set@hetatom@sixv{#3}{5}{1}{4}{-1}% \storeclipinfo }% for 2 to 3 \developclipinfo \Put@Direct(0,0){\set@hetatom@sixv{#3}{4}{4}{6}{0}% \storeclipinfo }% for 1 \developclipinfo \Put@Direct(0,0){\set@hetatom@sixv{#3}{2}{5}{7}{0} \storeclipinfo }% for 4 \developclipinfo % \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{ShiftPicEnv}% \fourfusepos{#5}%%for FuseWaring when nested \iniatom\iniflag \global\@smallringswtrue%for permition at a center bond }% %end of \fourfuse macro % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % The macro |\fourfusepos| is used in the definition of % the |\sixfuseh| macro to detect a fused edge, where % the coordinates of a reference terminal (|\fuseAx| and |\fuseAy|) % and of the other terminal of the edge (|\fuseBx| and |\fuseBy|) % are given for the successive process of adjustment. % % \begin{macro}{\fourfusepos} % \begin{macrocode} \def\fourfusepos#1{% \global\@sixfuseposvfalse {\resetbdsw% \@tfor\memBer:=#1\do{% \if\memBer a\relax \if@sixfuseposv \XyMTeXWarning{Double fused bond at bond `a'}% \else \gdef\fuseAx{-171}\gdef\fuseAy{103}% \gdef\fuseBx{29}\gdef\fuseBy{103}% \global\@sixfuseposvtrue \fi \fi% \if\memBer A\relax \if@sixfuseposv \XyMTeXWarning{Double fused bond at bond `A'}% \else \gdef\fuseBx{-171}\gdef\fuseBy{103}% \gdef\fuseAx{29}\gdef\fuseAy{103}% \global\@sixfuseposvtrue \fi \fi% \if\memBer b\relax \if@sixfuseposv \XyMTeXWarning{Double fused bond at bond `b'}% \else \gdef\fuseAx{29}\gdef\fuseAy{103}% \gdef\fuseBx{29}\gdef\fuseBy{303}% \global\@sixfuseposvtrue \fi \fi% \if\memBer B\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `B'}% \else \gdef\fuseBx{29}\gdef\fuseBy{103}% \gdef\fuseAx{29}\gdef\fuseAy{303}% \global\@sixfuseposvtrue \fi \fi% \if\memBer c\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `c'}% \else \gdef\fuseAx{29}\gdef\fuseAy{303}% \gdef\fuseBx{-171}\gdef\fuseBy{303}% \global\@sixfuseposvtrue \fi \fi% \if\memBer C\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `C'}% \else \gdef\fuseBx{29}\gdef\fuseBy{303}% \gdef\fuseAx{-171}\gdef\fuseAy{303}% \global\@sixfuseposvtrue \fi \fi% \if\memBer d\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `d'}% \else \gdef\fuseAx{-171}\gdef\fuseAy{303}% \gdef\fuseBx{-171}\gdef\fuseBy{103}% \global\@sixfuseposvtrue \fi \fi% \if\memBer D\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `D'}% \else \gdef\fuseBx{-171}\gdef\fuseBy{303}% \gdef\fuseAx{-171}\gdef\fuseAy{103}% \global\@sixfuseposvtrue \fi \fi% }}}% end of the macro \fourfusepos % \end{macrocode} % \end{macro} % % \section{Three-membered fusing unit} % \subsection{Vertical type} % % The macro |\threefusev| typesets a three-membered ring to be fused. % The following numbering is adopted in this macro. % % \begin{verbatim} % ********************** % * theree fusing unit * % * (vertical type) * % ********************** % % b % 3--------2 % c ` / a % `1/ <===== the original point % \end{verbatim} % % The macro |\threefusev| has two arguments |ATOMLIST|, |SUBSLIST| and % |FUSE| 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} % \threefusev(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[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 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 |FUSE| represents one bond to be omitted. % The omitted edge is regarded as a fused position. % % \begin{verbatim} % FUSE: one bond omitted (a, b, or c) % \end{verbatim} % % The argument |OMIT| represents one or more bonds to be omitted. % The omitted edges are regarded as non-fused positions. % % \begin{verbatim} % OMIT: one or more bonds omitted (a, b, or c) % \end{verbatim} % % Several examples are shown as follows. % \begin{verbatim} % e.g. % % \threefusev{1==N}{1==Cl;2==F}{b} % \end{verbatim} % % \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw}, % \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, % \cs{yl@xdiff} and \cs{yl@ydiff}} % \changes{v2.00}{1998/12/5}{Add: spiro and fused rings} % % \begin{macro}{\threefusev} % \begin{macro}{\@three@fusev} % \begin{macro}{\@three@@fusev} % \begin{macro}{\@threefusev} % \begin{macrocode} \def\threefusev{\@ifnextchar({\@three@fusev(@}{\@three@fusev(@)}} \def\@three@fusev(#1){\@ifnextchar[{\@three@@fusev(#1)[@}% {\@three@@fusev(#1)[@]}} \def\@three@@fusev(#1)[#2]#3#4#5{\@ifnextchar[% {\@threefusev(#1)[#2]{#3}{#4}{#5}[@}% {\@threefusev(#1)[#2]{#3}{#4}{#5}[@]}} \def\@threefusev(#1)[#2]#3#4#5[#6]{% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%%%% % % treatment of atom list % % %%%%%%%%%%%%%%%%%%%%%%%%%% \iniatom\iniflag%initialize \test@vertix@sixv{#3}{d}{b}{f}{@}{@}{@}% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adustment of subs positions % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \threefuseposv{#5}% \begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/% (800,580)(-468,-240){threefusev}%2002/4/30 by S. Fujita (468,240)(68,0)% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%% % % outer skeleton % % %%%%%%%%%%%%%%%%%% {\resetbdsw% \@bond@fuse@omit{#5}{#6}% \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} % % \changes{v2.01}{2001/6/20}{The \cs{storeclipinfo} command is added.} % \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{ShiftPicEnv}% \threefuseposv{#5}%%for FuseWaring when nested \iniatom\iniflag \global\@smallringswtrue%for permition at a center bond }% %end of \threefusev macro % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % The macro |\threefuseposv| is used in the definition of % the |\threefusev| macro to detect a fused edge, where % the coordinates of a reference terminal (|\fuseAx| and |\fuseAy|) % and of the other terminal of the edge (|\fuseBx| and |\fuseBy|) % are given for the successive process of adjustment. % % \begin{macro}{\threefuseposv} % \begin{macrocode} \def\threefuseposv#1{% \global\@sixfuseposvfalse {\resetbdsw% \@tfor\memBer:=#1\do{% \if\memBer a\relax \if@sixfuseposv \XyMTeXWarning{Double fused bond at bond `a'}% \else \gdef\fuseAx{-68}\gdef\fuseAy{0}% % \gdef\fuseBx{29}\gdef\fuseBy{171}% \gdef\fuseBx{35}\gdef\fuseBy{171}%corrected \global\@sixfuseposvtrue \fi \fi% \if\memBer A\relax \if@sixfuseposv \XyMTeXWarning{Double fused bond at bond `A'}% \else % \gdef\fuseBx{-68}\gdef\fuseBy{0}% \gdef\fuseBx{-74}\gdef\fuseBy{0}%corrected \gdef\fuseAx{29}\gdef\fuseAy{171}% \global\@sixfuseposvtrue \fi \fi% \if\memBer b\relax \if@sixfuseposv \XyMTeXWarning{Double fused bond at bond `b'}% \else \gdef\fuseAx{29}\gdef\fuseAy{171}% \gdef\fuseBx{-171}\gdef\fuseBy{171}% \global\@sixfuseposvtrue \fi \fi% \if\memBer B\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `B'}% \else \gdef\fuseBx{29}\gdef\fuseBy{171}% \gdef\fuseAx{-171}\gdef\fuseAy{171}% \global\@sixfuseposvtrue \fi \fi% \if\memBer c\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `c'}% \else \gdef\fuseAx{-171}\gdef\fuseAy{171}% \gdef\fuseBx{-68}\gdef\fuseBy{0}% \global\@sixfuseposvtrue \fi \fi% \if\memBer C\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `C'}% \else \gdef\fuseBx{-171}\gdef\fuseBy{171}% \gdef\fuseAx{-68}\gdef\fuseAy{0}% \global\@sixfuseposvtrue \fi \fi% }}}% end of the macro \threefuseposv % \end{macrocode} % \end{macro} % % \subsection{Inverse vertical type} % % The macro |\threefusevi| 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{threefusevi}} % % \begin{verbatim} % **************************** % * thereehetero derivatives * % * (inverse vertical type) * % **************************** % % /1` <===== the original point % c / ` a % 3--------2 % b % \end{verbatim} % % The macro |\threefusevi| has two arguments |ATOMLIST|, |SUBSLIST| and |FUSE| % 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} % \threefusevi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[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 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 |FUSE| represents one bond to be omitted. % The omitted edge is regarded as a fused position. % % \begin{verbatim} % FUSE: one bond omitted (a, b, or c) % \end{verbatim} % % The argument |OMIT| represents one or more bonds to be omitted. % The omitted edges are regarded as non-fused positions. % % \begin{verbatim} % OMIT: one or more bonds omitted (a, b, or c) % \end{verbatim} % % Several examples are shown as follows. % \begin{verbatim} % e.g. % % \threefusevi{1==N}{1==Cl;2==F}{c} % \threefusevi[c]{1==N}{1==Cl;3==F;2==CH$_{3}$}{a} % \threefusevi{1==N}{1D==O}{b} % \end{verbatim} % % \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw}, % \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, % \cs{yl@xdiff} and \cs{yl@ydiff}} % \changes{v2.00}{1998/12/5}{Add: spiro and fused rings} % % \begin{macro}{\threefusevi} % \begin{macro}{\@three@fusevi} % \begin{macro}{\@three@@fusevi} % \begin{macro}{\@threefusevi} % \begin{macrocode} \def\threefusevi{\@ifnextchar({\@three@fusevi(@}{\@three@fusevi(@)}} \def\@three@fusevi(#1){\@ifnextchar[{\@three@@fusevi(#1)[@}% {\@three@@fusevi(#1)[@]}} \def\@three@@fusevi(#1)[#2]#3#4#5{\@ifnextchar[% {\@threefusevi(#1)[#2]{#3}{#4}{#5}[@}% {\@threefusevi(#1)[#2]{#3}{#4}{#5}[@]}} \def\@threefusevi(#1)[#2]#3#4#5[#6]{% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%%%% % % treatment of atom list % % %%%%%%%%%%%%%%%%%%%%%%%%%% \iniatom\iniflag%initialize \test@vertix@sixv{#3}{a}{c}{e}{@}{@}{@}% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adustment of subs positions % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \threefuseposvi{#5}% \begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/% (800,580)(-468,-340){threefusevi}%2002/4/30 by S. Fujita (468,340)(68,0)% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%% % % outer skeleton % % %%%%%%%%%%%%%%%%%% {\resetbdsw% \@bond@fuse@omit{#5}{#6}% \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} % % \changes{v2.01}{2001/6/20}{The \cs{storeclipinfo} command is added.} % \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@cclip\global\@ccliptrue\fi \storeclipinfo }%subst 3 \developclipinfo \Put@Direct(-142,-275){\set@hetatom@sixv{#3}{1}{2}{4}{0}% %\if@eclip\global\@ecliptrue\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{ShiftPicEnv}% \threefuseposvi{#5}%%for FuseWaring when nested \iniatom\iniflag \global\@smallringswtrue%for permition at a center bond }% %end of \threefusevi macro % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % The macro |\threefuseposvi| is used in the definition of % the |\threefusev| macro to detect a fused edge, where % the coordinates of a reference terminal (|\fuseAx| and |\fuseAy|) % and of the other terminal of the edge (|\fuseBx| and |\fuseBy|) % are given for the successive process of adjustment. % % \begin{macro}{\threefuseposvi} % \begin{macrocode} \def\threefuseposvi#1{% \global\@sixfuseposvfalse {\resetbdsw% \@tfor\memBer:=#1\do{% \if\memBer a\relax \if@sixfuseposv \XyMTeXWarning{Double fused bond at bond `a'}% \else \gdef\fuseAx{-68}\gdef\fuseAy{0}% % \gdef\fuseBx{29}\gdef\fuseBy{-171}% \gdef\fuseBx{35}\gdef\fuseBy{-171}%corrected \global\@sixfuseposvtrue \fi \fi% \if\memBer A\relax \if@sixfuseposv \XyMTeXWarning{Double fused bond at bond `A'}% \else % \gdef\fuseBx{-68}\gdef\fuseBy{0}% \gdef\fuseBx{-74}\gdef\fuseBy{0}%corrected \gdef\fuseAx{29}\gdef\fuseAy{-171}% \global\@sixfuseposvtrue \fi \fi% \if\memBer b\relax \if@sixfuseposv \XyMTeXWarning{Double fused bond at bond `b'}% \else \gdef\fuseAx{29}\gdef\fuseAy{-171}% \gdef\fuseBx{-171}\gdef\fuseBy{-171}% \global\@sixfuseposvtrue \fi \fi% \if\memBer B\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `B'}% \else \gdef\fuseBx{29}\gdef\fuseBy{-171}% \gdef\fuseAx{-171}\gdef\fuseAy{-171}% \global\@sixfuseposvtrue \fi \fi% \if\memBer c\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `c'}% \else \gdef\fuseAx{-171}\gdef\fuseAy{-171}% \gdef\fuseBx{-68}\gdef\fuseBy{0}% \global\@sixfuseposvtrue \fi \fi% \if\memBer C\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `C'}% \else \gdef\fuseBx{-171}\gdef\fuseBy{-171}% \gdef\fuseAx{-68}\gdef\fuseAy{0}% \global\@sixfuseposvtrue \fi \fi% }}}% end of the macro \threefuseposvi % \end{macrocode} % \end{macro} % % \subsection{Horizontal type} % % The macro |\threefuseh| typesets a three-membered ring to be fused. % The following numbering is adopted in this macro. % % \begin{verbatim} % **************************** % * thereehetero fusing unit * % * (horizontal type) * % **************************** % aaa fff % 3 % | ` c % b | 1 bbb ccc % | / a % 2/ % ddd eee % % \end{verbatim} % % The macro |\threefuseh| has two arguments |ATOMLIST|, |SUBSLIST| and |FUSE| % 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} % \threefuseh(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[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 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 |FUSE| represents one bond to be omitted. % The omitted edge is regarded as a fused position. % % \begin{verbatim} % FUSE: one bond omitted (a, b, or c) % \end{verbatim} % % The argument |OMIT| represents one or more bonds to be omitted. % The omitted edges are regarded as non-fused positions. % % \begin{verbatim} % OMIT: one or more bonds omitted (a, b, or c) % \end{verbatim} % % Several examples are shown as follows. % \begin{verbatim} % e.g. % % \threefuseh{1==N}{1==Cl;2==F}{c} % \end{verbatim} % % \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw}, % \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, % \cs{yl@xdiff} and \cs{yl@ydiff}} % \changes{v2.00}{1998/12/5}{Add: spiro and fused rings} % % \begin{macro}{\threefuseh} % \begin{macro}{\@three@fuseh} % \begin{macro}{\@three@@fuseh} % \begin{macro}{\@threefuseh} % \begin{macrocode} \def\threefuseh{\@ifnextchar({\@three@fuseh(@}{\@three@fuseh(@)}} \def\@three@fuseh(#1){\@ifnextchar[{\@three@@fuseh(#1)[@}% {\@three@@fuseh(#1)[@]}} \def\@three@@fuseh(#1)[#2]#3#4#5{\@ifnextchar[% {\@threefuseh(#1)[#2]{#3}{#4}{#5}[@}% {\@threefuseh(#1)[#2]{#3}{#4}{#5}[@]}} \def\@threefuseh(#1)[#2]#3#4#5[#6]{% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%%%% % % treatment of atom list % % %%%%%%%%%%%%%%%%%%%%%%%%%% \iniatom\iniflag%initialize \test@vertix@sixv{#3}{d}{f}{b}{@}{@}{@}%tentative use for six-h % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adustment of subs positions % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \threefuseposh{#5}% \begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/% (580,700)(-200,-240){threefuseh}%2002/4/30 by S. Fujita (200,200)% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%%%%%% % % retreatment of atom list % % %%%%%%%%%%%%%%%%%%%%%%%%%%%% \iniatom\iniflag%initialize \test@vertix@sixv{#3}{c}{e}{a}{@}{@}{@}% \test@vertix@sixv{#3}{b}{d}{f}{@}{@}{@}% % %%%%%%%%%%%%%%%%%% % % outer skeleton % % %%%%%%%%%%%%%%%%%% {\resetbdsw% \@bond@fuse@omit{#5}{#6}% \Put@Direct(0,0){\set@skel@bond{#1}{a}{c}}% % bond between 1 and 2 \@aaa -> \skbondc etc \Put@Direct(171,-103){\set@skel@bond{#1}{b}{e}}% % bond between 2 and 3 \@bbb -> \skbonde etc \Put@Direct(0,-200){\set@skel@bond{#1}{c}{a}}% % bond between 3 and 1 \@ccc -> \skbonda 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){\bondc}% \else\if\member b\relax\Put@Direct(171,-103){\bonde}% \else\if\member c\relax\Put@Direct(0,-200){\bonda}% \else\if\member A\relax% aromatic circle \Put@oCircle(70,103){100}% %circle \else % %%%%%%%%%%%%%%%%%%%%%%%%% % % inner bond attachment % % %%%%%%%%%%%%%%%%%%%%%%%%% \expandafter\twoCH@@R\member//% \set@fusionadd@threeh \fi\fi\fi\fi\fi% }% % \end{macrocode} % % \changes{v2.01}{2001/6/20}{The \cs{storeclipinfo} command is added.} % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%% % % setting hetero atoms % % %%%%%%%%%%%%%%%%%%%%%%%% \iniflag %\Put@Direct(-235,103){\set@hetatom@sixh{#3}{3}{3}{5}{0}% \Put@Direct(-215,103){\set@hetatom@sixh{#3}{3}{3}{5}{0}% %\if@clip \global\@cliptrue\fi \storeclipinfo }%subst 1 <--six h 4 \developclipinfo \Put@Direct(-103,29){\set@hetatom@sixh{#3}{-1}{1}{3}{0}% %\if@bclip \global\@bcliptrue\fi \storeclipinfo }%subst 3 <--six h 2 \developclipinfo \Put@Direct(-103,171){\set@hetatom@sixh{#3}{4}{5}{7}{0}% %\if@fclip \global\@fcliptrue\fi \storeclipinfo }%subst 2 <--six h 6 \developclipinfo % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%% % % setting substituents % % %%%%%%%%%%%%%%%%%%%%%%%% \Put@Direct(-235,103){\setsixringh{#4}{3}{3}{5}{0}}%subst 1 \Put@Direct(-103,29){\setsixringh{#4}{-1}{1}{3}{0}}%subst 3 \Put@Direct(-103,171){\setsixringh{#4}{4}{5}{7}{0}}%subst 2 \end{ShiftPicEnv}% \threefuseposh{#5}%%for FuseWaring when nested \iniatom\iniflag \global\@smallringswtrue%for permition at a center bond }% %end of \threefuseh macro % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % The macro |\threefuseposh| is used in the definition of % the |\threefusev| macro to detect a fused edge, where % the coordinates of a reference terminal (|\fuseAx| and |\fuseAy|) % and of the other terminal of the edge (|\fuseBx| and |\fuseBy|) % are given for the successive process of adjustment. % % \begin{macro}{\threefuseposh} % \begin{macrocode} \def\threefuseposh#1{% \global\@sixfuseposvfalse {\resetbdsw% \@tfor\memBer:=#1\do{% \if\memBer a\relax \if@sixfuseposv \XyMTeXWarning{Double fused bond at bond `a'}% \else \gdef\fuseAx{171}\gdef\fuseAy{103}%corrected \gdef\fuseBx{0}\gdef\fuseBy{0}% \global\@sixfuseposvtrue \fi \fi% \if\memBer A\relax \if@sixfuseposv \XyMTeXWarning{Double fused bond at bond `A'}% \else \gdef\fuseBx{171}\gdef\fuseBy{103}% \gdef\fuseAx{0}\gdef\fuseAy{0}% \global\@sixfuseposvtrue \fi \fi% \if\memBer b\relax \if@sixfuseposv \XyMTeXWarning{Double fused bond at bond `b'}% \else \gdef\fuseAx{0}\gdef\fuseAy{0}% \gdef\fuseBx{0}\gdef\fuseBy{200}% \global\@sixfuseposvtrue \fi \fi% \if\memBer B\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `B'}% \else \gdef\fuseBx{0}\gdef\fuseBy{0}% \gdef\fuseAx{0}\gdef\fuseAy{200}% \global\@sixfuseposvtrue \fi \fi% \if\memBer c\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `c'}% \else \gdef\fuseAx{0}\gdef\fuseAy{200}% % \gdef\fuseBx{171}\gdef\fuseBy{103}% \gdef\fuseBx{171}\gdef\fuseBy{97}%corrected \global\@sixfuseposvtrue \fi \fi% \if\memBer C\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `C'}% \else % \gdef\fuseBx{0}\gdef\fuseBy{200}% \gdef\fuseBx{0}\gdef\fuseBy{206}%corrected \gdef\fuseAx{171}\gdef\fuseAy{103}% \global\@sixfuseposvtrue \fi \fi% }}}% end of the macro \threefuseposh % \end{macrocode} % \end{macro} % % \subsection{Inverse horizontal type} % % The macro |\threefusehi| typesets a three-membered ring to be fused. % The following numbering is adopted in this macro. % % \begin{verbatim} % ******************************* % * thereehetero fusing unit * % * (vertical horizontal type) * % ******************************* % % aaa bbb % c 3 % / | % eee 1 | b % fff a` | % 2 <---original point % ccc ddd % \end{verbatim} % % The macro |\threefusehi| has two arguments |ATOMLIST|, |SUBSLIST| and |FUSE| % 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} % \threefusehi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}{FUSE}[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 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 |FUSE| represents one bond to be omitted. % The omitted edge is regarded as a fused position. % % \begin{verbatim} % FUSE: one bond omitted (a, b, or c) % \end{verbatim} % % The argument |OMIT| represents one or more bonds to be omitted. % The omitted edges are regarded as non-fused positions. % % \begin{verbatim} % OMIT: one or more bonds omitted (a, b, or c) % \end{verbatim} % % Several examples are shown as follows. % \begin{verbatim} % e.g. % % \threefusehi{1==N}{1==Cl;2==F}{c} % \threefusehi[c]{1==N}{1==Cl;3==F;2==CH$_{3}$}{a} % \end{verbatim} % % \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw}, % \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, % \cs{yl@xdiff} and \cs{yl@ydiff}} % \changes{v2.00}{1998/12/5}{Add: spiro and fused rings} % % \begin{macro}{\threefusehi} % \begin{macro}{\@three@fusehi} % \begin{macro}{\@three@@fusehi} % \begin{macro}{\@threefusehi} % \begin{macrocode} \def\threefusehi{\@ifnextchar({\@three@fusehi(@}{\@three@fusehi(@)}} \def\@three@fusehi(#1){\@ifnextchar[{\@three@@fusehi(#1)[@}% {\@three@@fusehi(#1)[@]}} \def\@three@@fusehi(#1)[#2]#3#4#5{\@ifnextchar[% {\@threefusehi(#1)[#2]{#3}{#4}{#5}[@}% {\@threefusehi(#1)[#2]{#3}{#4}{#5}[@]}} \def\@threefusehi(#1)[#2]#3#4#5[#6]{% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%%%% % % treatment of atom list % % %%%%%%%%%%%%%%%%%%%%%%%%%% \iniatom\iniflag%initialize \test@vertix@sixv{#3}{a}{e}{c}{@}{@}{@}%tentative use for six-h % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adustment of subs positions % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \threefuseposhi{#5}% \begin{ShiftPicEnv}[1](0,0)(-\yl@shiftii,-\yl@shifti)/% (580,700)(-400,-240){threefusehi}%2002/4/30 by S. Fujita (400,200)% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%%%%%% % % retreatment of atom list % % %%%%%%%%%%%%%%%%%%%%%%%%%%%% \iniatom\iniflag%initialize \test@vertix@sixv{#3}{e}{c}{a}{@}{@}{@}% \test@vertix@sixv{#3}{f}{d}{b}{@}{@}{@}% % %%%%%%%%%%%%%%%%%% % % outer skeleton % % %%%%%%%%%%%%%%%%%% {\resetbdsw% \@bond@fuse@omit{#5}{#6}% \Put@Direct(0,0){\set@skel@bond{#1}{a}{d}}% % bond between 1 and 2 \@aaa -> \skbondd etc \Put@Direct(-171,-103){\set@skel@bond{#1}{b}{b}}% % bond between 2 and 3 \@bbb -> \skbondb etc \Put@Direct(0,-200){\set@skel@bond{#1}{c}{f}}% % bond between 3 and 1 \@ccc -> \skbondf etc }% % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%% % % inner double bond % % %%%%%%%%%%%%%%%%%%%%% \@tfor\member:=#2\do{% \if\member r\relax% \else\if\member a\relax\Put@Direct(0,0){\bondd}% \else\if\member b\relax\Put@Direct(-171,-103){\bondb}% \else\if\member c\relax\Put@Direct(0,-200){\bondf}% \else\if\member A\relax% aromatic circle \Put@oCircle(70,103){100}% %circle \else % %%%%%%%%%%%%%%%%%%%%%%%%% % % inner bond attachment % % %%%%%%%%%%%%%%%%%%%%%%%%% \expandafter\twoCH@@R\member//% \set@fusionadd@threehi \fi\fi\fi\fi\fi% }% % \end{macrocode} % % \changes{v2.01}{2001/6/20}{The \cs{storeclipinfo} command is added.} % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%% % % setting hetero atoms % % %%%%%%%%%%%%%%%%%%%%%%%% \iniflag \Put@Direct(-171,103){\set@hetatom@sixh{#3}{0}{0}{2}{0}% %\if@aclip \global\@acliptrue\fi \storeclipinfo }%subst 1 <--six h 1 \developclipinfo \Put@Direct(-303,29){\set@hetatom@sixh{#3}{0}{2}{4}{0}% %\if@cclip \global\@ccliptrue\fi \storeclipinfo }%subst 3 <--six h 3 \developclipinfo \Put@Direct(-303,171){\set@hetatom@sixh{#3}{3}{4}{6}{0}% %\if@eclip \global\@ecliptrue\fi \storeclipinfo }%subst 2 <--six h 5 \developclipinfo % \end{macrocode} % % \begin{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%% % % setting substituents % % %%%%%%%%%%%%%%%%%%%%%%%% \Put@Direct(-171,103){\setsixringh{#4}{0}{0}{2}{0}}%subst 1 \Put@Direct(-303,29){\setsixringh{#4}{0}{2}{4}{0}}%subst 3 \Put@Direct(-303,171){\setsixringh{#4}{3}{4}{6}{0}}%subst 2 \end{ShiftPicEnv}% \threefuseposhi{#5}%%for FuseWaring when nested \iniatom\iniflag \global\@smallringswtrue%for permition at a center bond }% %end of \threefusehi macro % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % The macro |\threefuseposhi| is used in the definition of % the |\threefusev| macro to detect a fused edge, where % the coordinates of a reference terminal (|\fuseAx| and |\fuseAy|) % and of the other terminal of the edge (|\fuseBx| and |\fuseBy|) % are given for the successive process of adjustment. % % \begin{macro}{\threefuseposhi} % \begin{macrocode} \def\threefuseposhi#1{% \global\@sixfuseposvfalse {\resetbdsw% \@tfor\memBer:=#1\do{% \if\memBer a\relax \if@sixfuseposv \XyMTeXWarning{Double fused bond at bond `a'}% \else \gdef\fuseAx{-171}\gdef\fuseAy{103}%corrected \gdef\fuseBx{0}\gdef\fuseBy{0}% \global\@sixfuseposvtrue \fi \fi% \if\memBer A\relax \if@sixfuseposv \XyMTeXWarning{Double fused bond at bond `A'}% \else \gdef\fuseBx{-171}\gdef\fuseBy{103}% \gdef\fuseAx{0}\gdef\fuseAy{0}% \global\@sixfuseposvtrue \fi \fi% \if\memBer b\relax \if@sixfuseposv \XyMTeXWarning{Double fused bond at bond `b'}% \else \gdef\fuseAx{0}\gdef\fuseAy{0}% \gdef\fuseBx{0}\gdef\fuseBy{200}% \global\@sixfuseposvtrue \fi \fi% \if\memBer B\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `B'}% \else \gdef\fuseBx{0}\gdef\fuseBy{0}% \gdef\fuseAx{0}\gdef\fuseAy{200}% \global\@sixfuseposvtrue \fi \fi% \if\memBer c\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `c'}% \else \gdef\fuseAx{0}\gdef\fuseAy{200}% % \gdef\fuseBx{-171}\gdef\fuseBy{103}% \gdef\fuseBx{-171}\gdef\fuseBy{97}%corrected \global\@sixfuseposvtrue \fi \fi% \if\memBer C\relax \if@sixfuseposv \XyMTeXWarning{Double fused bonds at bond `C'}% \else % \gdef\fuseBx{0}\gdef\fuseBy{200}% \gdef\fuseBx{0}\gdef\fuseBy{206}%corrected \gdef\fuseAx{-171}\gdef\fuseAy{103}% \global\@sixfuseposvtrue \fi \fi% }}}% end of the macro \threefuseposhi % % \end{macrocode} % \end{macro} % % \Finale % \endinput