diff options
author | Karl Berry <karl@freefriends.org> | 2013-11-19 00:56:32 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2013-11-19 00:56:32 +0000 |
commit | 0c16ddd29d43c785b867739f9b8fad8885ee548b (patch) | |
tree | 7402f2695ae367f7c96dba3224b4f1158900f077 /Master/texmf-dist/source/latex/xymtex/base | |
parent | 717e7ac16b923e6683f358eab146a2a96a46d7e4 (diff) |
xymtex (now lppl, minus manuals without sources)
git-svn-id: svn://tug.org/texlive/trunk@32182 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/xymtex/base')
39 files changed, 59057 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/xymtex/base/aliphat.dtx b/Master/texmf-dist/source/latex/xymtex/base/aliphat.dtx new file mode 100644 index 00000000000..e8c0f377d16 --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/aliphat.dtx @@ -0,0 +1,4767 @@ +% \iffalse meta-comment +%% File: aliphat.dtx +% +% Copyright 1993,1996,1998,2001,2002,2004,2005,2009,2010,2013 by Shinsaku Fujita +% +% This file is part of XyMTeX system. +% ------------------------------------- +% +% This file is a successor to: +% +% aliphat.sty +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 1.00} +% \typeout{ -- Released December 1, 1993 by Shinsaku Fujita} +% Copyright (C) 1993 by Shinsaku Fujita, all rights reserved. +% +% This file is a part of the macro package ``XyMTeX'' which has been +% designed for typesetting chemical structural formulas. +% +% This file is to be contained in the ``xymtex'' directory which is +% an input directory for TeX. It is a LaTeX optional style file and +% should be used only within LaTeX, because several macros of the file +% are based on LaTeX commands. +% +% For the review of XyMTeX, see +% (1) Shinsaku Fujita, ``Typesetting structural formulas with the text +% formatter TeX/LaTeX'', Computers and Chemistry, in press. +% The following book deals with an application of TeX/LaTeX to +% preparation of manuscripts of chemical fields: +% (2) Shinsaku Fujita, ``LaTeX for Chemists and Biochemists'' +% Tokyo Kagaku Dozin, Tokyo (1993) [in Japanese]. +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% The Current Maintainer of this work is Shinsaku Fujita. +% +% This work consists of the files aliphat.dtx and aliphat.ins +% and the derived file aliphat.sty. +% +% Please report any bugs, comments, suggestions, etc. to: +% (Old Address) Shinsaku Fujita, +% Ashigara Research Laboratories, Fuji Photo Film Co., Ltd., +% Minami-Ashigara, Kanagawa-ken, 250-01, Japan. +% (Present Address) Shinsaku Fujita +% Shonan Institute of Chemoinformatics and +% Mathematical Chemistry +% fujita-sicimc@nifmail.jp +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{aliphat} +% \def\versi@ndate{December 01, 1993} +% \def\versi@nno{ver1.00} +% \def\copyrighth@lder{SF}% Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{aliphat} +% \def\versi@ndate{August 16, 1996} +% \def\versi@nno{ver1.01} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{aliphat} +% \def\versi@ndate{October 31, 1998} +% \def\versi@nno{ver1.02} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{aliphat} +% \def\versi@ndate{December 25, 1998} +% \def\versi@nno{ver2.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{aliphat} +% \def\versi@ndate{June 20, 2001} +% \def\versi@nno{ver2.01} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{aliphat} +% \def\versi@ndate{April 30, 2002} +% \def\versi@nno{ver3.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{aliphat} +% \def\versi@ndate{May 30, 2002} +% \def\versi@nno{ver4.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{aliphat} +% \def\versi@ndate{August 30, 2004} +% \def\versi@nno{ver4.01} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{aliphat} +% \def\versi@ndate{December 20, 2004} +% \def\versi@nno{ver4.02} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{aliphat} +% \def\versi@ndate{July 20, 2005} +% \def\versi@nno{ver4.03} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{aliphat} +% \def\versi@ndate{November 07, 2009} +% \def\versi@nno{ver4.05} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{aliphat} +% \def\versi@ndate{October 01, 2010} +% \def\versi@nno{ver5.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{aliphat} +% \def\versi@ndate{April 02, 2013} +% \def\versi@nno{ver5.01b} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \fi +% +% \CheckSum{6477} +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +% +% \setcounter{StandardModuleDepth}{1} +% +% \StopEventually{} +% \MakeShortVerb{\|} +% +% \iffalse +% \changes{v1.01}{1996/06/26}{first edition for LaTeX2e} +% \changes{v1.02}{1998/10/31}{revised edition for LaTeX2e} +% \changes{v2.00}{1998/12/25}{enhanced edition for LaTeX2e} +% \changes{v2.01}{2001/06/20}{Size reduction and clipping information} +% \changes{v2.01}{2001/06/21}{The command \cs{dotorline} is added.} +% \changes{v3.00}{2002/04/30}{sfpicture environment, etc.} +% \changes{v4.00}{2002/05/30}{PostScript output and ShiftPicEnv} +% \changes{v4.01}{2004/08/30}{Variable size of a central atom} +% \changes{v4.02}{2004/12/20}{Tetrhedral units with wedges bonds} +% \changes{v4.02a}{2004/12/27}{Bug fix: \cs{square} to \cs{squarecomplex}} +% \changes{v4.03}{2004/07/20}{Wave bonds} +% \changes{v4.05}{2009/11/07}{Bug fix: \cs{@tetrahedral} to \cs{@@tetrahedral}} +% \changes{v5.00}{2010/10/01}{Bond Coloring and the LaTeX Project Public License; +% \cs{square} renamed into \cs{squareplanar}} +% \changes{v5.01b}{2013/04/02}{Bug fix: \cs{Nothbond}, \cs{Southbond}, etc} +% \changes{v5.01}{2013/07/30}{Bug fix: \cs{yltetrahedralposition}, etc} +% \fi +% +% \iffalse +%<*driver> +\NeedsTeXFormat{pLaTeX2e} +% \fi +\ProvidesFile{aliphat.dtx}[2013/07/30 v5.01 XyMTeX{} package file] +% \iffalse +\documentclass{ltxdoc} +\GetFileInfo{aliphat.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{Aliphatic compounds by {\sffamily aliphat.sty} +(\fileversion) of \XyMTeX{}} +\author{Shinsaku Fujita \\ +Shonan Institute of Chemoinformatics and Mathematical Chemistry, \\ +Kanagawa, 258-0019, Japan +% 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{aliphat.dtx} +\end{document} +%</driver> +% \fi +% +% \section{Introduction}\label{aliphat:intro} +% +% \subsection{Options for {\sffamily docstrip}} +% +% \DeleteShortVerb{\|} +% \begin{center} +% \begin{tabular}{|l|l|} +% \hline +% \emph{option} & \emph{function}\\ \hline +% aliphat & aliphat.sty \\ +% driver & driver for this dtx file \\ +% \hline +% \end{tabular} +% \end{center} +% \MakeShortVerb{\|} +% +% \subsection{Version Information} +% +% \begin{macrocode} +%<*aliphat> +\typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 5.01} +\typeout{ -- Released July 20, 2013 by Shinsaku Fujita} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\j@urnalname{aliphat} +\def\versi@ndate{July 20, 2013} +\def\versi@nno{ver5.01} +\def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\typeout{XyMTeX Macro File `\j@urnalname' (\versi@nno) <\versi@ndate>% +\space[\copyrighth@lder]} +% \end{macrocode} +% +% \section{List of commands for aliphat.sty} +% +% \begin{verbatim} +% ********************************* +% * aliphat.sty: list of commands * +% ********************************* +% +% <Conventions for bond-setting> +% +% \Northbond +% \Eastbond +% \Southbond +% \Westbond +% \NEBond +% \NEbond +% \SEBond +% \SEbond +% \NWBond +% \NWbond +% \SWBond +% \SWbond +% +% \NEBOND +% \NWBOND +% \SEBOND +% \SWBOND +% +% <Macros for position adjustment> +% \ylrtrigonalposition +% \ylRtrigonalposition +% \ylltrigonalposition +% \ylLtrigonalposition +% \ylutrigonalposition +% \ylUtrigonalposition +% \yldtrigonalposition +% \ylDtrigonalposition +% +% \yltethedralposition +% \ylsquareposition +% +% \ylethylenepositiona +% \ylethylenepositionb +% \ylethylenevpositiona +% \ylethylenevpositionb +% +% <Macros for tetravalent atoms> +% +% \tetrahedral \@tetrahedral +% \square ---> \squarplanar \@square ---> \@squareplanar +% +% <Macros for trivalent atoms> +% +% \rtrigonal \@rtrigonal +% \Rtrigonal \@Rtrigonal +% \ltrigonal \@ltrigonal +% \Ltrigonal \@Ltrigonal +% \utrigonal \@utrigonal +% \Utrigonal \@Utrigonal +% \dtrigonal \@dtrigonal +% \Dtrigonal \@Dtrigonal +% +% <Macros for two-carbon compounds> +% +% \ethylene \@ethylene +% \ethyleneh +% \Ethylene \@Ethylene +% \Ethyleneh +% \ethylenev \@ethylenev +% \Ethylenev \@Ethylenev +% +% <Macros for stereo-projection> +% +% \tetrastereo \@tetrastereo +% \dtetrastereo \@dtetrastereo +% \ethanestereo \@ethanestereo +% +% <Macros for tetrahedral units with wedged bonds> +% +% \rtetrahedralS \RtetrahedralS +% \ltetrahedralS \LtetrahedralS +% \utetrahedralS \UtetrahedralS +% \dtetrahedralS \DtetrahedralS +% \htetrahedralS +% +% <Macros for trigonal bipyramidal intermediates> +% +% \utrigpyramid \dtrigpyramid +% \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 aliphat.sty} for the present case). Hence, the combination +% of |\input| and |\@ifundefined| is used to crossload sty +% files ({\sf chemstr.sty} for the present case) in place of the +% |\RequirePackage| command of \LaTeXe{}. +% +% \changes{v4.01}{2004/8/30}{Adding \cs{ifno@centeratom}} +% \begin{macrocode} +% ************************* +% * input of basic macros * +% ************************* +\@ifundefined{setsixringv}{\input chemstr.sty\relax}{} +\unitlength=0.1pt +\newif\ifno@centeratom \no@centeratomfalse +% \end{macrocode} +% +% \section{Macros for bond-setting} +% +% Single, double and triple bonds of aliphatic compounds are represented +% by horizontal, vertical or sloped lines, +% which can be drawn by such commands as |\Eastbond|, +% |\Northbond| and |\SEbond|. +% \changes{v1.02}{1998/10/20}{Adding \cs{NEBOND}, \cs{SEBOND}, \cs{NWBOND}, +% and \cs{SWBOND}} +% +% \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.01}{2001/06/21}{The command \cs{dotorline} is added.} +% \changes{v4.00}{2002/06/13}{Bug fix: Northbond etc. A and B inversed} +% \changes{v4.01}{2004/8/30}{Variable bond length.} +% \changes{v5.01}{2013/04/02}{Bug fix} +% +% \begin{macro}{\Northbond} +% \begin{macrocode} +% ******************************** +% * Conventions for bond-setting * +% ******************************** +\def\Northbond{% +\@ifnextchar[{\N@rthbond}{\N@rthbond[]}} +\def\N@rthbond[#1]{% +\yl@xdiff=40 +\yl@ydiff=-15 +\def\@tempXX{#1}% +\ifx\@tempXX\empty +\@tempcnta=100\relax +\@tempcntb=100\relax +\else +\@tempcnta=#1\relax +\@tempcntb=#1\relax +\fi +\ifno@centeratom +\advance\@tempcnta by52\relax +\advance\@tempcntb by52\relax +\fi +\edef\@tempcntavaluea{\the\@tempcnta}% +\@tempcnta=\@tempcntb +\ifno@centeratom\else%%added2013/4/2 +\advance\@tempcnta by52\relax +\fi +\edef\@tempcntavalueb{\the\@tempcnta}% +\@tempcnta=\@tempcntb +\ifno@centeratom +\advance\@tempcnta by15\relax%%67-52=15added2013/4/2 +\else +\advance\@tempcnta by67\relax +\fi +\edef\@tempcntavaluec{\the\@tempcnta}% +%\begin{sfpicture}(100,200)(0,0) +\begin{sfpicture}(0,0)(0,0) +\ifno@centeratom% + \if\@tmpb D\relax% +% \Multiput@Direct(-13,0)(26,0){2}{\line(0,1){\@tempcntavaluea}}% double bond up + \Multiput@Direct(-13,0)(26,0){2}{\Put@Line(0,0)(0,1){\@tempcntavaluea}}%2010/10/01 + \else\if\@tmpb T\relax% +% \Multiput@Direct(-20,0)(20,0){3}{\line(0,1){\@tempcntavaluea}}% triple bond up + \Multiput@Direct(-20,0)(20,0){3}{\Put@Line(0,0)(0,1){\@tempcntavaluea}}%2010/10/01 + \else\if\@tmpb B%(B) beta <-- alpha 2002/6/13 + {\thicklines\Put@Line(-8,0)(0,1){\@tempcntavaluea}}% single bond (alpha) + \else\if\@tmpb A%(A) alpha <-- beta 2002/6/13 + \dotorline(0,0)(0,1){\@tempcntavaluea}/(0,0)(0,\@tempcntavalueb)% + \else\if\@tmpb S% + \Put@Line(0,0)(0,1){\@tempcntavaluea}% + \else\if\@tmpb U% undefined + {% + \WaveBonds% + \Put@Line(0,0)(0,1){\@tempcntavaluea}% + }% + \else \Put@Line(0,0)(0,1){\@tempcntavaluea}% + \fi\fi\fi\fi\fi\fi% + \else% + \if\@tmpb D\relax% +% \Multiput@Direct(-13,52)(26,0){2}{\line(0,1){\@tempcntavaluea}}% double bond up + \Multiput@Direct(-13,52)(26,0){2}{\Put@Line(0,0)(0,1){\@tempcntavaluea}}%2010/10/01 + \else\if\@tmpb T\relax% +% \Multiput@Direct(-20,52)(20,0){3}{\line(0,1){\@tempcntavaluea}}% triple bond up + \Multiput@Direct(-20,52)(20,0){3}{\Put@Line(0,0)(0,1){\@tempcntavaluea}}%2010/10/01 + \else\if\@tmpb B%(B) beta <-- alpha 2002/6/13 + {\thicklines\Put@Line(-8,52)(0,1){\@tempcntavaluea}}% single bond (alpha) + \else\if\@tmpb A%(A) alpha <-- beta 2002/6/13 + \dotorline(0,52)(0,1){\@tempcntavaluea}/(0,52)(0,\@tempcntavalueb)% + \else\if\@tmpb S% + \Put@Line(0,52)(0,1){\@tempcntavaluea}% + \else\if\@tmpb U% undefined + {% + \WaveBonds% + \Put@Line(0,52)(0,1){\@tempcntavaluea}% + }% + \else \Put@Line(0,52)(0,1){\@tempcntavaluea}% + \fi\fi\fi\fi\fi\fi% + \fi% + \putlratom{-40}{\@tempcntavaluec}{\@memberb}%==1 upper substituent +\end{sfpicture}}%End of Northbond +% \end{macrocode} +% \end{macro} +% +% \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v4.01}{2004/8/30}{Variable bond length.} +% \changes{v5.01}{2013/04/02}{Bug fix} +% +% \begin{macro}{\Eastbond} +% \begin{macrocode} +\def\Eastbond{% +\@ifnextchar[{\E@stbond}{\E@stbond[]}} +\def\E@stbond[#1]{% +\yl@xdiff=-10 +\yl@ydiff=33 +\edef\@tempXX{#1}% +\ifx\@tempXX\empty +\@tempcnta=140\relax +\@tempcntb=140\relax +\else +\@tempcnta=#1\relax +\@tempcntb=#1\relax +\fi +\ifno@centeratom% +\advance\@tempcnta by50\relax +\advance\@tempcntb by50\relax +\fi +\edef\@tempcntavaluea{\the\@tempcnta}% +\@tempcnta=\@tempcntb +\ifno@centeratom\else%%added 2013/4/2 +\advance\@tempcnta by63\relax +\fi +\edef\@tempcntavalueb{\the\@tempcnta}% +\@tempcnta=\@tempcntb +\ifno@centeratom +\advance\@tempcnta by13\relax%%63-50=13added 2013/4/2 +\else +\advance\@tempcnta by50\relax +\fi +\edef\@tempcntavaluec{\the\@tempcnta}% +%\begin{sfpicture}(200,200)(0,0) +\begin{sfpicture}(0,0)(0,0) + \ifno@centeratom% + \if\@tmpb D\relax% +% \Multiput@Direct(0,-13)(0,26){2}{\line(1,0){\@tempcntavaluea}}% double bond right + \Multiput@Direct(0,-13)(0,26){2}{\Put@Line(0,0)(1,0){\@tempcntavaluea}}%2010/10/01 + \else\if\@tmpb T\relax% +% \Multiput@Direct(0,-20)(0,20){3}{\line(1,0){\@tempcntavaluea}}% double bond right + \Multiput@Direct(0,-20)(0,20){3}{\Put@Line(0,0)(1,0){\@tempcntavaluea}}%2010/10/01 + \else\if\@tmpb B%(B) beta <-- alpha 2002/6/13 + {\thicklines\Put@Line(0,0)(1,0){\@tempcntavaluea}}% single bond (alpha) + \else\if\@tmpb A%(A) alpha <-- beta 2002/6/13 + \dotorline(0,0)(1,0){\@tempcntavaluea}/(0,0)(\@tempcntavaluec,0)% + \else\if\@tmpb S% + \Put@Line(0,0)(1,0){\@tempcntavaluea}% + \else\if\@tmpb U% undefined + {% + \WaveBonds% + \Put@Line(0,0)(1,0){\@tempcntavaluea}% + }% + \else \Put@Line(0,0)(1,0){\@tempcntavaluea}% + \fi\fi\fi\fi\fi\fi% + \else% + \if\@tmpb D\relax% +% \Multiput@Direct(50,-13)(0,26){2}{\line(1,0){\@tempcntavaluea}}% double bond right + \Multiput@Direct(50,-13)(0,26){2}{\Put@Line(0,0)(1,0){\@tempcntavaluea}}%2010/10/01 + \else\if\@tmpb T\relax% +% \Multiput@Direct(50,-20)(0,20){3}{\line(1,0){\@tempcntavaluea}}% double bond right + \Multiput@Direct(50,-20)(0,20){3}{\Put@Line(0,0)(1,0){\@tempcntavaluea}}%2010/10/01 + \else\if\@tmpb B%(B) beta <-- alpha 2002/6/13 + {\thicklines\Put@Line(50,0)(1,0){\@tempcntavaluea}}% single bond (alpha) + \else\if\@tmpb A%(A) alpha <-- beta 2002/6/13 + \dotorline(50,0)(1,0){\@tempcntavaluea}/(50,0)(\@tempcntavaluec,0)% + \else\if\@tmpb S% + \Put@Line(50,0)(1,0){\@tempcntavaluea}% + \else\if\@tmpb U% undefined + {% + \WaveBonds% + \Put@Line(50,0)(1,0){\@tempcntavaluea}% + }% + \else \Put@Line(50,0)(1,0){\@tempcntavaluea}% + \fi\fi\fi\fi\fi\fi% + \fi% + \putratom{\@tempcntavalueb}{-33}{\@memberb}%==2 right substituent +\end{sfpicture}}%End of Eastbond +% \end{macrocode} +% \end{macro} +% +% \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v4.01}{2004/8/30}{Variable bond length.} +% \changes{v5.01}{2013/04/02}{Bug fix} +% +% \begin{macro}{\Southbond} +% \begin{macrocode} +\def\Southbond{% +\@ifnextchar[{\S@uthbond}{\S@uthbond[]}} +\def\S@uthbond[#1]{% +\yl@xdiff=40 +\yl@ydiff=95 +\def\@tempXX{#1}% +\ifx\@tempXX\empty +\@tempcnta=100\relax +\@tempcntb=100\relax +\else +\@tempcnta=#1\relax +\@tempcntb=#1\relax +\fi +\ifno@centeratom +\advance\@tempcnta by48\relax +\advance\@tempcntb by48\relax +\fi +\edef\@tempcntavaluea{\the\@tempcnta}% +\@tempcnta=-\@tempcntb +\ifno@centeratom\else%%added2013/4/2 +\advance\@tempcnta by-48\relax +\fi +\edef\@tempcntavalueb{\the\@tempcnta}% +\@tempcnta=-\@tempcntb +\ifno@centeratom +\advance\@tempcnta by-90\relax%%143-48=98 (-8) added2013/4/2 +\else +\advance\@tempcnta by-143\relax +\fi +\edef\@tempcntavaluec{\the\@tempcnta}% +%\begin{sfpicture}(100,300)(0,0) +\begin{sfpicture}(0,0)(0,0) + \ifno@centeratom% + \if\@tmpb D\relax% +% \Multiput@Direct(-13,0)(26,0){2}{\line(0,-1){\@tempcntavaluea}}% double bond down + \Multiput@Direct(-13,0)(26,0){2}{\Put@Line(0,0)(0,-1){\@tempcntavaluea}}%2010/10/01 + \else\if\@tmpb T\relax% +% \Multiput@Direct(-20,0)(20,0){3}{\line(0,-1){\@tempcntavaluea}}% double bond down + \Multiput@Direct(-20,0)(20,0){3}{\Put@Line(0,0)(0,-1){\@tempcntavaluea}}%2010/10/01 + \else\if\@tmpb B%(B) beta <-- alpha 2002/6/13 + {\thicklines\Put@Line(-8,0)(0,-1){\@tempcntavaluea}}% single bond (alpha) + \else\if\@tmpb A%(A) alpha <-- beta 2002/6/13 + \dotorline(0,0)(0,-1){\@tempcntavaluea}/(0,0)(0,\@tempcntavalueb)% + \else\if\@tmpb S% + \Put@Line(0,-0)(0,-1){\@tempcntavaluea}% + \else\if\@tmpb U% undefined + {% + \WaveBonds% + \Put@Line(0,-0)(0,-1){\@tempcntavaluea}% + }% + \else \Put@Line(0,0)(0,-1){\@tempcntavaluea}% + \fi\fi\fi\fi\fi\fi% + \else% + \if\@tmpb D\relax% +% \Multiput@Direct(-13,-48)(26,0){2}{\line(0,-1){\@tempcntavaluea}}% double bond down + \Multiput@Direct(-13,-48)(26,0){2}{\Put@Line(0,0)(0,-1){\@tempcntavaluea}}%2010/10/01 + \else\if\@tmpb T\relax% +% \Multiput@Direct(-20,-48)(20,0){3}{\line(0,-1){\@tempcntavaluea}}% double bond down + \Multiput@Direct(-20,-48)(20,0){3}{\Put@Line(0,0)(0,-1){\@tempcntavaluea}}%2010/10/01 + \else\if\@tmpb B%(B) beta <-- alpha 2002/6/13 + {\thicklines\Put@Line(-8,-48)(0,-1){\@tempcntavaluea}}% single bond (alpha) + \else\if\@tmpb A%(A) alpha <-- beta 2002/6/13 + \dotorline(0,-48)(0,-1){\@tempcntavaluea}/(0,-48)(0,\@tempcntavalueb)% + \else\if\@tmpb S% + \Put@Line(0,-48)(0,-1){\@tempcntavaluea}% + \else\if\@tmpb U% undefined + {% + \WaveBonds% + \Put@Line(0,-48)(0,-1){\@tempcntavaluea}% + }% + \else \Put@Line(0,-48)(0,-1){\@tempcntavaluea}% + \fi\fi\fi\fi\fi\fi% + \fi% + \putlratom{-40}{\@tempcntavaluec}{\@memberb}%==3 down substituent +\end{sfpicture}}%End of Southbond +% \end{macrocode} +% \end{macro} +% +% \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v4.01}{2004/8/30}{Variable bond length.} +% \changes{v5.01}{2013/04/02}{Bug fix} +% + +% \begin{macro}{\Westbond} +% \begin{macrocode} +\def\Westbond{% +\@ifnextchar[{\W@stbond}{\W@stbond[]}} +\def\W@stbond[#1]{% +\yl@xdiff=10 +\yl@ydiff=33 +\def\@tempXX{#1}% +\ifx\@tempXX\empty +\@tempcnta=140\relax +\@tempcntb=140\relax +\else +\@tempcnta=#1\relax +\@tempcntb=#1\relax +\fi +\ifno@centeratom +\advance\@tempcnta by50\relax +\advance\@tempcntb by50\relax +\fi +\edef\@tempcntavaluea{\the\@tempcnta}% +\@tempcnta=-\@tempcntb +\ifno@centeratom\else%%added 2013/4/2 +\advance\@tempcnta by-63\relax +\fi +\edef\@tempcntavalueb{\the\@tempcnta}% +\@tempcnta=\@tempcntb +\ifno@centeratom +\advance\@tempcnta by-13\relax%%63-50=13 added 2013/4/2 +\else% +\advance\@tempcnta by50\relax +\fi +\edef\@tempcntavaluec{\the\@tempcnta}% +%\begin{sfpicture}(100,300)(0,0) +\begin{sfpicture}(0,0)(0,0) + \ifno@centeratom% + \if\@tmpb D\relax% +% \Multiput@Direct(0,-13)(0,26){2}{\line(-1,0){\@tempcntavaluea}}% double bond left + \Multiput@Direct(0,-13)(0,26){2}{\Put@Line(0,0)(-1,0){\@tempcntavaluea}}%2010/10/01 + \else\if\@tmpb T\relax% +% \Multiput@Direct(0,-20)(0,20){3}{\line(-1,0){\@tempcntavaluea}}% double bond left + \Multiput@Direct(0,-20)(0,20){3}{\Put@Line(0,0)(-1,0){\@tempcntavaluea}}%2010/10/01 + \else\if\@tmpb B%(B) beta <-- alpha 2002/6/13 + {\thicklines\Put@Line(0,0)(-1,0){\@tempcntavaluea}}% single bond (alpha) + \else\if\@tmpb A%(A) alpha <-- beta 2002/6/13 +%% \dotorline(0,0)(-1,0){\@tempcntavaluea}/(\@tempcntavalueb,0)(-40,0)% + \dotorline(0,0)(-1,0){\@tempcntavaluea}/(0,0)(\@tempcntavalueb,0)%2013/04/02 + \else\if\@tmpb S% + \Put@Line(0,0)(-1,0){\@tempcntavaluea}% + \else\if\@tmpb U% undefine + {% + \WaveBonds% + \Put@Line(0,0)(-1,0){\@tempcntavaluea}% + }% + \else \Put@Line(0,0)(-1,0){\@tempcntavaluea}% + \fi\fi\fi\fi\fi\fi% + \else% + \if\@tmpb D\relax% +% \Multiput@Direct(-50,-13)(0,26){2}{\line(-1,0){\@tempcntavaluea}}% double bond left + \Multiput@Direct(-50,-13)(0,26){2}{\Put@Line(0,0)(-1,0){\@tempcntavaluea}}%2010/10/01 + \else\if\@tmpb T\relax% +% \Multiput@Direct(-50,-20)(0,20){3}{\line(-1,0){\@tempcntavaluea}}% double bond left + \Multiput@Direct(-50,-20)(0,20){3}{\Put@Line(0,0)(-1,0){\@tempcntavaluea}}%2010/10/01 + \else\if\@tmpb B%(B) beta <-- alpha 2002/6/13 + {\thicklines\Put@Line(-50,0)(-1,0){\@tempcntavaluea}}% single bond (alpha) + \else\if\@tmpb A%(A) alpha <-- beta 2002/6/13 +%% \dotorline(-50,0)(-1,0){\@tempcntavaluea}/(\@tempcntavalueb,0)(-40,0)% +% \dotorline(-50,0)(-1,0){\@tempcntavaluea}/(0,0)(\@tempcntavalueb,0)%%2013/04/02 + \dotorline(-50,0)(-1,0){\@tempcntavaluea}/(-40,0)(\@tempcntavalueb,0)%%2013/06/16 + \else\if\@tmpb S% + \Put@Line(-50,0)(-1,0){\@tempcntavaluea}% + \else\if\@tmpb U% undefined + {% + \WaveBonds% + \Put@Line(-50,0)(-1,0){\@tempcntavaluea}% + }% + \else \Put@Line(-50,0)(-1,0){\@tempcntavaluea}% + \fi\fi\fi\fi\fi\fi% + \fi% + \putlatom{\@tempcntavalueb}{-33}{\@memberb}%==4 left substituent +\end{sfpicture}}%End of Westbond +% \end{macrocode} +% \end{macro} +% +% \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% +% \begin{macro}{\NEBond} +% \begin{macrocode} +\def\NEBond{%degree 120 +\yl@xdiff=-9 +\yl@ydiff=13 +\begin{sfpicture}(100,300)(0,0) + \if\@tmpb D\relax% + \Put@Line(33,48)(5,3){121}% + \Put@Line(47,26)(5,3){121}%northeast double bond + \else\if\@tmpb T\relax% + \Put@Line(31,52)(5,3){121}% + \Put@Line(40,37)(5,3){121}% + \Put@Line(49,22)(5,3){121}%northeast triple bond +% \else\if\@tmpb A%(A) alpha + \else\if\@tmpb B%(B) beta + {\thicklines\Put@Line(40,47)(5,3){121}}% single bond (alpha) +% \else\if\@tmpb B%(B) beta + \else\if\@tmpb A%(A) alpha + \dotorline(40,47)(5,3){121}/(40,47)(161,120)% + \else\if\@tmpb S% + \Put@Line(40,47)(5,3){121}% + \else\if\@tmpb U% undefined + {% + \WaveBonds% + \Put@Line(40,47)(5,3){121}% + }% + \else \Put@Line(40,47)(5,3){121}% + \fi\fi\fi\fi\fi\fi% + \putratom{170}{107}{\@memberb}%==2 (northeast substituent) +\end{sfpicture}}% +% \end{macrocode} +% \end{macro} +% +% \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% +% \begin{macro}{\NEbond} +% \begin{macrocode} +\def\NEbond{%degree 90 +\yl@xdiff=-5 +\yl@ydiff=10 +\begin{sfpicture}(100,300)(0,0) + \if\@tmpb D\relax% + \Put@Line(31,46)(1,1){100}% + \Put@Line(49,28)(1,1){100}%northeast double bond + \else\if\@tmpb T\relax% + \Put@Line(27,50)(1,1){100}% + \Put@Line(40,37)(1,1){100}% + \Put@Line(53,24)(1,1){100}%northeast triple bond + \else\if\@tmpb B%(B) beta + {\thicklines\Put@Line(40,47)(1,1){100}}% single bond (alpha) + \else\if\@tmpb A%(A) alpha + \dotorline(40,47)(1,1){100}/(40,47)(140,147)% + \else\if\@tmpb S% + \Put@Line(40,47)(1,1){100}% + \else\if\@tmpb U% undefined + {% + \WaveBonds% + \Put@Line(40,47)(1,1){100}% + }% + \else \Put@Line(40,47)(1,1){100}% + \fi\fi\fi\fi\fi\fi% + \putratom{145}{137}{\@memberb}%==2 (northeast substituent) +\end{sfpicture}}% +% \end{macrocode} +% \end{macro} +% +% \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% +% \begin{macro}{\SEBond} +% \begin{macrocode} +\def\SEBond{%degree 120 +\yl@xdiff=-9 +\yl@ydiff=67 +\begin{sfpicture}(100,300)(0,0) + \if\@tmpb D\relax% + \Put@Line(33,-48)(5,-3){121}% + \Put@Line(47,-26)(5,-3){121}%southeast double bond + \else\if\@tmpb T\relax% + \Put@Line(31,-52)(5,-3){121}% + \Put@Line(40,-37)(5,-3){121}% + \Put@Line(49,-22)(5,-3){121}%southeast triple bond + \else\if\@tmpb B%(B) beta + {\thicklines\Put@Line(40,-47)(5,-3){121}}% single bond (alpha) + \else\if\@tmpb A%(A) alpha + \dotorline(40,-47)(5,-3){121}/(40,-47)(161,-120)% + \else\if\@tmpb S% + \Put@Line(40,-47)(5,-3){121}% + \else\if\@tmpb U% undefined + {% + \WaveBonds% + \Put@Line(40,-47)(5,-3){121}% + }% + \else \Put@Line(40,-47)(5,-3){121}% + \fi\fi\fi\fi\fi\fi% + \putratom{170}{-187}{\@memberb}%==2 (southeast substituent) +\end{sfpicture}}% +% \end{macrocode} +% \end{macro} +% +% \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% +% \begin{macro}{\SEbond} +% \begin{macrocode} +\def\SEbond{%degree 90 +\yl@xdiff=-5 +\yl@ydiff=56 +\begin{sfpicture}(100,300)(0,0) + \if\@tmpb D\relax% + \Put@Line(31,-46)(1,-1){100}% + \Put@Line(49,-28)(1,-1){100}%southeast double bond + \else\if\@tmpb T\relax% + \Put@Line(27,-50)(1,-1){100}% + \Put@Line(40,-37)(1,-1){100}% + \Put@Line(53,-24)(1,-1){100}%southeast triple bond + \else\if\@tmpb B%(B) beta + {\thicklines\Put@Line(53,-47)(1,-1){100}}% single bond (alpha) + \else\if\@tmpb A%(A) alpha + \dotorline(40,-47)(1,-1){100}/(40,-47)(140,-147)% + \else\if\@tmpb S% + \Put@Line(40,-47)(1,-1){100}% + \else\if\@tmpb U% undefined + {% + \WaveBonds% + \Put@Line(40,-47)(1,-1){100}% + }% + \else \Put@Line(40,-47)(1,-1){100}% + \fi\fi\fi\fi\fi\fi% + \putratom{145}{-203}{\@memberb}%==3 (southeast substituent) +\end{sfpicture}}% +% \end{macrocode} +% \end{macro} +% +% \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% +% \begin{macro}{\NWBbond} +% \begin{macrocode} +\def\NWBond{% +\begin{sfpicture}(100,300)(0,0) +\yl@xdiff=9 +\yl@ydiff=13 + \if\@tmpb D\relax% + \Put@Line(-59,48)(-5,3){121}% + \Put@Line(-73,26)(-5,3){121}%northwest double bond + \else\if\@tmpb T\relax% + \Put@Line(-57,52)(-5,3){121}% + \Put@Line(-66,37)(-5,3){121}% + \Put@Line(-75,22)(-5,3){121}%northwest triple bond + \else\if\@tmpb B%(B) beta + {\thicklines\Put@Line(-66,47)(-5,3){121}}% single bond (alpha) + \else\if\@tmpb A%(A) alpha + \dotorline(-66,47)(-5,3){121}/(-66,47)(-187,120)% + \else\if\@tmpb S% + \Put@Line(-66,47)(-5,3){121}% + \else\if\@tmpb U% undefined + {% + \WaveBonds% + \Put@Line(-66,47)(-5,3){121}% + }% + \else \Put@Line(-66,47)(-5,3){121}% + \fi\fi\fi\fi\fi\fi% + \putlatom{-196}{107}{\@memberb}%==2 (northwest substituent) +\end{sfpicture}}% +% \end{macrocode} +% \end{macro} +% +% \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% +% \begin{macro}{\NWbond} +% \begin{macrocode} +\def\NWbond{% +\begin{sfpicture}(100,300)(0,0) +\yl@xdiff=13 +\yl@ydiff=10 + \if\@tmpb D\relax% + \Put@Line(-41,46)(-1,1){100}% + \Put@Line(-59,28)(-1,1){100}%northwest double bond + \else\if\@tmpb T\relax% + \Put@Line(-37,50)(-1,1){100}% + \Put@Line(-50,37)(-1,1){100}% + \Put@Line(-63,24)(-1,1){100}%northwest triple bond + \else\if\@tmpb B%(B) beta + {\thicklines\Put@Line(-50,47)(-1,1){100}}% single bond (alpha) + \else\if\@tmpb A%(A) alpha + \dotorline(-50,47)(-1,1){100}/(-50,47)(-137,147)% + \else\if\@tmpb S% + \Put@Line(-50,47)(-1,1){100}% + \else\if\@tmpb U% undefined + {% + \WaveBonds% + \Put@Line(-50,47)(-1,1){100}% + }% + \else \Put@Line(-50,47)(-1,1){100}% + \fi\fi\fi\fi\fi\fi% + \putlatom{-163}{137}{\@memberb}%==2 (northwest substituent) +\end{sfpicture}}% +% \end{macrocode} +% \end{macro} +% +% \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% +% \begin{macro}{\SWBond} +% \begin{macrocode} +\def\SWBond{% +\yl@xdiff=9 +\yl@ydiff=67 +\begin{sfpicture}(100,300)(0,0) + \if\@tmpb D\relax% + \Put@Line(-59,-48)(-5,-3){121}% + \Put@Line(-73,-26)(-5,-3){121}%southwest double bond + \else\if\@tmpb T\relax% + \Put@Line(-57,-52)(-5,-3){121}% + \Put@Line(-66,-37)(-5,-3){121}% + \else\if\@tmpb B%(B) beta + \Put@Line(-75,-22)(-5,-3){121}%southwest triple bond + {\thicklines\Put@Line(-66,-47)(-5,-3){121}}% single bond (alpha) + \else\if\@tmpb A%(A) alpha + \dotorline(-66,-47)(-5,-3){121}/(-66,-47)(-187,-120)% + \else\if\@tmpb S% + \Put@Line(-66,-47)(-5,-3){121}% + \else\if\@tmpb U% undefined + {% + \WaveBonds% + \Put@Line(-66,-47)(-5,-3){121}% + }% + \else \Put@Line(-66,-47)(-5,-3){121}% + \fi\fi\fi\fi\fi\fi% + \putlatom{-196}{-187}{\@memberb}%==2 (southwest substituent) +\end{sfpicture}}% +% \end{macrocode} +% \end{macro} +% +% \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% +% \begin{macro}{\SWbond} +% \begin{macrocode} +\def\SWbond{% +\yl@xdiff=13 +\yl@ydiff=56 +\begin{sfpicture}(100,300)(0,0) + \if\@tmpb D\relax% + \Put@Line(-41,-46)(-1,-1){100}% + \Put@Line(-59,-28)(-1,-1){100}%southwest double bond + \else\if\@tmpb T\relax% + \Put@Line(-37,-50)(-1,-1){100}% + \Put@Line(-50,-37)(-1,-1){100}% + \Put@Line(-63,-24)(-1,-1){100}%southwest triple bond + \else\if\@tmpb B%(B) beta + {\thicklines\Put@Line(-50,-47)(-1,-1){100}}% single bond (alpha) + \else\if\@tmpb A%(A) alpha + \dotorline(-50,-47)(-1,-1){100}/(-50,-47)(-137,-147)% + \else\if\@tmpb S% + \Put@Line(-50,-47)(-1,-1){100}% + \else\if\@tmpb U% undefined + {% + \WaveBonds% + \Put@Line(-50,-47)(-1,-1){100}% + }% + \else \Put@Line(-50,-47)(-1,-1){100}% + \fi\fi\fi\fi\fi\fi% + \putlatom{-163}{-203}{\@memberb}%==3 (southwest substituent) +\end{sfpicture}}% +% \end{macrocode} +% \end{macro} +% +% \changes{v1.02}{1998/10/20}{New command: \cs{NEBOND}} +% \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% +% \begin{macro}{\NEBOND} +% \begin{macrocode} +\def\NEBOND{%degree 120 +\yl@xdiff=-1 +\yl@ydiff=-10 +\begin{sfpicture}(100,300)(0,0) + \if\@tmpb D\relax% + \Put@Line(48,33)(3,5){72}% + \Put@Line(26,47)(3,5){72}%northeast double bond + \else\if\@tmpb T\relax% + \Put@Line(52,31)(3,5){72}% + \Put@Line(37,40)(3,5){72}% + \Put@Line(22,49)(3,5){72}%northeast triple bond + \else\if\@tmpb B%(B) beta + {\thicklines\Put@Line(40,47)(3,5){72}}% single bond (alpha) + \else\if\@tmpb A%(A) alpha + \dotorline(47,40)(3,5){72}/(47,40)(120,161)% + \else\if\@tmpb S% + \Put@Line(47,40)(3,5){72}% + \else\if\@tmpb U% undefined + {% + \WaveBonds% + \Put@Line(47,40)(3,5){72}% + }% + \else \Put@Line(47,40)(3,5){72}% + \fi\fi\fi\fi\fi\fi% + \putratom{120}{170}{\@memberb}%==2 (northeast substituent) +\end{sfpicture}}% +% \end{macrocode} +% \end{macro} +% +% \changes{v1.02}{1998/10/20}{New command: \cs{SEBOND}} +% \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% +% \begin{macro}{\SEBOND} +% \begin{macrocode} +\def\SEBOND{%degree 120 +\yl@xdiff=-1 +\yl@ydiff=70 +\begin{sfpicture}(100,300)(0,0) + \if\@tmpb D\relax% + \Put@Line(48,-33)(3,-5){72}% + \Put@Line(26,-47)(3,-5){72}%southeast double bond + \else\if\@tmpb T\relax% + \Put@Line(52,-31)(3,-5){72}% + \Put@Line(37,-40)(3,-5){72}% + \Put@Line(22,-49)(3,-5){72}%southeast triple bond + \else\if\@tmpb B%(B) beta + {\thicklines\Put@Line(47,-40)(3,-5){72}}% single bond (alpha) + \else\if\@tmpb A%(A) alpha + \dotorline(47,-40)(3,-5){72}/(47,-40)(120,-161)% + \else\if\@tmpb S% + \Put@Line(47,-40)(3,-5){72}% + \else\if\@tmpb U% undefined + {% + \WaveBonds% + \Put@Line(47,-40)(3,-5){72}% + }% + \else \Put@Line(47,-40)(3,-5){72}% + \fi\fi\fi\fi\fi\fi% + \putratom{120}{-230}{\@memberb}%==2 (southeast substituent) +\end{sfpicture}}% +% \end{macrocode} +% \end{macro} +% +% \changes{v1.02}{1998/10/20}{New command: \cs{NWBOND}} +% \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% +% \begin{macro}{\NWBOND} +% \begin{macrocode} +\def\NWBOND{% +\yl@xdiff=1 +\yl@ydiff=-10 +\begin{sfpicture}(100,300)(0,0) + \if\@tmpb D\relax% + \Put@Line(-48,33)(-3,5){72}% + \Put@Line(-26,47)(-3,5){72}%northwest double bond + \else\if\@tmpb T\relax% + \Put@Line(-52,31)(-3,5){72}% + \Put@Line(-37,40)(-3,5){72}% + \Put@Line(-22,49)(-3,5){72}%northwest triple bond + \else\if\@tmpb B%(B) beta + {\thicklines\Put@Line(-40,47)(-3,5){72}}% single bond (alpha) + \else\if\@tmpb A%(A) alpha + \dotorline(-47,40)(-3,5){72}/(-47,40)(-120,161)% + \else\if\@tmpb S% + \Put@Line(-47,40)(-3,5){72}% + \else\if\@tmpb U% undefined + {% + \WaveBonds% + \Put@Line(-47,40)(-3,5){72}% + }% + \else \Put@Line(-47,40)(-3,5){72}% + \fi\fi\fi\fi\fi\fi% + \putlatom{-120}{170}{\@memberb}%==2 (northwest substituent) +\end{sfpicture}}% +% \end{macrocode} +% \end{macro} +% +% \changes{v1.02}{1998/10/20}{New command: \cs{SWBOND}} +% \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% +% \begin{macro}{\SWBOND} +% \begin{macrocode} +\def\SWBOND{% +\yl@xdiff=1 +\yl@ydiff=70 +\begin{sfpicture}(100,300)(0,0) + \if\@tmpb D\relax% + \Put@Line(-48,-33)(-3,-5){72}% + \Put@Line(-26,-47)(-3,-5){72}%southwest double bond + \else\if\@tmpb T\relax% + \Put@Line(-52,-31)(-3,-5){72}% + \Put@Line(-37,-40)(-3,-5){72}% + \Put@Line(-22,-49)(-3,-5){72}%southwest triple bond + \else\if\@tmpb B%(B) beta + {\thicklines\Put@Line(-47,-40)(-3,-5){72}}% single bond (alpha) + \else\if\@tmpb A%(A) alpha + \dotorline(-47,-40)(-3,-5){72}/(-47,-40)(-120,-161)% + \else\if\@tmpb S% + \Put@Line(-47,-40)(-3,-5){72}% + \else\if\@tmpb U% undefined + {% + \WaveBonds% + \Put@Line(-47,-40)(-3,-5){72}% + }% + \else \Put@Line(-47,-40)(-3,-5){72}% + \fi\fi\fi\fi\fi\fi% + \putlatom{-120}{-230}{\@memberb}%==2 (southwest substituent) +\end{sfpicture}}% +% \end{macrocode} +% \end{macro} +% +% \section{Tetrahedral unit} +% +% The macro |\tetrahedral| typesets a compound of tetravalency. +% The following numbering is adopted in this macro. +% +% \begin{verbatim} +% ******************** +% * tetrahedral unit * +% ******************** +% +% 1 +% +% | +% 2 -- 0 -- 4 0 <== the original point +% | +% +% 3 +% \end{verbatim} +% +% This macro has an argument |SUBSLIST| as well as an optional +% argument |AUXLIST|. +% +% \begin{verbatim} +% \tetrahedral[AUXLIST]{SUBSLIST}<L1,L2,L3,L4> +% \end{verbatim} +% +% The arugument |AUXLIST| designates an character on the central +% atom of the formula drawn by this macro. It can be used a plus +% or minus charge on the center. +% +% \begin{verbatim} +% AUXLIST = +% +% {0+} : + charge (or another one chararacter) on the center +% \end{verbatim} +% +% The arugument |SUBLIST| designates a set of substitutients. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 4 +% +% nT : triple bond at n-atom +% nD : double bond at n-atom +% n or nS : single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% +% for 0 : cetral atom (e.g. 0==C) +% \end{verbatim} +% +% +% The arguments |Ln| (n = 1, 2, 3, 4) represents the bond length +% of the bond 0--n (n = 1, 2, 3, 4). This is used to realize variable +% bond lengths. The vacant for the |Ln| depicts a bond of the standard +% bond length. +% \changes{v4.01}{2004/8/30}{Variable bond length.} +% +% +% \begin{verbatim} +% e.g. +% +% \tetrahedral{1==Cl;2==F} +% \tetrahedral{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% \changes{v1.02}{1998/10/31}{Adding \cs{yltetrahedralposition}, +% \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% +% \changes{v4.01}{2004/8/30}{Variable sized central atoms} +% \changes{v4.05}{2009/11/07}{bug fix: @tetrahedral to @@tetrahedral} +% \changes{v5.00}{2010/10/01}{for bond coloring} +% +% \begin{macro}{\tetrahedral} +% \begin{macro}{\@tetrahedral} +% \begin{macrocode} +\def\tetrahedral{\@ifnextchar[{\@tetrahedral[r}{\@tetrahedral[r]}} +\def\@tetrahedral#1]#2{% +\@ifnextchar<{\@@tetrahedral#1]{#2}}{\@@tetrahedral#1]{#2}<,,,>}}%bug @ added 2009/11/07 +\def\@@tetrahedral#1]#2<#3,#4,#5,#6>{% +\@reset@ylsw% +\West@bondfalse +\East@bondfalse +\centralatomcheck{#2}% +\yltetrahedralposition{#2}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(600,600)(-300,-300){tetrahedral}%2002/4/30 by S. Fujita +(300,300)% +\@tfor\member:=#1\do{% + \expandafter\twoch@@r\member{}{}% + \if\@@tmpa 0\relax {\putratom{47}{50}{\scriptsize\@@tmpb}}\fi}% +%%%%%%%%%%%%%%%%%%%%%% +%setting central atom% +%%%%%%%%%%%%%%%%%%%%%% +\@tempdima=0pt +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa%central atom +\setbox9=\hbox{\@memberb}% +\ifdim\wd9<0.72em +\@tempdima=0.72em +{\putlratom{-40}{-33}{\hbox to.72em{\hss\@memberb\hss}}}% +\else +\ifWest@bond +\@tempdima=\wd9 +{\putlratom{-40}{-33}{\hbox to.72em{\hss\@memberb}}}%central atom +%%%\global\West@bondfalse +\else +\@tempdima=\wd9 +{\putlratom{-40}{-33}{\hbox to.72em{\@memberb\hss}}}%central atom +\fi\fi +\else%%no action +\fi%end of ifcase% +\fi\fi}% +%%%%%%%%%%%%%%%%%%%%%% +%%setting four bonds%% +%%%%%%%%%%%%%%%%%%%%%% +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa +\or +\ifWest@bond +\setBScolor{\Put@Direct(0,0){\kern-\@tempdima\kern0.72em\Northbond[#3]}}% +%\Put@Direct(0,0){\kern-\@tempdima\kern0.72em\Northbond[#3]}% +\else +\setBScolor{\Put@Direct(0,0){\Northbond[#3]}}% +%\Put@Direct(0,0){\Northbond[#3]}% +\fi +\or{% +\ifWest@bond +\setBScolor{\Put@Direct(0,0){\kern-\@tempdima\kern0.72em\Westbond[#4]}}% +%\Put@Direct(0,0){\kern-\@tempdima\kern0.72em\Westbond[#4]}% +\else +\setBScolor{\Put@Direct(0,0){\Westbond[#4]}}% +%\Put@Direct(0,0){\Westbond[#4]}% +\fi +}% +\or +\ifWest@bond +\setBScolor{\Put@Direct(0,0){\kern-\@tempdima\kern0.72em\Southbond[#5]}}% +%\Put@Direct(0,0){\kern-\@tempdima\kern0.72em\Southbond[#5]}% +\else +\setBScolor{\Put@Direct(0,0){\Southbond[#5]}}% +%\Put@Direct(0,0){\Southbond[#5]}% +\fi +\or{% +\ifno@centeratom% +\setBScolor{\Put@Direct(0,0){\Eastbond[#6]}}% +%\Put@Direct(0,0){\Eastbond[#6]}% +\else% +%\advance\@tempdima by-0.72em +%\Put@Direct(0,0){\kern\@tempdima\Eastbond[#6]}% +\setBScolor{\Put@Direct(0,0){\kern\@tempdima\kern-0.72em\Eastbond[#6]}}% +%\Put@Direct(0,0){\kern\@tempdima\kern-0.72em\Eastbond[#6]}% +\fi}% +\fi%end of ifcase +\fi\fi}% +\end{ShiftPicEnvB}% +\West@bondfalse +\East@bondfalse +}%end of macro tetrahedral +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \changes{v4.01}{2004/8/30}{Newly added macro: +% \cs{centralatomcheck}} +% +% \begin{macro}{\centralatomcheck} +% \begin{macrocode} +\def\centralatomcheck#1{% +\no@centeratomtrue% +\@forsemicol\member:=#1\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifcase\@tmpa\relax% +\no@centeratomfalse% +\else%no action +\fi\fi% +}} +% \end{macrocode} +% \end{macro} +% +% The command |\yltetrahedralposition| is used in +% |\tetrahedral| to adjust a substitution position. +% \changes{v1.02}{1998/10/20}{Newly added command: +% \cs{yltetrahedralposition}} +% \changes{v4.01}{2004/8/30}{Newly added switches: +% \cs{ifEast@bond} and \cs{ifWest@bond}} +% \changes{v5.01}{2013/7/30}{Bug fix} +% +% \begin{macro}{\yltetrahedralposition} +% \begin{macrocode} +\newif\ifEast@bond +\newif\ifWest@bond +\def\yltetrahedralposition#1{% +\@@ylswfalse%%%\@reset@ylsw +\reset@@yl%%2013/07/30bug fix +\West@bondfalse +\East@bondfalse +\@forsemicol\member:=#1\do{% +\if@@ylsw\else +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw% +\ifcase\@tmpa% + \or% + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%N subst. on 1 + \else% + \gdef\@ylii{0}\gdef\@yli{-52}\global\@ylswtrue%N subst. on 1 + \fi% + \or% + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% + \else% + \gdef\@ylii{52}\gdef\@yli{0}\global\@ylswtrue% + \fi% + \East@bondtrue%W subst. on 1 + \or% + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%S subst. on 1 + \else% + \gdef\@ylii{0}\gdef\@yli{52}\global\@ylswtrue%S subst. on 1 + \fi% + \or% + \ifno@centeratom% +% \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%?????? + \gdef\@ylii{-72}\gdef\@yli{0}\global\@ylswtrue%?????? + \else% + \gdef\@ylii{-52}\gdef\@yli{0}\global\@ylswtrue% + \fi% + \West@bondtrue%E subst. on 1 +\fi%end of ifcase +\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% \section{Divalenth unit} +% +% The command |\divalenth| produces a length-variable divalent unit. +% \changes{v2.00}{1998/12/14}{New command: \cs{divalenth}} +% \changes{v5.00}{2010/10/01}{for bond coloring} +% +% \begin{verbatim} +% ****************** +% * Divalenth unit * +% ****************** +% +% +% +% 1 -- (group) -- 2 0 <== the original point +% +% \end{verbatim} +% +% This macro has an argument |SUBSLIST| as well as an optional +% argument |GROUP|. +% +% \begin{verbatim} +% \divalenth{GROUP}{SUBSLIST} +% \end{verbatim} +% +% The arugument |GROUP| designates a character strings representing +% a divalent group. The locant number is fixed to be zero. +% +% The arugument |SUBLIST| designates a set of substitutients. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 4 +% +% nT : triple bond at n-atom +% nD : double bond at n-atom +% n or nS : single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% +% for 0 : cetral atom (e.g. 0==C) +% \end{verbatim} +% +% +% \begin{macro}{\divalenth} +% \begin{macrocode} +\def\divalenth#1#2{% +\@reset@ylsw% +\yldivalenthposition{#1}{#2}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(600,400)(-300,-200){\divalenth}%2002/4/30 by S. Fujita +(300,200)% +{\expandafter\@m@mb@r#1;\relax + \putratom{-30}{-33}{\@memberb}}% +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa +\or\setBScolor{\Put@Direct(0,0){\Westbond}}% +%\Put@Direct(0,0){\Westbond}% +\or\setBScolor{\Put@Direct(\the\@tempcnta,0){\Eastbond}}% +%\Put@Direct(\the\@tempcnta,0){\Eastbond}% +\fi%end of ifcase +\fi\fi}% +\end{ShiftPicEnvB}% +}%end of macro tetrahedral +% \end{macrocode} +% \end{macro} +% +% The command |\yldivalenthposition| is used in +% |\tetrahedral| to adjust a substitution position. +% \changes{v2.00}{1998/12/14}{Newly added command: +% \cs{yldivalenthposition}} +% +% \begin{macro}{\yldivalenthposition} +% \begin{macrocode} +\def\yldivalenthposition#1#2{% +{\expandafter\@m@mb@r#1;\relax + \setbox0=\hbox{\@memberb}% + \@tempcnta=\wd0 + \@tempcntb=\unitlength + \divide\@tempcnta by\@tempcntb + \global\advance\@tempcnta by-62% + \@tempcntb=\@tempcnta \global\advance\@tempcntb by50\relax + }% +\@@ylswfalse% +\@forsemicol\member:=#2\do{% +\if@@ylsw\else +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpa + \or \gdef\@ylii{50}\gdef\@yli{0}\global\@ylswtrue%W subst. on 1 + \or \edef\@ylii{-\the\@tempcntb}\gdef\@yli{0}\global\@ylswtrue%E subst. on 1 +\fi%end of ifcase +\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% \section{Trigonal unit} +% \subsection{Right-hand trigonal unit (narrow type)} +% +% The macro |\rtrigonal| typesets a compound of trivalency. +% The following numbering is adopted in this macro. +% The two right-hand bonds form an angle of 90$^{\circ}$ (narrow type), +% while the left-hand bond is typeset horizontally. +% +% \begin{verbatim} +% ************************* +% * trigonal unit (right) * +% ************************* +% +% 3 +% / +% / +% 1 --- 0 90 0 <== the original point +% ` +% ` +% 2 +% \end{verbatim} +% +% This macro has an argument |SUBSLIST| as well as an optional +% argument |AUXLIST|. +% +% \begin{verbatim} +% \rtrigonal[AUXLIST]{SUBSLIST} +% \end{verbatim} +% +% The arugument |AUXLIST| designates an character on the central +% atom of the formula drawn by this macro. It can be used a plus +% or minus charge on the center. +% +% \begin{verbatim} +% AUXLIST = +% +% {0+}: + charge (or another one chararacter) on the center +% \end{verbatim} +% +% The arugument |SUBLIST| designates a set of substitutients. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 3 +% +% nT : triple bond at n-atom +% nD : double bond at n-atom +% n or nS : single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% +% for 0 : cetral atom (e.g. 0==C) +% \end{verbatim} +% +% \begin{verbatim} +% e.g. +% +% \rtrigonal{1==Cl;2==F} +% \rtrigonal{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% +% \changes{v1.02}{1998/10/31}{Adding \cs{ylrtrigonalposition}, +% \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v5.00}{2010/10/01}{for bond coloring} +% +% \begin{macro}{\rtrigonal} +% \begin{macro}{\@rtrigonal} +% \begin{macrocode} +\def\rtrigonal{\@ifnextchar[{\@rtrigonal[r}{\@rtrigonal[r]}} +\def\@rtrigonal#1]#2{% +\begingroup +\@reset@ylsw% +\West@bondfalse +\East@bondfalse +\ylrtrigonalposition{#2}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(600,600)(-300,-300){rtrigonal}%2002/4/30 by S. Fujita +(300,300)% +\@tfor\member:=#1\do{% + \expandafter\twoch@@r\member{}{}% + \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}% +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa {\putlratom{-40}{-33}{\@memberb}}%central atom +\or\setBScolor{\Put@Direct(0,0){\Westbond}}% +%\Put@Direct(0,0){\Westbond}% +\or\setBScolor{\Put@Direct(0,0){\SEbond}}% +%\Put@Direct(0,0){\SEbond}% +\or\setBScolor{\Put@Direct(0,0){\NEbond}}% +%\Put@Direct(0,0){\NEbond}% +\fi%end of ifcase +\fi\fi}% +\end{ShiftPicEnvB}% +\endgroup}%end of macro rtrigonal +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The command |\ylrtrigonalposition| is used in +% |\rtrigonal| to adjust a substitution position. +% \changes{v1.02}{1998/10/20}{Newly added command: +% \cs{ylrtrigonalposition}} +% +% \begin{macro}{\ylrtrigonalposition} +% \begin{macrocode} +\def\ylrtrigonalposition#1{% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpa + \or \gdef\@ylii{52}\gdef\@yli{0}\global\@ylswtrue% W subst. on 1 + \or \gdef\@ylii{-40}\gdef\@yli{47}\global\@ylswtrue% SE subst. on 1 + \or \gdef\@ylii{-40}\gdef\@yli{-47}\global\@ylswtrue% NE subst. on 1 +\fi%end of ifcase +\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% \subsection{Right-hand trigonal unit (broad type)} +% +% The macro |\Rtrigonal| typesets a compound of trivalency. +% The following numbering is adopted in this macro. +% The two right-hand bonds form an angle of 120$^{\circ}$ (broad type), +% while the left-hand bond is typeset horizontally. +% \changes{v1.02}{1998/10/20}{New command: \cs{Rtrigonal}} +% \changes{v5.00}{2010/10/01}{for bond coloring} +% +% \begin{verbatim} +% ************************* +% * trigonal unit (right) * +% ************************* +% +% 3 +% / +% / +% 1 --- 0 120 0 <== the original point +% ` +% ` +% 2 +% \end{verbatim} +% +% This macro has an argument |SUBSLIST| as well as an optional +% argument |AUXLIST|. +% +% \begin{verbatim} +% \rtrigonal[AUXLIST]{SUBSLIST} +% \end{verbatim} +% +% The arugument |AUXLIST| designates an character on the central +% atom of the formula drawn by this macro. It can be used a plus +% or minus charge on the center. +% +% \begin{verbatim} +% AUXLIST = +% +% {0+}: + charge (or another one chararacter) on the center +% \end{verbatim} +% +% The arugument |SUBLIST| designates a set of substitutients. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 3 +% +% nT : triple bond at n-atom +% nD : double bond at n-atom +% n or nS : single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% +% for 0 : cetral atom (e.g. 0==C) +% \end{verbatim} +% +% \begin{verbatim} +% e.g. +% +% \rtrigonal{1==Cl;2==F} +% \rtrigonal{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% +% \changes{v1.02}{1998/10/31}{Adding \cs{ylRtrigonalposition}, +% \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% +% \begin{macro}{\Rtrigonal} +% \begin{macro}{\@Rtrigonal} +% \begin{macrocode} +\def\Rtrigonal{\@ifnextchar[{\@Rtrigonal[r}{\@Rtrigonal[r]}} +\def\@Rtrigonal#1]#2{% +\begingroup +\@reset@ylsw% +\West@bondfalse +\East@bondfalse +\ylRtrigonalposition{#2}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(600,600)(-300,-300){Rtrigonal}%2002/4/30 by S. Fujita +(300,300)% +\@tfor\member:=#1\do{% + \expandafter\twoch@@r\member{}{}% + \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}% +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa {\putlratom{-40}{-33}{\@memberb}}%central atom +\or\setBScolor{\Put@Direct(0,0){\Westbond}}% +%\Put@Direct(0,0){\Westbond}% +\or\setBScolor{\Put@Direct(0,0){\SEBOND}}% +%\Put@Direct(0,0){\SEBOND}% +\or\setBScolor{\Put@Direct(0,0){\NEBOND}}% +%\Put@Direct(0,0){\NEBOND}% +\fi%end of ifcase +\fi\fi}% +\end{ShiftPicEnvB}% +\endgroup}%end of macro Rtrigonal +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The command |\ylRtrigonalposition| is used in +% |\Rtrigonal| to adjust a substitution position. +% \changes{v1.02}{1998/10/20}{Newly added command: +% \cs{ylRtrigonalposition}} +% +% \begin{macro}{\ylRtrigonalposition} +% \begin{macrocode} +\def\ylRtrigonalposition#1{% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpa + \or \gdef\@ylii{52}\gdef\@yli{0}\global\@ylswtrue% W subst. on 1 + \or \gdef\@ylii{-47}\gdef\@yli{40}\global\@ylswtrue% SE subst. on 1 + \or \gdef\@ylii{-47}\gdef\@yli{-40}\global\@ylswtrue% NE subst. on 1 +\fi%end of ifcase +\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% \subsection{Left-hand trigonal unit (narrow type)} +% +% The macro |\ltrigonal| typesets a compound of trivalency. +% The following numbering is adopted in this macro. +% The two left-hand bonds form an angle of 90$^{\circ}$ (narrow type), +% while the right-hand bond is typeset horizontally. +% \changes{v5.00}{2010/10/01}{for bond coloring} +% +% \begin{verbatim} +% ************************ +% * trigonal unit (left) * +% ************************ +% +% 2 +% ` +% ` +% 90 0 --- 1 0 <== the original point +% / +% / +% 3 +% \end{verbatim} +% +% This macro has an argument |SUBSLIST| as well as an optional +% argument |AUXLIST|. +% +% \begin{verbatim} +% \ltrigonal[AUXLIST]{SUBSLIST} +% \end{verbatim} +% +% The arugument |AUXLIST| designates an character on the central +% atom of the formula drawn by this macro. It can be used a plus +% or minus charge on the center. +% +% \begin{verbatim} +% AUXLIST = +% +% {0+} : + charge (or another one chararacter) on the center +% \end{verbatim} +% +% The arugument |SUBLIST| designates a set of substitutients. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 3 +% +% nT : triple bond at n-atom +% nD : double bond at n-atom +% n or nS : single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% +% for 0 : cetral atom (e.g. 0==C) +% \end{verbatim} +% +% \begin{verbatim} +% e.g. +% +% \ltrigonal{1==Cl;2==F} +% \ltrigonal{0==C;1==Cl;2==F;3==CH$_{3}$} +% \end{verbatim} +% \changes{v1.02}{1998/10/31}{Adding \cs{ylltrigonalposition}, +% \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v4.01}{2004/8/30}{Variable sized central atoms} +% \changes{v5.00}{2010/10/01}{for bond coloring} +% +% \begin{macro}{\ltrigonal} +% \begin{macro}{\@ltrigonal} +% \begin{macrocode} +\def\ltrigonal{\@ifnextchar[{\@ltrigonal[r}{\@ltrigonal[r]}} +\def\@ltrigonal#1]#2{% +\begingroup +\@reset@ylsw% +\West@bondfalse +\East@bondfalse +\ylltrigonalposition{#2}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(600,600)(-300,-300){ltrigonal}%2002/4/30 by S. Fujita +(300,300)% +\@tfor\member:=#1\do{% + \expandafter\twoch@@r\member{}{}% + \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}% +\@tempdima=0pt +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa +\setbox9=\hbox{\@memberb}% +\ifdim\wd9<0.72em +\@tempdima=0.72em +{\putlratom{-40}{-33}{\hbox to.72em{\hss\@memberb\hss}}}%central atom +\else +\ifWest@bond +\@tempdima=\wd9 +{\putlratom{-40}{-33}{\hbox to.72em{\hss\@memberb}}}%central atom +\else +\@tempdima=\wd9 +{\putlratom{-40}{-33}{\hbox to.72em{\@memberb\hss}}}%central atom +\fi\fi +\else%%no action +\fi%end of ifcase +\fi\fi}% +%%%%% +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa +\or{% +\advance\@tempdima by-0.72em +\setBScolor{\Put@Direct(0,0){\kern\@tempdima\Eastbond}}}% +%\Put@Direct(0,0){\kern\@tempdima\Eastbond}}% +\or{% +\ifWest@bond +\setBScolor{\Put@Direct(0,0){\kern-\@tempdima\kern0.72em\NWbond}}% +%\Put@Direct(0,0){\kern-\@tempdima\kern0.72em\NWbond}% +\else +\setBScolor{\Put@Direct(0,0){\NWbond}}% +%\Put@Direct(0,0){\NWbond}% +\fi +}% +\or{% +\ifWest@bond +\setBScolor{\Put@Direct(0,0){\kern-\@tempdima\kern0.72em\SWbond}}% +%\Put@Direct(0,0){\kern-\@tempdima\kern0.72em\SWbond}% +\else +\setBScolor{\Put@Direct(0,0){\SWbond}}% +%\Put@Direct(0,0){\SWbond}% +\fi +}% +\fi%end of ifcase +\fi\fi}% +\end{ShiftPicEnvB}% +\West@bondfalse +\East@bondfalse +\endgroup}%end of macro ltrigonal +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The command |\ylltrigonalposition| is used in +% |\ltrigonal| to adjust a substitution position. +% \changes{v1.02}{1998/10/20}{Newly added command: +% \cs{ylltrigonalposition}} +% \changes{v4.01}{2004/8/30}{Newly added switch: +% \cs{ifWest@bond}} +% +% \begin{macro}{\ylltrigonalposition} +% \begin{macrocode} +\def\ylltrigonalposition#1{% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpa + \or \gdef\@ylii{-52}\gdef\@yli{0}\global\@ylswtrue% E subst. on 1 + \West@bondtrue% + \or \gdef\@ylii{50}\gdef\@yli{-47}\global\@ylswtrue% NW subst. on 1 + \or \gdef\@ylii{50}\gdef\@yli{47}\global\@ylswtrue% SW subst. on 1 +\fi%end of ifcase +\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% \subsection{Left-hand trigonal unit (broad type)} +% +% The macro |\Ltrigonal| typesets a compound of trivalency. +% The following numbering is adopted in this macro. +% The two left-hand bonds form an angle of 120$^{\circ}$ (broad type), +% while the right-hand bond is typeset horizontally. +% \changes{v1.02}{1998/10/20}{New command: \cs{Ltrigonal}} +% +% \begin{verbatim} +% ************************ +% * trigonal unit (left) * +% ************************ +% +% 2 +% ` +% ` +% 120 0 --- 1 0 <== the original point +% / +% / +% 3 +% \end{verbatim} +% +% This macro has an argument |SUBSLIST| as well as an optional +% argument |AUXLIST|. +% +% \begin{verbatim} +% \Ltrigonal[AUXLIST]{SUBSLIST} +% \end{verbatim} +% +% The arugument |AUXLIST| designates an character on the central +% atom of the formula drawn by this macro. It can be used a plus +% or minus charge on the center. +% +% \begin{verbatim} +% AUXLIST = +% +% {0+} : + charge (or another one chararacter) on the center +% \end{verbatim} +% +% The arugument |SUBLIST| designates a set of substitutients. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 3 +% +% nT : triple bond at n-atom +% nD : double bond at n-atom +% n or nS : single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% +% for 0 : cetral atom (e.g. 0==C) +% \end{verbatim} +% +% \begin{verbatim} +% e.g. +% +% \Ltrigonal{1==Cl;2==F} +% \Ltrigonal{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% \changes{v1.02}{1998/10/31}{Adding \cs{ylLtrigonalposition}, +% \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v4.01}{2004/8/30}{Variable sized central atoms} +% \changes{v4.01}{2004/8/30}{Newly added switch: +% \cs{ifWest@bond}} +% \changes{v5.00}{2010/10/01}{for bond coloring} +% +% \begin{macro}{\Ltrigonal} +% \begin{macro}{\@Ltrigonal} +% \begin{macrocode} +\def\Ltrigonal{\@ifnextchar[{\@Ltrigonal[r}{\@Ltrigonal[r]}} +\def\@Ltrigonal#1]#2{% +\begingroup +\@reset@ylsw% +\West@bondfalse +\East@bondfalse +\ylLtrigonalposition{#2}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(600,600)(-300,-300){Ltrigonal}%2002/4/30 by S. Fujita +(300,300)% +\@tfor\member:=#1\do{% + \expandafter\twoch@@r\member{}{}% + \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}% +\@tempdima=0pt +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa +\setbox9=\hbox{\@memberb}% +\ifdim\wd9<0.72em +\@tempdima=0.72em +{\putlratom{-40}{-33}{\hbox to.72em{\hss\@memberb\hss}}}%central atom +\else +\ifWest@bond +\@tempdima=\wd9 +{\putlratom{-40}{-33}{\hbox to.72em{\hss\@memberb}}}%central atom +%%%%\global\West@bondfalse +\else +\@tempdima=\wd9 +{\putlratom{-40}{-33}{\hbox to.72em{\@memberb\hss}}}%central atom +\fi\fi +\else%%no action +\fi%end of ifcase +\fi\fi}% +%%%%% +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa +\or{% +\advance\@tempdima by-0.72em +\setBScolor{\Put@Direct(0,0){\kern\@tempdima\Eastbond}}}% +%\Put@Direct(0,0){\kern\@tempdima\Eastbond}}% +\or{% +\ifWest@bond +\setBScolor{\Put@Direct(0,0){\kern-\@tempdima\kern0.72em\NWBOND}}% +%\Put@Direct(0,0){\kern-\@tempdima\kern0.72em\NWBOND}% +\else +\setBScolor{\Put@Direct(0,0){\NWBOND}}% +%\Put@Direct(0,0){\NWBOND}% +\fi +}% +\or{% +\ifWest@bond +\setBScolor{\Put@Direct(0,0){\kern-\@tempdima\kern0.72em\SWBOND}}% +%\Put@Direct(0,0){\kern-\@tempdima\kern0.72em\SWBOND}% +\else +\setBScolor{\Put@Direct(0,0){\SWBOND}}% +%\Put@Direct(0,0){\SWBOND}% +\fi +}% +\fi%end of ifcase +\fi\fi}% +\end{ShiftPicEnvB}% +\West@bondfalse +\East@bondfalse +\endgroup}%end of macro Ltrigonal +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The command |\ylLtrigonalposition| is used in +% |\Ltrigonal| to adjust a substitution position. +% \changes{v1.02}{1998/10/20}{Newly added command: +% \cs{ylLtrigonalposition}} +% +% \begin{macro}{\ylLtrigonalposition} +% \begin{macrocode} +\def\ylLtrigonalposition#1{% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpa + \or \gdef\@ylii{-52}\gdef\@yli{0}\global\@ylswtrue% E subst. on 1 + \West@bondtrue% + \or \gdef\@ylii{47}\gdef\@yli{-40}\global\@ylswtrue% NWB subst. on 1 + \or \gdef\@ylii{47}\gdef\@yli{40}\global\@ylswtrue% SWB subst. on 1 +\fi%end of ifcase +\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% \subsection{Upward trigonal unit (narrow type)} +% +% The macro |\utrigonal| typesets a compound of trivalency. +% The two upward bonds form an angle of 90$^{\circ}$ (narrow type), +% while the downward bond is typeset vertically. +% The following numbering is adopted in this macro. +% +% \begin{verbatim} +% ********************** +% * trigonal unit (up) * +% ********************** +% +% The following numbering is adopted in this macro. +% +% 3 . 2 +% ` 90 / +% ` / +% 0 0 <== the original point +% | +% | +% 1 +% +% \end{verbatim} +% +% This macro has an argument |SUBSLIST| as well as an optional +% argument |AUXLIST|. +% +% \begin{verbatim} +% \utrigonal[AUXLIST]{SUBSLIST} +% \end{verbatim} +% +% The arugument |AUXLIST| designates an character on the central +% atom of the formula drawn by this macro. It can be used a plus +% or minus charge on the center. +% +% \begin{verbatim} +% AUXLIST = +% +% {0+}: + charge (or another one chararacter) on the center +% \end{verbatim} +% +% The arugument |SUBLIST| designates a set of substitutients. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 3 +% +% nT : triple bond at n-atom +% nD : double bond at n-atom +% n or nS : single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% +% for 0 : cetral atom (e.g. 0==C) +% \end{verbatim} +% +% \begin{verbatim} +% e.g. +% +% \utrigonal{1==Cl;2==F} +% \utrigonal{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% \changes{v1.02}{1998/10/31}{Adding \cs{ylutrigonalposition}, +% \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v5.00}{2010/10/01}{for bond coloring} +% +% \begin{macro}{\utrigonal} +% \begin{macro}{\@utrigonal} +% \begin{macrocode} +\def\utrigonal{\@ifnextchar[{\@utrigonal[r}{\@utrigonal[r]}} +\def\@utrigonal#1]#2{% +\begingroup +\@reset@ylsw% +\centralatomcheck{#2}%2013/04/01 added +\ylutrigonalposition{#2}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(600,600)(-300,-300){utrigonal}%2002/4/30 by S. Fujita +(300,300)% +\@tfor\member:=#1\do{% + \expandafter\twoch@@r\member{}{}% + \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}% +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa +{\putlratom{-40}{-33}{\@memberb}}%central atom +\or\setBScolor{\Put@Direct(0,0){\Southbond}}% +%\Put@Direct(0,0){\Southbond}% +\or\setBScolor{\Put@Direct(0,0){\NEbond}}% +%\Put@Direct(0,0){\NEbond}% +\or\setBScolor{\Put@Direct(0,0){\NWbond}}% +%\Put@Direct(0,0){\NWbond}% +\fi%end of ifcase +\fi\fi}% +\end{ShiftPicEnvB}% +\endgroup}%end of macro utrigonal +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The command |\ylutrigonalposition| is used in +% |\utrigonal| to adjust a substitution position. +% \changes{v1.02}{1998/10/20}{Newly added command: +% \cs{ylutrigonalposition}} +% +% \begin{macro}{\ylutrigonalposition} +% \begin{macrocode} +\def\ylutrigonalposition#1{% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpa + \or \gdef\@ylii{0}\gdef\@yli{52}\global\@ylswtrue%S subst. on 1 + \or \gdef\@ylii{-40}\gdef\@yli{-47}\global\@ylswtrue% NE subst. on 1 + \or \gdef\@ylii{50}\gdef\@yli{-47}\global\@ylswtrue% NW subst. on 1 +\fi%end of ifcase +\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% \subsection{Upward trigonal unit (broad type)} +% +% The macro |\Utrigonal| typesets a compound of trivalency. +% The two upward bonds form an angle of 120$^{\circ}$ (broad type), +% while the downward bond is typeset vertically. +% The following numbering is adopted in this macro. +% +% \begin{verbatim} +% ********************** +% * trigonal unit (up) * +% ********************** +% +% 3 2 +% ` 120 / +% ` / +% 0 0 <== the original point +% | +% | +% 1 +% +% \end{verbatim} +% +% This macro has an argument |SUBSLIST| as well as an optional +% argument |AUXLIST|. +% +% \begin{verbatim} +% \Utrigonal[AUXLIST]{SUBSLIST} +% \end{verbatim} +% +% The arugument |AUXLIST| designates an character on the central +% atom of the formula drawn by this macro. It can be used a plus +% or minus charge on the center. +% +% \begin{verbatim} +% AUXLIST = +% +% {0+}: + charge (or another one chararacter) on the center +% \end{verbatim} +% +% The arugument |SUBLIST| designates a set of substitutients. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 3 +% +% nT : triple bond at n-atom +% nD : double bond at n-atom +% n or nS : single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% +% for 0 : cetral atom (e.g. 0==C) +% \end{verbatim} +% +% \begin{verbatim} +% e.g. +% +% \Utrigonal{1==Cl;2==F} +% \Utrigonal{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% \changes{v1.02}{1998/10/31}{Adding \cs{ylutrigonalposition}, +% \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v5.00}{2010/10/01}{for bond coloring} +% +% \begin{macro}{\Utrigonal} +% \begin{macro}{\@Utrigonal} +% \begin{macrocode} +\def\Utrigonal{\@ifnextchar[{\@Utrigonal[r}{\@Utrigonal[r]}} +\def\@Utrigonal#1]#2{% +\begingroup +\@reset@ylsw% +\ylUtrigonalposition{#2}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(600,600)(-300,-300){Utrigonal}%2002/4/30 by S. Fujita +(300,300)% +\@tfor\member:=#1\do{% + \expandafter\twoch@@r\member{}{}% + \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}% +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa +{\putlratom{-40}{-33}{\@memberb}}%central atom +\or\setBScolor{\Put@Direct(0,0){\Southbond}}% +%\Put@Direct(0,0){\Southbond}% +\or\setBScolor{\Put@Direct(0,0){\NEBond}}% +%\Put@Direct(0,0){\NEBond}% +\or\setBScolor{\Put@Direct(0,0){\NWBond}}% +%\Put@Direct(0,0){\NWBond}% +\fi%end of ifcase +\fi\fi}% +\end{ShiftPicEnvB}% +\endgroup}%end of macro Utrigonal +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The command |\ylUtrigonalposition| is used in +% |\Utrigonal| to adjust a substitution position. +% \changes{v1.02}{1998/10/20}{Newly added command: +% \cs{ylUtrigonalposition}} +% +% \begin{macro}{\ylUtrigonalposition} +% \begin{macrocode} +\def\ylUtrigonalposition#1{% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpa + \or \gdef\@ylii{0}\gdef\@yli{52}\global\@ylswtrue%S subst. on 1 + \or \gdef\@ylii{-40}\gdef\@yli{-47}\global\@ylswtrue% NEB subst. on 1 + \or \gdef\@ylii{66}\gdef\@yli{-47}\global\@ylswtrue% NWB subst. on 1 +\fi%end of ifcase +\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% \subsection{Downward trigonal unit (narrow type)} +% +% The macro |\dtrigonal| typesets a compound of trivalency. +% The upward bond is typeset vertically. +% The following numbering is adopted in this macro. +% +% \begin{verbatim} +% ************************ +% * trigonal unit (down) * +% ************************ +% +% The following numbering is adopted in this macro. +% +% 1 +% | +% | +% 0 0 <== the original point +% / ` +% / 90 ` +% 2 3 +% +% \end{verbatim} +% +% This macro has an argument |SUBSLIST| as well as an optional +% argument |AUXLIST|. +% +% \begin{verbatim} +% \dtrigonal[AUXLIST]{SUBSLIST} +% \end{verbatim} +% +% The arugument |AUXLIST| designates an character on the central +% atom of the formula drawn by this macro. It can be used a plus +% or minus charge on the center. +% +% \begin{verbatim} +% AUXLIST = +% +% {0+} : + charge (or another one chararacter) on the center +% \end{verbatim} +% +% The arugument |SUBLIST| designates a set of substitutients. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 3 +% +% nT : triple bond at n-atom +% nD : double bond at n-atom +% n or nS : single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% +% for 0 : cetral atom (e.g. 0==C) +% \end{verbatim} +% +% \begin{verbatim} +% e.g. +% +% \dtrigonal{1==Cl;2==F} +% \dtrigonal{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% \changes{v1.02}{1998/10/31}{Adding \cs{yldtrigonalposition}, +% \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v5.00}{2010/10/01}{for bond coloring} +% +% \begin{macro}{\dtrigonal} +% \begin{macro}{\@dtrigonal} +% \begin{macrocode} +\def\dtrigonal{\@ifnextchar[{\@dtrigonal[r}{\@dtrigonal[r]}} +\def\@dtrigonal#1]#2{% +\begingroup +\@reset@ylsw% +\yldtrigonalposition{#2}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(600,600)(-300,-300){dtrigonal}%2002/4/30 by S. Fujita +(300,300)% +\@tfor\member:=#1\do{% + \expandafter\twoch@@r\member{}{}% + \if\@@tmpa 0\relax {\putratom{37}{50}{\scriptsize\@@tmpb}}\fi}% +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa +{\putlratom{-40}{-33}{\@memberb}}%central atom +\or\setBScolor{\Put@Direct(0,0){\Northbond}}% +%\Put@Direct(0,0){\Northbond}% +\or\setBScolor{\Put@Direct(0,0){\SEbond}}% +%\Put@Direct(0,0){\SEbond}% +\or\setBScolor{\Put@Direct(0,0){\SWbond}}% +%\Put@Direct(0,0){\SWbond}% +\fi%end of ifcase +\fi\fi}% +\end{ShiftPicEnvB}% +\endgroup}%end of macro dtrigonal +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The command |\yldtrigonalposition| is used in +% |\dtrigonal| to adjust a substitution position. +% \changes{v1.02}{1998/10/20}{Newly added command: +% \cs{yldtrigonalposition}} +% +% \begin{macro}{\yldtrigonalposition} +% \begin{macrocode} +\def\yldtrigonalposition#1{% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpa + \or \gdef\@ylii{0}\gdef\@yli{-52}\global\@ylswtrue%N subst. on 1 + \or \gdef\@ylii{-40}\gdef\@yli{47}\global\@ylswtrue% SE subst. on 1 + \or \gdef\@ylii{50}\gdef\@yli{47}\global\@ylswtrue% SW subst. on 1 +\fi%end of ifcase +\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% \subsection{Downward trigonal unit (broad type)} +% +% The macro |\Dtrigonal| typesets a compound of trivalency. +% The upward bond is typeset vertically. +% The following numbering is adopted in this macro. +% +% \begin{verbatim} +% ************************ +% * trigonal unit (down) * +% ************************ +% +% The following numbering is adopted in this macro. +% +% 1 +% | +% | +% 0 0 <== the original point +% / ` +% / 120 ` +% 2 3 +% +% \end{verbatim} +% +% This macro has an argument |SUBSLIST| as well as an optional +% argument |AUXLIST|. +% +% \begin{verbatim} +% \Dtrigonal[AUXLIST]{SUBSLIST} +% \end{verbatim} +% +% The arugument |AUXLIST| designates an character on the central +% atom of the formula drawn by this macro. It can be used a plus +% or minus charge on the center. +% +% \begin{verbatim} +% AUXLIST = +% +% {0+}: + charge (or another one chararacter) on the center +% \end{verbatim} +% +% The arugument |SUBLIST| designates a set of substitutients. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 3 +% +% nT : triple bond at n-atom +% nD : double bond at n-atom +% n or nS : single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% +% for 0 : cetral atom (e.g. 0==C) +% \end{verbatim} +% +% \begin{verbatim} +% e.g. +% +% \Dtrigonal{1==Cl;2==F} +% \Dtrigonal{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% \changes{v1.02}{1998/10/31}{Adding \cs{ylDtrigonalposition}, +% \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v5.00}{2010/10/01}{for bond coloring} +% +% \begin{macro}{\Dtrigonal} +% \begin{macro}{\@Dtrigonal} +% \begin{macrocode} +\def\Dtrigonal{\@ifnextchar[{\@Dtrigonal[r}{\@Dtrigonal[r]}} +\def\@Dtrigonal#1]#2{% +\begingroup +\@reset@ylsw% +\ylDtrigonalposition{#2}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(600,600)(-300,-300){Dtrigonal}%2002/4/30 by S. Fujita +(300,300)% +\@tfor\member:=#1\do{% + \expandafter\twoch@@r\member{}{}% + \if\@@tmpa 0\relax {\putratom{37}{50}{\scriptsize\@@tmpb}}\fi}% +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa +{\putlratom{-40}{-33}{\@memberb}}%central atom +\or\setBScolor{\Put@Direct(0,0){\Northbond}}% +%\Put@Direct(0,0){\Northbond}% +\or\setBScolor{\Put@Direct(0,0){\SEBond}}% +%\Put@Direct(0,0){\SEBond}% +\or\setBScolor{\Put@Direct(0,0){\SWBond}}% +%\Put@Direct(0,0){\SWBond}% +\fi%end of ifcase +\fi\fi}% +\end{ShiftPicEnvB}% +\endgroup}%end of macro Dtrigonal +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The command |\ylDtrigonalposition| is used in +% |\Dtrigonal| to adjust a substitution position. +% \changes{v1.02}{1998/10/20}{Newly added command: +% \cs{ylDtrigonalposition}} +% +% \begin{macro}{\ylDtrigonalposition} +% \begin{macrocode} +\def\ylDtrigonalposition#1{% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpa + \or \gdef\@ylii{0}\gdef\@yli{-52}\global\@ylswtrue%N subst. on 1 + \or \gdef\@ylii{-40}\gdef\@yli{47}\global\@ylswtrue% SEB subst. on 1 + \or \gdef\@ylii{66}\gdef\@yli{47}\global\@ylswtrue% SWB subst. on 1 +\fi%end of ifcase +\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% \section{Ethylene derivative} +% \subsection{Horizontal ethylene unit (narrow type)} +% +% The macro |\ethylene| typesets ethylene derivatives. +% The following numbering is adopted in this macro. +% +% \begin{verbatim} +% ***************** +% * ethylene unit * +% ***************** +% +% 1 4 +% ` / +% ` / +% 90 (1)===(2) 90 (1) <== the original point +% / ` +% / ` +% 2 3 +% \end{verbatim} +% +% \begin{verbatim} +% \ethylene[BONDLIST]{ATOMLIST}{SUBSLIST} +% \end{verbatim} +% +% The arugument |BONDLIST| designates the bond between atom (1) and +% atom (2) as well as charges on these centeral atoms. +% +% \begin{verbatim} +% BONDLIST: list of inner bonds and charges +% +% {n+} : + charge (or another one chararacter) on n-atom +% d : inner double bond (between (1) and (2)) +% t : inner triple bond (between (1) and (2)) +% \end{verbatim} +% +% The arugument |SUBLIST| designates a set of substitutients. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 4 +% +% nT : triple bond at n-atom +% nD : double bond at n-atom +% n or nS : single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% \end{verbatim} +% +% The arugument |ATOMLIST| designates the list of central atoms. +% +% \begin{verbatim} +% ATOMLIST: list of central atoms +% n : atom for n-position (e.g. 1==C) +% \end{verbatim} +% +% \begin{verbatim} +% e.g. +% +% \ethylene{}{1==Cl;2==F} +% \ethylene{}{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% \changes{v1.02}{1998/10/31}{Adding \cs{ylethylenepositiona}, +% \cs{ylethylenepositionb}, +% \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v5.00}{2010/10/01}{for bond coloring} +% +% \begin{macro}{\ethylene} +% \begin{macro}{\@ethylene} +% \begin{macrocode} +\def\ethylene{\@ifnextchar[{\@ethylene}{\@ethylene[]}} +\def\@ethylene[#1]#2#3{% +\@reset@ylsw% +\ylethylenepositiona{#3}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +\ylethylenepositionb{#3}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-230}\def\@@yli{0}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(800,600)(-300,-300){ethylene}%2002/4/30 by S. Fujita +(300,300)% +{\def\aaa{#1}\ifx\aaa\empty% +% \Multiput@Direct(42,-13)(0,25){2}{\line(1,0){140}}\fi% double bond + \Multiput@Direct(42,-13)(0,25){2}{\Put@Line(0,0)(1,0){140}}\fi%2010/10/01 +}% +\@tfor\member:=#1\do{% + \expandafter\twoch@@r\member{}{}% + \if\@@tmpa 1\relax {\putratom{-27}{60}{\scriptsize\@@tmpb}}% + \else\if\@@tmpa 2\relax {\putratom{203}{60}{\scriptsize\@@tmpb}}% + \else\if\@@tmpa d\relax% +% {\Multiput@Direct(42,-13)(0,25){2}{\line(1,0){140}}}% double bond + {\Multiput@Direct(42,-13)(0,25){2}{\Put@Line(0,0)(1,0){140}}}%2010/10/01 + \else\if\@@tmpa t\relax% +% {\Multiput@Direct(42,-20)(0,20){3}{\line(1,0){140}}}% triple bond right + {\Multiput@Direct(42,-20)(0,20){3}{\Put@Line(0,0)(1,0){140}}}%2010/10/01 + \fi\fi\fi\fi}% +{\def\aaa{#2}% +\ifx\aaa\empty% +\putratom{-40}{-33}{C}%central atom +\putratom{190}{-33}{C}%central atom +\else% +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifcase\@tmpa% +\or\putratom{-40}{-33}{\@memberb}%central atom +\or\putratom{190}{-33}{\@memberb}%central atom +\fi\fi}%end of ifcase +\fi% +}% +\@forsemicol\member:=#3\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa% +\or\setBScolor{\Put@Direct(0,0){\NWbond}}% +%\Put@Direct(0,0){\NWbond}% +\or\setBScolor{\Put@Direct(0,0){\SWbond}}% +%\Put@Direct(0,0){\SWbond}% +\or\setBScolor{\Put@Direct(230,0){\SEbond}}% +%\Put@Direct(230,0){\SEbond}% +\or\setBScolor{\Put@Direct(230,0){\NEbond}}% +%\Put@Direct(230,0){\NEbond}% +\fi%end of ifcase +\fi\fi}% +\end{ShiftPicEnvB}% +}%end of macro ethylene +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\ethyleneh} +% \begin{macrocode} +\let\ethyleneh=\ethylene +% \end{macrocode} +% \end{macro} +% +% The commands |\ylethylenepositiona| and |\ylethylenepositiona| +% are used in |\ethylene| to adjust a substitution position. +% \changes{v1.02}{1998/10/20}{Newly added command: +% \cs{ylethylenepositiona} and \cs{ylethylenepositionb}} +% +% \begin{macro}{\ylethylenepositiona} +% \begin{macro}{\ylethylenepositionb} +% \begin{macrocode} +\def\ylethylenepositiona#1{% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpa + \or \gdef\@ylii{50}\gdef\@yli{-47}\global\@ylswtrue% NW subst. on 1 + \or \gdef\@ylii{50}\gdef\@yli{47}\global\@ylswtrue% SW subst. on 1 +\fi%end of ifcase +\fi\fi\fi}}% +\def\ylethylenepositionb#1{% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpa + \or%omit + \or%omit + \or \gdef\@ylii{-40}\gdef\@yli{47}\global\@ylswtrue% SE subst. on 1 + \or \gdef\@ylii{-40}\gdef\@yli{-47}\global\@ylswtrue% NE subst. on 1 +\fi%end of ifcase +\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Horizontal ethylene unit (broad type)} +% +% The macro |\Ethylene| typesets ethylene derivatives. +% The following numbering is adopted in this macro. +% \changes{v1.02}{1998/10/20}{New command: \cs{Ethylene}} +% +% \begin{verbatim} +% ***************** +% * ethylene unit * +% ***************** +% +% 1 4 +% ` / +% ` / +% 120 (1)===(2) 120 (1) <== the original point +% / ` +% / ` +% 2 3 +% \end{verbatim} +% +% \begin{verbatim} +% \Ethylene[BONDLIST]{ATOMLIST}{SUBSLIST} +% \end{verbatim} +% +% The arugument |BONDLIST| designates the bond between atom (1) and +% atom (2) as well as charges on these centeral atoms. +% +% \begin{verbatim} +% BONDLIST: list of inner bonds and charges +% +% {n+} : + charge (or another one chararacter) on n-atom +% d : inner double bond (between (1) and (2)) +% t : inner triple bond (between (1) and (2)) +% \end{verbatim} +% +% The arugument |SUBLIST| designates a set of substitutients. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 4 +% +% nT : triple bond at n-atom +% nD : double bond at n-atom +% n or nS : single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% \end{verbatim} +% +% The arugument |ATOMLIST| designates the list of central atoms. +% +% \begin{verbatim} +% ATOMLIST: list of central atoms +% n : atom for n-position (e.g. 1==C) +% \end{verbatim} +% +% \begin{verbatim} +% e.g. +% +% \Ethylene{}{1==Cl;2==F} +% \Ethylene{}{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% \changes{v1.02}{1998/10/31}{Adding \cs{ylethylenepositiona}, +% \cs{ylethylenepositionb}, +% \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v5.00}{2010/10/01}{for bond coloring} +% +% \begin{macro}{\Ethylene} +% \begin{macro}{\@Ethylene} +% \begin{macrocode} +\def\Ethylene{\@ifnextchar[{\@Ethylene}{\@Ethylene[]}}%bug \@ethylene --> \@Ethylene +\def\@Ethylene[#1]#2#3{% +\@reset@ylsw% +\ylethylenepositiona{#3}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +\ylethylenepositionb{#3}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-230}\def\@@yli{0}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(800,600)(-300,-300){Ethylene}%2002/4/30 by S. Fujita +(300,300)% +{\def\aaa{#1}\ifx\aaa\empty% +% \Multiput@Direct(42,-13)(0,25){2}{\line(1,0){140}}\fi% double bond + \Multiput@Direct(42,-13)(0,25){2}{\Put@Line(0,0)(1,0){140}}\fi%2010/10/01 +}% +\@tfor\member:=#1\do{% + \expandafter\twoch@@r\member{}{}% + \if\@@tmpa 1\relax {\putratom{-27}{60}{\scriptsize\@@tmpb}}% + \else\if\@@tmpa 2\relax {\putratom{203}{60}{\scriptsize\@@tmpb}}% + \else\if\@@tmpa d\relax% +% {\Multiput@Direct(42,-13)(0,25){2}{\line(1,0){140}}}% double bond + {\Multiput@Direct(42,-13)(0,25){2}{\Put@Line(0,0)(1,0){140}}}%2010/10/01 + \else\if\@@tmpa t\relax% +% {\Multiput@Direct(42,-20)(0,20){3}{\line(1,0){140}}}% triple bond right + {\Multiput@Direct(42,-20)(0,20){3}{\Put@Line(0,0)(1,0){140}}}%2010/10/01 + \fi\fi\fi\fi}% +{\def\aaa{#2}% +\ifx\aaa\empty% +\putratom{-40}{-33}{C}%central atom +\putratom{190}{-33}{C}%central atom +\else% +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifcase\@tmpa% +\or\putratom{-40}{-33}{\@memberb}%central atom +\or\putratom{190}{-33}{\@memberb}%central atom +\fi\fi}%end of ifcase +\fi% +}% +\@forsemicol\member:=#3\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa% +\or\setBScolor{\Put@Direct(0,0){\NWBOND}}% +%\Put@Direct(0,0){\NWBOND}% +\or\setBScolor{\Put@Direct(0,0){\SWBOND}}% +%\Put@Direct(0,0){\SWBOND}% +\or\setBScolor{\Put@Direct(230,0){\SEBOND}}% +%\Put@Direct(230,0){\SEBOND}% +\or\Put@Direct(230,0){\NEBOND}% +\fi%end of ifcase +\fi\fi}% +\end{ShiftPicEnvB}% +}%end of macro Ethylene +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\Ethyleneh} +% \begin{macrocode} +\let\Ethyleneh=\Ethylene +% \end{macrocode} +% \end{macro} +% +% \subsection{Vertical ethylene unit (narrow type)} +% +% The macro |\ethylenev| typesets ethylene derivatives in a +% vatical manner. +% The following numbering is adopted in this macro. +% +% \begin{verbatim} +% **************************** +% * ethylene unit (vertical) * +% **************************** +% +% The following numbering is adopted in this macro. +% +% 4 3 +% ` 90 / +% ` / +% (2) +% || +% || +% (1) <== the original point +% / ` +% / 90 ` +% 1 2 +% +% \end{verbatim} +% +% \begin{verbatim} +% \ethylenev[BONDLIST]{ATOMLIST}{SUBSLIST} +% \end{verbatim} +% +% \begin{verbatim} +% BONDLIST: list of inner bonds and charges +% +% {n+} : + charge (or another one chararacter) on n-atom +% d : inner double bond (between (1) and (2)) +% t : inner triple bond (between (1) and (2)) +% \end{verbatim} +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 4 +% +% nT : triple bond at n-atom +% nD : double bond at n-atom +% n or nS : single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% \end{verbatim} +% +% \begin{verbatim} +% ATOMLIST: list of central atoms +% n : atom for n-position (e.g. 1==C) +% \end{verbatim} +% +% \begin{verbatim} +% e.g. +% +% \ethylenev{1==Cl;2==F} +% \ethylenev{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% \changes{v1.02}{1998/10/31}{Adding \cs{ylethylenevpositiona}, +% \cs{ylethylenevpositionb}, +% \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v5.00}{2010/10/01}{for bond coloring} +% +% \begin{macro}{\ethylenev} +% \begin{macro}{\@ethylenev} +% \begin{macrocode} +\def\ethylenev{\@ifnextchar[{\@ethylenev}{\@ethylenev[]}} +\def\@ethylenev[#1]#2#3{% +\@reset@ylsw% +\ylethylenevpositiona{#3}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +\ylethylenevpositionb{#3}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{-230}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(600,800)(-300,-300){ethylenev}%2002/4/30 by S. Fujita +(300,300)% +\def\aaa{#1}\ifx\aaa\empty% + \Put@Line(-20,47)(0,1){140}% vertical + \Put@Line(6,47)(0,1){140}\fi% double bond +\@tfor\member:=#1\do{% + \expandafter\twoch@@r\member{}{}% + \if\@@tmpa 1\relax \putratom{37}{0}{\scriptsize\@@tmpb} + \else\if\@@tmpa 2\relax \putratom{37}{216}{\scriptsize\@@tmpb} + \else\if\@@tmpa d\relax% + \Put@Line(-13,47)(0,1){140}% vertical + \Put@Line(13,47)(0,1){140}% double bond + \else\if\@@tmpa t\relax% + \Put@Line(-20,47)(0,1){140}% vertical + \Put@Line(-0,47)(0,1){140}% triple bond + \Put@Line(20,47)(0,1){140}% + \fi\fi\fi\fi}% +\def\aaa{#2}% +\ifx\aaa\empty% +\putratom{-40}{-33}{C}%central atom +\putratom{-40}{197}{C}%central atom +\else% +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifcase\@tmpa% +\or\putratom{-40}{-33}{\@memberb}%central atom +\or\putratom{-40}{197}{\@memberb}%central atom +\fi\fi}%end of ifcase +\fi% +\@forsemicol\member:=#3\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa% +\or\setBScolor{\Put@Direct(0,0){\SWbond}}% +%\Put@Direct(0,0){\SWbond}% +\or\setBScolor{\Put@Direct(0,0){\SEbond}}% +%\Put@Direct(0,0){\SEbond}% +\or\setBScolor{\Put@Direct(0,230){\NEbond}}% +%\Put@Direct(0,230){\NEbond}% +\or\setBScolor{\Put@Direct(0,230){\NWbond}}% +%\Put@Direct(0,230){\NWbond}% +\fi%end of ifcase +\fi\fi}% +\end{ShiftPicEnvB}% +}%end of macro ethylenev +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The commands |\ylethylenevpositiona| and |\ylethylenevpositiona| +% are used in |\ethylenev| to adjust a substitution position. +% \changes{v1.02}{1998/10/20}{Newly added command: +% \cs{ylethylenevpositiona} and \cs{ylethylenevpositionb}} +% +% \begin{macro}{\ylethylenepositiona} +% \begin{macro}{\ylethylenepositionb} +% \begin{macrocode} +\def\ylethylenevpositiona#1{% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpa + \or \gdef\@ylii{50}\gdef\@yli{47}\global\@ylswtrue% SW subst. on 1 + \or \gdef\@ylii{-40}\gdef\@yli{47}\global\@ylswtrue% SE subst. on 1 +\fi%end of ifcase +\fi\fi\fi}}% +\def\ylethylenevpositionb#1{% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpa + \or%omit + \or%omit + \or \gdef\@ylii{-40}\gdef\@yli{-47}\global\@ylswtrue% NE subst. on 1 + \or \gdef\@ylii{50}\gdef\@yli{-47}\global\@ylswtrue% NW subst. on 1 +\fi%end of ifcase +\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Vertical ethylene unit (broad type)} +% +% The macro |\Ethylenev| typesets ethylene derivatives in a +% vatical manner. +% The following numbering is adopted in this macro. +% +% \begin{verbatim} +% **************************** +% * ethylene unit (vertical) * +% **************************** +% +% 4 3 +% ` 120 / +% ` / +% (2) +% || +% || +% (1) <== the original point +% / ` +% / 120 ` +% 1 2 +% \end{verbatim} +% +% \begin{verbatim} +% \Ethylenev[BONDLIST]{ATOMLIST}{SUBSLIST} +% \end{verbatim} +% +% \begin{verbatim} +% BONDLIST: list of inner bonds and charges +% +% {n+} : + charge (or another one chararacter) on n-atom +% d : inner double bond (between (1) and (2)) +% t : inner triple bond (between (1) and (2)) +% \end{verbatim} +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 4 +% +% nT : triple bond at n-atom +% nD : double bond at n-atom +% n or nS : single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% \end{verbatim} +% +% \begin{verbatim} +% ATOMLIST: list of central atoms +% n : atom for n-position (e.g. 1==C) +% \end{verbatim} +% +% \begin{verbatim} +% e.g. +% +% \Ethylenev{1==Cl;2==F} +% \Ethylenev{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% \changes{v1.02}{1998/10/31}{Adding \cs{ylethylenevpositiona}, +% \cs{ylethylenevpositionb}, +% \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v5.00}{2010/10/01}{for bond coloring} +% +% \begin{macro}{\Ethylenev} +% \begin{macro}{\@Ethylenev} +% \begin{macrocode} +\def\Ethylenev{\@ifnextchar[{\@Ethylenev}{\@Ethylenev[]}} +\def\@Ethylenev[#1]#2#3{% +\@reset@ylsw% +\ylethylenevpositiona{#3}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +\ylethylenevpositionb{#3}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{-230}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(600,800)(-300,-300){Ethylenev}%2002/4/30 by S. Fujita +(300,300)% +\def\aaa{#1}\ifx\aaa\empty% + \Put@Line(-20,47)(0,1){140}% vertical + \Put@Line(6,47)(0,1){140}\fi% double bond +\@tfor\member:=#1\do{% + \expandafter\twoch@@r\member{}{}% + \if\@@tmpa 1\relax \putratom{37}{0}{\scriptsize\@@tmpb} + \else\if\@@tmpa 2\relax \putratom{37}{216}{\scriptsize\@@tmpb} + \else\if\@@tmpa d\relax% + \Put@Line(-13,47)(0,1){140}% vertical + \Put@Line(13,47)(0,1){140}% double bond + \else\if\@@tmpa t\relax% + \Put@Line(-20,47)(0,1){140}% vertical + \Put@Line(-0,47)(0,1){140}% triple bond + \Put@Line(20,47)(0,1){140}% + \fi\fi\fi\fi}% +\def\aaa{#2}% +\ifx\aaa\empty% +\putratom{-40}{-33}{C}%central atom +\putratom{-40}{197}{C}%central atom +\else% +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifcase\@tmpa% +\or\putratom{-40}{-33}{\@memberb}%central atom +\or\putratom{-40}{197}{\@memberb}%central atom +\fi\fi}%end of ifcase +\fi% +\@forsemicol\member:=#3\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa% +\or\setBScolor{\Put@Direct(0,0){\SWBond}}% +%\Put@Direct(0,0){\SWBond}% +\or\setBScolor{\Put@Direct(0,0){\SEBond}}% +%\Put@Direct(0,0){\SEBond}% +\or\setBScolor{\Put@Direct(0,230){\NEBond}}% +%\Put@Direct(0,230){\NEBond}% +\or\setBScolor{\Put@Direct(0,230){\NWBond}}% +%\Put@Direct(0,230){\NWBond}% +\fi%end of ifcase +\fi\fi}% +\end{ShiftPicEnvB}% +}%end of macro Ethylenev +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \section{Square unit} +% +% The macro |\square| typesets a compound of tetravalency. +% The following numbering is adopted in this macro. +% +% Because |\square| is defined in the present LaTeX2e, +% the command |\squarecomplex| is newly defined. +% +% \changes{v4.02a}{2004/12/27}{Bug fix: \cs{square} to \cs{squarecomplex}} +% +% The command |\square| is renamed to be |\squareplanar|. The code is entirely replaced. +% +% \changes{v4.05}{2009/11/08}{Bug fix: \cs{square} to \cs{squareplanar}} +% +% \begin{verbatim} +% *************** +% * square unit * +% *************** +% +% The following numbering is adopted in this macro. +% +% 4 1 +% ` / +% ` / +% (0) <== the original point +% / ` +% / ` +% 3 2 +% +% \end{verbatim} +% +% This macro has an argument |SUBSLIST| as well as an optional +% argument |AUXLIST|. +% +% \begin{verbatim} +% \squareplanar[AUXLIST]{SUBSLIST} +% \end{verbatim} +% +% The arugument |AUXLIST| designates an character on the central +% atom of the formula drawn by this macro. It can be used a plus +% or minus charge on the center. +% +% \begin{verbatim} +% AUXLIST = +% +% {0+}: + charge (or another one chararacter) on the center +% \end{verbatim} +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 4 +% +% nT : triple bond at n-atom +% nD : double bond at n-atom +% n or nS : single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% +% for 0 : cetral atom (e.g. 0==C) +% \end{verbatim} +% +% \begin{verbatim} +% e.g. +% +% \squareplanar{0==C;1==Cl;2==F} +% \squareplanar{0==C;1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% \changes{v1.02}{1998/10/31}{Adding \cs{ylsquareposition}, +% \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v5.00}{2010/10/01}{for bond coloring} +% +% \begin{macro}{\squareplanar} +% \begin{macro}{\@squareplanar} +% \begin{macrocode} +\def\squareplanar{\@ifnextchar[{\@squareplanar[r}{\@squareplanar[r]}} +\def\@squareplanar#1]#2{% +\@reset@ylsw% +\ylsquareposition{#2}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(600,600)(-300,-300){square}%2002/4/30 by S. Fujita +(300,300)% +\@tfor\member:=#1\do{% + \expandafter\twoch@@r\member{}{}% + \if\@@tmpa 0\relax {\putratom{37}{0}{\scriptsize\@@tmpb}}\fi}% +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa {\putlratom{-40}{-33}{\@memberb}}%central atom +\or\setBScolor{\Put@Direct(0,0){\NEbond}}% +%\Put@Direct(0,0){\NEbond}% +\or\setBScolor{\Put@Direct(0,0){\SEbond}}% +%\Put@Direct(0,0){\SEbond}% +\or\setBScolor{\Put@Direct(0,0){\SWbond}}% +%\Put@Direct(0,0){\SWbond}% +\or\setBScolor{\Put@Direct(0,0){\NWbond}}% +%\Put@Direct(0,0){\NWbond}% +\fi%end of ifcase +\fi\fi}% +\end{ShiftPicEnvB}% +}%end of macro squareplanar +\let\squarecomplex=\squareplanar +\let\square=\squarplanar%combatible to the old version (<4.04) +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The commands |\ylsquarepositiona| and |\ylsquarepositiona| +% are used in |\square| to adjust a substitution position. +% \changes{v1.02}{1998/10/20}{Newly added command: \cs{ylsquareposition}} +% \changes{v5.01}{2013/07/30}{Bug fix} +% +% \begin{macro}{\ylsquareposition} +% \begin{macrocode} +\def\ylsquareposition#1{% +\@@ylswfalse%%%\@reset@ylsw +\reset@@yl%%2013/07/30bug fix +\@forsemicol\member:=#1\do{% +\if@@ylsw\else +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpa + \or \gdef\@ylii{-40}\gdef\@yli{-47}\global\@ylswtrue% NE subst. on 1 + \or \gdef\@ylii{-40}\gdef\@yli{47}\global\@ylswtrue% SE subst. on 1 + \or \gdef\@ylii{50}\gdef\@yli{47}\global\@ylswtrue% SW subst. on 1 + \or \gdef\@ylii{50}\gdef\@yli{-47}\global\@ylswtrue% NW subst. on 1 +\fi%end of ifcase +\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% \section{Ball-stick models} +% \subsection{Tetrahedral unit of stereo type} +% +% The macro |\tetrastereo| typesets a tetrahedral unit in a +% ball-stick fashion. +% The following numbering is adopted in this macro. +% +% \begin{verbatim} +% ***************************** +% * tetrahedral unit (stereo) * +% ***************************** +% +% The following numbering is adopted in this macro. +% +% 1 +% +% | +% 2 -- 0 -- 4 0 <== the original point +% | +% +% 3 +% \end{verbatim} +% +% This macro has an argument |SUBSLIST| as well as an optional +% argument |AUXLIST|. +% +% \begin{verbatim} +% \tetrastereo[AUXLIST]{SUBSLIST} +% \end{verbatim} +% +% The arugument |AUXLIST| designates an character on the central +% atom of the formula drawn by this macro. It can be used a plus +% or minus charge on the center. +% +% \begin{verbatim} +% AUXLIST = +% +% {0+} : + charge (or another one chararacter) on the center +% \end{verbatim} +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 4 +% +% n : single bond at n-atom +% +% for 0 : cetral atom (e.g. 0==C) +% \end{verbatim} +% +% \begin{verbatim} +% e.g. +% +% \tetrastereo{1==Cl;2==F} +% \tetrastereo{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% \changes{v5.00}{2010/10/01}{for bond coloring} +% +% \begin{macro}{\tetrastereo} +% \begin{macro}{\@tetrastero} +% \begin{macrocode} +\def\tetrastereo{\@ifnextchar[{\@tetrastereo[r}{\@tetrastereo[r]}} +\def\@tetrastereo#1]#2{% +\begin{sfpicture}(600,600)(-300,-300) + \OrigptOutput(300,300){tetrastereo} +\Put@oCircle(0,0){200}% +\@tfor\member:=#1\do{% + \expandafter\twoch@@r\member{}{}% + \if\@@tmpa 0\relax \putratom{87}{90}{\scriptsize\@@tmpb}\fi}% +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifcase\@tmpa \putlratom{-40}{-33}{\@memberb}%central atom +\or% + \setBScolor{\Put@Line(0,100)(0,1){70}}% behind +% \Put@Line(0,100)(0,1){70}% behind + \putlratom{-30}{180}{\@memberb}% and up +\or% + {\thicklines% + \setBScolor{\Put@Line(-60,10)(-5,2){140}}% in front +% \Put@Line(-60,10)(-5,2){140}% in front + \putlatom{-205}{30}{\@memberb}}% and left +\or% + \setBScolor{\Put@Line(0,-100)(0,-1){90}}% behind and +% \Put@Line(0,-100)(0,-1){90}% behind and + \putlratom{-30}{-260}{\@memberb}% down +\or% + {\thicklines% + \setBScolor{\Put@Line(60,10)(5,2){140}}% in front +% \Put@Line(60,10)(5,2){140}% in front + \putratom{210}{30}{\@memberb}}% and right +\fi\fi}%end of ifcase +\end{sfpicture}}%end of macro tetrastereo +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Tetrahedral unit of inverse stereo type} +% +% The macro |\dtetrastereo| typesets another tetrahedral unit in a +% ball-stick fashion. +% The following numbering is adopted in this macro. +% +% \begin{verbatim} +% ***************************** +% * tetrahedral unit (stereo) * +% ***************************** +% +% The following numbering is adopted in this macro. +% +% 1 +% +% | +% 2 -- 0 -- 4 0 <== the original point +% | +% +% 3 +% \end{verbatim} +% +% This macro has an argument |SUBSLIST| as well as an optional +% argument |AUXLIST|. +% +% \begin{verbatim} +% \dtetrastereo[AUXLIST]{SUBSLIST} +% \end{verbatim} +% +% The arugument |AUXLIST| designates an character on the central +% atom of the formula drawn by this macro. It can be used a plus +% or minus charge on the center. +% +% \begin{verbatim} +% AUXLIST = +% +% {0+} : + charge (or another one chararacter) on the center +% \end{verbatim} +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 4 +% +% n : single bond at n-atom +% +% for 0 : cetral atom (e.g. 0==C) +% \end{verbatim} +% +% \begin{verbatim} +% e.g. +% +% \dtetrastereo{1==Cl;2==F} +% \dtetrastereo{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% \changes{v5.00}{2010/10/01}{for bond coloring} +% +% \begin{macro}{\dtetrastereo} +% \begin{macro}{\@dtetrastereo} +% \begin{macrocode} +\def\dtetrastereo{\@ifnextchar[{\@dtetrastereo[r}{\@dtetrastereo[r]}} +\def\@dtetrastereo#1]#2{% +\begin{sfpicture}(600,600)(-300,-300) + \OrigptOutput(300,300){dtetrastereo} +\Put@oCircle(0,0){200}% +\@tfor\member:=#1\do{% + \expandafter\twoch@@r\member{}{}% + \if\@@tmpa 0\relax \putratom{87}{90}{\scriptsize\@@tmpb}\fi}% +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifcase\@tmpa \putlratom{-40}{-33}{\@memberb}%central atom +\or% + \setBScolor{\Put@Line(0,100)(0,1){70}}% behind +% \Put@Line(0,100)(0,1){70}% behind + \putlratom{-30}{180}{\@memberb}% and up +\or% + \setBScolor{\Put@Line(-94,-10)(-5,-2){108}}% in back +% \Put@Line(-94,-10)(-5,-2){108}% in back + \putlatom{-205}{-110}{\@memberb}% and left +\or% + {\thicklines% + \setBScolor{\Put@Line(0,-50)(0,-1){150}}% behind and +% \Put@Line(0,-50)(0,-1){150}% behind and + \putlratom{-30}{-260}{\@memberb}}% down +\or% + \setBScolor{\Put@Line(94,-10)(5,-2){108}}% in back +% \Put@Line(94,-10)(5,-2){108}% in back + \putratom{210}{-110}{\@memberb}% and right +\fi\fi}%end of ifcase +\end{sfpicture}}%end of macro dtetrastereo +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Ethane unit of stereo type} +% +% The macro |\ethanestereo| typesets an ethane molecule in a +% ball-stick fashion. +% The following numbering is adopted in this macro. +% +% \begin{verbatim} +% ************************** +% * ethane unit (vertical) * +% ************************** +% +% 5 +% | +% 6 -- (2) -- 4 +% | +% | +% 1 -- (1) -- 3 <== the original point +% | +% 2 +% \end{verbatim} +% +% This macro has an argument |SUBSLIST| as well as an optional +% argument |AUXLIST|. +% +% \begin{verbatim} +% \ethanestereo[AUXLIST]{ATOMLIST}{SUBSLIST} +% \end{verbatim} +% +% \begin{verbatim} +% AUXLIST: list of charges +% +% {n+} : + charge (or another one chararacter) on n-atom +% \end{verbatim} +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 6 +% +% n : single bond at n-atom +% +% \end{verbatim} +% +% \begin{verbatim} +% ATOMLIST: list of central atoms +% +% n : atom for n-position (e.g. 1==C) +% +% \end{verbatim} +% +% \begin{verbatim} +% e.g. +% +% \ethanestereo{1==Cl;2==F} +% \ethanestereo{1==C;2==C}{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% \changes{v5.00}{2010/10/01}{for bond coloring} +% +% \begin{macro}{\ethanestereo} +% \begin{macro}{\@ethanestereo} +% \begin{macrocode} +\def\ethanestereo{\@ifnextchar[{\@ethanestereo}{\@ethanestereo[]}} +\def\@ethanestereo[#1]#2#3{% +\begin{sfpicture}(600,800)(-300,-300) + \OrigptOutput(300,300){ethanestereo} +\Put@oCircle(0,0){200}% +\Put@oCircle(0,270){200}% +\Put@Line(0,100)(0,1){70}% central bond +\@tfor\member:=#1\do{% + \expandafter\twoch@@r\member{}{}% + \if\@@tmpa 1\relax \putratom{87}{90}{\scriptsize\@@tmpb} + \else\if\@@tmpa 2\relax \putratom{87}{360}{\scriptsize\@@tmpb} + \fi\fi}% +\def\aaa{#2}% +\ifx\aaa\empty\else% +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifcase\@tmpa% +\or\putratom{-40}{-33}{\@memberb}%central atom +\or\putratom{-40}{237}{\@memberb}%central atom +\fi\fi}%end of ifcase +\fi% +\@forsemicol\member:=#3\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifcase\@tmpa \putlratom{-40}{-33}{\@memberb}%central atom +\or% + \setBScolor{\Put@Line(-94,-10)(-5,-2){108}}% in back +% \Put@Line(-94,-10)(-5,-2){108}% in back + \putlatom{-205}{-110}{\@memberb}% and left +\or% + {\thicklines% + \setBScolor{\Put@Line(0,-50)(0,-1){150}}% behind and +% \Put@Line(0,-50)(0,-1){150}% behind and + \putlratom{-30}{-260}{\@memberb}}% down +\or% + \setBScolor{\Put@Line(94,-10)(5,-2){108}}% in back +% \Put@Line(94,-10)(5,-2){108}% in back + \putratom{210}{-110}{\@memberb}% and right +% %%%%%%%% +\or% + {\thicklines% + \setBScolor{\Put@Line(60,280)(5,2){140}}% in front +% \Put@Line(60,280)(5,2){140}% in front + \putratom{210}{300}{\@memberb}}% and right +\or% + \setBScolor{\Put@Line(0,370)(0,1){70}}% behind +% \Put@Line(0,370)(0,1){70}% behind + \putlratom{-30}{450}{\@memberb}% and up +\or% + {\thicklines% + \setBScolor{\Put@Line(-60,280)(-5,2){140}}% in front +% \Put@Line(-60,280)(-5,2){140}% in front + \putlatom{-205}{300}{\@memberb}}% and left +\fi\fi}%end of ifcase +\end{sfpicture}}%end of macro ethanestereo +%</aliphat> +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +%<*aliphat> +% \section{Wedged bonds for stereochemistry} +% \subsection{Various tetrahedral units with wedged bonds} +% +% The macros |\rtetrahedralS| etc. typesets tetrahedral units weith bold wedged +% bonds. The following modes of numbering are adopted in these macro. +% +% \begin{verbatim} +% ************************************** +% * tetrahedral units with wedged bonds * +% ************************************** +% +% +% 2 +% +% / +% 1 -- 0 0 <== the original point +% | | +% 3 4 +% 1,2,3,4 <== substituents +% \end{verbatim} +% +% This macro has an argument |SUBSLIST| as well as an optional +% argument |AUXLIST|. +% +% \begin{verbatim} +% \rtetrahedralS[AUXLIST]{SUBSLIST} +% \RtetrahedralS[AUXLIST]{SUBSLIST} +% \ltetrahedralS[AUXLIST]{SUBSLIST} +% \LtetrahedralS[AUXLIST]{SUBSLIST} +% \utetrahedralS[AUXLIST]{SUBSLIST} +% \UtetrahedralS[AUXLIST]{SUBSLIST} +% \dtetrahedralS[AUXLIST]{SUBSLIST} +% \DtetrahedralS[AUXLIST]{SUBSLIST} +% \htetrahedralS[AUXLIST]{SUBSLIST} +% \end{verbatim} +% +% The arugument |AUXLIST| designates an character on the central +% atom of the formula drawn by this macro. It can be used a plus +% or minus charge on the center. +% +% \begin{verbatim} +% AUXLIST = +% +% {0+} : + charge (or another one chararacter) on the center +% \end{verbatim} +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 4 +% +% n : single bond at n-atom +% +% for 0 : cetral atom (e.g. 0==C) +% \end{verbatim} +% \changes{v5.00}{2010/10/01}{for bond coloring} +% +% \begin{macro}{\rtetrahedralS} +% \begin{macro}{\@rtetrahedralS} +% \begin{macrocode} +\def\rtetrahedralS{\@ifnextchar[{\@rtetrahedralS[r}{\@rtetrahedralS[r]}} +\def\@rtetrahedralS#1]#2{% +\begingroup +\@reset@ylsw% +\centralatomcheck{#2}% +\ifno@centeratom\relax\@clipfusefalse\else\@clipfusetrue\fi% +\ylrtetrahedralSposition{#2}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(600,600)(-300,-300){rtetrahedralS}%2002/4/30 by S. Fujita +(300,300)% +\@tfor\member:=#1\do{% + \expandafter\twoch@@r\member{}{}% + \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}% +%set of bond and atoms +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa {\putlratom{-40}{-33}{\@memberb}}%central atom +\or\setBScolor{\setatombondh}%1 (-1,0) +%\setatombondh%1 (-1,0) +\or\setBScolor{\setatombondF}%2 (3,5) +%\setatombondF%2 (3,5) +\or\setBScolor{\setatombonde}%3 (5,-3) +%\setatombonde%3 (5,-3) +\or\setBScolor{\setatombondE}%4 (3,-5) +%\setatombondE%4 (3,-5) +\fi%end of ifcase +\fi\fi}% +%\@clipfusefalse% +\end{ShiftPicEnvB}% +\endgroup}%end of macro rtetrahedralS +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% The command |\ylrtetrahedralSposition| is used in +% |\rtetrahedralS| to adjust a substitution position. +% \changes{v4.02}{2004/12/20}{Newly added command: +% \cs{ylrtetrahedralSposition}} +% +% \begin{macro}{\ylrtetrahedralSposition} +% \begin{macrocode} +\def\ylrtetrahedralSposition#1{% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpa\relax + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%W subst. on 1 + \else + \gdef\@ylii{52}\gdef\@yli{0}\global\@ylswtrue%W subst. on 1 + \fi + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%N subst. on 2 + \else + \gdef\@ylii{-40}\gdef\@yli{-47}\global\@ylswtrue%N subst. on 2 + \fi + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3 + \else + \gdef\@ylii{-40}\gdef\@yli{20}\global\@ylswtrue%SE subst. on 3 + \fi + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3 + \else + \gdef\@ylii{-20}\gdef\@yli{47}\global\@ylswtrue%SE subst. on 3 + \fi% +\fi%end of ifcase +\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% \changes{v5.00}{2010/10/01}{for bond coloring} +% \begin{macro}{\ltetrahedralS} +% \begin{macro}{\@ltetrahedralS} +% \begin{macrocode} +\def\ltetrahedralS{\@ifnextchar[{\@ltetrahedralS[r}{\@ltetrahedralS[r]}} +\def\@ltetrahedralS#1]#2{% +\begingroup +\@reset@ylsw% +\centralatomcheck{#2}% +\ifno@centeratom\relax\@clipfusefalse\else\@clipfusetrue\fi% +\ylltetrahedralSposition{#2}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(600,600)(-300,-300){ltetrahedralS}%2002/4/30 by S. Fujita +(300,300)% +\@tfor\member:=#1\do{% + \expandafter\twoch@@r\member{}{}% + \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}% +%set of bond and atoms +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa {\putlratom{-40}{-33}{\@memberb}}%central atom +\or\setBScolor{\setatombondb}%1 (1,0) +%\setatombondb%1 (1,0) +\or\setBScolor{\setatombondD}%2 (-3,5) +%\setatombondD%2 (-3,5) +\or\setBScolor{\setatombondg}%3 (-5,-3) +%\setatombondg%3 (-5,-3) +\or\setBScolor{\setatombondG}%4 (-3,-5) +%\setatombondG%4 (-3,-5) +\fi%end of ifcase +\fi\fi}% +%\@clipfusefalse% +\end{ShiftPicEnvB}% +\endgroup}%end of macro ltetrahedralS +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% The command |\ylltetrahedralSposition| is used in +% |\ltetrahedralS| to adjust a substitution position. +% \changes{v4.02}{2004/12/20}{Newly added command: +% \cs{ylltetrahedralSposition}} +% +% \begin{macro}{\ylltetrahedralSposition} +% \begin{macrocode} +\def\ylltetrahedralSposition#1{% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpa\relax + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%W subst. on 1 + \else + \gdef\@ylii{-52}\gdef\@yli{0}\global\@ylswtrue%W subst. on 1 + \fi + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%N subst. on 2 + \else + \gdef\@ylii{40}\gdef\@yli{-47}\global\@ylswtrue%N subst. on 2 + \fi + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3 + \else + \gdef\@ylii{40}\gdef\@yli{20}\global\@ylswtrue%SE subst. on 3 + \fi + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3 + \else + \gdef\@ylii{20}\gdef\@yli{47}\global\@ylswtrue%SE subst. on 3 + \fi% +\fi%end of ifcase +\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% \changes{v5.00}{2010/10/01}{for bond coloring} +% \begin{macro}{\dtetrahedralS} +% \begin{macro}{\@dtetrahedralS} +% \begin{macrocode} +\def\dtetrahedralS{\@ifnextchar[{\@dtetrahedralS[r}{\@dtetrahedralS[r]}} +\def\@dtetrahedralS#1]#2{% +\begingroup +\@reset@ylsw% +\centralatomcheck{#2}% +\ifno@centeratom\relax\@clipfusefalse\else\@clipfusetrue\fi% +\yldtetrahedralSposition{#2}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(600,600)(-300,-300){dtetrahedralS}%2002/4/30 by S. Fujita +(300,300)% +\@tfor\member:=#1\do{% + \expandafter\twoch@@r\member{}{}% + \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}% +%set of bond and atoms +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa {\putlratom{-40}{-33}{\@memberb}}%central atom +\or\setBScolor{\setatombonda}%1 (0,1) +%\setatombonda%1 (0,1) +\or\setBScolor{\setatombonde}%5 (5,-3) +%\setatombonde%5 (5,-3) +\or\setBScolor{\setatombondg}%3 (-5,-3) +%\setatombondg%3 (-5,-3) +\or\setBScolor{\setatombondG}%4 (-3,-5) +%\setatombondG%4 (-3,-5) +\fi%end of ifcase +\fi\fi}% +%\@clipfusefalse% +\end{ShiftPicEnvB}% +\endgroup}%end of macro dtetrahedralS +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The command |\yldtetrahedralSposition| is used in +% |\dtetrahedralS| to adjust a substitution position. +% \changes{v4.02}{2004/12/20}{Newly added command: +% \cs{yldtetrahedralSposition}} +% +% \begin{macro}{\yldtetrahedralSposition} +% \begin{macrocode} +\def\yldtetrahedralSposition#1{% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpa\relax + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%N subst. on 1 + \else + \gdef\@ylii{0}\gdef\@yli{-47}\global\@ylswtrue%N subst. on 1 + \fi + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%W subst. on 2 + \else +% \gdef\@ylii{-52}\gdef\@yli{0}\global\@ylswtrue%W subst. on 2 + \gdef\@ylii{-42}\gdef\@yli{20}\global\@ylswtrue%W subst. on 2 + \fi + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3 + \else + \gdef\@ylii{40}\gdef\@yli{20}\global\@ylswtrue%SE subst. on 3 + \fi + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3 + \else + \gdef\@ylii{20}\gdef\@yli{47}\global\@ylswtrue%SE subst. on 3 + \fi% +\fi%end of ifcase +\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% \changes{v5.00}{2010/10/01}{for bond coloring} +% \begin{macro}{\DtetrahedralS} +% \begin{macro}{\@DtetrahedralS} +% \begin{macrocode} +\def\DtetrahedralS{\@ifnextchar[{\@DtetrahedralS[r}{\@DtetrahedralS[r]}} +\def\@DtetrahedralS#1]#2{% +\begingroup +\@reset@ylsw% +\centralatomcheck{#2}% +\ifno@centeratom\relax\@clipfusefalse\else\@clipfusetrue\fi% +\ylDtetrahedralSposition{#2}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(600,600)(-300,-300){DtetrahedralS}%2002/4/30 by S. Fujita +(300,300)% +\@tfor\member:=#1\do{% + \expandafter\twoch@@r\member{}{}% + \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}% +%set of bond and atoms +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa {\putlratom{-40}{-33}{\@memberb}}%central atom +\or\setBScolor{\setatombonda}%1 (0,1) +%\setatombonda%1 (0,1) +\or\setBScolor{\setatombondg}%5 (-5,-3) +%\setatombondg%5 (-5,-3) +\or\setBScolor{\setatombonde}%3 (5,-3) +%\setatombonde%3 (5,-3) +\or\setBScolor{\setatombondE}%4 (3,-5) +%\setatombondE%4 (3,-5) +\fi%end of ifcase +\fi\fi}% +%\@clipfusefalse% +\end{ShiftPicEnvB}% +\endgroup}%end of macro DtetrahedralS +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The command |\ylDtetrahedralSposition| is used in +% |\DtetrahedralS| to adjust a substitution position. +% \changes{v4.02}{2004/12/20}{Newly added command: +% \cs{ylDtetrahedralSposition}} +% +% \begin{macro}{\ylDtetrahedralSposition} +% \begin{macrocode} +\def\ylDtetrahedralSposition#1{% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpa\relax + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%W subst. on 1 + \else + \gdef\@ylii{0}\gdef\@yli{-47}\global\@ylswtrue%W subst. on 1 + \fi + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%N subst. on 2 + \else + \gdef\@ylii{40}\gdef\@yli{20}\global\@ylswtrue%N subst. on 2 + \fi + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3 + \else + \gdef\@ylii{-40}\gdef\@yli{20}\global\@ylswtrue%SE subst. on 3 + \fi + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3 + \else + \gdef\@ylii{-20}\gdef\@yli{47}\global\@ylswtrue%SE subst. on 3 + \fi% +\fi%end of ifcase +\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% \changes{v5.00}{2010/10/01}{for bond coloring} +% \begin{macro}{\utetrahedralS} +% \begin{macro}{\@utetrahedralS} +% \begin{macrocode} +\def\utetrahedralS{\@ifnextchar[{\@utetrahedralS[r}{\@utetrahedralS[r]}} +\def\@utetrahedralS#1]#2{% +\begingroup +\@reset@ylsw% +\centralatomcheck{#2}% +\ifno@centeratom\relax\@clipfusefalse\else\@clipfusetrue\fi% +\ylutetrahedralSposition{#2}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(600,600)(-300,-300){utetrahedralS}%2002/4/30 by S. Fujita +(300,300)% +\@tfor\member:=#1\do{% + \expandafter\twoch@@r\member{}{}% + \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}% +%set of bond and atoms +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa {\putlratom{-40}{-33}{\@memberb}}%central atom +\or\setBScolor{\setatombondc}%8 (0,-1) +%\setatombondc%8 (0,-1) +\or\setBScolor{\setatombondf}%3 (5,3) +%\setatombondf%3 (5,3) +\or\setBScolor{\setatombondD}%1 (-3,5) +%\setatombondD%1 (-3,5) +\or\setBScolor{\setatombondd}%3 (-5,3) +%\setatombondd%3 (-5,3) +\fi%end of ifcase +\fi\fi}% +%\@clipfusefalse% +\end{ShiftPicEnvB}% +\endgroup}%end of macro utetrahedralS +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The command |\ylutetrahedralSposition| is used in +% |\utetrahedralS| to adjust a substitution position. +% \changes{v4.02}{2004/12/20}{Newly added command: +% \cs{ylutetrahedralSposition}} +% +% \begin{macro}{\ylutetrahedralSposition} +% \begin{macrocode} +\def\ylutetrahedralSposition#1{% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpa\relax + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%N subst. on 1 + \else + \gdef\@ylii{0}\gdef\@yli{47}\global\@ylswtrue%N subst. on 1 + \fi + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%W subst. on 2 + \else + \gdef\@ylii{-42}\gdef\@yli{-20}\global\@ylswtrue%W subst. on 2 + \fi + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3 + \else + \gdef\@ylii{20}\gdef\@yli{-47}\global\@ylswtrue%SE subst. on 3 + \fi% + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3 + \else + \gdef\@ylii{40}\gdef\@yli{-20}\global\@ylswtrue%SE subst. on 3 + \fi +\fi%end of ifcase +\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% \changes{v5.00}{2010/10/01}{for bond coloring} +% \begin{macro}{\UtetrahedralS} +% \begin{macro}{\@UtetrahedralS} +% \begin{macrocode} +\def\UtetrahedralS{\@ifnextchar[{\@UtetrahedralS[r}{\@UtetrahedralS[r]}} +\def\@UtetrahedralS#1]#2{% +\begingroup +\@reset@ylsw% +\centralatomcheck{#2}% +\ifno@centeratom\relax\@clipfusefalse\else\@clipfusetrue\fi% +\ylUtetrahedralSposition{#2}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(600,600)(-300,-300){UtetrahedralS}%2002/4/30 by S. Fujita +(300,300)% +\@tfor\member:=#1\do{% + \expandafter\twoch@@r\member{}{}% + \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}% +%set of bond and atoms +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa {\putlratom{-40}{-33}{\@memberb}}%central atom +\or\setBScolor{\setatombondc}%1 (0,-1) +%\setatombondc%1 (0,-1) +\or\setBScolor{\setatombondd}%2 (-5,3) +%\setatombondd%2 (-5,3) +\or\setBScolor{\setatombondF}%3 (3,5) +%\setatombondF%3 (3,5) +\or\setBScolor{\setatombondf}%4 (5,3) +%\setatombondf%4 (5,3) +\fi%end of ifcase +\fi\fi}% +%\@clipfusefalse% +\end{ShiftPicEnvB}% +\endgroup}%end of macro UtetrahedralS +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% The command |\ylUtetrahedralSposition| is used in +% |\UtetrahedralS| to adjust a substitution position. +% \changes{v4.02}{2004/12/20}{Newly added command: +% \cs{ylUtetrahedralSposition}} +% +% \begin{macro}{\ylUtetrahedralSposition} +% \begin{macrocode} +\def\ylUtetrahedralSposition#1{% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpa\relax + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%W subst. on 1 + \else + \gdef\@ylii{0}\gdef\@yli{47}\global\@ylswtrue%W subst. on 1 + \fi + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%N subst. on 2 + \else + \gdef\@ylii{40}\gdef\@yli{-20}\global\@ylswtrue%N subst. on 2 + \fi + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3 + \else + \gdef\@ylii{-20}\gdef\@yli{-47}\global\@ylswtrue%SE subst. on 3 + \fi% + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3 + \else + \gdef\@ylii{-40}\gdef\@yli{-20}\global\@ylswtrue%SE subst. on 3 + \fi +\fi%end of ifcase +\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% \changes{v5.00}{2010/10/01}{for bond coloring} +% \begin{macro}{\htetrahedralS} +% \begin{macro}{\@htetrahedralS} +% \begin{macrocode} +\def\htetrahedralS{\@ifnextchar[{\@htetrahedralS[r}{\@htetrahedralS[r]}} +\def\@htetrahedralS#1]#2{% +\begingroup +\@reset@ylsw% +\centralatomcheck{#2}% +\ifno@centeratom\relax\@clipfusefalse\else\@clipfusetrue\fi% +\ylhtetrahedralSposition{#2}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(600,600)(-300,-300){htetrahedralS}%2002/4/30 by S. Fujita +(300,300)% +\@tfor\member:=#1\do{% + \expandafter\twoch@@r\member{}{}% + \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}% +%set of bond and atoms +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa {\putlratom{-40}{-33}{\@memberb}}%central atom +\or\setBScolor{\setatombondg}%5 (-5,-3) +%\setatombondg%5 (-5,-3) +\or\setBScolor{\setatombonde}%5 (5,-3) +%\setatombonde%5 (5,-3) +\or\setBScolor{\setatombondF}%1 (3,5) +%\setatombondF%1 (3,5) +\or\setBScolor{\setatombondD}%1 (-3,5) +%\setatombondD%1 (-3,5) +\fi%end of ifcase +\fi\fi}% +%\@clipfusefalse% +\end{ShiftPicEnvB}% +\endgroup}%end of macro htetrahedralS +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% The command |\ylhtetrahedralSposition| is used in +% |\htetrahedralS| to adjust a substitution position. +% \changes{v4.02}{2004/12/20}{Newly added command: +% \cs{ylhtetrahedralSposition}} +% +% \begin{macro}{\ylhtetrahedralSposition} +% \begin{macrocode} +\def\ylhtetrahedralSposition#1{% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpa\relax + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%W subst. on 1 + \else + \gdef\@ylii{40}\gdef\@yli{30}\global\@ylswtrue%W subst. on 1 + \fi + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%N subst. on 2 + \else + \gdef\@ylii{-40}\gdef\@yli{30}\global\@ylswtrue%N subst. on 2 + \fi + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3 + \else + \gdef\@ylii{-20}\gdef\@yli{-47}\global\@ylswtrue%SE subst. on 3 + \fi% + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3 + \else + \gdef\@ylii{40}\gdef\@yli{-47}\global\@ylswtrue%SE subst. on 3 + \fi +\fi%end of ifcase +\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% \changes{v5.00}{2010/10/01}{for bond coloring} +% \begin{macro}{\RtetrahedralS} +% \begin{macro}{\@RtetrahedralS} +% \begin{macrocode} +\def\RtetrahedralS{\@ifnextchar[{\@RtetrahedralS[r}{\@RtetrahedralS[r]}} +\def\@RtetrahedralS#1]#2{% +\begingroup +\@reset@ylsw% +\centralatomcheck{#2}% +\ifno@centeratom\relax\@clipfusefalse\else\@clipfusetrue\fi% +\ylRtetrahedralSposition{#2}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(600,600)(-300,-300){RtetrahedralS}%2002/4/30 by S. Fujita +(300,300)% +\@tfor\member:=#1\do{% + \expandafter\twoch@@r\member{}{}% + \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}% +%set of bond and atoms +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa {\putlratom{-40}{-33}{\@memberb}}%central atom +\or +\setBScolor{\setatombondh}%1 (-1,0) +%\setatombondh%1 (-1,0) +\or\setBScolor{\setatombondE}%7 (3,-5) +%\setatombondE%7 (3,-5) +\or\setBScolor{\setatombondF}%2 (3,5) +%\setatombondF%2 (3,5) +\or\setBScolor{\setatombondf}%3 (5,3) +%\setatombondf%3 (5,3) +\fi%end of ifcase +\fi\fi}% +%\@clipfusefalse% +\end{ShiftPicEnvB}% +\endgroup}%end of macro RtetrahedralS +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% The command |\ylRtetrahedralSposition| is used in +% |\RtetrahedralS| to adjust a substitution position. +% \changes{v4.02}{2004/12/20}{Newly added command: +% \cs{ylRtetrahedralSposition}} +% +% \begin{macro}{\ylRtetrahedralSposition} +% \begin{macrocode} +\def\ylRtetrahedralSposition#1{% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpa\relax + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%W subst. on 1 + \else + \gdef\@ylii{52}\gdef\@yli{0}\global\@ylswtrue%W subst. on 1 + \fi + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%N subst. on 2 + \else + \gdef\@ylii{-40}\gdef\@yli{47}\global\@ylswtrue%N subst. on 2 + \fi + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3 + \else + \gdef\@ylii{-40}\gdef\@yli{-47}\global\@ylswtrue%SE subst. on 3 + \fi + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3 + \else + \gdef\@ylii{-20}\gdef\@yli{-20}\global\@ylswtrue%SE subst. on 3 + \fi% +\fi%end of ifcase +\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% \changes{v5.00}{2010/10/01}{for bond coloring} +% \begin{macro}{\LtetrahedralS} +% \begin{macro}{\@LtetrahedralS} +% \begin{macrocode} +\def\LtetrahedralS{\@ifnextchar[{\@LtetrahedralS[r}{\@LtetrahedralS[r]}} +\def\@LtetrahedralS#1]#2{% +\begingroup +\@reset@ylsw% +\centralatomcheck{#2}% +\ifno@centeratom\relax\@clipfusefalse\else\@clipfusetrue\fi% +\ylLtetrahedralSposition{#2}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(600,600)(-300,-300){LtetrahedralS}%2002/4/30 by S. Fujita +(300,300)% +\@tfor\member:=#1\do{% + \expandafter\twoch@@r\member{}{}% + \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}% +%set of bond and atoms +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa {\putlratom{-40}{-33}{\@memberb}}%central atom +\or +\setBScolor{\setatombondb}%1 (1,0) +%\setatombondb%1 (1,0) +\or\setBScolor{\setatombondG}%2 (-3,-5) +%\setatombondG%2 (-3,-5) +\or\setBScolor{\setatombondD}%3 (-3,5) +%\setatombondD%3 (-3,5) +\or\setBScolor{\setatombondd}%4 (-5,3) +%\setatombondd%4 (-5,3) +\fi%end of ifcase +\fi\fi}% +%\@clipfusefalse% +\end{ShiftPicEnvB}% +\endgroup}%end of macro LtetrahedralS +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% The command |\ylLtetrahedralSposition| is used in +% |\LtetrahedralS| to adjust a substitution position. +% \changes{v4.02}{2004/12/20}{Newly added command: +% \cs{ylLtetrahedralSposition}} +% +% \begin{macro}{\ylLtetrahedralSposition} +% \begin{macrocode} +\def\ylLtetrahedralSposition#1{% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpa\relax + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%W subst. on 1 + \else + \gdef\@ylii{-52}\gdef\@yli{0}\global\@ylswtrue%W subst. on 1 + \fi + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%N subst. on 2 + \else + \gdef\@ylii{40}\gdef\@yli{47}\global\@ylswtrue%N subst. on 2 + \fi + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3 + \else + \gdef\@ylii{40}\gdef\@yli{-47}\global\@ylswtrue%SE subst. on 3 + \fi + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3 + \else + \gdef\@ylii{20}\gdef\@yli{-20}\global\@ylswtrue%SE subst. on 3 + \fi% +\fi%end of ifcase +\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% \subsection{Trigonal bipyramidal uits for transition states} +% +% \changes{v5.00}{2010/10/01}{for bond coloring} +% \begin{macro}{\utrigpyramid} +% \begin{macro}{\@utrigpyramid} +% \begin{macrocode} +\def\utrigpyramid{\@ifnextchar[{\@utrigpyramid[r}{\@utrigpyramid[r]}} +\def\@utrigpyramid#1]#2{% +\begingroup +\@reset@ylsw% +\centralatomcheck{#2}% +\ifno@centeratom\relax\@clipfusefalse\else\@clipfusetrue\fi% +\ylutrigpyramidposition{#2}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(600,600)(-300,-300){utrigpyramid}%2002/4/30 by S. Fujita +(300,300)% +\@tfor\member:=#1\do{% + \expandafter\twoch@@r\member{}{}% + \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}% +%set of bond and atoms +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa {\putlratom{-40}{-33}{\@memberb}}%central atom +\or\setBScolor{\setatombondc}%1 (0,-1) +%\setatombondc%1 (0,-1) +\or\setBScolor{\setatombondF}%2 (3,5) +%\setatombondF%2 (3,5) +\or\setBScolor{\setatombondD}%3 (-3,5) +%\setatombondD%3 (-3,5) +\or{\let\dotorline=\d@t@rline \setBScolor{\setatombondh}}%4 (-1,0) +%{\let\dotorline=\d@t@rline \setatombondh}%4 (-1,0) +\or{\let\dotorline=\d@t@rline \setBScolor{\setatombondb}}%5 (1,0) +%{\let\dotorline=\d@t@rline \setatombondb}%5 (1,0) +\fi%end of ifcase +\fi\fi}% +%\@clipfusefalse% +\end{ShiftPicEnvB}% +\endgroup}%end of macro utrigpyramid +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The command |\ylutrigpyramidposition| is used in +% |\utrigpyramid| to adjust a substitution position. +% \changes{v4.02}{2004/12/20}{Newly added command: +% \cs{ylutrigpyramidposition}} +% +% \begin{macro}{\ylutrigpyramidposition} +% \begin{macrocode} +\def\ylutrigpyramidposition#1{% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpa\relax + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%W subst. on 1 + \else + \gdef\@ylii{0}\gdef\@yli{47}\global\@ylswtrue%W subst. on 1 + \fi + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%N subst. on 2 + \else + \gdef\@ylii{-20}\gdef\@yli{-47}\global\@ylswtrue%N subst. on 2 + \fi + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3 + \else + \gdef\@ylii{20}\gdef\@yli{-47}\global\@ylswtrue%SE subst. on 3 + \fi% + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3 + \else + \gdef\@ylii{40}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3 + \fi + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3 + \else + \gdef\@ylii{-40}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3 + \fi +\fi%end of ifcase +\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% \changes{v5.00}{2010/10/01}{for bond coloring} +% \begin{macro}{\dtrigpyramid} +% \begin{macro}{\@dtrigpyramid} +% \begin{macrocode} +\def\dtrigpyramid{\@ifnextchar[{\@dtrigpyramid[r}{\@dtrigpyramid[r]}} +\def\@dtrigpyramid#1]#2{% +\begingroup +\@reset@ylsw% +\centralatomcheck{#2}% +\ifno@centeratom\relax\@clipfusefalse\else\@clipfusetrue\fi% +\yldtrigpyramidposition{#2}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(600,600)(-300,-300){dtrigpyramid}%2002/4/30 by S. Fujita +(300,300)% +\@tfor\member:=#1\do{% + \expandafter\twoch@@r\member{}{}% + \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}% +%set of bond and atoms +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa {\putlratom{-40}{-33}{\@memberb}}%central atom +\or\setBScolor{\setatombonda}%1 (0,1) +%\setatombonda%1 (0,1) +\or\setBScolor{\setatombondE}%2 (3,-5) +%\setatombondE%2 (3,-5) +\or\setBScolor{\setatombondG}%3 (-3,-5) +%\setatombondG%3 (-3,-5) +\or{\let\dotorline=\d@t@rline \setBScolor{\setatombondh}}%4 (-1,0) +%{\let\dotorline=\d@t@rline \setatombondh}%4 (-1,0) +\or{\let\dotorline=\d@t@rline \setBScolor{\setatombondb}}%5 (1,0) +%{\let\dotorline=\d@t@rline \setatombondb}%5 (1,0) +\fi%end of ifcase +\fi\fi}% +%\@clipfusefalse% +\end{ShiftPicEnvB}% +\endgroup}%end of macro dtrigpyramid +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% The command |\yldtrigpyramidposition| is used in +% |\dtrigpyramid| to adjust a substitution position. +% \changes{v4.02}{2004/12/20}{Newly added command: +% \cs{yldtrigpyramidposition}} +% +% \begin{macro}{\yldtrigpyramidposition} +% \begin{macrocode} +\def\yldtrigpyramidposition#1{% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpa\relax + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%W subst. on 1 + \else + \gdef\@ylii{0}\gdef\@yli{-47}\global\@ylswtrue%W subst. on 1 + \fi + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%N subst. on 2 + \else + \gdef\@ylii{-20}\gdef\@yli{47}\global\@ylswtrue%N subst. on 2 + \fi + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3 + \else + \gdef\@ylii{20}\gdef\@yli{47}\global\@ylswtrue%SE subst. on 3 + \fi% + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3 + \else + \gdef\@ylii{40}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3 + \fi + \or + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3 + \else + \gdef\@ylii{-40}\gdef\@yli{0}\global\@ylswtrue%SE subst. on 3 + \fi +\fi%end of ifcase +\fi\fi\fi}}% +%</aliphat> +% \end{macrocode} +% \end{macro} +% +% \Finale +% +\endinput diff --git a/Master/texmf-dist/source/latex/xymtex/base/aliphat.ins b/Master/texmf-dist/source/latex/xymtex/base/aliphat.ins new file mode 100644 index 00000000000..51a8d8c17b2 --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/aliphat.ins @@ -0,0 +1,61 @@ +\def\batchfile{aliphat.ins} +\input docstrip.tex +\preamble + +This is a generated file. + +Copyright 1996, 1998, 2001, 2002, 2004, 2005, 2009, 2010, 2013 by Shinsaku Fujita + +This file is part of the XyMTeX system. +======================================= + +Old Versions: +Version 1.01 Released on August 16, 1996 +Version 1.02 Released on October 31, 1996 +Version 2.00 Released on December 25, 1998 +Version 2.01 Released on June 20, 2001 (private version) +Version 3.00 Released on April 30, 2002 +Version 4.00 Released on May 30, 2002 +Version 4.01 Released on August 30, 2004 +Version 4.02 Released on December 20, 2004 +Version 4.03 Released on July 20, 2005 +Version 4.05 Released on September 07, 2009 +Version 5.00 Released on October 01, 2010 +Version 5.01b Released on April 02, 2013 + +The Present Version: +Version 5.01 Released on July 20, 2013 + +Copyright (C) 1996, 1998, 2001, 2002, 2004, 2005, 2009, 2010, 2013 by Shinsaku Fujita, +all rights reserved. +This style file is created for drawing chemical structural formulas +This style file is to be contained in the ``xymtex'' directory which +is an input directory for TeX. + +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 aliphat.dtx and aliphat.ins +and the derived file aliphat.sty. + +======================================= + +\endpreamble + +\keepsilent + +\generateFile{aliphat.drv}{t}{% + \from{aliphat.dtx}{driver}} + +\generateFile{aliphat.sty}{t}{% + \from{aliphat.dtx}{aliphat}} + +\endinput diff --git a/Master/texmf-dist/source/latex/xymtex/base/assurelatexmode.dtx b/Master/texmf-dist/source/latex/xymtex/base/assurelatexmode.dtx new file mode 100644 index 00000000000..cc8834aa14a --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/assurelatexmode.dtx @@ -0,0 +1,340 @@ +% \iffalse meta-comment +%% File: assurelatexmode.dtx +% +% Copyright 2010,2013 by Shinsaku Fujita +% +% This file is part of XyMTeX system. +% ------------------------------------- +% +% This file (assurelatexmode.sty) is a successor to: +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 1.00} +% \typeout{ -- Released December 1, 1993 by Shinsaku Fujita} +% Copyright (C) 1993 by Shinsaku Fujita, all rights reserved. +% +% This file is a part of the macro package ``XyMTeX'' which has been +% designed for typesetting chemical structural formulas. +% +% This file is to be contained in the ``xymtex'' directory which is +% an input directory for TeX. It is a LaTeX optional style file and +% should be used only within LaTeX, because several macros of the file +% are based on LaTeX commands. +% +% For the review of XyMTeX, see +% (1) Shinsaku Fujita, ``Typesetting structural formulas with the text +% formatter TeX/LaTeX'', Computers and Chemistry, in press. +% The following book deals with an application of TeX/LaTeX to +% preparation of manuscripts of chemical fields: +% (2) Shinsaku Fujita, ``LaTeX for Chemists and Biochemists'' +% Tokyo Kagaku Dozin, Tokyo (1993) [in Japanese]. +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% The Current Maintainer of this work is Shinsaku Fujita. +% +% This work consists of the files assurelatexmode.dtx and assurelatexmode.ins +% and the derived file lewisstruc.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 +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{assurelatexmode} +% \def\versi@ndate{October 01, 2010} +% \def\versi@nno{ver5.00} +% \def\copyrighth@lder{SF}% Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \fi +% +% \CheckSum{189} +%% \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{v5.00}{2010/10/01}{First release for XyMTeX5.00} +% \fi +% +% \iffalse +%<*driver> +\NeedsTeXFormat{pLaTeX2e} +% \fi +\ProvidesFile{assurelatexmode.dtx}[2010/10/01 v5.00 assurelatexmode package file] +% \iffalse +\documentclass{ltxdoc} +\GetFileInfo{lewisstruc.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{Dummy Declarations for assuring the \protect\TeX/\protect\LaTeX{} mode +by {\sffamily assurelatexmode.sty} +(\fileversion) of \XyMTeX{}} +\author{Shinsaku Fujita \\ +Shonan Institute of Chemoinformatics and +Mathematical Chemistry \\ +Kanagawa, 258-0019 Japan +} +\date{\filedate} +% +\begin{document} + \maketitle + \DocInput{assurelatexmode.dtx} +\end{document} +%</driver> +% \fi +% +% \section{Introduction}\label{assurelatexmode:intro} +% +% \subsection{Options for {\sffamily docstrip}} +% +% \DeleteShortVerb{\|} +% \begin{center} +% \begin{tabular}{|l|l|} +% \hline +% \emph{option} & \emph{function}\\ \hline +% assurelatexmode & assurelatexmode.sty \\ +% driver & driver for this dtx file \\ +% \hline +% \end{tabular} +% \end{center} +% \MakeShortVerb{\|} +% +% \subsection{Version Information} +% +% \begin{macrocode} +%<*assurelatexmode> +\typeout{Part of XyMTeX for Drawing Chemical Structural Formulas. Version 5.01} +\typeout{ -- Released May 27, 2013 by Shinsaku Fujita} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\j@urnalname{assurelatexmode} +\def\versi@ndate{May 27, 2013} +\def\versi@nno{ver5.01} +\def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\typeout{XyMTeX Macro File `\j@urnalname' (\versi@nno) <\versi@ndate>% +\space[\copyrighth@lder]} +% \end{macrocode} +% +% \begin{macrocode} +\RequirePackage{chemstr} +% \end{macrocode} +% +% \section{Dummy Declarations} +% If a document written for the PostScript or PDF mode is processed by the TeX/LaTeX mode, +% some commands for the PS or PDF mode (defined in the \textsf{xymtx-ps} or \textsf{xymtx-pdf} +% package) cause errors of non-existence. To avoid these errors, +% dummy commands are defined as follows. These dummy commands are overwritten or replaced by +% equivalent commands when processed by the PS or PDF mode. +% +% \begin{macro}{changedashtowedge} +% \begin{macro}{changewedgetodash} +% \changes{v5.00}{2010/10/01}{TeX/LaTeX, PS, and PDF modes: Switch for wedged bonds} +% \begin{macrocode} +\newif\if@wedgesw \@wedgeswtrue +\newif\if@hasheddashsw \@hasheddashswtrue +\def\wedgehasheddash{\@wedgeswtrue\@hasheddashswtrue} +\def\wedgehashedwedge{\@wedgeswtrue\@hasheddashswfalse} +\def\dashhasheddash{\@wedgeswfalse\@hasheddashswtrue} +\@ifundefined{ifmolfront}{\newif\ifmolfront \molfrontfalse}{} +\@ifundefined{if@skbondlist}{\newif\if@skbondlist \@skbondlistfalse}{} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\if@thicklinesw etc.} +% \changes{v5.00}{2010/10/01}{TeX/LaTeX mode compatible to PS, and PDF modes} +% \begin{macrocode} +\newif\if@thicklinesw \@thicklineswfalse +\def\Thick@Lines{\@thicklineswtrue}%redefinition +\def\Thin@Lines{\@thicklineswfalse}%redefinition +\def\thickLineWidth{1.6pt} +\def\thinLineWidth{0.4pt} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{WedgeAsSubst} +% \changes{v5.00}{2010/10/01}{TeX/LaTeX mode compatible to PS, and PDF modes} +% \begin{macrocode} +\def\WedgeAsSubstTeXLaTeX(#1,#2)(#3,#4)#5{% +\begingroup +\@thicklineswtrue \@wedgeswtrue +\molfrontfalse \@skbondlistfalse +\leavevmode +\Put@@Line(#1,#2)(#3,#4){#5}% +\endgroup} +\let\WedgeAsSubst=\WedgeAsSubstTeXLaTeX%for compatibility to PS/PDF mode +% \end{macrocode} +% \end{macro} +% +% The macro |\WedgeAsSubstX| has a starting point, +% an endpoint, and the width of a wedge as its arguments. +% Compare this command with |\WedgeAsSubst|, which has +% a starting point, a slope, and the width of a wedge +% as its arguments. +% +% \begin{macro}{WedgeAsSubstX} +% \changes{v5.01}{2013/05/27}{TeX/LaTeX mode compatible to PS, and PDF modes} +% \begin{macrocode} +\def\WedgeAsSubstXTeXLaTeX(#1,#2)(#3,#4){% +\@ifnextchar[{\Wedge@AsSubstXTeXLaTeX(#1,#2)(#3,#4)}% +{\Wedge@AsSubstXTeXLaTeX(#1,#2)(#3,#4)[10]}} +\def\Wedge@AsSubstXTeXLaTeX(#1,#2)(#3,#4)[#5]{% +\begingroup +%#5 not used +\leavevmode \thicklines +\drawline(#1,#2)(#3,#4)% +\endgroup} +\let\WedgeAsSubstX=\WedgeAsSubstXTeXLaTeX%for compatibility to PS/PDF mode +% \end{macrocode} +% \end{macro} +% +% The macro |\PUT@@bondLINE| is used in the macro |\Put@@Line|, +% which draws a bond line. +% +% \begin{macro}{\PUT@@bondLINE} +% \begin{macro}{\PutTeXLaTeXLine} +% \begin{macro}{\PutBondLine} +% \changes{v5.00}{2010/10/01}{TeX/LaTeX mode compatible to PS, and PDF modes} +% \begin{macrocode} +\def\PUT@@bondLINE(#1,#2)(#3,#4)#5{\begingroup% +\linethickness{#5}\drawline(#1,#2)(#3,#4)% +\endgroup} +\let\PutTeXLaTeXLine=\PUT@@bondLINE%for user's use +\let\PutBondLine=\PUT@@bondLINE%for user's use +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The macro |\PUT@@dashedLINE| is used to draw a dashed bond line, +% which usually links two non-adjacent atoms of a cyclic compound. +% +% \begin{macro}{\PUT@@dashedLINE} +% \begin{macro}{\PutTeXLaTeXdashed} +% \begin{macro}{\PutDashedBond} +% \changes{v5.00}{2010/10/01}{TeX/LaTeX mode compatible to PS, and PDF modes} +% \begin{macrocode} +\def\PUT@@dashedLINE(#1,#2)(#3,#4)#5{% +\begingroup +\ifdim\unitlength>0.08pt +\linethickness{#5}\dottedline{20}(#1,#2)(#3,#4)% +%\dashline{2}[2](#1,#2)(#3,#4)% +\else +\linethickness{#5}\dottedline{20}(#1,#2)(#3,#4) +%\dashline{1.8}[1.8](#1,#2)(#3,#4)% +\fi +\endgroup +} +\let\PutTeXLaTeXdashed=\PUT@@dashedLINE%for user's use +\let\PutDashedBond=\PUT@@dashedLINE%for compatibility to PS and PDF mode +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\HashWedgeAsSubst} +% \changes{v5.01}{2010/05/27}{TeX/LaTeX mode compatible to PS, and PDF modes} +% \begin{macrocode} +\def\HashWedgeAsSubstTeXLaTeX(#1,#2)(#3,#4)#5{% +\begingroup +\SlopetoXY(#1,#2)(#3,#4){#5}%%replaced (code from chemstr.sty) +\leavevmode +\linethickness{1pt}\dottedline{20}(#1,#2)(\the\@tempcntXa,\the\@tempcntYa)% +\endgroup} +\let\HashWedgeAsSubst=\HashWedgeAsSubstTeXLaTeX%for compatibility to PS and PDF mode +% \end{macrocode} +% \end{macro} +% +% The macro |\HashWedgeAsSubstX| has a starting point, +% an endpoint, and the width of a wedge as its arguments. +% Compare this command with |\HashWedgeAsSubst|, which has +% a starting point, a slope, and the width of a wedge +% as its arguments. +% +% \begin{macro}{\HashWedgeAsSubstX} +% \changes{v5.01}{2010/05/27}{TeX/LaTeX mode compatible to PS, and PDF modes} +% \begin{macrocode} +\def\HashWedgeAsSubstXTeXLaTeX(#1,#2)(#3,#4){% +\@ifnextchar[{\HashWedge@AsSubstXTeXLaTeX(#1,#2)(#3,#4)}% +{\HashWedge@AsSubstXTeXLaTeX(#1,#2)(#3,#4)[10]}} +\def\HashWedge@AsSubstXTeXLaTeX(#1,#2)(#3,#4)[#5]{% +\begingroup +\leavevmode\@tempdima=#5\unitlength +\linethickness{\@tempdima}\dottedline{20}(#1,#2)(#3,#4) +\endgroup} +\let\HashWedgeAsSubstX=\HashWedgeAsSubstXTeXLaTeX%for compatibility to PS and PDF mode +% \end{macrocode} +% \end{macro} +% +% The macro |\putRoundArrowTeXLaTeX| throws its main task to its inner +% macro |\putRound@rrowTeXLaTeX|, which is incapable of treating +% an optional argument for specifying the direction of an arrow head. +% The macro |\putRoundArrow| is defined as a user command to +% assure the compatibility to the PostScript and the PDF mode. +% This command should be used in the PostScript or the PDF mode! +% +% \begin{macro}{\putRoundArrowTeXLaTeX} +% \begin{macro}{\putRound@rrowTeXLaTeX} +% \begin{macro}{\putRoundArrow} +% \changes{v5.00}{2010/10/01}{For TeXLaTeX mode} +% \begin{macrocode} +\def\putRoundArrowTeXLaTeX{% +\@ifnextchar[{\putRound@rrowTeXLaTeX}{\putRound@rrowTeXLaTeX[->]}} +\def\putRound@rrowTeXLaTeX[#1]#2{\drawline#2% + \XyMTeXWarning{The command + \string\putRoundArrow\space is unavailable in TeX/LaTeX mode. ^^J + Please try the PostScript or PDF mode}} +\let\putRoundArrow=\putRoundArrowTeXLaTeX%for the compatibility to PDF and PS mode +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\thinlines} +% \begin{macro}{\thicklines} +% \changes{v5.00}{2010/10/01}{TeX/LaTeX mode compatible to PS, and PDF modes} +% \begin{macrocode} +\gdef\thinlines{\let\@linefnt\tenln \let\@circlefnt\tencirc + \@wholewidth=\thinLineWidth \@halfwidth .5\@wholewidth} +\gdef\thicklines{\let\@linefnt\tenlnw \let\@circlefnt\tencircw + \@wholewidth=\thickLineWidth \@halfwidth .5\@wholewidth} +\endinput +%</assurelatexmode> +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \Finale +% +\endinput diff --git a/Master/texmf-dist/source/latex/xymtex/base/assurelatexmode.ins b/Master/texmf-dist/source/latex/xymtex/base/assurelatexmode.ins new file mode 100644 index 00000000000..3f9e3466672 --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/assurelatexmode.ins @@ -0,0 +1,45 @@ +\def\batchfile{assurelatexmode.ins} +\input docstrip.tex +\preamble + +This is a generated file. + +Copyright 2010,2013 by Shinsaku Fujita +all rights reserved. +This style file is created for drawing chemical structural formulas +This style file is to be contained in the ``xymtex'' directory which +is an input directory for TeX. + +This file is part of the XyMTeX system. +======================================= +old Version 5.00 Released on October 01, 2010 +======================================= +Version 5.01 Released on May 27, 2013 + +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 assurelatexmode.dtx and assurelatexmode.ins +and the derived file assurelatexmode.sty. + +======================================= + +\endpreamble + +\keepsilent + +\generateFile{assurelatexmode.drv}{t}{% + \from{assurelatexmode.dtx}{driver}} + +\generateFile{assurelatexmode.sty}{t}{% + \from{assurelatexmode.dtx}{assurelatexmode}} + +\endinput diff --git a/Master/texmf-dist/source/latex/xymtex/base/bondcolor.dtx b/Master/texmf-dist/source/latex/xymtex/base/bondcolor.dtx new file mode 100644 index 00000000000..fc86de1cec7 --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/bondcolor.dtx @@ -0,0 +1,738 @@ +% \iffalse meta-comment +%% File: bondcolor.dtx +% +% Copyright 2010 by Shinsaku Fujita +% +% This file is part of XyMTeX system. +% ------------------------------------- +% +% This file (bondcolor.sty) is a successor to: +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 1.00} +% \typeout{ -- Released December 1, 1993 by Shinsaku Fujita} +% Copyright (C) 1993 by Shinsaku Fujita, all rights reserved. +% +% This file is a part of the macro package ``XyMTeX'' which has been +% designed for typesetting chemical structural formulas. +% +% This file is to be contained in the ``xymtex'' directory which is +% an input directory for TeX. It is a LaTeX optional style file and +% should be used only within LaTeX, because several macros of the file +% are based on LaTeX commands. +% +% For the review of XyMTeX, see +% (1) Shinsaku Fujita, ``Typesetting structural formulas with the text +% formatter TeX/LaTeX'', Computers and Chemistry, in press. +% The following book deals with an application of TeX/LaTeX to +% preparation of manuscripts of chemical fields: +% (2) Shinsaku Fujita, ``LaTeX for Chemists and Biochemists'' +% Tokyo Kagaku Dozin, Tokyo (1993) [in Japanese]. +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% The Current Maintainer of this work is Shinsaku Fujita. +% +% This work consists of the files bondcolor.dtx and bondcolor.ins +% and the derived file lewisstruc.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 +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{bondcolor} +% \def\versi@ndate{October 01, 2010} +% \def\versi@nno{ver5.00} +% \def\copyrighth@lder{SF}% Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \fi +% +% \CheckSum{960} +%% \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{v5.00}{2010/10/01}{First release for XyMTeX5.00} +% \fi +% +% \iffalse +%<*driver> +\NeedsTeXFormat{pLaTeX2e} +% \fi +\ProvidesFile{bondcolor.dtx}[2010/10/01 v5.00 bondcolor package file] +% \iffalse +\documentclass{ltxdoc} +\GetFileInfo{lewisstruc.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{Bond Coloring by {\sffamily bondcolor.sty} +(\fileversion) of \XyMTeX{}} +\author{Shinsaku Fujita \\ +Shonan Institute of Chemoinformatics and +Mathematical Chemistry \\ +Kanagawa, 258-0019 Japan +} +\date{\filedate} +% +\begin{document} + \maketitle + \DocInput{bondcolor.dtx} +\end{document} +%</driver> +% \fi +% +% \section{Introduction}\label{bondcolor:intro} +% +% \subsection{Options for {\sffamily docstrip}} +% +% \DeleteShortVerb{\|} +% \begin{center} +% \begin{tabular}{|l|l|} +% \hline +% \emph{option} & \emph{function}\\ \hline +% bondcolor & bondcolor.sty \\ +% driver & driver for this dtx file \\ +% \hline +% \end{tabular} +% \end{center} +% \MakeShortVerb{\|} +% +% \subsection{Version Information} +% +% \begin{macrocode} +%<*bondcolor> +\typeout{Part of XyMTeX for Drawing Chemical Structural Formulas. Version 5.00} +\typeout{ -- Released October 01, 2010 by Shinsaku Fujita} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\j@urnalname{bondcolor} +\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} +% +% \begin{macrocode} +\RequirePackage{chemstr} +\RequirePackage{hetarom} +\RequirePackage{hetaromh} +\RequirePackage{methylen} +% \end{macrocode} +% +% \section{Substitution Bond Coloring} +% +% \begin{macro}{\ifcolorBLsw} +% A switch |\ifcolorBLsw| is introduced to judging whether the present process +% is in BONDLIST or in ATOMLIST. +% +% \begin{macrocode} +\newif\ifcolorBLsw \colorBLswfalse +% \end{macrocode} +% \end{macro} +% +% The macro |\RightAtomBond| is defined to color substitution bonds (and substituents), +% when it is to be designated in ATOMLIST or in BONDLIST of a command for drawing +% a structural formula. +% +% \begin{verbatim} +% \RightAtomBond(x,y)[COLOR]<CLIPPING>{SUBSTLIST} +% \end{verbatim} +% +% The first optional argument (x,y) represents increments of x-, and y-coordinates, +% which may be added if adjustment is necessary. The default value is (0,0). +% The second optional argument [COLOR] is a command of coloring (e.g., |\red|). +% The default value is |\black|. +% The third optional argument <CLIPPING> accomodates \verb/<s>/ for non-clipping and +% a vacant or omitted argument represents a clipping of a corner. +% The defalt value is a vacant value. +% The fourth argument is a SUBSLIST, in which a substitution number 1--8 represents +% a bond slope to be drawn. Slopes to cover a right-handed half circle are numbered +% on a similar line to those of the |\ryl| macro, as follows: +% \begin{verbatim} +% SLOPE +% +% 1 : (0,1) +% 2 : (3,5) +% 3 : (1,1) +% 4 : (1,0) +% 5 : (5,-3) +% 6 : (1,-1) +% 7 : (3,-5) +% 8 : (0,-1) +% \end{verbatim} +% As for the format of the SUBSLIST, see the specification of the |\ryl| command. +% +% \begin{macro}{\RightAtomBond} +% \begin{macro}{\Right@tomBond} +% \begin{macro}{\Right@tomB@nd} +% \begin{macro}{\Right@t@mB@nd} +% \begin{macrocode} +\def\RightAtomBond{% +\@ifnextchar({\Right@tomBond}{\Right@tomBond(0,0)}} +\def\Right@tomBond(#1,#2){% +\@ifnextchar[{\Right@tomB@nd(#1,#2)}{\Right@tomB@nd(#1,#2)[\black]}} +\def\Right@tomB@nd(#1,#2)[#3]{% +\@ifnextchar<{\Right@t@mB@nd(#1,#2)[#3]}{\Right@t@mB@nd(#1,#2)[#3]<>}} +\def\Right@t@mB@nd(#1,#2)[#3]<#4>#5{% +\begingroup +\global\let\FuseWarning=\futileFuseWarning +\let\setbscolor=#3\relax +\@ifundefined{@tmpb}{\edef\@tmpb{0}}{}%dummy +\@ifundefined{@@tmpa}{\colorBLswfalse}{\if\@@tmpa @\relax\else +\edef\@@tmpa{a}\colorBLswtrue\fi}%enforced setting +%\@tempcntXa=\z@ \@tempcntYa=\z@ +\@tempcntXa=#1\relax \@tempcntYa=#2\relax +\if\@tmpb s\relax + \@clipfusefalse +\else + \if#4s\relax + \@clipfusefalse + \else + \ifcolorBLsw + \@clipfusetrue + \advance\@tempcntXa by5\relax%tentative value + \advance\@tempcntYa by-15\relax%tentative value + \colorBLswfalse + \else + \@clipfusetrue + \advance\@tempcntXa by40\relax%tentative value + \advance\@tempcntYa by38\relax%tentative value +\fi\fi\fi +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents % +% %%%%%%%%%%%%%%%%%%%%%%%% +\@forsemicol\member:=#5\do{% +\ifx\member\empty\else% +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\let\local@tmpa=\@tmpa%global to local 2002/5/30 by SF +\ifcase\local@tmpa% +\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)% +{{\setbscolor\setatombonda}\addbscolor{}{}}%2010/10/01% 0 (upward) (0,1) +\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)% +{\setatombondF}\addbscolor{}{}}%2010/10/01%%1 (3,5) +\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)% +{\setatombondA}\addbscolor{}{}}%2010/10/01%%2 (1,1) +\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)% +{\setatombondf}\addbscolor{}{}}%2010/10/01%%3 (5,3) +\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)% +{\setatombondb}\addbscolor{}{}}%2010/10/01%%4 (1,0) +\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)% +{\setatombonde}\addbscolor{}{}}%2010/10/01%%5 (5,-3) +\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)% +{\setatombondB}\addbscolor{}{}}%2010/10/01%\or%6 (1,-1) +\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)% +{\setatombondE}\addbscolor{}{}}%2010/10/01%%7 (3,-5) +\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)% +{\setatombondc}\addbscolor{}{}}%2010/10/01%%8 (0,-1) +\fi%end of ifcase +\fi}\endgroup}%end of definition of \RightAtomBond +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The macro |\LeftAtomBond| is defined to color substitution bonds (and substituents), +% when it is to be designated in ATOMLIST or in BONDLIST of a command for drawing +% a structural formula. +% +% \begin{verbatim} +% \LeftAtomBond(x,y)[COLOR]<CLIPPING>{SUBSTLIST} +% \end{verbatim} +% +% The first optional argument (x,y) represents increments of x-, and y-coordinates, +% which may be added if adjustment is necessary. The default value is (0,0). +% The second optional argument [COLOR] is a command of coloring (e.g., |\red|). +% The default value is |\black|. +% The third optional argument <CLIPPING> accomodates \verb/<s>/ for non-clipping and +% a vacant or omitted argument represents a clipping of a corner. +% The defalt value is a vacant value. +% The fourth argument is a SUBSLIST, in which a substitution number 1--8 represents +% a bond slope to be drawn. Slopes to cover a left-handed half circle are numbered +% on a similar line to those of the |\lyl| macro, as follows: +% +% \begin{verbatim} +% SLOPE +% 1 : (0,1) +% 2 : (-3,5) +% 3 : (-1,1) +% 4 : (-1,0) +% 5 : (-5,-3) +% 6 : (-1,-1) +% 7 : (-3,-5) +% 8 : (0,-1) +% \end{verbatim} +% As for the format of the SUBSLIST, see the specification of the |\lyl| command. +% +% \begin{macro}{\LeftAtomBond} +% \begin{macro}{\Left@tomBond} +% \begin{macro}{\Left@tomB@nd} +% \begin{macro}{\Left@t@mB@nd} +% \begin{macrocode} +\def\LeftAtomBond{% +\@ifnextchar({\Left@tomBond}{\Left@tomBond(0,0)}} +\def\Left@tomBond(#1,#2){% +\@ifnextchar[{\Left@tomB@nd(#1,#2)}{\Left@tomB@nd(#1,#2)[\black]}} +\def\Left@tomB@nd(#1,#2)[#3]{% +\@ifnextchar<{\Left@t@mB@nd(#1,#2)[#3]}{\Left@t@mB@nd(#1,#2)[#3]<>}} +\def\Left@t@mB@nd(#1,#2)[#3]<#4>#5{% +\begingroup +\global\let\FuseWarning=\futileFuseWarning +\let\setbscolor=#3\relax +\@ifundefined{@tmpb}{\edef\@tmpb{0}}{}%dummy +\@ifundefined{@@tmpa}{\colorBLswfalse}{\if\@@tmpa @\relax\else +\edef\@@tmpa{a}\colorBLswtrue\fi}%enforced setting +%\@tempcntXa=\z@ \@tempcntYa=\z@ +\@tempcntXa=#1\relax \@tempcntYa=#2\relax +\if\@tmpb s\relax + \@clipfusefalse +\else + \if#4s\relax + \@clipfusefalse + \else + \ifcolorBLsw + \@clipfusetrue + \advance\@tempcntXa by5\relax%tentative value + \advance\@tempcntYa by-15\relax%tentative value + \colorBLswfalse + \else + \@clipfusetrue + \advance\@tempcntXa by40\relax%tentative value + \advance\@tempcntYa by38\relax%tentative value +\fi\fi\fi +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents % +% %%%%%%%%%%%%%%%%%%%%%%%% +\@forsemicol\member:=#5\do{% +\ifx\member\empty\else% +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\let\local@tmpa=\@tmpa%global to local 2002/5/30 by SF +\ifcase\local@tmpa% +\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)% +{{\setbscolor\setatombonda}\addbscolor{}{}}%2010/10/01% 0 (upward) (0,1) +\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)% +{\setatombondD}\addbscolor{}{}}%2010/10/01%%1 (-3,5) +\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)% +{\setatombondH}\addbscolor{}{}}%2010/10/01%%2 (-1,1) +\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)% +{\setatombondd}\addbscolor{}{}}%2010/10/01%%3 (-5,3) +\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)% +{\setatombondh}\addbscolor{}{}}%2010/10/01%%4 (-1,0) +\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)% +{\setatombondg}\addbscolor{}{}}%2010/10/01%%5 (-5,-3) +\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)% +{\setatombondC}\addbscolor{}{}}%2010/10/01%%6 (-1,-1) +\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)% +{\setatombondG}\addbscolor{}{}}%2010/10/01%%7 (-3,-5) +\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)% +{\setatombondc}\addbscolor{}{}}%2010/10/01%%8 (0,-1) +\fi%end of ifcase +\fi}\endgroup}%end of definition of \LeftAtomBond +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \section{Double Bond Coloring} +% +% \begin{macro}{\addvbonda etc.} +% Basic commands \verb/\addvbonda/ etc. are used to add +% colored double bonds in commands of +% drawing six-membered vertical-type structural formulas, where +% the letter \texttt{v} of \texttt{add--v--bond--a} means a vertical type. +% The suffix \texttt{a} is a bond specifier. +% \begin{macrocode} +\def\addvbonda{\put(0,-406){\bonda}} +\def\addvbondb{\put(-171,-303){\bondb}} +\def\addvbondc{\put(-171,-103){\bondc}} +\def\addvbondd{\put(0,0){\bondd}} +\def\addvbonde{\put(171,-103){\bonde}} +\def\addvbondf{\put(171,-303){\bondf}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\addvibonda etc.} +% Basic commands \verb/\addvibonda/ etc. are used to add +% colored double bonds in commands of +% drawing six-membered inverse-vertical-type structural formulas, +% where the letter \texttt{vi} +% of \texttt{add--vi--bond--a} means an inverse vertical type. +% The suffix \texttt{a} is a bond specifier. +% \begin{macrocode} +\def\addvibonda{\put(0,0){\bondc}} +\def\addvibondb{\put(-171,-103){\bondb}} +\def\addvibondc{\put(-171,-303){\bonda}} +\def\addvibondd{\put(0,-406){\bondf}} +\def\addvibonde{\put(171,-303){\bonde}} +\def\addvibondf{\put(171,-103){\bondd}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\addhbonda etc.} +% Basic commands \verb/\addhbonda/ etc. are used to add +% colored double bonds in commands of +% drawing six-membered horizontal-type structural formulas, +% where the letter \texttt{h} +% of \texttt{add--h--bond--a} means a horizontal type. +% The suffix \texttt{a} is a bond specifier. +% \begin{macrocode} +\def\addhbonda{\put(0,0){\hbonda}} +\def\addhbondb{\put(-103,-171){\hbondb}} +\def\addhbondc{\put(-303,-171){\hbondc}} +\def\addhbondd{\put(-406,0){\hbondd}} +\def\addhbonde{\put(-303,171){\hbonde}} +\def\addhbondf{\put(-103,171){\hbondf}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\addhibonda etc.} +% Basic commands \verb/\addhibonda/ etc. are used to add +% colored double bonds in commands of +% drawing six-membered inverse horizontal-type structural formulas, +% where the letter \texttt{hi} +% of \texttt{add--hi--bond--a} means an inverse horizontal type. +% The suffix \texttt{a} is a bond specifier. +% \begin{macrocode} +\def\addhibonda{\put(-403,0){\hbondc}} +\def\addhibondb{\put(-303,-171){\hbondb}} +\def\addhibondc{\put(-103,-171){\hbonda}} +\def\addhibondd{\put(0,0){\hbondf}} +\def\addhibonde{\put(-103,171){\hbonde}} +\def\addhibondf{\put(-303,171){\hbondd}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\addvvbonda etc.} +% Basic commands \verb/\addvvbonda/ etc. are used to add +% colored double bonds in commands of +% drawing five-membered vertical-type structural formulas, where +% the first letter \texttt{v} of \texttt{add--v--v--bond--a} means +% a five-membered ring (roman numeral) and the latter \texttt{v} +% means a vertical type. +% The suffix \texttt{a} is a bond specifier. +% \begin{macrocode} +\def\addvvbonda{\put(0,0){\bondc}} +\def\addvvbondb{\put(-171,-103){\bondb}} +\def\addvvbondc{\put(-171,-103){\bondhoriz}} +\def\addvvbondd{\put(171,-303){\bonde}} +\def\addvvbonde{\put(171,-103){\bondd}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\addvvibonda etc.} +% Basic commands \verb/\addvvibonda/ etc. are used to add +% colored double bonds in commands of +% drawing five-membered inverse vertical-type structural formulas, where +% the first letter \texttt{v} of \texttt{add--v--vi--bond--a} means +% a five-membered ring (roman numeral) and the latter \texttt{vi} +% means an inverse vertical type. The suffix \texttt{a} is a bond specifier. +% \begin{macrocode} +\def\addvvibonda{\put(0,-406){\bonda}} +\def\addvvibondb{\put(-171,-303){\bondb}} +\def\addvvibondc{\put(-171,-103){\bondhorizi}} +\def\addvvibondd{\put(171,-103){\bonde}} +\def\addvvibonde{\put(171,-303){\bondf}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\addvhbonda etc.} +% Basic commands \verb/\addvhbonda/ etc. are used to add +% colored double bonds in commands of +% drawing five-membered horizontal-type structural formulas, where +% the first letter \texttt{v} of \texttt{add--v--h--bond--a} means +% a five-membered ring (roman numeral) and the latter \texttt{h} +% means a horizontal type. +% The suffix \texttt{a} is a bond specifier. +% \begin{macrocode} +\def\addvhbonda{\put(-403,0){\hbondc}} +\def\addvhbondb{\put(-303,-171){\hbondb}} +\def\addvhbondc{\put(-303,-171){\hbondvert}} +%\def\addvhbondd{\put(0,0){\hbondf}} +\def\addvhbondd{\put(-103,171){\hbonde}} +\def\addvhbonde{\put(-303,171){\hbondd}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\addvhibonda etc.} +% Basic commands \verb/\addvhibonda/ etc. are used to add +% colored double bonds in commands of +% drawing five-membered inverse horizontal-type structural formulas, where +% the first letter \texttt{v} of \texttt{add--v--hi--bond--a} means +% a five-membered ring (roman numeral) and the latter \texttt{hi} +% means an inverse horizontal type. The suffix \texttt{a} is a bond specifier. +% \begin{macrocode} +\def\addvhibonda{\put(0,0){\hbonda}} +\def\addvhibondb{\put(-103,-171){\hbondb}} +\def\addvhibondc{\put(-303,-171){\hbondverti}} +%\def\addvhibondd{\put(-406,0){\hbondd}} +\def\addvhibondd{\put(-303,171){\hbonde}} +\def\addvhibonde{\put(-103,171){\hbondf}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\MethyleneBonda etc.} +% Basic commands \verb/\MethyleneBonda/ etc. are used to add +% colored double bonds in commands of drawing dimethylene to decamethylene units +% of normal type, where the suffix \texttt{a}, etc. are bond specifiers. +% \begin{macrocode} +\def\MethyleneBonda{\Put@Direct(171,-303){\bondA}} +\def\MethyleneBondb{\Put@Direct(0,-406){\bondB}} +\def\MethyleneBondc{\Put@Direct(171,-303){\bondA}} +\def\MethyleneBondd{\Put@Direct(0,-406){\bondB}} +\def\MethyleneBonde{\Put@Direct(171,-303){\bondA}} +\def\MethyleneBondf{\Put@Direct(0,-406){\bondB}} +\def\MethyleneBondg{\Put@Direct(171,-303){\bondA}} +\def\MethyleneBondh{\Put@Direct(0,-406){\bondB}} +\def\MethyleneBondi{\Put@Direct(171,-303){\bondA}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\MethyleneBondA etc.} +% Basic commands \verb/\MethyleneBondA/ etc. are used to add +% colored double bonds in commands of drawing dimethylene to decamethylene units +% of normal type, where the suffix \texttt{A}, etc. are bond specifiers. +% A double bond corresponding to the suffix \texttt{A} appears an alternate side +% the counterpart due to the suffix \texttt{a}. +% \begin{macrocode} +\def\MethyleneBondA{\Put@Direct(0,-406){\bondAA}} +\def\MethyleneBondB{\Put@Direct(-171,-303){\bondBB}} +\def\MethyleneBondC{\Put@Direct(0,-406){\bondAA}} +\def\MethyleneBondD{\Put@Direct(-171,-303){\bondBB}} +\def\MethyleneBondE{\Put@Direct(0,-406){\bondAA}} +\def\MethyleneBondF{\Put@Direct(-171,-303){\bondBB}} +\def\MethyleneBondG{\Put@Direct(0,-406){\bondAA}} +\def\MethyleneBondH{\Put@Direct(-171,-303){\bondBB}} +\def\MethyleneBondI{\Put@Direct(0,-406){\bondAA}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\MethyleneiBonda etc.} +% Basic commands \verb/\MethyleneiBonda/ etc. are used to add +% colored double bonds in commands of drawing dimethylene to decamethylene units +% of inverse type, where the suffix \texttt{a}, etc. are bond specifiers. +% \begin{macrocode} +\def\MethyleneiBonda{\Put@Direct(171,-103){\bondAi}} +\def\MethyleneiBondb{\Put@Direct(0,0){\bondBi}} +\def\MethyleneiBondc{\Put@Direct(171,-103){\bondAi}} +\def\MethyleneiBondd{\Put@Direct(0,0){\bondBi}} +\def\MethyleneiBonde{\Put@Direct(171,-103){\bondAi}} +\def\MethyleneiBondf{\Put@Direct(0,0){\bondBi}} +\def\MethyleneiBondg{\Put@Direct(171,-103){\bondAi}} +\def\MethyleneiBondh{\Put@Direct(0,0){\bondBi}} +\def\MethyleneiBondi{\Put@Direct(171,-103){\bondAi}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\MethyleneiBondA etc.} +% Basic commands \verb/\MethyleneiBondA/ etc. are used to add +% colored double bonds in commands of drawing dimethylene to decamethylene units +% of inverse type, where the suffix \texttt{A}, etc. are bond specifiers. +% A double bond corresponding to the suffix \texttt{A} appears an alternate side +% the counterpart due to the suffix \texttt{a}. +% \begin{macrocode} +\def\MethyleneiBondA{\Put@Direct(0,0){\bondAAi}} +\def\MethyleneiBondB{\Put@Direct(-171,-103){\bondBBi}} +\def\MethyleneiBondC{\Put@Direct(0,0){\bondAAi}} +\def\MethyleneiBondD{\Put@Direct(-171,-103){\bondBBi}} +\def\MethyleneiBondE{\Put@Direct(0,0){\bondAAi}} +\def\MethyleneiBondF{\Put@Direct(-171,-103){\bondBBi}} +\def\MethyleneiBondG{\Put@Direct(0,0){\bondAAi}} +\def\MethyleneiBondH{\Put@Direct(-171,-103){\bondBBi}} +\def\MethyleneiBondI{\Put@Direct(0,0){\bondAAi}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\adddbcolor} +% The user command \verb/\adddbcolor/ is used to specify a color of +% a double bond to be changed. The first argument specifies types of +% structures to be drawn by designating \texttt{v}, \texttt{vi}, etc. +% The vacant argument and \texttt{i} correspond to polymethylene units +% defined in \textsf{methylen} package. +% The second argument specifies a color to be changed. +% The command \verb/\adddbcolor/ is placed in a bond list. +% \begin{macrocode} +\def\adddbcolor#1#2{% +\global\let\FuseWarning=\futileFuseWarning +\global\@dbondcolortrue +\edef\@@tmpBondSp{#1}% +\edef\@@tmpBondSpi{i}% +\ifx\@@tmpBondSp\empty\relax%\tetrahemethylene etc. +{\Put@Direct(0,0){#2\expandafter\csname MethyleneBond\@@tmpa\endcsname}}% +\else\ifx\@@tmpBondSp\@@tmpBondSpi\relax%\tetramethyleni etc. +{\Put@Direct(0,0){#2\csname MethyleneiBond\@@tmpa\endcsname}}% +\else +{\Put@Direct(0,0){#2\csname add#1bond\@@tmpa\endcsname}}% +\fi\fi} +% \end{macrocode} +% \end{macro} +% +% \section{Skeletal Bond Coloring} +% +% \begin{macro}{\addskbcolor} +% The user command \verb/\addskbcolor/ is used to specify a color of +% a skeletal bond to be changed. The first argument specifies types of +% structures to be drawn by designating \texttt{v}, \texttt{h}, etc. +% The second argument specifies a color to be changed. +% The command \verb/\addskbcolor/ is placed in a skeletal bond list. +% \begin{macrocode} +\def\addskbcolor#1#2{% +\iflongskbond +{#2\expandafter\csname\skbondreplace\endcsname}% +\else +\if#1\empty\relax +{#2\expandafter\csname skbond\skbondreplace\endcsname}% +\else\if#1v\relax +{#2\expandafter\csname skbond\skbondreplace\endcsname}% +\else +{#2\expandafter\csname #1skbond\skbondreplace\endcsname}% +\fi\fi\fi% +\global\let\FuseWarning=\futileFuseWarning%for methylen package +\global\@dbondcolortrue%for heterarom and heteraromh packages +} +% +%\def\addskbcolor#1#2{% +% \edef\@@tmpsBondSp{#1}% +% \edef\@@tmpsBondSpv{v}% +%\iflongskbond +%{#2\expandafter\csname\skbondreplace\endcsname}% +%\else +%\ifx\@@tmpsBondSp\empty\relax +%{#2\expandafter\csname skbond\skbondreplace\endcsname}% +%\else\ifx\@@tmpsBondSp\@@tmpsBondSpv\relax +%{#2\expandafter\csname skbond\skbondreplace\endcsname}% +%\else +%{#2\expandafter\csname #1skbond\skbondreplace\endcsname}% +%\fi\fi\fi% +%\global\let\FuseWarning=\futileFuseWarning%for methylen package +%\global\@dbondcolortrue%for heterarom and heteraromh packages +%} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\red etc.} +% \changes{v5.00}{2010/10/01}{Colors for TeX/LaTeX mode} +% \begin{macrocode} +\def\red{\color{red}} +\def\blue{\color{blue}} +\def\green{\color{green}} +\def\black{\color{black}} +\def\cyan{\color{cyan}} +\def\yellow{\color{yellow}} +\def\magenta{\color{magenta}} +\def\white{\color{white}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\xymcolor} +% \begin{macro}{\red etc.} +% These macros are defined to avoid \texttt{**Warning** color stack underflow} +% during processing by the dvipdfmx converter. +% \changes{v5.00}{2010/10/01}{Added: Colors for TeX/LaTeX mode} +% \begin{macrocode} +\def\xymcolor#1#2{\mbox{\color{#1}#2}} +\def\redx#1{\xymcolor{red}{#1}} +\def\bluex#1{\xymcolor{blue}{#1}} +\def\greenx#1{\xymcolor{green}{#1}} +\def\blackx#1{\xymcolor{black}{#1}} +\def\cyanx#1{\xymcolor{cyan}{#1}} +\def\yellowx#1{\xymcolor{yellow}{#1}} +\def\magentax#1{\xymcolor{magenta}{#1}} +\def\whitex#1{\xymcolor{white}{#1}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\Color@@Line} +% \begin{macro}{\Color@Line} +% \changes{v5.00}{2010/10/01}{Colors for TeX/LaTeX mode} +% The |\Color@Line| macro is used to erase an old line by setting color to be white. +% \begin{macrocode} +\def\Color@@Line{% +\@ifnextchar[{\C@lor@@Line}{\C@lor@@Line[0.4pt]}} +\def\C@lor@@Line[#1](#2,#3)(#4,#5)#6#7{% +\begingroup +\@tempdima=#1\relax +\ifdim\@tempdima=0.4pt\else +\XyMTeXWarning{The line width is ineffective for TeX/LaTeX mode}% +\fi +\put(0,0){\csname #7\endcsname \Put@Line(#2,#3)(#4,#5){#6}}% +\endgroup}%end of \Color@@Line +\let\Color@Line=\Color@@Line%for TeX/LaTeX mode +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\replaceSKbond} +% The user command \verb/\replaceSKbond/ is used to specify a color of +% a skeletal bond to be changed. The first optional argument specifies +% the bond width to be changed if necessary. +% The arguments in the first pair of parentheses specify the original point. +% The arguments in the second pair of parentheses specify the slope e.g., (5,3). +% The next argument indicates the projection length to the x-axis. +% The last argument indicates a color to be applied. +% The command \verb/\replaceSKbond/ is placed in a bond list. +% \begin{macrocode} +\def\replaceSKbond{% +\@ifnextchar[{\repl@ceSKbond}{\repl@ceSKbond[0.4pt]}} +\def\repl@ceSKbond[#1](#2,#3)(#4,#5)#6#7{\begingroup% +\global\let\FuseWarning=\futileFuseWarning +\global\@dbondcolortrue +\def\thinLineWidth{#1}% +\@tempdima=#1 \advance\@tempdima by1.2pt +\put(0,0){\Color@Line[\the\@tempdima](#2,#3)(#4,#5){#6}{white}}% +\put(0,0){#7\Put@Line(#2,#3)(#4,#5){#6}}\endgroup}% +% +%\def\replaceSKbond{% +%\@ifnextchar[{\repl@ceSKbond}{\repl@ceSKbond[0.4pt]}} +%\def\repl@ceSKbond[#1](#2,#3)(#4,#5)#6#7{\begingroup% +%\global\let\FuseWarning=\futileFuseWarning +%\global\@dbondcolortrue +%\def\thinLineWidth{#1}% +%\@tempdima=#1 \advance\@tempdima by1.2pt +%\put(0,0){\edef\thinLineWidth{\the\@tempdima}\white\Put@Line(#2,#3)(#4,#5){#6}}% +%\put(0,0){#7\Put@Line(#2,#3)(#4,#5){#6}}\endgroup}% +% +\endinput +%</bondcolor> +% \end{macrocode} +% \end{macro} +% +% \Finale +% +\endinput diff --git a/Master/texmf-dist/source/latex/xymtex/base/bondcolor.ins b/Master/texmf-dist/source/latex/xymtex/base/bondcolor.ins new file mode 100644 index 00000000000..27b9ef956ba --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/bondcolor.ins @@ -0,0 +1,43 @@ +\def\batchfile{bondcolor.ins} +\input docstrip.tex +\preamble + +This is a generated file. + +Copyright 2010 by Shinsaku Fujita +all rights reserved. +This style file is created for drawing chemical structural formulas +This style file is to be contained in the ``xymtex'' directory which +is an input directory for TeX. + +This file is part of the XyMTeX system. +======================================= +Version 5.00 Released on October 01, 2010 + +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 bondcolor.dtx and bondcolor.ins +and the derived file bondcolor.sty. + +======================================= + +\endpreamble + +\keepsilent + +\generateFile{bondcolor.drv}{t}{% + \from{bondcolor.dtx}{driver}} + +\generateFile{bondcolor.sty}{t}{% + \from{bondcolor.dtx}{bondcolor}} + +\endinput diff --git a/Master/texmf-dist/source/latex/xymtex/base/carom.dtx b/Master/texmf-dist/source/latex/xymtex/base/carom.dtx new file mode 100644 index 00000000000..e85f329f8cf --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/carom.dtx @@ -0,0 +1,4172 @@ +% \iffalse meta-comment +%% File: carom.dtx +% +% Copyright 1993,1996,1998,2000,2001,2002, 2004 by Shinsaku Fujita +% +% This file is part of XyMTeX system. +% ------------------------------------- +% +% This file is a successor to: +% +% carom.sty +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 1.00} +% \typeout{ -- Released December 1, 1993 by Shinsaku Fujita} +% Copyright (C) 1993 by Shinsaku Fujita, all rights reserved. +% +% This file is a part of the macro package ``XyMTeX'' which has been +% designed for typesetting chemical structural formulas. +% +% This file is to be contained in the ``xymtex'' directory which is +% an input directory for TeX. It is a LaTeX optional style file and +% should be used only within LaTeX, because several macros of the file +% are based on LaTeX commands. +% +% For the review of XyMTeX, see +% (1) Shinsaku Fujita, ``Typesetting structural formulas with the text +% formatter TeX/LaTeX'', Computers and Chemistry, in press. +% The following book deals with an application of TeX/LaTeX to +% preparation of manuscripts of chemical fields: +% (2) Shinsaku Fujita, ``LaTeX for Chemists and Biochemists'' +% Tokyo Kagaku Dozin, Tokyo (1993) [in Japanese]. +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% The Current Maintainer of this work is Shinsaku Fujita. +% +% This work consists of the files xymtx-pdf.dtx and xymtx-pdf.ins +% and the derived file xymtx-pdf.sty. +% +% Please report any bugs, comments, suggestions, etc. to: +% Shinsaku Fujita, +% Department of Chemistry and Materials Technology, +% Kyoto Institute of Technology, +% Matsugasaki, Sakyoku, Kyoto, 606, Japan +% +% New address: +% Shinsaku Fujita, +% Department of Chemistry and Materials Technology, +% Kyoto Institute of Technology, \\ +% Matsugasaki, Sakyoku, Kyoto, 606 Japan +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{carom} +% \def\versi@ndate{August 16, 1996} +% \def\versi@nno{ver1.01} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{carom} +% \def\versi@ndate{December 01, 1993} +% \def\versi@nno{ver1.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{carom} +% \def\versi@ndate{August 16, 1996} +% \def\versi@nno{ver1.01} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{carom} +% \def\versi@ndate{October 31, 1998} +% \def\versi@nno{ver1.02} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{carom} +% \def\versi@ndate{December 25, 1998} +% \def\versi@nno{ver2.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{carom} +% \def\versi@ndate{June 14, 2000} +% \def\versi@nno{ver2.00a} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{carom} +% \def\versi@ndate{June 20, 2001} +% \def\versi@nno{ver2.01} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{carom} +% \def\versi@ndate{April 30, 2002} +% \def\versi@nno{ver3.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{carom} +% \def\versi@ndate{May 30, 2002} +% \def\versi@nno{ver4.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{carom} +% \def\versi@ndate{August 30, 2004} +% \def\versi@nno{ver4.01} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \fi +% +% \CheckSum{2982} +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +% +% \setcounter{StandardModuleDepth}{1} +% +% \StopEventually{} +% \MakeShortVerb{\|} +% +% \iffalse +% \changes{v1.01}{1996/08/16}{first edition for LaTeX2e} +% \changes{v1.02}{1998/10/31}{revised edition for LaTeX2e} +% \changes{v2.00}{1998/12/25}{enhanced edition for LaTeX2e} +% \changes{v2.00a}{2000/06/14}{bug fix} +% \changes{v2.01}{2001/06/30}{Size reduction} +% \changes{v3.00}{2002/04/30}{sfpicture enviromnent etc.} +% \changes{v4.00}{2002/05/30}{PostScript output and ShiftPicEnv} +% \changes{v4.01}{2002/08/30}{Minor additions} +% \changes{v5.00}{2010/10/01}{the LaTeX Project Public License} +% \fi +% +% \iffalse +%<*driver> +\NeedsTeXFormat{pLaTeX2e} +% \fi +\ProvidesFile{carom.dtx}[2010/10/01 v5.00 XyMTeX{} package file] +% \iffalse +\documentclass{ltxdoc} +\GetFileInfo{carom.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{Drawing carbocyclic compounds by {\sffamily carom.sty} +(\fileversion) of \XyMTeX{}} +\author{Shinsaku Fujita \\ +Shonan Institute of Chemoinformatics Mathematical Chemistry, \\ +Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun, +Kanagawa-Ken, 258-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{carom.dtx} +\end{document} +%</driver> +% \fi +% +% \section{Introduction}\label{carom:intro} +% +% \subsection{Options for {\sffamily docstrip}} +% +% \DeleteShortVerb{\|} +% \begin{center} +% \begin{tabular}{|l|l|} +% \hline +% \emph{option} & \emph{function}\\ \hline +% carom & carom.sty \\ +% driver & driver for this dtx file \\ +% \hline +% \end{tabular} +% \end{center} +% \MakeShortVerb{\|} +% +% \subsection{Version Information} +% +% \begin{macrocode} +%<*carom> +\typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 5.00} +\typeout{ -- Released October 01, 2010 by Shinsaku Fujita} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\j@urnalname{carom} +\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 carom.sty} +% +% \begin{verbatim} +% ******************************* +% * carom.sty: list of commands * +% ******************************* +% +% <VERTICAL TYPE> +% +% \cyclohexanev \@cyclohexanev +% \bzdrv \@bzdrv +% \decalinev \@decalinev +% \decalinevb \@decalinevb +% \decalinevt \@decalinevt +% \naphdrv \@naphdrv +% \naphdrvb \@naphdrvb +% \naphdrvt \@naphdrvt +% \tetralinev \@tetralinev +% \tetralinevb \@tetralinevb +% \tetralinevt \@tetralinevt +% \hanthracenev \@hanthracenev +% \anthracenev \@anthracenev +% \hphenanthrenev \@hphenanthrenev +% \phenanthrenev \@phenanthrenev +% \steroid \@steroid +% \steroidchain \@steroidchain +% \end{verbatim} +% +% \begin{verbatim} +% <HORIZONTAL TYPE> +% +% \cyclohexaneh \@cyclohexaneh +% \bzdrh \@bzdrh +% \decalineh \@decalineh +% \naphdrh \@naphdrh +% \tetralineh \@tetralineh +% +% \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 carom.sty} for the present case). Hence, the combination +% of |\input| and |\@ifundefined| is used to crossload sty +% files ({\sf chemstr.sty} for the present case) in place of the +% |\RequirePackage| command of \LaTeXe{}. +% \begin{macrocode} +% ************************* +% * input of basic macros * +% ************************* +\@ifundefined{setsixringv}{\input chemstr.sty\relax}{} +\@ifundefined{decaheterov}{\input hetarom.sty\relax}{} +\@ifundefined{decaheteroh}{\input hetaromh.sty\relax}{} +\unitlength=0.1pt +% \end{macrocode} +% +% \section{Cyclohexane derivatives} +% \subsection{Vertical cyclohexanes} +% +% The macro |\cyclohexanev| is used for drawing cyclohexane derivatives +% of vertical type. The skeleton and endocyclic double bonds are +% drawn directly, while substituents and exocyclic bonds are placed by +% useing the inner macro |\setsixringv|. +% +% \begin{verbatim} +% *************************** +% * cyclohexane derivatives * +% * (vertical type) * +% *************************** +% The following numbering is adopted in this macro. +% +% 1 +% * +% 6 * * 2 +% | | +% | | +% 5 * * 3 +% * +% 4 <===== the original point +% +% \end{verbatim} +% +% The macro |\cyclohexanev| has an argument |SUBSLIST| as well as an optional +% argument |BONDLIST|. +% \begin{verbatim} +% \cyclohexanev[BONDLIST]{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one or more +% characters selected form a to f as well as A, each of which indicates +% the presence of an inner (endcyclic) double bond on the corresponding +% position. +% +% \begin{verbatim} +% BONDLIST = +% +% none : cyclohexane +% a : 1,2-double bond +% b : 2,3-double bond +% c : 4,3-double bond +% d : 4,5-double bond +% e : 5,6-double bond +% f : 6,1-double bond +% A : aromatic circle +% \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 specifed) 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} +% +% \begin{verbatim} +% e.g. +% +% \cyclohexanev{1==Cl;2==F} +% \cyclohexanev[c]{1==Cl;4==F;2==CH$_{3}$} +% \cyclohexanev[eb]{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl} +% \end{verbatim} +% +% \begin{macro}{\cyclohexanev} +% \begin{macrocode} +\def\cyclohexanev{\@ifnextchar[{\@cyclohexanev[@}{\@cyclohexanev[@]}} +\def\@cyclohexanev[#1]#2{\sixheterov[#1]{}{#2}} +% \end{macrocode} +% \end{macro} +% +% The following definition has been deleted. +% +% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{@ylsw}, +% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/11/23}{Adding \cs{set@fusionadd@sixv}} +% \changes{v3.00}{2002/04/30}{\cs{cyclohexanev}: Old definition deleted.} +% +% \subsection{Horizontal cyclohexanes} +% +% The macro |cyclohexaneh| is used for drawing cyclohexane derivatives +% of vertical type. The skeleton and endocyclic double bonds are +% drawn directly, while substituents and exocyclic bonds are placed by +% useing the inner macro |\setsixringh|. +% +% \begin{verbatim} +% *************************** +% * cyclohexane derivatives * +% * (horizontal type) * +% *************************** +% The following numbering is adopted in this macro. +% +% 2 3 +% ----- +% * * +% the original point ===> 1 * * 4 +% (0,0) * * +% ----- +% 6 5 +% \end{verbatim} +% +% The macro |\cyclohexaneh| has an argument |SUBSLIST| as well as an optional +% argument |BONDLIST|. +% +% \begin{verbatim} +% \cyclohexaneh[BONDLIST]{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one or more +% characters selected form a to f as well as A, each of which indicates +% the presence of an inner (endcyclic) double bond on the corresponding +% position. +% +% \begin{verbatim} +% BONDLIST = +% +% none : cyclohexane +% a : 1,2-double bond +% b : 2,3-double bond +% c : 4,3-double bond +% d : 4,5-double bond +% e : 5,6-double bond +% f : 6,1-double bond +% A : aromatic circle +% \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 specifed) 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} +% +% \begin{verbatim} +% e.g. +% +% \cyclohexaneh{1==Cl;2==F} +% \cyclohexaneh[c]{1==Cl;4==F;2==CH$_{3}$} +% \cyclohexaneh[eb]{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl} +% \end{verbatim} +% +% \changes{v2.00a}{2000/06/14}{bug fix: changed letter [r] to [@] +% in \cs{cycohexaneh} for horizontal cyclohexanes} +% +% \begin{macro}{\cyclohexaneh} +% \begin{macrocode} +\def\cyclohexaneh{\@ifnextchar[{\@cyclohexaneh[@}{\@cyclohexaneh[@]}} +\def\@cyclohexaneh[#1]#2{\sixheteroh[#1]{}{#2}} +% \end{macrocode} +% \end{macro} +% +% The following definition has been deleted. +% +% \changes{v1.02}{1998/10/31}{Adding \cs{ylpositionh}, \cs{if@ylsw}, +% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/11/29}{Adding \cs{set@fusionadd@sixv} for +% fused rings} +% \changes{v3.00}{2002/04/30}{\cs{cyclohexaneh}: Old definition deleted.} +% +% \section{Benzene and benzoquinone derivatives} +% \subsection{Vertical type} +% +% The macro |\bzdrv| (|\benzenev|) is used for drawing benzene derivatives +% of vertical type as well as benzoquinone derivatives of +% vertical type. The skeleton and endocyclic double bonds are +% drawn directly, while substituents and exocyclic bonds are placed by +% useing the inner macro |\cyclohexanev| defined above. +% +% The macro |\bzdrv| has an argument |SUBSLIST| as well as an optional +% argument |OPT|. The latter designates a bond pattern in place of +% individual exocyclic bonds. +% +% \changes{v3.00}{2002/04/30}{\cs{benzenev} added} +% +% \begin{verbatim} +% **************************************** +% * benzene and benzoquinone derivatives * +% * (vertical type) * +% **************************************** +% +% \bzdrv[OPT]{SUBSLIST} +% \benzenev[OPT]{SUBSLIST} +% \end{verbatim} +% +% The |OPT| argument contains one character (r, l or c) for designate +% aromatic bond patterns or two characters (p? or o?) for quinone +% bond patterns. +% +% \begin{verbatim} +% +% OPT: (bond pattern) +% +% none or r : right-handed set of double bonds +% l : left-handed set of double bonds +% c : aromatic circle +% +% p or pa : p-quinone (A) +% pb : p-quinone (B) +% pc : p-quinone (C) +% +% o or oa : o-quinone (A) +% ob : o-quinone (B) +% oc : o-quinone (C) +% od : o-quinone (D) +% oe : o-quinone (E) +% of : o-quinone (F) +% \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} +% +% \begin{verbatim} +% e.g. +% \bzdrv{1==Cl;2==F} +% \bzdrv[c]{1==Cl;4==F;2==CH$_{3}$} +% \bzdrv[pa]{1D==O;4D==O;2==CH$_{3}$} +% \end{verbatim} +% +% \begin{macro}{\bzdrv} +% \begin{macro}{\benzenev} +% \begin{macrocode} +\def\bzdrv{\@ifnextchar[{\@bzdrv}{\@bzdrv[r]}} +\def\@bzdrv[#1]#2{% +\iforigpt \typeout{command `bzdrv' is based on `cyclohexanev'.}\fi% +%\expandafter\twoch@r#1{}% +\expandafter\twoCH@R#1//% +\if\@tmpa r% right-handed set of double bonds + \ifx\@tmpb\empty + \cyclohexanev[bdf]{#2}% + \fi +\else\if\@tmpa l%left-handed set of double bonds + \ifx\@tmpb\empty + \cyclohexanev[ace]{#2}% + \fi +\else\if\@tmpa c%aromatic circle + \ifx\@tmpb\empty + \cyclohexanev[A]{#2}% + \fi +\else\if\@tmpa p%p-quinone + \if\@tmpb a% (A) + \cyclohexanev[be]{#2}% + \else\ifx\@tmpb\empty% (A) + \cyclohexanev[be]{#2}% + \else\if\@tmpb b% (B) + \cyclohexanev[cf]{#2}% + \else\if\@tmpb c% (C) + \cyclohexanev[ad]{#2}% + \fi\fi\fi\fi% +\else\if\@tmpa o%o-quinone + \if\@tmpb a% (A)% + \cyclohexanev[ce]{#2}% + \else\ifx\@tmpb\empty% (A) + \cyclohexanev[ce]{#2}% + \else\if\@tmpb b%o-quinone (B) + \cyclohexanev[df]{#2}% + \else\if\@tmpb c%o-quinone (C) + \cyclohexanev[ae]{#2}% + \else\if\@tmpb d%o-quinone (D) + \cyclohexanev[bf]{#2}% + \else\if\@tmpb e%o-quinone (E) + \cyclohexanev[ac]{#2}% + \else\if\@tmpb f%o-quinone (F) + \cyclohexanev[bd]{#2}% + \fi\fi\fi\fi\fi\fi\fi% +\else% added 1998/11/15 by S. Fujita + \cyclohexanev[@#1]{#2}% +\fi\fi\fi\fi\fi% +}% %end of \bzdrv macro +\let\benzenev=\bzdrv +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Horizontal type} +% +% The macro |\bzdrh| (|\benzeneh|) is used for drawing benzene derivatives +% of vertical type as well as benzoquinone derivatives of +% vertical type. The skeleton and endocyclic double bonds are +% drawn directly, while substituents and exocyclic bonds are placed by +% useing the inner macro |\cyclohexanev| defined above. +% +% The macro |\bzdrh| has an argument |SUBSLIST| as well as an optional +% argument |OPT|. The latter designates a bond pattern in place of +% individual exocyclic bonds. +% +% \changes{v3.00}{2002/04/30}{\cs{benzeneh} added} +% +% \begin{verbatim} +% **************************************** +% * benzene and benzoquinone derivatives * +% * (horizontal type) * +% **************************************** +% +% \bzdrh[OPT]{SUBSLIST} +% \benzeneh[OPT]{SUBSLIST} +% \end{verbatim} +% +% The |OPT| argument contains one character (r, l or c) for designate +% aromatic bond patterns or two characters (p? or o?) for quinone +% bond patterns. +% +% \begin{verbatim} +% +% OPT: (bond pattern) +% +% none or r : right-handed set of double bonds +% l : left-handed set of double bonds +% c : aromatic circle +% +% p or pa : p-quinone (A) +% pb : p-quinone (B) +% pc : p-quinone (C) +% +% o or oa : o-quinone (A) +% ob : o-quinone (B) +% oc : o-quinone (C) +% od : o-quinone (D) +% oe : o-quinone (E) +% of : o-quinone (F) +% \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} +% +% \begin{verbatim} +% +% e.g. +% \bzdrh{1==Cl;2==F} +% \bzdrh[c]{1==Cl;4==F;2==CH$_{3}$} +% \bzdrh[pa]{1D==O;4D==O;2==CH$_{3}$} +% +% \end{verbatim} +% +% \begin{macro}{\bzdrh} +% \begin{macro}{\benzeneh} +% \begin{macrocode} +\def\bzdrh{\@ifnextchar[{\@bzdrh}{\@bzdrh[r]}} +\def\@bzdrh[#1]#2{% +\iforigpt \typeout{command `bzdrh' is based on `cyclohexaneh'.}\fi% +%\expandafter\twoch@r#1{}% +\expandafter\twoCH@R#1//% +%\begin{sfpicture}(800,880)(-\noshift,-\noshift) +\if\@tmpa r% right-handed set of double bonds + \cyclohexaneh[bdf]{#2}% +\else\if\@tmpa l%left-handed set of double bonds + \cyclohexaneh[ace]{#2}% +\else\if\@tmpa c%aromatic circle + \cyclohexaneh[A]{#2}% +\else\if\@tmpa p%p-quinone + \if\@tmpb a% (A) + \cyclohexaneh[be]{#2}% + \else\ifx\@tmpb\empty% (A) + \cyclohexaneh[be]{#2}% + \else\if\@tmpb b% (B) + \cyclohexaneh[cf]{#2}% + \else\if\@tmpb c% (C) + \cyclohexaneh[ad]{#2}% + \fi\fi\fi\fi% +\else\if\@tmpa o%o-quinone + \if\@tmpb a% (A)% + \cyclohexaneh[ce]{#2}% + \else\ifx\@tmpb\empty% (A) + \cyclohexaneh[ce]{#2}% + \else\if\@tmpb b%o-quinone (B) + \cyclohexaneh[df]{#2}% + \else\if\@tmpb c%o-quinone (C) + \cyclohexaneh[ae]{#2}% + \else\if\@tmpb d%o-quinone (D) + \cyclohexaneh[bf]{#2}% + \else\if\@tmpb e%o-quinone (E) + \cyclohexaneh[ac]{#2}% + \else\if\@tmpb f%o-quinone (F) + \cyclohexaneh[bd]{#2}% + \fi\fi\fi\fi\fi\fi\fi% +\else% added 1998/11/15 by S. Fujita + \cyclohexaneh[@#1]{#2}% +\fi\fi\fi\fi\fi% +%\end{sfpicture} +}% %end of \bzdrh macro +\let\benzeneh=\bzdrh +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \section{Decaline derivatives} +% \subsection{Vertical type} +% +% The macro |\decalinev| is used for drawing decaline derivatives +% of vertical type. The skeleton and endocyclic double bonds are +% drawn directly, while substituents and exocyclic bonds are placed by +% useing the inner macro |\setdecaringv|. +% +% \begin{verbatim} +% ************************ +% * decaline derivatives * +% * (vertical type) * +% ************************ +% The following numbering is adopted in this macro. +% +% 8 (0G)1 +% * 8a * +% 7 * * * * 2 +% | | | +% | | | +% 6 * * * * 3 +% * 4a * +% 5 (0F)4 +% ^ +% | +% the original point +% \end{verbatim} +% +% The macro |\decalinev| has an argument |SUBSLIST| as well as an optional +% argument |BONDLIST|. +% +% \begin{verbatim} +% \decalinev[BONDLIST]{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one or more +% characters selected form a to k, each of which indicates +% the presence of an inner (endcyclic) double bond on the corresponding +% position. The character A or B indicates aromatic bond patterns (circles). +% \changes{v1.02}{1998/10/14}{BONDLIST: k and K at the fused bond} +% +% \begin{verbatim} +% BONDLIST = +% +% none : decaline +% a : 1,2-double bond +% b : 2,3-double bond +% c : 3,4-double bond +% d : 4,4a-double bond +% e : 5,4a-double bond +% f : 5,6-double bond +% g : 6,7-double bond +% h : 8,7-double bond +% i : 8,8a-double bond +% j : 1,8a-double bond +% k : 4a,8a-double bond +% K : 4a,8a-double bond in the other ring +% A : left aromatic circle +% B : right aromatic circle +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% +% SUBSLIST: list of substituents +% +% for n = 1 to 8 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% +% for 0 (fused positions) +% +% 0FA : alpha single bond at 8a +% 0FB : beta single bond at 8a +% 0FU : unspecified single bond at 8a +% 0GA : alpha single bond at 4a +% 0GB : beta single bond at 4a +% 0GU : unspecified single bond at 4a +% \end{verbatim} +% +% \begin{verbatim} +% +% e.g. +% +% \decalinev{1==Cl;2==F;0FA==;0GA==} +% \decalinev[c]{1==Cl;4==F;2==CH$_{3}$} +% \decalinev[eb]{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl;7==Cl;8==Cl} +% +% \end{verbatim} +% +% The macro |\decalinev| has been changed into a subsidiary macro +% of |\decaheterov| (version 2.00). +% +% \begin{macro}{\decalinev} +% \begin{macrocode} +\def\decalinev{\@ifnextchar[{\@decalinev[@}{\@decalinev[@]}} +\def\@decalinev[#1]#2{% +\iforigpt \typeout{command `decalinev' is based on `decaheterov'.}\fi% +\decaheterov[#1]{}{#2}} +% \end{macrocode} +% \end{macro} +% +% The following definition has been stopped using. +% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw} +% \cs{ylfusedposition}, +% \cs{yl@shiftii}, \cs{@ylii}, \cs{@@ylii}, \cs{yl@shifti}, \cs{@yli}, +% \cs{@yli}, \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/12/5}{Add: fused rings} +% \changes{v3.00}{2002/04/30}{\cs{decalinev}: Old definition deleted.} +% +% \subsection{Vertical-bottom type} +% +% The macro |\decalinevb| is used for drawing decaline derivatives +% of vertical-bottom type (numbering from the bottom to the left-upper part). +% The word ``vertical'' means that each benzene ring is a vertical type. +% The word ``bottom'' means that the benzene ring with young locant numbers +% is located at the bottom. +% The skeleton and endocyclic double bonds are drawn directly, +% while substituents and exocyclic bonds are placed by useing +% the inner macro |\setsixringv|. +% \changes{v1.02}{1998/10/13}{Newly added command} +% +% \begin{verbatim} +% *************************** +% * decaline derivatives * +% * (vertical bottom type) * +% *************************** +% The following numbering is adopted in this macro. +% +% 7 +% * +% 6 * * 8 +% | | +% | | 0G (4a) +% 5 * * * +% 0F(4a) * * 1 +% | | +% | | +% 4 * * 2 +% * +% 3 +% ^ +% | +% the original point +% \end{verbatim} +% +% The macro |\decalinevb| has an argument |SUBSLIST| as well as an optional +% argument |BONDLIST|. +% +% \begin{verbatim} +% \decalinevb[BONDLIST]{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one or more +% characters selected form a to k, each of which indicates +% the presence of an inner (endcyclic) double bond on the corresponding +% position. The character A or B indicates aromatic bond patterns (circles). +% \changes{v1.02}{1998/10/14}{BONDLIST: k and K at the fused bond} +% +% \begin{verbatim} +% BONDLIST = +% +% none : decaline +% a : 1,2-double bond +% b : 2,3-double bond +% c : 3,4-double bond +% d : 4,4a-double bond +% e : 5,4a-double bond +% f : 5,6-double bond +% g : 6,7-double bond +% h : 8,7-double bond +% i : 8,8a-double bond +% j : 1,8a-double bond +% k : 4a,8a-double bond +% K : 4a,8a-double bond in the other ring +% A : left aromatic circle +% B : right aromatic circle +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% +% SUBSLIST: list of substituents +% +% for n = 1 to 8 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% +% for 0 (fused positions) +% +% 0FA : alpha single bond at 8a +% 0FB : beta single bond at 8a +% 0FU : unspecified single bond at 8a +% 0GA : alpha single bond at 4a +% 0GB : beta single bond at 4a +% 0GU : unspecified single bond at 4a +% \end{verbatim} +% +% \begin{verbatim} +% +% e.g. +% +% \decalinevb{1==Cl;2==F;0FA==;0GA==} +% \decalinevb[c]{1==Cl;4==F;2==CH$_{3}$} +% \decalinevb[eb]{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl;7==Cl;8==Cl} +% +% \end{verbatim} +% +% The macro |\decalinevb| has been changed into a subsidiary macro +% of |\decaheterovb| (version 2.00). +% +% \begin{macro}{\decalinevb} +% \begin{macrocode} +\def\decalinevb{\@ifnextchar[{\@decalinevb[@}{\@decalinevb[@]}} +\def\@decalinevb[#1]#2{% +\iforigpt \typeout{command `decalinevb' is based on `decaheterovb'.}\fi% +\decaheterovb[#1]{}{#2}} +% \end{macrocode} +% \end{macro} +% +% The following old definition has been stopped using. +% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw} +% \cs{ylfusedposition}, +% \cs{yl@shiftii}, \cs{@ylii}, \cs{@@ylii}, \cs{yl@shifti}, \cs{@yli}, +% \cs{@yli}, \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/12/25}{Add: Fused rings} +% \changes{v3.00}{2002/04/30}{\cs{decalinevb}: Old definition deleted.} +% +% \subsection{Vertical-top type} +% +% The macro |\decalinevt| is used for drawing decaline derivatives +% of vertical-bottom type (numbering from the top to the left-down part). +% The word ``vertical'' means that each benzene ring is a vertical type. +% The word ``top'' means that the benzene ring with young locant numbers +% is located at the top. +% The skeleton and endocyclic double bonds are drawn directly, +% while substituents and exocyclic bonds are placed by useing +% the inner macro |\setsixringv|. +% \changes{v1.02}{1998/10/13}{Newly added command} +% +% \begin{verbatim} +% ************************ +% * decaline derivatives * +% * (vertical-top type) * +% ************************ +% The following numbering is adopted in this macro. +% +% 2 +% * +% 1 * * 3 +% | | +% | | +% 0G (8a) * * 4 +% 8 * * 0F(4a) +% | | +% | | +% 7 * * 5 +% * +% 6 +% ^ +% | +% the original point +% \end{verbatim} +% +% The macro |\decalinevt| has an argument |SUBSLIST| as well as an optional +% argument |BONDLIST|. +% +% \begin{verbatim} +% \decalinevt[BONDLIST]{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one or more +% characters selected form a to k, each of which indicates +% the presence of an inner (endcyclic) double bond on the corresponding +% position. The character A or B indicates aromatic bond patterns (circles). +% \changes{v1.02}{1998/10/14}{BONDLIST: k and K at the fused bond} +% +% \begin{verbatim} +% BONDLIST = +% +% none : decaline +% a : 1,2-double bond +% b : 2,3-double bond +% c : 3,4-double bond +% d : 4,4a-double bond +% e : 5,4a-double bond +% f : 5,6-double bond +% g : 6,7-double bond +% h : 8,7-double bond +% i : 8,8a-double bond +% j : 1,8a-double bond +% k : 4a,8a-double bond +% K : 4a,8a-double bond in the other ring +% A : left aromatic circle +% B : right aromatic circle +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% +% SUBSLIST: list of substituents +% +% for n = 1 to 8 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% +% for 0 (fused positions) +% +% 0FA : alpha single bond at 8a +% 0FB : beta single bond at 8a +% 0FU : unspecified single bond at 8a +% 0GA : alpha single bond at 4a +% 0GB : beta single bond at 4a +% 0GU : unspecified single bond at 4a +% \end{verbatim} +% +% \begin{verbatim} +% +% e.g. +% +% \decalinevt{1==Cl;2==F;0FA==;0GA==} +% \decalinevt[c]{1==Cl;4==F;2==CH$_{3}$} +% \decalinevt[eb]{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl;7==Cl;8==Cl} +% +% \end{verbatim} +% +% The macro |\decalinevt| has been changed into a subsidiary macro +% of |\decaheterovt| (version 2.00). +% +% \begin{macro}{\decalinevt} +% \begin{macrocode} +\def\decalinevt{\@ifnextchar[{\@decalinevt[@}{\@decalinevt[@]}} +\def\@decalinevt[#1]#2{% +\iforigpt \typeout{command `decalinevt' is based on `decaheterovt'.}\fi% +\decaheterovt[#1]{}{#2}} +% \end{macrocode} +% \end{macro} +% +% The following old definition has been stopped using. +% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw}, +% \cs{ylfusedposition}, +% \cs{yl@shiftii}, \cs{@ylii}, \cs{@@ylii}, \cs{yl@shifti}, \cs{@yli}, +% \cs{@yli}, \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/12/5}{Add: fused rings} +% \changes{v3.00}{2002/04/30}{\cs{decalinevt}: Old definition deleted.} +% +% \subsection{Horizontal type} +% +% The macro |\decalineh| is used for drawing decaline derivatives +% of vertical type. The skeleton and endocyclic double bonds are +% drawn directly, while substituents and exocyclic bonds are placed by +% useing the inner macros |\setsixringh| and |\setfusedbond|. +% +% \begin{verbatim} +% ************************ +% * decaline derivatives * +% * (horizontal type) * +% ************************ +% The following numbering is adopted in this macro. +% +% 2 3 +% ----- +% * * +% 1 * * 4 +% * * +% 8a (0G) ----- 4a (0F) +% * * +% the original point ===> 8 * * 5 +% (0,0) * * +% ----- +% 7 6 +% \end{verbatim} +% +% The macro |\decalineh| has an argument |SUBSLIST| as well as an optional +% argument |BONDLIST|. +% +% \begin{verbatim} +% \decalineh[BONDLIST]{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one or more +% characters selected form a to k, each of which indicates +% the presence of an inner (endcyclic) double bond on the corresponding +% position. The character A or B indicates aromatic bond patterns (circles). +% \changes{v1.02}{1998/10/14}{BONDLIST: k and K at the fused bond} +% +% \begin{verbatim} +% +% BONDLIST = +% +% none : decaline +% a : 1,2-double bond +% b : 2,3-double bond +% c : 3,4-double bond +% d : 4,4a-double bond +% e : 5,4a-double bond +% f : 5,6-double bond +% g : 6,7-double bond +% h : 8,7-double bond +% i : 8,8a-double bond +% j : 1,8a-double bond +% k : 4a,8a-double bond +% K : 4a,8a-double bond in the other ring +% A : left aromatic circle +% B : right aromatic circle +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% +% SUBSLIST: list of substituents +% +% for n = 1 to 8 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% +% for 0 (fused positions) +% +% 0FA : alpha single bond at 8a +% 0FB : beta single bond at 8a +% 0FU : unspecified single bond at 8a +% 0GA : alpha single bond at 4a +% 0GB : beta single bond at 4a +% 0GU : unspecified single bond at 4a +% \end{verbatim} +% +% \begin{verbatim} +% e.g. +% +% \decalineh{1==Cl;2==F;0FA==;0GA==} +% \decalineh[c]{1==Cl;4==F;2==CH$_{3}$} +% \decalineh[eb]{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl;7==Cl;8==Cl} +% \end{verbatim} +% +% The macro |\decalineh| has been changed into a subsidiary macro +% of |\decaheteroh| (version 2.00). +% +% \begin{macro}{\decalineh} +% \begin{macrocode} +\def\decalineh{\@ifnextchar[{\@decalineh[@}{\@decalineh[@]}} +\def\@decalineh[#1]#2{% +\iforigpt \typeout{command `decalineh' is based on `decaheteroh'.}\fi% +\decaheteroh[#1]{}{#2}} +% \end{macrocode} +% \end{macro} +% +% The following old definition has been stopped using. +% \changes{v1.02}{1998/10/31}{Adding \cs{ylpositionh}, \cs{if@ylsw} +% \cs{ylfusedposition}, +% \cs{yl@shiftii}, \cs{@ylii}, \cs{@@ylii}, \cs{yl@shifti}, \cs{@yli}, +% \cs{@yli}, \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/11/30}{Add: fused rings} +% \changes{v3.00}{2002/04/30}{\cs{decalineh}: Old definition deleted.} +% +% \section{Naphthalene and naphtoquinone derivatives} +% \subsection{Vertical type} +% +% The macro |\naphdrv| (|\naphthalenev|) is used for drawing +% naphthalene derivatives +% of vertical type as well as naphthoquinone derivatives of +% vertical type. The skeleton and endocyclic double bonds are +% drawn directly, while substituents and exocyclic bonds are placed by +% useing the inner macro |\decalinev|. +% +% The macro |\naphdrv| has an argument |SUBSLIST| as well as an optional +% argument |OPT|. The latter designates a bond pattern in place of +% individual exocyclic bonds. +% +% \changes{v3.00}{2002/04/30}{\cs{naphthalenev} added} +% +% \begin{verbatim} +% ********************************************** +% * naphthalene and naphthoquinone derivatives * +% * (vertical type) * +% ********************************************** +% +% \naphdrv[OPT]{SUBSLIST} +% \naphthalenev[OPT]{SUBSLIST} +% \end{verbatim} +% +% The |OPT| argument contains one or two characters. +% +% The character `A' is used for designating an aromatic bond pattern, in +% which each of the six-membered rings has a central circle. +% +% \begin{verbatim} +% OPT (bond pattern) +% +% none : naphthalene +% A : aromatic circle +% \end{verbatim} +% +% One character `p' or two characters (p?) in the |OPT| argument +% designate a p-quinone nucleus, which is present in the +% right-hand ring for the case of `p' or `pa' and in the +% left-hand ring for the case of `pb'. +% +% \begin{verbatim} +% p or pa : 1,4-quinone (A) left aromatic, right quinone +% pb : 1,4-quinone (B) right aromatic, left quinone +% \end{verbatim} +% +% One character `o' or two characters (o?) in the |OPT| argument +% designate an o-quinone nucleus in either side of the fused ring. +% The second character of each argument indicates one of the possible +% type of bond patterns. +% +% \begin{verbatim} +% o or oa : o-quinone (A) +% ob : o-quinone (B) +% oc : o-quinone (C) +% od : o-quinone (D) +% oe : o-quinone (E) +% of : o-quinone (F) +% \end{verbatim} +% +% One character `q' or two characters (q?) in the |OPT| argument +% designate an 2,6-, 1,5- or 1,7-quinone nucleus. +% The second character of each argument indicates one of the possible +% type of bond patterns. +% +% \begin{verbatim} +% +% q or qa : 2,6-quinone (A) +% qb : 2,6-quinone (B) 3,7 +% qc : 1,5-quinone (C) +% qd : 1,5-quinone (D) 4,8 +% qe : 1,7-quinone (E) +% qf : 1,7-quinone (F) 2,8 +% qg : 1,7-quinone (G) 4,6 +% qh : 1,7-quinone (H) 3,5 +% \end{verbatim} +% +% One character `P' or two characters (P?) in the |OPT| argument +% designate a 1,4,5,8- or 1,2,5,8-quinone nucleus. +% +% \begin{verbatim} +% +% P or Pa : 1,4,5,8-quinone (A) +% Pb : 1,2,5,8-quinone (B) +% \end{verbatim} +% +% One character `Q' or `O' or two characters (O?) in the |OPT| argument +% designate quinone nuclei of remaining types. +% +% \begin{verbatim} +% Q : 1,2,3,4-quinone +% +% O or Oa : 1,2,5,6-quinone (A) +% Ob : 1,2,7,8-quinone (B) +% Oc : 1,2,3,5-quinone (C) +% Od : 1,2,3,7-quinone (D) +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% +% SUBSLIST: list of substituents +% +% for n = 1 to 8 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% \end{verbatim} +% +% \begin{verbatim} +% e.g. +% \naphdrv{1==Cl;2==F} +% \naphdrv[A]{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% +% \begin{macro}{\naphdrv} +% \begin{macro}{\naphthalenev} +% \begin{macrocode} +\def\naphdrv{\@ifnextchar[{\@naphdrv}{\@naphdrv[r]}} +\def\@naphdrv[#1]#2{% +\iforigpt \typeout{command `naphdrv' is based on `decalinev'.}\fi% + \expandafter\threech@r#1{}{}% +\if\@tmpa r% right-handed set of double bonds + \decalinev[acfhk]{#2}% +\else\if\@tmpa A%aromatic circle + \decalinev[AB]{#2}% +% +\else\if\@tmpa p%p-quinone + \if\@tmpb a% (A) + \decalinev[bfhk]{#2}% + \else\ifx\@tmpb\empty% (A) + \decalinev[bfhk]{#2}% + \else\if\@tmpb b% (B) + \decalinev[acgk]{#2}% + \fi\fi\fi% +\else% + \if\@tmpa o%o-quinone + \if\@tmpb a% (A) + \decalinev[cfhk]{#2}% + \else\ifx\@tmpb\empty% (A) + \decalinev[cfhk]{#2}% + \else\if\@tmpb b%o-quinone (B) + \decalinev[dfhj]{#2}% + \else\if\@tmpb c%o-quinone (C) + \decalinev[afhk]{#2}% + \else\if\@tmpb d%o-quinone (D) + \decalinev[achk]{#2}% + \else\if\@tmpb e%o-quinone (E) + \decalinev[acei]{#2}% + \else\if\@tmpb f%o-quinone (F) + \decalinev[acfk]{#2}% + \fi\fi\fi\fi\fi\fi% + \fi% +%%% +\else\if\@tmpa q%various quinone + \if\@tmpb a% (A)2,6-type + \decalinev[cehj]{#2}% + \else\ifx\@tmpb\empty% (A)2,6-type + \decalinev[cehj]{#2}% + \else\if\@tmpb b%2,6-quinone (B) + \decalinev[adfi]{#2}% + \else\if\@tmpb c%1,5-quinone (C) + \decalinev[bdgi]{#2}% + \else\if\@tmpb d%1,5-quinone (D) + \decalinev[begj]{#2}% + \else\if\@tmpb e%1,7-quinone (E) + \decalinev[bdfi]{#2}% + \else\if\@tmpb f%1,7-quinone (F) + \decalinev[cegj]{#2}% + \else\if\@tmpb g%1,7-quinone (G) + \decalinev[behj]{#2}% + \else\if\@tmpb h%1,7-quinone (H) + \decalinev[adgi]{#2}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi% +\else\if\@tmpa P%quinone having 4 carbonyl groups + \if\@tmpb a% (A)1,4,5,8-type + \decalinev[bgk]{#2}% + \else\ifx\@tmpb\empty% (A)1,4,5,8-type + \decalinev[bgk]{#2}% + \else\if\@tmpb b% (B)1,2,5,8-type + \decalinev[cgk]{#2}% + \fi\fi\fi% +\else\if\@tmpa Q%1,2,3,4 + \decalinev[fhk]{#2}% +\else\if\@tmpa O%quinone having 4 carbonyl groups + \if\@tmpb a% (A)1,2,5,6-type + \decalinev[chk]{#2}% + \else\ifx\@tmpb\empty% (A)1,2,5,6-type + \decalinev[chk]{#2}% + \else\if\@tmpb b% (B)1,2,7,8-type + \decalinev[cfk]{#2}% + \else\if\@tmpb c% (C)1,2,3,5-type + \decalinev[dgi]{#2}% + \else\if\@tmpb d% (D)1,2,3,7-type + \decalinev[dfi]{#2}% + \fi\fi\fi\fi\fi% +\else% added 1998/11/23 by S. Fujita + \decalinev[@#1]{#2}% +\fi\fi\fi\fi\fi\fi\fi\fi% +}% %end of \naphdrv macro +\let\naphthalenev=\naphdrv +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Vertical-bottom type} +% +% The macro |\naphdrvb| (|\naphthalenevb|) is used for drawing +% naphthalene derivatives +% of vertical-bottom type as well as naphthoquinone derivatives of +% vertical-bottom type. The skeleton and endocyclic double bonds are +% drawn directly, while substituents and exocyclic bonds are placed by +% useing the inner macro |\decalinevb|. +% \changes{v1.02}{1998/10/14}{Newly added command} +% +% The macro |\naphdrvb| has an argument |SUBSLIST| as well as an optional +% argument |OPT|. The latter designates a bond pattern in place of +% individual exocyclic bonds. +% +% \changes{v3.00}{2002/04/30}{\cs{naphthalenevb} added} +% +% \begin{verbatim} +% ********************************************** +% * naphthalene and naphthoquinone derivatives * +% * (vertical-bottom type) * +% ********************************************** +% +% \naphdrvb[OPT]{SUBSLIST} +% \naphthalenevb[OPT]{SUBSLIST} +% \end{verbatim} +% +% The |OPT| argument contains one or two characters. +% +% The character `A' is used for designating an aromatic bond pattern, in +% which each of the six-membered rings has a central circle. +% +% \begin{verbatim} +% OPT (bond pattern) +% +% none : naphthalene +% A : aromatic circle +% \end{verbatim} +% +% One character `p' or two characters (p?) in the |OPT| argument +% designate a p-quinone nucleus, which is present in the +% right-hand ring for the case of `p' or `pa' and in the +% left-hand ring for the case of `pb'. +% +% \begin{verbatim} +% p or pa : 1,4-quinone (A) left aromatic, right quinone +% pb : 1,4-quinone (B) right aromatic, left quinone +% \end{verbatim} +% +% One character `o' or two characters (o?) in the |OPT| argument +% designate an o-quinone nucleus in either side of the fused ring. +% The second character of each argument indicates one of the possible +% type of bond patterns. +% +% \begin{verbatim} +% o or oa : o-quinone (A) +% ob : o-quinone (B) +% oc : o-quinone (C) +% od : o-quinone (D) +% oe : o-quinone (E) +% of : o-quinone (F) +% \end{verbatim} +% +% One character `q' or two characters (q?) in the |OPT| argument +% designate an 2,6-, 1,5- or 1,7-quinone nucleus. +% The second character of each argument indicates one of the possible +% type of bond patterns. +% +% \begin{verbatim} +% +% q or qa : 2,6-quinone (A) +% qb : 2,6-quinone (B) 3,7 +% qc : 1,5-quinone (C) +% qd : 1,5-quinone (D) 4,8 +% qe : 1,7-quinone (E) +% qf : 1,7-quinone (F) 2,8 +% qg : 1,7-quinone (G) 4,6 +% qh : 1,7-quinone (H) 3,5 +% \end{verbatim} +% +% One character `P' or two characters (P?) in the |OPT| argument +% designate a 1,4,5,8- or 1,2,5,8-quinone nucleus. +% +% \begin{verbatim} +% +% P or Pa : 1,4,5,8-quinone (A) +% Pb : 1,2,5,8-quinone (B) +% \end{verbatim} +% +% One character `Q' or `O' or two characters (O?) in the |OPT| argument +% designate quinone nuclei of remaining types. +% +% \begin{verbatim} +% Q : 1,2,3,4-quinone +% +% O or Oa : 1,2,5,6-quinone (A) +% Ob : 1,2,7,8-quinone (B) +% Oc : 1,2,3,5-quinone (C) +% Od : 1,2,3,7-quinone (D) +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% +% SUBSLIST: list of substituents +% +% for n = 1 to 8 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% \end{verbatim} +% +% \begin{verbatim} +% e.g. +% \naphdrvb{1==Cl;2==F} +% \naphdrvb[A]{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% +% \begin{macro}{\naphdrvb} +% \begin{macro}{\napphathaleneb} +% \begin{macrocode} +\def\naphdrvb{\@ifnextchar[{\@naphdrvb}{\@naphdrvb[r]}} +\def\@naphdrvb[#1]#2{% +\iforigpt \typeout{command `naphdrvb' is based on `decalinevb'.}\fi% + \expandafter\threech@r#1{}{}% +\if\@tmpa r% right-handed set of double bonds + \decalinevb[acfhk]{#2}% +\else\if\@tmpa A%aromatic circle + \decalinevb[AB]{#2}% +% +\else\if\@tmpa p%p-quinone + \if\@tmpb a% (A) + \decalinevb[bfhk]{#2}% + \else\ifx\@tmpb\empty% (A) + \decalinevb[bfhk]{#2}% + \else\if\@tmpb b% (B) + \decalinevb[acgk]{#2}% + \fi\fi\fi% +\else% + \if\@tmpa o%o-quinone + \if\@tmpb a% (A) + \decalinevb[cfhk]{#2}% + \else\ifx\@tmpb\empty% (A) + \decalinevb[cfhk]{#2}% + \else\if\@tmpb b%o-quinone (B) + \decalinevb[dfhj]{#2}% + \else\if\@tmpb c%o-quinone (C) + \decalinevb[afhk]{#2}% + \else\if\@tmpb d%o-quinone (D) + \decalinevb[achk]{#2}% + \else\if\@tmpb e%o-quinone (E) + \decalinevb[acei]{#2}% + \else\if\@tmpb f%o-quinone (F) + \decalinevb[acfk]{#2}% + \fi\fi\fi\fi\fi\fi% + \fi% +%%% +\else\if\@tmpa q%various quinone + \if\@tmpb a% (A)2,6-type + \decalinevb[cehj]{#2}% + \else\ifx\@tmpb\empty% (A)2,6-type + \decalinevb[cehj]{#2}% + \else\if\@tmpb b%2,6-quinone (B) + \decalinevb[adfi]{#2}% + \else\if\@tmpb c%1,5-quinone (C) + \decalinevb[bdgi]{#2}% + \else\if\@tmpb d%1,5-quinone (D) + \decalinevb[begj]{#2}% + \else\if\@tmpb e%1,7-quinone (E) + \decalinevb[bdfi]{#2}% + \else\if\@tmpb f%1,7-quinone (F) + \decalinevb[cegj]{#2}% + \else\if\@tmpb g%1,7-quinone (G) + \decalinevb[behj]{#2}% + \else\if\@tmpb h%1,7-quinone (H) + \decalinevb[adgi]{#2}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi% +\else\if\@tmpa P%quinone having 4 carbonyl groups + \if\@tmpb a% (A)1,4,5,8-type + \decalinevb[bgk]{#2}% + \else\ifx\@tmpb\empty% (A)1,4,5,8-type + \decalinevb[bgk]{#2}% + \else\if\@tmpb b% (B)1,2,5,8-type + \decalinevb[cgk]{#2}% + \fi\fi\fi% +\else\if\@tmpa Q%1,2,3,4 + \decalinevb[fhk]{#2}% +\else\if\@tmpa O%quinone having 4 carbonyl groups + \if\@tmpb a% (A)1,2,5,6-type + \decalinevb[chk]{#2}% + \else\ifx\@tmpb\empty% (A)1,2,5,6-type + \decalinevb[chk]{#2}% + \else\if\@tmpb b% (B)1,2,7,8-type + \decalinevb[cfk]{#2}% + \else\if\@tmpb c% (C)1,2,3,5-type + \decalinevb[dgi]{#2}% + \else\if\@tmpb d% (D)1,2,3,7-type + \decalinevb[dfi]{#2}% + \fi\fi\fi\fi\fi% +\else% added 1998/11/23 by S. Fujita + \decalinevb[@#1]{#2}% +\fi\fi\fi\fi\fi\fi\fi\fi% +}% %end of \naphdrvb macro +\let\naphthalenevb=\naphdrvb +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Vertical-top type} +% +% The macro |\naphdrvt| (|\naphthalenevt|) is used for drawing +% naphthalene derivatives +% of vertical-top type as well as naphthoquinone derivatives of +% vertical-top type. The skeleton and endocyclic double bonds are +% drawn directly, while substituents and exocyclic bonds are placed by +% useing the inner macro |\decalinevt|. +% \changes{v1.02}{1998/10/14}{Newly added command} +% +% The macro |\naphdrvt| has an argument |SUBSLIST| as well as an optional +% argument |OPT|. The latter designates a bond pattern in place of +% individual exocyclic bonds. +% +% \changes{v3.00}{2002/04/30}{\cs{naphthalenevt} added} +% +% \begin{verbatim} +% ********************************************** +% * naphthalene and naphthoquinone derivatives * +% * (vertical-top type) * +% ********************************************** +% +% \naphdrvt[OPT]{SUBSLIST} +% \naphthalenevt[OPT]{SUBSLIST} +% \end{verbatim} +% +% The |OPT| argument contains one or two characters. +% +% The character `A' is used for designating an aromatic bond pattern, in +% which each of the six-membered rings has a central circle. +% +% \begin{verbatim} +% OPT (bond pattern) +% +% none : naphthalene +% A : aromatic circle +% \end{verbatim} +% +% One character `p' or two characters (p?) in the |OPT| argument +% designate a p-quinone nucleus, which is present in the +% right-hand ring for the case of `p' or `pa' and in the +% left-hand ring for the case of `pb'. +% +% \begin{verbatim} +% p or pa : 1,4-quinone (A) left aromatic, right quinone +% pb : 1,4-quinone (B) right aromatic, left quinone +% \end{verbatim} +% +% One character `o' or two characters (o?) in the |OPT| argument +% designate an o-quinone nucleus in either side of the fused ring. +% The second character of each argument indicates one of the possible +% type of bond patterns. +% +% \begin{verbatim} +% o or oa : o-quinone (A) +% ob : o-quinone (B) +% oc : o-quinone (C) +% od : o-quinone (D) +% oe : o-quinone (E) +% of : o-quinone (F) +% \end{verbatim} +% +% One character `q' or two characters (q?) in the |OPT| argument +% designate an 2,6-, 1,5- or 1,7-quinone nucleus. +% The second character of each argument indicates one of the possible +% type of bond patterns. +% +% \begin{verbatim} +% +% q or qa : 2,6-quinone (A) +% qb : 2,6-quinone (B) 3,7 +% qc : 1,5-quinone (C) +% qd : 1,5-quinone (D) 4,8 +% qe : 1,7-quinone (E) +% qf : 1,7-quinone (F) 2,8 +% qg : 1,7-quinone (G) 4,6 +% qh : 1,7-quinone (H) 3,5 +% \end{verbatim} +% +% One character `P' or two characters (P?) in the |OPT| argument +% designate a 1,4,5,8- or 1,2,5,8-quinone nucleus. +% +% \begin{verbatim} +% +% P or Pa : 1,4,5,8-quinone (A) +% Pb : 1,2,5,8-quinone (B) +% \end{verbatim} +% +% One character `Q' or `O' or two characters (O?) in the |OPT| argument +% designate quinone nuclei of remaining types. +% +% \begin{verbatim} +% Q : 1,2,3,4-quinone +% +% O or Oa : 1,2,5,6-quinone (A) +% Ob : 1,2,7,8-quinone (B) +% Oc : 1,2,3,5-quinone (C) +% Od : 1,2,3,7-quinone (D) +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% +% SUBSLIST: list of substituents +% +% for n = 1 to 8 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% \end{verbatim} +% +% \begin{verbatim} +% e.g. +% \naphdrvt{1==Cl;2==F} +% \naphdrvt[A]{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% +% \begin{macro}{\naphdrvt} +% \begin{macro}{\naphthalenevt} +% \begin{macrocode} +\def\naphdrvt{\@ifnextchar[{\@naphdrvt}{\@naphdrvt[r]}} +\def\@naphdrvt[#1]#2{% +\iforigpt \typeout{command `naphdrvt' is based on `decalinevt'.}\fi% + \expandafter\threech@r#1{}{}% +\if\@tmpa r% right-handed set of double bonds + \decalinevt[acfhk]{#2}% +\else\if\@tmpa A%aromatic circle + \decalinevt[AB]{#2}% +% +\else\if\@tmpa p%p-quinone + \if\@tmpb a% (A) + \decalinevt[bfhk]{#2}% + \else\ifx\@tmpb\empty% (A) + \decalinevt[bfhk]{#2}% + \else\if\@tmpb b% (B) + \decalinevt[acgk]{#2}% + \fi\fi\fi% +\else% + \if\@tmpa o%o-quinone + \if\@tmpb a% (A) + \decalinevt[cfhk]{#2}% + \else\ifx\@tmpb\empty% (A) + \decalinevt[cfhk]{#2}% + \else\if\@tmpb b%o-quinone (B) + \decalinevt[dfhj]{#2}% + \else\if\@tmpb c%o-quinone (C) + \decalinevt[afhk]{#2}% + \else\if\@tmpb d%o-quinone (D) + \decalinevt[achk]{#2}% + \else\if\@tmpb e%o-quinone (E) + \decalinevt[acei]{#2}% + \else\if\@tmpb f%o-quinone (F) + \decalinevt[acfk]{#2}% + \fi\fi\fi\fi\fi\fi% + \fi% +%%% +\else\if\@tmpa q%various quinone + \if\@tmpb a% (A)2,6-type + \decalinevt[cehj]{#2}% + \else\ifx\@tmpb\empty% (A)2,6-type + \decalinevt[cehj]{#2}% + \else\if\@tmpb b%2,6-quinone (B) + \decalinevt[adfi]{#2}% + \else\if\@tmpb c%1,5-quinone (C) + \decalinevt[bdgi]{#2}% + \else\if\@tmpb d%1,5-quinone (D) + \decalinevt[begj]{#2}% + \else\if\@tmpb e%1,7-quinone (E) + \decalinevt[bdfi]{#2}% + \else\if\@tmpb f%1,7-quinone (F) + \decalinevt[cegj]{#2}% + \else\if\@tmpb g%1,7-quinone (G) + \decalinevt[behj]{#2}% + \else\if\@tmpb h%1,7-quinone (H) + \decalinevt[adgi]{#2}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi% +\else\if\@tmpa P%quinone having 4 carbonyl groups + \if\@tmpb a% (A)1,4,5,8-type + \decalinevt[bgk]{#2}% + \else\ifx\@tmpb\empty% (A)1,4,5,8-type + \decalinevt[bgk]{#2}% + \else\if\@tmpb b% (B)1,2,5,8-type + \decalinevt[cgk]{#2}% + \fi\fi\fi% +\else\if\@tmpa Q%1,2,3,4 + \decalinevt[fhk]{#2}% +\else\if\@tmpa O%quinone having 4 carbonyl groups + \if\@tmpb a% (A)1,2,5,6-type + \decalinevt[chk]{#2}% + \else\ifx\@tmpb\empty% (A)1,2,5,6-type + \decalinevt[chk]{#2}% + \else\if\@tmpb b% (B)1,2,7,8-type + \decalinevt[cfk]{#2}% + \else\if\@tmpb c% (C)1,2,3,5-type + \decalinevt[dgi]{#2}% + \else\if\@tmpb d% (D)1,2,3,7-type + \decalinevt[dfi]{#2}% + \fi\fi\fi\fi\fi% +\else% added 1998/11/23 by S. Fujita + \decalinevt[@#1]{#2}% +\fi\fi\fi\fi\fi\fi\fi\fi% +}% %end of \naphdrvt macro +\let\naphthalenevt=\naphdrvt +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Horizontal type} +% +% The macro |\naphdrh| is used for drawing naphthalene derivatives +% of horizontal type as well as naphtoquinone derivatives of +% horizontal type. The skeleton and endocyclic double bonds are +% drawn directly, while substituents and exocyclic bonds are placed by +% useing the inner macro |\decalineh|. +% +% The macro |\naphdrh| has an argument |SUBSLIST| as well as an optional +% argument |OPT|. The latter designates a bond pattern in place of +% individual exocyclic bonds. +% +% \changes{v3.00}{2002/04/30}{\cs{naphthaleneh} added} +% +% \begin{verbatim} +% ********************************************** +% * naphthalene and naphthoquinone derivatives * +% * (horizontal type) * +% ********************************************** +% +% \naphdrh[OPT]{SUBSLIST} +% \naphthaleneh[OPT]{SUBSLIST} +% +% \end{verbatim} +% +% The |OPT| argument contains one or two characters for designate +% aromatic bond patterns or for naphthoquinone bond patterns. +% The meaning of these characters is the same as described in +% the definition of the macro |\naphdrv|. +% +% \begin{verbatim} +% OPT (bond pattern) +% +% none : naphthalene +% A : aromatic circle +% +% p or pa : 1,4-quinone (A) left aromatic, right quinone +% pb : 1,4-quinone (B) right aromatic, left quinone +% +% o or oa : o-quinone (A) +% ob : o-quinone (B) +% oc : o-quinone (C) +% od : o-quinone (D) +% oe : o-quinone (E) +% of : o-quinone (F) +% +% q or qa : 2,6-quinone (A) +% qb : 2,6-quinone (B) 3,7 +% qc : 1,5-quinone (C) +% qd : 1,5-quinone (D) 4,8 +% qe : 1,7-quinone (E) +% qf : 1,7-quinone (F) 2,8 +% qg : 1,7-quinone (G) 4,6 +% qh : 1,7-quinone (H) 3,5 +% +% P or Pa : 1,4,5,8-quinone (A) +% Pb : 1,2,5,8-quinone (B) +% +% Q : 1,2,3,4-quinone +% +% O or Oa : 1,2,5,6-quinone (A) +% Ob : 1,2,7,8-quinone (B) +% Oc : 1,2,3,5-quinone (C) +% Od : 1,2,3,7-quinone (D) +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% +% SUBSLIST: list of substituents +% +% for n = 1 to 8 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% +% \end{verbatim} +% +% \begin{verbatim} +% e.g. +% \naphdrh{1==Cl;2==F} +% \naphdrh[A]{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% +% \begin{macro}{\naphdrh} +% \begin{macro}{\naphthaleneh} +% \begin{macrocode} +\def\naphdrh{\@ifnextchar[{\@naphdrh}{\@naphdrh[r]}} +\def\@naphdrh[#1]#2{% +\iforigpt \typeout{command `nathdrh' is based on `decalineh'.}\fi% + \expandafter\threech@r#1{}{}% +\if\@tmpa r% right-handed set of double bonds + \decalineh[acfhk]{#2}% +\else\if\@tmpa A%aromatic circle + \decalineh[AB]{#2}% +% +\else\if\@tmpa p%p-quinone + \if\@tmpb a% (A) + \decalineh[bfhk]{#2}% + \else\ifx\@tmpb\empty% (A) + \decalineh[bfhk]{#2}% + \else\if\@tmpb b% (B) + \decalineh[acgk]{#2}% + \fi\fi\fi% +\else% + \if\@tmpa o%o-quinone + \if\@tmpb a% (A) + \decalineh[cfhk]{#2}% + \else\ifx\@tmpb\empty% (A) + \decalineh[cfhk]{#2}% + \else\if\@tmpb b%o-quinone (B) + \decalineh[dfhj]{#2}% + \else\if\@tmpb c%o-quinone (C) + \decalineh[afhk]{#2}% + \else\if\@tmpb d%o-quinone (D) + \decalineh[achk]{#2}% + \else\if\@tmpb e%o-quinone (E) + \decalineh[acei]{#2}% + \else\if\@tmpb f%o-quinone (F) + \decalineh[acfk]{#2}% + \fi\fi\fi\fi\fi\fi% + \fi% +% %% +\else\if\@tmpa q%various quinone + \if\@tmpb a% (A)2,6-type + \decalineh[cehj]{#2}% + \else\ifx\@tmpb\empty% (A)2,6-type + \decalineh[cehj]{#2}% + \else\if\@tmpb b%2,6-quinone (B) + \decalineh[adfi]{#2}% + \else\if\@tmpb c%1,5-quinone (C) + \decalineh[bdgi]{#2}% + \else\if\@tmpb d%1,5-quinone (D) + \decalineh[begj]{#2}% + \else\if\@tmpb e%1,7-quinone (E) + \decalineh[bdfi]{#2}% + \else\if\@tmpb f%1,7-quinone (F) + \decalineh[cegj]{#2}% + \else\if\@tmpb g%1,7-quinone (G) + \decalineh[behj]{#2}% + \else\if\@tmpb h%1,7-quinone (H) + \decalineh[adgi]{#2}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi% +\else\if\@tmpa P%quinone having 4 carbonyl groups + \if\@tmpb a% (A)1,4,5,8-type + \decalineh[bgk]{#2}% + \else\ifx\@tmpb\empty% (A)1,4,5,8-type + \decalineh[bgk]{#2}% + \else\if\@tmpb b% (B)1,2,5,8-type + \decalineh[cgk]{#2}% + \fi\fi\fi% +\else\if\@tmpa Q%1,2,3,4 + \decalineh[fhk]{#2}% +\else\if\@tmpa O%quinone having 4 carbonyl groups + \if\@tmpb a% (A)1,2,5,6-type + \decalineh[chk]{#2}% + \else\ifx\@tmpb\empty% (A)1,2,5,6-type + \decalineh[chk]{#2}% + \else\if\@tmpb b% (B)1,2,7,8-type + \decalineh[cfk]{#2}% + \else\if\@tmpb c% (C)1,2,3,5-type + \decalineh[dgi]{#2}% + \else\if\@tmpb d% (D)1,2,3,7-type + \decalineh[dfi]{#2}% + \fi\fi\fi\fi\fi% +\else% added 1998/11/23 by S. Fujita + \decalineh[@#1]{#2}% +\fi\fi\fi\fi\fi\fi\fi\fi% +}% %end of \naphdrh macro +\let\naphthaleneh=\naphdrh +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \section{Tetraline derivatives} +% \subsection{Vertical type} +% +% The macro |\tetralinev| is used for drawing naphthalene derivatives +% of vertical type as well as naphthoquinone derivatives of +% vertical type. The skeleton and endocyclic double bonds are +% drawn directly, while substituents and exocyclic bonds are placed by +% useing the inner macro |\decalinev|. +% +% The macro |\tetralinev| has an argument |SUBSLIST| as well as an optional +% argument |OPT|. The latter designates a bond pattern in place of +% individual exocyclic bonds. +% +% \begin{verbatim} +% ************************* +% * tetraline derivatives * +% * (vertical type) * +% ************************* +% +% \tetralinev[OPT]{SUBSLIST} +% \end{verbatim} +% +% The |OPT| argument contains one or two characters for designate +% aromatic bond patterns or for naphthoquinone bond patterns. +% +% \begin{verbatim} +% +% OPT = none : tetraline +% A : aromatic circle +% +% e or ea : 1,2-double bond +% eb : 2,3-double bond +% ec : 3,4-double bond +% \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 +% +% for n=5 or 8 +% +% nSa : bias bond +% This option can be used to avoid over-crowding +% betweem 1 and 8 or between 4 and 5. +% \end{verbatim} +% +% \begin{verbatim} +% e.g. +% +% \tetralinev{1==Cl;2==F} +% \tetralinev[A]{1==Cl;4==F;2==CH$_{3}$} +% \tetralinev[eb]{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl;7==Cl;8==Cl} +% \end{verbatim} +% +% \begin{macro}{\tetralinev} +% \begin{macrocode} +\def\tetralinev{\@ifnextchar[{\@tetralinev}{\@tetralinev[r]}} +\def\@tetralinev[#1]#2{% + \iforigpt \typeout{command `tetralinev' is based on `decalinev'.}\fi% + \expandafter\threech@r#1{}{}% + \if\@tmpa r% right-handed set of double bonds + \decalinev[fhk]{#2}% + \else\if\@tmpa A%aromatic circle + \decalinev[A]{#2}% + \else\if\@tmpa e%inner double bond + \if\@tmpb a% (A)% + \decalinev[afhk]{#2}% + \else\ifx\@tmpb\empty% (A) + \decalinev[afhk]{#2}% + \else\if\@tmpb b% (B) + \decalinev[bfhk]{#2}% + \else\if\@tmpb c% (C) + \decalinev[cfhk]{#2}% + \fi\fi\fi\fi% + \else%1998/11/23 by Shinsaku Fujita + \decalinev[@#1]{#2}% + \fi\fi\fi% +}% %end of \tetralinev macro +% \end{macrocode} +% \end{macro} +% +% \subsection{Vertical-bottom type} +% +% The macro |\tetralinevb| is used for drawing naphthalene derivatives +% of vertical-bottom type as well as naphthoquinone derivatives of +% vertical type. The skeleton and endocyclic double bonds are +% drawn directly, while substituents and exocyclic bonds are placed by +% useing the inner macro |\decalinevb|. +% \changes{v1.02}{1998/10/14}{Newly added command} +% +% The macro |\tetralinevb| has an argument |SUBSLIST| as well as an optional +% argument |OPT|. The latter designates a bond pattern in place of +% individual exocyclic bonds. +% +% \begin{verbatim} +% ******************************** +% * tetraline derivatives * +% * (vertical-bottom type) * +% ******************************** +% +% \tetralinevb[OPT]{SUBSLIST} +% \end{verbatim} +% +% The |OPT| argument contains one or two characters for designate +% aromatic bond patterns or for naphthoquinone bond patterns. +% +% \begin{verbatim} +% +% OPT = none : tetraline +% A : aromatic circle +% +% e or ea : 1,2-double bond +% eb : 2,3-double bond +% ec : 3,4-double bond +% \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 +% +% for n=5 or 8 +% +% nSa : bias bond +% This option can be used to avoid over-crowding +% betweem 1 and 8 or between 4 and 5. +% \end{verbatim} +% +% \begin{verbatim} +% e.g. +% +% \tetralinevb{1==Cl;2==F} +% \tetralinevb[A]{1==Cl;4==F;2==CH$_{3}$} +% \tetralinevb[eb]{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl;7==Cl;8==Cl} +% \end{verbatim} +% +% \begin{macro}{\tetralinevb} +% \begin{macrocode} +\def\tetralinevb{\@ifnextchar[{\@tetralinevb}{\@tetralinevb[r]}} +\def\@tetralinevb[#1]#2{% + \iforigpt \typeout{command `tetralinevb' is based on `decalinevb'.}\fi% + \expandafter\threech@r#1{}{}% + \if\@tmpa r% right-handed set of double bonds + \decalinevb[fhK]{#2}% %[fhK] in place of [fhk] + \else\if\@tmpa A%aromatic circle + \decalinevb[A]{#2}% + \else\if\@tmpa e%inner double bond + \if\@tmpb a% (A)% + \decalinevb[afhK]{#2}% + \else\ifx\@tmpb\empty% (A) + \decalinevb[afhK]{#2}% + \else\if\@tmpb b% (B) + \decalinevb[bfhK]{#2}% + \else\if\@tmpb c% (C) + \decalinevb[cfhK]{#2}% + \fi\fi\fi\fi% + \else%1998/11/23 by Shinsaku Fujita + \decalinevb[@#1]{#2}% + \fi\fi\fi% +}% %end of \tetralinevb macro +% \end{macrocode} +% \end{macro} +% +% \subsection{Vertical-top type} +% +% The macro |\tetralinevt| is used for drawing naphthalene derivatives +% of vertical-top type as well as naphthoquinone derivatives of +% vertical type. The skeleton and endocyclic double bonds are +% drawn directly, while substituents and exocyclic bonds are placed by +% useing the inner macro |\decalinevt|. +% \changes{v1.02}{1998/10/14}{Newly added command} +% +% The macro |\tetralinevt| has an argument |SUBSLIST| as well as an optional +% argument |OPT|. The latter designates a bond pattern in place of +% individual exocyclic bonds. +% +% \begin{verbatim} +% ******************************** +% * tetraline derivatives * +% * (vertical-bottom type) * +% ******************************** +% +% \tetralinevt[OPT]{SUBSLIST} +% \end{verbatim} +% +% The |OPT| argument contains one or two characters for designate +% aromatic bond patterns or for naphthoquinone bond patterns. +% +% \begin{verbatim} +% +% OPT = none : tetraline +% A : aromatic circle +% +% e or ea : 1,2-double bond +% eb : 2,3-double bond +% ec : 3,4-double bond +% \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 +% +% for n=5 or 8 +% +% nSa : bias bond +% This option can be used to avoid over-crowding +% betweem 1 and 8 or between 4 and 5. +% \end{verbatim} +% +% \begin{verbatim} +% e.g. +% +% \tetralinevt{1==Cl;2==F} +% \tetralinevt[A]{1==Cl;4==F;2==CH$_{3}$} +% \tetralinevt[eb]{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl;7==Cl;8==Cl} +% \end{verbatim} +% +% \begin{macro}{\tetralinevt} +% \begin{macrocode} +\def\tetralinevt{\@ifnextchar[{\@tetralinevt}{\@tetralinevt[r]}} +\def\@tetralinevt[#1]#2{% + \iforigpt \typeout{command `tetralinevt' is based on `decalinevt'.}\fi% + \expandafter\threech@r#1{}{}% + \if\@tmpa r% right-handed set of double bonds + \decalinevt[fhk]{#2}% + \else\if\@tmpa A%aromatic circle + \decalinevt[A]{#2}% + \else\if\@tmpa e%inner double bond + \if\@tmpb a% (A)% + \decalinevt[afhk]{#2}% + \else\ifx\@tmpb\empty% (A) + \decalinevt[afhk]{#2}% + \else\if\@tmpb b% (B) + \decalinevt[bfhk]{#2}% + \else\if\@tmpb c% (C) + \decalinevt[cfhk]{#2}% + \fi\fi\fi\fi% + \else%1998/11/23 by Shinsaku Fujita + \decalinevt[@#1]{#2}% + \fi\fi\fi% +}% %end of \tetralinevt macro +% \end{macrocode} +% \end{macro} +% +% \subsection{Horizontal type} +% +% The macro |\tetralineh| is used for drawing tetraline derivatives +% of horizontal type. +% +% The macro |\tetralineh| has an argument |SUBSLIST| as well as an optional +% argument |OPT|. The latter designates a bond pattern in place of +% individual exocyclic bonds. +% +% \begin{verbatim} +% ************************* +% * tetraline derivatives * +% * (horizontal type) * +% ************************* +% +% \tetralineh[OPT]{SUBSLIST} +% \end{verbatim} +% +% The |OPT| argument contains one or two characters for designate +% aromatic bond patterns or for naphthoquinone bond patterns. +% +% \begin{verbatim} +% OPT = none : tetraline +% A : aromatic circle +% +% e or ea : 1,2-double bond +% eb : 2,3-double bond +% ec : 3,4-double bond +% \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 +% +% for n=5 or 8 +% +% nSa : bias bond +% This option can be used to avoid over-crowding +% betweem 1 and 8 or between 4 and 5. +% \end{verbatim} +% +% \begin{verbatim} +% e.g. +% +% \tetralineh{1==Cl;2==F} +% \tetralineh[A]{1==Cl;4==F;2==CH$_{3}$} +% \tetralineh[eb]{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl;7==Cl;8==Cl} +% \end{verbatim} +% +% \begin{macro}{\tetralineh} +% \begin{macrocode} +\def\tetralineh{\@ifnextchar[{\@tetralineh}{\@tetralineh[r]}} +\def\@tetralineh[#1]#2{% + \iforigpt \typeout{command `tetralineh' is based on `decalineh'.}\fi% + \expandafter\threech@r#1{}{}% + \if\@tmpa r% right-handed set of double bonds + \decalineh[fhk]{#2}% + \else\if\@tmpa A%aromatic circle + \decalineh[A]{#2}% + \else\if\@tmpa e%inner double bond + \if\@tmpb a% (A)% + \decalineh[afhk]{#2}% + \else\ifx\@tmpb\empty% (A) + \decalineh[afhk]{#2}% + \else\if\@tmpb b% (B) + \decalineh[bfhk]{#2}% + \else\if\@tmpb c% (C) + \decalineh[cfhk]{#2}% + \fi\fi\fi\fi% +\else% added 1998/11/23 by S. Fujita + \decalineh[@#1]{#2}% + \fi\fi\fi% +}% %end of \tetralineh macro +% \end{macrocode} +% \end{macro} +% +% \section{Anthracene derivatives} +% \subsection{Perhydro-anthracene derivatives of Vertical type} +% +% The macro |\hanthracenev| is used for drawing perhydroanthracene +% derivatives of vertical type. +% +% The macro |\hanthracenev| has an argument |SUBSLIST| as well as an optional +% argument |BONDLIST|. +% +% \begin{verbatim} +% *********************************** +% * perhydro anthracene derivatives * +% * (vertical type) * +% *********************************** +% +% \hanthracenev[BONDLIST]{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one or more +% characters selected form a to p, each of which indicates +% the presence of an inner (endcyclic) double bond on the corresponding +% position. The character A, B, or C indicates an aromatic bond +% pattern (circle). +% \changes{v1.02}{1998/10/14}{BONDLIST: o, O, p and P at the fused bond} +% +% \begin{verbatim} +% BONDLIST = +% +% none : hanthracene +% a : 1,2-double bond +% b : 2,3-double bond +% c : 3,4-double bond +% d : 4,4a-double bond +% e : 10,4a-double bond +% f : 10,10a-double bond +% g : 5,10a-double bond +% h : 5,6-double bond +% i : 6,7-double bond +% j : 8,7-double bond +% k : 8,8a-double bond +% l : 9,8a-double bond +% m : 9,9a-double bond +% n : 1,9a-double bond +% o : 4a,9a-double bond +% O : 4a,9a-double bond in the other ring +% p : 10a,8a-double bond +% P : 10a,8a-double bond in the other ring +% A : right aromatic circle +% B : central aromatic circle +% C : left aromatic circle +% \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 10 +% +% 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} +% +% \begin{verbatim} +% +% for 11 (fused positions, 9a and 4a) +% +% 11FA : alpha single bond at 9a +% 11FB : beta single bond at 9a +% 11FU : unspecified single bond at 9a +% 11GA : alpha single bond at 4a +% 11GB : beta single bond at 4a +% 11GU : unspecified single bond at 4a +% \end{verbatim} +% +% \begin{verbatim} +% +% for 12 (fused positions, 8a and 10a) +% +% 12FA : alpha single bond at 8a +% 12FB : beta single bond at 8a +% 12FU : unspecified single bond at 8a +% 12GA : alpha single bond at 10a +% 12GB : beta single bond at 10a +% 12GU : unspecified single bond at 10a +% \end{verbatim} +% +% \begin{verbatim} +% e.g. +% +% \hanthracenev{1==Cl;2==F;{{10}}==OH} +% \hanthracenev[c]{1==Cl;4==F;2==CH$_{3}$; +% {{11}FA}==OH;{{11}FB}==OH} +% \hanthracenev[eb]{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl;7==Cl;8==Cl} +% \end{verbatim} +% +% \changes{v1.02}{1998/10/31}{The command \cs{setdecaringv} has +% been stopped to use.} +% \changes{v1.02}{1998/10/31}{Adding \cs{ylpositionh}, \cs{if@ylsw} +% \cs{ylfusedposition}, +% \cs{yl@shiftii}, \cs{@ylii}, \cs{@@ylii}, \cs{yl@shifti}, \cs{@yli}, +% \cs{@yli}, \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/12/25}{Added: fused rings} +% +% \begin{macro}{\hanthracenev} +% \begin{macrocode} +\def\hanthracenev{\@ifnextchar[{\@hanthracenev[@}{\@hanthracenev[r]}} +\def\@hanthracenev[#1]#2{% +% bonds for outer skeleton +\@reset@ylsw\reset@@yl +\ylposition{#2}{-7}{0}{2}{0}% %for 8 positions +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else\ylposition{#2}{-1}{3}{7}{0}% for 5 to 7 positions +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi\else +\ylposition{#2}{0}{0}{5}{0}% for 1 to 4 positions +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-684}\def\@@yli{0}\fi\else +\ylposition{#2}{-8}{0}{2}{0}%for 9-position +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-342}\def\@@yli{0}\fi\else +\ylposition{#2}{-6}{3}{5}{0}%for 10-position +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-342}\def\@@yli{0}\fi\else +\ylfusedposition{#2}{-11}{-1}{1}{0}% for 9a and 4a +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-342}\def\@@yli{0}\fi\else +\ylfusedposition{#2}{-12}{-1}{1}{0}% for 8a and 10a +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi\fi +\if@ylsw + \yl@shiftii=\@ylii + \ifx\@@ylii\empty\else + \advance\yl@shiftii\@@ylii\fi + \yl@shifti=\@yli + \ifx\@@yli\empty\else + \advance\yl@shifti\@@yli\fi + \advance\yl@shiftii\yl@xdiff + \advance\yl@shifti\yl@ydiff + \begin{sfpicture}(0,0)(-\yl@shiftii,-\yl@shifti)% + \reset@yl@xydiff%1999/1/6 by S. Fujita +\else + \begin{sfpicture}(1200,880)(-\shiftii,-\shifti)% + \origptoutput{hanthracenev}% +\fi + \Put@Line(0,406)(-5,-3){171}% %bond 8-7 + \Put@Line(0,406)(5,-3){171}% %bond 8-8a + \Put@Line(0,0)(-5,3){171}% %bond 5-6 + \Put@Line(0,0)(5,3){171}% %bond 5-10a + \Put@Line(171,103)(0,1){200}% %bond 10a-8a + \Put@Line(-171,103)(0,1){200}% %bond 6-7 + \Put@Line(342,406)(-5,-3){171}% %bond 9-8a + \Put@Line(342,406)(5,-3){171}% %bond 9-9a + \Put@Line(342,0)(-5,3){171}% %bond 10-10a + \Put@Line(342,0)(5,3){171}% %bond 10-4a + \Put@Line(513,103)(0,1){200}% %bond 4a-9a + %%%% + \Put@Line(684,406)(-5,-3){171}% %bond 1-9a 1-6 + \Put@Line(684,406)(5,-3){171}% %bond 1-2 1-2 + \Put@Line(855,103)(0,1){200}% %bond 3-2 3-2 + \Put@Line(684,0)(5,3){171}% %bond 4-3 4-3 + \Put@Line(684,0)(-5,3){171}% %bond 4-4a 4-5 +% inner double bonds +\@tfor\member:=#1\do{% +\if\member r%no endcyclic double bonds +\else\if\member a% + \Put@Line(690,364)(5,-3){126}% %double bond 1-2 +\else\if\member b% + \Put@Line(822,129)(0,1){148}% %double bond 3-2 +\else\if\member c% + \Put@Line(690,42)(5,3){126}% %double bond 4-3 +\else\if\member d% + \Put@Line(690,42)(-5,3){126}% %double bond 4-4a +\else\if\member e% + \Put@Line(348,42)(5,3){126}% %double bond 10-4a +\else\if\member f% + \Put@Line(348,42)(-5,3){126}% %double bond 10-10a +\else\if\member g% + \Put@Line(6,42)(5,3){126}% %double bond 5-10a +\else\if\member h% + \Put@Line(-6,42)(-5,3){126}% %double bond 5-6 +\else\if\member i% + \Put@Line(-138,129)(0,1){148}% %double bond 6-7 +\else\if\member j% + \Put@Line(-6,364)(-5,-3){126}% %double bond 8-7 +\else\if\member k% + \Put@Line(6,364)(5,-3){126}% %double bond 8-8a +\else\if\member l% + \Put@Line(348,364)(-5,-3){126}% %double bond 9-8a +\else\if\member m% + \Put@Line(348,364)(5,-3){126}% %double bond 9-9a +\else\if\member n% + \Put@Line(690,364)(-5,-3){126}% %double bond 1-9a +\else\if\member o% + \Put@Line(544,129)(0,1){148}% %double bond 4a-9a +\else\if\member O% + \Put@Line(482,129)(0,1){148}% %double bond 4a-9a at the other ring +\else\if\member p% + \Put@Line(138,129)(0,1){148}% %double bond 10a-8a +\else\if\member P% + \Put@Line(204,129)(0,1){148}% %double bond 10a-8a at the other ring +\else\if\member C%left aromatic circle + \Put@oCircle(0,203){240}% %circle +\else\if\member B%right aromatic circle + \Put@oCircle(342,203){240}% %circle +\else\if\member A%right aromatic circle + \Put@oCircle(684,203){240}% %circle +\else +%setting fused rings + \expandafter\twoCH@R\member//% + \set@fusion@hanthrav +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}% +%exocyclic bonds and substituents +\global\drawsamesubsttrue%2002/05/30 warning on +\Put@Direct(0,0){\setsixringv{#2}{-7}{0}{2}{0}}% %for 8 positions +\global\drawsamesubstfalse%2002/05/30 warning off +\Put@Direct(0,0){\setsixringv{#2}{-1}{3}{7}{0}}% %for 5 to 7 positions +\Put@Direct(684,0){\setsixringv{#2}{0}{0}{5}{0}}% %for 1 to 4 positions +\Put@Direct(342,0){\setsixringv{#2}{-8}{0}{2}{0}}%for 9-position +\Put@Direct(342,0){\setsixringv{#2}{-6}{3}{5}{0}}%for 10-position +%bonds and substituents for fused positions +\Put@Direct(0,0){\setfusedbond{#2}{-12}{-1}{1}{0}}% for 8a and 10a +\Put@Direct(342,0){\setfusedbond{#2}{-11}{-1}{1}{0}}% for 9a and 4a +\end{sfpicture}}% %end of \hanthracenev macro% +% \end{macrocode} +% \end{macro} +% +% \subsection{Anthracene and anthraquinone derivatives} +% +% The macro |\anthracenev| is used for drawing anthracene derivatives +% of vertical type. +% +% The macro |\anthracenev| has an argument |SUBSLIST| as well as an optional +% argument |OPT|. The latter designates a bond pattern in place of +% individual exocyclic bonds. +% +% \begin{verbatim} +% ******************************************** +% * anthracene and anthraquinone derivatives * +% * (vertical type) * +% ******************************************** +% +% \anthracenev[OPT]{SUBSLIST} +% \end{verbatim} +% +% The |OPT| argument contains one or two characters for designate +% aromatic bond patterns or for naphthoquinone bond patterns. +% +% \begin{verbatim} +% OPT (bond pattern) +% +% none or r : right-handed double bonds +% l : left-handed double bonds +% A : aromatic circle +% +% p or pa : 9,10-anthraquinone (A) +% pA : 9,10-anthraquinone (circle type) +% +% o : 1,2-anthraquinone (A) +% oa : 1,2-anthraquinone (A') +% oA : 1,2-anthraquinone (circle type) +% ob : 2,3-antharquinone (B) +% oc : 1,2-anthraquinone (C) +% +% q : 1,4-anthraquinone (A) +% qa : 1,4-anthraquinone (A') +% qA : 1,4-anthraquinone (circle type) +% \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 10 +% +% 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} +% +% \begin{verbatim} +% e.g. +% +% \anthracenev{1==Cl;2==F;0FA==;0GA==} +% \anthracenev[A]{1==Cl;4==F;2==CH$_{3}$} +% \anthracenev[eb]{1D==O;4SA==MeO;4SB==OMe;% +% 5W==Cl;6==Cl;7==Cl;8==Cl} +% \end{verbatim} +% +% \begin{macro}{\anthracenev} +% \begin{macrocode} +\def\anthracenev{\@ifnextchar[{\@anthracenev}{\@anthracenev[r]}} +\def\@anthracenev[#1]#2{% + \iforigpt \typeout{command `anthracenev' is % + based on `hanthracenev'.}\fi% +%% \expandafter\threech@r#1{}{}%error1998/11/23 by Shinsaku Fujita + \expandafter\twoCH@R#1//% + \if\@tmpa r% right-handed set of double bonds + \hanthracenev[acflhjo]{#2}% + \else\if\@tmpa l% left-handed set of double bonds + \hanthracenev[acehjmp]{#2}% + \else\if\@tmpa A%aromatic circle + \hanthracenev[ABC]{#2}% + \else\if\@tmpa p%9,10-quinone + \if\@tmpb a% (A)% + \hanthracenev[achjop]{#2}% + \else\ifx\@tmpb\empty% (A) + \hanthracenev[achjop]{#2}% + \else\if\@tmpb A% circle type + \hanthracenev[AC]{#2}% + \else + \hanthracenev[achjop]{#2}% + \fi\fi\fi% + \else\if\@tmpa o%o-quinone + \if\@tmpb a% (A)% + \hanthracenev[cfjhlo]{#2}% + \else\ifx\@tmpb\empty% (A) + \hanthracenev[cehjmp]{#2}% + \else\if\@tmpb b% (B) + \hanthracenev[dfhjln]{#2}% + \else\if\@tmpb c% (C) + \hanthracenev[aehjmp]{#2}% + \else\if\@tmpb A% cicle type + \hanthracenev[cBC]{#2}% + \fi\fi\fi\fi\fi% + \else\if\@tmpa q%1,4-quinone + \if\@tmpb a% (A)% + \hanthracenev[bfhjlo]{#2}% + \else\ifx\@tmpb\empty% (A) + \hanthracenev[behjmp]{#2}% + \else\if\@tmpb A% circle type + \hanthracenev[bBC]{#2}% + \else% + \hanthracenev[behjmp]{#2}% + \fi\fi\fi% + \else + \hanthracenev[@#1]{#2}% + \fi\fi\fi\fi\fi\fi% +}% %end of \anthracenev macro% +% \end{macrocode} +% \end{macro} +% +% \section{Phenanthrene derivatives} +% \subsection{Perhydro-phenanthrene derivatives of Vertical type} +% +% The macro |\hphenanthrenev| is used for drawing perhydrophenanthrene +% derivatives of vertical type. +% +% The macro |\hphenanthrenev| has an argument |SUBSLIST| as well as an +% optional argument |BONDLIST|. +% +% \begin{verbatim} +% ************************************* +% * perhydro phenanthrene derivatives * +% * (vertical type) * +% ************************************* +% +% \hphenanthrenev[BONDLIST]{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one or more +% characters selected form a to p, each of which indicates +% the presence of an inner (endcyclic) double bond on the corresponding +% position. The character A, B, or C indicates an aromatic bond +% pattern (circle). +% \changes{v1.02}{1998/10/14}{BONDLIST: o, O, p and P at the fused bond} +% +% \begin{verbatim} +% +% BONDLIST = +% +% none : hphenanthrene +% a : 1,2-double bond +% b : 2,3-double bond +% c : 3,4-double bond +% d : 4,4a-double bond +% e : 4a,4b-double bond +% f : 4b,5-double bond +% g : 5,6-double bond +% h : 6,7-double bond +% i : 7,8-double bond +% j : 8,8a-double bond +% k : 8a,9-double bond +% l : 9,10-double bond +% m : 10,10a-double bond +% n : 1,10a-double bond +% o : 4a,10a-double bond +% O : 4a,10a-double bond in the other ring +% p : 4b,8a-double bond +% P : 4b,8a-double bond in the other ring +% A : right aromatic circle +% B : central aromatic circle +% C : left aromatic circle +% \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 10 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% +% for 11 (fused positions, 4a and 10a) +% +% 11FA : alpha single bond at 4a +% 11FB : beta single bond at 4a +% 11FC : alpha single bond (downward) at 4a +% 11FD : beta single bond (downward) at 4a +% 11FU : unspecified single bond at 4a +% 11GA : alpha single bond at 10a +% 11GB : beta single bond at 10a +% 11FC : alpha single bond (upward) at 10a +% 11FD : beta single bond (upward) at 10a +% 11GU : unspecified single bond at 10a +% +% for 12 (fused positions, 4b and 8a) +% +% 12FA : alpha single bond at 4b +% 12FB : beta single bond at 4b +% 12FU : unspecified single bond at 4b +% 12GA : alpha single bond at 8a +% 12GB : beta single bond at 8a +% 12GU : unspecified single bond at 8a +% \end{verbatim} +% +% \begin{verbatim} +% e.g. +% +% \hphenanthrenev{1==Cl;2==F;{{10}}==OH} +% \hphenanthrenev[c]{1==Cl;4==F;2==CH$_{3}$; +% {{11}FA}==OH;{{11}FB}==OH} +% \hphenanthrenev[eb]{1D==O;4SA==MeO;4SB==OMe; +% 5W==Cl;6==Cl;7==Cl;8==Cl} +% \end{verbatim} +% \changes{v1.02}{1998/10/15}{The command \cs{setdecaringv} has +% been stopped to use.} +% \changes{v1.02}{1998/10/31}{Adding \cs{ylpositionh}, \cs{if@ylsw} +% \cs{ylfusedposition}, +% \cs{yl@shiftii}, \cs{@ylii}, \cs{@@ylii}, \cs{yl@shifti}, \cs{@yli}, +% \cs{@yli}, \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/11/23}{Added: Fused rings} +% +% \begin{macro}{\hphenanthrenev} +% \begin{macrocode} +\def\hphenanthrenev{% + \@ifnextchar[{\@hphenanthrenev[@}{\@hphenanthrenev[r]}} +\def\@hphenanthrenev[#1]#2{% +% bonds for outer skeleton +\@reset@ylsw\reset@@yl +\ylposition{#2}{-4}{0}{2}{0}% %for 5 position +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +\ylposition{#2}{12}{3}{7}{-1}% %for 6 to 8 positions +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi\else +\ylposition{#2}{13}{2}{5}{-1}% %for 9 to 10 positions +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-342}\def\@@yli{0}\fi\else +\ylposition{#2}{4}{0}{4}{-1}% %for 1 to 3 positions +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-513}\def\@@yli{-303}\fi\else +\ylposition{#2}{2}{5}{7}{0}% %for 4-position +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-513}\def\@@yli{-303}\fi\else +\ylfusedposition{#2}{-12}{-1}{1}{0}% % for 4b and 8a +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi\else +\ylfusedposition{#2}{-10}{0}{2}{0}% % for 4a and 10a +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-342}\def\@@yli{0}\fi\fi +\if@ylsw + \yl@shiftii=\@ylii + \ifx\@@ylii\empty\else + \advance\yl@shiftii\@@ylii\fi + \yl@shifti=\@yli + \ifx\@@yli\empty\else + \advance\yl@shifti\@@yli\fi + \advance\yl@shiftii\yl@xdiff + \advance\yl@shifti\yl@ydiff + \begin{sfpicture}(0,0)(-\yl@shiftii,-\yl@shifti) + \reset@yl@xydiff%1999/1/6 by S. Fujita +\else + \begin{sfpicture}(1200,1200)(-\shiftii,-\shifti) + \origptoutput{hphenanthrenev}% +\fi + \Put@Line(0,406)(-5,-3){171}% %bond 6-5 + \Put@Line(0,406)(5,-3){171}% %bond 5-4a + \Put@Line(0,0)(-5,3){171}% %bond 8-7 + \Put@Line(0,0)(5,3){171}% %bond 8-8a + \Put@Line(171,103)(0,1){200}% %bond 8a-4b + \Put@Line(-171,103)(0,1){200}% %bond 7-6 + \Put@Line(342,406)(-5,-3){171}% %bond 4a-4b + \Put@Line(342,406)(5,-3){171}% %bond 4a-10a + \Put@Line(342,0)(-5,3){171}% %bond 9-8a + \Put@Line(342,0)(5,3){171}% %bond 9-10 + \Put@Line(513,103)(0,1){200}% %bond 10-10a + %%%% + \Put@Line(342,406)(0,1){200}% %bond 4a-4 + \Put@Line(513,709)(-5,-3){171}% %bond 3-4 + \Put@Line(513,709)(5,-3){171}% %bond 3-2 + \Put@Line(684,406)(0,1){200}% %bond 1-2 + \Put@Line(513,303)(5,3){171}% %bond 10a-1 +% inner double bonds +\@tfor\member:=#1\do{% +\if\member r%no endcyclic double bonds +\else\if\member a% + \Put@Line(651,432)(0,1){148}% %double bond 1-2 +\else\if\member b% + \Put@Line(519,667)(5,-3){126}% %double bond 3-2 +\else\if\member c% + \Put@Line(519,667)(-5,-3){126}% %double bond 3-4 +\else\if\member d% + \Put@Line(375,432)(0,1){148}% %double bond 4a-4 +\else\if\member e% + \Put@Line(348,364)(-5,-3){126}% %double bond 4a-4b +\else\if\member f% + \Put@Line(6,364)(5,-3){126}% %double bond 5-4b +\else\if\member g% + \Put@Line(-6,364)(-5,-3){126}% %double bond 5-6 +\else\if\member h% + \Put@Line(-138,129)(0,1){148}% %double bond 6-7 +\else\if\member i% + \Put@Line(-6,42)(-5,3){126}% %double bond 8-7 +\else\if\member j% + \Put@Line(6,42)(5,3){126}% %double bond 8-8a +\else\if\member k% + \Put@Line(348,42)(-5,3){126}% %double bond 9-8a +\else\if\member l% + \Put@Line(348,42)(5,3){126}% %double bond 9-10 +\else\if\member m% + \Put@Line(482,129)(0,1){148}% %double bond 10-10a +\else\if\member n% + \Put@Line(519,345)(5,3){126}% %double bond 10a-1 +\else\if\member o% + \Put@Line(507,345)(-5,3){126}% %double bond 10a-4a +\else\if\member O% + \Put@Line(348,364)(5,-3){126}% %double bond 4a-10a +\else\if\member p% + \Put@Line(138,129)(0,1){148}% %double bond 8a-4b +\else\if\member P% + \Put@Line(204,129)(0,1){148}% %double bond 8a-4b +\else\if\member C%left aromatic circle + \Put@oCircle(0,203){240}% %circle +\else\if\member B%right aromatic circle + \Put@oCircle(342,203){240}% %circle +\else\if\member A%right aromatic circle + \Put@oCircle(513,506){240}% %circle +\else +% setting fused rings + \expandafter\twoCH@R\member//% + \set@fusion@hphenanv +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}% +%exocyclic bonds and substituents +\global\drawsamesubsttrue%2002/05/30 warning on +\Put@Direct(0,0){\setsixringv{#2}{-4}{0}{2}{0}}% %for 5 position +\global\drawsamesubstfalse%2002/05/30 warning off +\Put@Direct(0,0){\setsixringv{#2}{12}{3}{7}{-1}}% %for 6 to 8 positions +\Put@Direct(342,0){\setsixringv{#2}{13}{2}{5}{-1}}% %for 9 to 10 positions +\Put@Direct(513,303){\setsixringv{#2}{4}{0}{4}{-1}}% %for 1 to 3 positions +\Put@Direct(513,303){\setsixringv{#2}{2}{5}{7}{0}}% %for 4-position +%bonds and substituents for fused positions +\Put@Direct(0,0){\setfusedbond{#2}{-12}{-1}{1}{0}}% % for 4b and 8a +\Put@Direct(342,0){\setfusedbond{#2}{-10}{0}{2}{0}}% % for 4a and 10a +\end{sfpicture}}% %end of \hphenanthrenev macro% +% \end{macrocode} +% \end{macro} +% +% \subsection{Phenanthrene and phenanthroquinone derivatives} +% +% The macro |\phenanthrenev| is used for drawing phenanthrene derivatives +% of vertical type. +% +% The macro |\anthracenev| has an argument |SUBSLIST| as well as an optional +% argument |OPT|. The latter designates a bond pattern in place of +% individual exocyclic bonds. +% +% \begin{verbatim} +% ********************************* +% * phenanthrene and derivatives * +% * (vertical type) * +% ********************************* +% +% \phenanthrenev[OPT]{SUBSLIST} +% \end{verbatim} +% +% The |OPT| argument contains one or two characters for designate +% aromatic bond patterns or for naphthoquinone bond patterns. +% +% \begin{verbatim} +% OPT (bond pattern) +% +% none or r : right-handed double bonds +% A : aromatic circle +% +% p or pa : 1,4-quinone (A) +% pA : 1,4-quinone (circle type) +% +% o or oa : 1,2-quinone (A) +% oA : 1,2-quinone (circle type) +% ob : 2,3-quinone (B) +% oc : 3,4-anthraquinone (C) +% +% q or qa : 9,10-quinone +% qA : 9,10-quinone (circle type) +% \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 10 +% +% 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} +% +% \begin{verbatim} +% e.g. +% +% \phenanthrenev{1==Cl;2==F} +% \phenanthrenev[A]{1==Cl;4==F;2==CH$_{3}$} +% \phenanthrenev[eb]{1D==O;4SA==MeO;4SB==OMe;% +% 5W==Cl;6==Cl;7==Cl;8==Cl} +% \end{verbatim} +% +% \begin{macro}{\phenanthrenev} +% \begin{macrocode} +\def\phenanthrenev{\@ifnextchar[{\@phenanthrenev}{\@phenanthrenev[r]}} +\def\@phenanthrenev[#1]#2{% + \iforigpt \typeout{command `phenanthrenev' is % + based on `hphenantherenv'.}\fi% + \expandafter\threech@r#1{}{}% + \if\@tmpa r% right-handed set of double bonds + \hphenanthrenev[acgilop]{#2}% + \else\if\@tmpa A%aromatic circle + \hphenanthrenev[ABC]{#2}% + \else\if\@tmpa p%1,4-quinone + \if\@tmpb a% (A)% + \hphenanthrenev[bgilop]{#2}% + \else\ifx\@tmpb\empty% (A) + \hphenanthrenev[bgilop]{#2}% + \else\if\@tmpb A% circle type + \hphenanthrenev[BCb]{#2}% + \else + \hphenanthrenev[bgilop]{#2}% + \fi\fi\fi% + \else\if\@tmpa o%o-quinone + \if\@tmpb a% (A)% + \hphenanthrenev[cgilop]{#2}% + \else\ifx\@tmpb\empty% (A) + \hphenanthrenev[cgilop]{#2}% + \else\if\@tmpb b% (B) + \hphenanthrenev[dgilnp]{#2}% + \else\if\@tmpb c% (C) + \hphenanthrenev[agilop]{#2}% + \else\if\@tmpb A% cicle type + \hphenanthrenev[cBC]{#2}% + \fi\fi\fi\fi\fi% + \else\if\@tmpa q%9,10-quinone + \if\@tmpb a% (A)% + \hphenanthrenev[acgiop]{#2}% + \else\ifx\@tmpb\empty% (A) + \hphenanthrenev[acgiop]{#2}% + \else\if\@tmpb A% circle type + \hphenanthrenev[AC]{#2}% + \else + \hphenanthrenev[acgiop]{#2}% + \fi\fi\fi% + \else + \hphenanthrenev[@#1]{#2}% + \fi\fi\fi\fi\fi% +}% %end of \phenanthrenev macro% +% \end{macrocode} +% \end{macro} +% +% \section{Steroids} +% \subsection{Steroids without a chain} +% +% The macro |\steroid| is used for drawing steroids. +% +% The macro |\steroid| has an argument |SUBSLIST| as well as an +% optional argument |BONDLIST|. +% +% \begin{verbatim} +% *********************** +% * steroid derivatives * +% *********************** +% +% \steroid[BONDLIST]{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one or more +% characters selected form a to t, each of which indicates +% the presence of an inner (endcyclic) double bond on the corresponding +% position. The character A, B, or C indicates an aromatic bond +% pattern (circle). +% \changes{v1.02}{1998/10/15}{BONDLIST: k, K, h, H, o and O +% at the fused bond} +% +% \begin{verbatim} +% BONDLIST = +% +% none: steroid skeleton +% a : 1,2-double bond b : 2,3-double bond +% c : 3,4-double bond d : 4,5-double bond +% e : 6,5-double bond f : 6,7-double bond +% g : 7,8-double bond +% h : 9,8-double bond +% h : 9,8-double bond in the other bond +% i : 9,10-double bond j : 1,10-double bond +% k : 5,10-double bond +% K : 5,10-double bond in the other bond +% l : 9,11-double bond +% m : 12,11-double bond n : 12,13-double bond +% o : 14,13-double bond +% O : 14,13-double bond in the other bond +% p : 8,14-double bond +% q : 14,15-double bond r : 15,16-double bond +% s : 17,16-double bond t : 17,13-double bond +% A : aromatic A ring B : aromatic B ring +% C : aromatic C ring +% \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 17 (execpt fused positions) +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom (boldface) +% nB : beta single bond at n-atom (dotted line) +% 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} +% +% For numbers larger than 9 (two digits), you should designate +% the SUBSLIST as +% +% \begin{verbatim} +% {{11}A}==Cl;{{12}SA}==H;{{12}SB}==Cl; +% \end{verbatim} +% +% \begin{verbatim} +% for n = 5,8,9,10,13 and 14 (fused positions) +% +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom (boldface) +% nB : beta single bond at n-atom (dotted line) +% nU : unspecified single bond at n-atom +% \end{verbatim} +% +% \begin{verbatim} +% e.g. +% +% \steroid{1==Cl;2==F;{{10}}==OH} +% \steroid[c]{1==Cl;4==F;2==CH$_{3}$; +% {{11}SA}==OH;{{11}SB}==OH} +% \steroid[eb]{1D==O;4SA==MeO;4SB==OMe; +% 5==Cl;6==Cl;7==Cl;8==Cl} +% \end{verbatim} +% \changes{v1.02}{1998/10/15}{The command \cs{setdecaringv} has +% been stopped to use.} +% \changes{v1.02}{1998/10/31}{Adding \cs{ylpositionh}, \cs{if@ylsw} +% \cs{ylfusedposition}, +% \cs{yl@shiftii}, \cs{@ylii}, \cs{@@ylii}, \cs{yl@shifti}, \cs{@yli}, +% \cs{@yli}, \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v1.02}{1998/10/31}{Inner commands \cs{yl@steroidposition} +% and \cs{@steroidskeleton} are separated from the \cs{@steroid} command.} +% \changes{v2.00}{1998/12/5}{Add: fused rings} +% +% \begin{macro}{\steroid} +% \begin{macro}{\yl@steroidposition} +% \begin{macro}{\@steroidskeleton} +% \begin{macrocode} +\def\steroid{\@ifnextchar[{\@steroid[@}{\@steroid[Z]}} +\def\@steroid[#1]#2{% +%initialize bug fix 2010/10/01 +\iniatom\iniflag%initialize +% bonds for outer skeleton +\@reset@ylsw\reset@@yl +\yl@steroidposition{#2}% +\if@ylsw + \yl@shiftii=\@ylii + \ifx\@@ylii\empty\else + \advance\yl@shiftii\@@ylii\fi + \yl@shifti=\@yli + \ifx\@@yli\empty\else + \advance\yl@shifti\@@yli\fi + \advance\yl@shiftii\yl@xdiff + \advance\yl@shifti\yl@ydiff + \begin{sfpicture}(0,0)(-\yl@shiftii,-\yl@shifti) + \reset@yl@xydiff%1999/1/6 by S. Fujita +\else + \begin{sfpicture}(1600,1300)(-\shiftii,-\shifti) + \origptoutput{steroid}% +\fi + \Put@Direct(0,0){\@steroidskeleton{#1}{#2}}% +\end{sfpicture}}% %end of \steroid macro% +% \end{macrocode} +% +% The |\yl@steroidposition| is derived from |\ylposition| and +% |\ylatombondposition| to use in the |\steroid| command as well as +% in the |\steroidchain| command. +% \changes{v1.02}{1998/10/31}{Inner commands \cs{yl@steroidposition} +% and \cs{@steroidskeleton} are separated from the \cs{@steroid} command.} +% +% \begin{macrocode} +\def\yl@steroidposition#1{% +\ylposition{#1}{0}{0}{2}{0}% %for 1 +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +\ylposition{#1}{8}{3}{7}{-1}% %for 2 to 4 positions +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi\else +\ylposition{#1}{10}{2}{5}{-1}% %for 6 to 7 positions +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-342}\def\@@yli{0}\fi\else +\ylposition{#1}{-11}{0}{2}{0}%for 12 position +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-513}\def\@@yli{-303}\fi\else +\ylposition{#1}{-5}{5}{7}{0}% %for 11 position +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-513}\def\@@yli{-303}\fi\else +\ylposition{#1}{18}{0}{4}{-1}%for 15 to 17 positions +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-855}\def\@@yli{-303}\fi\else +\ylatombondposition{#1}{-4}{7}% % for 5 +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-171}\def\@@yli{-103}\fi\else +\ylatombondposition{#1}{-9}{1}% % for 10 +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-171}\def\@@yli{-303}\fi\else +\ylatombondposition{#1}{-7}{1}% % for 8 +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-513}\def\@@yli{-303}\fi\else +\ylatombondposition{#1}{-8}{7}% % for 9 +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-342}\def\@@yli{-406}\fi\else +\ylatombondposition{#1}{-13}{7}% % for 14 +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-684}\def\@@yli{-406}\fi\else +\ylatombondposition{#1}{-12}{1}% % for 13 +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-684}\def\@@yli{-606}\fi\fi% +}% end of \yl@steroidposition +% \end{macrocode} +% +% The |\@steroidskeleton| is separated from the definition of |\steroid| +% so as to be used also in the definition of |\steroidchain|. +% \changes{v1.02}{1998/10/31}{Inner commands \cs{yl@steroidposition} +% and \cs{@steroidskeleton} are separated from the \cs{@steroid} command.} +% \changes{v2.00}{1998/11/23}{Added: fused rings} +% +% \begin{macrocode} +\def\@steroidskeleton#1#2{% + \Put@Line(0,406)(-5,-3){171}% %bond 1-2 + \Put@Line(0,406)(5,-3){171}% %bond 1-10 + \Put@Line(0,0)(-5,3){171}% %bond 4-3 + \Put@Line(0,0)(5,3){171}% %bond 4-5 + \Put@Line(171,103)(0,1){200}% %bond 5-10 + \Put@Line(-171,103)(0,1){200}% %bond 3-2 + \Put@Line(342,406)(-5,-3){171}% %bond 9-10 + \Put@Line(342,406)(5,-3){171}% %bond 9-8 + \Put@Line(342,0)(-5,3){171}% %bond 6-5 + \Put@Line(342,0)(5,3){171}% %bond 6-7 + \Put@Line(513,103)(0,1){200}% %bond 7-8 + %%%% + \Put@Line(342,406)(0,1){200}% %bond 9-11 + \Put@Line(513,709)(-5,-3){171}% %bond 12-11 + \Put@Line(513,709)(5,-3){171}% %bond 12-13 + \Put@Line(684,406)(0,1){200}% %bond 14-13 + \Put@Line(513,303)(5,3){171}% %bond 8-14 + %%%% + \Put@Line(855,709)(-5,-3){171}% %bond 17-13 + \Put@Line(855,709)(5,-3){171}% %bond 17-16 + \Put@Line(1026,406)(0,1){200}% %bond 15-16 + \Put@Line(684,406)(1,0){342}% %bond 14-15 +% inner double bonds +\@tfor\member:=#1\do{% +\if\member Z%no endcyclic double bonds +\else\if\member a% + \Put@Line(-6,364)(-5,-3){126}% %double bond 1-2 5-6 +\else\if\member b% + \Put@Line(-138,129)(0,1){148}% %double bond 3-2 6-7 +\else\if\member c% + \Put@Line(-6,42)(-5,3){126}% %double bond 4-3 8-7 +\else\if\member d% + \Put@Line(6,42)(5,3){126}% %double bond 4-5 8-8a +\else\if\member e% + \Put@Line(348,42)(-5,3){126}% %double bond 6-5 9-8a +\else\if\member f% + \Put@Line(348,42)(5,3){126}% %double bond 6-7 9-10 +\else\if\member g% + \Put@Line(482,129)(0,1){148}% %double bond 7-8 10-10a +\else\if\member h% + \Put@Line(507,345)(-5,3){126}% %double bond 8-9 10a-4a +\else\if\member H% + \Put@Line(348,364)(5,-3){126}% %double bond 9-8 4a-10a +\else\if\member i% + \Put@Line(348,364)(-5,-3){126}% %double bond 9-10 4a-4b +\else\if\member j% + \Put@Line(6,364)(5,-3){126}% %double bond 1-10 5-4b +\else\if\member k% + \Put@Line(138,129)(0,1){148}% %double bond 5-10 8a-4b +\else\if\member K% + \Put@Line(204,129)(0,1){148}% %double bond 5-10 8a-4b +\else\if\member l% + \Put@Line(375,432)(0,1){148}% %double bond 9-11 4-5 +\else\if\member m% + \Put@Line(519,667)(-5,-3){126}% %double bond 12-11 3-4 +\else\if\member n% + \Put@Line(519,667)(5,-3){126}% %double bond 12-13 3-2 +\else\if\member o% + \Put@Line(651,432)(0,1){148}% %double bond 13-14 1-2 +\else\if\member O% + \Put@Line(717,432)(0,1){148}% %double bond 13-14 1-2 +\else\if\member p% + \Put@Line(519,345)(5,3){126}% %double bond 8-14 10a-1 +\else\if\member q% + \Put@Line(720,439)(1,0){260}% %double bond 14-15 +\else\if\member r% + \Put@Line(993,432)(0,1){148}% %double bond 15-16 1-2 +\else\if\member s% + \Put@Line(861,667)(5,-3){126}% %double bond 17-16 3-2 +\else\if\member t% + \Put@Line(861,667)(-5,-3){126}% %double bond 17-13 3-4 +\else\if\member A%left aromatic circle + \Put@oCircle(0,203){240}% %circle +\else\if\member B%right aromatic circle + \Put@oCircle(342,203){240}% %circle +\else\if\member C%right aromatic circle + \Put@oCircle(513,506){240}% %circle +\else +% setting fused rings + \expandafter\twoCH@R\member//% + \set@fusion@steroid +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +\fi\fi\fi\fi\fi\fi\fi\fi\fi}% +%exocyclic bonds and substituents +\iniflag +\global\drawsamesubsttrue%2002/05/30 warning on +\Put@Direct(0,0){\setsixringv{#2}{0}{0}{2}{0}}% %for 1 +\global\drawsamesubstfalse%2002/05/30 warning off +\Put@Direct(0,0){\setsixringv{#2}{8}{3}{7}{-1}}% %for 2 to 4 positions +\Put@Direct(342,0){\setsixringv{#2}{10}{2}{5}{-1}}% %for 6 to 7 positions +\Put@Direct(513,303){\setsixringv{#2}{-11}{0}{2}{0}}%for 12 position +\Put@Direct(513,303){\setsixringv{#2}{-5}{5}{7}{0}}% %for 11 position +\Put@Direct(855,303){\setsixringv{#2}{18}{0}{4}{-1}}%for 15 to 17 positions +%bonds and substituents for fused positions +\Put@Direct(171,103){\setatombond{#2}{-4}{7}}% % for 5 +\Put@Direct(171,303){\setatombond{#2}{-9}{1}}% % for 10 +\Put@Direct(513,303){\setatombond{#2}{-7}{1}}% % for 8 +\Put@Direct(342,406){\setatombond{#2}{-8}{7}}% % for 9 +\Put@Direct(684,406){\setatombond{#2}{-13}{7}}% % for 14 +\Put@Direct(684,606){\setatombond{#2}{-12}{1}}% % for 13 +}% end of \@steroidskeleton +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The macro |\set@fusion@steroid| is an inner command contained +% in the definition of |\steroidskeleton|, where +% the macro is used for setting an additive +% or a fused ring at each bond (designated by |\@@tmpa|). The +% fused ring is typeset by the inner command |\set@fusionadd@sixv|. +% +% \begin{macro}{\set@fusion@steroid} +% \changes{v2.00}{1998/11/23}{New command: \cs{set@fusion@steroid}} +% \begin{macrocode} +\def\set@fusion@steroid{% + \let\@@tmpa=\@tmpa + \let\@@tmpb=\@tmpb + \if\@tmpa a% + \edef\@@tmpa{f}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa A% + \edef\@@tmpa{F}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa b% + \edef\@@tmpa{e}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa B% + \edef\@@tmpa{E}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa c% + \edef\@@tmpa{d}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa C% + \edef\@@tmpa{D}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa d% + \edef\@@tmpa{c}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `d'}% + \fi + \else\if\@tmpa D% + \edef\@@tmpa{C}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `D'}% + \fi + \else\if\@tmpa e% + \edef\@@tmpa{d}% + \Put@Direct(342,0){\set@fusionadd@sixv}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `e'}% + \fi + \else\if\@tmpa E% + \edef\@@tmpa{D}% + \Put@Direct(342,0){\set@fusionadd@sixv}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `E'}% + \fi + \else\if\@tmpa f% + \edef\@@tmpa{c}% + \Put@Direct(342,0){\set@fusionadd@sixv}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `f'}% + \fi + \else\if\@tmpa F% + \edef\@@tmpa{C}% + \Put@Direct(342,0){\set@fusionadd@sixv}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `f'}% + \fi + \else\if\@tmpa g% + \edef\@@tmpa{b}% + \Put@Direct(342,0){\set@fusionadd@sixv}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `g'}% + \fi + \else\if\@tmpa G% + \edef\@@tmpa{B}% + \Put@Direct(342,0){\set@fusionadd@sixv}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `g'}% + \fi + \else\if\@tmpa h% + \edef\@@tmpa{a}% + \Put@Direct(342,0){\set@fusionadd@sixv}% + \if@smallringsw\else + \XyMTeXWarning{Forbidden Fusion for bond `h'}% + \fi + \else\if\@tmpa H% + \edef\@@tmpa{A}% + \Put@Direct(342,0){\set@fusionadd@sixv}% + \if@smallringsw\else + \XyMTeXWarning{Forbidden Fusion for bond `H'}% + \fi + \else\if\@tmpa i% + \edef\@@tmpa{f}% + \Put@Direct(342,0){\set@fusionadd@sixv}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `i'}% + \fi + \else\if\@tmpa I% + \edef\@@tmpa{F}% + \Put@Direct(342,0){\set@fusionadd@sixv}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `I'}% + \fi + \else\if\@tmpa j% + \edef\@@tmpa{a}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `j'}% + \fi + \else\if\@tmpa J% + \edef\@@tmpa{A}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `J'}% + \fi + \else\if\@tmpa k% + \edef\@@tmpa{b}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \if@smallringsw\else + \XyMTeXWarning{Forbidden Fusion for bond `k'}% + \fi + \else\if\@tmpa K% + \edef\@@tmpa{B}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \if@smallringsw\else + \XyMTeXWarning{Forbidden Fusion for bond `K'}% + \fi + \else\if\@tmpa l% + \edef\@@tmpa{e}% + \Put@Direct(513,303){\set@fusionadd@sixv}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `l'}% + \fi + \else\if\@tmpa L% + \edef\@@tmpa{E}% + \Put@Direct(513,303){\set@fusionadd@sixv}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `L'}% + \fi + \else\if\@tmpa m% + \edef\@@tmpa{f}% + \Put@Direct(513,303){\set@fusionadd@sixv}% + \else\if\@tmpa M% + \edef\@@tmpa{F}% + \Put@Direct(513,303){\set@fusionadd@sixv}% + \else\if\@tmpa n% + \edef\@@tmpa{a}% + \Put@Direct(513,303){\set@fusionadd@sixv}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `n'}% + \fi + \else\if\@tmpa N% + \edef\@@tmpa{A}% + \Put@Direct(513,303){\set@fusionadd@sixv}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `N'}% + \fi + \else\if\@tmpa o% + \edef\@@tmpa{b}% + \Put@Direct(513,303){\set@fusionadd@sixv}% + \if@smallringsw\else + \XyMTeXWarning{Forbidden Fusion for bond `o'}% + \fi + \else\if\@tmpa O% + \edef\@@tmpa{B}% + \Put@Direct(513,303){\set@fusionadd@sixv}% + \if@smallringsw\else + \XyMTeXWarning{Forbidden Fusion for bond `O'}% + \fi + \else\if\@tmpa p% + \edef\@@tmpa{c}% + \Put@Direct(513,303){\set@fusionadd@sixv}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `N'}% + \fi + \else\if\@tmpa P% + \edef\@@tmpa{C}% + \Put@Direct(513,303){\set@fusionadd@sixv}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `N'}% + \fi + \else\if\@tmpa q% + \XyMTeXWarning{Mismatched dimension for bond `q'}% + \else\if\@tmpa Q% + \XyMTeXWarning{Mismatched dimension for bond `Q'}% + \else\if\@tmpa r% + \edef\@@tmpa{b}% + \Put@Direct(855,303){\set@fusionadd@sixv}% + \else\if\@tmpa R% + \edef\@@tmpa{B}% + \Put@Direct(855,303){\set@fusionadd@sixv}% + \else\if\@tmpa s% + \edef\@@tmpa{a}% + \Put@Direct(855,303){\set@fusionadd@sixv}% + \else\if\@tmpa S% + \edef\@@tmpa{A}% + \Put@Direct(855,303){\set@fusionadd@sixv}% + \else\if\@tmpa t% + \edef\@@tmpa{f}% + \Put@Direct(855,303){\set@fusionadd@sixv}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `t'}% + \fi + \else\if\@tmpa T% + \edef\@@tmpa{F}% + \Put@Direct(855,303){\set@fusionadd@sixv}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `T'}% + \fi + \fi\fi\fi\fi\fi\fi\fi\fi% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +}% end of the macro \set@fusion@steroid +% \end{macrocode} +% \end{macro} +% +% \subsection{Steroids with a chain} +% +% The macro |\steroidchain| is used for drawing steroids. +% +% The macro |\steroidchain| has an argument |SUBSLIST| as well as an +% optional argument |BONDLIST|. +% +% \begin{verbatim} +% ************************************** +% * steroid derivatives having a chain * +% ************************************** +% +% \steroidchain[BONDLIST]{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one or more +% characters selected form a to t, each of which indicates +% the presence of an inner (endcyclic) double bond on the corresponding +% position. The character A, B, or C indicates an aromatic bond +% pattern (circle). A two-character string `Z?' indicates +% a double bond in the side-chain. +% +% \begin{verbatim} +% BONDLIST = +% +% (double bonds for the steroid skeleton) +% none: no action on the steroid skeleton +% a : 1,2-double bond b : 2,3-double bond +% c : 3,4-double bond d : 4,5-double bond +% e : 6,5-double bond f : 6,7-double bond +% g : 7,8-double bond h : 9,8-double bond +% i : 9,10-double bond j : 1,10-double bond +% k : 5,10-double bond l : 9,11-double bond +% m : 12,11-double bond n : 12,13-double bond +% o : 14,13-double bond p : 8,14-double bond +% q : 14,15-double bond r : 15,16-double bond +% s : 17,16-double bond t : 17,13-double bond +% A : aromatic A ring B : aromatic B ring +% C : aromatic C ring +% \end{verbatim} +% +% \begin{verbatim} +% (double bonds for the side chain) +% Z : no action +% Za : 17,20-double bond Zb : 20,22-double bond +% Zc : 22,23-double bond Zd : 23,24-double bond +% Ze : 24,25-double bond Zf : 25,26-double bond +% Zg : 25,27-double bond +% \end{verbatim} +% +% For a two-character indicator, you should write the BONDLIST +% as, e.g. +% +% \begin{verbatim} +% [b{Za}{Zc}...] +% \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 24 (execpt fused positions) +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom (boldface) +% nB : beta single bond at n-atom (dotted line) +% 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} +% +% For numbers larger than 9 (two digits), you should designate +% the SUBSLIST as +% +% \begin{verbatim} +% {{11}A}==Cl;{{12}SA}==H;{{12}SB}==Cl; ... +% \end{verbatim} +% +% \begin{verbatim} +% for n = 5,8,9,10,13,14,and 25 (fused positions etc.) +% +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom (boldface) +% nB : beta single bond at n-atom (dotted line) +% nU : unspecified single bond at n-atom +% \end{verbatim} +% +% \begin{verbatim} +% e.g. +% +% \steroidchain{1==Cl;2==F;{{10}}==OH} +% \steroidchain[c]{1==Cl;4==F;2==CH$_{3}$;% +% {{11}SA}==OH;{{11}SB}==OH} +% \steroidchain[b]{1D==O;4SA==MeO;4SB==OMe;% +% ;6==Cl;7==Cl;11==Cl} +% \end{verbatim} +% +% \changes{v1.02}{1998/10/31}{Adding \cs{ylpositionh}, \cs{if@ylsw} +% \cs{ylfusedposition}, +% \cs{yl@shiftii}, \cs{@ylii}, \cs{@@ylii}, \cs{yl@shifti}, \cs{@yli}, +% \cs{@yli}, \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v1.02}{1998/10/31}{The inner commands \cs{yl@steroidposition} +% is used. The old \cs{steroid} is replaced by \cs{@steroidskeleton}.} +% \changes{v2.00}{1998/11/31}{Add: fused rings} +% +% \begin{macro}{\steroidchain} +% \begin{macrocode} +\def\steroidchain{\@ifnextchar[{\@steroidchain[@}{\@steroidchain[Z]}} +\def\@steroidchain[#1]#2{% +%shift due to the steroid skeleton +\@reset@ylsw\reset@@yl +\yl@steroidposition{#2}% +%shift due to the side chain +\ylposition{#2}{-21}{0}{3}{0}%for 22 and 23 positions +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-1026}\def\@@yli{-606}\fi +\else +\ylposition{#2}{-14}{5}{7}{0}%for 20 position +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-1026}\def\@@yli{-606}\fi\else +\ylposition{#2}{-20}{3}{5}{0}%for 24 position +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-1197}\def\@@yli{-709}\fi\else +\ylatombondposition{#2}{-24}{4}% % for 5 +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-1397}\def\@@yli{-709}\fi\fi +\if@ylsw + \yl@shiftii=\@ylii + \ifx\@@ylii\empty\else + \advance\yl@shiftii\@@ylii\fi + \yl@shifti=\@yli + \ifx\@@yli\empty\else + \advance\yl@shifti\@@yli\fi + \advance\yl@shiftii\yl@xdiff + \advance\yl@shifti\yl@ydiff + \begin{sfpicture}(0,0)(-\yl@shiftii,-\yl@shifti)% + \reset@yl@xydiff%1999/1/6 by S. Fujita +\else + \begin{sfpicture}(2000,1500)(-\shiftii,-\shifti)% + \iforigpt \typeout{command `steroidchain' is based on `steroid'.}\fi% +\fi +% steroid skeleton + \Put@Direct(0,0){\@steroidskeleton{#1}{#2}}% +% bonds for the side chain (carbons 20 to 27 (except 21)) + \Put@Line(855,709)(0,1){200}% %bond 17-20 + \Put@Line(1026,1012)(-5,-3){171}% %bond 22-20 + \Put@Line(1026,1012)(5,-3){171}% %bond 22-23 + \Put@Line(1197,709)(0,1){200}% %bond 24-23 + \Put@Line(1197,709)(1,0){200}% %bond 24-25 + \Put@Line(1397,709)(3,5){103}% %bond 25-26 + \Put@Line(1397,709)(3,-5){103}% %bond 25-27 +% double bonds along the side chain +\@tfor\member:=#1\do{% +\expandafter\twoCH@R\member//\relax% +\if\@tmpa Z\relax% + \ifx\@tmpb\empty%no action + \else\if\@tmpb a% + \Put@Line(888,735)(0,1){148}% %double bond 17-20 + \else\if\@tmpb b% + \Put@Line(1020,970)(-5,-3){126}% %double bond 22-20 + \else\if\@tmpb c% + \Put@Line(1032,970)(5,-3){126}% %double bond 22-23 + \else\if\@tmpb d% + \Put@Line(1164,735)(0,1){148}% %double bond 24-23 + \else\if\@tmpb e% + \Put@Line(1233,742)(1,0){140}% %double bond 24-25 + \else\if\@tmpb f% + \Put@Line(1433,715)(3,5){72}% %double bond 25-26 + \else\if\@tmpb g% + \Put@Line(1433,697)(3,-5){72}% %double bond 25-27 + \fi\fi\fi\fi\fi\fi\fi\fi\fi}% +% substitution on the side chain +%\global\drawsamesubsttrue%2002/05/30 warning on +\Put@Direct(1026,606){\setsixringv{#2}{-21}{0}{3}{0}}%for 22 and 23 positions +%\global\drawsamesubstfalse%2002/05/30 warning off +\Put@Direct(1026,606){\setsixringv{#2}{-14}{5}{7}{0}}%for 20 position +\Put@Direct(1197,709){\setsixringv{#2}{-20}{3}{5}{0}}%for 24 position +\Put@Direct(1397,709){\setatombond{#2}{-24}{4}}% % for 5 +\end{sfpicture}}% %end of \steroidchain macro% +%</carom> +% \end{macrocode} +% \end{macro} +% +% \Finale +% +\endinput diff --git a/Master/texmf-dist/source/latex/xymtex/base/carom.ins b/Master/texmf-dist/source/latex/xymtex/base/carom.ins new file mode 100644 index 00000000000..3c10ed92a68 --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/carom.ins @@ -0,0 +1,55 @@ +\def\batchfile{carom.ins} +\input docstrip.tex +\preamble + +This is a generated file. + +Copyright 1996, 1988, 2000, 2001, 2002, 2004, 2010 by Shinsaku Fujita +all rights reserved. +This style file is created for drawing chemical structural formulas +This style file is to be contained in the ``xymtex'' directory which +is an input directory for TeX. + +This file is part of the XyMTeX system. +======================================= + +Old Versions: +Version 1.01 Released on August 16, 1996 +Version 1.02 Released on October 31, 1998 +Version 2.00 Released on December 25, 1998 +Version 2.00a Released on June 14, 2000 +Version 2.01 Released on June 20, 2001 (private version) +Version 3.00 Released on April 30, 2002 +Version 4.00 Released on May 30, 2002 (private version) +Version 4.01 Released on August 30, 2004 + +The Present Version: +Version 5.00 Released on October 01, 2010 + +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 carom.dtx and carom.ins +and the derived file carom.sty. + +======================================= + +\endpreamble + +\keepsilent + +\generateFile{carom.drv}{t}{% + \from{carom.dtx}{driver}} + +\generateFile{carom.sty}{t}{% + \from{carom.dtx}{carom}} + +\endinput diff --git a/Master/texmf-dist/source/latex/xymtex/base/ccycle.dtx b/Master/texmf-dist/source/latex/xymtex/base/ccycle.dtx new file mode 100644 index 00000000000..e059d5564e2 --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/ccycle.dtx @@ -0,0 +1,3481 @@ +% \iffalse meta-comment +%% File: ccycle.dtx +% +% Copyright 1993,1996,1998,2001,2002,2004,2009,2010,2013 by Shinsaku Fujita +% +% This file is part of XyMTeX system. +% ------------------------------------- +% +% This file is a successor to: +% +% ccycle.sty +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 1.00} +% \typeout{ -- Released December 1, 1993 by Shinsaku Fujita} +% Copyright (C) 1993 by Shinsaku Fujita, all rights reserved. +% +% This file is a part of the macro package ``XyMTeX'' which has been +% designed for typesetting chemical structural formulas. +% +% This file is to be contained in the ``xymtex'' directory which is +% an input directory for TeX. It is a LaTeX optional style file and +% should be used only within LaTeX, because several macros of the file +% are based on LaTeX commands. +% +% For the review of XyMTeX, see +% (1) Shinsaku Fujita, ``Typesetting structural formulas with the text +% formatter TeX/LaTeX'', Computers and Chemistry, in press. +% The following book deals with an application of TeX/LaTeX to +% preparation of manuscripts of chemical fields: +% (2) Shinsaku Fujita, ``LaTeX for Chemists and Biochemists'' +% Tokyo Kagaku Dozin, Tokyo (1993) [in Japanese]. +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% The Current Maintainer of this work is Shinsaku Fujita. +% +% This work consists of the files ccycle.dtx and ccycle.ins +% and the derived file ccycle.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. +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{ccycle} +% \def\versi@ndate{December 01, 1993} +% \def\versi@nno{ver1.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{ccycle} +% \def\versi@ndate{March 05, 1994} +% \def\versi@nno{ver1.01} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{ccycle} +% \def\versi@ndate{August 16, 1996} +% \def\versi@nno{ver1.01a} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{ccycle} +% \def\versi@ndate{October 31, 1998} +% \def\versi@nno{ver1.02} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{ccycle} +% \def\versi@ndate{December 25, 1998} +% \def\versi@nno{ver2.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{ccycle} +% \def\versi@ndate{June 20, 2001} +% \def\versi@nno{ver2.01} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{ccycle} +% \def\versi@ndate{April 30, 2002} +% \def\versi@nno{ver3.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{ccycle} +% \def\versi@ndate{May 30, 2002} +% \def\versi@nno{ver4.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{ccycle} +% \def\versi@ndate{August 30, 2004} +% \def\versi@nno{ver4.01} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{ccycle} +% \def\versi@ndate{December 20, 2004} +% \def\versi@nno{ver4.02} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{ccycle} +% \def\versi@ndate{June 15, 2009} +% \def\versi@nno{ver4.04} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{ccycle} +% \def\versi@ndate{October 01, 2010} +% \def\versi@nno{ver5.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{ccycle} +% \def\versi@ndate{April 01, 2013} +% \def\versi@nno{ver5.01b} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{ccycle} +% \def\versi@ndate{June 26, 2013} +% \def\versi@nno{ver5.01bb} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \fi +% +% \CheckSum{3681} +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +% +% \setcounter{StandardModuleDepth}{1} +% +% \StopEventually{} +% \MakeShortVerb{\|} +% +% \iffalse +% \changes{v1.01a}{1996/06/17}{first edition for LaTeX2e} +% \changes{v1.02}{1998/10/31}{revised edition for LaTeX2e} +% \changes{v2.00}{1998/12/25}{enhanced edition for LaTeX2e} +% \changes{v2.01}{2001/06/20}{Size reduction and Clipping information} +% \changes{v2.01}{2001/06/21}{The command \cs{dotorline} is added.} +% \changes{v3.00}{2002/04/30}{sfpicture environment, etc.} +% \changes{v4.00}{2002/05/30}{PostScript output and ShiftPicEnv} +% \changes{v4.01}{2004/08/30}{Minor additions} +% \changes{v4.02}{2004/12/20}{Wedge bonds} +% \changes{v4.04}{2009/6/15}{Wavy bonds} +% \changes{v5.00}{2010/10/01}{bond coloring and the LaTeX Project Public License} +% \changes{v5.01b}{2013/04/01}{Wavy bonds for \cs{bornane}} +% \changes{v5.01}{2013/06/24}{bornane, adamantane, hadamantane: front-to-back crossing} +% \changes{v5.01}{2013/06/25}{bornane 7SU and 7SV added, bug fix} +% \changes{v5.01}{2013/06/26}{bug fix, added 7SA, 7SB, 7Su, 7Sd} +% \changes{v5.01}{2013/07/23}{background color} +% \fi +% +% \iffalse +%<*driver> +\NeedsTeXFormat{pLaTeX2e} +% \fi +\ProvidesFile{ccycle.dtx}[2013/07/23 v5.01 XyMTeX{} package file] +% \iffalse +\documentclass{ltxdoc} +\GetFileInfo{ccycle.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{Further Cyclic Compounds by {\sffamily ccycle.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{ccycle.dtx} +\end{document} +%</driver> +% \fi +% +% \section{Introduction}\label{ccycle:intro} +% +% \subsection{Options for {\sffamily docstrip}} +% +% \DeleteShortVerb{\|} +% \begin{center} +% \begin{tabular}{|l|l|} +% \hline +% \emph{option} & \emph{function}\\ \hline +% ccycle & ccycle.sty \\ +% driver & driver for this dtx file \\ +% \hline +% \end{tabular} +% \end{center} +% \MakeShortVerb{\|} +% +% \subsection{Version Information} +% +% \begin{macrocode} +%<*ccycle> +\typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 5.01} +\typeout{ -- Released July 23, 2013 by Shinsaku Fujita} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\j@urnalname{ccycle} +\def\versi@ndate{July 23, 2013} +\def\versi@nno{ver5.01} +\def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\typeout{XyMTeX Macro File `\j@urnalname' (\versi@nno) <\versi@ndate>% +\space[\copyrighth@lder]} +% \end{macrocode} +% +% \section{List of commands for ccycle.sty} +% +% \begin{verbatim} +% ******************************** +% * ccycle.sty: list of commands * +% ******************************** +% +% Setting of Bonds +% +% \@chaira (for cyclohexane chair) +% \@chairb +% \@chairc +% \@chaird +% \@chaire +% \@chairf +% +% \@borna (for bornanes) +% \@bornb +% \@bornc +% \@bornd +% \@borne +% \@bornf +% \@borng +% +% Basic Macros +% +% \chair \@chair +% \bicychepv \@bicychepv +% \bicycheph \@bicycheph +% \bornane \@bornane +% \adamantane \@damantane +% +% (Added March 05, 1994 by Shinsaku Fujita) +% Setting of Bonds +% +% \@chairia (for cyclohexane chair inversed) +% \@chairib \@chairic \@chairid +% \@chairie \@chairif +% +% Basic Macros +% +% \chairi \@chairi +% +% (Added June 16, 1996 by Shinsaku Fujita) +% Setting of Bonds +% +% \@chairiI (for horizontal-type adamantane) +% \@chairiII \@chairiIII \@chairiIV +% \@chairiV \@chairiVI \@chairiVII +% \@chairiVIII \@chairiIX \@chairiX +% +% Basic Macros +% +% \hadamantane \@hadamantane +% +% Macros for adjusting substitution sites (for Version 1.02) +% +% \ylchairposition +% \ylchairiposition +% \ylbornaneposition +% \yladamanposition +% \ylhadamanposition +% +% \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 ccycle.sty} for the present case). Hence, the combination +% of |\input| and |\@ifundefined| is used to crossload sty +% files ({\sf chemstr.sty} for the present case) in place of the +% |\RequirePackage| command of \LaTeXe{}. +% +% \begin{macrocode} +% ************************* +% * input of basic macros * +% ************************* +\@ifundefined{setsixringv}{\input chemstr.sty\relax}{} +\unitlength=0.1pt +% \end{macrocode} +% +% \begin{macro}{\ifmolfront} +% \changes{v4.02}{2004/12/20}{Avoid wedged front bonds} +% \begin{macrocode} +\@ifundefined{ifmolfront}{\newif\ifmolfront \molfrontfalse}{} +% \end{macrocode} +% \end{macro} +% +% +% \section{Chair-form cyclohexanes} +% \subsection{Macros for setting substituents} +% +% Macros |\@chaira| to |\@chairf| are used to set substituents +% on each position of cyclohexane. Note that comments (conerning locant +% numbers) on the end of each row have lost the exact meaning, +% since such a command moiety is used in many macros after copying. +% +% \begin{macro}{\@chaira} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v4.04}{2009/06/15}{Adding wavy bonds} +% \begin{macrocode} +% ********************************************** +% * treatment of the chair form of cyclohexane * +% ********************************************** +% %%%%%%%%%%%%%%% +% % subst. on 1 % +% %%%%%%%%%%%%%%% +\def\@chaira{% + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=10 + \yl@ydiff=10 + \Put@Line(0,0)(-1,1){120}% single bond at 1 + \putlatom{-130}{110}{\@memberb}% left type + \else\if\@tmpc a%(a) axial + \yl@xdiff=42 + \yl@ydiff=-12 + \Put@Line(0,0)(0,1){168}% single bond at 1 axial + \putlratom{-42}{180}{\@memberb}% left & right type + \else\if\@tmpc e%(e) beta + \yl@xdiff=16 + \yl@ydiff=44 + \Put@Line(0,0)(-5,-3){144}% single bond at 1 equatorial + \putlatom{-160}{-130}{\@memberb}% left type + \fi\fi\fi% +%2009/06/15 + \else\if\@tmpb U%(U) alpha undefined + \yl@xdiff=10 + \yl@ydiff=10 + \putlatom{-130}{110}{\@memberb}% left type + {% + \WaveBonds% + \Put@Line(0,0)(-1,1){120}% single bond at 1 + }% +% + \else \if\@tmpb D%double bond + \yl@xdiff=10 + \yl@ydiff=10 + \Put@Line(-10,-10)(-1,1){120}% double bond at 1 + \Put@Line(10,10)(-1,1){120}% double bond at 1 + \putlatom{-130}{110}{\@memberb}% left type + \else% + \yl@xdiff=10 + \yl@ydiff=10 + \Put@Line(0,0)(-1,1){120}% single bond at 1 + \putlatom{-130}{110}{\@memberb}% left type + \fi\fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@chairb} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v4.04}{2009/06/15}{Adding wavy bonds} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 2 % +% %%%%%%%%%%%%%%% +\def\@chairb{% + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=10 + \yl@ydiff=70 + \Put@Line(170,-226)(-1,-1){120}% single bond at 2 + \putlatom{40}{-416}{\@memberb}% left type + \else\if\@tmpc a%(a) axial + \yl@xdiff=32 + \yl@ydiff=92 + \Put@Line(170,-226)(0,-1){168}% single bond at 2 axial + \putlratom{138}{-486}{\@memberb}% left & right type + \else\if\@tmpc e%(e) beta + \yl@xdiff=16 + \yl@ydiff=34 + \Put@Line(170,-226)(-5,3){144}% single bond at 2 equatorial + \putlatom{10}{-174}{\@memberb}% left type + \fi\fi\fi% +%2009/06/15 + \else\if\@tmpb U%(U) alpha undefined + \yl@xdiff=10 + \yl@ydiff=70 + \putlatom{40}{-416}{\@memberb}% left type + {% + \WaveBonds% + \Put@Line(170,-226)(-1,-1){120}% single bond at 2 + }% +% + \else \if\@tmpb D%double bond + \yl@xdiff=10 + \yl@ydiff=70 + \Put@Line(160,-216)(-1,-1){120}% double bond at 2 + \Put@Line(180,-236)(-1,-1){120}% double bond at 2 + \putlatom{40}{-416}{\@memberb}% left type + \else% + \yl@xdiff=10 + \yl@ydiff=70 + \Put@Line(170,-226)(-1,-1){120}% single bond at 2 + \putlatom{40}{-416}{\@memberb}% left type + \fi\fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@chairc} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v4.04}{2009/06/15}{Adding wavy bonds} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 3 % +% %%%%%%%%%%%%%%% +\def\@chairc{% + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=-10 + \yl@ydiff=24 + \Put@Line(573,-91)(5,4){170}% single bond at 3 + \putratom{753}{21}{\@memberb}% right type + \else\if\@tmpc a%(a) axial + \yl@xdiff=40 + \yl@ydiff=-24 + \Put@Line(573,-91)(0,1){168}% single bond at 3 axial + \putlratom{533}{101}{\@memberb}% left type + \else\if\@tmpc e%(e) beta + \yl@xdiff=-36 + \yl@ydiff=83 + \Put@Line(573,-91)(5,-3){144}% single bond at 3 equatorial + \putlatom{753}{-260}{\@memberb}% left type + \fi\fi\fi% +%2009/06/15 + \else\if\@tmpb U%(U) alpha undefined + \yl@xdiff=-10 + \yl@ydiff=24 + \putratom{753}{21}{\@memberb}% right type + {% + \WaveBonds% + \Put@Line(573,-91)(5,4){170}% single bond at 3 + }% +% + \else \if\@tmpb D%double bond + \yl@xdiff=0 + \yl@ydiff=0 + \Put@Line(563,-83)(5,4){170}% double bond at 3 + \Put@Line(583,-99)(5,4){170}% double bond at 3 + \putratom{733}{41}{\@memberb}% right type + \else% + \yl@xdiff=-10 + \yl@ydiff=24 + \Put@Line(573,-91)(5,4){170}% single bond at 3 + \putratom{753}{21}{\@memberb}% right type + \fi\fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@chaird} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v4.04}{2009/06/15}{Adding wavy bonds} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 4 % +% %%%%%%%%%%%%%%% +\def\@chaird{% + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=10 + \yl@ydiff=70 + \Put@Line(843,-181)(1,-1){120}% single bond at 4 + \putratom{953}{-371}{\@memberb}% right type + \else\if\@tmpc a%(a) axial + \yl@xdiff=42 + \yl@ydiff=91 + \Put@Line(843,-181)(0,-1){168}% single bond at 4 axial + \putlratom{801}{-440}{\@memberb}% left & right type + \else\if\@tmpc e%(e) beta + \yl@xdiff=-16 + \yl@ydiff=16 + \Put@Line(843,-181)(5,3){144}% single bond at 4 equatorial + \putratom{1003}{-111}{\@memberb}% right type + \fi\fi\fi% +%2009/06/15 + \else\if\@tmpb U%(U) alpha undefined + \yl@xdiff=10 + \yl@ydiff=70 + \putratom{953}{-371}{\@memberb}% right type + {% + \WaveBonds% + \Put@Line(843,-181)(1,-1){120}% single bond at 4 + }% +% + \else \if\@tmpb D%double bond + \yl@xdiff=10 + \yl@ydiff=70 + \Put@Line(833,-191)(1,-1){120}% double bond at 4 + \Put@Line(853,-171)(1,-1){120}% double bond at 4 + \putratom{953}{-371}{\@memberb}% right type + \else% + \yl@xdiff=10 + \yl@ydiff=70 + \Put@Line(843,-181)(1,-1){120}% single bond at 4 + \putratom{953}{-371}{\@memberb}% right type + \fi\fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@chaire} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v4.04}{2009/06/15}{Adding wavy bonds} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 5 % +% %%%%%%%%%%%%%%% +\def\@chaire{% + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=-10 + \yl@ydiff=10 + \Put@Line(673,46)(1,1){120}% single bond at 5 + \putratom{803}{158}{\@memberb}% right type + \else\if\@tmpc a%(a) axial + \yl@xdiff=40 + \yl@ydiff=-24 + \Put@Line(673,46)(0,1){168}% single bond at 5 axial + \putlratom{633}{238}{\@memberb}% left & right type + \else\if\@tmpc e%(e) beta + \yl@xdiff=-6 + \yl@ydiff=63 + \Put@Line(673,46)(5,-3){144}% single bond at 5 equatorial + \putratom{823}{-103}{\@memberb}% right type + \fi\fi\fi% +%2009/06/15 + \else\if\@tmpb U%(U) alpha undefined + \yl@xdiff=-10 + \yl@ydiff=10 + \putratom{803}{158}{\@memberb}% right type + {% + \WaveBonds% + \Put@Line(673,46)(1,1){120}% single bond at 5 + }% +% + \else \if\@tmpb D%double bond + \yl@xdiff=-10 + \yl@ydiff=10 + \Put@Line(663,53)(1,1){120}% double bond at 5 + \Put@Line(683,38)(1,1){120}% double bond at 5 + \putratom{803}{158}{\@memberb}% right type + \else% + \yl@xdiff=-10 + \yl@ydiff=24 + \Put@Line(673,46)(5,4){170}% single bond at 5 + \putratom{853}{158}{\@memberb}% right type + \fi\fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@chairf} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v4.04}{2009/06/15}{Adding wavy bonds} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 6 % +% %%%%%%%%%%%%%%% +\def\@chairf{% + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=0 + \yl@ydiff=54 + \Put@Line(270,-90)(-5,-4){170}% single bond at 6 + \putlatom{100}{-280}{\@memberb}% left type + \else\if\@tmpc a%(a) axial + \yl@xdiff=32 + \yl@ydiff=92 + \Put@Line(270,-90)(0,-1){168}% single bond at 6 axial + \putlratom{238}{-350}{\@memberb}% left type + \else\if\@tmpc e%(e) beta + \yl@xdiff=26 + \yl@ydiff=-14 + \Put@Line(270,-90)(-5,3){144}% single bond at 6 equatorial + \putratom{100}{18}{\@memberb}% left type + \fi\fi\fi% +%2009/06/15 + \else\if\@tmpb U%(U) alpha undefined + \yl@xdiff=0 + \yl@ydiff=54 + \putlatom{100}{-280}{\@memberb}% left type + {% + \WaveBonds% + \Put@Line(270,-90)(-5,-4){170}% single bond at 6 + }% +% + \else \if\@tmpb D%double bond + \yl@xdiff=0 + \yl@ydiff=54 + \Put@Line(260,-80)(-5,-4){170}% double bond at 2 + \Put@Line(280,-100)(-5,-4){170}% double bond at 2 + \putlatom{100}{-280}{\@memberb}% left or right type + \else% + \yl@xdiff=0 + \yl@ydiff=54 + \Put@Line(270,-90)(-5,-4){170}% single bond at 2 + \putlatom{100}{-280}{\@memberb}% left type + \fi\fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \subsection{Drawing of Chair-form cyclohexanes} +% +% The standard skeleton of a chair form of cyclohexane is selected +% to have the following locant numbers. +% +% \begin{verbatim} +% *************************** +% * cyclohexane derivatives * +% * (chair type) * +% *************************** +% The following numbering is adopted in this macro. +% +% 5 +% / 3 * +% 1 * 6 / * 4 +% * 2 +% +% \end{verbatim} +% +% The macro |\chair| has an argument |SUBSLIST| as well as an optional +% argument |BONDLIST|. +% +% \begin{verbatim} +% \chair[BONDLIST]{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one or more +% characters selected from a to f, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% \begin{verbatim} +% +% BONDLIST = +% +% none : cyclohexane +% 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 +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% \begin{verbatim} +% +% SUBSLIST: list of substituents (max 12 substitution positions) +% +% for n = 1 to 6 +% +% nD : exocyclic double bond at n-atom +% nSa : axial single bond at n-atom +% nSe : equatorial single bond at n-atom +% +% \end{verbatim} +% +% Several examples are shown as follows. +% +% \begin{verbatim} +% \chair{1==Cl;2==F} +% \chair[a]{1==Cl;4==F;2==CH$_{3}$} +% \chair[eb]{1D==O;4Se==MeO;4Sa==OMe;5==Cl;6==Cl} +% \end{verbatim} +% +% The definition of |\@chair| uses a picture environment, in which +% bonds are put directly, while subsituents are typset by using +% the macros |\@chaira| to |\@chairf| described above. +% \changes{v1.02}{1998/10/31}{Adding \cs{ylchairposition}, \cs{if@ylsw}, +% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v5.00}{2010/10/01}{For bond coloring} +% +% \begin{macro}{\@chair} +% \begin{macro}{\chair} +% \begin{macrocode} +\def\chair{\@ifnextchar[{\@chair}{\@chair[r]}} +\def\@chair[#1]#2{% +\@reset@ylsw% +\ylchairposition{#2}% +\def\@@ylii{0}\def\@@yli{0}% +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(1600,800)(-400,-500){chair}% +(400,500)%2002/4/30 by S. Fujita +%skeletal bonds + {\thicklines% + \molfronttrue% + \Put@Line(0,0)(3,-4){170}% % bond 1 to 2 + \Put@Line(170,-226)(3,1){403}% % 2 to 3 + \Put@Line(573,-91)(3,-1){270}% % 3 to 4 + }% + \thinlines% + \Put@Line(843,-181)(-3,4){170}% % 4 to 5 + \Put@Line(673,46)(-3,-1){403}% % 5 to 6 + \Put@Line(0,0)(3,-1){270}% % 1 to 6 +% inner double bonds +\@tfor\member:=#1\do{% +\if\member r%no endcyclic bonds +\else \if\member a% + \Put@Line(76,-42)(3,-4){110}% % double bond 1 to 2 +\else \if\member b% + \Put@Line(200,-186)(3,1){343}% % 2 to 3 +\else \if\member c% + \Put@Line(603,-70)(3,-1){190}% % 3 to 4 +\else \if\member d% + \Put@Line(780,-141)(-3,4){110}% % 4 to 5 +\else \if\member e% + \Put@Line(661,6)(-3,-1){343}% % 5 to 6 +\else \if\member f% + \Put@Line(75,-50)(3,-1){170}% % 1 to 6 +\fi\fi\fi\fi\fi\fi\fi}% +% setting substituents +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa%0 omit + \or\setBScolor{\@chaira}% subst. on 1 +% \@chaira% subst. on 1 + \or\setBScolor{\@chairb}% subst. on 2 +% \@chairb% subst. on 2 + \or\setBScolor{\@chairc}% subst. on 3 +% \@chairc% subst. on 3 + \or\setBScolor{\@chaird}% subst. on 4 +% \@chaird% subst. on 4 + \or\setBScolor{\@chaire}% subst. on 5 +% \@chaire% subst. on 5 + \or\setBScolor{\@chairf}% subst. on 6 +% \@chairf% subst. on 6 +\fi%end of ifcase +\fi\fi% +}% +\end{ShiftPicEnvB}% +}% %end of \chair macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The command |\ylchairposition| is to obtain the shift values +% |\@ylii| and |\@yli| which are used for shifting the standard +% point of a substituent. +% \changes{v1.02}{1998/10/23}{New ommands for setting substituents} +% +% \begin{macro}{\ylchairposition} +% \begin{macrocode} +\def\ylchairposition#1{% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpa%0 omit + \or\gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% subst. on 1 + \or\gdef\@ylii{-170}\gdef\@yli{226}\global\@ylswtrue% subst. on 2 + \or\gdef\@ylii{-573}\gdef\@yli{91}\global\@ylswtrue% subst. on 3 + \or\gdef\@ylii{-843}\gdef\@yli{181}\global\@ylswtrue% subst. on 4 + \or\gdef\@ylii{-673}\gdef\@yli{-46}\global\@ylswtrue% subst. on 5 + \or\gdef\@ylii{-270}\gdef\@yli{90}\global\@ylswtrue% subst. on 6 +\fi%end of ifcase +\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% \section{Inverse chair-form cyclohexanes} +% \subsection{Macros for setting substituents} +% +% Macros |\@chairia| to |\@chairif| are used to set substituents +% on each position of cyclohexane. Note that they corresopond to +% the counterparts of chair-form cyclohexanes described above. +% +% \begin{macro}{\@chairia} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v4.04}{2009/6/15}{Adding wavy bonds} +% \begin{macrocode} +% ******************************************************** +% * treatment of the chair form (inverse) of cyclohexane * +% * added March 05, 1994 by Shinsaku Fujita * +% ******************************************************** +% %%%%%%%%%%%%%%% +% % subst. on 1 % +% %%%%%%%%%%%%%%% +\def\@chairia{% + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=10 + \yl@ydiff=90 + \Put@Line(0,0)(-1,-1){120}% single bond at 1 + \putlatom{-130}{-210}{\@memberb}% left type + \else\if\@tmpc a%(a) axial + \yl@xdiff=42 + \yl@ydiff=92 + \Put@Line(0,0)(0,-1){168}% single bond at 1 axial + \putlratom{-42}{-260}{\@memberb}% left & right type + \else\if\@tmpc e%(e) beta + \yl@xdiff=16 + \yl@ydiff=36 + \Put@Line(0,0)(-5,3){144}% single bond at 1 equatorial + \putlatom{-160}{50}{\@memberb}% left type + \fi\fi\fi% +%2009/06/15 + \else\if\@tmpb U%(U) alpha undefined + \yl@xdiff=10\relax + \yl@ydiff=90\relax + \putlatom{-130}{-210}{\@memberb}% % left type + {% + \WaveBonds% + \Put@Line(0,0)(-1,-1){120}% % single bond at 1 + }% +% + \else \if\@tmpb D%double bond + \yl@xdiff=10 + \yl@ydiff=90 + \Put@Line(-10,10)(-1,-1){120}% double bond at 1 + \Put@Line(10,-10)(-1,-1){120}% double bond at 1 + \putlatom{-130}{-210}{\@memberb}% left type + \else% + \yl@xdiff=10 + \yl@ydiff=90 + \Put@Line(0,0)(-1,-1){120}% single bond at 1 + \putlatom{-130}{-210}{\@memberb}% left type + \fi\fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@chairif} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v4.04}{2009/06/15}{Adding wavy bonds} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 6 % +% %%%%%%%%%%%%%%% +\def\@chairif{% + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=10 + \yl@ydiff=30 + \Put@Line(170,226)(-1,1){120}% single bond at 6 + \putratom{40}{316}{\@memberb}% right type + \else\if\@tmpc a%(a) axial + \yl@xdiff=32 + \yl@ydiff=-12 + \Put@Line(170,226)(0,1){168}% single bond at 6 axial + \putlratom{138}{406}{\@memberb}% left & right type + \else\if\@tmpc e%(e) beta + \yl@xdiff=16 + \yl@ydiff=46 + \Put@Line(170,226)(-5,-3){144}% single bond at 6 equatorial + \putlatom{10}{94}{\@memberb}% left type + \fi\fi\fi% +%2009/06/15 + \else\if\@tmpb U%(U) alpha undefined + \yl@xdiff=10\relax + \yl@ydiff=30\relax + \putratom{40}{316}{\@memberb}% right type + {% + \WaveBonds% + \Put@Line(170,226)(-1,1){120}% single bond at 6 + }% +% + \else \if\@tmpb D%double bond + \yl@xdiff=10 + \yl@ydiff=30 + \Put@Line(160,216)(-1,1){120}% double bond at 6 + \Put@Line(180,236)(-1,1){120}% double bond at 6 + \putlatom{40}{316}{\@memberb}% left type + \else% + \yl@xdiff=10 + \yl@ydiff=30 + \Put@Line(170,226)(-1,1){120}% single bond at 6 + \putlatom{40}{316}{\@memberb}% left type + \fi\fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@chairie} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v4.04}{2009/06/15}{Adding wavy bonds} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 5 % +% %%%%%%%%%%%%%%% +\def\@chairie{% + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=-10 + \yl@ydiff=76 + \Put@Line(573,91)(5,-4){170}% single bond at 5 + \putratom{753}{-101}{\@memberb}% right type + \else\if\@tmpc a%(a) axial + \yl@xdiff=40 + \yl@ydiff=104 + \Put@Line(573,91)(0,-1){168}% single bond at 5 axial + \putlratom{533}{-181}{\@memberb}% left type + \else\if\@tmpc e%(e) beta + \yl@xdiff=-36 + \yl@ydiff=3 + \Put@Line(573,91)(5,3){144}% single bond at 5 equatorial + \putlatom{753}{180}{\@memberb}% left type + \fi\fi\fi% +%2009/06/15 + \else\if\@tmpb U%(U) alpha undefined + \yl@xdiff=-10 + \yl@ydiff=76 + \putratom{753}{-101}{\@memberb}% right type + {% + \WaveBonds% + \Put@Line(573,91)(5,-4){170}% single bond at 5 + }% +% + \else \if\@tmpb D%double bond + \yl@xdiff=-10 + \yl@ydiff=96 + \Put@Line(563,83)(5,-4){170}% double bond at 5 + \Put@Line(583,99)(5,-4){170}% double bond at 5 + \putratom{733}{-141}{\@memberb}% right type + \else% + \yl@xdiff=-10 + \yl@ydiff=76 + \Put@Line(573,91)(5,-4){170}% single bond at 5 + \putratom{753}{-121}{\@memberb}% right type + \fi\fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@chairid} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v4.04}{2009/06/15}{Adding wavy bonds} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 4 % +% %%%%%%%%%%%%%%% +\def\@chairid{% + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=10 + \yl@ydiff=30 + \Put@Line(843,181)(1,1){120}% single bond at 4 + \putratom{953}{271}{\@memberb}% right type + \else\if\@tmpc a%(a) axial + \yl@xdiff=42 + \yl@ydiff=-11 + \Put@Line(843,181)(0,1){168}% single bond at 4 axial + \putlratom{801}{360}{\@memberb}% left & right type + \else\if\@tmpc e%(e) beta + \yl@xdiff=-16 + \yl@ydiff=64 + \Put@Line(843,181)(5,-3){144}% single bond at 4 equatorial + \putratom{1003}{31}{\@memberb}% right type + \fi\fi\fi% +%2009/06/15 + \else\if\@tmpb U%(U) alpha undefined + \yl@xdiff=10 + \yl@ydiff=30 + \putratom{953}{271}{\@memberb}% right type + {% + \WaveBonds% + \Put@Line(843,181)(1,1){120}% single bond at 4 + }% +% + \else \if\@tmpb D%double bond + \yl@xdiff=10 + \yl@ydiff=30 + \Put@Line(833,191)(1,1){120}% double bond at 4 + \Put@Line(853,171)(1,1){120}% double bond at 4 + \putratom{953}{271}{\@memberb}% right type + \else% + \yl@xdiff=10 + \yl@ydiff=30 + \Put@Line(843,181)(1,1){120}% single bond at 4 + \putratom{953}{271}{\@memberb}% right type + \fi\fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@chairic} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v4.04}{2009/06/15}{Adding wavy bonds} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 3 % +% %%%%%%%%%%%%%%% +\def\@chairic{% + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=-10 + \yl@ydiff=92 + \Put@Line(673,-46)(1,-1){120}% single bond at 3 + \putratom{803}{-258}{\@memberb}% right type + \else\if\@tmpc a%(a) axial + \yl@xdiff=40 + \yl@ydiff=110 + \Put@Line(673,-46)(0,-1){168}% single bond at 3 axial + \putlratom{633}{-318}{\@memberb}% left & right type + \else\if\@tmpc e%(e) beta + \yl@xdiff=-6 + \yl@ydiff=17 + \Put@Line(673,-46)(5,3){144}% single bond at 3 equatorial + \putratom{823}{23}{\@memberb}% right type + \fi\fi\fi% +%2009/06/15 + \else\if\@tmpb U%(U) alpha undefined + \yl@xdiff=-10 + \yl@ydiff=92 + \putratom{803}{-258}{\@memberb}% right type + {% + \WaveBonds% + \Put@Line(673,-46)(1,-1){120}% single bond at 3 + }% +% + \else \if\@tmpb D%double bond + \yl@xdiff=-5 + \yl@ydiff=96 + \Put@Line(663,-53)(1,-1){120}% double bond at 3 + \Put@Line(683,-38)(1,-1){120}% double bond at 3 + \putratom{803}{-258}{\@memberb}% right type + \else% + \yl@xdiff=-10 + \yl@ydiff=76 + \Put@Line(673,-46)(5,-4){170}% single bond at 3 + \putratom{853}{-258}{\@memberb}% right type + \fi\fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@chairib} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v4.04}{2009/06/15}{Adding wavy bonds} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 2 % +% %%%%%%%%%%%%%%% +\def\@chairib{% + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=0 + \yl@ydiff=46 + \Put@Line(270,90)(-5,4){170}% single bond at 2 + \putlatom{100}{180}{\@memberb}% left type + \else\if\@tmpc a%(a) axial + \yl@xdiff=32 + \yl@ydiff=-12 + \Put@Line(270,90)(0,1){168}% single bond at 2 axial + \putlratom{238}{270}{\@memberb}% left type + \else\if\@tmpc e%(e) beta + \yl@xdiff=26 + \yl@ydiff=94 + \Put@Line(270,90)(-5,-3){144}% single bond at 2 equatorial + \putratom{100}{-98}{\@memberb}% left type + \fi\fi\fi% +%2009/06/15 + \else\if\@tmpb U%(U) alpha undefined + \yl@xdiff=0 + \yl@ydiff=46 + \putlatom{100}{180}{\@memberb}% left type + {% + \WaveBonds% + \Put@Line(270,90)(-5,4){170}% single bond at 2 + }% +% + \else \if\@tmpb D%double bond + \yl@xdiff=0 + \yl@ydiff=26 + \Put@Line(260,80)(-5,4){170}% double bond at 2 + \Put@Line(280,100)(-5,4){170}% double bond at 2 + \putlatom{100}{200}{\@memberb}% left or right type + \else% + \yl@xdiff=0 + \yl@ydiff=26 + \Put@Line(270,90)(-5,4){170}% single bond at 2 + \putlatom{100}{200}{\@memberb}% left type + \fi\fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \subsection{Drawing of inverse chair-form cyclohexanes} +% +% The standard skeleton of an inverse chair form of cyclohexane is selected +% to have the following locant numbers. +% +% \begin{verbatim} +% *************************** +% * cyclohexane derivatives * +% * (inverse chair type) * +% *************************** +% The following numbering is adopted in this macro. +% +% 6 4 +% * ` 5 * +% 1 * 2 * +% ` 3 +% +% \end{verbatim} +% +% The macro |\chairi| has an argument |SUBSLIST| as well as an optional +% argument |BONDLIST|. +% +% \begin{verbatim} +% \chairi[BONDLIST]{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one or more +% characters selected from a to f, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% \begin{verbatim} +% BONDLIST = +% +% none : cyclohexane +% 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 +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% \begin{verbatim} +% +% SUBSLIST: list of substituents (max 8 substitution positions) +% +% for n = 1 to 6 +% +% nD : exocyclic double bond at n-atom +% nSa : axial single bond at n-atom +% nSe : equatorial single bond at n-atom +% +% \end{verbatim} +% +% Several examples are shown as follows. +% +% \begin{verbatim} +% e.g. +% +% \chairi[eb]{1D==O;4Se==MeO;4Sa==OMe;5==Cl;6==Cl} +% \end{verbatim} +% +% The definition of |\@chairi| uses a picture environment, in which +% bonds are put directly, while subsituents are typset by using +% the macros |\@chairia| to |\@chairif| described above. +% \changes{v1.02}{1998/10/31}{Adding \cs{ylchairiposition}, \cs{if@ylsw}, +% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v5.00}{2010/10/01}{For bond coloring} +% +% \begin{macro}{\@chairi} +% \begin{macro}{\chairi} +% \begin{macrocode} +\def\chairi{\@ifnextchar[{\@chairi}{\@chairi[r]}} +\def\@chairi[#1]#2{% +\@reset@ylsw% +\ylchairiposition{#2}% +\def\@@ylii{0}\def\@@yli{0}% +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(1600,800)(-400,-319){chairi}% +(400,319)%2002/4/30 by S. Fujita +% skeletal bonds + \thinlines% + \Put@Line(0,0)(3,4){170}% % bond 1 to 6 + \Put@Line(170,226)(3,-1){403}% % 6 to 5 + \Put@Line(573,91)(3,1){270}% % 5 to 4 + {\thicklines% + \molfronttrue% + \Put@Line(843,181)(-3,-4){170}% % 4 to 3 + \Put@Line(673,-46)(-3,1){403}% % 3 to 2 + \Put@Line(0,0)(3,1){270}% % 1 to 2 + }% + \thinlines% +% inner double bonds +\@tfor\member:=#1\do{% +\if\member r%no endcyclic bonds +\else \if\member c%%%a% + \Put@Line(767,139)(-3,-4){110}% % double bond 3 to 4 +\else \if\member b%%%d%%%b% + \Put@Line(640,-5)(-3,1){343}% % 4 to 5 +\else \if\member a%%%e%%%%c% + \Put@Line(240,111)(-3,-1){190}% % 5 to 6 +\else \if\member f%%%d% + \Put@Line(63,40)(3,4){110}% % 6 to 7 +\else \if\member e%%%l% + \Put@Line(182,187)(3,-1){343}% % 7 to 10 +\else \if\member d%%%k%%%f% + \Put@Line(768,131)(-3,-1){170}% % 10 to 3 +\fi\fi\fi\fi\fi\fi\fi}% +% % +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa%0 omit + \or\setBScolor{\@chairia}% subst. on 1 +% \@chairia% subst. on 1 + \or\setBScolor{\@chairib}% subst. on 2 +% \@chairib% subst. on 2 + \or\setBScolor{\@chairic}% subst. on 3 +% \@chairic% subst. on 3 + \or\setBScolor{\@chairid}% subst. on 4 +% \@chairid% subst. on 4 + \or\setBScolor{\@chairie}% subst. on 5 +% \@chairie% subst. on 5 + \or\setBScolor{\@chairif}% subst. on 6 +% \@chairif% subst. on 6 +\fi %end of ifcase +\fi\fi% +}\end{ShiftPicEnvB}}% %end of \chairi macro +% End of addition 1994/03/05 SF +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The command |\ylchairiposition| is to obtain the shift values +% |\@ylii| and |\@yli| which are used for shifting the standard +% point of a substituent. +% \changes{v1.02}{1998/10/23}{New ommands for setting substituents} +% +% \begin{macro}{\ylchairiposition} +% \begin{macrocode} +\def\ylchairiposition#1{% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpa%0 omit + \or\gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% subst. on 1 + \or\gdef\@ylii{-270}\gdef\@yli{-90}\global\@ylswtrue% subst. on 2 + \or\gdef\@ylii{-673}\gdef\@yli{46}\global\@ylswtrue% subst. on 3 + \or\gdef\@ylii{-843}\gdef\@yli{-181}\global\@ylswtrue% subst. on 4 + \or\gdef\@ylii{-573}\gdef\@yli{-91}\global\@ylswtrue% subst. on 5 + \or\gdef\@ylii{-170}\gdef\@yli{-226}\global\@ylswtrue% subst. on 6 +\fi%end of ifcase +\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% \section{Bicycloheptanes} +% \subsection{Drawing of a flat and vertical type} +% +% The flat-and-vertical-type skeleton of bicycloheptanes is selected +% to have the following locant numbers. +% +% \begin{verbatim} +% ************************************* +% * bicyclo[2.2.1]heptane derivatives * +% * (flat, vertical type) * +% ************************************* +% The following numbering is adopted in this macro. +% +% 1 +% * +% 6 * * 2 +% | 7 | +% | | +% 5 * * 3 +% * +% 4 <===== the original point +% \end{verbatim} +% +% The macro |\bicyclohepv| has an argument |SUBSLIST| as well as an optional +% argument |BONDLIST|. +% +% \begin{verbatim} +% \bicychepv[BONDLIST]{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one or more +% characters selected from a to f, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% In order to put dimethyl subsitutents on the top position (7), +% the character `7' is used in the |BONDLIST|. The delocalization +% of $\pi$-electron can be described with the character `A' written in +% the |BONDLIST|. +% \begin{verbatim} +% +% BONDLIST = +% +% none : bicyclo[2.2.1]heptane +% a : 1,2-double bond +% b : 2,3-double bond +% c : 4,3-double bond +% d : 4,5-double bond +% e : 5,6-double bond +% f : 6,1-double bond +% A : aromatic circle +% 7 : 7,7-dimethyl +% \end{verbatim} +% +% The |SUBSLIST| argument takes the standard format of \XyMTeX{}, in which +% more substitution descriptors are separated from each other +% by a semicolon. +% \begin{verbatim} +% +% SUBSLIST: list of substituents (max 12 substitution positions) +% +% for n = 1 to 7 +% +% 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 specifed) single bond at n-atom +% \end{verbatim} +% +% Several examples are shown as follows. +% +% \begin{verbatim} +% e.g. +% +% \bicychepv{1==Cl;2==F} +% \bicychepv[c]{1==Cl;4==F;2==CH$_{3}$} +% \bicychepv[eb]{1D==O;4==Me;5==Cl;6==Cl} +% \end{verbatim} +% +% The definition of |\@bicyclohepv| uses a picture environment, in which +% bonds are put directly, while subsituents are typset by using +% the macro |\setsixringv| defined in chemstr.sty of \XyMTeX{} system. +% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw}, +% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% +% \begin{macro}{\@bicyclohepv} +% \begin{macro}{\bicyclohepv} +% \begin{macrocode} +\def\bicychepv{\@ifnextchar[{\@bicychepv}{\@bicychepv[r]}} +\def\@bicychepv[#1]#2{% +\@reset@ylsw% +\ylposition{#2}{0}{0}{7}{0}% +\begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(800,880)(-400,-240){bicychepv}% +(400,240)%2002/4/30 by S. Fujita + \Put@Line(0,406)(-5,-3){171}% %bond 1-6 + \Put@Line(0,406)(5,-3){171}% %bond 1-2 + \Put@Line(0,0)(-5,3){171}% %bond 4-5 + \Put@Line(0,0)(5,3){171}% %bond 4-3 + \Put@Line(171,103)(0,1){200}% %bond 3-2 + \Put@Line(-171,103)(0,1){200}% %bond 5-6 +{\thicklines% + \molfronttrue% + \Put@Line(0,0)(1,4){51}% %bond 4-7 + \Put@Line(0,406)(1,-4){51}}% %bond 1-7 +\@tfor\member:=#1\do{% +\if\member r%no endcyclic double bonds +\else \if\member a% + \Put@Line(6,364)(5,-3){126}% %double bond 1-2 +\else \if\member b% + \Put@Line(138,129)(0,1){148}% %double bond 3-2 +\else \if\member c% + \Put@Line(6,42)(5,3){126}% %double bond 4-3 +\else \if\member d% + \Put@Line(-6,42)(-5,3){126}% %double bond 4-5 +\else \if\member e% + \Put@Line(-138,129)(0,1){148}% %double bond 5-6 +\else \if\member f% + \Put@Line(-6,364)(-5,-3){126}% %double bond 1-6 +\else \if\member 7% + {\thicklines% + \Put@Line(51,204)(-1,0){70}% %7,7-dimethyl + \Put@Line(51,204)(1,0){70}}% +\else \if\member A%aromatic circle + \Put@oCircle(0,203){240}% %circle +\fi\fi\fi\fi\fi\fi\fi\fi\fi}% +% % +\setsixringv{#2}{0}{0}{7}{0}% +\end{ShiftPicEnv}% +}% %end of \bicychepv macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Drawing of a flat and horizontal type} +% +% The flat-and-horizontal-type skeleton of bicycloheptanes is selected +% to have the following locant numbers. +% +% \begin{verbatim} +% ************************************* +% * bicyclo[2.2.1]heptane derivatives * +% * (flat, horizontal type) * +% ************************************* +% The following numbering is adopted in this macro. +% +% 2 3 +% ----- +% * * +% the original point ===> 1 * 7 * 4 +% (0,0) * * +% ----- +% 6 5 +% \end{verbatim} +% +% The macro |\bicycloheph| has an argument |SUBSLIST| as well as an optional +% argument |BONDLIST|. +% +% \begin{verbatim} +% \bicycheph[BONDLIST]{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one or more +% characters selected from a to f, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% In order to put dimethyl subsitutents on the top position (7), +% the character `7' is used in the |BONDLIST|. The delocalization +% of $\pi$-electron can be described with the character `A' written in +% the |BONDLIST|. +% \begin{verbatim} +% BONDLIST = +% +% none : bicyclo[2.2.1]heptane +% a : 1,2-double bond +% b : 2,3-double bond +% c : 4,3-double bond +% d : 4,5-double bond +% e : 5,6-double bond +% f : 6,1-double bond +% A : aromatic circle +% 7 : 7,7-dimethyl +% \end{verbatim} +% +% The |SUBSLIST| argument takes the standard format of \XyMTeX{}, in which +% more substitution descriptors are separated from each other +% by a semicolon. +% \begin{verbatim} +% +% SUBSLIST: list of substituents (max 8 substitution positions) +% +% for n = 1 to 6 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specifed) single bond at n-atom +% \end{verbatim} +% +% Several examples are shown as follows. +% +% \begin{verbatim} +% e.g. +% +% \bicycheph{1==Cl;2==F} +% \bicycheph[c]{1==Cl;4==F;2==CH$_{3}$} +% \bicycheph[eb]{1D==O;4==Me;5==Cl;6==Cl} +% \end{verbatim} +% +% The definition of |\@bicycloheph| uses a picture environment, in which +% bonds are put directly, while subsituents are typset by using +% the macro |\setsixringh| defined in chemstr.sty of \XyMTeX{} system. +% \changes{v1.02}{1998/10/31}{Adding \cs{ylpositionh}, \cs{if@ylsw}, +% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% +% \begin{macro}{\@bicycloheph} +% \begin{macro}{\bicycloheph} +% \begin{macrocode} +\def\bicycheph{\@ifnextchar[{\@bicycheph}{\@bicycheph[r]}} +\def\@bicycheph[#1]#2{% +\@reset@ylsw% +\ylpositionh{#2}{0}{0}{7}{0}% +\begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(880,800)(-240,-400){bicycheph}% +(240,400)%2002/4/30 by S. Fujita + \Put@Line(0,0)(3,5){103}% %bond 1-2 + \Put@Line(0,0)(3,-5){103}% %bond 1-6 + \Put@Line(406,0)(-3,5){103}% %bond 4-3 + \Put@Line(406,0)(-3,-5){103}% %bond 4-3 + \Put@Line(103,171)(1,0){200}% %bond 2-3 + \Put@Line(103,-171)(1,0){200}% %bond 6-5 +{\thicklines% + \molfronttrue% + \Put@Line(0,0)(4,1){203}% %bond 4-7 + \Put@Line(406,0)(-4,1){203}}% %bond 1-7 +\@tfor\member:=#1\do{% +\if\member r%no endcyclic double bonds +\else \if\member a% + \Put@Line(42,6)(3,5){78}% %double bond 1-2 +\else \if\member b% + \Put@Line(129,138)(1,0){148}% %double bond 2-3 +\else \if\member c% + \Put@Line(364,6)(-3,5){78}% %double bond 4-3 +\else \if\member d% + \Put@Line(364,-6)(-3,-5){78}% %double bond 4-5 +\else \if\member e% + \Put@Line(129,-138)(1,0){148}% %double bond 6-5 +\else \if\member f% + \Put@Line(42,-6)(3,-5){78}% %double bond 1-6 +\else \if\member 7% + {\thicklines% + \Put@Line(204,51)(0,-1){70}% %7,7-dimethyl + \Put@Line(204,51)(0,1){70}}% +\else \if\member A%aromatic circle + \Put@oCircle(203,0){240}% %circle +\fi\fi\fi\fi\fi\fi\fi\fi\fi}% +% % +\setsixringh{#2}{0}{0}{7}{0}% +\end{ShiftPicEnv}% +}% %end of \bicycheph macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Drawing of a stereo type} +% +% \subsubsection{Macros for setting substituents} +% +% Macros |\@borna| to |\@borng| are used to set substituents +% on each position of bornane. +% +% \begin{macro}{\@borna} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v5.01}{2013/06/26}{Adding A, B} +% \begin{macrocode} +% *********************************************** +% * setting bonds and substituents for bornanes * +% * (bicycloe[2.2.1]heptane derivatives) * +% *********************************************** +% %%%%%%%%%%%%%%% +% % subst. on 1 % +% %%%%%%%%%%%%%%% +\def\@borna{% + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=8 + \yl@ydiff=3 + \Put@Line(318,247)(2,5){40}% % single bond 1 + \putratom{350}{360}{\@memberb}% % right type + \else\if\@tmpc a%(a) alpha + \yl@xdiff=8 + \yl@ydiff=3 + \Put@Line(318,247)(2,5){40}% % single bond 1 + \putratom{350}{360}{\@memberb}% % right type + \else\if\@tmpc b%(b) beta + \yl@xdiff=8 + \yl@ydiff=3 + \Put@Line(318,247)(2,5){40}% % single bond 1 + \putratom{350}{360}{\@memberb}% % right type + \fi\fi\fi% +%2013/04/01 + \else\if\@tmpb U%(U) alpha undefined + \yl@xdiff=8\relax + \yl@ydiff=3\relax + {% + \WaveBonds% + \Put@Line(318,247)(2,5){40}% % wavy bond at 1 + }% + \putratom{350}{360}{\@memberb}% % right type +%2013/06/26 + \else\if\@tmpb A%(A) alpha + \yl@xdiff=8\relax + \yl@ydiff=3\relax + \dotorline(318,247)(2,5){40}/(318,247)(358,347)% + \putratom{350}{360}{\@memberb}% % right type +%2013/06/26 + \else\if\@tmpb B%(B) beta + \yl@xdiff=8\relax + \yl@ydiff=3\relax + {% + \thicklines% + \Put@Line(318,247)(2,5){40}% % wavy bond at 1 + }% + \putratom{350}{360}{\@memberb}% % right type +% + \else% + \yl@xdiff=8 + \yl@ydiff=3 + \Put@Line(318,247)(2,5){40}% % single bond 1 + \putratom{350}{360}{\@memberb}% % right type + \fi\fi\fi\fi + }% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@bornb} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v5.01}{2013/06/26}{Bug fix exchange A and B} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 2 % +% %%%%%%%%%%%%%%% +\def\@bornb{% + \begin{sfpicture}(200,200)(0,0) + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=-10 + \yl@ydiff=20 + \Put@Line(0,0)(5,2){160}% + \putratom{170}{44}{\@memberb}% % left type + \else\if\@tmpc B%(B) beta%bug fix 2013/06/26 + \yl@xdiff=0 + \yl@ydiff=-5 + {% + \thicklines% + \Put@Line(0,0)(4,3){140}% % endo (a) + }% + \putratom{140}{115}{\@memberb}% % right type + \else\if\@tmpc A%(A) alpha%bug fix 2013/06/26 + \yl@xdiff=10 + \yl@ydiff=30 + \dotorline(0,0)(5,-2){140}/(0,0)(140,-56)% + \putratom{150}{-86}{\@memberb}% % right type + \else\if\@tmpc a%(a) alpha + \yl@xdiff=10 + \yl@ydiff=30 + \Put@Line(0,0)(5,-2){140}% % endo (a) + \putratom{150}{-86}{\@memberb}% % right type + \else\if\@tmpc b%(b) beta + \yl@xdiff=0 + \yl@ydiff=-10 + \Put@Line(0,0)(4,3){140}% % exo (b) + \putratom{140}{115}{\@memberb}% % right type + \fi\fi\fi\fi\fi% + \else \if\@tmpb D%double bond + \yl@xdiff=-10 + \yl@ydiff=20 + \Put@Line(-10,-15)(5,2){160}% + \Put@Line(-5,15)(5,2){160}% + \putratom{170}{44}{\@memberb}% % right type + \else \if\@tmpb B%beta single bond%bug fix 2013/06/26 + \yl@xdiff=-10 + \yl@ydiff=20 + {% + \thicklines% + \Put@Line(0,0)(5,2){160}% + }% + \putratom{170}{44}{\@memberb}% % right type + \else \if\@tmpb A%alpha single bond%bug fix 2013/06/26 + \yl@xdiff=-10 + \yl@ydiff=20 + \dotorline(0,0)(5,2){160}/(0,0)(160,64)% + \putratom{170}{44}{\@memberb}% % right type +%2013/04/01 + \else\if\@tmpb U%(U) alpha undefined + \yl@xdiff=-10\relax + \yl@ydiff=20\relax + {% + \WaveBonds% + \Put@Line(0,0)(5,2){160}% % wavy bond at 2 + }% + \putratom{170}{44}{\@memberb}% % left type +% + \else% + \yl@xdiff=-10 + \yl@ydiff=20 + \Put@Line(0,0)(5,2){160}% + \putratom{170}{44}{\@memberb}% % right type + \fi\fi\fi\fi\fi\end{sfpicture}}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@bornc} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v5.01}{2013/06/26}{Bug fix exchange A and B} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 3 % +% %%%%%%%%%%%%%%% +\def\@bornc{% + \begin{sfpicture}(200,200)(0,0) + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=-10 + \yl@ydiff=30 + \Put@Line(0,0)(5,-2){140}% + \putratom{150}{-86}{\@memberb}% % right type + \else\if\@tmpc B%(B) beta%bug fix 2013/06/26 + \yl@xdiff=-10 + \yl@ydiff=30 + {% + \thicklines% + \Put@Line(0,0)(5,2){140}% % endo (a) + }% + \putratom{150}{26}{\@memberb}% % right type + \else\if\@tmpc A%(A) alpha%bug fix 2013/06/26 + \yl@xdiff=0 + \yl@ydiff=40 + \dotorline(0,0)(4,-3){140}/(0,0)(140,-105)%% exo (b) + \putratom{140}{-145}{\@memberb}% % right type + \else\if\@tmpc a%(a) alpha + \yl@xdiff=0 + \yl@ydiff=40 + \Put@Line(0,0)(4,-3){140}% % endo (a) + \putratom{140}{-145}{\@memberb}% % right type + \else\if\@tmpc b%(b) beta + \yl@xdiff=-10 + \yl@ydiff=30 + \Put@Line(0,0)(5,2){140}% % exo (b) + \putratom{150}{26}{\@memberb}% % right type + \fi\fi\fi\fi\fi + \else \if\@tmpb D%double bond + \yl@xdiff=10 + \yl@ydiff=50 + \Put@Line(10,15)(5,-2){160}% + \Put@Line(5,-15)(5,-2){160}% + \putratom{170}{-124}{\@memberb}% % right type + \else \if\@tmpb B%beta single bond%bug fix 2013/06/26 + \yl@xdiff=-10 + \yl@ydiff=30 + {% + \thicklines% + \Put@Line(0,0)(5,-2){140}% % endo (a) + }% + \putratom{150}{-86}{\@memberb}% % right type + \else \if\@tmpb A%alpha single bond%bug fix 2013/06/26 + \yl@xdiff=-10 + \yl@ydiff=30 + \dotorline(0,0)(5,-2){140}/(0,0)(140,-56)% exo (b) + \putratom{150}{-86}{\@memberb}% % right type +%2013/04/01 + \else\if\@tmpb U%(U) alpha undefined + \yl@xdiff=-10\relax + \yl@ydiff=20\relax + {% + \WaveBonds% + \Put@Line(0,0)(5,2){160}% % wavy bond at 3 + }% + \putratom{170}{44}{\@memberb}% % left type +% + \else% + \yl@xdiff=-10 + \yl@ydiff=20 + \Put@Line(0,0)(5,2){160}% + \putratom{170}{44}{\@memberb}% % right type + \fi\fi\fi\fi\fi% +\end{sfpicture}}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@bornd} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v5.01}{2013/06/26}{Adding A, B} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 4 % +% %%%%%%%%%%%%%%% +\def\@bornd{% + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=30 + \yl@ydiff=87 + \Put@Line(237,47)(-2,-5){40}% % single bond 4 + \putlratom{167}{-150}{\@memberb}% % left & right type + \else\if\@tmpc a%(a) alpha + \yl@xdiff=30 + \yl@ydiff=87 + \Put@Line(237,47)(-2,-5){40}% % single bond 4 + \putlratom{167}{-150}{\@memberb}% % left & right type + \else\if\@tmpc b%(b) beta + \yl@xdiff=30 + \yl@ydiff=87 + \Put@Line(237,47)(-2,-5){40}% % single bond 4 + \putlratom{167}{-150}{\@memberb}% % left & right type + \fi\fi\fi% +%2013/04/01 + \else\if\@tmpb U%(U) alpha, beta undefined + \yl@xdiff=30\relax + \yl@ydiff=87\relax + {% + \WaveBonds% + \Put@Line(237,47)(-2,-5){40}% % single bond 4 + }% + \putlratom{167}{-150}{\@memberb}% % left & right type +%2013/06/26 + \else\if\@tmpb A%(A) alpha + \yl@xdiff=30\relax + \yl@ydiff=87\relax + \dotorline(237,47)(-2,-5){40}/(237,47)(197,-53)% + \putlratom{167}{-150}{\@memberb}% % left & right type +%2013/06/26 + \else\if\@tmpb B%(B) beta + \yl@xdiff=30\relax + \yl@ydiff=87\relax + {% + \thicklines% + \Put@Line(237,47)(-2,-5){40}% % single bond 4 + }% + \putlratom{167}{-150}{\@memberb}% % left & right type +% + \else% + \yl@xdiff=30 + \yl@ydiff=87 + \Put@Line(237,47)(-2,-5){40}% % single bond 4 + \putlratom{167}{-150}{\@memberb}% % left & right type + \fi\fi\fi\fi% + }% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@borne} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v5.01}{2013/06/26}{Bug fix exchange A and B} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 5 % +% %%%%%%%%%%%%%%% +\def\@borne{% + \begin{sfpicture}(200,200)(0,0) + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=10 + \yl@ydiff=30 + \Put@Line(0,0)(-5,-2){140}% + \putlatom{-150}{-86}{\@memberb}% % left type + \else\if\@tmpc B%(B) beta%bug fix 2013/06/26 + \yl@xdiff=10 + \yl@ydiff=30 + {% + \thicklines% + \Put@Line(0,0)(-5,2){140}% % endo (a) + }% + \putlatom{-150}{26}{\@memberb}% % left type + \else\if\@tmpc A%(A) alpha%bug fix 2013/06/26 + \yl@xdiff=0 + \yl@ydiff=40 + \dotorline(0,0)(-4,-3){140}/(0,0)(-140,-105)%% exo (b) + \putlatom{-140}{-145}{\@memberb}% % left type + \else\if\@tmpc a%(a) alpha + \yl@xdiff=0 + \yl@ydiff=30 + \Put@Line(0,0)(-4,-3){140}% % endo (a) + \putlatom{-140}{-145}{\@memberb}% % left type + \else\if\@tmpc b%(b) beta + \yl@xdiff=10 + \yl@ydiff=30 + \Put@Line(0,0)(-5,2){140}% % exo (b) + \putlatom{-150}{26}{\@memberb}% % left type + \fi\fi\fi\fi\fi + \else \if\@tmpb D%double bond + \yl@xdiff=0 + \yl@ydiff=64 + \Put@Line(-10,15)(-5,-2){160}% + \Put@Line(-5,-15)(-5,-2){160}% + \putlatom{-170}{-124}{\@memberb}% % left type + \else \if\@tmpb B%beta single bond%bug fix 2013/06/26 + \yl@xdiff=10 + \yl@ydiff=30 + {% + \thicklines% + \Put@Line(0,0)(-5,-2){140}% % endo (a) + }% + \putlatom{-150}{-86}{\@memberb}% % left type + \else \if\@tmpb A%alpha single bond%bug fix 2013/06/26 + \yl@xdiff=10 + \yl@ydiff=30 + \dotorline(0,0)(-5,-2){140}/(0,0)(-140,-56)%% exo (b) + \putlatom{-150}{-86}{\@memberb}% % left type +%2013/04/01 + \else\if\@tmpb U%(U) alpha undefined + \yl@xdiff=10\relax + \yl@ydiff=20\relax + {% + \WaveBonds% + \Put@Line(0,0)(-5,2){160}% wavy bond at 5 + }% + \putlatom{-170}{44}{\@memberb}% % left type +% + \else% + \yl@xdiff=10 + \yl@ydiff=20 + \Put@Line(0,0)(-5,2){160}% + \putlatom{-170}{44}{\@memberb}% % left type + \fi\fi\fi\fi\fi% +\end{sfpicture}}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@bornf} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v5.01}{2013/06/26}{Bug fix exchange A and B} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 6 % +% %%%%%%%%%%%%%%% +\def\@bornf{% + \begin{sfpicture}(200,200)(0,0) + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=10 + \yl@ydiff=30 + \Put@Line(0,0)(-5,2){160}% + \putlatom{-170}{44}{\@memberb}% % left type + \else\if\@tmpc B%(B) beta%bug fix 2013/06/26 + \yl@xdiff=10 + \yl@ydiff=-10 + {% + \thicklines% + \Put@Line(0,0)(-4,3){140}% % endo (a) + }% + \putlatom{-140}{115}{\@memberb}% % left type + \else\if\@tmpc A%(A) alpha%bug fix 2013/06/26 + \yl@xdiff=0 + \yl@ydiff=30 + \dotorline(0,0)(-5,-2){140}/(0,0)(-140,-56)%% exo (b) + \putlatom{-150}{-86}{\@memberb}% % left type + \else\if\@tmpc a%(a) alpha + \yl@xdiff=10 + \yl@ydiff=30 + \Put@Line(0,0)(-5,-2){140}% % endo (a) + \putlatom{-150}{-86}{\@memberb}% % left type + \else\if\@tmpc b%(b) beta + \yl@xdiff=0 + \yl@ydiff=-10 + \Put@Line(0,0)(-4,3){140}% % exo (b) + \putlatom{-140}{115}{\@memberb}% % left type + \fi\fi\fi\fi\fi% + \else \if\@tmpb D%double bond + \yl@xdiff=0 + \yl@ydiff=20 + \Put@Line(10,-15)(-5,2){160}% + \Put@Line(5,15)(-5,2){160}% + \putlatom{-170}{44}{\@memberb}% % left type + \else \if\@tmpb B%beta single bond%bug fix 2013/06/26 + \yl@xdiff=10 + \yl@ydiff=30 + {% + \thicklines% + \Put@Line(0,0)(-5,2){160}% + }% + \putlatom{-170}{44}{\@memberb}% % left type + \else \if\@tmpb A%alpha single bond%bug fix 2013/06/26 + \yl@xdiff=10 + \yl@ydiff=30 + \dotorline(0,0)(-5,2){160}/(0,0)(-160,64)% + \putlatom{-170}{44}{\@memberb}% % left type +%2013/04/01 + \else\if\@tmpb U%(U) alpha undefined + \yl@xdiff=10\relax + \yl@ydiff=20\relax + {% + \WaveBonds% + \Put@Line(0,0)(-5,2){160}% wavy bond at 6 + }% + \putlatom{-170}{44}{\@memberb}% % left type +% + \else% + \yl@xdiff=10 + \yl@ydiff=20 + \Put@Line(0,0)(-5,2){160}% + \putlatom{-170}{44}{\@memberb}% % left type + \fi\fi\fi\fi\fi\end{sfpicture}}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@borng} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v5.01}{2013/06/26}{Adding SU, SV, SA, SB, Su, Sd} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 7 % +% %%%%%%%%%%%%%%% +\def\@borng{% + \begin{sfpicture}(200,200)(0,0) + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=40 + \yl@ydiff=-20 + \Put@Line(0,0)(0,1){160}% + \putlratom{-40}{180}{\@memberb}% % left & right type + \else\if\@tmpc a%(a) left + \yl@xdiff=0 + \yl@ydiff=-10 + \Put@Line(0,0)(-4,3){140}% % left (a) + \putlatom{-140}{115}{\@memberb}% % left type + \else\if\@tmpc b%(b) right + \yl@xdiff=0 + \yl@ydiff=-10 + \Put@Line(0,0)(4,3){140}% % right (b) + \putratom{140}{115}{\@memberb}% % right type +%2013/06/25 + \else\if\@tmpc U%(U) alpha undefined + \yl@xdiff=0\relax + \yl@ydiff=-10\relax + {% + \WaveBonds% + \Put@Line(0,0)(-4,3){140}% % left (U) + }% + \putlatom{-140}{115}{\@memberb}% % left type +%2013/06/25 + \else\if\@tmpc V%(V) beta undefined + \yl@xdiff=0\relax + \yl@ydiff=-10\relax + {% + \WaveBonds% + \Put@Line(0,0)(4,3){140}% % right (V) + }% + \putratom{140}{115}{\@memberb}% % right type +%2013/06/26 + \else\if\@tmpc A%(A) alpha + \yl@xdiff=0\relax + \yl@ydiff=-10\relax + \dotorline(0,0)(-4,3){140}/(0,0)(-140,105)% + \putlatom{-140}{115}{\@memberb}% % left type +%2013/06/26 + \else\if\@tmpc B%(B) beta + \yl@xdiff=0\relax + \yl@ydiff=-10\relax + {% + \thicklines% + \Put@Line(0,0)(4,3){140}% % + }% + \putratom{140}{115}{\@memberb}% % right type +%2013/06/26 + \else\if\@tmpc u%(u) beta alternative + \yl@xdiff=0\relax + \yl@ydiff=-10\relax + {% + \thicklines% + \Put@Line(0,0)(-4,3){140}% % + }% + \putlatom{-140}{115}{\@memberb}% % left type +%2013/06/26 + \else\if\@tmpc d%(d) alpha alternative + \yl@xdiff=0\relax + \yl@ydiff=-10\relax + \dotorline(0,0)(4,3){140}/(0,0)(140,105)% + \putratom{140}{115}{\@memberb}% % right type +% + \fi\fi\fi\fi\fi\fi\fi\fi\fi + %\fi\fi% + \else \if\@tmpb D%double bond + \yl@xdiff=40 + \yl@ydiff=-20 + \Put@Line(-10,0)(0,1){160}% + \Put@Line(10,0)(0,1){160}% + \putlratom{-40}{180}{\@memberb}% % left & right type + \else% + \yl@xdiff=40 + \yl@ydiff=-20 + \Put@Line(0,0)(0,1){160}% + \putlratom{-40}{180}{\@memberb}% % left & right type + \fi\fi\end{sfpicture}}% +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Drawing of borane derivatives} +% +% The stereo-type skeleton of bicycloheptanes is selected +% to have the following locant numbers. +% +% \begin{verbatim} +% *********************************************** +% * bornane derivatives * +% * (bicycloe[2.2.1]heptane derivatives) * +% *********************************************** +% The following numbering is adopted in this macro. +% +% 7 g +% f / ` +% _ / - 1_ a +% e 6 / h - 2 +% * / * +% 5 - 4 * b +% d c` 3 +% +% \end{verbatim} +% +% The macro |\bornane| has an argument |SUBSLIST| as well as an optional +% argument |BONDLIST|. +% +% \begin{verbatim} +% \bornane[BONDLIST]{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one or more +% characters selected from a to h, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% \begin{verbatim} +% +% BONDLIST = +% +% none : bicyclo[2.2.1]heptane +% 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 +% g : 1,7-double bond +% h : 4,7-double bond +% \end{verbatim} +% +% The |SUBSLIST| argument takes the standard format of \XyMTeX{}, in which +% more substitution descriptors are separated from each other +% by a semicolon. +% \begin{verbatim} +% +% SUBSLIST: list of substituents (max 7 substitution positions) +% +% for n = 1 to 6 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha single bond at n-atom +% nSb : beta single bond at n-atom +% \end{verbatim} +% +% The 7-position of a bornane skeleton cannot be specified by +% capital characters `A' and `B'. +% \begin{verbatim} +% for n = 7 (bridge position) +% +% nD : exocyclic double bond at 7-atom +% n or nS : exocyclic single bond at 7-atom +% nSa : left single bond at 7-atom +% nSb : right single bond at 7-atom +% +% \end{verbatim} +% +% Several examples are shown as follows. +% +% \begin{verbatim} +% e.g. +% +% \bornane{1==N}{1==Cl;2==F} +% \bornane[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \bornane[eb]{1==N}{1D==O;4==MeO;5==Cl;6==Cl} +% \end{verbatim} +% +% The definition of |\@bicycloheph| uses a picture environment, in which +% bonds are put directly, while subsituents are typset by using +% the macro |\@borna| to |\@borng| defined in chemstr.sty of \XyMTeX{} +% system. +% +% \changes{v1.01b}{1998/10/08}{The drawing are of \cs{bornane} +% has been changed by SF.} +% \changes{v1.02}{1998/10/31}{Adding \cs{ylbornaneposition}, \cs{if@ylsw}, +% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v5.00}{2010/10/01}{For bond coloring} +% \changes{v5.01}{2013/06/24}{bornane front-to-back crossing} +% +% \begin{macro}{\@bornane} +% \begin{macro}{\iffrontthicktothin} +% \begin{macro}{\bornane} +% \begin{macrocode} +\def\BackGroundColor{\color{white}}%default color for background 2013/07/23 +\newif\iffrontthicktothin \frontthicktothinfalse%default front thickline2013/06/24 +\def\bornane{\@ifnextchar[{\@bornane}{\@bornane[r]}} +\def\@bornane[#1]#2{% +\@reset@ylsw% +\ylbornaneposition{#2}% +\def\@@ylii{0}\def\@@yli{0}% +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(1000,1000)(-200,-240){bornane}% +(200,240)%2002/4/30 by S. Fujita +% skeletal bonds + \thinlines% + \Put@Line(462,-43)(2,5){80}% % bond 3 to 2 (b) + \Put@Line(543,157)(-5,2){225}% % bond 2 to 1 (a) + \Put@Line(318,247)(-5,-1){237}% % bond 1 to 6 (f) + \Put@Line(80,200)(-2,-5){80}% % bond 6 to 5 (e) + \Put@Line(318,247)(-2,5){80}% % back part of bridge (g) + {\iffrontthicktothin\thinlines\else\thicklines\fi%2013/06/24 + \molfronttrue + \Put@Line(0,0)(5,1){237}% % bond 5 to 4 (d) + \Put@Line(237,47)(5,-2){225}% % bond 4 to 3 (c) + {\def\thinLineWidth{5pt}\BackGroundColor% front-to-back crossing2013/06/24-07/23 + \thinlines% % + \Put@Line(237,200)(0,1){80}}% % front-to-back crossing2013/06/24-07/23 + \Put@Line(237,47)(0,1){400}% % front part of bridge (h) + }% +% inner double bond +\@tfor\member:=#1\do{% +\if\member r%no endcyclic bonds +\else \if\member a%%%% + \Put@Line(513,127)(-5,2){180}% % bond 2 to 1 +\else \if\member b%%%% + \Put@Line(446,-3)(2,5){60}% % bond 3 to 2 +\else \if\member c%%%% + \Put@Line(267,77)(5,-2){180}% % bond 4 to 3 +\else \if\member d%%%% + \Put@Line(40,42)(5,1){180}% % double bond 5 to 4 +\else \if\member e%%% + \Put@Line(100,180)(-2,-5){60}% % bond 6 to 5 +\else \if\member f% + \Put@Line(288,207)(-5,-1){180}% % bond 1 to 6 +\else \if\member g% + \Put@Line(288,260)(-2,5){40}% % back part of bridge (g) +\else \if\member h% + \Put@Line(257,77)(0,1){290}% % front part of bridge (h) +\fi\fi\fi\fi\fi\fi\fi\fi\fi}% +% +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa%0 omit + \or\setBScolor{\@borna}% subst. on 1 +% \@borna% subst. on 1 + \or\setBScolor{\Put@Direct(543,157){\@bornb}}% subst. on 2 +% \Put@Direct(543,157){\@bornb}% subst. on 2 + \or\setBScolor{\Put@Direct(462,-43){\@bornc}}% subst. on 3 +% \Put@Direct(462,-43){\@bornc}% subst. on 3 + \or\setBScolor{\@bornd}% subst. on 4 +% \@bornd% subst. on 4 + \or\setBScolor{\Put@Direct(0,0){\@borne}}% subst. on 5 +% \Put@Direct(0,0){\@borne}% subst. on 5 + \or\setBScolor{\Put@Direct(80,200){\@bornf}}% subst. on 6 +% \Put@Direct(80,200){\@bornf}% subst. on 6 + \or\setBScolor{\Put@Direct(237,440){\@borng}}% subst. on 7 +% \Put@Direct(237,440){\@borng}% subst. on 7 +\fi%end of ifcase +\fi\fi% +}% +\end{ShiftPicEnvB}% +\iniatom\iniflag}% %end of \bornane macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The command |\ylbornaneposition| is to obtain the shift values +% |\@ylii| and |\@yli| which are used for shifting the standard +% point of a substituent. +% \changes{v1.02}{1998/10/23}{New ommands for setting substituents} +% +% \begin{macro}{\ylbornaneposition} +% \begin{macrocode} +\def\ylbornaneposition#1{% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpa%0 omit + \or\gdef\@ylii{-318}\gdef\@yli{-247}\global\@ylswtrue% subst. on 1 + \or\gdef\@ylii{-543}\gdef\@yli{-157}\global\@ylswtrue% subst. on 2 + \or\gdef\@ylii{-462}\gdef\@yli{43}\global\@ylswtrue% subst. on 3 + \or\gdef\@ylii{-237}\gdef\@yli{-47}\global\@ylswtrue% subst. on 4 + \or\gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% subst. on 5 + \or\gdef\@ylii{-80}\gdef\@yli{-200}\global\@ylswtrue% subst. on 6 + \or\gdef\@ylii{-237}\gdef\@yli{-440}\global\@ylswtrue% subst. on 7 +\fi%end of ifcase +\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% \section{Adamantanes} +% +% \subsection{Vertical drawing} +% +% The macros |\@adamanea| to |\@adamanej| are used to +% set substituents on each edge of an adamantane skeleton +% drawn by the |\adamantane| commands. +% \changes{v1.02}{1998/10/24}{The macros \cs{@adamanea} to \cs{@adamanej} +% are separated from the original definition of \cs{adamantane}.} +% +% \begin{macro}{\@adamanea} +% \begin{macro}{\@adamaneb} +% \begin{macro}{\@adamanec} +% \begin{macro}{\@adamaned} +% \begin{macro}{\@adamanee} +% \begin{macro}{\@adamanef} +% \begin{macro}{\@adamaneg} +% \begin{macro}{\@adamaneh} +% \begin{macro}{\@adamanei} +% \begin{macro}{\@adamanej} +% \changes{v1.02}{1998/10/24}{A new command for setting substituents} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 1 % +% %%%%%%%%%%%%%%% +\def\@adamanea{% + \yl@xdiff=12 + \yl@ydiff=21 + \Put@Direct(-360,720){\hbox to0pt{\hss \@memberb}}% %atom 1 + \if\@tmpb a% + \Put@Line(-240,660)(-4,3){108}% %bond 1 + \else \ifx\@tmpb\empty% + \Put@Line(-240,660)(-4,3){108}% %bond 1 + \fi\fi}% +% \end{macrocode} +% +% \changes{v1.02}{1998/10/24}{A new command for setting substituents} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 2 % +% %%%%%%%%%%%%%%% +\def\@adamaneb{% + \if\@tmpb a% + \yl@xdiff=6 + \yl@ydiff=-16 + \Put@Line(0,780)(1,4){26}% %bond 2-ax + \Put@Direct(20,900){\hbox to0pt{\@memberb \hss}}% %atom 2-ax + \else \if\@tmpb b% + \yl@xdiff=-6 + \yl@ydiff=-16 + \Put@Line(0,780)(-1,4){26}% %bond 2-eq + \Put@Direct(-20,900){\hbox to0pt{\hss \@memberb}}% %atom 2-eq + \else \ifx\@tmpb\empty% + \yl@xdiff=42 + \yl@ydiff=-22 + \Put@Direct(-42,910){\hbox to0pt{\hss \@memberb}}% %atom 2 + \Put@Line(0,780)(0,1){108}% %bond 2 + \else \if\@tmpb D% + \yl@xdiff=42 + \yl@ydiff=-22 + \putlratom{-42}{910}{\@memberb}% %atom 2 + \Put@Line(-12,780)(0,1){108}% %double bond 2 + \Put@Line(12,780)(0,1){108}% %double bond 2 + \fi\fi\fi\fi} +% \end{macrocode} +% +% \changes{v1.02}{1998/10/24}{A new command for setting substituents} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 3 % +% %%%%%%%%%%%%%%% +\def\@adamanec{% + \yl@xdiff=-12 + \yl@ydiff=21 + \Put@Direct(360,720){\hbox to0pt{\@memberb \hss}}% %atom 3 +% \if\@tmpb S% + \if\@tmpb a%1998/10/24 by SF + \Put@Line(240,660)(4,3){108}% %bond 3 + \else \ifx\@tmpb\empty% + \Put@Line(240,660)(4,3){108}% %bond 3 + \fi\fi} +% \end{macrocode} +% +% \changes{v1.02}{1998/10/24}{A new command for setting substituents} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 4 % +% %%%%%%%%%%%%%%% +\def\@adamaned{% + \if\@tmpb a% + \yl@xdiff=-17 + \yl@ydiff=33 + \Put@Line(300,420)(4,-3){103}% %bond 4-ax + \Put@Direct(420,310){\hbox to0pt{\@memberb \hss}}% %atom 4-ax + \else \if\@tmpb b% + \yl@xdiff=26 + \yl@ydiff=-26 + \Put@Line(300,420)(1,4){26}% %bond 4-eq + \Put@Direct(300,540){\hbox to0pt{\@memberb \hss}}% %atom 4-eq + \else \ifx\@tmpb\empty% + \yl@xdiff=-17 + \yl@ydiff=33 + \Put@Line(300,420)(4,-3){103}% %bond 4 + \Put@Direct(420,310){\hbox to0pt{\@memberb \hss}}% %atom 4 + \else \if\@tmpb D% + \yl@xdiff=-17 + \yl@ydiff=33 + \Put@Line(296,432)(5,-3){103}% %double bond 4 + \Put@Line(292,408)(5,-3){103}% %double bond 4 + \Put@Direct(420,310){\hbox to0pt{\@memberb \hss}}% %atom 4 + \fi\fi\fi\fi} +% \end{macrocode} +% +% \changes{v1.02}{1998/10/24}{A new command for setting substituents} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 5 % +% %%%%%%%%%%%%%%% +\def\@adamanee{% + \yl@xdiff=20 + \yl@ydiff=110 +% \if\@tmpb S% + \if\@tmpb a%1998/10/24 by SF + \Put@Line(60,240)(1,-5){30}% %bond 5 + \Put@Direct(70,-20){\hbox to0pt{\@memberb \hss}}% %atom 5 + \else \ifx\@tmpb\empty% + \Put@Line(60,240)(1,-5){30}% %bond 5 + \Put@Direct(70,-20){\hbox to0pt{\@memberb \hss}}% %atom 5 + \fi\fi} +% \end{macrocode} +% +% \changes{v1.02}{1998/10/24}{A new command for setting substituents} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 6 % +% %%%%%%%%%%%%%%% +\def\@adamanef{% + \if\@tmpb a% + \yl@xdiff=33 + \yl@ydiff=103 + \Put@Line(0,0)(4,-3){103}% %bond 6-ax + \Put@Direct(70,-180){\hbox to0pt{\@memberb \hss}}% %atom 6-ax + \else \if\@tmpb b% + \yl@xdiff=-33 + \yl@ydiff=103 + \Put@Line(0,0)(-4,-3){103}% %bond 6-eq + \Put@Direct(-70,-180){\hbox to0pt{\hss \@memberb}}% %atom 6-eq + \else \ifx\@tmpb\empty% + \yl@xdiff=22 + \yl@ydiff=94 + \Put@Line(0,0)(0,-1){108}% %bond 6 + \Put@Direct(-22,-202){\hbox to0pt{\hss \@memberb}}% %atom 6 + \else \if\@tmpb D% + \yl@xdiff=42 + \yl@ydiff=94 + \Put@Line(-12,0)(0,-1){108}% %double bond 6 + \Put@Line(12,0)(0,-1){108}% %double bond 6 + \putlratom{-42}{-202}{\@memberb}% %atom 6 + \fi\fi\fi\fi} +% \end{macrocode} +% +% \changes{v1.02}{1998/10/24}{A new command for setting substituents} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 7 % +% %%%%%%%%%%%%%%% +\def\@adamaneg{% + \yl@xdiff=-20 + \yl@ydiff=110 +% \if\@tmpb S% + \if\@tmpb a%1998/10/24 by SF + \Put@Line(-60,240)(-1,-5){30}% %bond 7 + \Put@Direct(-70,-20){\hbox to0pt{\hss \@memberb}}% %atom 7 + \else \ifx\@tmpb\empty% + \Put@Line(-60,240)(-1,-5){30}% %bond 7 + \Put@Direct(-70,-20){\hbox to0pt{\hss \@memberb}}% %atom 7-eq + \fi\fi} +% \end{macrocode} +% +% \changes{v1.02}{1998/10/24}{A new command for setting substituents} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 8 % +% %%%%%%%%%%%%%%% +\def\@adamaneh{% + \if\@tmpb a% + \yl@xdiff=17 + \yl@ydiff=33 + \Put@Line(-300,420)(-4,-3){103}% %bond 8-ax + \Put@Direct(-420,310){\hbox to0pt{\hss \@memberb}}% %atom 8-ax + \else \if\@tmpb b% + \yl@xdiff=-26 + \yl@ydiff=-16 + \Put@Line(-300,420)(-1,4){26}% %bond 8-eq + \Put@Direct(-300,540){\hbox to0pt{\hss \@memberb}}% %atom 8-eq + \else \ifx\@tmpb\empty% + \yl@xdiff=17 + \yl@ydiff=33 + \Put@Line(-300,420)(-4,-3){103}% %bond 8 + \Put@Direct(-420,310){\hbox to0pt{\hss \@memberb}}% %atom 8 + \else \if\@tmpb D% + \yl@xdiff=17 + \yl@ydiff=50 + \Put@Line(-300,432)(-5,-3){103}% %double bond 8 + \Put@Line(-303,408)(-5,-3){103}% %double bond 8 + \Put@Direct(-420,310){\hbox to0pt{\hss \@memberb}}% %atom 8 + \fi\fi\fi\fi} +% \end{macrocode} +% +% \changes{v1.02}{1998/10/24}{A new command for setting substituents} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 9 % +% %%%%%%%%%%%%%%% +\def\@adamanei{% + \if\@tmpb a% + \yl@xdiff=-43 + \yl@ydiff=93 + \Put@Line(-180,420)(-4,-3){103}% %bond 9-ax + \Put@Direct(-240,250){\hbox to0pt{\hss \@memberb}}% %atom 9-ax + \else \if\@tmpb b% + \yl@xdiff=26 + \yl@ydiff=-16 + \Put@Line(-180,420)(1,4){26}% %bond 9-eq + \Put@Direct(-180,540){\hbox to0pt{\@memberb \hss}}% %atom 9-eq + \else \ifx\@tmpb\empty% + \yl@xdiff=17 + \yl@ydiff=93 + \Put@Line(-180,420)(-4,-3){103}% %bond 9 + \Put@Direct(-300,250){\hbox to0pt{\hss \@memberb}}% %atom 9 + \else \if\@tmpb D% + \yl@xdiff=17 + \yl@ydiff=113 + \Put@Line(-183,432)(-5,-3){103}% %double bond 9 + \Put@Line(-180,408)(-5,-3){103}% %double bond 9 + \Put@Direct(-300,250){\hbox to0pt{\hss \@memberb}}% %atom 9 + \fi\fi\fi\fi} +% \end{macrocode} +% +% \changes{v1.02}{1998/10/24}{A new command for setting substituents} +% \begin{macrocode} +% %%%%%%%%%%%%%%%% +% % subst. on 10 % +% %%%%%%%%%%%%%%%% +\def\@adamanej{% + \if\@tmpb a% + \yl@xdiff=43 + \yl@ydiff=92 + \Put@Line(180,420)(4,-3){103}% %bond 10-ax + \Put@Direct(240,250){\hbox to0pt{\@memberb \hss}}% %atom 10-ax + \else \if\@tmpb b% + \yl@xdiff=-26 + \yl@ydiff=-16 + \Put@Line(180,420)(-1,4){26}% %bond 10-eq + \Put@Direct(180,540){\hbox to0pt{\hss \@memberb}}% %atom 10-eq + \else \ifx\@tmpb\empty% + \yl@xdiff=43 + \yl@ydiff=92 + \Put@Line(180,420)(4,-3){103}% %bond 10 + \Put@Direct(240,250){\hbox to0pt{\@memberb \hss}}% %atom 10 + \else \if\@tmpb D% + \yl@xdiff=3 + \yl@ydiff=112 + \Put@Line(176,432)(5,-3){103}% %double bond 10 + \Put@Line(172,408)(5,-3){103}% %double bond 10 + \Put@Direct(280,250){\hbox to0pt{\@memberb \hss}}% %atom 10 + \fi\fi\fi\fi} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The stereo-type skeleton of adamantane is selected +% to have the following specification. The |\adamantane| +% command prints a vertical-type formula in which two bridge carbons +% are placed at the top and the bottom. +% +% \begin{verbatim} +% ************************************************* +% * For preparing adamantane derivatives * +% * with 4 substituents on bridgehead positions * +% * (1, 3, 5 and 7) * +% * with 12 substituents on bridge positions * +% * (2, 4, 6, 8, 9, 10) * +% ************************************************* +% \end{verbatim} +% +% The macro |\adamantane| has an argument |SUBSLIST| as well as an optional +% argument |BONDLIST|. +% +% \begin{verbatim} +% \adamantane[BONDLIST]{SUBSLIST} +% \end{verbatim} +% +% The adamantane skeleton scarcely takes an inner (endcyclic) double bond. +% Hence we have +% \begin{verbatim} +% BONDLIST: not effective +% \end{verbatim} +% +% The |SUBSLIST| argument takes the standard format of \XyMTeX{}, in which +% more substitution descriptors are separated from each other +% by a semicolon. +% \begin{verbatim} +% +% SUBSLIST: list of substituents (max 10 substitution positions) +% +% for n = 1, 3, 5, and 7 (bridgeheads) +% +% n or na : exocyclic single bond at n-atom +% +% for n = 2, 4, 6, 8, 9, and 10 (bridges) +% +% na : exocyclic single bond at n-atom (axial) +% nb : exocyclic single bond at n-atom (equatorial) +% nD : exocyclic double bond at n-atom (2 and 6) +% +% \end{verbatim} +% +% For numbers larger than 9 (two digits), you should designate +% the |SUBSLIST| as, e.g., +% \begin{verbatim} +% {{10}a}==Cl; ... +% \end{verbatim} +% +% The definition of |\@adamantane| uses a picture environment, in which +% both bonds are substituents are put directly. +% \changes{v1.02}{1998/10/31}{Adding \cs{yladamanposition}, \cs{if@ylsw}, +% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v5.00}{2010/10/01}{For bond coloring} +% \changes{v5.01}{2013/06/24}{adamantane front-to-back crossing} +% +% \begin{macro}{\@adamantane} +% \begin{macro}{\adamantane} +% \begin{macrocode} +% \changes{v1.02}{1998/10/24}{The macros \cs{@adamanea} to \cs{@adamanej} +% are separated from the original definition of \cs{adamantane}.} +\def\adamantane{\@ifnextchar[{\@mantane}{\@damantane[Z]}} +\def\@damantane[#1]#2{% +\@reset@ylsw% +\yladamanposition{#2}% +\def\@@ylii{0}\def\@@yli{0}% +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(1100,1300)(-550,-300){adamantane}% +(550,300)%2002/4/30 by S. Fujita +%bonds for an adamantane skeleton + \Put@Line(0,0)(-1,4){60}% %bond 6-7 + \Put@Line(0,780)(2,-1){240}% %bond 2-3 + \Put@Line(0,780)(-2,-1){240}% %bond 2-1 + \Put@Line(-60,240)(-4,3){240}% %bond 7-8 + \Put@Line(-300,420)(1,4){60}% %bond 8-1 + \Put@Line(240,660)(-1,-4){60}% %bond 3-10 + \Put@Line(-60,240)(4,3){240}% %bond 10-7 +{\iffrontthicktothin\thinlines\else\thicklines\fi%2013/06/24 + \molfronttrue%added for v4.02 (2004/12/20) + \Put@Line(300,420)(-1,4){60}% %bond 4-3 + \Put@Line(-240,660)(1,-4){60}% %bond 1-9 + \Put@Line(0,0)(1,4){60}% %bond 6-5 + \Put@Line(60,240)(4,3){240}% %bond 5-4 + {\def\thinLineWidth{5pt}\BackGroundColor% % front-to-back crossing2013/06/24-07/23 + \thinlines% % + \Put@Line(40,255)(-4,3){80}}% % front-to-back crossing2013/06/24-07/23 + \Put@Line(60,240)(-4,3){240}% %bond 5-9 +}% +%substituents +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}\relax% +\ifx\@memberb\@yl\else +\ifcase\@tmpa%0 omit +\or\setBScolor{\@adamanea}% subst. on 1 +%\@adamanea% subst. on 1 +\or\setBScolor{\@adamaneb}% subst. on 2 +%\@adamaneb% subst. on 2 +\or\setBScolor{\@adamanec}% subst. on 3 +%\@adamanec% subst. on 3 +\or\setBScolor{\@adamaned}% subst. on 4 +%\@adamaned% subst. on 4 +\or\setBScolor{\@adamanee}% subst. on 5 +%\@adamanee% subst. on 5 +\or\setBScolor{\@adamanef}% subst. on 6 +%\@adamanef% subst. on 6 +\or\setBScolor{\@adamaneg}% subst. on 7 +%\@adamaneg% subst. on 7 +\or\setBScolor{\@adamaneh}% subst. on 8 +%\@adamaneh% subst. on 8 +\or\setBScolor{\@adamanei}% subst. on 9 +%\@adamanei% subst. on 9 +\or\setBScolor{\@adamanej}% subst. on 10 +%\@adamanej% subst. on 10 +\fi%the end of ifcase +\fi\fi}% +\end{ShiftPicEnvB}% +}% %end of \adamantane macro% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The command |\yladamanposition| is to obtain the shift values +% |\@ylii| and |\@yli| which are used for shifting the standard +% point of a substituent. +% \changes{v1.02}{1998/10/23}{New commands for setting substituents} +% +% \begin{macro}{\yladamanposition} +% \begin{macrocode} +\def\yladamanposition#1{% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpa%0 omit + \or\gdef\@ylii{240}\gdef\@yli{-660}\global\@ylswtrue% subst. on 1 + \or\gdef\@ylii{0}\gdef\@yli{-780}\global\@ylswtrue% subst. on 2 + \or\gdef\@ylii{-240}\gdef\@yli{-660}\global\@ylswtrue% subst. on 3 + \or\gdef\@ylii{-300}\gdef\@yli{-420}\global\@ylswtrue% subst. on 4 + \or\gdef\@ylii{-60}\gdef\@yli{-240}\global\@ylswtrue% subst. on 5 + \or\gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% subst. on 6 + \or\gdef\@ylii{60}\gdef\@yli{-240}\global\@ylswtrue% subst. on 7 + \or\gdef\@ylii{300}\gdef\@yli{-420}\global\@ylswtrue% subst. on 8 + \or\gdef\@ylii{180}\gdef\@yli{-420}\global\@ylswtrue% subst. on 9 + \or\gdef\@ylii{-180}\gdef\@yli{-420}\global\@ylswtrue% subst. on 10 +\fi%end of ifcase +\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% \subsection{Horizontal drawing} +% +% The stereo-type skeleton of adamantane is selected +% to have the following specification. The |\hadamantane| +% command prints a horizontal-type formula in which one bridge-head carbon +% is put at the top position and a chair-form cyclohexane moiety is +% placed at the bottom position. +% +% \begin{verbatim} +% ******************************************** +% * adamantane derivatives (horizontal type) * +% ******************************************** +% The following numbering is adopted in this macro. +% +% 1 +% h // ` +% //i ` a +% 89 ` +% g|| 2 +% ||j | b +% f 7| l k 3 +% * | ` 10 * +% 6 * 5 * c +% e d` 4 +% \end{verbatim} +% +% \begin{verbatim} +% ************************************************* +% * For preparing adamantane derivatives * +% * with 4 substituents on bridgehead positions * +% * (1, 3, 5 and 7) * +% * with 12 substituents on bridge positions * +% * (2, 4, 6, 8, 9, 10) * +% ************************************************* +% \end{verbatim} +% +% The macro |\hadamantane| has an argument |SUBSLIST| as well as an optional +% argument |BONDLIST|. +% +% \begin{verbatim} +% \hadamantane[BONDLIST]{SUBSLIST} +% \end{verbatim} +% +% The adamantane skeleton scarcely takes an inner (endcyclic) double bond. +% However, we can designate |BONDLIST|. (This point is different from the +% specification of the |\adamantane| command. +% +% \begin{verbatim} +% +% BONDLIST = +% +% none : adamantane skeleton +% a : 1,2-double bond +% b : 2,3-double bond +% c : 3,4-double bond +% d : 4,5-double bond +% e : 5,6-double bond +% f : 6,7-double bond +% g : 7,8-double bond +% h : 8,1-double bond +% i : 9,1-double bond +% j : 5,9-double bond +% k : 3,10-double bond +% l : 7,10-double bond +% +% \end{verbatim} +% +% The |SUBSLIST| argument takes the standard format of \XyMTeX{}, in which +% more substitution descriptors are separated from each other +% by a semicolon. +% \begin{verbatim} +% +% SUBSLIST: list of substituents (max 10 substitution positions) +% +% for n = 1, 3, 5, and 7 (bridgeheads) +% +% n or na : exocyclic single bond at n-atom +% +% for n = 2, 4, 6, 8, 9, and 10 (bridges) +% +% na : exocyclic single bond at n-atom (axial) +% nb : exocyclic single bond at n-atom (equatorial) +% nD : exocyclic double bond at n-atom (2 and 6) +% +% \end{verbatim} +% +% Moreover, bond modifieer used for chair-form cyclohexanes +% such as $n$Sa and $n$Se (see above) can be also used in the |SUBSLIST| +% of the |\hdadamantane| command. +% +% For numbers larger than 9 (two digits), you should designate +% the |SUBSLIST| as, e.g., +% \begin{verbatim} +% {{10}a}==Cl; ... +% \end{verbatim} +% +% The definition of |\@hadamantane| uses a picture environment, in which +% bonds are put directly, while subsituents are typset by using +% the macro |\@chairiI| to |\@chairX| defined below. +% \changes{v1.02}{1998/10/31}{Adding \cs{ylhadamanposition}, \cs{if@ylsw}, +% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v5.00}{2010/10/01}{For bond coloring} +% \changes{v5.01}{2013/06/24}{hadamantane front-to-back crossing} +% +% \begin{macro}{\@hadamantane} +% \begin{macro}{\hadamantane} +% \begin{macrocode} +% ************************* +% * input of basic macros * +% ************************* +\def\hadamantane{\@ifnextchar[{\@hadamantane}{\@hadamantane[H]}} +\def\@hadamantane[#1]#2{% +\@reset@ylsw% +\ylhadamanposition{#2}% +\def\@@ylii{0}\def\@@yli{0}% +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(1600,1400)(-400,-319){hadamantane}% +(400,319)%2002/4/30 by S. Fujita + \thinlines% + \Put@Line(0,0)(3,4){170}% % bond 6 to 7 + \Put@Line(170,226)(3,-1){403}% % 7 to 10 + \Put@Line(573,91)(3,1){270}% % 10 to 3 +% %%% + \Put@Line(170,226)(0,1){360}% % 7 to 8 + \Put@Line(170,586)(3,1){270}% % 8 to 1 + \Put@Line(843,181)(0,1){360}% % 3 to 2 + \Put@Line(843,541)(-3,1){403}% % 2 to 1 + {\iffrontthicktothin\thinlines\else\thicklines\fi%2013/06/24 + \molfronttrue + \Put@Line(843,181)(-3,-4){170}% % 3 to 4 + \Put@Line(673,-46)(-3,1){403}% % 4 to 5 + \Put@Line(0,0)(3,1){270}% % 6 to 5 +% %%% + {\def\thinLineWidth{5pt}\BackGroundColor% front-to-back crossing2013/06/24-07/23 + \thinlines% % + \Put@Line(270,150)(0,1){80}}% % front-to-back crossing2013/06/24-07/23 + \Put@Line(270,90)(0,1){360}% % 5 to 9 + \Put@Line(270,450)(3,4){170}% % 9 to 1 + }% + \thinlines% +% inner double bonds +\@tfor\member:=#1\do{% +\if\member r%no endocyclic bonds +\else \if\member a% + \Put@Line(450,636)(3,-1){373}% % double bond 1 to 2 +\else \if\member b% + \Put@Line(803,206)(0,1){320}% % 3 to 2 +\else \if\member c%%%a% + \Put@Line(767,139)(-3,-4){110}% % 3 to 4 +\else \if\member d%%%b% + \Put@Line(640,-5)(-3,1){343}% % 4 to 5 +\else \if\member e%%%%c% + \Put@Line(240,111)(-3,-1){190}% % 5 to 6 +\else \if\member f%%%d% + \Put@Line(63,40)(3,4){110}% % 6 to 7 +\else \if\member g% + \Put@Line(200,246)(0,1){320}% % 7 to 8 +\else \if\member h% + \Put@Line(400,626)(-3,-1){190}% % 8 to 1 +\else \if\member i% + \Put@Line(450,636)(-3,-4){150}% % 9 to 1 +\else \if\member j% + \Put@Line(300,110)(0,1){320}% % 5 to 9 +\else \if\member k%%%f% + \Put@Line(768,131)(-3,-1){170}% % 3 to 10 +\else \if\member l% + \Put@Line(182,187)(3,-1){343}% % 7 to 10 +\fi\fi\fi\fi\fi\fi% +\fi\fi\fi\fi\fi\fi\fi}% +% % +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa% %0 omit + \or\setBScolor{\Put@Direct(440,676){\@chairiI}}% %subst. on 1%%%9 +% \Put@Direct(440,676){\@chairiI}% %subst. on 1%%%9 + \or\setBScolor{\Put@Direct(843,541){\@chairiII}}% %subst. on 2%%10 +% \Put@Direct(843,541){\@chairiII}% %subst. on 2%%10 + \or\setBScolor{\@chairiIII}% %subst. on 3%%%4 +% \@chairiIII% %subst. on 3%%%4 + \or\setBScolor{\@chairiIV}% %subst. on 4%%%3 +% \@chairiIV% %subst. on 4%%%3 + \or\setBScolor{\@chairiV}% %subst. on 5%%%2 +% \@chairiV% %subst. on 5%%%2 + \or + \setBScolor{\@chairiVI}% %subst. on 6%%%1 +% \@chairiVI% %subst. on 6%%%1 + \or\setBScolor{\@chairiVII}% %subst. on 7%%%6 +% \@chairiVII% %subst. on 7%%%6 + \or\setBScolor{\Put@Direct(170,586){\@chairiVIII}}%subst. on 8%%%8 +% \Put@Direct(170,586){\@chairiVIII}%subst. on 8%%%8 + \or\setBScolor{\Put@Direct(270,450){\@chairiIX}}% %subst. on 9%%%7 +% \Put@Direct(270,450){\@chairiIX}% %subst. on 9%%%7 + \or\setBScolor{\@chairiX}% %subst. on 10%%5 +% \@chairiX% %subst. on 10%%5 +\fi %end of ifcase +\fi\fi% +}% +\end{ShiftPicEnvB}% +}% %end of \hadamantane macro +% End of addition 1994/03/05 SF +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The command |\ylhadamanposition| is to obtain the shift values +% |\@ylii| and |\@yli| which are used for shifting the standard +% point of a substituent. +% \changes{v1.02}{1998/10/23}{New commands for setting substituents} +% +% \begin{macro}{\ylhadamanposition} +% \begin{macrocode} +\def\ylhadamanposition#1{% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpa%0 omit + \or\gdef\@ylii{-440}\gdef\@yli{-676}\global\@ylswtrue% subst. on 1 + \or\gdef\@ylii{-843}\gdef\@yli{-541}\global\@ylswtrue% subst. on 2 + \or\gdef\@ylii{-843}\gdef\@yli{-181}\global\@ylswtrue% subst. on 3 + \or\gdef\@ylii{-673}\gdef\@yli{46}\global\@ylswtrue% subst. on 4 + \or\gdef\@ylii{-270}\gdef\@yli{-90}\global\@ylswtrue% subst. on 5 + \or\gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% subst. on 6 + \or\gdef\@ylii{-170}\gdef\@yli{-226}\global\@ylswtrue% subst. on 7 + \or\gdef\@ylii{-170}\gdef\@yli{-586}\global\@ylswtrue% subst. on 8 + \or\gdef\@ylii{-270}\gdef\@yli{-450}\global\@ylswtrue% subst. on 9 + \or\gdef\@ylii{-573}\gdef\@yli{-91}\global\@ylswtrue% subst. on 10 +\fi%end of ifcase +\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% Hereafter, the definitions of the commands |\@chairiI| to |\@chairiX| +% are described. Each of the commands can treat $n$a-type bond modifiers +% as well as $n$Sa-type bond modifiers. +% +% \begin{macro}{\@chairiVI} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \begin{macrocode} +% ******************************************************** +% * treatment of the chair form (inverse) of cyclohexane * +% * added March 05, 1994 by Shinsaku Fujita * +% ******************************************************** +% %%%%%%%%%%%%%%% +% % subst. on 6 % +% %%%%%%%%%%%%%%% +\def\@chairiVI{% + \if\@tmpb a%single bond + \yl@xdiff=42 + \yl@ydiff=92 + \Put@Line(0,0)(0,-1){168}% single bond at 6 axial + \putlratom{-42}{-260}{\@memberb}% left & right type + \else\if\@tmpb b%single bond + \yl@xdiff=16 + \yl@ydiff=36 + \Put@Line(0,0)(-5,3){144}% single bond at 6 equatorial + \putlatom{-160}{50}{\@memberb}% left type + \else\if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=10 + \yl@ydiff=90 + \Put@Line(0,0)(-1,-1){120}% single bond at 6 + \putlatom{-130}{-210}{\@memberb}% left type + \else\if\@tmpc a%(a) axial + \yl@xdiff=42 + \yl@ydiff=92 + \Put@Line(0,0)(0,-1){168}% single bond at 6 axial + \putlratom{-42}{-260}{\@memberb}% left & right type + \else\if\@tmpc e%(e) beta + \yl@xdiff=16 + \yl@ydiff=36 + \Put@Line(0,0)(-5,3){144}% single bond at 6 equatorial + \putlatom{-160}{50}{\@memberb}% left type + \fi\fi\fi% + \else \if\@tmpb D%double bond + \yl@xdiff=10 + \yl@ydiff=90 + \putlatom{-130}{-210}{\@memberb}% left type + \Put@Line(-10,10)(-1,-1){120}% double bond at 6 + \Put@Line(10,-10)(-1,-1){120}% double bond at 6 + \else% + \yl@xdiff=10 + \yl@ydiff=90 + \putlatom{-130}{-210}{\@memberb}% left type + \Put@Line(0,0)(-1,-1){120}% single bond at 6 + \fi\fi\fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@chairiVII} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 7 % +% %%%%%%%%%%%%%%% +\def\@chairiVII{% + \if\@tmpb a%single bond + \yl@xdiff=26 + \yl@ydiff=46 + \Put@Line(170,226)(-5,-3){144}% single bond at 7 equatorial + \putlatom{10}{94}{\@memberb}% left type + \else\ifx\@tmpb\empty%single bond + \yl@xdiff=26 + \yl@ydiff=46 + \Put@Line(170,226)(-5,-3){144}% single bond at 7 equatorial + \putlatom{10}{94}{\@memberb}% left type + \else\if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=10 + \yl@ydiff=30 + \Put@Line(170,226)(-1,1){120}% single bond at 7 + \putratom{40}{316}{\@memberb}% left type + \else\if\@tmpc a%(a) axial + \yl@xdiff=32 + \yl@ydiff=12 + \Put@Line(170,226)(0,1){168}% single bond at 7 axial + \putlratom{138}{406}{\@memberb}% left & right type + \else\if\@tmpc e%(e) beta + \yl@xdiff=26 + \yl@ydiff=46 + \Put@Line(170,226)(-5,-3){144}% single bond at 7 equatorial + \putlatom{10}{94}{\@memberb}% left type + \fi\fi\fi% + \else \if\@tmpb D%double bond + \yl@xdiff=10 + \yl@ydiff=30 + \putlatom{40}{316}{\@memberb}% left type + \Put@Line(160,216)(-1,1){120}% double bond at 7 + \Put@Line(180,236)(-1,1){120}% double bond at 7 + \else% + \yl@xdiff=10 + \yl@ydiff=30 + \putlatom{40}{316}{\@memberb}% left type + \Put@Line(170,226)(-1,1){120}% single bond at 7 + \fi\fi\fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@chairiX} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \begin{macrocode} +% %%%%%%%%%%%%%%%% +% % subst. on 10 % +% %%%%%%%%%%%%%%%% +\def\@chairiX{% + \if\@tmpb a%single bond + \yl@xdiff=40 + \yl@ydiff=104 + \Put@Line(573,91)(0,-1){168}% single bond at 5 axial + \putlratom{533}{-181}{\@memberb}% left type + \else\if\@tmpb b%single bond + \yl@xdiff=-36 + \yl@ydiff=3 + \Put@Line(573,91)(5,3){144}% single bond at 5 equatorial + \putlatom{753}{180}{\@memberb}% left type + \else\if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=-10 + \yl@ydiff=56 + \Put@Line(573,91)(5,-4){170}% single bond at 5 + \putratom{753}{-101}{\@memberb}% right type + \else\if\@tmpc a%(a) axial + \yl@xdiff=40 + \yl@ydiff=104 + \Put@Line(573,91)(0,-1){168}% single bond at 5 axial + \putlratom{533}{-181}{\@memberb}% left type + \else\if\@tmpc e%(e) beta + \yl@xdiff=-36 + \yl@ydiff=3 + \Put@Line(573,91)(5,3){144}% single bond at 5 equatorial + \putlatom{753}{180}{\@memberb}% left type + \fi\fi\fi% + \else \if\@tmpb D%double bond + \yl@xdiff=10 + \yl@ydiff=86 + \putratom{733}{-141}{\@memberb}% right type + \Put@Line(563,83)(5,-4){170}% double bond at 5 + \Put@Line(583,99)(5,-4){170}% double bond at 5 + \else% + \yl@xdiff=-10 + \yl@ydiff=76 + \Put@Line(573,91)(5,-4){170}% single bond at 5 + \putratom{753}{-121}{\@memberb}% right type + \fi\fi\fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@chairiIII} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 3 % +% %%%%%%%%%%%%%%% +\def\@chairiIII{% + \if\@tmpb a%single bond + \yl@xdiff=-16 + \yl@ydiff=64 + \Put@Line(843,181)(5,-3){144}% single bond at 3 equatorial + \putratom{1003}{31}{\@memberb}% right type + \else\ifx\@tmpb\empty%single bond + \yl@xdiff=-16 + \yl@ydiff=64 + \Put@Line(843,181)(5,-3){144}% single bond at 3 equatorial + \putratom{1003}{31}{\@memberb}% right type + \else\if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=10 + \yl@ydiff=30 + \Put@Line(843,181)(1,1){120}% single bond at 3 + \putratom{953}{271}{\@memberb}% right type + \else\if\@tmpc a%(a) axial + \yl@xdiff=42 + \yl@ydiff=11 + \Put@Line(843,181)(0,1){168}% single bond at 3 axial + \putlratom{801}{360}{\@memberb}% left & right type + \else\if\@tmpc e%(e) beta + \yl@xdiff=-16 + \yl@ydiff=64 + \Put@Line(843,181)(5,-3){144}% single bond at 3 equatorial + \putratom{1003}{31}{\@memberb}% right type + \fi\fi\fi% + \else \if\@tmpb D%double bond + \yl@xdiff=0 + \yl@ydiff=30 + \putratom{953}{271}{\@memberb}% right type + \Put@Line(833,191)(1,1){120}% double bond at 3 + \Put@Line(853,171)(1,1){120}% double bond at 3 + \else% + \yl@xdiff=10 + \yl@ydiff=30 + \Put@Line(843,181)(1,1){120}% single bond at 3 + \putratom{953}{271}{\@memberb}% right type + \fi\fi\fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@chairiIV} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 4 % +% %%%%%%%%%%%%%%% +\def\@chairiIV{% + \if\@tmpb a%single bond + \yl@xdiff=40 + \yl@ydiff=104 + \Put@Line(673,-46)(0,-1){168}% single bond at 4 axial + \putlratom{633}{-318}{\@memberb}% left & right type + \else\if\@tmpb b%single bond + \yl@xdiff=-6 + \yl@ydiff=17 + \Put@Line(673,-46)(5,3){144}% single bond at 4 equatorial + \putratom{823}{23}{\@memberb}% right type + \else\if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=-10 + \yl@ydiff=92 + \Put@Line(673,-46)(1,-1){120}% single bond at 4 + \putratom{803}{-258}{\@memberb}% right type + \else\if\@tmpc a%(a) axial + \yl@xdiff=40 + \yl@ydiff=104 + \Put@Line(673,-46)(0,-1){168}% single bond at 4 axial + \putlratom{633}{-318}{\@memberb}% left & right type + \else\if\@tmpc e%(e) beta + \yl@xdiff=-6 + \yl@ydiff=17 + \Put@Line(673,-46)(5,3){144}% single bond at 4 equatorial + \putratom{823}{23}{\@memberb}% right type + \fi\fi\fi% + \else \if\@tmpb D%double bond + \yl@xdiff=-10 + \yl@ydiff=92 + \putratom{803}{-258}{\@memberb}% right type + \Put@Line(663,-53)(1,-1){120}% double bond at 4 + \Put@Line(683,-38)(1,-1){120}% double bond at 4 + \else% + \yl@xdiff=-10 + \yl@ydiff=76 + \Put@Line(673,-46)(5,-4){170}% single bond at 4 + \putratom{853}{-258}{\@memberb}% right type + \fi\fi\fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@chairiV} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 5 % +% %%%%%%%%%%%%%%% +\def\@chairiV{% + \if\@tmpb a%single bond + \yl@xdiff=26 + \yl@ydiff=102 + \Put@Line(270,90)(-5,-3){144}% single bond at 5 equatorial + \putratom{100}{-98}{\@memberb}% left type + \else\ifx\@tmpb\empty%single bond + \yl@xdiff=26 + \yl@ydiff=102 + \Put@Line(270,90)(-5,-3){144}% single bond at 5 equatorial + \putratom{100}{-98}{\@memberb}% left type + \else\if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=0 + \yl@ydiff=46 + \Put@Line(270,90)(-5,4){170}% single bond at 5 + \putlatom{100}{180}{\@memberb}% left type + \else\if\@tmpc a%(a) axial + \yl@xdiff=32 + \yl@ydiff=12 + \Put@Line(270,90)(0,1){168}% single bond at 5 axial + \putlratom{238}{270}{\@memberb}% left type + \else\if\@tmpc e%(e) beta + \yl@xdiff=36 + \yl@ydiff=102 + \Put@Line(270,90)(-5,-3){144}% single bond at 5 equatorial + \putratom{100}{-98}{\@memberb}% left type + \fi\fi\fi% + \else \if\@tmpb D%double bond + \yl@xdiff=0 + \yl@ydiff=36 + \putlatom{100}{200}{\@memberb}% left or right type + \Put@Line(260,80)(-5,4){170}% double bond at 5 + \Put@Line(280,100)(-5,4){170}% double bond at 5 + \else% + \yl@xdiff=0 + \yl@ydiff=26 + \putlatom{100}{200}{\@memberb}% left type + \Put@Line(270,90)(-5,4){170}% single bond at 5 + \fi\fi\fi\fi}% +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@chairiI} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 1 % +% %%%%%%%%%%%%%%% +\def\@chairiI{% + \if\@tmpb a%single bond + \yl@xdiff=42 + \yl@ydiff=-10 + \Put@Line(0,0)(0,1){168}% single bond at 1 axial + \putlratom{-42}{178}{\@memberb}% left & right type + \else\ifx\@tmpb\empty% + \yl@xdiff=42 + \yl@ydiff=-10 + \Put@Line(0,0)(0,1){168}% single bond at 1 axial + \putlratom{-42}{178}{\@memberb}% left & right type + \else\if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=42 + \yl@ydiff=-10 + \Put@Line(0,0)(0,1){168}% single bond at 1 axial + \putlratom{-42}{178}{\@memberb}% left & right type + \else\if\@tmpc a%(a) axial + \yl@xdiff=42 + \yl@ydiff=-10 + \Put@Line(0,0)(0,1){168}% single bond at 1 axial + \putlratom{-42}{178}{\@memberb}% left & right type + \else\if\@tmpc e%(e) beta + \yl@xdiff=42 + \yl@ydiff=-10 + \Put@Line(0,0)(0,1){168}% single bond at 1 axial + \putlratom{-42}{178}{\@memberb}% left & right type + \fi\fi\fi% + \else \if\@tmpb D%double bond + \yl@xdiff=42 + \yl@ydiff=-10 + \Put@Line(0,0)(0,1){168}% single bond at 1 axial + \putlratom{-42}{178}{\@memberb}% left & right type + \else% + \yl@xdiff=42 + \yl@ydiff=-10 + \Put@Line(0,0)(0,1){168}% single bond at 1 axial + \putlratom{-42}{178}{\@memberb}% left & right type + \fi\fi\fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@chairiII} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \begin{macrocode} +% %%%%%%%%%%%%%%%% +% % subst. on 2 % +% %%%%%%%%%%%%%%%% +\def\@chairiII{% + \if\@tmpb a%single bond + \yl@xdiff=-10 + \yl@ydiff=13 + \Put@Line(0,0)(3,1){190}% single bond at 6 equatorial + \putratom{200}{50}{\@memberb}% right type + \else\if\@tmpb b%single bond + \yl@xdiff=-10 + \yl@ydiff=0 + \Put@Line(0,0)(3,4){120}% % bond 1 to 6 + \putratom{130}{160}{\@memberb}% left type + \else\if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=-10 + \yl@ydiff=-10 + \Put@Line(0,0)(1,1){120}% single bond at 1 + \putratom{130}{130}{\@memberb}% left type + \else\if\@tmpc a%(a) axial + \yl@xdiff=-10 + \yl@ydiff=0 + \Put@Line(0,0)(3,4){120}% % bond 1 to 6 + \putratom{130}{160}{\@memberb}% left type + \else\if\@tmpc e%(e) beta + \yl@xdiff=-10 + \yl@ydiff=13 + \Put@Line(0,0)(3,1){190}% single bond at 6 equatorial + \putratom{200}{50}{\@memberb}% right type + \fi\fi\fi% + \else \if\@tmpb D%double bond + \yl@xdiff=-10 + \yl@ydiff=-10 + \putratom{130}{130}{\@memberb}% left type + \Put@Line(-10,10)(1,1){120}% double bond at 1 + \Put@Line(10,-10)(1,1){120}% double bond at 1 + \else% + \yl@xdiff=-10 + \yl@ydiff=-10 + \putratom{130}{130}{\@memberb}% left type + \Put@Line(0,0)(1,1){120}% single bond at 1 + \fi\fi\fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@chairigVIII} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 8 % +% %%%%%%%%%%%%%%% +\def\@chairiVIII{% + \if\@tmpb a%single bond + \yl@xdiff=16 + \yl@ydiff=36 + \Put@Line(0,0)(-5,3){144}% single bond at 1 equatorial + \putlatom{-160}{50}{\@memberb}% left type + \else\if\@tmpb b%single bond + \yl@xdiff=-10 + \yl@ydiff=0 + \Put@Line(0,0)(3,4){120}% % bond 1 to 6 + \putratom{130}{160}{\@memberb}% left type + \else\if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=4 + \yl@ydiff=36 + \Put@Line(0,0)(-5,3){144}% single bond at 1 equatorial + \putlatom{-140}{50}{\@memberb}% left type + \else\if\@tmpc e% right-hand + \yl@xdiff=-10 + \yl@ydiff=0 + \Put@Line(0,0)(3,4){120}% % bond 1 to 6 + \putratom{130}{160}{\@memberb}% left type + \else\if\@tmpc a% left-hand + \yl@xdiff=16 + \yl@ydiff=36 + \Put@Line(0,0)(-5,3){144}% single bond at 1 equatorial + \putlatom{-160}{50}{\@memberb}% left type + \fi\fi\fi% + \else \if\@tmpb D%double bond + \yl@xdiff=4 + \yl@ydiff=26 + \putlatom{-140}{60}{\@memberb}% left type + \Put@Line(10,10)(-5,3){144}% single bond at 1 equatorial + \Put@Line(0,-10)(-5,3){144}% single bond at 1 equatorial + \else% + \yl@xdiff=4 + \yl@ydiff=36 + \Put@Line(0,0)(-5,3){144}% single bond at 1 equatorial + \putlatom{-140}{50}{\@memberb}% left type + \fi\fi\fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@chairiIX} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 9 % +% %%%%%%%%%%%%%%% +\def\@chairiIX{% + \if\@tmpb a%single bond + \yl@xdiff=16 + \yl@ydiff=36 + \Put@Line(0,0)(-5,3){144}% single bond at 1 equatorial + \putlatom{-160}{50}{\@memberb}% left type + \else\if\@tmpb b%single bond + \yl@xdiff=-16 + \yl@ydiff=36 + \Put@Line(0,0)(5,3){144}% single bond at 6 equatorial + \putratom{160}{50}{\@memberb}% left type + \else\if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=4 + \yl@ydiff=36 + \Put@Line(0,0)(-5,3){144}% single bond at 1 equatorial + \putlatom{-140}{50}{\@memberb}% left type + \else\if\@tmpc e% right-hand + \yl@xdiff=-16 + \yl@ydiff=36 + \Put@Line(0,0)(5,3){144}% single bond at 6 equatorial + \putratom{160}{50}{\@memberb}% left type + \else\if\@tmpc a% left-hand + \yl@xdiff=16 + \yl@ydiff=36 + \Put@Line(0,0)(-5,3){144}% single bond at 1 equatorial + \putlatom{-160}{50}{\@memberb}% left type + \fi\fi\fi% + \else \if\@tmpb D%double bond + \yl@xdiff=4 + \yl@ydiff=36 + \putlatom{-140}{50}{\@memberb}% left type + \Put@Line(10,10)(-5,3){144}% single bond at 1 equatorial + \Put@Line(0,-10)(-5,3){144}% single bond at 1 equatorial + \else% + \yl@xdiff=4 + \yl@ydiff=36 + \Put@Line(0,0)(-5,3){144}% single bond at 1 equatorial + \putlatom{-140}{50}{\@memberb}% left type + \fi\fi\fi\fi}% +%</ccycle> +% \end{macrocode} +% \end{macro} +% +% \Finale +% +\endinput diff --git a/Master/texmf-dist/source/latex/xymtex/base/ccycle.ins b/Master/texmf-dist/source/latex/xymtex/base/ccycle.ins new file mode 100644 index 00000000000..ee9cc619266 --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/ccycle.ins @@ -0,0 +1,59 @@ +\def\batchfile{ccycle.ins} +\input docstrip.tex +\preamble + +This is a generated file. + +Copyright 1996,1998,2001,2002, 2004, 2009, 2010, 2013 by Shinsaku Fujita +all rights reserved. +This style file is created for drawing chemical structural formulas +This style file is to be contained in the ``xymtex'' directory which +is an input directory for TeX. + +This file is part of the XyMTeX system. +======================================= + +Old Versions: +Version 1.01 Released on August 16, 1996 +Version 1.02 Released on October 31, 1996 +Version 2.00 Released on December 25, 1998 +Version 2.01 Released on June 20, 2001 (private version) +Version 3.00 Released on April 30, 2002 +Version 4.00 Released on May 30, 2002 (private version) +Version 4.01 Released on August 30, 2004 +Version 4.02 Released on December 20, 2004 +Version 4.04 Released on June 15, 2009 +Version 5.00 Released on October 01, 2010 +Version 5.01b Released on April 01, 2013 +Version 5.01bb Released on June 26, 2013 + +The Present Version: +Version 5.01 Released on July 23, 2013 + +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 ccycle.dtx and ccycle.ins +and the derived file ccycle.sty. + +======================================= + +\endpreamble + +\keepsilent + +\generateFile{ccycle.drv}{t}{% + \from{ccycle.dtx}{driver}} + +\generateFile{ccycle.sty}{t}{% + \from{ccycle.dtx}{ccycle}} + +\endinput diff --git a/Master/texmf-dist/source/latex/xymtex/base/chemstr.dtx b/Master/texmf-dist/source/latex/xymtex/base/chemstr.dtx new file mode 100644 index 00000000000..6e437826b83 --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/chemstr.dtx @@ -0,0 +1,9531 @@ +% \iffalse meta-comment +%% File: chemstr.dtx +% +% Copyright 1993,1996,1998,2001,2002, 2004, 2005, 2006, 2009, 2010, 2011, 2013 by Shinsaku Fujita +% +% This file is part of XyMTeX system. +% ------------------------------------- +% +% This file is a successor to: +% +% chemstr.sty +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 1.00} +% \typeout{ -- Released December 1, 1993 by Shinsaku Fujita} +% Copyright (C) 1993 by Shinsaku Fujita, all rights reserved. +% +% This file is a part of the macro package ``XyMTeX'' which has been +% designed for typesetting chemical structural formulas. +% +% This file is to be contained in the ``xymtex'' directory which is +% an input directory for TeX. It is a LaTeX optional style file and +% should be used only within LaTeX, because several macros of the file +% are based on LaTeX commands. +% +% For the review of XyMTeX, see +% (1) Shinsaku Fujita, ``Typesetting structural formulas with the text +% formatter TeX/LaTeX'', Computers and Chemistry, in press. +% The following book deals with an application of TeX/LaTeX to +% preparation of manuscripts of chemical fields: +% (2) Shinsaku Fujita, ``LaTeX for Chemists and Biochemists'' +% Tokyo Kagaku Dozin, Tokyo (1993) [in Japanese]. +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% The Current Maintainer of this work is Shinsaku Fujita. +% +% This work consists of the files chemstr.dtx and chemstr.ins +% and the derived file chemstr.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-8585 Japan +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Bug Fix: +% 1993/11/14 S. Fujita +% A and B are interchanged. +% a and b are interchanged. +% +% \def\j@urnalname{chemstr} +% \def\versi@ndate{December 01, 1993} +% \def\versi@nno{ver1.00} +% \def\copyrighth@lder{SF}% % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{chemstr} +% \def\versi@ndate{August 16, 1996} +% \def\versi@nno{ver1.01} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{chemstr} +% \def\versi@ndate{October 31, 1998} +% \def\versi@nno{ver1.02} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{chemstr} +% \def\versi@ndate{June 20, 2001} +% \def\versi@nno{ver2.01} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% (No Distribution) +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{chemstr} +% \def\versi@ndate{April 30, 2002} +% \def\versi@nno{ver3.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{chemstr} +% \def\versi@ndate{May 30, 2002} +% \def\versi@nno{ver4.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{chemstr} +% \def\versi@ndate{August 30, 2004} +% \def\versi@nno{ver4.01} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{chemstr} +% \def\versi@ndate{November 11, 2004} +% \def\versi@nno{ver4.01a} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{chemstr} +% \def\versi@ndate{December 20, 2004} +% \def\versi@nno{ver4.02} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{chemstr} +% \def\versi@ndate{July 20, 2005} +% \def\versi@nno{ver4.03} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{chemstr} +% \def\versi@ndate{September 5, 2006} +% \def\versi@nno{ver4.03b} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{chemstr} +% \def\versi@ndate{July 7, 2009} +% \def\versi@nno{ver4.04a} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{chemstr} +% \def\versi@ndate{October 25, 2009} +% \def\versi@nno{ver4.05} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{chemstr} +% \def\versi@ndate{October 01, 2010} +% \def\versi@nno{ver5.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{chemstr} +% \def\versi@ndate{February 24, 2011} +% \def\versi@nno{ver5.01b} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \fi +% +% \CheckSum{14811} +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +% +% \setcounter{StandardModuleDepth}{1} +% +% \StopEventually{} +% \MakeShortVerb{\|} +% +% \iffalse +% \changes{v1.01}{1996/06/26}{first edition for LaTeX2e} +% \changes{v1.02}{1998/10/31}{revised edition for LaTeX2e} +% \changes{v2.00}{1998/12/25}{enhanced edition for LaTeX2e} +% \changes{v2.01}{2001/06/20}{Size reduction} +% \changes{v2.01}{2001/06/21}{The command \cs{dotorline} is added.} +% \changes{v3.00}{2002/04/30}{picture to sfpicture, etc.} +% \changes{v4.00}{2002/05/30}{PostScript output and ShiftPicEnv environment} +% \changes{v4.01}{2004/08/30}{Minor additions} +% \changes{v4.01a}{2004/11/11}{Bug fix} +% \changes{v4.02}{2004/12/20}{Adjustment for \cs{setbondatom..}} +% \changes{v4.02a}{2004/12/27}{Bug fix: change \cs{ggg} to \cs{gggA}} +% \changes{v4.03}{2005/07/20}{wave bonds for stereochemistry} +% \changes{v4.03b}{2006/9/5}{\cs{ggg} to \cs{gggA} in \cs{test@vertix}} +% \changes{v4.04}{2009/7/7}{Bug fix for the \cs{XyMTeX} logo} +% \changes{v4.05}{2009/10/25}{Bug fix for the \cs{XyMTeX} logo} +% \changes{v5.00}{2010/10/01}{bond coloring and the LaTeX Project Public License} +% \changes{v5.01b}{2011/02/24}{added commands for bond coloring of the PostScript Mode} +% \changes{v5.01}{2011/03/22}{\cs{SetTwoAtoms} added} +% \changes{v5.01}{2011/04/06}{bug fix} +% \changes{v5.01}{2011/06/19}{bug fix: \cs{ylposition}} +% \fi +% +% \iffalse +%<*driver> +\NeedsTeXFormat{pLaTeX2e} +% \fi + \ProvidesFile{chemstr.dtx}[2013/03/22 v5.01 XyMTeX{} package file] +% \iffalse +\documentclass{ltxdoc} +\GetFileInfo{chemstr.dtx} +% +% %%XyMTeX Logo: Definition 4%%% +\makeatletter +\def\select@@Upsionfont{% +\edef\test@rm{\rmdefault}% +\edef\test@sf{\sfdefault}% +\edef\test@tt{\ttdefault}% +\ifx\f@family \test@rm\relax +{\expandafter\csname OT1/cmr/\f@series/\f@shape/\f@size% +\endcsname\char'7}% +\else\ifx\f@family \test@sf\relax +{\expandafter\csname OT1/cmss/\f@series/\f@shape/\f@size% +\endcsname\char'7}% +\else\ifx\f@family \test@tt\relax +{\expandafter\csname OT1/cmtt/\f@series/\f@shape/\f@size% +\endcsname\char'7}% +\else{\expandafter\csname OT1/cmr/\f@series/\f@shape/\f@size% +\endcsname +\char'7}\fi\fi\fi% +} +\def\XyM{X\kern-.30em\smash{% +\raise.50ex\hbox to0.8em{\hss\select@@Upsionfont% +\hss}}\kern-.30em{M}} +\def\XyMTeX{\XyM\kern-.1em\TeX} +\makeatother +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\title{Basic Commands for Drawing Chemical Structures +by {\sffamily chemstr.sty} +(\fileversion) of \XyMTeX{}} +\author{Shinsaku Fujita \\ +Shonan Institute of Chemoinformatics and +Mathematical Chemistry \\ +Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun, Kanagawa, \\ +258-0019 Japan +% % (old address) +% %Department of Chemistry and Materials Technology, \\ +% %Kyoto Institute of Technology, \\ +% %Matsugasaki, Sakyoku, Kyoto, 606-8585 Japan +% % (old old address) +% % Ashigara Research Laboratories, +% % Fuji Photo Film Co., Ltd., \\ +% % Minami-Ashigara, Kanagawa, 250-01 Japan +} +\date{\filedate} +% +\begin{document} + \maketitle + \DocInput{chemstr.dtx} +\end{document} +%</driver> +% \fi +% +% \section{Introduction}\label{chemstr:intro} +% +% \subsection{Options for {\sffamily docstrip}} +% +% \DeleteShortVerb{\|} +% \begin{center} +% \begin{tabular}{|l|l|} +% \hline +% \emph{option} & \emph{function}\\ \hline +% chemstr & chemstr.sty \\ +% driver & driver for this dtx file \\ +% \hline +% \end{tabular} +% \end{center} +% \MakeShortVerb{\|} +% +% \subsection{Version Information} +% +% \begin{macrocode} +%<*chemstr> +\typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 5.01} +\typeout{ -- Released June 19, 2013 by Shinsaku Fujita} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\j@urnalname{chemstr} +\def\versi@ndate{June 19, 2013} +\def\versi@nno{ver5.01} +\def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\typeout{XyMTeX Macro File `\j@urnalname' (\versi@nno) <\versi@ndate>% +\space[\copyrighth@lder]} +% \end{macrocode} +% +% \section{List of commands for chemstr.sty} +% +% \begin{verbatim} +% ********************************* +% * chemstr.sty: list of commands * +% ********************************* +% +% <For separating an augument list to each argument> +% +% \@forsemicol +% \@forl@@p +% \@iforl@@p +% \@m@mb@r +% \twoch@r +% \twoCH@R (terminater //) +% \twoch@@r +% \twoCH@@R (terminater //) +% \threech@r +% +% <For designating coordinates for drawing round arrows> +% +% \@forendparenthesis +% \end{verbatim} +% +% \begin{verbatim} +% <Convention> +% +% \rmoiety +% \lmoiety +% \putlatom +% \putratom +% \putlratom +% \Putlratom +% +% \dotorline +% +% \end{verbatim} +% +% \begin{verbatim} +% <Treatment of substitution positions> +% +% \if@clip \@clipfalse \@cliptrue +% \if@aclip \@aclipfalse \@acliptrue +% \if@bclip \@bclipfalse \@bcliptrue +% \if@cclip \@cclipfalse \@ccliptrue +% \if@eclip \@eclipfalse \@ecliptrue +% \if@fclip \@fclipfalse \@fcliptrue +% \iforigpt \origptfalse \origpttrue +% \@tmpaa (counter) +% +% \clipinfo \storeclipinfo \developclipinfo +% +% <Structures as substituents> +% \@yl +% \yl@xdiff \yl@ydiff +% \yl@shiftii +% \yl@shifti +% \@ylii +% \@yli +% \@@ylii +% \@@yli +% +% <Fused positions check> +% \fuseAx \fuseAy +% \fuseBx \fuseBy +% +% \end{verbatim} +% +% \begin{verbatim} +% <VERTICAL SETTING> +% Substitution +% +% \@substa +% \@substb +% \@substc +% \@substd +% \@subste +% \@substf +% +% \end{verbatim} +% +% \begin{verbatim} +% Setting of atoms and bonds +% +% \setsixringv (on a vertical six-membered ring) +% \setdecaringv (on a decaline (six-six) ring) +% \setfusedbond (at fused bond positions) +% \if@clipfuse \@clipfusefalse \@clipfusetrue +% \setatombond (at an appropiate position) +% +% Placing structures as substituents +% \ylposition +% \ylfusedpostion +% \ylatombondposition +% +% \end{verbatim} +% +% \begin{verbatim} +% <HORIZONTAL SETTING> +% Substitution +% +% \@hsubsta +% \@hsubstb +% \@hsubstc +% \@hsubstd +% \@hsubste +% \@hsubstf +% +% \end{verbatim} +% +% \begin{verbatim} +% Setting of atoms and bonds +% +% \setsixringh (on a horizontal six-membered ring) +% +% Placing structures as substituents +% +% \ylpositionh +% +% \end{verbatim} +% +% \begin{verbatim} +% <Linking units> +% +% \ryl (right linking unit) +% \lyl (left linking unit) + + +% <Minor Linking Units> +% +% \ayl +% +% \upnobond +% \downnobond +% +% \BiFunc +% +% <Setting fused rings> +% +% \set@fusionadd@sixv \set@fusion@sixv +% \set@fusionadd@sixvi \set@fusion@sixvi +% \set@fusionadd@sixh \set@fusion@sixh +% \set@fusionadd@sixhi \set@fusion@sixhi +% +% \set@fusion@decav +% \set@fusion@decavb +% \set@fusion@decavt +% \set@fusion@decah +% +% \set@fusion@hanthrav +% \set@fusion@hphenanv +% +% \set@fusionadd@fivev \set@fusion@fivev +% \set@fusionadd@fivevi \set@fusion@fivevi +% \set@fusionadd@fiveh \set@fusion@fiveh +% \set@fusionadd@fivehi \set@fusion@fivehi +% +% \set@fusion@nonav \set@fusion@nonavi +% \set@fusion@nonah \set@fusion@nonahi +% +% \end{verbatim} +% +% \begin{verbatim} +% <For PostScript output> +% +% \let\Put@Direct=\put +% \let\Multiput@Direct=\multiput +% \Put@@@Line +% \Put@@@sCircle +% \Put@@@oCircle +% +% <ShiftPicEnv environments> +% +% ShiftPicEnv +% ShiftPicEnvB +% \let\sfpicture=\picture +% \let\endsfpicture=\endpicture +% +% <Wave bonds for stereochemistry> +% \ifwavebond, \WaveBonds +% +% <Bond coloring> +% \addbscolor, +% \setbscolor, \setBScolor +% \bscolorswON, \bscolorswOFF +% \defineXyMcolor +% \XyMcolor +% +% <Truncation for two or more atoms> +% \SetTwoAtoms +% \SetTwoAtomx +% \end{verbatim} +% +% \section{Initialization and conventions} +% \subsection{Logos} +% +% The logo of \XyMTeX{} is defined in two ways. The first definition uses +% the \verb/\fam/ command, which sometimes shows unusual behavior. The +% second definition is adopted in the present version of \XyMTeX{}, since +% this aims at the compatibility to \LaTeXe{}. +% +% \begin{macro}{\XyMTeX} +% \begin{macrocode} +% *************** +% * XyMTeX Logo * +% *************** +% %%XyMTeX Logo: Definition 1%%% +% \newcount\TestCount +% \def\XyM{\ifnum\fam=-1\relax\fam=0\relax\fi\TestCount=\fam% +% X\kern-.30em\smash{\raise.50ex\hbox{$\fam\TestCount\Upsilon$}}% +% \kern-.30em{M}} +% \def\XyMTeX{\XyM\kern-.1em\TeX} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \end{macrocode} +% +% \begin{macrocode} +% %%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} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \end{macrocode} +% +% \begin{macrocode} +% %%XyMTeX Logo: Definition 3%%%2009/07/07 +% \edef\test@it{\itdefault} +% \edef\test@sf{\sfdefault} +% \edef\test@tt{\ttdefault} +% \edef\test@sl{\sldefault} +% \edef\test@bx{\bfdefault} +% \def\XyM{X\kern-.30em\smash{% +% \raise.50ex\hbox to0.8em{\hss% +% \ifx\f@series \test@bx\relax +% $\mathbf{\Upsilon}$% +% \else\ifx\f@shape \test@it\relax +% $\mathit{\Upsilon}$% +% \else\ifx\f@family \test@sf\relax +% $\mathsf{\Upsilon}$% +% \else\ifx\f@family \test@tt\relax +% $\mathtt{\Upsilon}$% +% \else\ifx\f@shape \test@sl\relax +% $\mathit{\Upsilon}$% +% \else +% $\Upsilon$\fi\fi\fi\fi\fi% +% \hss}}\kern-.30em{M}} +% \def\XyMTeX{\XyM\kern-.1em\TeX} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % \end{macrocode} +% +% \begin{macrocode} +% %%XyMTeX Logo: Definition 4%%%2009/10/25 +\def\select@@Upsionfont{% +\edef\test@rm{\rmdefault}% +\edef\test@sf{\sfdefault}% +\edef\test@tt{\ttdefault}% +\ifx\f@family \test@rm\relax +{\expandafter\csname OT1/cmr/\f@series/\f@shape/\f@size% +\endcsname\char'7}% +\else\ifx\f@family \test@sf\relax +{\expandafter\csname OT1/cmss/\f@series/\f@shape/\f@size% +\endcsname\char'7}% +\else\ifx\f@family \test@tt\relax +{\expandafter\csname OT1/cmtt/\f@series/\f@shape/\f@size% +\endcsname\char'7}% +\else{\expandafter\csname OT1/cmr/\f@series/\f@shape/\f@size% +\endcsname +\char'7}\fi\fi\fi% +} +\def\XyM{X\kern-.30em\smash{% +\raise.50ex\hbox to0.8em{\hss\select@@Upsionfont% +\hss}}\kern-.30em{M}} +\def\XyMTeX{\XyM\kern-.1em\TeX} +% \end{macrocode} +% \end{macro} +% +% \subsection{Switches for Three Modes} +% +% Switches for determining three modes +% are added in the \XyMTeX{} system (Version 5.00). +% \changes{v5.00}{2010/10/01}{bond coloring and the LaTeX Project Public License} +% +% \begin{macro}{\ifPSmode etc.} +% \begin{macrocode} +\newif\ifPSmode \PSmodefalse +\newif\ifPDFmode \PDFmodefalse +\newif\ifTeXLaTeXmode \TeXLaTeXmodetrue%default TeX/LaTeX mode. +% \end{macrocode} +% \end{macro} +% +% \subsection{Temporary Counters and Dimentions} +% +% The following counter registers are used to draw wavy bonds +% by Bezier technique. +% +% \begin{macro}{\@tempcntXa etc.} +% \begin{macrocode} +\newcount\@tempcntXa \newcount\@tempcntYa \newcount\@tempcntz +\newcount\@tempcntXb \newcount\@tempcntYb \newcount\@tempcntzz +\newcount\@tempcntXc \newcount\@tempcntYc \newcount\@tempcntzzz +\newcount\@tempcntXd \newcount\@tempcntYd \newcount\@tempcntzzzz +% \end{macrocode} +% \end{macro} +% +% The following dimension registers can be used temporarily +% in addition to |\@tempdima| and |\@tempdimb| of LaTeX +% utility. +% +% \begin{macro}{\@dimtempa etc.} +% \begin{macrocode} +\newdimen\@dimtempa +\newdimen\@tempdimd +\newdimen\@tempdime +% \end{macrocode} +% \end{macro} +% +% \subsection{Wavy Bonds} +% +% Wavy bonds that represent unspecified stereochemistry are supported by using +% PostScript technique. To assure compatibility, the non-PostScript mode +% is revised to support wavy bonds. +% \changes{v4.03}{2005/07/20}{Wavy Bonds} +% +% +% \begin{macro}{\waveunitA} +% \begin{macrocode} +\def\waveunitA(#1,#2)#3{% +\@tempcntz=#1\relax +\@tempcntzz=#2\relax +%%%%%%%%%%%%%%%%%%%%%%%%% +%middle point parameters% +%%%%%%%%%%%%%%%%%%%%%%%%% +\ifnum\@tempcntz=3\relax% + \ifnum\@tempcntzz=5\relax% + \@tempcntXa=-16 \@tempcntYa=10\relax% + \@tempcntXd=16 \@tempcntYd=-10\relax + \else\ifnum\@tempcntzz=-5\relax% + \@tempcntXa=-16 \@tempcntYa=-10\relax + \@tempcntXd=16 \@tempcntYd=10\relax + \fi\fi +\else\ifnum\@tempcntz=-3\relax% + \ifnum\@tempcntzz=5\relax% + \@tempcntXa=-16 \@tempcntYa=-10\relax% + \@tempcntXd=16 \@tempcntYd=10\relax + \else\ifnum\@tempcntzz=-5\relax% + \@tempcntXa=-16 \@tempcntYa=10\relax + \@tempcntXd=16 \@tempcntYd=-10\relax + \fi\fi +\else\ifnum\@tempcntz=5\relax + \ifnum\@tempcntzz=3\relax + \@tempcntXa=-10 \@tempcntYa=16\relax + \@tempcntXd=10 \@tempcntYd=-16\relax + \else\ifnum\@tempcntzz=-3\relax + \@tempcntXa=-10 \@tempcntYa=-16\relax + \@tempcntXd=10 \@tempcntYd=16\relax + \fi\fi +\else\ifnum\@tempcntz=-5\relax + \ifnum\@tempcntzz=3\relax + \@tempcntXa=10 \@tempcntYa=16\relax + \@tempcntXd=10 \@tempcntYd=-16\relax + \else\ifnum\@tempcntzz=-3\relax + \@tempcntXa=10 \@tempcntYa=-16\relax + \@tempcntXd=-10 \@tempcntYd=16\relax + \fi\fi +\else\ifnum\@tempcntz=1\relax + \ifnum\@tempcntzz=0\relax + \@tempcntXa=0 \@tempcntYa=20\relax + \@tempcntXd=0 \@tempcntYd=-20\relax + \fi +\else\ifnum\@tempcntz=-1\relax + \ifnum\@tempcntzz=0\relax + \@tempcntXa=0 \@tempcntYa=-20\relax + \@tempcntXd=0 \@tempcntYd=20\relax + \fi +\else\ifnum\@tempcntz=0\relax + \ifnum\@tempcntzz=1\relax + \@tempcntXa=-20 \@tempcntYa=0\relax + \@tempcntXd=20 \@tempcntYd=0\relax + \fi +\fi\fi\fi\fi\fi\fi\fi +%%%%%%%%%%%%%%%%%%%% +% start and ending % +%%%%%%%%%%%%%%%%%%%% +\ifnum\@tempcntzz=0\relax%(1,0) (-1,0) + \ifnum\@tempcntz>0\relax + \@tempcntXb=#3\relax + \else + \@tempcntXb=-#3\relax + \fi + \@tempcntYb=0 + \ifnum\@tempcntz>0\relax + \@tempcntXa=#3\relax + \else + \@tempcntXa=-#3\relax + \fi + \divide\@tempcntXa by2\relax + \@tempcntXd=\@tempcntXa +\else\ifnum\@tempcntz=0\relax%(0,1) (0,-1) + \@tempcntXb=0\relax + \ifnum\@tempcntzz>0\relax + \@tempcntYb=#3\relax + \@tempcntYa=#3\relax + \else + \@tempcntYb=-#3\relax + \@tempcntYa=-#3\relax + \fi + \divide\@tempcntYa by2\relax + \@tempcntYd=\@tempcntYa +\else +\ifnum\@tempcntz>0\relax +\@tempcntXb=#3\relax +\else +\@tempcntXb=-#3\relax +\fi +\ifnum\@tempcntzz>0\relax +\@tempcntYb=#3\relax +\else +\@tempcntYb=-#3\relax +\fi +\ifnum\@tempcntzz>0\relax +\@tempcntzzzz=#2\relax +\else +\@tempcntzzzz=-#2\relax +\fi +\multiply\@tempcntYb by10\relax +\multiply\@tempcntYb by\@tempcntzzzz\relax +\ifnum\@tempcntz>0\relax +\@tempcntzzzz=#1\relax +\else +\@tempcntzzzz=-#1\relax +\fi +\divide\@tempcntYb by\@tempcntzzzz\relax +\divide\@tempcntYb by10\relax +\@tempcntzzzz=\@tempcntXb +\divide\@tempcntzzzz by2\relax +\advance\@tempcntXa by\@tempcntzzzz +\advance\@tempcntXd by\@tempcntzzzz +\@tempcntzzzz=\@tempcntYb +\divide\@tempcntzzzz by2\relax +\advance\@tempcntYa by\@tempcntzzzz +\advance\@tempcntYd by\@tempcntzzzz +\fi\fi +%%%%%%%%%%%%%%%%% +% Bezier curves % +%%%%%%%%%%%%%%%%% +\@tempcntXc=\@tempcntXb +\multiply\@tempcntXc by2\relax +\@tempcntYc=\@tempcntYb +\multiply\@tempcntYc by2\relax +\begin{picture}(0,0)(0,0)% +\multiput(0,0)(\@tempcntXc,\@tempcntYc){3}{% +\qbezier(0,0)(\@tempcntXa,\@tempcntYa)(\@tempcntXb,\@tempcntYb)}% +\multiput(\@tempcntXb,\@tempcntYb)(\@tempcntXc,\@tempcntYc){2}{% +\qbezier(0,0)(\@tempcntXd,\@tempcntYd)(\@tempcntXb,\@tempcntYb)}% +\end{picture}% +}%end of \waveunitA +% \end{macrocode} +% \end{macro} +% +% A new switch for wave bonds for stereochemistry is +% added: |\ifwavebond|. +% \changes{v4.03}{2005/07/20}{New switch: \cs{ifwavebond}} +% +% \begin{macro}{\ifwavebond} +% \begin{macro}{\WaveBonds} +% \begin{macro}{\NormalBonds} +% \begin{macrocode} +\newif\ifwavebond \wavebondfalse +\def\WaveBonds{\wavebondtrue} +\def\NormalBonds{\wavebondfalse} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \changes{v4.03}{2005/07/20}{Renewed command: \cs{Put@@Line}} +% \begin{macro}{\Put@@Line} +% \begin{macrocode} +\def\Put@@Line(#1,#2)(#3,#4)#5{\Put@Direct(#1,#2){% +\ifwavebond \@tempcnta=#5\relax +\divide\@tempcnta by5\relax +\waveunitA(#3,#4){\@tempcnta}\else +\line(#3,#4){#5}\fi}} +% \end{macrocode} +% \end{macro} +% +% \subsection{Conventions for PostScript} +% +% The picture environment is switched to be acceptable +% to another system such as PostScript. +% +% \changes{v4.00}{2002/5/30}{New commands: \cs{Put@@Line}, +% \cs{Put@@sCircle}, and \cs{Put@@oCircle}} +% \begin{macro}{\Put@@Line} +% \begin{macro}{\Put@@sCircle} +% \begin{macro}{\Put@@oCircle} +% \begin{macrocode} +\global\let\@ldline=\line%store the oridinal line command of picture enviroment +\global\let\@ldthicklines=\thicklines +\global\let\@ldthinlines=\thinlines +%%\def\Put@@Line(#1,#2)(#3,#4)#5{\Put@Direct(#1,#2){\line(#3,#4){#5}}} +\def\Put@@sCircle(#1,#2)#3{\Put@Direct(#1,#2){\circle*{#3}}} +\def\Put@@oCircle(#1,#2)#3{\Put@Direct(#1,#2){\circle{#3}}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% +% The initial setting is the original LaTeX picture environment. +% To switch the size-reduction meachism and the pstricks mechanism, +% we can use a switching command such as |\originalpicture|. +% \changes{v3.00}{2002/4/30}{New environment: sfpicture} +% \changes{v3.00}{2002/5/30}{New command: \cs{originalpicture}} +% +% \begin{macro}{\originalpicture} +% \begin{macro}{\sfpicture} +% \begin{macro}{\Put@Direct} +% \begin{macrocode} +\newif\ifxymtexpssw\xymtexpsswfalse +\def\originalpicture{% +\let\sfpicture=\picture +\let\endsfpicture=\endpicture +\let\Put@Direct=\put +\let\Multiput@Direct=\multiput +\let\line=\@ldline +\let\dotorline=\d@t@rline +\let\thicklines=\@ldthicklines +\let\thinlines=\@ldthinlines +\thinlines +\let\Put@Line=\Put@@Line +\let\Put@sCircle=\Put@@sCircle +\let\Put@oCircle=\Put@@oCircle +\xymtexpsswfalse +\@ifundefined{@changeunitlength}{}{% +\let\changeunitlength=\@changeunitlength}% +\unitlength=0.1pt} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% To switch from XyMTeX to XyMTeX with pstricks, we use the following command: +% \begin{macro}{\changexymtextops} +% \begin{macrocode} +\def\changexymtextops{\xymtexpsswtrue} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\SlopetoXY} +% \changes{v5.00}{2010/10/01}{New command: \cs{SlopetoXY}} +% This command is extracted from |\Put@@@Line}| of the \textsf{xymtx-ps} package +% so as to be a common code for defining |\Put@@@Line}| (\textsf{xymtx-ps} package), +% |\Color@@@Line| (\textsf{xymtx-ps} package), |\Color@@@@Line| (\textsf{xymtx-pdf} package), +% and so on. This command changes a set of line specifiers (a starting point, a slope, and +% a line length of the \LaTeX{} picture environment) into another set +% (a starting point and a terminal point (|\@tempcntXa|,|\@tempcntYa|)). +% +% \begin{macrocode} +\def\SlopetoXY(#1,#2)(#3,#4)#5{% +%%x-coordinate +\@tempcntXa=0\relax +\ifnum#3>0\relax \@tempcntXa=#5\relax +\else\ifnum#3<0\relax\@tempcntXa=-#5\relax\fi\fi +\advance\@tempcntXa by#1\relax +%%y-coordinate +\@tempcntYa=#5\relax +\ifnum#3=0\relax\else +\multiply\@tempcntYa by#4\relax\multiply\@tempcntYa by10\relax +\divide\@tempcntYa by#3\relax\divide\@tempcntYa by10\relax\fi +\ifnum\@tempcntYa<0\relax +\ifnum#4>0\relax\@tempcntYa=-\@tempcntYa\fi +\else +\ifnum\@tempcntYa>0\relax +\ifnum#4<0\relax\@tempcntYa=-\@tempcntYa\fi\fi +\fi +\advance\@tempcntYa by#2\relax} +% \end{macrocode} +% \end{macro} +% +% \subsection{Macros for treating argumets} +% +% For separating each argument (BONDLIST, SUBSLIST or ATOMLIST) into +% components (descriptors), we define several useful macros. +% +% \begin{macro}{\@forsemicol} +% \begin{macro}{\@forl@@p} +% \begin{macro}{\@iforl@@p} +% +% The macro |\@forsemicol| resembles the |\@for| macro that is +% the \LaTeX{} original macro; however a semicolon is used as +% a separating key in place of a comma. +% +% \changes{v1.01}{1996/07/06}{\cs{@forsemicol}: \cs{edef} +% to \cs{expandafter}} +% \changes{v1.01}{1996/07/06}{\cs{@iforl@@p} replaced by +% a LaTeX2e-like definitiion} +% +% \begin{macrocode} +% **************************************************** +% * For separating an augument list to each argument * +% **************************************************** +% +\def\@forsemicol#1:=#2\do#3{% +% \edef\@fortmp{#2}%1996/07/06 by S. Fujita + \expandafter\def\expandafter\@fortmp\expandafter{#2}% + \ifx\@fortmp\@empty \else% + \expandafter\@forl@@p#2;\@nil;\@nil\@@#1{#3}\fi} +\long\def\@forl@@p#1;#2;#3\@@#4#5{\def#4{#1}\ifx #4\@nnil \else% + #5\def#4{#2}\ifx #4\@nnil \else#5\@iforl@@p #3\@@#4{#5}\fi\fi} +\long\def\@iforl@@p#1;#2\@@#3#4{\def#3{#1}\ifx #3\@nnil% + \expandafter\@fornoop \else + #4\relax\expandafter\@iforl@@p\fi#2\@@#3{#4}} +%\def\@iforl@@p#1;#2\@@#3#4{\def#3{#1}\ifx #3\@nnil% +% \let\@nextwhile=\@fornoop \else% +% #4\relax\let\@nextwhile=\@iforl@@p\fi\@nextwhile#2\@@#3{#4}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The macro |\@m@mb@r| separates a character string into to portions +% by using a double equality symbol (|==|) and a semicolon as delimiters. +% The first potion consists of a locant number and a bond modifier (stored +% in |\@membera|), which are further separated by the macro |\twoch@r|, +% |\twoch@@r| or |\threech@r|. +% The second potion shows a substituent (stored in |\@memberb|), +% which is printed by means of an appropiate command. +% +% \begin{macro}{\@m@mb@r} +% \begin{macro}{\twoch@r} +% \begin{macro}{\twoch@@r} +% \begin{macro}{\threech@r} +% \begin{macrocode} +%\def\@m@mb@r#1==#2;{\gdef\@membera{#1}\gdef\@memberb{#2}} +\def\@m@mb@r#1==#2;{\def\@membera{#1}\def\@memberb{#2}} +\def\twoch@r#1#2{\gdef\@tmpa{#1}\gdef\@tmpb{#2}} +\def\twoch@@r#1#2{\gdef\@@tmpa{#1}\gdef\@@tmpb{#2}} +%\def\threech@r#1#2#3{\gdef\@tmpa{#1}\gdef\@tmpb{#2}\gdef\@tmpc{#3}}%redefined +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The command |\threech@r| is redefined by using |\@get@first@char| +% in order to give a warning of a two-digit number. +% \changes{v4.00}{2002/05/30}{\cs{@get@first@char} has been added.} +% +% \begin{macro}{\@get@first@char} +% \begin{macrocode} +\newif\ifdrawsamesubst\drawsamesubstfalse +\def\@get@first@char#1{\if\noexpand#1\relax\else +\@cnttempa=`#1\relax +\ifnum\@cnttempa>47\relax +\ifnum\@cnttempa<58\relax +\XyMTeXWarning{The second number (\@tmpb) of a two-digit number (\@tmpa\@tmpb) +is missed. ^^J\space This should be written in braces, +^^J\space e.g. `{\@tmpa\@tmpb}D==substituent' and `{{\@tmpa\@tmpb}}==substituent'.} +\fi\fi\fi} +% \end{macrocode} +% \end{macro} +% +% \changes{v4.00}{2002/05/30}{\cs{threech@r} has been redefined.} +% +% \begin{macro}{\threech@r} +% \begin{macrocode} +\def\threech@r#1#2#3{\gdef\@tmpa{#1}\gdef\@tmpb{#2}\gdef\@tmpc{#3}% +\begingroup +\ifdrawsamesubst\ifx\@tmpa\empty\relax\else\ifx\@tmpb\empty\relax\else +\setbox0=\hbox{\@get@first@char#2\relax}\fi\fi\fi +\endgroup} +% \end{macrocode} +% \end{macro} +% +% The following two commands are added to treat spiro fusion. +% \changes{v2.00}{1998/11/15}{Added for spiro fusion} +% To avoid the bugs in drawing multi-nested fused compounds, |\gdef| is +% changed to |\def| in the definitions of |\twoCH@@R| and |\twoCH@R|. +% \changes{v4.00}{2002/05/30}{Bug fix for \cs{twoCH@@R} and \cs{twoCH@R}} +% +% \begin{macro}{\twoCH@R} +% \begin{macro}{\twoCH@@R} +% \begin{macrocode} +%\def\twoCH@@R#1#2//{\gdef\@@tmpa{#1}\gdef\@@tmpb{#2}} +\def\twoCH@@R#1#2//{\def\@@tmpa{#1}\def\@@tmpb{#2}} +%\def\twoCH@R#1#2//{\gdef\@tmpa{#1}\gdef\@tmpb{#2}} +\def\twoCH@R#1#2//{\def\@tmpa{#1}\def\@tmpb{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% + +% \begin{macro}{\@forendparenthesis} +% +% The macro |\@forendparenthesis| resembles the |\@for| macro that is +% the \LaTeX{} original macro; however a close parenthesis is used as +% a separating key in place of a comma. +% +% \changes{v5.00}{2010/10/01}{for drawing round arrows} +% +% \begin{macrocode} +% ************************************ +% * For coordinates for round arrows * +% ************************************ +% +\def\@forendparenthesis#1:=#2\do#3{% + \expandafter\def\expandafter\@fortmp\expandafter{#2}% + \ifx\@fortmp\@empty \else% + \expandafter\@forL@@P#2)\@nil)\@nil\@@#1{#3}\fi} +\long\def\@forL@@P#1)#2)#3\@@#4#5{\def#4{#1}\ifx #4\@nnil \else% + #5\def#4{#2}\ifx #4\@nnil \else#5\@iforL@@P #3\@@#4{#5}\fi\fi} +\long\def\@iforL@@P#1)#2\@@#3#4{\def#3{#1}\ifx #3\@nnil% + \expandafter\@fornoop \else + #4\relax\expandafter\@iforL@@P\fi#2\@@#3{#4}} +% \end{macrocode} +% \end{macro} +% +% +% \subsection{Conventions} +% +% Switches for characterizing substitution sites as +% left, right or left-right boxes become effective in +% the commands |\putlatom|, |\putratom| and |\putlratom|. +% They are used for warning wrong or unnecessary usages of +% |\lmoiety| or |\rmoiety|. +% +% \changes{v1.02}{1998/10/20}{Switches \cs{@leftput} added} +% +% \begin{macro}{\if@leftput} +% \begin{macro}{\if@rightput} +% \begin{macro}{\if@leftrightput} +% \begin{macro}{\resetlrput} +% \begin{macrocode} +\newif\if@rightput \@rightputfalse +\newif\if@leftput \@leftputfalse +\newif\if@leftrightput \@leftrightputfalse +\def\resetlrput{\@rightputfalse\@leftputfalse +\@leftrightputfalse} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% We can use the macro |\rmoiety| for drawing a right-hand substituent +% and the macro |\lmoiety| for drawing a left-hand substituent. +% +% \changes{v1.02}{1998/10/20}{The definitions of \cs{rmoiety} and +% \cs{lmoiety} are changed. Warning function is added.} +% +% When you use a |\rmoiety| command in a left box produced by +% a |\putlatom| command, the warning ``Wrong |\rmoiety|'' is reported. +% When you use a |\lmoiety| command in a right box produced by +% a |\putratom| command, the warning ``Wrong |\lmoiety|'' is reported. +% If the ``draft'' option is effective, these cases are designated by +% solid squares at the corresponding positions on pages. +% +% \begin{macro}{\rmoiety} +% \begin{macro}{\lmoiety} +% \begin{macrocode} +% ************** +% * Convention * +% ************** +% %\def\rmoiety#1{#1 \hss} +% %\def\lmoiety#1{\hss #1} +\def\rmoiety#1{\if@leftput +\XyMTeXWarning{Wrong \string\rmoiety\space used in a left box}% +\hbox to0pt{% +\hbox to0pt{\hss\vrule width\overfullrule height\overfullrule}#1\hss}% +\else\if@rightput\XyMTeXWarning{Unnecessary \string\rmoiety\space +used in a right box}\hbox to0pt{#1\hss}% +\else\if@leftrightput\hbox to0pt{#1\hss}% +\fi\fi\fi\resetlrput} +\def\lmoiety#1{\if@rightput +\XyMTeXWarning{Wrong \string\lmoiety\space used in a right box}% +\hbox to0pt{\hss#1\kern-.72em% +\hbox to0pt{\vrule width\overfullrule height\overfullrule\hss}}\else +\if@leftput\XyMTeXWarning{Unnecessary \string\lmoiety\space +used in a left box}\hbox to0pt{\hss#1}% +\else\if@leftrightput\hbox to0pt{\hss#1\kern-.72em}% +\else\hbox to0pt{\hss#1\kern-.72em}\fi\fi\fi\resetlrput} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% Warnings from \XyMTeX{} are concerned with commands +% |\rmoiety| and |\lmoiety|. +% \changes{v5.00}{2010/10/01}{\cs{if@dbondcolor} added for bondcolor package} +% +% \begin{macro}{\XyMTeXWarning} +% \begin{macrocode} +\newif\if@dbondcolor \@dbondcolorfalse +\def\XyMTeXWarning#1{% +\begingroup +\if@dbondcolor\else + \let\protect\string + \immediate\write\@unused{^^IXyMTeX Warning: #1\space + on input line \the\inputlineno^^I}% +\fi +\endgroup% +\global\@dbondcolorfalse%2010/10/01 for bond coloring +} +% \end{macrocode} +% \end{macro} +% +% Warnings concerned with ring fusion are based on +% the command |\FuseWarning| of \XyMTeX{}. +% \changes{v2.00}{1998/11/15}{Warning function is added.} +% \changes{v5.00}{2010/10/01}{\cs{futileFuseWarning} added for bondcolor package} +% +% \begin{macro}{\@cnttempa} +% \begin{macro}{\@cnttempb} +% \begin{macro}{\FuseWarning} +% \begin{macrocode} +\newcount\@cnttempa +\newcount\@cnttempb +\def\FuseW@rning#1#2#3#4#5#6#7{% +\@tempcnta=#1 \@tempcntb=#2 +\@cnttempa=#3 \advance\@cnttempa-#5 +\@cnttempb=#4 \advance\@cnttempb-#6 +\ifnum\@tempcnta=\@cnttempa + \ifnum\@tempcntb=\@cnttempb\else + \XyMTeXWarning{Mismatched fusion at bond `#7'}% + \fi +\else + \XyMTeXWarning{Mismatched fusion at bond `#7'}% +\fi} +\def\futileFuseWarning#1#2#3#4#5#6#7{} +\let\FuseWarning=\FuseW@rning +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The font of a substituent and its size are designated explicitly. +% \changes{v4.00}{2002/5/30}{% +% The comands \cs{substfont} and \cs{substfontsize} are added to +% \cs{putlatom}, etc.} +% +% \begin{macro}{\substfont} +% \begin{macro}{\substfontsize} +% \begin{macrocode} +\let\substfont=\normalfont +\let\substfontsize=\normalsize +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The original \LaTeX{} command |\put| is changed into macros suitable to +% more specific uses as follows. +% +% \changes{v1.02}{1998/10/20}{The definition is changed. Warning function +% for \cs{rmoiety} is added.} +% +% \begin{macro}{\putlatom} +% \begin{macrocode} +\def\putlatom#1#2#3{\begingroup\resetlrput +\Put@Direct(#1,#2){\@leftputtrue\substfont\substfontsize +\hbox to0pt{\hss #3}\@leftputfalse}\endgroup} +% \end{macrocode} +% \end{macro} +% +% \changes{v1.02}{1998/10/20}{The definition is changed. Warning function +% for \cs{lmoiety} is added.} +% +% \begin{macro}{\putratom} +% \begin{macrocode} +%\def\putratom#1#2#3{\Put@Direct(#1,#2){\hbox to0pt{#3 \hss}}} +\def\putratom#1#2#3{\begingroup\resetlrput +\Put@Direct(#1,#2){\@rightputtrue\substfont\substfontsize +\hbox to0pt{#3 \hss}\@rightputfalse}\endgroup} +% \end{macrocode} +% \end{macro} +% +% \changes{v4.00}{2002/5/30}{The mechanism of centering the +% first letter of a substituent by \cs{@getcharwidthput} is added to +% \cs{putlratom}.} +% +% \changes{v4.01a}{2004/11/11}{The mechanism of \cs{@getcharwidthput} +% is altered (one argument to two arguments). Treatments of \$ and commands are added.} +% +% \begin{macro}{\@getcharwidthput} +% \begin{macrocode} +\newif\ifspecial@ylcs \special@ylcsfalse +\def\@getcharwidthput#1#2\owari{% +\global\special@ylcsfalse +\if\noexpand#1\relax \global\special@ylcstrue \else%\if the category #1 is 'command' +\ifcat#1$\relax \global\special@ylcstrue\else%if the category of #1 is 'special letter' +\ifcat#1a\relax%if the category of #1 is 'letter' +\setbox0=\hbox{#1}% +\global\@dimtempa=0.7em +\global\advance\@dimtempa by-\wd0\relax +\global\divide\@dimtempa by2\relax +\else\global\@dimtempa=0em\relax\fi\fi\fi} +% \end{macrocode} +% \end{macro} +% +% \changes{v1.02}{1998/10/20}{The definition is changed. Warning function +% for \cs{lmoiety} and \cs{rmoiety|} is added.} +% \changes{v4.01a}{2004/11/11}{The mechanism of \cs{@getcharwidthput} +% is altered (one argument to two arguments).} +% +% \begin{macro}{\putlratom} +% \begin{macrocode} +\def\putlratom#1#2#3{\begingroup\resetlrput +\Put@Direct(#1,#2){\@leftrightputtrue\substfont\substfontsize +\setbox1=\hbox{% +\expandafter\@getcharwidthput#3\relax\owari}%the centering mechanism +\@tempdima=\@dimtempa%global to local +\ifspecial@ylcs\hbox to.72em{#3\hss}\else +\hbox to0.72em{\kern\@tempdima #3\hss}\kern-\@tempdima +\fi}% +\@leftrightputfalse\endgroup} +% \end{macrocode} +% \end{macro} +% +% \changes{v1.01b}{1998/10/06}{\cs{putlratom}: delete \sc{setbox0}} +% \changes{v1.02}{1998/10/20}{The old definition is +% totally replaced by the new definition} +% +% \begin{verbatim} +% % old definitions +% % \begin{macrocode} +% % changed to avoid Overfull warnings 1993/11/11/S.Fujita +% % \newif\if@moiety \@moietyfalse +% % \def\putlratom#1#2#3{% +% % \def\lmoiety##1{\global\@moietytrue}% +% % \setbox0=\hbox{#3}%deleted by S. Fujita +% % \if@moiety\def\lmoiety##1{\hss ##1}% +% % \Put@Direct(#1,#2){\hbox to.72em{#3}}\global\@moietyfalse +% % \else\Put@Direct(#1,#2){\hbox to.6em{#3\hss}}\fi}% +% % \def\putlratom#1#2#3{\Put@Direct(#1,#2){\hbox to.6em{#3}}} +% % \end{macrocode} +% \end{verbatim} +% +% \begin{macro}{\Putlratom} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \begin{macrocode} +\def\Putlratom#1#2#3{\Put@Direct(#1,#2){\substfont\substfontsize +\hbox to.8em{#3}}} +% \end{macrocode} +% \end{macro} +% +% \changes{v2.01}{2000/6/20}{New command: \cs{dotorline}} +% \begin{macro}{\dotorline} +% \begin{macrocode} +\def\d@t@rline(#1,#2)(#3,#4)#5/(#6,#7)(#8,#9){% + \@ifundefined{dottedline}{% + \XyMTeXWarning{A dottedline is replaced by a solid line.}% + \Put@Line(#1,#2)(#3,#4){#5}% + }{{\thicklines% + \ifdim\unitlength>0.08pt + \dottedline{20}(#6,#7)(#8,#9)% + \else + \dottedline{30}(#6,#7)(#8,#9)\fi}}} +\let\dotorline=\d@t@rline +% \end{macrocode} +% \end{macro} +% +% +% \subsection{Parameters} +% +% The original point for drawing a structural formula is shifted to an +% appropriate position, which is designated by the following parmeters +% (counters) for coordinates. +% +% +% \begin{macro}{\noshift} +% \begin{macro}{\shifti} +% \begin{macro}{\shiftii} +% \begin{macro}{\shiftiii} +% \begin{macrocode} +% ******************************* +% * Parameters for Coordinates * +% ******************************* +\newcount\noshift \noshift=0\relax% +\newcount\shifti \shifti=240\relax% +\newcount\shiftii \shiftii=400\relax% +\newcount\shiftiii \shiftiii=800\relax% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The unit length for \XyMTeX{} is selected to be 0.1pt. This value +% should not be maintained as possible as you can. A smaller value +% may disapper a sloped line of short length. +% \begin{macrocode} +\unitlength.1pt% +% \end{macrocode} +% +% Parameters for ring fusion are used in fusering.sty. +% \changes{v2.00}{1999/2/16}{This has been added to process the old XyMTeX +% manual for Version 1.01} +% +% \begin{macro}{\fuseAx} +% \begin{macro}{\fuseBx} +% \begin{macro}{\fuseAy} +% \begin{macro}{\fuseBy} +% \begin{macrocode} +\def\fuseAx{0} +\def\fuseBx{0} +\def\fuseAy{0} +\def\fuseBy{0} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Various switchs} +% +% These macros are used for clipping spaces at substitution positions. +% Note that |\if@clip| is used in place of |\if@dclip|. +% +% \changes{v3.00}{2002/4/30}{New Command: \cs{originoutput}} +% +% \begin{macro}{\if@clip} +% \begin{macro}{\if@aclip} +% \begin{macro}{\if@bclip} +% \begin{macro}{\if@cclip} +% \begin{macro}{\if@eclip} +% \begin{macro}{\if@fclip} +% \begin{macro}{\iforigpt} +% \begin{macro}{\@tmpaa} +% \begin{macro}{\oriptoutput} +% \begin{macro}{\OriptOutput} +% \begin{macro}{\OriptOutputA} +% \begin{macrocode} +% *************************************** +% * various flags (switches) * +% * treatment of substitution positions * +% *************************************** +% +% for 6- or lower-membered cycles +% +\newif\if@clip \@clipfalse% % switch for clipping at 4 +\newif\if@aclip \@aclipfalse% % switch for clipping at 1 +\newif\if@bclip \@bclipfalse% % switch for clipping at 2 +\newif\if@cclip \@cclipfalse% % switch for clipping at 3 +\newif\if@eclip \@eclipfalse% % switch for clipping at 5 +\newif\if@fclip \@fclipfalse% % switch for clipping at 6 +\newif\iforigpt \origptfalse% % switch for showing the original point +\newcount\@tmpaa%to use as a local counter +\def\@rigpt@utput#1{\iforigpt + \Put@sCircle(-\shiftii,-\shifti){50}% + \Put@oCircle(-\noshift,-\noshift){50}% + \typeout{command `#1' origin: % + (\the\noshift,\the\noshift) ---> (\the\shiftii,\the\shifti)}\fi} +\def\OrigptOutput(#1,#2)#3{\iforigpt + \Put@sCircle(-#1,-#2){50}\Put@oCircle(0,0){50}% + \typeout{command `#3' origin: (0,0) ---> (#1,#2)}\fi} +\def\OrigptOutputA(#1,#2)(#3,#4)#5{\iforigpt + \Put@sCircle(-#1,-#2){50}\Put@oCircle(-#3,-#4){50}% + \typeout{command `#5' origin: (#3,#4) ---> (#1,#2)}\fi} +\def\origptoutput{\@ifnextchar({\@origptoutput}{\@origptoutput(,)}} +\def\@origptoutput(#1){% +\@ifnextchar({\@@origptoutput(#1)}{\@@origptoutput(#1)(,)}} +\def\@@origptoutput(#1,#2)(#3,#4)#5{% +\def\TEMParga{#1}\def\TEMPargb{#3}% +\ifx\TEMParga\empty\relax +\@rigpt@utput{#5}\else\ifx\TEMPargb\empty\relax +\OrigptOutput(#1,#2){#5}\else +\OrigptOutputA(#1,#2)(#3,#4){#5}\fi\fi} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\if@gclip} +% \begin{macro}{\if@hclip} +% \begin{macro}{\if@iclip} +% \begin{macro}{\if@jclip} +% \begin{macro}{\if@xclip} +% \begin{macrocode} +% +% for further-membered cycles +% +\newif\if@gclip \@gclipfalse% +\newif\if@hclip \@hclipfalse% +\newif\if@iclip \@iclipfalse% +\newif\if@jclip \@jclipfalse% +\newif\if@xclip \@xclipfalse%added for temp. 2013/03/24 +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% +% The yl-function provides some difficulties in carrying +% out an |\if@aclip| switch etc. if |\@acliptrue| etc. are +% declared globally. In Version 2.01, |\@acliptrue| etc. are +% declared locally by the grouping mechanism of \TeX. In order to +% communicate information on |\@acliptrue| etc. outside the grouping, +% the command |\clipinfo| (globally declared) stores tentatively +% information on |@acliptrue| etc. in the form of a,b,c,$\ldots$. +% Out side the grouping, the command |\developclipinfo| is +% declared to reset |\@acliptrue| etc. +% +% \changes{v2.01}{2001/06/20}{Newly defined to communicate clipping +% information.} +% \changes{v5.01}{2013/3/24}{\cs{if@xclip} added} +% \begin{macro}{\clipinfo} +% \begin{macro}{\storeclipinfo} +% \begin{macrocode} +\def\clipinfo{} +\def\storeclipinfo{% +\if@aclip \xdef\clipinfo{\clipinfo a,}\fi +\if@bclip \xdef\clipinfo{\clipinfo b,}\fi +\if@cclip \xdef\clipinfo{\clipinfo c,}\fi +\if@clip \xdef\clipinfo{\clipinfo d,}\fi +\if@eclip \xdef\clipinfo{\clipinfo e,}\fi +\if@fclip \xdef\clipinfo{\clipinfo f,}\fi +\if@gclip \xdef\clipinfo{\clipinfo g,}\fi +\if@hclip \xdef\clipinfo{\clipinfo h,}\fi +\if@iclip \xdef\clipinfo{\clipinfo i,}\fi +\if@jclip \xdef\clipinfo{\clipinfo j,}\fi +\if@xclip \xdef\clipinfo{\clipinfo x,}\fi +}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% locally declared +% +% \begin{macro}{\developclipinfo} +% \begin{macrocode} +\def\developclipinfo{% +\expandafter\@tfor\expandafter\MEMBER\expandafter:% +\expandafter=\clipinfo\do{% +\if\MEMBER a\relax \@acliptrue\fi +\if\MEMBER b\relax \@bcliptrue\fi +\if\MEMBER c\relax \@ccliptrue\fi +\if\MEMBER d\relax \@cliptrue\fi +\if\MEMBER e\relax \@ecliptrue\fi +\if\MEMBER f\relax \@fcliptrue\fi +\if\MEMBER g\relax \@gcliptrue\fi +\if\MEMBER h\relax \@hcliptrue\fi +\if\MEMBER i\relax \@icliptrue\fi +\if\MEMBER j\relax \@jcliptrue\fi}% +\gdef\clipinfo{}} +% \end{macrocode} +% \end{macro} +% +% \subsection{Various commands and switchs for using substituents} +% +% For drawing a structure as a substituent, the argument (yl) can +% be used. The following commands and counters are used for shifting +% the substituent. +% \changes{v1.02}{1998/10/31}{Commands for setting substituents} +% \changes{v2.00}{1998/12/25}{Added: \cs{reset@yl@xydiff}} +% +% \begin{macro}{\@yl} +% \begin{macro}{\yl@xdiff} +% \begin{macro}{\yl@ydiff} +% \begin{macro}{\yl@shiftii} +% \begin{macro}{\yl@shifti} +% \begin{macro}{\@ylii} +% \begin{macro}{\@yli} +% \begin{macro}{\@@ylii} +% \begin{macro}{\@@yli} +% \begin{macrocode} +\def\@yl{(yl)} +\newcount\yl@xdiff +\newcount\yl@ydiff +\newcount\yl@shiftii +\newcount\yl@shifti +\def\@ylii{0}\def\@yli{0} +\def\@@ylii{}\def\@@yli{} +\def\reset@@yl{\gdef\@@ylii{}\gdef\@@yli{}} +\def\reset@yl@xydiff{\yl@xdiff=0 \yl@ydiff=0\relax} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The following switches are used for shifting the substituent. +% The locant flags such as |\@ylatrue| have been stoped to use. +% \changes{v1.02}{1998/10/11}{Delete \cs{@ylatrue} etc.} +% \changes{v1.02}{1998/10/31}{Commands for setting substituents} +% +% Old definition: +% \begin{macrocode} +% %%%%% \newif\if@yla \@ylafalse +% %%%%% \newif\if@ylb \@ylbfalse +% %%%%% \newif\if@ylc \@ylcfalse +% %%%%% \newif\if@yld \@yldfalse +% %%%%% \newif\if@yle \@ylefalse +% %%%%% \newif\if@ylf \@ylffalse +% \end{macrocode} +% +% \begin{macro}{\if@ylsw} +% \begin{macro}{\if@@ylsw} +% \begin{macrocode} +\newif\if@ylsw \@ylswfalse +\newif\if@@ylsw \@@ylswfalse +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{verbatim} +% Old definition: +% % \begin{macrocode} +% %%%%% \def\@reset@ylsw{\@ylafalse\@ylbfalse\@ylcfalse +% %%%%% \@yldfalse\@ylefalse\@ylffalse\@ylswfalse} +% % \end{macrocode} +% \end{verbatim} +% +% \begin{macro}{\@reset@ylsw} +% \begin{macrocode} +\def\@reset@ylsw{\@ylswfalse\@@ylswfalse} +% \end{macrocode} +% \end{macro} +% +% \subsection{ShiftPicEnv and ShiftPicEnvB} +% +% For supporting the yl-function of the XyM notation system, +% the mechanism for sifting the original point of each picture +% enviroment is encapsulated so as to create the ShiftPicEnv and +% the ShiftPicEnvB environments. +% +% \changes{v3.01}{2002/4/30}{Commands for shift of picture environment} +% \changes{v4.00}{2002/5/30}{New environment: ShiftPicEnv} +% +% The original point and the size of a picture environment is shifted +% due to whether a yl-function is declared or not. The first set of +% coordinates is usually set as (0,0), which means that the subsituent +% produced by a yl-funtions has no dimensions. +% +% Old definition for fused rings: +% \begin{verbatim} +% \if@sixfuseposv +% \yl@shiftii=-\fuseAx +% \yl@shifti=-\fuseAy +% \advance\yl@shiftii\yl@xdiff +% \advance\yl@shifti\yl@ydiff +% \begin{sfpicture}(0,0)(-\yl@shiftii,-\yl@shifti) +% \reset@yl@xydiff%1999/1/6 by S. Fujita +% \else +% \begin{sfpicture}(800,880)(-\shiftii,-\shifti)% +% \origptoutput{sixfusev}% +% \fi +% \end{verbatim} +% +% For monocyclic compounds: +% \begin{verbatim} +% \ShiftPicEnv[1]%%[0] not for a fusion unit, [1] for a fusion usit +% (0,0)(xshift,yshift)/%%picture after the action of yl function +% %%no dimension +% (x_size,y_size)(xshift,yshift)%%orginal picture +% {name}%%name of control sequence +% (xx_size,yy_size)(xxshift,yyshift)%%option to typeout abnormal shifts +% \end{verbatim} +% +% \begin{macro}{\ShiftPicEnv} +% \begin{macrocode} +\newif\ifshiftpicsw\shiftpicswfalse +\newif\if@sixfuseposv\@sixfuseposvfalse +\def\ShiftPicEnv{% +\@ifnextchar[{\ShiftPicEnv@}{\ShiftPicEnv@[0]}} +\def\ShiftPicEnv@[#1](#2)(#3)/(#4)(#5)#6{% +\@ifnextchar({\@ShiftPicEnv[#1](#2)(#3)/(#4)(#5){#6}}% +{\@ShiftPicEnv[#1](#2)(#3)/(#4)(#5){#6}(,)}} +\def\@ShiftPicEnv[#1](#2)(#3)/(#4)(#5)#6(#7){% +\@ifnextchar({\@@ShiftPicEnv[#1](#2)(#3)/(#4)(#5){#6}(#7)}% +{\@@ShiftPicEnv[#1](#2)(#3)/(#4)(#5){#6}(#7)(,)}} +\def\@@ShiftPicEnv[#1](#2)(#3)/(#4)(#5)#6(#7)(#8){% +\shiftpicswfalse%initialize +\ifcase#1\relax%%%non-fused ring +\if@ylsw \shiftpicswtrue +\yl@shiftii=\@ylii +\yl@shifti=\@yli +\fi +\or%%%fused ring +\if@sixfuseposv \shiftpicswtrue + \yl@shiftii=-\fuseAx + \yl@shifti=-\fuseAy +\fi +\fi +\ifshiftpicsw +\advance\yl@shiftii\yl@xdiff +\advance\yl@shifti\yl@ydiff +\begin{sfpicture}(#2)(#3)% + \reset@yl@xydiff%1999/1/6 by S. Fujita +\else +\begin{sfpicture}(#4)(#5)% + \origptoutput(#7)(#8){#6}% +\fi} +\def\endShiftPicEnv{\end{sfpicture}} +% \end{macrocode} +% \end{macro} +% +% Old definition for bicyclic rings: +% \begin{verbatim} +% \if@ylsw +% \yl@shiftii=\@ylii +% \yl@shifti=\@yli +% \advance\yl@shiftii\@@ylii +% \advance\yl@shifti\@@yli +% \advance\yl@shiftii\yl@xdiff +% \advance\yl@shifti\yl@ydiff +% \begin{sfpicture}(0,0)(-\yl@shiftii,-\yl@shifti) +% \reset@yl@xydiff%1999/1/6 by S. Fujita +% \else +% \begin{sfpicture}(1200,880)(-\shiftii,-\shifti)% +% \origptoutput{nonaheterov}% +% \fi +% \end{verbatim} +% +% For bicyclic compounds or others: +% \begin{verbatim} +% \ShiftPicEnvB(0,0)(xshift,yshift)/%%picture after the action of yl function +% (x_size,y_size)(xshift,yshift)%%orginal picture +% {name}%%name of control sequence +% (xx_size,yy_size)(xxshift,yyshift)%%option to typeout abnormal shifts +% \end{verbatim} +% +% \begin{macro}{\ShiftPicEnvB} +% \begin{macrocode} +\def\ShiftPicEnvB(#1)(#2)/(#3)(#4)#5{% +\@ifnextchar({\@ShiftPicEnvB(#1)(#2)/(#3)(#4){#5}}% +{\@ShiftPicEnvB(#1)(#2)/(#3)(#4){#5}(,)}} +\def\@ShiftPicEnvB(#1)(#2)/(#3)(#4)#5(#6){% +\@ifnextchar({\@@ShiftPicEnvB(#1)(#2)/(#3)(#4){#5}(#6)}% +{\@@ShiftPicEnvB(#1)(#2)/(#3)(#4){#5}(#6)(,)}} +\def\@@ShiftPicEnvB(#1)(#2)/(#3)(#4)#5(#6)(#7){% +\if@ylsw + \yl@shiftii=\@ylii + \yl@shifti=\@yli + \advance\yl@shiftii\@@ylii + \advance\yl@shifti\@@yli + \advance\yl@shiftii\yl@xdiff + \advance\yl@shifti\yl@ydiff + \begin{sfpicture}(#1)(#2)% + \reset@yl@xydiff%1999/1/6 by S. Fujita +\else + \begin{sfpicture}(#3)(#4)% + \origptoutput(#6)(#7){#5}% +\fi} +\def\endShiftPicEnvB{\end{sfpicture}} +% \end{macrocode} +% \end{macro} +% +% The further fusion of a three- or four-membered ring at a center bond +% of a six-six or six-five ring is permitted, while that of a five- +% or more-membered ring is not permitted. The macro |\@smallringsw| +% is used for such switching (fusering.sty). +% +% \begin{macro}{\if@smallringsw} +% \begin{macrocode} +\newif\if@smallringsw \@smallringswfalse +% \end{macrocode} +% \end{macro} +% +% \subsection{Initialization} +% +% The |\iniflag| command initializes all of the clipping flags. +% The |\iniatom| command initializes all of the strings of temporary use +% such as |\aaa| and |\bbb|, which are associated with respective +% atom positions. +% The |\resetbdsw| command resets all of the strings of temporary use +% such as |\@aaa| and |\@bbb|, which are associated with respective +% bond positions. +% +% \begin{macro}{\iniflag} +% \begin{macro}{\iniatom} +% \begin{macro}{\resetbdsw} +% \changes{v1.02}{1998/10/25}{Delete \sc{global}} +% \changes{v4.02a}{2004/12/27}{Change \sc{ggg} to \sc{ggg}} +% +% \begin{macrocode} +% %\def\iniflag{% +% %\global\@aclipfalse\global\@bclipfalse% +% %\global\@cclipfalse\global\@clipfalse\global\@eclipfalse% +% %\global\@fclipfalse\global\@gclipfalse\global\@hclipfalse% +% %\global\@iclipfalse\global\@jclipfalse% +% %\global\@clipfusefalse}% +% %\def\iniatom{% +% %\gdef\aaa{}\gdef\bbb{}\gdef\ccc{}\gdef\ddd{}% +% %\gdef\eee{}\gdef\fff{}% +% %\gdef\gggA{}\gdef\hhh{}\gdef\iii{}\gdef\jjj{}% +% %\gdef\@aaa{}\gdef\@bbb{}\gdef\@ccc{}\gdef\@ddd{}% +% %\gdef\@eee{}\gdef\@fff{}% +% %}% +% %\def\resetbdsw{\gdef\@aaa{a}\gdef\@bbb{b}\gdef\@ccc{c}% +% %\gdef\@ddd{d}\gdef\@eee{e}\gdef\@fff{f}}% +% \end{macrocode} +% +% \begin{macrocode} +\def\iniflag{% +\@aclipfalse\@bclipfalse\@cclipfalse\@clipfalse\@eclipfalse% +\@fclipfalse\@gclipfalse\@hclipfalse% +\@iclipfalse\@jclipfalse\@clipfusefalse% +\global\@smallringswfalse% +}% +\def\iniatom{% +\def\aaa{}\def\bbb{}\def\ccc{}\gdef\ddd{}% +\def\eee{}\def\fff{}% +\def\gggA{}\def\hhh{}\def\iii{}\gdef\jjj{}% +\def\@aaa{}\def\@bbb{}\def\@ccc{}\def\@ddd{}% +\def\@eee{}\def\@fff{}% +\def\@ggg{}\def\@hhh{}\def\@iii{}% +\def\@jjj{}\def\@kkk{}% +}% +\def\resetbdsw{\def\@aaa{a}\def\@bbb{b}\def\@ccc{c}% +\def\@ddd{d}\def\@eee{e}\def\@fff{f}% +\def\@ggg{g}\def\@hhh{h}\def\@iii{i}% +\def\@jjj{j}\def\@kkk{k}% +}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% At the beginning of \XyMTeX\ processing, we initialize atom +% information by the command |\iniatom|. +% +% \begin{macrocode} +\iniatom +% \end{macrocode} +% +% +% \section{Macros for Vertical Formulas} +% \subsection{Placing substituents for vertical formulas} +% +% Such a drawing command as |\setsixringv| uses several inner macros +% for placing substituents with bonds. The first set of inner macros +% are shown as follows. +% +% The command |\ylposition| is to obtain the shift values +% |\@ylii| and |\@yli| which are used for shifting the standard +% point of a substituent. +% The locant flags such as |\@ylatrue| have been stoped to use. +% \changes{v1.02}{1998/10/11}{Delete \cs{@ylatrue} etc.} +% \changes{v1.02}{1998/10/31}{Commands for setting substituents} +% \changes{v5.01}{2013/06/19}{bug fix: initial setting of \cs{reset@@yl}} +% +% \begin{macro}{\ylposition} +% \begin{macrocode} +\def\ylposition#1#2#3#4#5{% +\@@ylswfalse%%%\@reset@ylsw +\reset@@yl%%2013/06/19bug fix +\@forsemicol\member:=#1\do{% +\if@@ylsw\else% +\ifx\member\empty\else% +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}\relax% +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifnum#5<0\relax% +\@tmpaa=-\@tmpa\relax \advance\@tmpaa by#2\relax% +\else\@tmpaa=\@tmpa\relax \advance\@tmpaa by#2\relax\fi +\ifnum\@tmpaa>#3\relax% +\ifnum\@tmpaa<#4\relax% +\ifcase\@tmpaa%0 omit +% \end{macrocode} +% +% The flags |\@lyatrue| etc are not used in a revised edition. +% +% \begin{macrocode} + \or\ifx\aaa\empty + \gdef\@ylii{0}\gdef\@yli{-406}\global\@ylswtrue%\@ylatrue% subst. on 1 + \else + \gdef\@ylii{0}\gdef\@yli{-442}\global\@ylswtrue%\@ylatrue% subst. on 1 + \fi + \or\ifx\bbb\empty + \gdef\@ylii{-171}\gdef\@yli{-303}\global\@ylswtrue%\@ylbtrue% subst. on 2 + \else + \gdef\@ylii{-213}\gdef\@yli{-327}\global\@ylswtrue%\@ylbtrue% subst. on 2 + \fi + \or\ifx\ccc\empty + \gdef\@ylii{-171}\gdef\@yli{-103}\global\@ylswtrue%\@ylctrue% subst. on 3 + \else + \gdef\@ylii{-213}\gdef\@yli{-79}\global\@ylswtrue%\@ylctrue% subst. on 3 + \fi + \or\ifx\ddd\empty + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%\@yldtrue% subst. on 4 + \else + \gdef\@ylii{0}\gdef\@yli{36}\global\@ylswtrue%\@yldtrue% subst. on 4 + \fi + \or\ifx\eee\empty + \gdef\@ylii{171}\gdef\@yli{-103}\global\@ylswtrue%\@yletrue% subst. on 5 + \else + \gdef\@ylii{213}\gdef\@yli{-79}\global\@ylswtrue%\@yletrue% subst. on 5 + \fi + \or\ifx\fff\empty + \gdef\@ylii{171}\gdef\@yli{-303}\global\@ylswtrue%\@ylftrue% subst. on 6 + \else + \gdef\@ylii{213}\gdef\@yli{-327}\global\@ylswtrue%\@ylftrue% subst. on 6 + \fi% +\fi%end of ifcase +\fi\fi\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% The |\@substa| command is used for placing a substituent (|\@memberb|) at +% the 1-position (top) of a vertical six-membered ring. The bond linking +% between the substituent and the 1-position is drawn in the light of +% the corresponding bond modifier (|\@tmpc| = Sa, Sb, SA, SB etc.). +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/12/15}{New bond modifiers: FA, FB, GA, GB, Su, and Sd} +% \changes{v4.03}{2005/07/20}{wave bonds for stereochemistry: U, FU, GU, SU, SV} +% \begin{macro}{\@substa} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 1 % +% %%%%%%%%%%%%%%% +\def\@substa{% +\if@aclip% %clipping + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \putlratom{-31}{563}{\@memberb}% % left or right type + \Put@Line(0,436)(0,1){110}% % single bond at 1 + \else\if\@tmpc B%(B) beta + \yl@xdiff=-36\relax + \yl@ydiff=-27\relax + \putlatom{-42}{563}{\@memberb}% % left type + {% + \thicklines% + \Put@Line(-18,436)(-3,5){60}% % single bond at 1 + }% + \else\if\@tmpc A%(A) alpha + \yl@xdiff=37\relax + \yl@ydiff=-27\relax + \putratom{41}{563}{\@memberb}% % right type + \dotorline(18,436)(3,5){60}/(18,436)(72,526)% + \else\if\@tmpc u%(u) up --- (B) beta + \yl@xdiff=36\relax + \yl@ydiff=-27\relax + \putratom{41}{563}{\@memberb}% % right type + {% + \thicklines% + \Put@Line(18,436)(3,5){60}% % single bond at 1 + }% + \else\if\@tmpc d%(d) down --- (A) alpha + \yl@xdiff=-37\relax + \yl@ydiff=-27\relax + \putlatom{-42}{563}{\@memberb}% % left type + \dotorline(-18,436)(-3,5){60}/(-18,436)(-72,526)% + \else\if\@tmpc b%(b) beta + \yl@xdiff=-36\relax + \yl@ydiff=-27\relax + \putlatom{-42}{563}{\@memberb}% % left type + \Put@Line(-18,436)(-3,5){60}% % single bond at 1 + \else\if\@tmpc a%(a) alpha + \yl@xdiff=37\relax + \yl@ydiff=-27\relax + \putratom{41}{563}{\@memberb}% % right type + \Put@Line(18,436)(3,5){60}% % single bond at 1 + \else\if\@tmpc V%(V) beta undefined + \yl@xdiff=-36\relax + \yl@ydiff=-27\relax + \putlatom{-42}{563}{\@memberb}% % left type + {% + \WaveBonds% + \Put@Line(-18,436)(-3,5){60}% % single bond at 1 + }% + \else\if\@tmpc U%(U) alpha undefined + \yl@xdiff=37\relax + \yl@ydiff=-27\relax + \putratom{41}{563}{\@memberb}% % right type + {% + \WaveBonds% + \Put@Line(18,436)(3,5){60}% % single bond at 1 + }% + \fi\fi\fi\fi\fi% + \fi\fi\fi\fi + \else\if\@tmpb D%double bond + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \putlratom{-31}{563}{\@memberb}% % left or right type + \Put@Line(-12,436)(0,1){110}% % double bond at 1 + \Put@Line(12,436)(0,1){110}% % double bond at 1 + \else\if\@tmpb B%beta single bond + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \putlratom{-31}{563}{\@memberb}% % left or right type + {% + \thicklines% + \Put@Line(0,436)(0,1){110}% % single bond at 1 + }% + \else\if\@tmpb A%alpha single bond + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \putlratom{-31}{563}{\@memberb}% % left or right type + \dotorline(0,436)(0,1){110}/(0,436)(0,546)% + \else\if\@tmpb U%undefined single bond + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \putlratom{-31}{563}{\@memberb}% % left or right type + {% + \WaveBonds% + \Put@Line(0,436)(0,1){110}% % single wave bond at 1 + }% + \else\if\@tmpb F%fused bond + {\let\@tmpb=\@tmpc\@clipfusetrue + \Put@Direct(0,406){\setatombondd}% + }% + \else\if\@tmpb G%fused bond + {\let\@tmpb=\@tmpc\@clipfusetrue + \Put@Direct(0,406){\setatombondf}% + }% + \else% + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \putlratom{-31}{563}{\@memberb}% % left or right type + \Put@Line(0,436)(0,1){110}% % single bond at 1 + \fi\fi\fi\fi% + \fi\fi\fi% +\else% % no clipping + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \putlratom{-31}{563}{\@memberb}% % left or right type + \Put@Line(0,406)(0,1){140}% % single bond at 1 + \else\if\@tmpc B%(B) beta + \yl@xdiff=-30\relax + \yl@ydiff=-37\relax + \putlatom{-42}{563}{\@memberb}% % left type + {% + \thicklines% + \Put@Line(0,406)(-3,5){72}% % single bond at 1 + }% + \else\if\@tmpc A%(A) alpha + \yl@xdiff=31\relax + \yl@ydiff=-37\relax + \putratom{41}{563}{\@memberb}% % right type + \dotorline(0,406)(3,5){72}/(0,406)(72,526)% + \else\if\@tmpc u%(u) upper --- (B) beta + \yl@xdiff=30\relax + \yl@ydiff=-37\relax + \putratom{41}{563}{\@memberb}% % right type + {% + \thicklines% + \Put@Line(0,406)(3,5){72}% % single bond at 1 + }% + \else\if\@tmpc d%(d) down --- (A) alpha + \yl@xdiff=-31\relax + \yl@ydiff=-37\relax + \putlatom{-42}{563}{\@memberb}% % left type + \dotorline(0,406)(-3,5){72}/(0,406)(-72,526)% + \else\if\@tmpc b%(b) beta + \yl@xdiff=-30\relax + \yl@ydiff=-37\relax + \putlatom{-42}{563}{\@memberb}% % left type + \Put@Line(0,406)(-3,5){72}% % single bond at 1 + \else\if\@tmpc a%(a) alpha + \yl@xdiff=31\relax + \yl@ydiff=-37\relax + \putratom{41}{563}{\@memberb}% % right type + \Put@Line(0,406)(3,5){72}% % single bond at 1 + \else\if\@tmpc V%(V) beta undefined + \yl@xdiff=-30\relax + \yl@ydiff=-37\relax + \putlatom{-42}{563}{\@memberb}% % left type + {% + \WaveBonds% + \Put@Line(0,406)(-3,5){72}% % single bond at 1 + }% + \else\if\@tmpc U%(U) alpha undefined + \yl@xdiff=31\relax + \yl@ydiff=-37\relax + \putratom{41}{563}{\@memberb}% % right type + {% + \WaveBonds% + \Put@Line(0,406)(3,5){72}% % single bond at 1 + }% + \fi\fi\fi\fi\fi% + \fi\fi\fi\fi% + \else\if\@tmpb D%double bond + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \putlratom{-31}{563}{\@memberb}% % left or right type + \Put@Line(-12,406)(0,1){140}% % double bond at 1 + \Put@Line(12,406)(0,1){140}% % double bond at 1 + \else\if\@tmpb B%beta single bond + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \putlratom{-31}{563}{\@memberb}% % left or right type + {% + \thicklines% + \Put@Line(0,406)(0,1){140}% % single bond at 1 + }% + \else\if\@tmpb A%alpha single bond + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \putlratom{-31}{563}{\@memberb}% % left or right type + \dotorline(0,406)(0,1){140}/(0,406)(0,546)% + \else\if\@tmpb U%undefined single bond + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \putlratom{-31}{563}{\@memberb}% % left or right type + {% + \WaveBonds% + \Put@Line(0,406)(0,1){140}% % single wave bond at 1 + }% + \else\if\@tmpb F%fused bond + {\let\@tmpb=\@tmpc\@clipfusefalse + \Put@Direct(0,406){\setatombondd}% + }% + \else\if\@tmpb G%fused bond + {\let\@tmpb=\@tmpc\@clipfusefalse + \Put@Direct(0,406){\setatombondf}% + }% + \else% + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \putlratom{-31}{563}{\@memberb}% % left or right type + \Put@Line(0,406)(0,1){140}% % single bond at 1 + \fi\fi\fi\fi% + \fi\fi\fi + \fi}% end of \@substa +% \end{macrocode} +% \end{macro} +% +% The |\@substb| command is used for placing a substituent (|\@memberb|) at +% the 2-position (upper-right) of a vertical six-membered ring. +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/12/15}{New bond modifiers: FA, FB, GA, GB, Su, and Sd} +% \changes{v4.03}{2005/07/20}{wave bonds for stereochemistry: U, FU, GU, SU, SV} +% \begin{macro}{\@substb} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 2 % +% %%%%%%%%%%%%%%% +\def\@substb{% + \if@bclip %clipping + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=-10\relax + \yl@ydiff=24\relax + \putratom{311}{363}{\@memberb}% % right type + \Put@Line(201,327)(5,3){100}% % single bond at 2 + \else\if\@tmpc B%(B) beta + \yl@xdiff=-7\relax + \yl@ydiff=38\relax + \putratom{268}{420}{\@memberb}% % right type + {% + \thicklines% + \Put@Line(201,358)(3,5){60}% % single bond at 2 + }% + \else\if\@tmpc A%(A) alpha + \yl@xdiff=-17\relax + \yl@ydiff=23\relax + \putratom{318}{280}{\@memberb}% % right type + \dotorline(201,303)(1,0){100}/(201,303)(301,303)% + \else\if\@tmpc u%(u) up --- (B) beta + \yl@xdiff=-17\relax + \yl@ydiff=23\relax + \putratom{318}{280}{\@memberb}% % right type + {% + \thicklines% + \Put@Line(201,303)(1,0){100}% % single bond at 2 + }% + \else\if\@tmpc d%(d) down --- (A) alpha + \yl@xdiff=-7\relax + \yl@ydiff=38\relax + \putratom{268}{420}{\@memberb}% % right type + \dotorline(201,358)(3,5){60}/(201,358)(261,458)% + \else\if\@tmpc b%(b) beta + \yl@xdiff=-7\relax + \yl@ydiff=38\relax + \putratom{268}{420}{\@memberb}% % right type + \Put@Line(201,358)(3,5){60}% % single bond at 2 + \else\if\@tmpc a%(a) alpha% + \yl@xdiff=-17\relax + \yl@ydiff=23\relax + \putratom{318}{280}{\@memberb}% % right type + \Put@Line(201,303)(1,0){100}% % single bond at 2 + \else\if\@tmpc V%(V) beta undefined + \yl@xdiff=-7\relax + \yl@ydiff=38\relax + \putratom{268}{420}{\@memberb}% % right type + {% + \WaveBonds% + \Put@Line(201,358)(3,5){60}% % single bond at 2 + }% + \else\if\@tmpc U%(U) alphau undefined + \yl@xdiff=-17\relax + \yl@ydiff=23\relax + \putratom{318}{280}{\@memberb}% % right type + {% + \WaveBonds% + \Put@Line(201,303)(1,0){100}% % single bond at 2 + }% + \fi\fi\fi\fi\fi% + \fi\fi\fi\fi% + \else\if\@tmpb D%double bond + \yl@xdiff=-10\relax + \yl@ydiff=18\relax + \putratom{311}{363}{\@memberb}% % right type + \Put@Line(194,331)(5,3){100}% % double bond at 2 + \Put@Line(200,305)(5,3){100}% % double bond at 2 + \else\if\@tmpb B%beta single bond + \yl@xdiff=-10\relax + \yl@ydiff=24\relax + \putratom{311}{363}{\@memberb}% % right type + {% + \thicklines% + \Put@Line(201,327)(5,3){100}% % single bond at 2 + }% + \else\if\@tmpb A%alpha single bond + \yl@xdiff=-10\relax + \yl@ydiff=24\relax + \putratom{311}{363}{\@memberb}% % right type + \dotorline(201,327)(5,3){100}/(201,327)(301,387)% + \else\if\@tmpb U%undefined single bond + \yl@xdiff=-10\relax + \yl@ydiff=24\relax + \putratom{311}{363}{\@memberb}% % right type + {% + \WaveBonds% + \Put@Line(210,327)(5,3){100}% % single wave bond at 2 + }% + \else\if\@tmpb F%fused bond + {\let\@tmpb=\@tmpc\@clipfusetrue + \Put@Direct(171,303){\setatombonda}% + }% + \else\if\@tmpb G%fused bond + {\let\@tmpb=\@tmpc\@clipfusetrue + \Put@Direct(171,303){\setatombonde}% + }% + \else% + \yl@xdiff=-10\relax + \yl@ydiff=24\relax + \putratom{311}{363}{\@memberb}% % right type + \Put@Line(201,327)(5,3){100}% % single bond at 2 + \fi\fi\fi\fi% + \fi\fi\fi% + \else% %no clipping + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=-10\relax + \yl@ydiff=12\relax + \putratom{301}{363}{\@memberb}% % right type + \Put@Line(171,303)(5,3){120}% % single bond at 2 + \else\if\@tmpc B%(B) beta + \yl@xdiff=-15\relax + \yl@ydiff=13\relax + \putratom{258}{410}{\@memberb}% % right type + {% + \thicklines% + \Put@Line(171,303)(3,5){72}% % single bond at 2 + }% + \else\if\@tmpc A%(A) alpha + \yl@xdiff=-7\relax + \yl@ydiff=23\relax + \putratom{318}{280}{\@memberb}% % right type + \dotorline(171,303)(1,0){140}/(171,303)(311,303)% + \else\if\@tmpc u%(u) up --- (B) beta + \yl@xdiff=-7\relax + \yl@ydiff=23\relax + \putratom{318}{280}{\@memberb}% % right type + {% + \thicklines% + \Put@Line(171,303)(1,0){140}% % single bond at 2 + }% + \else\if\@tmpc d%(d) down --- (A) alpha + \yl@xdiff=-15\relax + \yl@ydiff=13\relax + \putratom{258}{410}{\@memberb}% % right type + \dotorline(171,303)(3,5){72}/(171,303)(243,423)% + \else\if\@tmpc b%(b) beta + \yl@xdiff=-15\relax + \yl@ydiff=13\relax + \putratom{258}{410}{\@memberb}% % right type + \Put@Line(171,303)(3,5){72}% % single bond at 2 + \else\if\@tmpc a%(a) alpha + \yl@xdiff=-7\relax + \yl@ydiff=23\relax + \putratom{318}{280}{\@memberb}% % right type + \Put@Line(171,303)(1,0){140}% % single bond at 2 + \else\if\@tmpc V%(V) beta undefined + \yl@xdiff=-15\relax + \yl@ydiff=13\relax + \putratom{258}{410}{\@memberb}% % right type + {% + \WaveBonds% + \Put@Line(171,303)(3,5){72}% % single bond at 2 + }% + \else\if\@tmpc U%(U) alpha undefined + \yl@xdiff=-7\relax + \yl@ydiff=23\relax + \putratom{318}{280}{\@memberb}% % right type + {% + \WaveBonds% + \Put@Line(171,303)(1,0){140}% % single bond at 2 + }% + \fi\fi\fi\fi\fi% + \fi\fi\fi\fi% + \else\if\@tmpb D%double bond + \yl@xdiff=-10\relax + \yl@ydiff=6\relax + \putratom{301}{363}{\@memberb}% % right type + \Put@Line(168,310)(5,3){120}% % double bond at 2 + \Put@Line(174,284)(5,3){120}% % double bond at 2 + \else\if\@tmpb B%beta single bond + \yl@xdiff=-10\relax + \yl@ydiff=12\relax + \putratom{301}{363}{\@memberb}% % right type + {% + \thicklines% + \Put@Line(171,303)(5,3){120}% % single bond at 2 + }% + \else\if\@tmpb A%alpha single bond + \yl@xdiff=-10\relax + \yl@ydiff=12\relax + \putratom{301}{363}{\@memberb}% % right type + \dotorline(171,303)(5,3){120}/(171,303)(291,375)% + \else\if\@tmpb U%undefined single bond + \yl@xdiff=-10\relax + \yl@ydiff=12\relax + \putratom{301}{363}{\@memberb}% % right type + {% + \WaveBonds% + \Put@Line(171,303)(5,3){120}% % single wave bond at 2 + }% + \else\if\@tmpb F%fused bond + {\let\@tmpb=\@tmpc\@clipfusefalse + \Put@Direct(171,303){\setatombonda}% + }% + \else\if\@tmpb G%fused bond + {\let\@tmpb=\@tmpc\@clipfusefalse + \Put@Direct(171,303){\setatombonde}% + }% + \else% + \yl@xdiff=-10\relax + \yl@ydiff=12\relax + \putratom{301}{363}{\@memberb}% % right type + \Put@Line(171,303)(5,3){120}% % single bond at 2 + \fi\fi\fi\fi% + \fi\fi\fi + \fi}% end of \@substb +% \end{macrocode} +% \end{macro} +% +% The |\@substc| command is used for placing a substituent (|\@memberb|) at +% the 3-position (lower-right) of a vertical six-membered ring. +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff|} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/12/15}{New bond modifiers: FA, FB, GA, GB, Su, and Sd} +% \changes{v4.03}{2005/07/20}{wave bonds for stereochemistry: U, FU, GU, SU, SV} +% \begin{macro}{\@substc} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 3 % +% %%%%%%%%%%%%%%% +\def\@substc{% + \if@cclip %clipping + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=-10\relax + \yl@ydiff=46\relax + \putratom{311}{-27}{\@memberb}% % right type + \Put@Line(201,79)(5,-3){110}% % single bond at 3 + \else\if\@tmpc B%(B) beta + \yl@xdiff=-7\relax + \yl@ydiff=28\relax + \putratom{268}{-80}{\@memberb}% % right type + {% + \thicklines% + \Put@Line(201,48)(3,-5){60}% % single bond at 3 + }% + \else\if\@tmpc A%(A) alpha + \yl@xdiff=-17\relax + \yl@ydiff=29\relax + \putratom{318}{74}{\@memberb}% % right type + \dotorline(201,103)(1,0){100}/(201,103)(301,103)% + \else\if\@tmpc u%(u) up --- (B) beta + \yl@xdiff=-17\relax + \yl@ydiff=29\relax + \putratom{318}{74}{\@memberb}% % right type + {% + \thicklines% + \Put@Line(201,103)(1,0){100}% % single bond at 3 + }% + \else\if\@tmpc d%(d) down --- (A) alpha + \yl@xdiff=-7\relax + \yl@ydiff=28\relax + \putratom{268}{-80}{\@memberb}% % right type + \dotorline(201,48)(3,-5){60}/(201,48)(261,-52)% + \else\if\@tmpc b%(b) beta + \yl@xdiff=-7\relax + \yl@ydiff=28\relax + \putratom{268}{-80}{\@memberb}% % right type + \Put@Line(201,48)(3,-5){60}% % single bond at 3 + \else\if\@tmpc a%(a) alpha + \yl@xdiff=-17\relax + \yl@ydiff=29\relax + \putratom{318}{74}{\@memberb}% % right type + \Put@Line(201,103)(1,0){100}% % single bond at 3 + \else\if\@tmpc V%(V) beta undefined + \yl@xdiff=-7\relax + \yl@ydiff=28\relax + \putratom{268}{-80}{\@memberb}% % right type + {% + \WaveBonds% + \Put@Line(201,48)(3,-5){60}% % single bond at 3 + }% + \else\if\@tmpc U%(U) alpha undefined + \yl@xdiff=-17\relax + \yl@ydiff=29\relax + \putratom{318}{74}{\@memberb}% % right type + {% + \WaveBonds% + \Put@Line(201,103)(1,0){100}% % single bond at 3 + }% + \fi\fi\fi\fi\fi% + \fi\fi\fi\fi + \else\if\@tmpb D%double bond + \yl@xdiff=-10\relax + \yl@ydiff=52\relax + \putratom{311}{-27}{\@memberb}% % right type + \Put@Line(194,76)(5,-3){100}% % double bond at 3 + \Put@Line(200,101)(5,-3){100}% % double bond at 3 + \else\if\@tmpb B%beta single bond + \yl@xdiff=-10\relax + \yl@ydiff=46\relax + \putratom{311}{-27}{\@memberb}% % right type + {% + \thicklines% + \Put@Line(201,79)(5,-3){100}% % single bond at 3 + }% + \else\if\@tmpb A%alpha single bond + \yl@xdiff=-10\relax + \yl@ydiff=46\relax + \putratom{311}{-27}{\@memberb}% % right type + \dotorline(201,79)(5,-3){100}/(201,79)(301,19)% + \else\if\@tmpb U%undefined single bond + \yl@xdiff=-10\relax + \yl@ydiff=46\relax + \putratom{311}{-27}{\@memberb}% % right type + {% + \WaveBonds% + \Put@Line(210,79)(5,-3){100}% % single wave bond at 3 + }% + \else\if\@tmpb F%fused bond + {\let\@tmpb=\@tmpc\@clipfusetrue + \Put@Direct(171,103){\setatombondf}% + }% + \else\if\@tmpb G%fused bond + {\let\@tmpb=\@tmpc\@clipfusetrue + \Put@Direct(171,103){\setatombondc}% + }% + \else% + \yl@xdiff=-10\relax + \yl@ydiff=46\relax + \putratom{311}{-27}{\@memberb}% % right type + \Put@Line(201,79)(5,-3){100}% % single bond at 3 + \fi\fi\fi\fi% + \fi\fi\fi% + \else%no clipping + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=-10\relax + \yl@ydiff=58\relax + \putratom{301}{-27}{\@memberb}% % right type + \Put@Line(171,103)(5,-3){120}% % single bond at 3 + \else\if\@tmpc B%(B) beta + \yl@xdiff=-10\relax + \yl@ydiff=48\relax + \putratom{258}{-70}{\@memberb}% % right type + {% + \thicklines% + \Put@Line(171,103)(3,-5){72}% % single bond at 3 + }% + \else\if\@tmpc A%(A) alpha + \yl@xdiff=-10\relax + \yl@ydiff=30\relax + \putratom{318}{74}{\@memberb}% % right type + \dotorline(171,103)(1,0){140}/(171,103)(311,103)% + \else\if\@tmpc u%(u) up --- (B) beta + \yl@xdiff=-10\relax + \yl@ydiff=30\relax + \putratom{318}{74}{\@memberb}% % right type + {% + \thicklines% + \Put@Line(171,103)(1,0){140}% % single bond at 3 + }% + \else\if\@tmpc d%(d) down --- (A) alpha + \yl@xdiff=-10\relax + \yl@ydiff=48\relax + \putratom{258}{-70}{\@memberb}% % right type + \dotorline(171,103)(3,-5){72}/(171,103)(243,-17)% + \else\if\@tmpc b%(b) beta + \yl@xdiff=-10\relax + \yl@ydiff=48\relax + \putratom{258}{-70}{\@memberb}% % right type + \Put@Line(171,103)(3,-5){72}% % single bond at 3 + \else\if\@tmpc a%(a) alpha + \yl@xdiff=-10\relax + \yl@ydiff=30\relax + \putratom{318}{74}{\@memberb}% % right type + \Put@Line(171,103)(1,0){140}% % single bond at 3 + \else\if\@tmpc V%(V) beta undefined + \yl@xdiff=-10\relax + \yl@ydiff=48\relax + \putratom{258}{-70}{\@memberb}% % right type + {% + \WaveBonds% + \Put@Line(171,103)(3,-5){72}% % single bond at 3 + }% + \else\if\@tmpc U%(U) alpha undefined + \yl@xdiff=-10\relax + \yl@ydiff=30\relax + \putratom{318}{74}{\@memberb}% % right type + {% + \WaveBonds% + \Put@Line(171,103)(1,0){140}% % single bond at 3 + }% + \fi\fi\fi\fi\fi% + \fi\fi\fi\fi + \else\if\@tmpb D%double bond + \yl@xdiff=-10\relax + \yl@ydiff=65\relax + \putratom{301}{-27}{\@memberb}% % right type + \Put@Line(168,96)(5,-3){120}% % double bond at 3 + \Put@Line(174,121)(5,-3){120}% % double bond at 3 + \else\if\@tmpb B%beta single bond + \yl@xdiff=-10\relax + \yl@ydiff=58\relax + \putratom{301}{-27}{\@memberb}% % right type + {% + \thicklines% + \Put@Line(171,103)(5,-3){120}% % single bond at 3 + }% + \else\if\@tmpb A%alpha single bond + \yl@xdiff=-10\relax + \yl@ydiff=58\relax + \putratom{301}{-27}{\@memberb}% % right type + \dotorline(171,103)(5,-3){120}/(171,103)(291,31)% + \else\if\@tmpb U%undefined single bond + \yl@xdiff=-10\relax + \yl@ydiff=58\relax + \putratom{301}{-27}{\@memberb}% % right type + {% + \WaveBonds% + \Put@Line(171,103)(5,-3){120}% % single wave bond at 3 + }% + \else\if\@tmpb F%fused bond + {\let\@tmpb=\@tmpc\@clipfusefalse + \Put@Direct(171,103){\setatombondf}% + }% + \else\if\@tmpb G%fused bond + {\let\@tmpb=\@tmpc\@clipfusefalse + \Put@Direct(171,103){\setatombondc}% + }% + \else% + \yl@xdiff=-10\relax + \yl@ydiff=58\relax + \putratom{301}{-27}{\@memberb}% % right type + \Put@Line(171,103)(5,-3){120}% % single bond at 3 + \fi\fi\fi\fi% + \fi\fi\fi + \fi +}% end of \@substc +% \end{macrocode} +% \end{macro} +% +% The |\@substd| command is used for placing a substituent (|\@memberb|) at +% the 4-position (bottom) of a vertical six-membered ring. +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/12/15}{New bond modifiers: FA, FB, GA, GB, Su, and Sd} +% \changes{v4.03}{2005/07/20}{wave bonds for stereochemistry: U, FU, GU, SU, SV} +% \begin{macro}{\@substd} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 4 % +% %%%%%%%%%%%%%%% +\def\@substd{% +\if@clip %clipping + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \putlratom{-31}{-230}{\@memberb}% % left or right type + \Put@Line(0,-30)(0,-1){110}% % single bond at 4 + \else\if\@tmpc B%(B) beta + \yl@xdiff=-36\relax + \yl@ydiff=100\relax + \putlatom{-42}{-230}{\@memberb}% % left type + {% + \thicklines% + \Put@Line(-18,-30)(-3,-5){60}% % single bond at 4 + }% + \else\if\@tmpc A%(A) alpha + \yl@xdiff=37\relax + \yl@ydiff=100\relax + \putratom{41}{-230}{\@memberb}% % right type + \dotorline(18,-30)(3,-5){60}/(18,-30)(72,-120)% + \else\if\@tmpc u%(u) up --- (B) beta + \yl@xdiff=37\relax + \yl@ydiff=100\relax + \putratom{41}{-230}{\@memberb}% % right type + {% + \thicklines% + \Put@Line(18,-30)(3,-5){60}% % single bond at 4 + }% + \else\if\@tmpc d%(d) down --- (A) alpha + \yl@xdiff=-36\relax + \yl@ydiff=100\relax + \putlatom{-42}{-230}{\@memberb}% % left type + \dotorline(-18,-30)(-3,-5){60}/(-18,-30)(-78,-130)% + \else\if\@tmpc b%(b) beta + \yl@xdiff=-36\relax + \yl@ydiff=100\relax + \putlatom{-42}{-230}{\@memberb}% % left type + \Put@Line(-18,-30)(-3,-5){60}% % single bond at 4 + \else\if\@tmpc a%(a) alpha + \yl@xdiff=37\relax + \yl@ydiff=100\relax + \putratom{41}{-230}{\@memberb}% % right type + \Put@Line(18,-30)(3,-5){60}% % single bond at 4 + \else\if\@tmpc V%(V) beta undefined + \yl@xdiff=-36\relax + \yl@ydiff=100\relax + \putlatom{-42}{-230}{\@memberb}% % left type + {% + \WaveBonds% + \Put@Line(-18,-30)(-3,-5){60}% % single bond at 4 + }% + \else\if\@tmpc U%(U) alpha undefined + \yl@xdiff=37\relax + \yl@ydiff=100\relax + \putratom{41}{-230}{\@memberb}% % right type + {% + \WaveBonds% + \Put@Line(18,-30)(3,-5){60}% % single bond at 4 + }% + \fi\fi\fi\fi\fi% + \fi\fi\fi\fi + \else\if\@tmpb D%double bond + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \putlratom{-31}{-230}{\@memberb}% % left or right type + \Put@Line(-12,-30)(0,-1){110}% % double bond at 4 + \Put@Line(12,-30)(0,-1){110}% % double bond at 4 + \else\if\@tmpb B%beta single bond + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \putlratom{-31}{-230}{\@memberb}% % left or right type + {% + \thicklines% + \Put@Line(0,-30)(0,-1){110}% % single bond at 4 + }% + \else\if\@tmpb A%alpha single bond + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \putlratom{-31}{-230}{\@memberb}% % left or right type + \dotorline(0,-30)(0,-1){110}/(0,-30)(0,-140)% + \else\if\@tmpb U%undefined single bond + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \putlratom{-31}{-230}{\@memberb}% % right type + {% + \WaveBonds% + \Put@Line(0,-30)(0,-1){110}% % single wave bond at 4 + }% + \else\if\@tmpb F%fused bond + {\let\@tmpb=\@tmpc\@clipfusetrue + \Put@Direct(0,0){\setatombonde}% + }% + \else\if\@tmpb G%fused bond + {\let\@tmpb=\@tmpc\@clipfusetrue + \Put@Direct(0,0){\setatombondg}% + }% + \else% + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \putlratom{-31}{-230}{\@memberb}% % left or right type + \Put@Line(0,-30)(0,-1){110}% % single bond at 4 + \fi\fi\fi\fi% + \fi\fi\fi% + \else%no clipping + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \putlratom{-31}{-230}{\@memberb}% % left or right type + \Put@Line(0,0)(0,-1){140}% % single bond at 4 + \else\if\@tmpc B%(B) beta + \yl@xdiff=-30\relax + \yl@ydiff=110\relax + \putlatom{-42}{-230}{\@memberb}% % left type + {% + \thicklines% + \Put@Line(0,0)(-3,-5){72}% % single bond at 4 + }% + \else\if\@tmpc A%(A) alpha + \yl@xdiff=31\relax + \yl@ydiff=110\relax + \putratom{41}{-230}{\@memberb}% % right type + \dotorline(0,0)(3,-5){72}/(0,0)(72,-120)% + \else\if\@tmpc u%(u) up --- (B) beta + \yl@xdiff=31\relax + \yl@ydiff=110\relax + \putratom{41}{-230}{\@memberb}% % right type + {% + \thicklines% + \Put@Line(0,0)(3,-5){72}% % single bond at 4 + }% + \else\if\@tmpc d%(d) down --- (A) alpha + \yl@xdiff=-30\relax + \yl@ydiff=110\relax + \putlatom{-42}{-230}{\@memberb}% % left type + \dotorline(0,0)(-3,-5){72}/(0,0)(-72,-120)% + \else\if\@tmpc b%(b) beta + \yl@xdiff=-30\relax + \yl@ydiff=110\relax + \putlatom{-42}{-230}{\@memberb}% % left type + \Put@Line(0,0)(-3,-5){72}% % single bond at 4 + \else\if\@tmpc a%(a) alpha + \yl@xdiff=31\relax + \yl@ydiff=110\relax + \putratom{41}{-230}{\@memberb}% % right type + \Put@Line(0,0)(3,-5){72}% % single bond at 4 + \else\if\@tmpc V%(V) beta undefined + \yl@xdiff=-30\relax + \yl@ydiff=110\relax + \putlatom{-42}{-230}{\@memberb}% % left type + {% + \WaveBonds% + \Put@Line(0,0)(-3,-5){72}% % single bond at 4 + }% + \else\if\@tmpc U%(U) alpha undefined + \yl@xdiff=31\relax + \yl@ydiff=110\relax + \putratom{41}{-230}{\@memberb}% % right type + {% + \WaveBonds% + \Put@Line(0,0)(3,-5){72}% % single bond at 4 + }% + \fi\fi\fi\fi\fi% + \fi\fi\fi\fi% + \else\if\@tmpb D%double bond + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \putlratom{-31}{-230}{\@memberb}% % left or right type + \Put@Line(-12,0)(0,-1){140}% % double bond at 4 + \Put@Line(12,0)(0,-1){140}% % double bond at 4 + \else\if\@tmpb B%beta single bond + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \putlratom{-31}{-230}{\@memberb}% % left or right type + {% + \thicklines% + \Put@Line(0,0)(0,-1){140}% % single bond at 4 + }% + \else\if\@tmpb A%alpha single bond + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \putlratom{-31}{-230}{\@memberb}% % left or right type + \dotorline(0,0)(0,-1){140}/(0,0)(0,-140)% + \else\if\@tmpb U%undefined single bond + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \putlratom{-31}{-230}{\@memberb}% % right type + {% + \WaveBonds% + \Put@Line(0,0)(0,-1){140}% % single wave bond at 4 + }% + \else\if\@tmpb F%fused bond + {\let\@tmpb=\@tmpc\@clipfusefalse + \Put@Direct(0,0){\setatombonde}% + }% + \else\if\@tmpb G%fused bond + {\let\@tmpb=\@tmpc\@clipfusefalse + \Put@Direct(0,0){\setatombondg}% + }% + \else% + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \putlratom{-31}{-230}{\@memberb}% % left or right type + \Put@Line(0,0)(0,-1){140}% % single bond at 4 + \fi\fi\fi\fi% + \fi\fi\fi% + \fi}%end of \@substd +% \end{macrocode} +% \end{macro} +% +% The |\@subste| command is used for placing a substituent (|\@memberb|) at +% the 5-position (lower-left) of a vertical six-membered ring. +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/12/15}{New bond modifiers: FA, FB, GA, GB, Su, and Sd} +% \changes{v4.03}{2005/07/20}{wave bonds for stereochemistry: U, FU, GU, SU, SV} +% \begin{macro}{\@subste} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 5 % +% %%%%%%%%%%%%%%% +\def\@subste{% + \if@eclip%clipping + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=10\relax + \yl@ydiff=46\relax + \putlatom{-311}{-27}{\@memberb}% % left type + \Put@Line(-201,79)(-5,-3){110}% % single bond at 5 + \else\if\@tmpc B%(B) beta + \yl@xdiff=7\relax + \yl@ydiff=38\relax + \putlatom{-268}{-80}{\@memberb}% % left type + {% + \thicklines% + \Put@Line(-201,48)(-3,-5){60}% % single bond at 5 + }% + \else\if\@tmpc A%(A) alpha + \yl@xdiff=17\relax + \yl@ydiff=29\relax + \putlatom{-318}{74}{\@memberb}% % left type + \dotorline(-201,103)(-1,0){100}/(-201,103)(-301,103)% + \else\if\@tmpc u% (u) up --- (B) beta + \yl@xdiff=17\relax + \yl@ydiff=29\relax + \putlatom{-318}{74}{\@memberb}% % left type + {% + \thicklines% + \Put@Line(-201,103)(-1,0){100}% % single bond at 5 + }% + \else\if\@tmpc d% (d) down --- (A) alpha + \yl@xdiff=7\relax + \yl@ydiff=38\relax + \putlatom{-268}{-80}{\@memberb}% % left type + \dotorline(-201,48)(-3,-5){60}/(-201,48)(-261,-52)% + \else\if\@tmpc b%(b) beta + \yl@xdiff=7\relax + \yl@ydiff=38\relax + \putlatom{-268}{-80}{\@memberb}% % left type + \Put@Line(-201,48)(-3,-5){60}% % single bond at 5 + \else\if\@tmpc a%(a) alpha + \yl@xdiff=17\relax + \yl@ydiff=29\relax + \putlatom{-318}{74}{\@memberb}% % left type + \Put@Line(-201,103)(-1,0){100}% % single bond at 5 + \else\if\@tmpc V%(V) beta undefined + \yl@xdiff=7\relax + \yl@ydiff=38\relax + \putlatom{-268}{-80}{\@memberb}% % left type + {% + \WaveBonds% + \Put@Line(-201,48)(-3,-5){60}% % single bond at 5 + }% + \else\if\@tmpc U%(U) alpha undefined + \yl@xdiff=17\relax + \yl@ydiff=29\relax + \putlatom{-318}{74}{\@memberb}% % left type + {% + \WaveBonds% + \Put@Line(-201,103)(-1,0){100}% % single bond at 5 + }% + \fi\fi\fi\fi\fi% + \fi\fi\fi\fi% + \else\if\@tmpb D%double bond + \yl@xdiff=10\relax + \yl@ydiff=62\relax + \putlatom{-311}{-27}{\@memberb}% % left type + \Put@Line(-194,76)(-5,-3){100}% % double bond at 5 + \Put@Line(-200,101)(-5,-3){100}% % double bond at 5 + \else\if\@tmpb B%beta single bond + \yl@xdiff=10\relax + \yl@ydiff=46\relax + \putlatom{-311}{-27}{\@memberb}% % left type + {% + \thicklines% + \Put@Line(-201,79)(-5,-3){100}% % single bond at 5 + }% + \else\if\@tmpb A%alpha single bond + \yl@xdiff=10\relax + \yl@ydiff=46\relax + \putlatom{-311}{-27}{\@memberb}% % left type + \dotorline(-201,79)(-5,-3){100}/(-201,79)(-301,21)% + \else\if\@tmpb U%undefined single bond + \yl@xdiff=10\relax + \yl@ydiff=46\relax + \putlatom{-311}{-27}{\@memberb}% % right type + {% + \WaveBonds% + \Put@Line(-220,79)(-5,-3){100}% % single wave bond at 5 + }% + \else\if\@tmpb F%fused bond + {\let\@tmpb=\@tmpc\@clipfusetrue + \Put@Direct(-171,103){\setatombondc}% + }% + \else\if\@tmpb G%fused bond + {\let\@tmpb=\@tmpc\@clipfusetrue + \Put@Direct(-171,103){\setatombondd}% + }% + \else% + \yl@xdiff=10\relax + \yl@ydiff=46\relax + \putlatom{-311}{-27}{\@memberb}% % left type + \Put@Line(-201,79)(-5,-3){100}% % single bond at 5 + \fi\fi\fi\fi% + \fi\fi\fi% +\else%no clipping + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=10\relax + \yl@ydiff=56\relax + \putlatom{-301}{-27}{\@memberb}% % left type + \Put@Line(-171,103)(-5,-3){120}% % single bond at 5 + \else\if\@tmpc B%(B) beta + \yl@xdiff=15\relax + \yl@ydiff=63\relax + \putlatom{-258}{-70}{\@memberb}% % left type + {% + \thicklines% + \Put@Line(-171,103)(-3,-5){72}% % single bond at 5 + }% + \else\if\@tmpc A%(A) alpha + \yl@xdiff=15\relax + \yl@ydiff=29\relax + \putlatom{-326}{74}{\@memberb}% % left type + \dotorline(-171,103)(-1,0){140}/(-171,103)(-311,103)% + \else\if\@tmpc u%(u) up --- (B) beta + \yl@xdiff=15\relax + \yl@ydiff=29\relax + \putlatom{-326}{74}{\@memberb}% % left type + {% + \thicklines% + \Put@Line(-171,103)(-1,0){140}% % single bond at 5 + }% + \else\if\@tmpc d%(d) down --- (A) alpha + \yl@xdiff=15\relax + \yl@ydiff=63\relax + \putlatom{-258}{-70}{\@memberb}% % left type + \dotorline(-171,103)(-3,-5){72}/(-171,103)(-243,-17)% + \else\if\@tmpc b%(b) beta + \yl@xdiff=15\relax + \yl@ydiff=63\relax + \putlatom{-258}{-70}{\@memberb}% % left type + \Put@Line(-171,103)(-3,-5){72}% % single bond at 5 + \else\if\@tmpc a%(a) alpha + \yl@xdiff=15\relax + \yl@ydiff=29\relax + \putlatom{-326}{74}{\@memberb}% % left type + \Put@Line(-171,103)(-1,0){140}% % single bond at 5 + \else\if\@tmpc V%(V) beta undefined + \yl@xdiff=15\relax + \yl@ydiff=63\relax + \putlatom{-258}{-70}{\@memberb}% % left type + {% + \WaveBonds% + \Put@Line(-171,103)(-3,-5){72}% % single bond at 5 + }% + \else\if\@tmpc U%(U) alpha undefined + \yl@xdiff=15\relax + \yl@ydiff=29\relax + \putlatom{-326}{74}{\@memberb}% % left type + {% + \WaveBonds% + \Put@Line(-171,103)(-1,0){140}% % single bond at 5 + }% + \fi\fi\fi\fi\fi% + \fi\fi\fi\fi + \else\if\@tmpb D%double bond + \yl@xdiff=10\relax + \yl@ydiff=62\relax + \putlatom{-301}{-27}{\@memberb}% % left type + \Put@Line(-168,96)(-5,-3){120}% % double bond at 5 + \Put@Line(-174,121)(-5,-3){120}% % double bond at 5 + \else\if\@tmpb B%beta single bond + \yl@xdiff=10\relax + \yl@ydiff=56\relax + \putlatom{-301}{-27}{\@memberb}% % left type + {% + \thicklines% + \Put@Line(-171,103)(-5,-3){120}% % single bond at 5 + }% + \else\if\@tmpb A%alpha single bond + \yl@xdiff=-10\relax + \yl@ydiff=56\relax + \putlatom{-301}{-27}{\@memberb}% % left type + \dotorline(-171,103)(-5,-3){120}/(-171,103)(-311,31)% + \else\if\@tmpb U%undefined single bond + \yl@xdiff=-10\relax + \yl@ydiff=56\relax + \putlatom{-301}{-27}{\@memberb}% % right type + {% + \WaveBonds% + \Put@Line(-171,103)(-5,-3){120}% % single wave bond at 5 + }% + \else\if\@tmpb F%fused bond + {\let\@tmpb=\@tmpc\@clipfusefalse + \Put@Direct(-171,103){\setatombondc}% + }% + \else\if\@tmpb G%fused bond + {\let\@tmpb=\@tmpc\@clipfusefalse + \Put@Direct(-171,103){\setatombondd}% + }% + \else% + \yl@xdiff=10\relax + \yl@ydiff=56\relax + \putlatom{-301}{-27}{\@memberb}% % left type + \Put@Line(-171,103)(-5,-3){120}%% single bond at 5 + \fi\fi\fi\fi% + \fi\fi\fi% + \fi}% end of \@subste +% \end{macrocode} +% \end{macro} +% +% The |\@substf| command is used for placing a substituent (|\@memberb|) at +% the 6-position (upper-left) of a vertical six-membered ring. +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/12/15}{New bond modifiers: FA, FB, GA, GB, Su, and Sd} +% \changes{v4.03}{2005/07/20}{wave bonds for stereochemistry: U, FU, GU, SU, SV} +% \begin{macro}{\@substf} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 6 % +% %%%%%%%%%%%%%%% +\def\@substf{% + \if@fclip %clipping + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=10\relax + \yl@ydiff=24\relax + \putlatom{-311}{363}{\@memberb}% % left type + \Put@Line(-201,327)(-5,3){100}% % single bond at 6 + \else\if\@tmpc B%(B) beta + \yl@xdiff=8\relax + \yl@ydiff=38\relax + \putlatom{-268}{420}{\@memberb}% % left type + {% + \thicklines% + \Put@Line(-201,358)(-3,5){60}% % single bond at 6 + }% + \else\if\@tmpc A%(A) alpha + \yl@xdiff=17\relax + \yl@ydiff=23\relax + \putlatom{-318}{280}{\@memberb}% % left type + \dotorline(-201,303)(-1,0){100}/(-201,303)(-301,303)% + \else\if\@tmpc u%(u) up --- (B) beta + \yl@xdiff=17\relax + \yl@ydiff=23\relax + \putlatom{-318}{280}{\@memberb}% % left type + {% + \thicklines% + \Put@Line(-201,303)(-1,0){100}% % single bond at 6 + }% + \else\if\@tmpc d%(d) down --- (A) alpha + \yl@xdiff=8\relax + \yl@ydiff=38\relax + \putlatom{-268}{420}{\@memberb}% % left type + \dotorline(-201,358)(-3,5){60}/(-201,358)(-261,458)% + \else\if\@tmpc b%(b) beta + \yl@xdiff=8\relax + \yl@ydiff=38\relax + \putlatom{-268}{420}{\@memberb}% % left type + \Put@Line(-201,358)(-3,5){60}% % single bond at 6 + \else\if\@tmpc a%(a) alpha + \yl@xdiff=17\relax + \yl@ydiff=23\relax + \putlatom{-318}{280}{\@memberb}% % left type + \Put@Line(-201,303)(-1,0){100}% % single bond at 6 + \else\if\@tmpc V%(V) beta undefined + \yl@xdiff=8\relax + \yl@ydiff=38\relax + \putlatom{-268}{420}{\@memberb}% % left type + {% + \WaveBonds% + \Put@Line(-201,358)(-3,5){60}% % single bond at 6 + }% + \else\if\@tmpc U%(U) alpha undefined + \yl@xdiff=17\relax + \yl@ydiff=23\relax + \putlatom{-318}{280}{\@memberb}% % left type + {% + \WaveBonds% + \Put@Line(-201,303)(-1,0){100}% % single bond at 6 + }% + \fi\fi\fi\fi\fi% + \fi\fi\fi\fi + \else\if\@tmpb D%double bond + \yl@xdiff=10\relax + \yl@ydiff=6\relax + \putlatom{-311}{363}{\@memberb}% % left type + \Put@Line(-194,331)(-5,3){100}% % double bond at 6 + \Put@Line(-200,305)(-5,3){100}% % double bond at 6 + \else\if\@tmpb B%beta single bond + \yl@xdiff=10\relax + \yl@ydiff=24\relax + \putlatom{-311}{363}{\@memberb}% % left type + {% + \thicklines% + \Put@Line(-201,327)(-5,3){100}% % single bond at 6 + }% + \else\if\@tmpb A%alpha single bond + \yl@xdiff=10\relax + \yl@ydiff=24\relax + \putlatom{-311}{363}{\@memberb}% % left type + \dotorline(-201,327)(-5,3){100}/(-201,327)(-301,387)% + \else\if\@tmpb U%undefined single bond + \yl@xdiff=10\relax + \yl@ydiff=24\relax + \putlatom{-311}{363}{\@memberb}% % right type + {% + \WaveBonds% + \Put@Line(-211,327)(-5,3){100}% % single wave bond at 6 + }% + \else\if\@tmpb F%fused bond + {\let\@tmpb=\@tmpc\@clipfusetrue + \Put@Direct(-171,303){\setatombondg}% + }% + \else\if\@tmpb G%fused bond + {\let\@tmpb=\@tmpc\@clipfusetrue + \Put@Direct(-171,303){\setatombonda}% + }% + \else% + \yl@xdiff=10\relax + \yl@ydiff=24\relax + \putlatom{-311}{363}{\@memberb}% % left type + \Put@Line(-201,327)(-5,3){100}% % single bond at 6 + \fi\fi\fi\fi% + \fi\fi\fi +\else%no clipping + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=10\relax + \yl@ydiff=12\relax + \putlatom{-301}{363}{\@memberb}% % left type + \Put@Line(-171,303)(-5,3){120}% % single bond at 6 + \else\if\@tmpc B%(B) beta + \yl@xdiff=15\relax + \yl@ydiff=13\relax + \putlatom{-258}{410}{\@memberb}% % left type + {% + \thicklines% + \Put@Line(-171,303)(-3,5){72}% % single bond at 6 + }% + \else\if\@tmpc A%(A) alpha + \yl@xdiff=15\relax + \yl@ydiff=23\relax + \putlatom{-326}{280}{\@memberb}% % left type + \dotorline(-171,303)(-1,0){140}/(-171,303)(-311,303)% + \else\if\@tmpc u%(u) up --- (B) beta + \yl@xdiff=15\relax + \yl@ydiff=23\relax + \putlatom{-326}{280}{\@memberb}% % left type + {% + \thicklines% + \Put@Line(-171,303)(-1,0){140}% % single bond at 6 + }% + \else\if\@tmpc d%(d) down --- (A) alpha + \yl@xdiff=15\relax + \yl@ydiff=13\relax + \putlatom{-258}{410}{\@memberb}% % left type + \dotorline(-171,303)(-3,5){72}/(-171,303)(-243,423)% + \else\if\@tmpc b%(b) beta + \yl@xdiff=15\relax + \yl@ydiff=13\relax + \putlatom{-258}{410}{\@memberb}% % left type + \Put@Line(-171,303)(-3,5){72}% % single bond at 6 + \else\if\@tmpc a%(a) alpha + \yl@xdiff=15\relax + \yl@ydiff=23\relax + \putlatom{-326}{280}{\@memberb}% % left type + \Put@Line(-171,303)(-1,0){140}% % single bond at 6 + \else\if\@tmpc V%(V) beta undefined + \yl@xdiff=15\relax + \yl@ydiff=13\relax + \putlatom{-258}{410}{\@memberb}% % left type + {% + \WaveBonds% + \Put@Line(-171,303)(-3,5){72}% % single bond at 6 + }% + \else\if\@tmpc U%(U) alpha undefined + \yl@xdiff=15\relax + \yl@ydiff=23\relax + \putlatom{-326}{280}{\@memberb}% % left type + {% + \WaveBonds% + \Put@Line(-171,303)(-1,0){140}% % single bond at 6 + }% + \fi\fi\fi\fi\fi% + \fi\fi\fi\fi% + \else\if\@tmpb D%double bond + \yl@xdiff=10\relax + \yl@ydiff=6\relax + \putlatom{-301}{363}{\@memberb}% % left type + \Put@Line(-168,310)(-5,3){120}% % double bond at 6 + \Put@Line(-174,284)(-5,3){120}% % double bond at 6 + \else\if\@tmpb B%beta single bond + \yl@xdiff=10\relax + \yl@ydiff=12\relax + \putlatom{-301}{363}{\@memberb}% % left type + {% + \thicklines% + \Put@Line(-171,303)(-5,3){120}% % single bond at 6 + }% + \else\if\@tmpb A%alpha single bond + \yl@xdiff=-10\relax + \yl@ydiff=12\relax + \putlatom{-301}{363}{\@memberb}% % left type + \dotorline(-171,303)(-5,3){120}/(-171,303)(-311,375)% + \else\if\@tmpb U%undefined single bond + \yl@xdiff=-10\relax + \yl@ydiff=12\relax + \putlatom{-301}{363}{\@memberb}% % right type + {% + \WaveBonds% + \Put@Line(-171,303)(-5,3){120}% % single wave bond at 6 + }% + \else\if\@tmpb F%fused bond + {\let\@tmpb=\@tmpc\@clipfusefalse + \Put@Direct(-171,303){\setatombondg}% + }% + \else\if\@tmpb G%fused bond + {\let\@tmpb=\@tmpc\@clipfusefalse + \Put@Direct(-171,303){\setatombonda}% + }% + \else% + \yl@xdiff=10\relax + \yl@ydiff=12\relax + \putlatom{-301}{363}{\@memberb}% % left type + \Put@Line(-171,303)(-5,3){120}% % single bond at 6 + \fi\fi\fi\fi% + \fi\fi\fi +\fi}% end of \@substf +% \end{macrocode} +% \end{macro} +% +% \subsection{Coloring Atoms and Bonds} +% +% The \textsf{xcolor} package is loaded to color atoms and bonds. +% \changes{v5.01}{2011/02/24}{Added} +% \begin{macrocode} +\RequirePackage{xcolor} +% \end{macrocode} +% +% The command |\addbscolor| is defined to color substitution bonds. +% \changes{v5.00}{2010/10/01}{Bond coloring} +% \changes{v5.01}{2011/02/24}{Bond coloring: \cs{addbscolor} changed and +% \cs{Addbscolor} added. But deleted.} +% +% \begin{verbatim} +% e.g., \addbscolor{\cyan}{CH$_{3}$} +% e.g., \Addbscolor{cyan}{CH$_{3}$} +% \end{verbatim} +% +% \begin{macro}{\addbscolor} +% \begin{macro}{\Addbscolor} +% \begin{macro}{\setbscolor} +% \begin{macrocode} +\def\bondsubstcolor{} +%\def\psbondsubstcolor{black}%added 2011/02/24 +\def\addbscolor#1#2{#2\gdef\bondsubstcolor{#1}} +%\def\addbscolor#1#2{#2\gdef\bondsubstcolor{#1}%changed 2011/02/24 +%\gdef\psbondsubstcolor{\expandafter\@gobble\string #1}} +%\def\Addbscolor#1#2{#2%added 2011/02/24 +%\expandafter\gdef\expandafter\bondsubstcolor\expandafter{\csname #1\endcsname}% +%\gdef\psbondsubstcolor{#1}} +\newif\ifbscolor +\def\setbscolor{\addbscolor{}{}% +\edef\@tmptmpb{\@tmpb}\edef\@tmptmpc{\@tmpc}%store original values +\ifbscolor\setbox0=\hbox{\@memberb}\bondsubstcolor\setbox0=\hbox{}\fi +\edef\@tmpb{\@tmptmpb}\edef\@tmpc{\@tmptmpc}%recover the original values +}% +\def\setBScolor#1{\begingroup\setbscolor#1\addbscolor{}{}\endgroup}% +\def\bscolorswON{\bscolortrue} +\def\bscolorswOFF{\bscolorfalse} +\bscolorswON%default bond coloring +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% In addition to standard colors (e.g., \verb/\cyan/), +% any colors can be created by using \verb/\defineXyMcolor/. +% \changes{v5.01}{2011/02/24}{New color: \cs{defineXyMcolor}} +% +% \begin{verbatim} +% \defineXyMcolor{My color name}{Color model}{Color value} +% e.g., +% \defineXyMcolor{MyXyMcolor}{cmyk}{1,0,1,0} +% \end{verbatim} +% This defines a color named ``MyXyMcolor'' and the +% corresponding control sequence \verb/MyXyMcolor/, +% just as ``cyan'' corresponds to \verb/\cyan/. +% +% \begin{macro}{\defineXyMcolor} +% \begin{macrocode} +\def\defineXyMcolor#1#2#3{% +\definecolor{#1}{#2}{#3}% +\@ifundefined{psset}{% +\expandafter\def\csname#1\endcsname{\color{#1}}}% +{\expandafter\def\csname#1\endcsname{\color{#1}% +\psset{linecolor=#1}}}} +% \end{macrocode} +% \end{macro} +% +% Pre-defined colors (e.g., olive) in the \textsf{xcolor} package +% can be renamed to be applied to atom- and bond-coloring. +% \changes{v5.01}{2011/02/24}{New color: \cs{XyMcolor}} +% +% \begin{verbatim} +% \XyMcolor{new color_name}[color_model]{pre-defined color_name} +% \end{verbatime} +% e.g., +% \begin{verbatim} +% \XyMcolor{XyMolive}{olive} +% \end{verbatime} +% +% \begin{macro}{\XyMcolor} +% \begin{macrocode} +\def\XyMcolor#1{% +\@ifnextchar[{\@XyMcolor{#1}}{\@XyMcolor{#1}[]}} +\def\@XyMcolor#1[#2]#3{% +\edef\tempColorModel{#2}% +\ifx\tempColorModel\@empty\colorlet{#1}{#3}\else +\colorlet{#1}[#2]{#3}\fi +\@ifundefined{psset}{% +\expandafter\def\csname#1\endcsname{\color{#1}}}% +{\expandafter\def\csname#1\endcsname{\color{#1}% +\psset{linecolor=#1}}}} +% \end{macrocode} +% \end{macro} +% +% \subsection{Setting-up substituents and bonds on a six-membered ring} +% +% The |\setsixringv| takes 5 arguments. +% +% \begin{verbatim} +% ************************************************************** +% * setting of atoms and bonds on a vertical six-membered ring * +% ************************************************************** +% +% \setsixringv{SUBSLIST}{AD}{LOWER}{UPPER}{ORDER} +% \end{verbatim} +% +% The first argument |SUBSLIST| is a list of substituents, which is +% represented in the standard format of \XyMTeX{}. +% +% \begin{verbatim} +% SUBSLIST: list of substituents (max 6 substitution positions) +% +% for n = 1 to 6 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% \end{verbatim} +% +% The second argument |AD| is an adjustment value, which adjusts the original +% set of locant numbers into the standard one between 1 to 6 for drawing +% a six-membered ring. +% The effective range of the standared set of locant numbers is +% restricted by the auguments |LOWER| and |UPPER|. A minus value of +% the last argument shows the anti-clockwise numbering, while zero or +% a plus value represents the clockwise numbering. +% +% \begin{verbatim} +% +% AD : adjustment e.g. 0 for six-membered rings +% LOWER : lower limit LOWER < effective range < UPPER +% UPPER : upper limit +% ORDER : >= 0 clockwise, <0 anti-clockwise +% \end{verbatim} +% +% \changes{v1.02}{1998/10/31}{Adding switches \cs{@yla} etc.} +% +% \begin{macro}{\setsixringv} +% \begin{macrocode} +\def\setsixringv#1#2#3#4#5{% +\@forsemicol\member:=#1\do{% +\ifx\member\empty\else% +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifnum#5 < 0\relax% +\@tmpaa=-\@tmpa\relax \advance\@tmpaa by#2\relax% +\else\@tmpaa=\@tmpa\relax \advance\@tmpaa by#2\relax \fi +\ifnum\@tmpaa >#3\relax% +\ifnum\@tmpaa <#4\relax% +\ifcase\@tmpaa%0 omit +% \end{macrocode} +% +% The following commands are not used in a revised version +% because of the direct use of |\ifx\@memberb\@yl\else...\fi|. +% +% \begin{macrocode} +% %\or \if@yla\else\@substa\fi% subst. on 1 +% %\or \if@ylb\else\@substb\fi% subst. on 2 +% %\or \if@ylc\else\@substc\fi% subst. on 3 +% %\or \if@yld\else\@substd\fi% subst. on 4 +% %\or \if@yle\else\@subste\fi% subst. on 5 +% %\or \if@ylf\else\@substf\fi% subst. on 6 +% \end{macrocode} +% +% \begin{macrocode} + \or{\setbscolor\@substa\addbscolor{}{}}%% subst. on 1 + \or{\setbscolor\@substb\addbscolor{}{}}%% subst. on 2 + \or{\setbscolor\@substc\addbscolor{}{}}%% subst. on 3 + \or{\setbscolor\@substd\addbscolor{}{}}%% subst. on 4 + \or{\setbscolor\@subste\addbscolor{}{}}%% subst. on 5 + \or{\setbscolor\@substf\addbscolor{}{}}%% subst. on 6 +\fi%end of ifcase +\fi% +\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% \subsection{Setting-up substituents and bonds on a decaline ring} +% +% The command |\setdecaringv| +% has been stopped to use and replaced by |\setsixringv| +% (version 1.02). +% +% Definition of |\setdecaringv| has been deleted (version 2.01). +% +% \subsection{Setting-up substituents and bonds at fused positions} +% +% The command |\ylfusedposition| is to obtain the shift values +% |\@ylii| and |\@yli| which are used for shifting the standard +% point of a substituent. +% The locant flags such as |\@ylatrue| have been stopped to use. +% \changes{v1.02}{1998/10/11}{Delete \cs{@ylatrue} etc.} +% \changes{v1.02}{1998/10/13}{Adding \cs{@fused@link} condition} +% \changes{v1.02}{1998/10/31}{Commands for setting substituents} +% +% \begin{macro}{\ylfusedposition} +% \begin{macrocode} +\def\ylfusedposition#1#2#3#4#5{% +\@@ylswfalse%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else% +\ifx\member\empty\else% +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifnum#5<0\relax% +\@tmpaa=-\@tmpa\relax\advance\@tmpaa by #2\relax% +\@fused@linktrue +\else\@tmpaa=\@tmpa\relax\advance\@tmpaa by #2\relax +\@fused@linkfalse\fi% +\ifnum\@tmpaa >#3\relax% +\ifnum\@tmpaa <#4\relax% +\ifcase\@tmpaa% +% %%%%%%%%%%%%%%%%%% +% 0 fused positions % F == (171,303) G == (171,103) +% %%%%%%%%%%%%%%%%%% + \if\@tmpb F%single bond at F (fused position) + \def\@ylii{-171}\def\@yli{-303}\@ylswtrue%\@ylatrue% subst. on 0 + \else\if\@tmpb G%single bond at G (fused position) + \def\@ylii{-171}\def\@yli{-103}\@ylswtrue%\@ylatrue% subst. on 0 + \fi\fi% +% %%%%%%%%%%%%%%%% +\or% subst. on 1 F == (0,406), G == (171,303) for \@fused@linkfalse + % subst. on 1 G == (0,406), F == (171,303) for \@fused@linktrue +% %%%%%%%%%%%%%%%% +\if@fused@link + \if\@tmpb G%single bond at F (5,-3) fusion + \def\@ylii{0}\def\@yli{-406}\@ylswtrue%\@ylatrue% subst. on 1 + \else\if\@tmpb F%single bond at G + \def\@ylii{-171}\def\@yli{-303}\@ylswtrue%\@ylatrue% subst. on 1 + \fi\fi% +\else + \if\@tmpb F%single bond at F (5,-3) fusion + \def\@ylii{0}\def\@yli{-406}\@ylswtrue%\@ylatrue% subst. on 1 + \else\if\@tmpb G%single bond at G + \def\@ylii{-171}\def\@yli{-303}\@ylswtrue%\@ylatrue% subst. on 1 + \fi\fi% +\fi +% %%%%%%%%%%%%%%%% +\or% subst. on 2 F == (0,406), G == (-171,303) for \@fused@linkfalse + % subst. on 2 G == (0,406), F == (-171,303) for \@fused@linktrue +% %%%%%%%%%%%%%%%% +\if@fused@link + \if\@tmpb G%single bond at (-5,-3) fusion + \def\@ylii{0}\def\@yli{-406}\@ylswtrue%\@ylatrue% subst. on 2 + \else\if\@tmpb F%single bond at G + \def\@ylii{171}\def\@yli{-303}\@ylswtrue%\@ylatrue% subst. on 2 + \fi\fi% +\else + \if\@tmpb F%single bond at (-5,-3) fusion + \def\@ylii{0}\def\@yli{-406}\@ylswtrue%\@ylatrue% subst. on 2 + \else\if\@tmpb G%single bond at G + \def\@ylii{171}\def\@yli{-303}\@ylswtrue%\@ylatrue% subst. on 2 + \fi\fi% +\fi +% %%%%%%%%%%%%%%%%%% +\or %3 fused positions % G == (303,171) F == (103,171) +% %%%%%%%%%%%%%%%%%% + \if\@tmpb G%single bond at G (fused position) + \def\@ylii{-303}\def\@yli{-171}\@ylswtrue%\@ylatrue% subst. on 3 + \else\if\@tmpb F%single bond at F (fused position) + \def\@ylii{-103}\def\@yli{-171}\@ylswtrue%\@ylatrue% subst. on 3 + \fi\fi% +\fi%end of ifcase +\fi\fi\fi\fi\fi}}% end of \ylfusedposition +% \end{macrocode} +% \end{macro} +% +% The bond-setting commands |\GFbonda|, |\GFbondb|, |\GFbondc| and +% |\GFbondd|, which are separated from the old |\setfusedbond| command, +% are used to place a bond and a substituent at a fulsed position of +% such a compound as a decaline. +% +% \changes{v1.02}{1998/10/12}{Separate \cs{GFbonda} etc.} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v4.03}{2005/07/20}{wave bonds for stereochemistry: FU, GU} +% +% \begin{macro}{\GFbonda} +% \begin{macro}{\GFbonda@a} +% \begin{macro}{\GFbonda@b} +% \begin{macrocode} +\def\GFbonda{% +% %%%%%%%%%%%%%%%%%% +% 0 fused positions % F == (171,303) G == (171,103) +% %%%%%%%%%%%%%%%%%% + \if\@tmpb F%single bond at F (fused position) + \GFbonda@a + \else\if\@tmpb G%single bond at G (fused position) + \GFbonda@b + \fi\fi% +}%end of GFbonda +% \end{macrocode} +% +% \begin{macrocode} +\def\GFbonda@a{% + \if\@tmpc B%beta single bond + \yl@xdiff=31\relax%171-140 + \yl@ydiff=-17\relax%460-(303+140) + \putlratom{140}{460}{\@memberb}% % left or right type + {% + \thicklines% + \Put@Line(171,303)(0,1){140}% % single bond at F + }% + \else\if\@tmpc A%alpha single bond + \yl@xdiff=31\relax%171-140 + \yl@ydiff=-17\relax%460-(303+140) + \putlratom{140}{460}{\@memberb}% % left or right type + \dotorline(171,303)(0,1){140}/(171,303)(171,443)% + \else\if\@tmpc U% unspecified single bond + \yl@xdiff=31\relax%171-140 + \yl@ydiff=-17\relax%460-(303+140) + \putlratom{140}{460}{\@memberb}% % left or right type +% \Put@Direct(168,303){$\wr$}% unspecified single bond at F +% \Put@Direct(168,353){$\wr$}% +% \Put@Direct(168,403){$\wr$}% + {% + \WaveBonds% + \Put@Line(171,303)(0,1){140}% % single wave bond at 1 + }% + \else\if\@tmpc S%beta single bond + \yl@xdiff=31\relax%171-140 + \yl@ydiff=-17\relax%460-(303+140) + \putlratom{140}{460}{\@memberb}% % left or right type + \Put@Line(171,303)(0,1){140}% % single bond at F + \else\ifx\@tmpc\empty%beta single bond + \yl@xdiff=31\relax%171-140 + \yl@ydiff=-17\relax%460-(303+140) + \putlratom{140}{460}{\@memberb}% % left or right type + \Put@Line(171,303)(0,1){140}% % single bond at F + \fi\fi\fi\fi\fi% +}% +% \end{macrocode} +% +% \begin{macrocode} +\def\GFbonda@b{% + \if\@tmpc B%beta single bond + \yl@xdiff=31\relax%171-140 + \yl@ydiff=90\relax%127-(140-103) + \putlratom{140}{-127}{\@memberb}% % left or right type + {% + \thicklines% + \Put@Line(171,103)(0,-1){140}% % single bond at G + }% + \else\if\@tmpc A%alpha single bond + \yl@xdiff=31\relax%171-140 + \yl@ydiff=90\relax%127-(140-103) + \putlratom{140}{-127}{\@memberb}% % left or right type + \dotorline(171,103)(0,-1){140}/(171,103)(171,-37)% + \else\if\@tmpc U%beta single bond + \yl@xdiff=31\relax%171-140 + \yl@ydiff=90\relax%127-(140-103) + \putlratom{140}{-127}{\@memberb}% % left or right type +% \Put@Direct(168,43){$\wr$}% unspecified single bond at G +% \Put@Direct(168,-8){$\wr$}% +% \Put@Direct(168,-57){$\wr$}% + {% + \WaveBonds% + \Put@Line(171,103)(0,-1){140}% % single wave bond at 1 + }% + \else\if\@tmpc S%alpha single bond + \yl@xdiff=31\relax%171-140 + \yl@ydiff=90\relax%127-(140-103) + \putlratom{140}{-127}{\@memberb}% % left or right type + \Put@Line(171,103)(0,-1){140}% % single bond at G + \else\ifx\@tmpc\empty%alpha single bond + \yl@xdiff=31\relax%171-140 + \yl@ydiff=90\relax%127-(140-103) + \putlratom{140}{-127}{\@memberb}% % left or right type + \Put@Line(171,103)(0,-1){140}% % single bond at G + \fi\fi\fi\fi\fi% +}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\GFbondb} +% \begin{macro}{\GFbondb@a} +% \begin{macro}{\GFbondb@b} +% \begin{macrocode} +\def\GFbondb{% +% %%%%%%%%%%%%%%%% +% subst. on 1 F == (0,406), G == (171,303) for \@fused@linkfalse +% subst. on 1 G == (0,406), F == (171,303) for \@fused@linktrue +% %%%%%%%%%%%%%%%% + \if@fused@link + \if\@tmpb G%single bond at G (5,-3) fusion + \GFbondb@a + \else\if\@tmpb F%single bond at F + \GFbondb@b + \fi\fi% + \else + \if\@tmpb F%single bond at F (5,-3) fusion + \GFbondb@a + \else\if\@tmpb G%single bond at G + \GFbondb@b + \fi\fi% + \fi +}% end of \GFbondb +% \end{macrocode} +% +% \begin{macrocode} +\def\GFbondb@a{% + \if\@tmpc B%beta single bond + \yl@xdiff=10\relax% + \yl@ydiff=22\relax% + \putlatom{-130}{466}{\@memberb}% % left type + {% + \thicklines% + \Put@Line(0,406)(-5,3){120}% % single bond at F + }% + \else\if\@tmpc A%alpha single bond + \yl@xdiff=10\relax% + \yl@ydiff=22\relax% + \putlatom{-130}{466}{\@memberb}% % left type + \dotorline(0,406)(-5,3){120}/(0,406)(-120,478)% + \else\if\@tmpc U%unspecified single bond + \yl@xdiff=10\relax% + \yl@ydiff=22\relax% + \putlatom{-130}{466}{\@memberb}% % left type + {% + \WaveBonds% + \Put@Line(0,406)(-5,3){120}% % single bond at F + }% + \else\if\@tmpc S%beta single bond + \yl@xdiff=10\relax% + \yl@ydiff=22\relax% + \putlatom{-130}{466}{\@memberb}% % left type + \Put@Line(0,406)(-5,3){120}% % single bond at F + \else\ifx\@tmpc\empty%beta single bond + \yl@xdiff=10\relax% + \yl@ydiff=22\relax% + \putlatom{-130}{466}{\@memberb}% % left type + \Put@Line(0,406)(-5,3){120}% % single bond at F + \else\if\@tmpc D%beta single bond (downward) + \yl@xdiff=31\relax% + \yl@ydiff=90\relax% + \putlratom{-31}{176}{\@memberb}% % left or right type + {% + \thicklines% + \Put@Line(0,406)(0,-1){140}% % single bond at F + }% + \else\if\@tmpc C%alpha single bond (downward) + \yl@xdiff=31\relax% + \yl@ydiff=90\relax% + \putlratom{-31}{176}{\@memberb}% % left or right type + \dotorline(0,406)(0,-1){140}/(0,406)(0,266)% + \fi\fi\fi\fi\fi\fi\fi% +}% end of \GFbondb@a +% \end{macrocode} +% +% \begin{macrocode} +\def\GFbondb@b{% + \if\@tmpc B%beta single bond + \yl@xdiff=-10\relax% + \yl@ydiff=58\relax% + \putratom{301}{173}{\@memberb}% % right type + {% + \thicklines% + \Put@Line(171,303)(5,-3){120}% % single bond at G + }% + \else\if\@tmpc A%alpha single bond + \yl@xdiff=-10\relax% + \yl@ydiff=58\relax% + \putratom{301}{173}{\@memberb}% % right type + \dotorline(171,303)(5,-3){120}/(171,303)(291,231)% + \else\if\@tmpc U%unspecified single bond + \yl@xdiff=-10\relax% + \yl@ydiff=58\relax% + \putratom{301}{173}{\@memberb}% % right type + {% + \WaveBonds% + \Put@Line(171,303)(5,-3){120}% % single bond at G + }% + \else\if\@tmpc S%alpha single bond + \yl@xdiff=-10\relax% + \yl@ydiff=58\relax% + \putratom{301}{173}{\@memberb}% % right type + \Put@Line(171,303)(5,-3){120}% % single bond at G + \else\ifx\@tmpc\empty%alpha single bond + \yl@xdiff=-10\relax% + \yl@ydiff=58\relax% + \putratom{301}{173}{\@memberb}% % right type + \Put@Line(171,303)(5,-3){120}% % single bond at G + \else\if\@tmpc D%beta single bond (upward) + \yl@xdiff=31\relax% + \yl@ydiff=-17\relax% + \putlratom{140}{460}{\@memberb}% % left or right type + {% + \thicklines% + \Put@Line(171,303)(0,1){140}% % single bond at G + }% + \else\if\@tmpc C%alpha single bond (upward) + \yl@xdiff=31\relax% + \yl@ydiff=-17\relax% + \putlratom{140}{460}{\@memberb}% % left or right type + \dotorline(171,303)(0,1){140}/(171,303)(171,443)% + \fi\fi\fi\fi\fi\fi\fi% +}% end of \GFbondb@b +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\GFbondc} +% \begin{macro}{\GFbondc@a} +% \begin{macro}{\GFbondc@b} +% \begin{macrocode} +\def\GFbondc{% +% %%%%%%%%%%%%%%%% +% subst. on 2 F == (0,406), G == (-171,303) for \@fused@linkfalse +% subst. on 2 G == (0,406), F == (-171,303) for \@fused@linktrue +% %%%%%%%%%%%%%%%% +\if@fused@link + \if\@tmpb G%single bond at (-5,-3) fusion + \GFbondc@a + \else\if\@tmpb F%single bond at F + \GFbondc@b + \fi\fi% +\else + \if\@tmpb F%single bond at (-5,-3) fusion + \GFbondc@a + \else\if\@tmpb G%single bond at G + \GFbondc@b + \fi\fi% +\fi +}% end of \GFbondc +% \end{macrocode} +% +% \begin{macrocode} + \def\GFbondc@a{% + \if\@tmpc B%beta single bond + \yl@xdiff=-10\relax% + \yl@ydiff=12\relax% + \putratom{130}{466}{\@memberb}% % right type + {% + \thicklines% + \Put@Line(0,406)(5,3){120}% % single bond at F + }% + \else\if\@tmpc A%alpha single bond + \yl@xdiff=-10\relax% + \yl@ydiff=12\relax% + \putratom{130}{466}{\@memberb}% % right type + \dotorline(0,406)(5,3){120}/(0,406)(120,478)% + \else\if\@tmpc U%unspecified single bond + \yl@xdiff=-10\relax% + \yl@ydiff=12\relax% + \putratom{130}{466}{\@memberb}% % right type + {% + \WaveBonds% + \Put@Line(0,406)(5,3){120}% % single bond at F + }% + \else\if\@tmpc S%beta single bond + \yl@xdiff=-10\relax% + \yl@ydiff=12\relax% + \putratom{130}{466}{\@memberb}% % right type + \Put@Line(0,406)(5,3){120}% % single bond at F + \else\ifx\@tmpc\empty%beta single bond + \yl@xdiff=-10\relax% + \yl@ydiff=12\relax% + \putratom{130}{466}{\@memberb}% % right type + \Put@Line(0,406)(5,3){120}% % single bond at F + \else\if\@tmpc D%beta single bond (downward) + \yl@xdiff=31\relax% + \yl@ydiff=90\relax% + \putlratom{-31}{176}{\@memberb}% % left or right type + {% + \thicklines% + \Put@Line(0,406)(0,-1){140}% % single bond at F + }% + \else\if\@tmpc C%alpha single bond (downward) + \yl@xdiff=31\relax% + \yl@ydiff=90\relax% + \putlratom{-31}{176}{\@memberb}% % left or right type + \dotorline(0,406)(0,-1){140}/(0,406)(0,266)% + \fi\fi\fi\fi\fi\fi\fi% +}% end of \GFbondc@a +% \end{macrocode} +% +% \begin{macrocode} +\def\GFbondc@b{% + \if\@tmpc B%beta single bond + \yl@xdiff=10\relax% + \yl@ydiff=59\relax% + \putlatom{-301}{173}{\@memberb}% % left type + {% + \thicklines% + \Put@Line(-171,303)(-5,-3){120}% % single bond at G + }% + \else\if\@tmpc A%alpha single bond + \yl@xdiff=10\relax% + \yl@ydiff=59\relax% + \putlatom{-301}{173}{\@memberb}% % left type + \dotorline(-171,303)(-5,-3){120}/(-171,303)(-291,231)% + \else\if\@tmpc U%unspecified single bond + \yl@xdiff=10\relax% + \yl@ydiff=59\relax% + \putlatom{-301}{173}{\@memberb}% % left type + {% + \WaveBonds% + \Put@Line(-171,303)(-5,-3){120}% single bond at G + }% + \else\if\@tmpc S%alpha single bond + \yl@xdiff=10\relax% + \yl@ydiff=59\relax% + \putlatom{-301}{173}{\@memberb}% % left type + \Put@Line(-171,303)(-5,-3){120}% single bond at G + \else\ifx\@tmpc\empty%alpha single bond + \yl@xdiff=10\relax% + \yl@ydiff=59\relax% + \putlatom{-301}{173}{\@memberb}% % left type + \Put@Line(-171,303)(-5,-3){120}% single bond at G + \else\if\@tmpc D%beta single bond (upward) + \yl@xdiff=-30\relax% + \yl@ydiff=-17\relax% + \putlratom{201}{460}{\@memberb}% % left or right type + {% + \thicklines% + \Put@Line(-171,303)(0,1){140}% % single bond at G + }% + \else\if\@tmpc C%alpha single bond (upward) + \yl@xdiff=-30\relax% + \yl@ydiff=-17\relax% + \putlratom{201}{460}{\@memberb}% % left or right type + \dotorline(-171,303)(0,1){140}/(-171,303)(-171,443)% + \fi\fi\fi\fi\fi\fi\fi% +}% end of \GFbondc@b +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\GFbondd} +% \begin{macrocode} +\def\GFbondd{% +% %%%%%%%%%%%%%%%%%% +% 3 fused positions % G == (303,171) F == (103,171) +% %%%%%%%%%%%%%%%%%% + \if\@tmpb G%single bond at G (fused position) + \if\@tmpc B%beta single bond + \yl@xdiff=-17\relax% + \yl@ydiff=31\relax% + \putlratom{460}{140}{\@memberb}% % left or right type + {% + \thicklines% + \Put@Line(303,171)(1,0){140}% % single bond at G + }% + \else\if\@tmpc A%alpha single bond + \yl@xdiff=-17\relax% + \yl@ydiff=31\relax% + \putlratom{460}{140}{\@memberb}% % left or right type + \dotorline(303,171)(1,0){140}/(303,171)(443,171)% + \else\if\@tmpc U% unspecified single bond + \yl@xdiff=-17\relax% + \yl@ydiff=31\relax% + \putlratom{460}{140}{\@memberb}% % left or right type +% \Put@Direct(303,148){$\sim$}% unspecified single bond at G +% \Put@Direct(353,148){$\sim$}% +% \Put@Direct(403,148){$\sim$}% + {% + \WaveBonds% + \Put@Line(303,171)(1,0){140}% single bond at G + }% + \else\if\@tmpc S%beta single bond + \yl@xdiff=-17\relax% + \yl@ydiff=31\relax% + \putlratom{460}{140}{\@memberb}% % left or right type + \Put@Line(303,171)(1,0){140}% % single bond at G + \else\ifx\@tmpc\empty%beta single bond + \yl@xdiff=-17\relax% + \yl@ydiff=31\relax% + \putlratom{460}{140}{\@memberb}% % left or right type + \Put@Line(303,171)(1,0){140}% % single bond at G + \fi\fi\fi\fi\fi% + \else\if\@tmpb F%single bond at F (fused position) + \if\@tmpc B%beta single bond + \yl@xdiff=20\relax% + \yl@ydiff=31\relax% +% \putlratom{-127}{140}{\@memberb}% % left or right type + \putlatom{-57}{140}{\@memberb}% % left type + {% + \thicklines% + \Put@Line(103,171)(-1,0){140}% % single bond at F + }% + \else\if\@tmpc A%alpha single bond + \yl@xdiff=20\relax% + \yl@ydiff=31\relax% + \putlatom{-57}{140}{\@memberb}% % left type + \dotorline(103,171)(-1,0){140}/(103,171)(-37,171)% + \else\if\@tmpc U%beta single bond + \yl@xdiff=20\relax% + \yl@ydiff=31\relax% + \putlatom{-57}{140}{\@memberb}% % left type +% \Put@Direct(40,148){$\sim$}% unspecified single bond at F +% \Put@Direct(-13,148){$\sim$}% +% \Put@Direct(-62,148){$\sim$}% + {% + \WaveBonds% + \Put@Line(103,171)(-1,0){140}% single bond at F + }% + \else\if\@tmpc S%alpha single bond + \yl@xdiff=20\relax% + \yl@ydiff=31\relax% + \putlatom{-57}{140}{\@memberb}% % left type + \Put@Line(103,171)(-1,0){140}% % single bond at F + \else\ifx\@tmpc\empty%alpha single bond + \yl@xdiff=20\relax% + \yl@ydiff=31\relax% + \putlatom{-57}{140}{\@memberb}% % left type + \Put@Line(103,171)(-1,0){140}% % single bond at F + \fi\fi\fi\fi\fi% + \fi\fi% +}% end of \GFbondd +% \end{macrocode} +% \end{macro} +% +% The |\setfusedbond| takes 5 arguments. +% +% \begin{verbatim} +% ****************************************************** +% * setting of atoms and bonds at fused bond positions * +% ****************************************************** +% +% \setfusedbond{SUBSLIST}{AD}{LOWER}{UPPER}{ORDER} +% \end{verbatim} +% +% The first argument |SUBSLIST| is a list of substituents, which is +% represented in the standard format of \XyMTeX{}. +% Substituents at the fused positions (vertical bonds) are designated by +% the number 0 and the following bond modifiers. +% They are placed by means of the |\GFbonda| command. +% +% \begin{verbatim} +% SUBSLIST: list of substituents (max 3 substitution positions) +% +% for 0 (vertical (0,1) fused positions) +% F == (171,303) G == (171,103) +% +% 0FA : alpha single bond at F +% 0FB : beta single bond at F +% 0FU : unspecified single bond at F +% 0GA : alpha single bond at G +% 0GB : beta single bond at G +% 0GU : unspecified single bond at G +% +% \end{verbatim} +% +% Substituents at the fused positions (diagonal bonds) are designated by +% the number 1 and the following bond modifiers. +% They are placed by means of the |\GFbondb| command. +% \begin{verbatim} +% for 1 (diagonal (5,-3) fused positions) +% F == (0,406), G == (171,303) +% +% 1FA : alpha single bond at F +% 1FB : beta single bond at F +% 1FC : alpha single bond (downward) at F +% 1FD : beta single bond (downward) at F +% 1FU : unspecified single bond at F +% 1GA : alpha single bond at G +% 1GB : beta single bond at G +% 1GC : alpha single bond (upward) at G +% 1GD : beta single bond (upward) at G +% 1GU : unspecified single bond at G +% +% \end{verbatim} +% +% Substituents at the fused positions (other diagonal bonds) are designated by +% the number 2 and the following bond modifiers. +% They are placed by means of the |\GFbondc| command. +% \begin{verbatim} +% for 2 (diagonal (-5,-3) fused positions) +% F == (0,406), G == (-171,303) +% +% 2FA : alpha single bond at F +% 2FB : beta single bond at F +% 2FC : alpha single bond (upward) at F +% 2FD : beta single bond (upward) at F +% 2FU : unspecified single bond at F +% 2GA : alpha single bond at G +% 2GB : beta single bond at G +% 2GC : alpha single bond (downward) at G +% 2GD : beta single bond (downward) at G +% 2GU : unspecified single bond at G +% +% \end{verbatim} +% +% Substituents at the fused positions (horizontal bonds) are designated by +% the number 3 and the following bond modifiers. +% They are placed by means of the |\GFbondd| command. +% \begin{verbatim} +% for 3 (horizontal (1,0) fused positions) +% G == (303,171) F == (103,171) +% %%%% F == (303,171) G == (103,171) +% +% 3FA : alpha single bond at F +% 3FB : beta single bond at F +% 3FU : unspecified single bond at F +% 3GA : alpha single bond at G +% 3GB : beta single bond at G +% 3GU : unspecified single bond at G +% \end{verbatim} +% +% The second argument |AD| is an adjustment value, which adjusts the original +% set of locant numbers into the standard one between 0 to 3 for drawing +% substituents on fused positions. +% The effective range of the standared set of locant numbers is +% restricted by the auguments |LOWER| and |UPPER|. A minus value of +% the last argument shows the anti-clockwise numbering, while zero or +% a plus value represents the clockwise numbering. +% +% \begin{verbatim} +% +% AD : adjustment e.g. 0 for six-membered rings +% LOWER : lower limit LOWER < effective range < UPPER +% UPPER : upper limit +% ORDER : >= 0 clockwise, <0 anti-clockwise +% +% \end{verbatim} +% +% \changes{v1.02}{1998/10/31}{Adding the \cs{\@memberb=\@y} condition} +% \changes{v1.02}{1998/10/31}{Separate \cs{GFbonda} etc.} +% \changes{v4.03}{2005/07/20}{Concrete wave bonds for stereochemistry: FU, GU} +% \changes{v5.00}{2010/10/01}{Coloring Substitution Bond} +% +% \begin{macro}{\setfusedbond} +% \begin{macrocode} +\newif\if@fused@link \@fused@linkfalse +\def\setfusedbond#1#2#3#4#5{% +\@forsemicol\member:=#1\do{% +\ifx\member\empty\else% +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifnum#5<0\relax% +\@tmpaa=-\@tmpa\relax\advance\@tmpaa by #2\relax\@fused@linktrue +\else\@tmpaa=\@tmpa\relax\advance\@tmpaa by #2\relax +\@fused@linkfalse\fi% +\ifnum\@tmpaa >#3\relax% +\ifnum\@tmpaa <#4\relax% +% \end{macrocode} +% +% \begin{macrocode} +\ifcase\@tmpaa% +% %%%%%%%%%%%%%%%%%% +% 0 fused positions % F == (171,303) G == (171,103) +% %%%%%%%%%%%%%%%%%% +{\setbscolor\GFbonda\addbscolor{}{}}%2010/10/01 +% %%%%%%%%%%%%%%%% +\or% subst. on 1 F == (0,406), G == (171,303) +% %%%%%%%%%%%%%%%% +{\setbscolor\GFbondb\addbscolor{}{}}%2010/10/01 +%\GFbondb +% %%%%%%%%%%%%%%%% +\or% subst. on 2 F == (0,406), G == (-171,303) for \@fused@linkfalse + % subst. on 2 G == (0,406), F == (-171,303) for \@fused@linktrue +% %%%%%%%%%%%%%%%% +{\setbscolor\GFbondc\addbscolor{}{}}%2010/10/01 +%\GFbondc +% %%%%%%%%%%%%%%%%%% +\or %3 fused positions % G == (303,171) F == (103,171) +% %%%%%%%%%%%%%%%%%% +{\setbscolor\GFbondd\addbscolor{}{}}%2010/10/01 +%\GFbondd +\fi%end of ifcase +\fi\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% \subsection{Setting-up substituents and bonds at a given position} +% +% The |\setatombond| takes 3 arguments. +% +% \begin{verbatim} +% ******************************************************** +% * setting of atoms and bonds at an appropiate position * +% ******************************************************** +% +% \setatombond{SUBSLIST}{AD}{SLOPE} +% \end{verbatim} +% +% The first argument |SUBSLIST| is a list of substituents, which is +% represented in the standard format of \XyMTeX{}. +% Substituents at the fused positions (vertical bonds) are designated by +% the number 0 and the following bond modifiers. +% +% \begin{verbatim} +% SUBSLIST: list of substituents (max 3 substitution positions) +% \end{verbatim} +% +% The second argument |AD| is an adjustment value, which adjusts the original +% locant number into 1. +% +% \begin{verbatim} +% AD : adjustment, +% Set AD as being 1 = position number - AD +% \end{verbatim} +% +% The argument |SLOPE| has the following meanings. +% \begin{verbatim} +% SLOPE +% +% 1 : (0,1) 7 : (0,-1) +% 2 : (3,5) 8 : (-3,-5) +% 3 : (5,3) 9 : (-5,-3) +% 4 : (1,0) 10 : (-1,0) +% 5 : (5,-3) 11 : (-5,3) +% 6 : (3,-5) 12 : (-3,5) +% \end{verbatim} +% +% \changes{v1.02}{1998/10/14}{The bond-setting commands such as +% \cs{setatombonda} ... \cs{setatombondh} are separated from +% the original \cs{setatombond}.} +% +% \begin{macro}{\setatombond} +% \begin{macrocode} +\newif\if@clipfuse \@clipfusefalse +\def\setatombond#1#2#3{% +\@forsemicol\member:=#1\do{% +\ifx\member\empty\else% +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\@tmpaa=\@tmpa\relax\advance\@tmpaa by #2\relax +\ifx\@memberb\@yl\else +\ifnum\@tmpaa >0\relax% +\ifnum\@tmpaa <2\relax% +\ifcase\@tmpaa% +% %%%%%%%%%%%%%%%% +\or% subst. on 1 +% %%%%%%%%%%%%%%%% +% +% (0,1) +% + \ifnum#3=1\relax%(upward) +{\setbscolor\setatombonda\addbscolor{}{}}%2010/10/01 +% \setatombonda +% +% (1,0) +% + \else\ifnum#3=4\relax%(right) +{\setbscolor\setatombondb\addbscolor{}{}}%2010/10/01 +% \setatombondb +% +% (0,-1) +% + \else\ifnum#3=7\relax%(downward) +{\setbscolor\setatombondc\addbscolor{}{}}%2010/10/01 +% \setatombondc +% +% (-5,3) +% + \else\ifnum#3=11\relax% +{\setbscolor\setatombondd\addbscolor{}{}}%2010/10/01 +% \setatombondd +% +% (5,-3) +% + \else\ifnum#3=5\relax% +{\setbscolor\setatombonde\addbscolor{}{}}%2010/10/01 +% \setatombonde +% +% (5,3) +% + \else\ifnum#3=3\relax% +{\setbscolor\setatombondf\addbscolor{}{}}%2010/10/01 +% \setatombondf +% +% (-5,-3) +% + \else\ifnum#3=9\relax% +{\setbscolor\setatombondg\addbscolor{}{}}%2010/10/01 +% \setatombondg +% +% (-1,0) +% + \else\ifnum#3=10\relax%(left) +{\setbscolor\setatombondh\addbscolor{}{}}%2010/10/01 +% \setatombondh +\fi\fi\fi\fi\fi\fi\fi\fi% +\fi%end of ifcase +\fi\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% The command |\setatombond| uses the following bond-setting +% commands. +% \changes{v4.03}{2005/07/20}{Concrete wave bonds for stereochemistry: FU, GU} +% +% \begin{macro}{\setatombonda} +% \begin{macro}{\setatombondb} +% \begin{macro}{\setatombondc} +% \begin{macro}{\setatombondd} +% \begin{macro}{\setatombonde} +% \begin{macro}{\setatombondf} +% \begin{macro}{\setatombondg} +% \begin{macro}{\setatombondh} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \begin{macrocode} +\def\setatombonda{%upward (0,1) + \if@clipfuse% + \if\@tmpb B%beta single bond + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + {% + \thicklines% + \Put@Line(0,40)(0,1){100}% % single bond at 1 + }% + \else\if\@tmpb A%alpha single bond + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \dotorline(0,40)(0,1){100}/(0,40)(0,140)% + \else\if\@tmpb U% unspecified single bond + \yl@xdiff=31\relax + \yl@ydiff=-17\relax +% \Put@Direct(-3,30){$\wr$}% unspecified single bond at 1 +% \Put@Direct(-3,80){$\wr$}% + {% + \WaveBonds% + \Put@Line(0,40)(0,1){100}% single bond at F + }% + \else\if\@tmpb S%beta single bond + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \Put@Line(0,40)(0,1){100}% % single bond at 1 + \else\if\@tmpb D%double bond + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \Put@Line(-10,40)(0,1){100}% % single bond at 1 + \Put@Line(10,40)(0,1){100}% % single bond at 1 + \else\if\@tmpb T%double bond + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \Put@Line(-15,40)(0,1){100}% % single bond at 1 + \Put@Line(0,40)(0,1){100}% % single bond at 1 + \Put@Line(15,40)(0,1){100}% % single bond at 1 + \else\ifx\@tmpb\empty%beta single bond + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \Put@Line(0,40)(0,1){100}% % single bond at 1 + \fi\fi\fi\fi\fi\fi\fi% + \putlratom{-31}{157}{\@memberb}% % left or right type + \else%no clip + \if\@tmpb B%beta single bond + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + {% + \thicklines% + \Put@Line(0,0)(0,1){140}% % single bond at 1 + }% + \else\if\@tmpb A%alpha single bond + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \dotorline(0,0)(0,1){140}/(0,0)(0,140)% + \else\if\@tmpb U% unspecified single bond + \yl@xdiff=31\relax + \yl@ydiff=-17\relax +% \Put@Direct(-3,0){$\wr$}% unspecified single bond at 1 +% \Put@Direct(-3,50){$\wr$}% +% \Put@Direct(-3,100){$\wr$}% + {% + \WaveBonds% + \Put@Line(0,0)(0,1){140}% single bond at F + }% + \else\if\@tmpb S%beta single bond + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \Put@Line(0,0)(0,1){140}% % single bond at 1 + \else\if\@tmpb D%beta single bond + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \Put@Line(-10,0)(0,1){140}% % single bond at 1 + \Put@Line(10,0)(0,1){140}% % single bond at 1 + \else\if\@tmpb T%beta single bond + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \Put@Line(-15,0)(0,1){140}% % single bond at 1 + \Put@Line(0,0)(0,1){140}% % single bond at 1 + \Put@Line(15,0)(0,1){140}% % single bond at 1 + \else\ifx\@tmpb\empty%beta single bond + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \Put@Line(0,0)(0,1){140}% % single bond at 1 + \fi\fi\fi\fi\fi\fi\fi% + \putlratom{-31}{157}{\@memberb}% % left or right type + \fi% +}% end of \setatombonda +% \end{macrocode} +% +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v4.03}{2005/07/20}{Concrete wave bonds for stereochemistry: FU, GU} +% \begin{macrocode} +\def\setatombondb{%(right) (1,0) + \if@clipfuse% + \if\@tmpb B%beta single bond + \yl@xdiff=-17\relax + \yl@ydiff=31\relax + {% + \thicklines% + \Put@Line(30,0)(1,0){110}% % single bond at 1 + }% + \else\if\@tmpb A%alpha single bond + \yl@xdiff=-17\relax + \yl@ydiff=31\relax + \dotorline(30,0)(1,0){110}/(30,0)(140,0)% + \else\if\@tmpb U%beta single bond + \yl@xdiff=-17\relax + \yl@ydiff=31\relax + {% + \WaveBonds% + \Put@Line(30,0)(1,0){110}% % single bond at 1 + }% + \else\if\@tmpb S%alpha single bond + \yl@xdiff=-17\relax + \yl@ydiff=31\relax + \Put@Line(40,0)(1,0){100}% % single bond at 1 + \else\if\@tmpb D%alpha single bond + \yl@xdiff=-17\relax + \yl@ydiff=31\relax + \Put@Line(40,10)(1,0){100}% % single bond at 1 + \Put@Line(40,-10)(1,0){100}% % single bond at 1 + \else\if\@tmpb T%alpha single bond + \yl@xdiff=-17\relax + \yl@ydiff=31\relax + \Put@Line(40,15)(1,0){100}% % single bond at 1 + \Put@Line(40,0)(1,0){100}% % single bond at 1 + \Put@Line(40,-15)(1,0){100}% % single bond at 1 + \else\ifx\@tmpb\empty%alpha single bond + \yl@xdiff=-17\relax + \yl@ydiff=31\relax + \Put@Line(40,0)(1,0){100}% % single bond at 1 + \fi\fi\fi\fi\fi\fi\fi% + \putratom{157}{-31}{\@memberb}% % right type only + \else% + \if\@tmpb B%beta single bond + \yl@xdiff=-17\relax + \yl@ydiff=31\relax + {% + \thicklines% + \Put@Line(0,0)(1,0){140}% % single bond at 1 + }% + \else\if\@tmpb A%alpha single bond + \yl@xdiff=-17\relax + \yl@ydiff=31\relax + \dotorline(0,0)(1,0){140}/(0,0)(140,0)% + \else\if\@tmpb U%beta single bond + \yl@xdiff=-17\relax + \yl@ydiff=31\relax + {% + \WaveBonds% + \Put@Line(0,0)(1,0){140}% % single bond at 1 + }% + \else\if\@tmpb S%alpha single bond + \yl@xdiff=-17\relax + \yl@ydiff=31\relax + \Put@Line(0,0)(1,0){140}% % single bond at 1 + \else\if\@tmpb D%alpha single bond + \yl@xdiff=-17\relax + \yl@ydiff=31\relax + \Put@Line(0,10)(1,0){140}% % single bond at 1 + \Put@Line(0,-10)(1,0){140}% % single bond at 1 + \else\if\@tmpb T%alpha single bond + \yl@xdiff=-17\relax + \yl@ydiff=31\relax + \Put@Line(0,-15)(1,0){140}% % single bond at 1 + \Put@Line(0,0)(1,0){140}% % single bond at 1 + \Put@Line(0,15)(1,0){140}% % single bond at 1 + \else\ifx\@tmpb\empty%alpha single bond + \yl@xdiff=-17\relax + \yl@ydiff=31\relax + \Put@Line(0,0)(1,0){140}% % single bond at 1 + \fi\fi\fi\fi\fi\fi\fi% + \putratom{157}{-31}{\@memberb}% % right type only + \fi% +}% end of \setatombondb +% \end{macrocode} +% +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v4.03}{2005/07/20}{Concrete wave bonds for stereochemistry: FU, GU} +% \begin{macrocode} +\def\setatombondc{%(downward) (0,-1) + \if@clipfuse% + \if\@tmpb B%beta single bond + \yl@xdiff=31\relax + \yl@ydiff=90\relax + {% + \thicklines% + \Put@Line(0,-40)(0,-1){100}% % single bond at 1 + }% + \else\if\@tmpb A%alpha single bond + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \dotorline(0,-40)(0,-1){100}/(0,-40)(0,-140)% + \else\if\@tmpb U%beta single bond + \yl@xdiff=31\relax + \yl@ydiff=90\relax +% \Put@Direct(-3,-90){$\wr$}% unspecified single bond at 1 +% \Put@Direct(-3,-140){$\wr$}% + {% + \WaveBonds% + \Put@Line(0,-40)(0,-1){100}% % single bond at 1 + }% + \else\if\@tmpb S%alpha single bond + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \Put@Line(0,-40)(0,-1){100}% % single bond at 1 + \else\if\@tmpb D%alpha single bond + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \Put@Line(10,-40)(0,-1){100}% % single bond at 1 + \Put@Line(-10,-40)(0,-1){100}% % single bond at 1 + \else\if\@tmpb T%alpha single bond + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \Put@Line(15,-40)(0,-1){100}% % single bond at 1 + \Put@Line(0,-40)(0,-1){100}% % single bond at 1 + \Put@Line(-15,-40)(0,-1){100}% % single bond at 1 + \else\ifx\@tmpb\empty%alpha single bond + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \Put@Line(0,-40)(0,-1){100}% % single bond at 1 + \fi\fi\fi\fi\fi\fi\fi% + \putlratom{-31}{-230}{\@memberb}% % left or right type + \else%no clipping + \if\@tmpb B%beta single bond + \yl@xdiff=31\relax + \yl@ydiff=90\relax + {% + \thicklines% + \Put@Line(0,0)(0,-1){140}% % single bond at 1 + }% + \else\if\@tmpb A%alpha single bond + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \dotorline(0,0)(0,-1){140}/(0,0)(0,-140)% + \else\if\@tmpb U%beta single bond + \yl@xdiff=31\relax + \yl@ydiff=90\relax +% \Put@Direct(-3,-60){$\wr$}% unspecified single bond at 1 +% \Put@Direct(-3,-110){$\wr$}% +% \Put@Direct(-3,-160){$\wr$}% + {% + \WaveBonds% + \Put@Line(0,0)(0,-1){140}% % single bond at 1 + }% + \else\if\@tmpb S%alpha single bond + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \Put@Line(0,0)(0,-1){140}% % single bond at 1 + \else\if\@tmpb D%alpha single bond + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \Put@Line(10,0)(0,-1){140}% % single bond at 1 + \Put@Line(-10,0)(0,-1){140}% % single bond at 1 + \else\if\@tmpb T%alpha single bond + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \Put@Line(15,0)(0,-1){140}% % single bond at 1 + \Put@Line(0,0)(0,-1){140}% % single bond at 1 + \Put@Line(-15,0)(0,-1){140}% % single bond at 1 + \else\ifx\@tmpb\empty%alpha single bond + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \Put@Line(0,0)(0,-1){140}% % single bond at 1 + \fi\fi\fi\fi\fi\fi\fi% + \putlratom{-31}{-230}{\@memberb}% % left or right type + \fi% +}% end of \setatombondc +% \end{macrocode} +% +% \begin{macrocode} +\def\setatombondd{% (-5,3) + \if@clipfuse% + \yl@xdiff=20\relax + \yl@ydiff=18\relax + \if\@tmpb B%beta single bond + {% + \thicklines% + \Put@Line(-30,18)(-5,3){100}% % single bond at 1 + }% + \else\if\@tmpb A%alpha single bond + \dotorline(-30,18)(-5,3){100}/(-30,18)(-130,78)% + \else\if\@tmpb U%unspecified single bond + {% + \WaveBonds% + \Put@Line(-30,18)(-5,3){100}% % single bond at 1 + }% + \else\if\@tmpb S%beta single bond + \Put@Line(-30,18)(-5,3){100}% % single bond at 1 + \else\if\@tmpb D%beta single bond + \Put@Line(-36,8)(-5,3){100}% % single bond at 1 + \Put@Line(-24,24)(-5,3){100}% % single bond at 1 + \else\if\@tmpb T%beta single bond + \Put@Line(-39,3)(-5,3){100}% % single bond at 1 + \Put@Line(-30,18)(-5,3){100}% % single bond at 1 + \Put@Line(-21,33)(-5,3){100}% % single bond at 1 + \else\ifx\@tmpb\empty%beta single bond + \Put@Line(-30,18)(-5,3){100}% % single bond at 1 + \fi\fi\fi\fi\fi\fi\fi% + \putlatom{-150}{60}{\@memberb}% % left type + \else%no clipping + \yl@xdiff=20\relax + \yl@ydiff=18\relax + \if\@tmpb B%beta single bond + {% + \thicklines% + \Put@Line(0,0)(-5,3){130}% % single bond at 1 + }% + \else\if\@tmpb A%alpha single bond + \dotorline(0,0)(-5,3){130}/(0,0)(-130,78)% + \else\if\@tmpb U%unspecified single bond + {% + \WaveBonds% + \Put@Line(0,0)(-5,3){130}% % single bond at 1 + }% + \else\if\@tmpb S%beta single bond + \Put@Line(0,0)(-5,3){130}% % single bond at 1 + \else\if\@tmpb D%beta single bond + \Put@Line(6,10)(-5,3){130}% % single bond at 1 + \Put@Line(-6,-10)(-5,3){130}% % single bond at 1 + \else\if\@tmpb T%beta single bond + \Put@Line(9,15)(-5,3){130}% % single bond at 1 + \Put@Line(0,0)(-5,3){130}% % single bond at 1 + \Put@Line(-9,-15)(-5,3){130}% % single bond at 1 + \else\ifx\@tmpb\empty%beta single bond + \Put@Line(0,0)(-5,3){130}% % single bond at 1 + \fi\fi\fi\fi\fi\fi\fi% + \putlatom{-150}{60}{\@memberb}% % left type + \fi% +}% end of \setatombondd +% \end{macrocode} +% +% \begin{macrocode} +\def\setatombonde{%(5,-3) + \if@clipfuse% + \yl@xdiff=-10\relax + \yl@ydiff=52\relax + \if\@tmpb B%beta single bond + {% + \thicklines% + \Put@Line(30,-18)(5,-3){100}% % single bond at 1 + }% + \else\if\@tmpb A%alpha single bond + \dotorline(30,-18)(5,-3){100}/(30,-18)(130,-78)% + \else\if\@tmpb U%unspecified single bond + {% + \WaveBonds% + \Put@Line(30,-18)(5,-3){100}% % single bond at 1 + }% + \else\if\@tmpb S%alpha single bond + \Put@Line(30,-18)(5,-3){100}% % single bond at 1 + \else\if\@tmpb D%alpha single bond + \Put@Line(36,-12)(5,-3){100}% % single bond at 1 + \Put@Line(24,-28)(5,-3){100}% % single bond at 1 + \else\if\@tmpb T%alpha single bond + \Put@Line(39,-3)(5,-3){100}% % single bond at 1 + \Put@Line(30,-18)(5,-3){100}% % single bond at 1 + \Put@Line(21,-33)(5,-3){100}% % single bond at 1 + \else\ifx\@tmpb\empty%alpha single bond + \Put@Line(30,-18)(5,-3){100}% % single bond at 1 + \fi\fi\fi\fi\fi\fi\fi% + \putratom{140}{-130}{\@memberb}% % right type + \else%no clipping + \yl@xdiff=-10\relax + \yl@ydiff=52\relax + \if\@tmpb B%beta single bond + {% + \thicklines% + \Put@Line(0,0)(5,-3){130}% % single bond at 1 + }% + \else\if\@tmpb A%alpha single bond + \dotorline(0,0)(5,-3){130}/(0,0)(130,-78)% + \else\if\@tmpb U%unspecified single bond + {% + \WaveBonds% + \Put@Line(0,0)(5,-3){130}% % single bond at 1 + }% + \else\if\@tmpb S%alpha single bond + \Put@Line(0,0)(5,-3){130}% % single bond at 1 + \else\if\@tmpb D%alpha single bond + \Put@Line(6,10)(5,-3){130}% % single bond at 1 + \Put@Line(-6,-10)(5,-3){130}% % single bond at 1 + \else\if\@tmpb T%alpha single bond + \Put@Line(9,15)(5,-3){130}% % single bond at 1 + \Put@Line(0,0)(5,-3){130}% % single bond at 1 + \Put@Line(-9,-15)(5,-3){130}% % single bond at 1 + \else\ifx\@tmpb\empty%alpha single bond + \Put@Line(0,0)(5,-3){130}% % single bond at 1 + \fi\fi\fi\fi\fi\fi\fi% + \putratom{140}{-130}{\@memberb}% % right type + \fi% +}% end of \setatombonde +% \end{macrocode} +% +% \begin{macrocode} +\def\setatombondf{%% (5,3) + \if@clipfuse% + \yl@xdiff=-30\relax + \yl@ydiff=18\relax + \if\@tmpb B%beta single bond + {% + \thicklines% + \Put@Line(30,18)(5,3){100}% % single bond at 1 + }% + \else\if\@tmpb A%alpha single bond + \dotorline(30,18)(5,3){100}/(30,18)(130,78)% + \else\if\@tmpb U%unspecified single bond + {% + \WaveBonds% + \Put@Line(30,18)(5,3){100}% % single bond at 1 + }% + \else\if\@tmpb S%beta single bond + \Put@Line(30,18)(5,3){100}% % single bond at 1 + \else\if\@tmpb D%beta single bond + \Put@Line(36,8)(5,3){100}% % single bond at 1 + \Put@Line(24,24)(5,3){100}% % single bond at 1 + \else\if\@tmpb T%beta single bond + \Put@Line(39,3)(5,3){100}% % single bond at 1 + \Put@Line(30,18)(5,3){100}% % single bond at 1 + \Put@Line(21,33)(5,3){100}% % single bond at 1 + \else\ifx\@tmpb\empty%beta single bond + \Put@Line(30,18)(5,3){100}% % single bond at 1 + \fi\fi\fi\fi\fi\fi\fi% + \putratom{160}{60}{\@memberb}% % right type + \else%no clipping + \yl@xdiff=-30\relax + \yl@ydiff=18\relax + \if\@tmpb B%beta single bond + {% + \thicklines% + \Put@Line(0,0)(5,3){130}% % single bond at 1 + }% + \else\if\@tmpb A%alpha single bond + \dotorline(0,0)(5,3){120}/(0,0)(130,78)% + \else\if\@tmpb U%unspecified single bond + {% + \WaveBonds% + \Put@Line(0,0)(5,3){130}% % single bond at 1 + }% + \else\if\@tmpb S%beta single bond + \Put@Line(0,0)(5,3){130}% % single bond at 1 + \else\if\@tmpb D%beta single bond + \Put@Line(6,-10)(5,3){130}% % single bond at 1 + \Put@Line(-6,10)(5,3){130}% % single bond at 1 + \else\if\@tmpb T%beta single bond + \Put@Line(9,-15)(5,3){130}% % single bond at 1 + \Put@Line(0,0)(5,3){130}% % single bond at 1 + \Put@Line(-9,15)(5,3){130}% % single bond at 1 + \else\ifx\@tmpb\empty%beta single bond + \Put@Line(0,0)(5,3){130}% % single bond at 1 + \fi\fi\fi\fi\fi\fi\fi% + \putratom{160}{60}{\@memberb}% % right type + \fi% +}% end of \setatombondf +% \end{macrocode} +% +% \begin{macrocode} +\def\setatombondg{%% (-5,-3) + \if@clipfuse% + \yl@xdiff=0\relax + \yl@ydiff=52\relax%1999/1/6 by Shinsaku Fujita + \if\@tmpb B%beta single bond + {% + \thicklines% + \Put@Line(-30,-18)(-5,-3){100}% % single bond at 1 + }% + \else\if\@tmpb A%alpha single bond +% \dotorline(-30,-18)(-5,-3){100}/(-20,-12)(-120,-72)% + \dotorline(-35,-21)(-5,-3){100}/(-35,-21)(-120,-72)% + \else\if\@tmpc U%unspecified single bond + {% + \WaveBonds% + \Put@Line(-35,-21)(-5,-3){100}% % single bond at 1 + }% + \else\if\@tmpc S%alpha single bond +% \Put@Line(-30,-18)(-5,-3){100}% % single bond at 1 + \Put@Line(-35,-21)(-5,-3){100}% % single bond at 1 + \else\if\@tmpb D%double bond + \Put@Line(-36,-12)(-5,-3){100}% % single bond at 1 + \Put@Line(-24,-28)(-5,-3){100}% % single bond at 1 + \else\if\@tmpb T%triple bond + \Put@Line(-39,-3)(-5,-3){100}% % single bond at 1 + \Put@Line(-30,-18)(-5,-3){100}% % single bond at 1 + \Put@Line(-21,-33)(-5,-3){100}% % single bond at 1 + \else\ifx\@tmpc\empty%alpha single bond +% \Put@Line(-30,-18)(-5,-3){100}% % single bond at 1 + \Put@Line(-35,-21)(-5,-3){100}% % single bond at 1 + \fi\fi\fi\fi\fi\fi\fi% + \putlatom{-130}{-130}{\@memberb}% % left type + \else% + \yl@xdiff=0\relax +% \yl@ydiff=62\relax + \yl@ydiff=52\relax%1999/1/6 by Shinsaku Fujita + \if\@tmpb B%beta single bond + {% + \thicklines% + \Put@Line(0,0)(-5,-3){130}% % single bond at 1 + }% + \else\if\@tmpb A%alpha single bond + \dotorline(0,0)(-5,-3){130}/(0,0)(-130,-78)% + \else\if\@tmpc U%unspecified single bond + {% + \WaveBonds% + \Put@Line(0,0)(-5,-3){130}% % single bond at 1 + }% + \else\if\@tmpc S%alpha single bond + \Put@Line(0,0)(-5,-3){130}% % single bond at 1 + \else\if\@tmpb D%alpha single bond + \Put@Line(-6,10)(-5,-3){130}% % single bond at 1 + \Put@Line(6,-10)(-5,-3){130}% % single bond at 1 + \else\if\@tmpb T%alpha single bond + \Put@Line(-9,15)(-5,-3){130}% % single bond at 1 + \Put@Line(0,0)(-5,-3){130}% % single bond at 1 + \Put@Line(9,-15)(-5,-3){130}% % single bond at 1 + \else\ifx\@tmpc\empty%alpha single bond + \Put@Line(0,0)(-5,-3){130}% % single bond at 1 + \fi\fi\fi\fi\fi\fi\fi% + \putlatom{-130}{-130}{\@memberb}% % left type + \fi% +}% end of \setatombondg +% \end{macrocode} +% +% \begin{macrocode} +\def\setatombondh{% (-1,0) + \yl@xdiff=17\relax + \yl@ydiff=31\relax + \if@clipfuse% + \if\@tmpb B%beta single bond + {% + \thicklines% + \Put@Line(-30,0)(-1,0){110}% % single bond at 1 + }% + \else\if\@tmpb A%alpha single bond + \dotorline(-30,0)(-1,0){110}/(-30,0)(-140,0)% + \else\if\@tmpb U%beta single bond + {% + \WaveBonds% + \Put@Line(-30,0)(-1,0){110}% % single bond at 1 + }% + \else\if\@tmpb S%alpha single bond + \Put@Line(-40,0)(-1,0){100}% % single bond at 1 + \else\if\@tmpb D%alpha single bond + \Put@Line(-40,10)(-1,0){100}% % single bond at 1 + \Put@Line(-40,-10)(-1,0){100}% % single bond at 1 + \else\if\@tmpb T%alpha single bond + \Put@Line(-40,15)(-1,0){100}% % single bond at 1 + \Put@Line(-40,0)(-1,0){100}% % single bond at 1 + \Put@Line(-40,-15)(-1,0){100}% % single bond at 1 + \else\ifx\@tmpb\empty%alpha single bond + \Put@Line(-40,0)(-1,0){100}% % single bond at 1 + \fi\fi\fi\fi\fi\fi\fi% + \putlatom{-157}{-31}{\@memberb}% % left type only + \else% + \if\@tmpb B%beta single bond + {% + \thicklines% + \Put@Line(0,0)(-1,0){140}% % single bond at 1 + }% + \else\if\@tmpb A%alpha single bond + \dotorline(0,0)(-1,0){140}/(0,0)(-140,0)% + \else\if\@tmpb U%beta single bond + {% + \WaveBonds% + \Put@Line(0,0)(-1,0){140}% % single bond at 1 + }% + \else\if\@tmpb S%alpha single bond + \Put@Line(0,0)(-1,0){140}% % single bond at 1 + \else\if\@tmpb D%alpha single bond + \Put@Line(0,10)(-1,0){140}% % single bond at 1 + \Put@Line(0,-10)(-1,0){140}% % single bond at 1 + \else\if\@tmpb T%alpha single bond + \Put@Line(0,-15)(-1,0){140}% % single bond at 1 + \Put@Line(0,0)(-1,0){140}% % single bond at 1 + \Put@Line(0,15)(-1,0){140}% % single bond at 1 + \else\ifx\@tmpb\empty%alpha single bond + \Put@Line(0,0)(-1,0){140}% % single bond at 1 + \fi\fi\fi\fi\fi\fi\fi% + \putlatom{-157}{-31}{\@memberb}% % left type only + \fi% +}% end of \setatombondh +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The macro |\ylatombondposition| is used to calculate the shift values +% (|\@ylii| and |\@yli|) for applying the |\setatombond| command. +% \changes{v1.02}{1998/10/15}{New command: \cs{ylatombondposition} +% for setting substituents} +% +% \begin{macro}{\ylatombondposition} +% \begin{macrocode} +\def\ylatombondposition#1#2#3{% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else% +\ifx\member\empty\else% +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\@tmpaa=\@tmpa\relax\advance\@tmpaa by #2\relax +\ifnum\@tmpaa >0\relax% +\ifnum\@tmpaa <2\relax% +\ifcase\@tmpaa% +% %%%%%%%%%%%%%%%% +\or% subst. on 1 +% %%%%%%%%%%%%%%%% +% +% (0,1) +% + \ifnum#3=1\relax%upward + \if@clipfuse% + \gdef\@ylii{0}\gdef\@yli{-48}\global\@ylswtrue% + \else + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% + \fi +% \setatombonda +% +% (1,0) +% + \else\ifnum#3=4\relax%(right) + \if@clipfuse% + \gdef\@ylii{-40}\gdef\@yli{0}\global\@ylswtrue% + \else + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% + \fi +% \setatombondb +% +% (0,-1) +% + \else\ifnum#3=7\relax%(downward) + \if@clipfuse% + \gdef\@ylii{0}\gdef\@yli{48}\global\@ylswtrue% + \else + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% + \fi +% \setatombondc +% +% (-5,3) +% + \else\ifnum#3=11\relax% + \if@clipfuse% + \gdef\@ylii{50}\gdef\@yli{-30}\global\@ylswtrue% + \else + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% + \fi +% \setatombondd +% +% (5,-3) +% + \else\ifnum#3=5\relax% + \if@clipfuse% + \gdef\@ylii{-50}\gdef\@yli{30}\global\@ylswtrue% + \else + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% + \fi +% \setatombonde +% +% (5,3) +% + \else\ifnum#3=3\relax% + \if@clipfuse% + \gdef\@ylii{-50}\gdef\@yli{-30}\global\@ylswtrue% + \else + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% + \fi +% \setatombondf +% +% (-5,-3) +% + \else\ifnum#3=9\relax% + \if@clipfuse% + \gdef\@ylii{50}\gdef\@yli{30}\global\@ylswtrue% + \else + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% + \fi +% \setatombondg +% +% (-1,0) +% + \else\ifnum#3=10\relax%(left) + \if@clipfuse% + \gdef\@ylii{40}\gdef\@yli{0}\global\@ylswtrue% + \else + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% + \fi +% \setatombondh +\fi\fi\fi\fi\fi\fi\fi\fi% +\fi%end of ifcase +\fi\fi\fi\fi% +\fi}}% end of \ylatombondposition +% \end{macrocode} +% \end{macro} +% +% \section{Macros for horizontal formulas} +% \subsection{Placing substituents for horizontal formulas} +% +% Such a drawing command as |\setsixringh| uses several inner macros +% for placing substituents with bonds. The first set of inner macros +% are shown as follows. +% +% The command |\ylpositionh| is to obtain the shift values +% |\@ylii| and |\@yli| which are used for shifting the standard point +% of a substituent. +% The locant flags such as |\@ylatrue| have been stopped to use. +% \changes{v1.02}{1998/10/31}{Adding \cs{ylpositionh}. +% Commands for setting substituents} +% \changes{v5.01}{2013/06/19}{bug fix: initial setting of \cs{reset@@yl}} +% +% \begin{macro}{\ylpositionh} +% \begin{macrocode} +\def\ylpositionh#1#2#3#4#5{% +\@@ylswfalse%%%\@reset@ylsw +\reset@@yl%%2013/06/19bug fix +\@forsemicol\member:=#1\do{% +\if@@ylsw\else% +\ifx\member\empty\else% +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}\relax% +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifnum#5<0\relax% +\@tmpaa=-\@tmpa\relax \advance\@tmpaa by#2\relax% +\else\@tmpaa=\@tmpa\relax \advance\@tmpaa by#2\relax\fi +\ifnum\@tmpaa>#3\relax% +\ifnum\@tmpaa<#4\relax% +\ifcase\@tmpaa%0 omit + \or\ifx\aaa\empty + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%\@ylatrue% subst. on 1 + \else + \gdef\@ylii{30}\gdef\@yli{0}\global\@ylswtrue%\@ylatrue% subst. on 1 + \fi + \or\ifx\bbb\empty + \gdef\@ylii{-103}\gdef\@yli{-171}\global\@ylswtrue%\@ylbtrue% subst. on 2 + \else + \gdef\@ylii{-73}\gdef\@yli{-223}\global\@ylswtrue%\@ylbtrue% subst. on 2 + \fi + \or \ifx\ccc\empty + \gdef\@ylii{-303}\gdef\@yli{-171}\global\@ylswtrue%\@ylctrue% subst. on 3 + \else + \gdef\@ylii{-333}\gdef\@yli{-223}\global\@ylswtrue%\@ylctrue% subst. on 3 + \fi + \or\ifx\ddd\empty + \gdef\@ylii{-406}\gdef\@yli{0}\global\@ylswtrue%\@yldtrue% subst. on 4 + \else + \gdef\@ylii{-436}\gdef\@yli{0}\global\@ylswtrue%\@yldtrue% subst. on 4 + \fi + \or\ifx\eee\empty + \gdef\@ylii{-303}\gdef\@yli{171}\global\@ylswtrue%\@yletrue% subst. on 5 + \else + \gdef\@ylii{-333}\gdef\@yli{223}\global\@ylswtrue%\@yletrue% subst. on 5 + \fi + \or \ifx\fff\empty + \gdef\@ylii{-103}\gdef\@yli{171}\global\@ylswtrue%\@ylftrue% subst. on 6 + \else + \gdef\@ylii{-73}\gdef\@yli{223}\global\@ylswtrue%\@ylftrue% subst. on 6 + \fi +\fi%end of ifcase +\fi\fi\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% The |\@hsubsta| command is used for placing a substituent (|\@memberb|) at +% the 1-position (top) of a vertical six-membered ring. The bond linking +% between the substituent and the 1-position is drawn in the light of +% the corresponding bond modifier (|\@tmpc| = Sa, Sb, SA, SB etc.). +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/12/15}{Added bond modifiers: FA, FB, GA, GB, Su, Sd} +% \changes{v4.03}{2005/07/20}{Wave bonds for stereochemistry: U, FU, GU, SU, SV} +% \begin{macro}{\@hsubsta} +% ************************************************************* +% * treatment of substitution positions for a horizontal type * +% ************************************************************* +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 1 % +% %%%%%%%%%%%%%%% +\def\@hsubsta{% +\if@aclip %clipping + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=17\relax + \yl@ydiff=31\relax + \putlatom{-157}{-31}{\@memberb}% % left type only + \Put@Line(-30,0)(-1,0){110}% % single bond at 1 + \else\if\@tmpc B%(B) beta + \yl@xdiff=27\relax + \yl@ydiff=36\relax + \putlatom{-157}{42}{\@memberb}% % left type + {% + \thicklines% + \Put@Line(-30,18)(-5,3){100}% % single bond at 1 + }% + \else\if\@tmpc A%(A) alpha + \yl@xdiff=37\relax + \yl@ydiff=28\relax + \putlatom{-157}{-100}{\@memberb}% % left type + \dotorline(-30,-18)(-5,-3){100}/(-30,-18)(-120,-72)% + \else\if\@tmpc u%(u) up --- (B) beta + \yl@xdiff=37\relax + \yl@ydiff=28\relax + \putlatom{-157}{-100}{\@memberb}% % left type + {% + \thicklines% + \Put@Line(-30,-18)(-5,-3){100}% % single bond at 1 + }% + \else\if\@tmpc d%(d) down --- (A) alpha + \yl@xdiff=27\relax + \yl@ydiff=36\relax + \putlatom{-157}{42}{\@memberb}% % left type + \dotorline(-30,18)(-5,3){100}/(-30,18)(-130,78)% + \else\if\@tmpc b%(b) beta + \yl@xdiff=27\relax + \yl@ydiff=36\relax + \putlatom{-157}{42}{\@memberb}% % left type + \Put@Line(-30,18)(-5,3){100}% % single bond at 1 + \else\if\@tmpc a%(a) alpha + \yl@xdiff=27\relax + \yl@ydiff=28\relax + \putlatom{-157}{-100}{\@memberb}% % left type + \Put@Line(-30,-18)(-5,-3){100}% % single bond at 1 + \else\if\@tmpc V%(V) beta undefined + \yl@xdiff=27\relax + \yl@ydiff=36\relax + \putlatom{-157}{42}{\@memberb}% % left type + {% + \WaveBonds% + \Put@Line(-30,18)(-5,3){100}% % single bond at 1 + }% + \else\if\@tmpc U%(U) alpha undefined + \yl@xdiff=27\relax + \yl@ydiff=28\relax + \putlatom{-157}{-100}{\@memberb}% % left type + {% + \WaveBonds% + \Put@Line(-30,-18)(-5,-3){100}% % single bond at 1 + }% + \fi\fi\fi\fi\fi + \fi\fi\fi\fi + \else\if\@tmpb D%double bond + \yl@xdiff=17\relax + \yl@ydiff=31\relax + \putlatom{-157}{-31}{\@memberb}% % left type only + \Put@Line(-30,-12)(-1,0){110}% % double bond at 1 + \Put@Line(-30,12)(-1,0){110}% % double bond at 1 + \else\if\@tmpb B%beta single bond + \yl@xdiff=17\relax + \yl@ydiff=31\relax + \putlatom{-157}{-31}{\@memberb}% % left type only + {% + \thicklines% + \Put@Line(-30,0)(-1,0){110}% % single bond at 1 + }% + \else\if\@tmpb A%alpha single bond + \yl@xdiff=17\relax + \yl@ydiff=31\relax + \putlatom{-157}{-31}{\@memberb}% % left type only + \dotorline(-30,0)(-1,0){110}/(-30,0)(-140,0)% + \else\if\@tmpb U%undefined single bond + \yl@xdiff=17\relax + \yl@ydiff=31\relax + \putlatom{-157}{-31}{\@memberb}% % left type only + {% + \WaveBonds% + \Put@Line(-30,0)(-1,0){110}% % single wave bond at 1 + }% + \else\if\@tmpb F%fused bond + {\let\@tmpb=\@tmpc\@clipfusetrue + \Put@Direct(0,0){\setatombondG}% + }% + \else\if\@tmpb G%fused bond + {\let\@tmpb=\@tmpc\@clipfusetrue + \Put@Direct(0,0){\setatombondD}% + }% + \else% + \yl@xdiff=17\relax + \yl@ydiff=31\relax + \putlatom{-157}{-31}{\@memberb}% % left type only + \Put@Line(-40,0)(-1,0){100}% % single bond at 1 + \fi\fi\fi\fi + \fi\fi\fi% +\else%% no clipping + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=17\relax + \yl@ydiff=31\relax + \putlatom{-157}{-31}{\@memberb}% % left type only + \Put@Line(0,0)(-1,0){140}% % single bond at 1 + \else\if\@tmpc B%(B) beta + \yl@xdiff=37\relax + \yl@ydiff=30\relax + \putlatom{-157}{42}{\@memberb}% % left type + {% + \thicklines% + \Put@Line(0,0)(-5,3){120}% % single bond at 1 + }% + \else\if\@tmpc A%(A) alpha + \yl@xdiff=37\relax + \yl@ydiff=28\relax + \putlatom{-157}{-100}{\@memberb}% % left type + \dotorline(0,0)(-5,-3){120}/(0,0)(-120,-72)% + \else\if\@tmpc u%(u) up --- (B) beta + \yl@xdiff=37\relax + \yl@ydiff=28\relax + \putlatom{-157}{-100}{\@memberb}% % left type + {% + \thicklines% + \Put@Line(0,0)(-5,-3){120}% % single bond at 1 + }% + \else\if\@tmpc d%(d) down --- (A) alpha + \yl@xdiff=37\relax + \yl@ydiff=30\relax + \putlatom{-157}{42}{\@memberb}% % left type + \dotorline(0,0)(-5,3){120}/(0,0)(-120,72)% + \else\if\@tmpc b%(b) beta + \yl@xdiff=37\relax + \yl@ydiff=30\relax + \putlatom{-157}{42}{\@memberb}% % left type + \Put@Line(0,0)(-5,3){120}% % single bond at 1 + \else\if\@tmpc a%(a) alpha + \yl@xdiff=37\relax + \yl@ydiff=28\relax + \putlatom{-157}{-100}{\@memberb}% % left type + \Put@Line(0,0)(-5,-3){120}% % single bond at 1 + \else\if\@tmpc V%(V) beta undefined + \yl@xdiff=37\relax + \yl@ydiff=30\relax + \putlatom{-157}{42}{\@memberb}% % left type + {% + \WaveBonds% + \Put@Line(0,0)(-5,3){120}% % single bond at 1 + }% + \else\if\@tmpc U%(U) alpha undefined + \yl@xdiff=37\relax + \yl@ydiff=28\relax + \putlatom{-157}{-100}{\@memberb}% % left type + {% + \WaveBonds% + \Put@Line(0,0)(-5,-3){120}% % single bond at 1 + }% + \fi\fi\fi\fi\fi + \fi\fi\fi\fi + \else\if\@tmpb D%double bond + \yl@xdiff=17\relax + \yl@ydiff=31\relax + \putlatom{-157}{-31}{\@memberb}% % left type only + \Put@Line(0,-12)(-1,0){140}% % double bond at 1 + \Put@Line(0,12)(-1,0){140}% % double bond at 1 + \else\if\@tmpb B%beta single bond + \yl@xdiff=17\relax + \yl@ydiff=31\relax + \putlatom{-157}{-31}{\@memberb}% % left type only + {% + \thicklines% + \Put@Line(0,0)(-1,0){140}% % single bond at 1 + }% + \else\if\@tmpb A%alpha single bond + \yl@xdiff=17\relax + \yl@ydiff=31\relax + \putlatom{-157}{-31}{\@memberb}% % left type only + \dotorline(0,0)(-1,0){140}/(0,0)(-140,0)% + \else\if\@tmpb U%undefined single bond + \yl@xdiff=17\relax + \yl@ydiff=31\relax + \putlatom{-157}{-31}{\@memberb}% % left type only + {% + \WaveBonds% + \Put@Line(0,0)(-1,0){140}% % single wave bond at 1 + }% + \else\if\@tmpb F%fused bond + {\let\@tmpb=\@tmpc\@clipfusefalse + \Put@Direct(0,0){\setatombondG}% + }% + \else\if\@tmpb G%fused bond + {\let\@tmpb=\@tmpc\@clipfusefalse + \Put@Direct(0,0){\setatombondD}% + }% + \else% + \yl@xdiff=17\relax + \yl@ydiff=31\relax + \putlatom{-157}{-31}{\@memberb}% % left type only + \Put@Line(0,0)(-1,0){140}% % single bond at 1 + \fi\fi\fi\fi% + \fi\fi\fi + \fi}%end of \@hsubsta +% \end{macrocode} +% \end{macro} +% +% The |\@hsubstb| command is used for placing a substituent (|\@memberb|) at +% the 2-position (upper-left) of a vertical six-membered ring. +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/12/15}{Added bond modifiers: FA, FB, GA, GB, Su, Sd} +% \changes{v4.03}{2005/07/20}{Wave bonds for stereochemistry: U, FU, GU, SU, SV} +% \begin{macro}{\@hsubstb} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 2 % +% %%%%%%%%%%%%%%% +\def\@hsubstb{% + \if@bclip %clipping + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=53\relax + \yl@ydiff=5\relax + \putlratom{-37}{331}{\@memberb}% + \Put@Line(79,221)(-3,5){63}% % single bond at 2 (62=>63) + \else\if\@tmpc B%(B) beta + \yl@xdiff=0\relax + \yl@ydiff=21\relax + \putlatom{-41}{240}{\@memberb}% % left type + {% + \thicklines% + \Put@Line(59,201)(-5,3){100}% % single bond at 2 + }% + \else\if\@tmpc A%(A) alpha + \yl@xdiff=30\relax + \yl@ydiff=-10\relax + \putratom{73}{331}{\@memberb}% % right type + \dotorline(103,221)(0,1){100}/(103,221)(103,321)% + \else\if\@tmpc u%(u) up --- (B) beta + \yl@xdiff=30\relax + \yl@ydiff=-10\relax + \putlratom{73}{331}{\@memberb}% % left-right type + {% + \thicklines% + \Put@Line(103,221)(0,1){100}% % single bond at 2 + }% + \else\if\@tmpc d%(d) down --- (A) alpha + \yl@xdiff=0\relax + \yl@ydiff=21\relax + \putlatom{-41}{240}{\@memberb}% % left type + \dotorline(59,201)(-5,3){100}/(59,201)(-41,261)% + \else\if\@tmpc b%(b) beta + \yl@xdiff=0\relax + \yl@ydiff=21\relax + \putlatom{-41}{240}{\@memberb}% % left type + \Put@Line(59,201)(-5,3){100}% % single bond at 2 + \else\if\@tmpc a%(a) alpha + \yl@xdiff=30\relax + \yl@ydiff=-10\relax + \putlratom{73}{331}{\@memberb}% % left-right type + \Put@Line(103,221)(0,1){100}% % single bond at 2 + \else\if\@tmpc V%(V) beta undefined + \yl@xdiff=0\relax + \yl@ydiff=21\relax + \putlatom{-41}{240}{\@memberb}% % left type + {% + \WaveBonds% + \Put@Line(59,201)(-5,3){100}% % single bond at 2 + }% + \else\if\@tmpc U%(U) alpha undefined + \yl@xdiff=30\relax + \yl@ydiff=-10\relax + \putlratom{73}{331}{\@memberb}% % left-right type + {% + \WaveBonds% + \Put@Line(103,221)(0,1){100}% % single bond at 2 + }% + \fi\fi\fi\fi\fi% + \fi\fi\fi\fi + \else\if\@tmpb D%double bond + \yl@xdiff=59\relax + \yl@ydiff=-13\relax + \putlratom{-37}{331}{\@memberb}% + \Put@Line(78,208)(-3,5){63}% % double bond at 2(62->63) + \Put@Line(100,219)(-3,5){63}% % double bond at 2(62->63) + \else\if\@tmpb B%beta single bond + \yl@xdiff=53\relax + \yl@ydiff=5\relax + \putlratom{-37}{331}{\@memberb}% + {% + \thicklines% + \Put@Line(79,221)(-3,5){63}% % single bond at 2 (62->63) + }% + \else\if\@tmpb A%alpha single bond + \yl@xdiff=53\relax + \yl@ydiff=5\relax + \putlratom{-37}{331}{\@memberb}% + \dotorline(79,221)(-3,5){63}/(79,221)(16,326)% + \else\if\@tmpb U%undefined single bond + \yl@xdiff=53\relax + \yl@ydiff=5\relax + \putlratom{-37}{331}{\@memberb}% + {% + \WaveBonds% + \Put@Line(79,221)(-3,5){63}% % single wave bond at 1 + }% + \else\if\@tmpb F%fused bond + {\let\@tmpb=\@tmpc\@clipfusetrue + \Put@Direct(103,171){\setatombondh}% + }% + \else\if\@tmpb G%fused bond + {\let\@tmpb=\@tmpc\@clipfusetrue + \Put@Direct(103,171){\setatombondF}% + }% + \else% + \yl@xdiff=53\relax + \yl@ydiff=5\relax + \putlratom{-37}{331}{\@memberb}% + \Put@Line(79,221)(-3,5){63}% % single bond at 2 (62->63) + \fi\fi\fi\fi% + \fi\fi\fi + \else%%no clipping + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=58\relax + \yl@ydiff=-21\relax + \putlratom{-27}{311}{\@memberb}% + \Put@Line(103,171)(-3,5){72}% % single bond at 2 + \else\if\@tmpc B%(B) beta + \yl@xdiff=14\relax + \yl@ydiff=-3\relax + \putlatom{-31}{240}{\@memberb}% % left type + {% + \thicklines% + \Put@Line(103,171)(-5,3){120}% % single bond at 2 + }% + \else\if\@tmpc A%(A) alpha + \yl@xdiff=30\relax + \yl@ydiff=-20\relax + \putlratom{73}{331}{\@memberb}% % left-right type + \dotorline(103,171)(0,1){140}/(103,171)(103,311)% + \else\if\@tmpc u%(u) up --- (B) beta + \yl@xdiff=30\relax + \yl@ydiff=-20\relax + \putlratom{73}{331}{\@memberb}% % left-right type + {% + \thicklines% + \Put@Line(103,171)(0,1){140}% % single bond at 2 + }% + \else\if\@tmpc d%(d) down --- (A) alpha + \yl@xdiff=14\relax + \yl@ydiff=-3\relax + \putlatom{-31}{240}{\@memberb}% % left type + \dotorline(103,171)(-5,3){120}/(103,171)(-7,243)% + \else\if\@tmpc b%(b) beta + \yl@xdiff=14\relax + \yl@ydiff=-3\relax + \putlatom{-31}{240}{\@memberb}% % left type + \Put@Line(103,171)(-5,3){120}% % single bond at 2 + \else\if\@tmpc a%(a) alpha + \yl@xdiff=30\relax + \yl@ydiff=-20\relax + \putlratom{73}{331}{\@memberb}% % left-right type + \Put@Line(103,171)(0,1){140}% % single bond at 2 + \else\if\@tmpc V%(V) beta undefined + \yl@xdiff=14\relax + \yl@ydiff=-3\relax + \putlatom{-31}{240}{\@memberb}% % left type + {% + \WaveBonds% + \Put@Line(103,171)(-5,3){120}% % single bond at 2 + }% + \else\if\@tmpc U%(U) alpha undefined + \yl@xdiff=30\relax + \yl@ydiff=-20\relax + \putlratom{73}{331}{\@memberb}% % left-right type + {% + \WaveBonds% + \Put@Line(103,171)(0,1){140}% % single bond at 2 + }% + \fi\fi\fi\fi\fi% + \fi\fi\fi\fi + \else\if\@tmpb D%double bond + \yl@xdiff=64\relax + \yl@ydiff=-21\relax + \putlratom{-27}{311}{\@memberb}% + \Put@Line(96,168)(-3,5){72}% % double bond at 2 + \Put@Line(121,174)(-3,5){72}% % double bond at 2 + \else\if\@tmpb B%beta single bond + \yl@xdiff=58\relax + \yl@ydiff=-21\relax + \putlratom{-27}{311}{\@memberb}% + {% + \thicklines% + \Put@Line(103,171)(-3,5){72}% % single bond at 2 + }% + \else\if\@tmpb A%alpha single bond + \yl@xdiff=58\relax + \yl@ydiff=-21\relax + \putlratom{-27}{311}{\@memberb}% + \dotorline(103,171)(-3,5){72}/(103,171)(31,291)% + \else\if\@tmpb U%undefined single bond + \yl@xdiff=58\relax + \yl@ydiff=-21\relax + \putlratom{-27}{311}{\@memberb}% + {% + \WaveBonds% + \Put@Line(103,171)(-3,5){72}% % single wave bond at 1 + }% + \else\if\@tmpb F%fused bond + {\let\@tmpb=\@tmpc\@clipfusefalse + \Put@Direct(103,171){\setatombondh}% + }% + \else\if\@tmpb G%fused bond + {\let\@tmpb=\@tmpc\@clipfusefalse + \Put@Direct(103,171){\setatombondF}% + }% + \else% + \yl@xdiff=58\relax + \yl@ydiff=-21\relax + \putlratom{-27}{311}{\@memberb}% + \Put@Line(103,171)(-3,5){72}% % single bond at 2 + \fi\fi\fi\fi% + \fi\fi\fi + \fi}% end of \@hsubstb +% \end{macrocode} +% \end{macro} +% +% The |\@hsubstc| command is used for placing a substituent (|\@memberb|) at +% the 3-position (upper-right) of a vertical six-membered ring. +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/12/15}{Added bond modifiers: FA, FB, GA, GB, Su, Sd} +% \changes{v4.03}{2005/07/20}{Wave bonds for stereochemistry: U, FU, GU, SU, SV} +% \begin{macro}{\@hsubstc} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 3 % +% %%%%%%%%%%%%%%% +\def\@hsubstc{% + \if@cclip %clipping + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=33\relax + \yl@ydiff=5\relax + \putratom{373}{331}{\@memberb}% + \Put@Line(343,221)(3,5){63}% % single bond at 3 (62->63) + \else\if\@tmpc B%(B) beta + \yl@xdiff=0\relax + \yl@ydiff=21\relax + \putratom{443}{240}{\@memberb}% % right type + {% + \thicklines% + \Put@Line(343,201)(5,3){100}% % single bond at 3 + }% + \else\if\@tmpc A%(A) alpha + \yl@xdiff=30\relax + \yl@ydiff=0\relax + \putlratom{273}{331}{\@memberb}% % left-right type + \dotorline(303,221)(0,1){110}/(303,221)(303,321)% + \else\if\@tmpc u%(u) up --- (B) beta + \yl@xdiff=30\relax + \yl@ydiff=0\relax + \putlratom{273}{331}{\@memberb}% % left-right type + {% + \thicklines% + \Put@Line(303,221)(0,1){100}% % single bond at 3 + }% + \else\if\@tmpc d%(d) down --- (A) alpha + \yl@xdiff=0\relax + \yl@ydiff=21\relax + \putratom{443}{240}{\@memberb}% % right type + \dotorline(343,201)(5,3){100}/(343,201)(443,261)% + \else\if\@tmpc b%(b) beta + \yl@xdiff=0\relax + \yl@ydiff=21\relax + \putratom{443}{240}{\@memberb}% % right type + \Put@Line(343,201)(5,3){100}% % single bond at 3 + \else\if\@tmpc a%(a) alpha + \yl@xdiff=30\relax + \yl@ydiff=0\relax + \putlratom{273}{331}{\@memberb}% % left-right type + \Put@Line(303,221)(0,1){100}% % single bond at 3 + \else\if\@tmpc V%(V) beta undefined + \yl@xdiff=0\relax + \yl@ydiff=21\relax + \putratom{443}{240}{\@memberb}% % right type + {% + \WaveBonds% + \Put@Line(343,201)(5,3){100}% % single bond at 3 + }% + \else\if\@tmpc U%(U) alpha undefined + \yl@xdiff=30\relax + \yl@ydiff=0\relax + \putlratom{273}{331}{\@memberb}% % left-right type + {% + \WaveBonds% + \Put@Line(303,221)(0,1){100}% % single bond at 3 + }% + \fi\fi\fi\fi\fi% + \fi\fi\fi\fi + \else\if\@tmpb D%double bond + \yl@xdiff=12\relax + \yl@ydiff=-18\relax + \putratom{373}{331}{\@memberb}% + \Put@Line(328,208)(3,5){63}% % double bond at 3 + \Put@Line(303,214)(3,5){63}% % double bond at 3 + \else\if\@tmpb B%beta single bond + \yl@xdiff=33\relax + \yl@ydiff=5\relax + \putratom{373}{331}{\@memberb}% + {% + \thicklines% + \Put@Line(343,221)(3,5){63}% % single bond at 3 + }% + \else\if\@tmpb A%alpha single bond + \yl@xdiff=33\relax + \yl@ydiff=5\relax + \putratom{373}{331}{\@memberb}% + \dotorline(343,221)(3,5){63}/(343,221)(406,326)% + \else\if\@tmpb U%undefined single bond + \yl@xdiff=33\relax + \yl@ydiff=5\relax + \putratom{373}{331}{\@memberb}% + {% + \WaveBonds% + \Put@Line(343,221)(3,5){63}% % single wave bond at 3 + }% + \else\if\@tmpb F%fused bond + {\let\@tmpb=\@tmpc\@clipfusetrue + \Put@Direct(303,171){\setatombondD}% + }% + \else\if\@tmpb G%fused bond + {\let\@tmpb=\@tmpc\@clipfusetrue + \Put@Direct(303,171){\setatombondb}% + }% + \else% + \yl@xdiff=33\relax + \yl@ydiff=5\relax + \putratom{373}{331}{\@memberb}% + \Put@Line(343,221)(3,5){63}% % single bond at 3 (62->63) + \fi\fi\fi\fi% + \fi\fi\fi + \else%no clipping + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=12\relax + \yl@ydiff=-20\relax + \putratom{363}{311}{\@memberb}% + \Put@Line(303,171)(3,5){72}% % single bond at 3 + \else\if\@tmpc B%(B) beta + \yl@xdiff=-20\relax + \yl@ydiff=3\relax + \putratom{443}{240}{\@memberb}% % right type + {% + \thicklines% + \Put@Line(303,171)(5,3){120}% % single bond at 3 + }% + \else\if\@tmpc A%(A) alpha + \yl@xdiff=30\relax + \yl@ydiff=-20\relax + \putratom{273}{331}{\@memberb}% % right type + \dotorline(303,171)(0,1){140}/(303,171)(303,311)% + \else\if\@tmpc u%(u) up --- (B) beta + \yl@xdiff=30\relax + \yl@ydiff=-20\relax + \putratom{273}{331}{\@memberb}% % right type + {% + \thicklines% + \Put@Line(303,171)(0,1){140}% % single bond at 3 + }% + \else\if\@tmpc d%(d) down --- (A) alpha + \yl@xdiff=-20\relax + \yl@ydiff=3\relax + \putratom{443}{240}{\@memberb}% % right type + \dotorline(303,171)(5,3){120}/(303,171)(423,243)% + \else\if\@tmpc b%(b) beta + \yl@xdiff=-20\relax + \yl@ydiff=3\relax + \putratom{443}{240}{\@memberb}% % right type + \Put@Line(303,171)(5,3){120}% % single bond at 3 + \else\if\@tmpc a%(a) alpha + \yl@xdiff=30\relax + \yl@ydiff=-20\relax + \putratom{273}{331}{\@memberb}% % right type + \Put@Line(303,171)(0,1){140}% % single bond at 3 + \else\if\@tmpc V%(V) beta undefined + \yl@xdiff=-20\relax + \yl@ydiff=3\relax + \putratom{443}{240}{\@memberb}% % right type + {% + \WaveBonds% + \Put@Line(303,171)(5,3){120}% % single bond at 3 + }% + \else\if\@tmpc U%(U) alpha undefined + \yl@xdiff=30\relax + \yl@ydiff=-20\relax + \putratom{273}{331}{\@memberb}% % right type + {% + \WaveBonds% + \Put@Line(303,171)(0,1){140}% % single bond at 3 + }% + \fi\fi\fi\fi\fi% + \fi\fi\fi\fi% + \else\if\@tmpb D%double bond + \yl@xdiff=6\relax + \yl@ydiff=-20\relax + \putratom{363}{311}{\@memberb}% + \Put@Line(310,168)(3,5){72}% % double bond at 3 + \Put@Line(284,174)(3,5){72}% % double bond at 3 + \else\if\@tmpb B%beta single bond + \yl@xdiff=12\relax + \yl@ydiff=-20\relax + \putratom{363}{311}{\@memberb}% + {% + \thicklines% + \Put@Line(303,171)(3,5){72}% % single bond at 3 + }% + \else\if\@tmpb A%alpha single bond + \yl@xdiff=12\relax + \yl@ydiff=-20\relax + \putratom{363}{311}{\@memberb}% + \dotorline(303,171)(3,5){72}/(303,171)(375,291)% + \else\if\@tmpb U%undefined single bond + \yl@xdiff=12\relax + \yl@ydiff=-20\relax + \putratom{363}{311}{\@memberb}% + {% + \WaveBonds% + \Put@Line(303,171)(3,5){72}% % single wave bond at 3 + }% + \else\if\@tmpb F%fused bond + {\let\@tmpb=\@tmpc\@clipfusefalse + \Put@Direct(303,171){\setatombondD}% + }% + \else\if\@tmpb G%fused bond + {\let\@tmpb=\@tmpc\@clipfusefalse + \Put@Direct(303,171){\setatombondb}% + }% + \else% + \yl@xdiff=12\relax + \yl@ydiff=-20\relax + \putratom{363}{311}{\@memberb}% + \Put@Line(303,171)(3,5){72}% % single bond at 3 + \fi\fi\fi\fi% + \fi\fi\fi + \fi}% end of \@hsubstc +% \end{macrocode} +% \end{macro} +% +% The |\@hsubstd| command is used for placing a substituent (|\@memberb|) at +% the 4-position (right-hand) of a vertical six-membered ring. +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/12/15}{Added bond modifiers: FA, FB, GA, GB, Su, Sd} +% \changes{v4.03}{2005/07/20}{Wave bonds for stereochemistry: U, FU, GU, SU, SV} +% \begin{macro}{\@substd} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 4 % +% %%%%%%%%%%%%%%% +\def\@hsubstd{% +\if@clip %clipping + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=-17\relax + \yl@ydiff=31\relax + \putratom{563}{-31}{\@memberb}% % right type only + \Put@Line(436,0)(1,0){110}% % single bond at 4 + \else\if\@tmpc B%(B) beta + \yl@xdiff=-27\relax + \yl@ydiff=36\relax + \putratom{563}{42}{\@memberb}% % right type only + {% + \thicklines% + \Put@Line(436,18)(5,3){100}% % single bond at 4 + }% + \else\if\@tmpc A%(A) alpha + \yl@xdiff=-27\relax + \yl@ydiff=22\relax + \putratom{563}{-100}{\@memberb}% % right type only + \dotorline(436,-18)(5,-3){100}/(436,-18)(526,-72)% + \else\if\@tmpc u%(u) up --- (B) beta + \yl@xdiff=-27\relax + \yl@ydiff=22\relax + \putratom{563}{-100}{\@memberb}% % right type only + {% + \thicklines% + \Put@Line(436,-18)(5,-3){100}% % single bond at 4 + }% + \else\if\@tmpc d%(d) down --- (A) alpha + \yl@xdiff=-27\relax + \yl@ydiff=36\relax + \putratom{563}{42}{\@memberb}% % right type only + \dotorline(436,18)(5,3){100}/(436,18)(536,78)% + \else\if\@tmpc b%(b) beta + \yl@xdiff=-27\relax + \yl@ydiff=36\relax + \putratom{563}{42}{\@memberb}% % right type only + \Put@Line(436,18)(5,3){100}% % single bond at 4 + \else\if\@tmpc a%(a) alpha + \yl@xdiff=-27\relax + \yl@ydiff=22\relax + \putratom{563}{-100}{\@memberb}% % right type only + \Put@Line(436,-18)(5,-3){100}% % single bond at 4 + \else\if\@tmpc V%(V) beta undefined + \yl@xdiff=-27\relax + \yl@ydiff=36\relax + \putratom{563}{42}{\@memberb}% % right type only + {% + \WaveBonds% + \Put@Line(436,18)(5,3){100}% % single bond at 4 + }% + \else\if\@tmpc U%(U) alpha undefined + \yl@xdiff=-27\relax + \yl@ydiff=22\relax + \putratom{563}{-100}{\@memberb}% % right type only + {% + \WaveBonds% + \Put@Line(436,-18)(5,-3){100}% % single bond at 4 + }% + \fi\fi\fi\fi\fi% + \fi\fi\fi\fi + \else\if\@tmpb D%double bond + \yl@xdiff=-17\relax + \yl@ydiff=31\relax + \putratom{563}{-31}{\@memberb}% % right type only + \Put@Line(436,-12)(1,0){110}% % double bond at 4 + \Put@Line(436,12)(1,0){110}% % double bond at 4 + \else\if\@tmpb B%beta single bond + \yl@xdiff=-17\relax + \yl@ydiff=31\relax + \putratom{563}{-31}{\@memberb}% % right type only + {% + \thicklines% + \Put@Line(436,0)(1,0){110}% % single bond at 4 + }% + \else\if\@tmpb A%alpha single bond + \yl@xdiff=-17\relax + \yl@ydiff=31\relax + \putratom{563}{-31}{\@memberb}% % right type only + \dotorline(436,0)(1,0){110}/(436,0)(546,0)% + \else\if\@tmpb U%undefined single bond + \yl@xdiff=-17\relax + \yl@ydiff=31\relax + \putratom{563}{-31}{\@memberb}% % right type only + {% + \WaveBonds% + \Put@Line(436,0)(1,0){110}% % single wave bond at 3 + }% + \else\if\@tmpb F%fused bond + {\let\@tmpb=\@tmpc\@clipfusetrue + \Put@Direct(406,0){\setatombondF}% + }% + \else\if\@tmpb G%fused bond + {\let\@tmpb=\@tmpc\@clipfusetrue + \Put@Direct(406,0){\setatombondE}% + }% + \else% + \yl@xdiff=-17\relax + \yl@ydiff=31\relax + \putratom{563}{-31}{\@memberb}% % right type only + \Put@Line(436,0)(1,0){110}% % single bond at 4 + \fi\fi\fi\fi% + \fi\fi\fi +\else%% no clipping + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=-17\relax + \yl@ydiff=31\relax + \putratom{563}{-31}{\@memberb}% % right type only + \Put@Line(406,0)(1,0){140}% % single bond at 4 + \else\if\@tmpc B%(B) beta + \yl@xdiff=-37\relax + \yl@ydiff=30\relax + \putratom{563}{42}{\@memberb}% % right type only + {% + \thicklines% + \Put@Line(406,0)(5,3){120}% % single bond at 4 + }% + \else\if\@tmpc A%(A) alpha + \yl@xdiff=-37\relax + \yl@ydiff=28\relax + \putratom{563}{-100}{\@memberb}% % right type only + \dotorline(406,0)(5,-3){120}/(406,0)(526,-72)% + \else\if\@tmpc u%(u) up --- (B) beta + \yl@xdiff=-37\relax + \yl@ydiff=28\relax + \putratom{563}{-100}{\@memberb}% % right type only + {% + \thicklines% + \Put@Line(406,0)(5,-3){120}% % single bond at 4 + }% + \else\if\@tmpc d%(d) down --- (A) alpha + \yl@xdiff=-37\relax + \yl@ydiff=30\relax + \putratom{563}{42}{\@memberb}% % right type only + \dotorline(406,0)(5,3){120}/(406,0)(526,72)% + \else\if\@tmpc b%(b) beta + \yl@xdiff=-37\relax + \yl@ydiff=30\relax + \putratom{563}{42}{\@memberb}% % right type only + \Put@Line(406,0)(5,3){120}% % single bond at 4 + \else\if\@tmpc a%(a) alpha + \yl@xdiff=-37\relax + \yl@ydiff=28\relax + \putratom{563}{-100}{\@memberb}% % right type only + \Put@Line(406,0)(5,-3){120}% % single bond at 4 + \else\if\@tmpc V%(V) beta undefined + \yl@xdiff=-37\relax + \yl@ydiff=30\relax + \putratom{563}{42}{\@memberb}% % right type only + {% + \WaveBonds% + \Put@Line(406,0)(5,3){120}% % single bond at 4 + }% + \else\if\@tmpc U%(U) alpha undefined + \yl@xdiff=-37\relax + \yl@ydiff=28\relax + \putratom{563}{-100}{\@memberb}% % right type only + {% + \WaveBonds% + \Put@Line(406,0)(5,-3){120}% % single bond at 4 + }% + \fi\fi\fi\fi\fi% + \fi\fi\fi\fi + \else\if\@tmpb D%double bond + \yl@xdiff=-17\relax + \yl@ydiff=31\relax + \putratom{563}{-31}{\@memberb}% % right type only + \Put@Line(406,-12)(1,0){140}% % double bond at 4 + \Put@Line(406,12)(1,0){140}% % double bond at 4 + \else\if\@tmpb B%beta single bond + \yl@xdiff=-17\relax + \yl@ydiff=31\relax + \putratom{563}{-31}{\@memberb}% % right type only + {% + \thicklines% + \Put@Line(406,0)(1,0){140}% % single bond at 4 + }% + \else\if\@tmpb A%alpha single bond + \yl@xdiff=-17\relax + \yl@ydiff=31\relax + \putratom{563}{-31}{\@memberb}% % right type only + \dotorline(406,0)(1,0){140}/(406,0)(546,0)% + \else\if\@tmpb U%undefined single bond + \yl@xdiff=-17\relax + \yl@ydiff=31\relax + \putratom{563}{-31}{\@memberb}% % right type only + {% + \WaveBonds% + \Put@Line(406,0)(1,0){140}% % single wave bond at 4 + }% + \else\if\@tmpb F%fused bond + {\let\@tmpb=\@tmpc\@clipfusefalse + \Put@Direct(406,0){\setatombondF}% + }% + \else\if\@tmpb G%fused bond + {\let\@tmpb=\@tmpc\@clipfusefalse + \Put@Direct(406,0){\setatombondE}% + }% + \else% + \yl@xdiff=-17\relax + \yl@ydiff=31\relax + \putratom{563}{-31}{\@memberb}% % right type only + \Put@Line(406,0)(1,0){140}% % single bond at 4 + \fi\fi\fi\fi% + \fi\fi\fi + \fi}% end of \@hsubstd +% \end{macrocode} +% \end{macro} +% +% The |\@hsubste| command is used for placing a substituent (|\@memberb|) at +% the 5-position (lower-right) of a vertical six-membered ring. +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/12/15}{Added bond modifiers: FA, FB, GA, GB, Su, Sd} +% \changes{v4.00}{2003/4/1}{Bug fix} +% \changes{v4.03}{2005/07/20}{Wave bonds for stereochemistry: U, FU, GU, SU, SV} +% \begin{macro}{\@hsubste} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 5 % +% %%%%%%%%%%%%%%% +\def\@hsubste{% + \if@eclip %clipping + \if\@tmpb S%single bond + \ifx\@tmpc\empty% +% \yl@xdiff=43\relax + \yl@xdiff=33\relax + \yl@ydiff=76\relax +% \putratom{363}{-402}{\@memberb}% + \putratom{373}{-402}{\@memberb}% + \Put@Line(343,-221)(3,-5){63}%% single bond at 5 (62=>63) + \else\if\@tmpc B%(B) beta + \yl@xdiff=0\relax + \yl@ydiff=41\relax + \putratom{443}{-301}{\@memberb}% % right type + {% + \thicklines% + \Put@Line(343,-201)(5,-3){100}% % single bond at 5 + }% + \else\if\@tmpc A%(A) alpha +% \yl@xdiff=20\relax + \yl@xdiff=30\relax + \yl@ydiff=71\relax +% \putratom{283}{-402}{\@memberb}% % right type + \putlratom{273}{-402}{\@memberb}% % left-right type +% \dotorline(303,-221)(0,-1){110}/(303,-221)(303,-321)% + \dotorline(303,-221)(0,-1){110}/(303,-221)(303,-311)% + \else\if\@tmpc u%(u) up --- (B) beta +% \yl@xdiff=20\relax + \yl@xdiff=30\relax + \yl@ydiff=71\relax +% \putratom{283}{-402}{\@memberb}% % right type + \putlratom{273}{-402}{\@memberb}% % left-right type + {% + \thicklines% + \Put@Line(303,-221)(0,-1){100}% % single bond at 5 + }% + \else\if\@tmpc d%(d) down --- (A) alpha + \yl@xdiff=0\relax + \yl@ydiff=41\relax + \putratom{443}{-301}{\@memberb}% % right type + \dotorline(343,-201)(5,-3){100}/(343,-201)(443,-260)% + \else\if\@tmpc b%(b) beta + \yl@xdiff=0\relax + \yl@ydiff=41\relax + \putratom{443}{-301}{\@memberb}% % right type + \Put@Line(343,-201)(5,-3){100}% % single bond at 5 + \else\if\@tmpc a%(a) alpha +% \yl@xdiff=20\relax + \yl@xdiff=30\relax + \yl@ydiff=71\relax +% \putratom{283}{-402}{\@memberb}% % right type + \putratom{273}{-402}{\@memberb}% % left-right type + \Put@Line(303,-221)(0,-1){100}% % single bond at 5 + \else\if\@tmpc V%(V) beta undefined + \yl@xdiff=0\relax + \yl@ydiff=41\relax + \putratom{443}{-301}{\@memberb}% % right type + {% + \WaveBonds% + \Put@Line(343,-201)(5,-3){100}% % single bond at 5 + }% + \else\if\@tmpc U%(U) alpha undefined + \yl@xdiff=30\relax + \yl@ydiff=71\relax + \putratom{273}{-402}{\@memberb}% % left-right type + {% + \WaveBonds% + \Put@Line(303,-221)(0,-1){100}% % single bond at 5 + }% + \fi\fi\fi\fi\fi% + \fi\fi\fi\fi + \else\if\@tmpb D%double bond +% \yl@xdiff=22\relax + \yl@xdiff=12\relax + \yl@ydiff=82\relax +% \putratom{363}{-402}{\@memberb}% + \putratom{373}{-402}{\@memberb}% + \Put@Line(328,-208)(3,-5){63}% % double bond at 5 (62->63) + \Put@Line(306,-224)(3,-5){63}% % double bond at 5 (62->63) + \else\if\@tmpb B%beta single bond +% \yl@xdiff=43\relax + \yl@xdiff=33\relax + \yl@ydiff=76\relax +% \putratom{363}{-402}{\@memberb}% + \putratom{373}{-402}{\@memberb}% + {% + \thicklines% + \Put@Line(343,-221)(3,-5){63}%% single bond at 5(62->63) + }% + \else\if\@tmpb A%alpha single bond + \yl@xdiff=33\relax + \yl@ydiff=76\relax + \putratom{373}{-402}{\@memberb}% + \dotorline(343,-221)(3,-5){63}/(343,-221)(406,-326)% + \else\if\@tmpb U%undefined single bond + \yl@xdiff=33\relax + \yl@ydiff=76\relax + \putratom{373}{-402}{\@memberb}% + {% + \WaveBonds% + \Put@Line(343,-221)(3,-5){63}% % single wave bond at 5 + }% + \else\if\@tmpb F%fused bond + {\let\@tmpb=\@tmpc\@clipfusetrue + \Put@Direct(303,-171){\setatombondb}% + }% + \else\if\@tmpb G%fused bond + {\let\@tmpb=\@tmpc\@clipfusetrue + \Put@Direct(303,-171){\setatombondG}% + }% + \else% +% \yl@xdiff=43\relax + \yl@xdiff=33\relax + \yl@ydiff=76\relax +% \putratom{363}{-402}{\@memberb}% + \putratom{373}{-402}{\@memberb}% + \Put@Line(343,-221)(3,-5){63}% % single bond at 5(62->63) + \fi\fi\fi\fi% + \fi\fi\fi + \else%no clipping + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=9\relax +% \yl@ydiff=111\relax + \yl@ydiff=91\relax +% \putratom{363}{-402}{\@memberb}% + \putratom{363}{-382}{\@memberb}% + \Put@Line(303,-171)(3,-5){72}% % single bond at 5 + \else\if\@tmpc B%(B) beta + \yl@xdiff=-20\relax + \yl@ydiff=58\relax + \putratom{443}{-301}{\@memberb}% % right type + {% + \thicklines% + \Put@Line(303,-171)(5,-3){120}% % single bond at 5 + }% + \else\if\@tmpc A%(A) alpha +% \yl@xdiff=20\relax + \yl@xdiff=30\relax + \yl@ydiff=81\relax +% \putratom{283}{-402}{\@memberb}% % right type + \putratom{273}{-402}{\@memberb}% % right type +% \dotorline(303,-171)(0,-1){140}/(303,-171)(303,-321)% + \dotorline(303,-171)(0,-1){140}/(303,-171)(303,-311)%2002/5/30 + \else\if\@tmpc u%(u) up --- (B) beta +% \yl@xdiff=20\relax + \yl@xdiff=30\relax + \yl@ydiff=81\relax +% \putratom{283}{-402}{\@memberb}% % right type + \putratom{273}{-402}{\@memberb}% % right type + {% + \thicklines% + \Put@Line(303,-171)(0,-1){140}% % single bond at 5 + }% + \else\if\@tmpc d%(d) down --- (A) alpha + \yl@xdiff=-20\relax + \yl@ydiff=58\relax + \putratom{443}{-301}{\@memberb}% % right type + \dotorline(303,-171)(5,-3){120}/(303,-171)(423,-243)% + \else\if\@tmpc b%(b) beta + \yl@xdiff=-20\relax + \yl@ydiff=58\relax + \putratom{443}{-301}{\@memberb}% % right type + \Put@Line(303,-171)(5,-3){120}% % single bond at 5 + \else\if\@tmpc a%(a) alpha +% \yl@xdiff=20\relax + \yl@xdiff=30\relax + \yl@ydiff=81\relax +% \putratom{283}{-402}{\@memberb}% % right type + \putratom{273}{-402}{\@memberb}% % right type + \Put@Line(303,-171)(0,-1){140}% % single bond at 5 + \else\if\@tmpc V%(V) beta undefined + \yl@xdiff=-20\relax + \yl@ydiff=58\relax + \putratom{443}{-301}{\@memberb}% % right type + {% + \WaveBonds% + \Put@Line(303,-171)(5,-3){120}% % single bond at 5 + }% + \else\if\@tmpc U%(U) alpha undefined + \yl@xdiff=30\relax + \yl@ydiff=81\relax + \putratom{273}{-402}{\@memberb}% % right type + {% + \WaveBonds% + \Put@Line(303,-171)(0,-1){140}% % single bond at 5 + }% + \fi\fi\fi\fi\fi% + \fi\fi\fi\fi + \else\if\@tmpb D%double bond + \yl@xdiff=3\relax +% \yl@ydiff=111\relax + \yl@ydiff=91\relax + \putratom{363}{-382}{\@memberb}% +% \putratom{363}{-402}{\@memberb}% + \Put@Line(310,-168)(3,-5){72}% % double bond at 5 + \Put@Line(284,-174)(3,-5){72}% % double bond at 5 + \else\if\@tmpb B%beta single bond + \yl@xdiff=9\relax +% \yl@ydiff=111\relax + \yl@ydiff=91\relax + \putratom{363}{-382}{\@memberb}% +% \putratom{363}{-402}{\@memberb}% + {% + \thicklines% + \Put@Line(303,-171)(3,-5){72}% % single bond at 5 + }% + \else\if\@tmpb A%alpha single bond + \yl@xdiff=9\relax + \yl@ydiff=91\relax + \putratom{363}{-382}{\@memberb}% + \dotorline(303,-171)(3,-5){72}/(303,-171)(375,-291)% + \else\if\@tmpb U%undefined single bond + \yl@xdiff=9\relax + \yl@ydiff=91\relax + \putratom{363}{-382}{\@memberb}% + {% + \WaveBonds% + \Put@Line(303,-171)(3,-5){72}% % single wave bond at 5 + }% + \else\if\@tmpb F%fused bond + {\let\@tmpb=\@tmpc\@clipfusefalse + \Put@Direct(303,-171){\setatombondb}% + }% + \else\if\@tmpb G%fused bond + {\let\@tmpb=\@tmpc\@clipfusefalse + \Put@Direct(303,-171){\setatombondG}% + }% + \else% + \yl@xdiff=9\relax +% \yl@ydiff=111\relax + \yl@ydiff=91\relax +% \putratom{363}{-402}{\@memberb}% + \putratom{363}{-382}{\@memberb}% + \Put@Line(303,-171)(3,-5){72}% % single bond at 5 + \fi\fi\fi\fi% + \fi\fi\fi + \fi}% end of \@hsubste +% \end{macrocode} +% \end{macro} +% +% The |\@hsubstf| command is used for placing a substituent (|\@memberb|) at +% the 6-position (lower-left) of a vertical six-membered ring. +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/12/15}{Added bond modifiers: FA, FB, GA, GB, Su, Sd} +% \changes{v4.03}{2005/07/20}{Wave bonds for stereochemistry: U, FU, GU, SU, SV} +% \begin{macro}{\@hsubstf} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 6 % +% %%%%%%%%%%%%%%% +\def\@hsubstf{% + \if@fclip %clipping + \if\@tmpb S%single bond + \ifx\@tmpc\empty% +% \yl@xdiff=43\relax + \yl@xdiff=53\relax + \yl@ydiff=76\relax +% \putlratom{-27}{-402}{\@memberb}% + \putlratom{-37}{-402}{\@memberb}% + \Put@Line(79,-221)(-3,-5){63}% % single bond at 6 (62=>63) + \else\if\@tmpc B%(B) beta + \yl@xdiff=-10\relax + \yl@ydiff=40\relax + \putlatom{-31}{-301}{\@memberb}% % right type + {% + \thicklines% + \Put@Line(59,-201)(-5,-3){100}% % single bond at 6 + }% + \else\if\@tmpc A%(A) alpha +% \yl@xdiff=20\relax + \yl@xdiff=30\relax + \yl@ydiff=81\relax +% \putratom{83}{-402}{\@memberb}% % right type + \putlratom{73}{-402}{\@memberb}% % left-right type + \dotorline(103,-221)(0,-1){100}/(103,-221)(103,-321)% + \else\if\@tmpc u%(u) up --- (B) beta +% \yl@xdiff=20\relax + \yl@xdiff=30\relax + \yl@ydiff=81\relax +% \putratom{83}{-402}{\@memberb}% % right type + \putlratom{73}{-402}{\@memberb}% % left-right type + {% + \thicklines% + \Put@Line(103,-221)(0,-1){100}% % single bond at 6 + }% + \else\if\@tmpc d%(d) down --- (A) alpha + \yl@xdiff=-10\relax + \yl@ydiff=40\relax + \putlatom{-31}{-301}{\@memberb}% % right type + \dotorline(59,-201)(-5,-3){100}/(59,-201)(-41,-261)% + \else\if\@tmpc b%(b) beta + \yl@xdiff=-10\relax + \yl@ydiff=40\relax + \putlatom{-31}{-301}{\@memberb}% % right type + \Put@Line(59,-201)(-5,-3){100}% % single bond at 6 + \else\if\@tmpc a%(a) alpha +% \yl@xdiff=20\relax + \yl@xdiff=30\relax + \yl@ydiff=81\relax +% \putratom{83}{-402}{\@memberb}% % right type + \putratom{73}{-402}{\@memberb}% % right type + \Put@Line(103,-221)(0,-1){100}% % single bond at 6 + \else\if\@tmpc V%(V) beta undefined + \yl@xdiff=-10\relax + \yl@ydiff=40\relax + \putlatom{-31}{-301}{\@memberb}% % right type + {% + \WaveBonds% + \Put@Line(59,-201)(-5,-3){100}% % single bond at 6 + }% + \else\if\@tmpc U%(U) alpha undefined + \yl@xdiff=30\relax + \yl@ydiff=81\relax + \putratom{73}{-402}{\@memberb}% % right type + {% + \WaveBonds% + \Put@Line(103,-221)(0,-1){100}% % single bond at 6 + }% + \fi\fi\fi\fi\fi + \fi\fi\fi\fi + \else\if\@tmpb D%double bond +% \yl@xdiff=49\relax + \yl@xdiff=59\relax + \yl@ydiff=82\relax +% \putlratom{-27}{-402}{\@memberb}% + \putlratom{-37}{-402}{\@memberb}% + \Put@Line(78,-208)(-3,-5){63}% % double bond at 6 (62->63) + \Put@Line(106,-219)(-3,-5){63}% % double bond at 6 (62->63) + \else\if\@tmpb B%beta single bond +% \yl@xdiff=43\relax + \yl@xdiff=53\relax + \yl@ydiff=76\relax +% \putlratom{-27}{-402}{\@memberb}% + \putlratom{-37}{-402}{\@memberb}% + {% + \thicklines% + \Put@Line(79,-221)(-3,-5){63}% % single bond at 6 (62=>63) + }% + \else\if\@tmpb A%alpha single bond + \yl@xdiff=53\relax + \yl@ydiff=76\relax + \putlratom{-37}{-402}{\@memberb}% + \dotorline(79,-221)(-3,-5){63}/(79,-221)(16,-326)% + \else\if\@tmpb U%undefined single bond + \yl@xdiff=53\relax + \yl@ydiff=76\relax + \putlratom{-37}{-402}{\@memberb}% + {% + \WaveBonds% + \Put@Line(79,-221)(-3,-5){63}% % single wave bond at 6 + }% + \else\if\@tmpb F%fused bond + {\let\@tmpb=\@tmpc\@clipfusetrue + \Put@Direct(103,-171){\setatombondE}% + }% + \else\if\@tmpb G%fused bond + {\let\@tmpb=\@tmpc\@clipfusetrue + \Put@Direct(103,-171){\setatombondh}% + }% + \else% +% \yl@xdiff=43\relax + \yl@xdiff=53\relax + \yl@ydiff=76\relax +% \putlratom{-27}{-402}{\@memberb}% + \putlratom{-37}{-402}{\@memberb}% + \Put@Line(79,-221)(-3,-5){63}% % single bond at 6(62->63) + \fi\fi\fi\fi% + \fi\fi\fi + \else%%no clipping + \if\@tmpb S%single bond + \ifx\@tmpc\empty% +% \yl@xdiff=59\relax + \yl@xdiff=63\relax +% \yl@ydiff=111\relax + \yl@ydiff=91\relax +% \putlratom{-27}{-402}{\@memberb}% + \putlratom{-27}{-382}{\@memberb}% + \Put@Line(108,-171)(-3,-5){72}% % single bond at 6 +% \else\if\@tmpb B%beta single bond + \else\if\@tmpc B%beta single bond%1998/10/11 by S. Fujita + \yl@xdiff=8\relax + \yl@ydiff=58\relax + \putlatom{-31}{-301}{\@memberb}% % right type + {% + \thicklines% + \Put@Line(103,-171)(-5,-3){120}% % single bond at 6 + }% + \else\if\@tmpc A%(A) alpha +% \yl@xdiff=20\relax + \yl@xdiff=30\relax + \yl@ydiff=91\relax +% \putratom{83}{-402}{\@memberb}% % right type + \putlratom{73}{-402}{\@memberb}% % left-right type + \dotorline(103,-171)(0,-1){140}/(103,-171)(103,-311)% + \else\if\@tmpc u%(u) up --- (B) beta +% \yl@xdiff=20\relax + \yl@xdiff=30\relax + \yl@ydiff=91\relax +% \putratom{83}{-402}{\@memberb}% % right type + \putlratom{73}{-402}{\@memberb}% % left-right type + {% + \thicklines% + \Put@Line(103,-171)(0,-1){140}% % single bond at 6 + }% + \else\if\@tmpc d%(d) down --- (A) alpha + \yl@xdiff=8\relax + \yl@ydiff=58\relax + \putlatom{-31}{-301}{\@memberb}% % right type + \dotorline(103,-171)(-5,-3){120}/(103,-171)(-17,-243)% + \else\if\@tmpc b%(b) beta + \yl@xdiff=8\relax + \yl@ydiff=58\relax + \putlatom{-31}{-301}{\@memberb}% % right type + \Put@Line(103,-171)(-5,-3){120}% % single bond at 6 + \else\if\@tmpc a%(a) alpha +% \yl@xdiff=20\relax + \yl@xdiff=30\relax + \yl@ydiff=91\relax +% \putratom{83}{-402}{\@memberb}% % right type + \putlratom{73}{-402}{\@memberb}% % right-left type + \Put@Line(103,-171)(0,-1){140}% % single bond at 6 + \else\if\@tmpc V%(V) beta undefined + \yl@xdiff=8\relax + \yl@ydiff=58\relax + \putlatom{-31}{-301}{\@memberb}% % right type + {% + \WaveBonds% + \Put@Line(103,-171)(-5,-3){120}% % single bond at 6 + }% + \else\if\@tmpc U%(U) alpha undefined + \yl@xdiff=30\relax + \yl@ydiff=91\relax + \putlratom{73}{-402}{\@memberb}% % right-left type + {% + \WaveBonds% + \Put@Line(103,-171)(0,-1){140}% % single bond at 6 + }% + \fi\fi\fi\fi\fi% + \fi\fi\fi\fi + \else\if\@tmpb D%double bond + \yl@xdiff=65\relax +% \yl@ydiff=111\relax + \yl@ydiff=91\relax +% \putlratom{-27}{-402}{\@memberb}% + \putlratom{-27}{-382}{\@memberb}% + \Put@Line(96,-168)(-3,-5){72}% % double bond at 6 + \Put@Line(121,-174)(-3,-5){72}% % double bond at 6 + \else\if\@tmpb B%beta single bond + \yl@xdiff=59\relax +% \yl@ydiff=111\relax + \yl@ydiff=91\relax +% \putlratom{-27}{-402}{\@memberb}% + \putlratom{-27}{-382}{\@memberb}% + \Put@Line(108,-171)(-3,-5){72}% % single bond at 6 + {% + \thicklines% + \Put@Line(108,-171)(-3,-5){72}% % single bond at 6 + }% + \else\if\@tmpb A%alpha single bond + \yl@xdiff=59\relax + \yl@ydiff=91\relax + \putlratom{-27}{-382}{\@memberb}% + \dotorline(108,-171)(-3,-5){72}/(103,-171)(31,-291)% + \else\if\@tmpb U%undefined single bond + \yl@xdiff=59\relax + \yl@ydiff=91\relax + \putlratom{-27}{-382}{\@memberb}% + {% + \WaveBonds% + \Put@Line(108,-171)(-3,-5){72}% % single wave bond at 6 + }% + \else\if\@tmpb F%fused bond + {\let\@tmpb=\@tmpc\@clipfusefalse + \Put@Direct(103,-171){\setatombondE}% + }% + \else\if\@tmpb G%fused bond + {\let\@tmpb=\@tmpc\@clipfusefalse + \Put@Direct(103,-171){\setatombondh}% + }% + \else% + \yl@xdiff=59\relax +% \yl@ydiff=111\relax + \yl@ydiff=91\relax +% \putlratom{-27}{-402}{\@memberb}% + \putlratom{-27}{-382}{\@memberb}% + \Put@Line(108,-171)(-3,-5){72}% % single bond at 6 + \fi\fi\fi\fi% + \fi\fi\fi + \fi}% end of \@hsubstf +% \end{macrocode} +% \end{macro} +% +% \subsection{Setting-up substituents and bonds on a six-membered ring} +% +% The |\setsixringh| macro takes 5 arguments, which have the same meanings +% as described in the definition of the |\setsixringv| macro. +% +% \begin{verbatim} +% **************************************************************** +% * setting of atoms and bonds on a horizontal six-membered ring * +% **************************************************************** +% +% \setsixringh{SUBSLIST}{AD}{LOWER}{UPPER}{ORDER} +% +% \end{verbatim} +% +% The first argument |SUBSLIST| is a list of substituents, which is +% represented in the standard format of \XyMTeX{}. +% +% \begin{verbatim} +% SUBSLIST: list of substituents (max 6 substitution positions) +% +% for n = 1 to 6 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% +% \end{verbatim} +% +% The second argument |AD| is an adjustment value, which adjusts the original +% set of locant numbers into the standard one between 1 to 6 for drawing +% a six-membered ring. +% The effective range of the standared set of locant numbers is +% restricted by the auguments |LOWER| and |UPPER|. A minus value of +% the last argument shows the anti-clockwise numbering, while zero or +% a plus value represents the clockwise numbering. +% +% \begin{verbatim} +% AD : adjustment e.g. 0 for six-membered rings +% LOWER : lower limit LOWER < effective range < UPPER +% UPPER : upper limit +% ORDER : >= 0 clockwise, <0 anti-clockwise +% +% \end{verbatim} +% +% \changes{v1.02}{1998/10/11}{Adding switches \cs{@yla} etc.} +% \changes{v1.02}{1998/10/31}{Deleting switches \cs{@yla} etc.} +% +% \begin{macro}{\setsixringh} +% \begin{macrocode} +\def\setsixringh#1#2#3#4#5{% +\@forsemicol\member:=#1\do{% +\ifx\member\empty\else% +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifnum#5 < 0\relax% +\@tmpaa=-\@tmpa\relax \advance\@tmpaa by#2\relax% +\else\@tmpaa=\@tmpa\relax \advance\@tmpaa by#2\relax \fi +\ifnum\@tmpaa >#3\relax% +\ifnum\@tmpaa <#4\relax% +\ifcase\@tmpaa%0 omit +% \end{macrocode} +% +% The following commands are not used in a revised version +% because of the direct use of |\ifx\@memberb\@yl\else...\fi|. +% +% \begin{macrocode} +% %\or \if@yla\else\@hsubsta\fi% subst. on 1 +% %\or \if@ylb\else\@hsubstb\fi% subst. on 2 +% %\or \if@ylc\else\@hsubstc\fi% subst. on 3 +% %\or \if@yld\else\@hsubstd\fi% subst. on 4 +% %\or \if@yle\else\@hsubste\fi% subst. on 5 +% %\or \if@ylf\else\@hsubstf\fi% subst. on 6 +% \end{macrocode} +% +% \begin{macrocode} +\or{\setbscolor\@hsubsta\addbscolor{}{}}% subst. on 1%2010/10/01 +\or{\setbscolor\@hsubstb\addbscolor{}{}}% subst. on 2%2010/10/01 +\or{\setbscolor\@hsubstc\addbscolor{}{}}% subst. on 3%2010/10/01 +\or{\setbscolor\@hsubstd\addbscolor{}{}}% subst. on 4%2010/10/01 +\or{\setbscolor\@hsubste\addbscolor{}{}}% subst. on 5%2010/10/01 +\or{\setbscolor\@hsubstf\addbscolor{}{}}% subst. on 6%2010/10/01 +\fi%end of ifcase +\fi\fi\fi\fi}}% %end of setsixringh +% \end{macrocode} +% \end{macro} +% +% \section{Mocros linking Substituents} +% \subsection{Right-handed linking unit} +% +% A structure-drawing command can be used to typeset a substituent +% by using a (yl)-argument. Moreover, the macro |\ryl| permits us +% to draw an intermediate linking unit. +% \changes{v1.02}{1998/10/25}{New command: \cs{ryl} etc.} +% +% \begin{macro}{\ryl} +% \begin{macro}{\@ryl} +% \begin{macrocode} +\newcount\x@ryl +\newcount\y@ryl +\def\ryl{\@ifnextchar({\@ryl}{\@ryl()}} +\def\@ryl(#1)#2{% +\iniatom\iniflag%initialize +\@reset@ylsw% +\def\centeraaa{}% +\x@ryl=0\y@ryl=0 +\@forsemicol\member:=#1\do{% +\if@ylsw% +\XyMTeXWarning{Duplicated items in the first augument of \string\ryl}% +\else% +\ifx\member\empty\else% +\expandafter\@m@mb@r\member;\relax% +\expandafter\twoch@r\@membera{}% +\settowidth{\dimen0}{\@memberb}% +\x@ryl=\dimen0%%%dimension => counter +\divide\x@ryl\unitlength +\advance\x@ryl by-70 +\y@ryl=0 +\ifcase\@tmpa% +\def\centeraaa{\@memberb}\@ylswtrue +\advance\y@ryl by50 +\or%1 +\def\centeraaa{\@memberb}\@ylswtrue +\advance\x@ryl by30 +\advance\y@ryl by50 +\or%2 +\def\centeraaa{\@memberb}\@ylswtrue +\advance\x@ryl by40 +\advance\y@ryl by40 +\or%3 +\def\centeraaa{\@memberb}\@ylswtrue +\advance\x@ryl by50 +\advance\y@ryl by30 +\or%4 +\def\centeraaa{\@memberb}\@ylswtrue +\advance\x@ryl by50 +\advance\y@ryl by0 +\or%5 +\def\centeraaa{\@memberb}\@ylswtrue +\advance\x@ryl by50 +\advance\y@ryl by-30 +\or%6 +\def\centeraaa{\@memberb}\@ylswtrue +\advance\x@ryl by50 +\advance\y@ryl by-50 +\or%7 +\def\centeraaa{\@memberb}\@ylswtrue +\advance\x@ryl by30 +\advance\y@ryl by-50 +\or%8 +\def\centeraaa{\@memberb}\@ylswtrue +\advance\y@ryl by-50 +\fi +\fi\fi}% + \yl@shiftii=\x@ryl + \yl@shifti=-\y@ryl + \advance\yl@shiftii\yl@xdiff + \advance\yl@shifti\yl@ydiff + \begin{sfpicture}(0,0)(-\yl@shiftii,-\yl@shifti)% +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting hetero atoms % +% %%%%%%%%%%%%%%%%%%%%%%%% +\ifx\centeraaa\empty\else% + \@clipfusetrue + \putlatom{40}{-30}{\centeraaa}% % left type +\fi% +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents % +% %%%%%%%%%%%%%%%%%%%%%%%% +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else% +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\let\local@tmpa=\@tmpa%global to local 2002/5/30 by SF +\ifcase\local@tmpa% +{\setbscolor\setatombonda\addbscolor{}{}}%2010/10/01%\setatombonda% 0 (upward) (0,1) +\or{\setbscolor\setatombondF\addbscolor{}{}}%2010/10/01%\or\setatombondF%1 (3,5) +\or{\setbscolor\setatombondA\addbscolor{}{}}%2010/10/01%\or\setatombondA%2 (1,1) +\or{\setbscolor\setatombondf\addbscolor{}{}}%2010/10/01%\or\setatombondf%3 (5,3) +\or{\setbscolor\setatombondb\addbscolor{}{}}%2010/10/01%\or\setatombondb%4 (1,0) +\or{\setbscolor\setatombonde\addbscolor{}{}}%2010/10/01%\or\setatombonde%5 (5,-3) +\or{\setbscolor\setatombondB\addbscolor{}{}}%2010/10/01%\or\setatombondB%6 (1,-1) +\or{\setbscolor\setatombondE\addbscolor{}{}}%2010/10/01%\or\setatombondE%7 (3,-5) +\or{\setbscolor\setatombondc\addbscolor{}{}}%2010/10/01%\or\setatombondc%8 (0,-1) +\fi%end of ifcase +\fi +}\end{sfpicture}}% %end of \ryl macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The substituent-setting commands |\setatombondF| etc. are used +% in the macro |\ryl|. +% \changes{v4.03}{2005/07/20}{Concrete wave bonds for stereochemistry: FU, GU} +% +% \begin{macro}{\setatombondF} +% \changes{v1.02}{1998/10/25}{New command: \cs{setatombondF}} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \begin{macrocode} +\def\setatombondF{%% (3,5) + \if@clipfuse% + \if\@tmpb B%beta single bond + \yl@xdiff=10\relax + \yl@ydiff=-10\relax + {% + \thicklines% + \Put@Line(30,50)(3,5){60}% % single bond at 1 + }% + \else\if\@tmpb A%alpha single bond + \yl@xdiff=10\relax + \yl@ydiff=-10\relax + \dotorline(30,50)(3,5){60}/(30,50)(90,150)% + \else\if\@tmpb U%unspecified single bond + \yl@xdiff=10\relax + \yl@ydiff=-10\relax + {% + \WaveBonds% + \Put@Line(30,50)(3,5){60}% % single bond at 1 + }% + \else\if\@tmpb S%beta single bond + \yl@xdiff=10\relax + \yl@ydiff=-10\relax + \Put@Line(30,50)(3,5){60}% % single bond at 1 + \else\if\@tmpb D%double bond + \yl@xdiff=10\relax + \yl@ydiff=-10\relax + \Put@Line(40,44)(3,5){60}% % single bond at 1 + \Put@Line(20,56)(3,5){60}% % single bond at 1 + \else\if\@tmpb T%triple bond + \yl@xdiff=10\relax + \yl@ydiff=-10\relax + \Put@Line(45,41)(3,5){60}% % single bond at 1 + \Put@Line(30,50)(3,5){60}% % single bond at 1 + \Put@Line(15,59)(3,5){60}% % single bond at 1 + \else\ifx\@tmpb\empty%beta single bond + \yl@xdiff=10\relax + \yl@ydiff=-10\relax + \Put@Line(30,50)(3,5){60}% % single bond at 1 + \fi\fi\fi\fi\fi\fi\fi% + \putratom{80}{160}{\@memberb}% % right type + \else%no clipping + \if\@tmpb B%beta single bond + \yl@xdiff=10\relax + \yl@ydiff=-10\relax + {% + \thicklines% + \Put@Line(0,0)(3,5){90}% % single bond at 1 + }% + \else\if\@tmpb A%alpha single bond + \yl@xdiff=10\relax + \yl@ydiff=-10\relax + \dotorline(0,0)(3,5){90}/(0,0)(90,150)% + \else\if\@tmpb U%unspecified single bond + \yl@xdiff=10\relax + \yl@ydiff=-10\relax + {% + \WaveBonds% + \Put@Line(0,0)(3,5){90}% % single bond at 1 + }% + \else\if\@tmpb S%beta single bond + \yl@xdiff=10\relax + \yl@ydiff=-10\relax + \Put@Line(0,0)(3,5){90}% % single bond at 1 + \else\if\@tmpb D%beta single bond + \yl@xdiff=10\relax + \yl@ydiff=-10\relax + \Put@Line(10,-6)(3,5){90}% % single bond at 1 + \Put@Line(-10,6)(3,5){90}% % single bond at 1 + \else\if\@tmpb T%beta single bond + \yl@xdiff=10\relax + \yl@ydiff=-10\relax + \Put@Line(15,-9)(3,5){90}% % single bond at 1 + \Put@Line(0,0)(3,5){90}% % single bond at 1 + \Put@Line(-15,9)(3,5){90}% % single bond at 1 + \else\ifx\@tmpb\empty%beta single bond + \yl@xdiff=10\relax + \yl@ydiff=-10\relax + \Put@Line(0,0)(3,5){90}% % single bond at 1 + \fi\fi\fi\fi\fi\fi\fi% + \putratom{80}{160}{\@memberb}% % right type + \fi% +}% end of \setatombondF +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\setatombondE} +% \changes{v1.02}{1998/10/25}{New command: \cs{setatombondE}} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v4.03}{2005/07/20}{Concrete wave bonds for stereochemistry: FU, GU} +% \begin{macrocode} +\def\setatombondE{%% (3,-5) + \if@clipfuse% + \yl@xdiff=10\relax +% \yl@ydiff=70\relax + \yl@ydiff=90\relax + \if\@tmpb B%beta single bond + {% + \thicklines% + \Put@Line(30,-50)(3,-5){60}% % single bond at 1 + }% + \else\if\@tmpb A%alpha single bond + \dotorline(30,-50)(3,-5){60}/(30,-50)(90,-150)% + \else\if\@tmpb U%unspecified single bond + {% + \WaveBonds% + \Put@Line(30,-50)(3,-5){60}% % single bond at 1 + }% + \else\if\@tmpb S%beta single bond + \Put@Line(30,-50)(3,-5){60}% % single bond at 1 + \else\if\@tmpb D%double bond + \Put@Line(40,-44)(3,-5){60}% % single bond at 1 + \Put@Line(20,-56)(3,-5){60}% % single bond at 1 + \else\if\@tmpb T%triple bond + \Put@Line(45,-41)(3,-5){60}% % single bond at 1 + \Put@Line(30,-50)(3,-5){60}% % single bond at 1 + \Put@Line(15,-59)(3,-5){60}% % single bond at 1 + \else\ifx\@tmpb\empty%beta single bond + \Put@Line(30,-50)(3,-5){60}% % single bond at 1 + \fi\fi\fi\fi\fi\fi\fi% +% \putratom{80}{-220}{\@memberb}% % right type + \putratom{80}{-240}{\@memberb}% % right type + \else%no clipping + \yl@xdiff=10\relax +% \yl@ydiff=70\relax + \yl@ydiff=90\relax + \if\@tmpb B%beta single bond + {% + \thicklines% + \Put@Line(0,0)(3,-5){90}% % single bond at 1 + }% + \else\if\@tmpb A%alpha single bond + \dotorline(0,0)(3,-5){90}/(0,0)(90,-150)% + \else\if\@tmpb U%unspecified single bond + {% + \WaveBonds% + \Put@Line(0,0)(3,-5){90}% % single bond at 1 + }% + \else\if\@tmpb S%beta single bond + \Put@Line(0,0)(3,-5){90}% % single bond at 1 + \else\if\@tmpb D%beta single bond + \Put@Line(10,6)(3,-5){90}% % single bond at 1 + \Put@Line(-10,-6)(3,-5){90}% % single bond at 1 + \else\if\@tmpb T%beta single bond + \Put@Line(15,9)(3,-5){90}% % single bond at 1 + \Put@Line(0,0)(3,-5){90}% % single bond at 1 + \Put@Line(-15,-9)(3,-5){90}% % single bond at 1 + \else\ifx\@tmpb\empty%beta single bond + \Put@Line(0,0)(3,-5){90}% % single bond at 1 + \fi\fi\fi\fi\fi\fi\fi% +% \putratom{80}{-220}{\@memberb}% % right type + \putratom{80}{-240}{\@memberb}% % right type + \fi% +}% end of \setatombondE +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\setatombondA} +% \changes{v1.02}{1998/10/25}{New command: \cs{setatombondA}} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v4.03}{2005/07/20}{Concrete wave bonds for stereochemistry: FU, GU} +% \begin{macrocode} +\def\setatombondA{%% (1,1) + \yl@xdiff=0\relax + \yl@ydiff=0\relax + \if@clipfuse% + \if\@tmpb B%beta single bond + {% + \thicklines% + \Put@Line(40,40)(1,1){100}% % single bond at 1 + }% + \else\if\@tmpb A%alpha single bond + \dotorline(40,40)(1,1){100}/(40,40)(140,140)% + \else\if\@tmpb U%unspecified single bond + {% + \WaveBonds% + \Put@Line(40,40)(1,1){100}% % single bond at 1 + }% + \else\if\@tmpb S%beta single bond + \Put@Line(40,40)(1,1){100}% % single bond at 1 + \else\if\@tmpb D%double bond + \Put@Line(46,36)(1,1){100}% % single bond at 1 + \Put@Line(36,46)(1,1){100}% % single bond at 1 + \else\if\@tmpb T%triple bond + \Put@Line(50,30)(1,1){100}% % single bond at 1 + \Put@Line(40,40)(1,1){100}% % single bond at 1 + \Put@Line(30,50)(1,1){100}% % single bond at 1 + \else\ifx\@tmpb\empty%beta single bond + \Put@Line(40,40)(1,1){100}% % single bond at 1 + \fi\fi\fi\fi\fi\fi\fi% + \putratom{140}{140}{\@memberb}% % right type + \else%no clipping + \if\@tmpb B%beta single bond + {% + \thicklines% + \Put@Line(0,0)(1,1){120}% % single bond at 1 + }% + \else\if\@tmpb A%alpha single bond + \dotorline(0,0)(1,1){120}/(0,0)(120,120)% + \else\if\@tmpb U%unspecified single bond + {% + \WaveBonds% + \Put@Line(0,0)(1,1){120}% % single bond at 1 + }% + \else\if\@tmpb S%beta single bond + \Put@Line(0,0)(1,1){120}% % single bond at 1 + \else\if\@tmpb D%beta single bond + \Put@Line(6,-6)(1,1){120}% % single bond at 1 + \Put@Line(-6,6)(1,1){120}% % single bond at 1 + \else\if\@tmpb T%beta single bond + \Put@Line(10,-10)(1,1){120}% % single bond at 1 + \Put@Line(0,0)(1,1){120}% % single bond at 1 + \Put@Line(-10,10)(1,1){120}% % single bond at 1 + \else\ifx\@tmpb\empty%beta single bond + \Put@Line(0,0)(1,1){120}% % single bond at 1 + \fi\fi\fi\fi\fi\fi\fi% + \putratom{120}{120}{\@memberb}% % right type + \fi% +}% end of \setatombondA +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\setatombondB} +% \changes{v1.02}{1998/10/25}{New command: \cs{setatombondB}} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v4.03}{2005/07/20}{Concrete wave bonds for stereochemistry: FU, GU} +% \begin{macrocode} +\def\setatombondB{%% (1,-1) + \if@clipfuse% + \yl@xdiff=0\relax + \yl@ydiff=60\relax + \if\@tmpb B%beta single bond + {% + \thicklines% + \Put@Line(40,-40)(1,-1){100}% % single bond at 1 + }% + \else\if\@tmpb A%alpha single bond + \dotorline(40,-40)(1,-1){100}/(40,-40)(140,-140)% + \else\if\@tmpb U%unspecified single bond + {% + \WaveBonds% + \Put@Line(40,-40)(1,-1){100}% % single bond at 1 + }% + \else\if\@tmpb S%beta single bond + \Put@Line(40,-40)(1,-1){100}% % single bond at 1 + \else\if\@tmpb D%double bond + \Put@Line(46,-36)(1,-1){100}% % single bond at 1 + \Put@Line(36,-46)(1,-1){100}% % single bond at 1 + \else\if\@tmpb T%triple bond + \Put@Line(50,-30)(1,-1){100}% % single bond at 1 + \Put@Line(40,-40)(1,-1){100}% % single bond at 1 + \Put@Line(30,-50)(1,-1){100}% % single bond at 1 + \else\ifx\@tmpb\empty%beta single bond + \Put@Line(40,-40)(1,-1){100}% % single bond at 1 + \fi\fi\fi\fi\fi\fi\fi% + \putratom{140}{-200}{\@memberb}% % right type + \else%no clipping + \yl@xdiff=0\relax + \yl@ydiff=60\relax + \if\@tmpb B%beta single bond + {% + \thicklines% + \Put@Line(0,0)(1,-1){120}% % single bond at 1 + }% + \else\if\@tmpb A%alpha single bond + \dotorline(0,0)(1,-1){120}/(0,0)(120,-120)% + \else\if\@tmpb U%unspecified single bond + {% + \WaveBonds% + \Put@Line(0,0)(1,-1){120}% % single bond at 1 + }% + \else\if\@tmpb S%beta single bond + \Put@Line(0,0)(1,-1){120}% % single bond at 1 + \else\if\@tmpb D%beta single bond + \Put@Line(6,6)(1,-1){120}% % single bond at 1 + \Put@Line(-6,-6)(1,-1){120}% % single bond at 1 + \else\if\@tmpb T%beta single bond + \Put@Line(10,10)(1,-1){120}% % single bond at 1 + \Put@Line(0,0)(1,-1){120}% % single bond at 1 + \Put@Line(-10,-10)(1,-1){120}% % single bond at 1 + \else\ifx\@tmpb\empty%beta single bond + \Put@Line(0,0)(1,-1){120}% % single bond at 1 + \fi\fi\fi\fi\fi\fi\fi% + \putratom{120}{-180}{\@memberb}% % right type + \fi% +}% end of \setatombondB +% \end{macrocode} +% \end{macro} +% +% \subsection{Left-handed linking unit} +% +% A structure-drawing command can be used to typeset a substituent +% by using a (yl)-argument. Moreover, the macro |\lyl| permits us +% to draw an intermediate linking unit. +% \changes{v1.02}{1998/10/25}{New command: \cs{lyl} etc.} +% \begin{macro}{\lyl} +% \begin{macrocode} +\def\lyl{\@ifnextchar({\@lyl}{\@lyl()}} +\def\@lyl(#1)#2{% +\iniatom\iniflag%initialize +\@reset@ylsw% +\def\centeraaa{}% +\x@ryl=0\y@ryl=0 +\@forsemicol\member:=#1\do{% +\if@ylsw% +\XyMTeXWarning{Duplicated items in the first augument of \string\ryl}% +\else% +\ifx\member\empty\else% +\expandafter\@m@mb@r\member;\relax% +\expandafter\twoch@r\@membera{}% +\settowidth{\dimen0}{\@memberb}% +\x@ryl=\dimen0%%%dimension => counter +\divide\x@ryl\unitlength +\advance\x@ryl by-80 +\y@ryl=0 +\ifcase\@tmpa% +\def\centeraaa{\@memberb}\@ylswtrue +%\advance\x@ryl by0 +\advance\y@ryl by50 +\or%1 +\def\centeraaa{\@memberb}\@ylswtrue +\advance\x@ryl by30 +\advance\y@ryl by50 +\or%2 +\def\centeraaa{\@memberb}\@ylswtrue +\advance\x@ryl by40 +\advance\y@ryl by40 +\or%3 +\def\centeraaa{\@memberb}\@ylswtrue +\advance\x@ryl by50 +\advance\y@ryl by30 +\or%4 +\def\centeraaa{\@memberb}\@ylswtrue +\advance\x@ryl by50 +\advance\y@ryl by0 +\or%5 +\def\centeraaa{\@memberb}\@ylswtrue +\advance\x@ryl by50 +\advance\y@ryl by-30 +\or%6 +\def\centeraaa{\@memberb}\@ylswtrue +\advance\x@ryl by50 +\advance\y@ryl by-50 +\or%7 +\def\centeraaa{\@memberb}\@ylswtrue +\advance\x@ryl by30 +\advance\y@ryl by-50 +\or%8 +\def\centeraaa{\@memberb}\@ylswtrue +%\advance\x@ryl by0 +\advance\y@ryl by-50 +\fi +\fi\fi}% + \yl@shiftii=-\x@ryl + \yl@shifti=-\y@ryl + \advance\yl@shiftii\yl@xdiff + \advance\yl@shifti\yl@ydiff + \begin{sfpicture}(0,0)(-\yl@shiftii,-\yl@shifti)% +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting hetero atoms % +% %%%%%%%%%%%%%%%%%%%%%%%% +\ifx\centeraaa\empty\else% + \@clipfusetrue + \putratom{-40}{-30}{\centeraaa}% % right type +\fi% +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents % +% %%%%%%%%%%%%%%%%%%%%%%%% +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else% +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\let\local@tmpa=\@tmpa%global to local 2002/5/30 by SF +\ifcase\local@tmpa% +{\setbscolor\setatombonda\addbscolor{}{}}%2010/10/01%\setatombonda% 0 (upward) (0,1) +\or{\setbscolor\setatombondD\addbscolor{}{}}%2010/10/01%\or\setatombondD%1 (-3,5) +\or{\setbscolor\setatombondH\addbscolor{}{}}%2010/10/01%\or\setatombondH%2 (-1,1) +\or{\setbscolor\setatombondd\addbscolor{}{}}%2010/10/01%\or\setatombondd%3 (-5,3) +\or{\setbscolor\setatombondh\addbscolor{}{}}%2010/10/01%\or\setatombondh%4 (-1,0) +\or{\setbscolor\setatombondg\addbscolor{}{}}%2010/10/01%\or\setatombondg%5 (-5,-3) +\or{\setbscolor\setatombondC\addbscolor{}{}}%2010/10/01%\or\setatombondC%6 (-1,-1) +\or{\setbscolor\setatombondG\addbscolor{}{}}%2010/10/01%\or\setatombondG%7 (-3,-5) +\or{\setbscolor\setatombondc\addbscolor{}{}}%2010/10/01%\or\setatombondc%8 (0,-1) +\fi%end of ifcase +\fi +}\end{sfpicture}}% %end of \lyl macro +% \end{macrocode} +% \end{macro} +% +% The substituent-setting commands |\setatombondD| etc. are used +% in the macro |\ryl|. +% +% \begin{macro}{\setatombondD} +% \changes{v1.02}{1998/10/25}{New command: \cs{setatombondD}} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v4.03}{2005/07/20}{Concrete wave bonds for stereochemistry: FU, GU} +% \begin{macrocode} +\def\setatombondD{%% (-3,5) + \if@clipfuse% + \if\@tmpb B%beta single bond +% \yl@xdiff=-10\relax + \yl@xdiff=10\relax + \yl@ydiff=-10\relax + {% + \thicklines% + \Put@Line(-30,50)(-3,5){60}% % single bond at 1 + }% + \else\if\@tmpb A%alpha single bond +% \yl@xdiff=-10\relax + \yl@xdiff=10\relax + \yl@ydiff=-10\relax + \dotorline(-30,50)(-3,5){60}/(-30,50)(-90,150)% + \else\if\@tmpb U%unspecified single bond +% \yl@xdiff=-10\relax + \yl@xdiff=10\relax + \yl@ydiff=-10\relax + {% + \WaveBonds% + \Put@Line(-30,50)(-3,5){60}% % single bond at 1 + }% + \else\if\@tmpb S%beta single bond +% \yl@xdiff=-10\relax + \yl@xdiff=10\relax + \yl@ydiff=-10\relax + \Put@Line(-30,50)(-3,5){60}% % single bond at 1 + \else\if\@tmpb D%double bond +% \yl@xdiff=-10\relax + \yl@xdiff=10\relax + \yl@ydiff=-10\relax + \Put@Line(-40,44)(-3,5){60}% % single bond at 1 + \Put@Line(-20,56)(-3,5){60}% % single bond at 1 + \else\if\@tmpb T%triple bond +% \yl@xdiff=-10\relax + \yl@xdiff=10\relax + \yl@ydiff=-10\relax + \Put@Line(-45,41)(-3,5){60}% % single bond at 1 + \Put@Line(-30,50)(-3,5){60}% % single bond at 1 + \Put@Line(-15,59)(-3,5){60}% % single bond at 1 + \else\ifx\@tmpb\empty%beta single bond +% \yl@xdiff=-10\relax + \yl@xdiff=10\relax + \yl@ydiff=-10\relax + \Put@Line(-30,50)(-3,5){60}% % single bond at 1 + \fi\fi\fi\fi\fi\fi\fi% +% \putlatom{-80}{160}{\@memberb}% % left type + \putlatom{-100}{160}{\@memberb}% % left type + \else%no clipping + \if\@tmpb B%beta single bond +% \yl@xdiff=-10\relax + \yl@xdiff=10\relax + \yl@ydiff=-10\relax + {% + \thicklines% + \Put@Line(0,0)(-3,5){90}% % single bond at 1 + }% + \else\if\@tmpb A%alpha single bond +% \yl@xdiff=-10\relax + \yl@xdiff=10\relax + \yl@ydiff=-10\relax + \dotorline(0,0)(-3,5){90}/(0,0)(-90,150)% + \else\if\@tmpb U%unspecified single bond +% \yl@xdiff=-10\relax + \yl@xdiff=10\relax + \yl@ydiff=-10\relax + {% + \WaveBonds% + \Put@Line(0,0)(-3,5){90}% % single bond at 1 + }% + \else\if\@tmpb S%beta single bond +% \yl@xdiff=-10\relax + \yl@xdiff=10\relax + \yl@ydiff=-10\relax + \Put@Line(0,0)(-3,5){90}% % single bond at 1 + \else\if\@tmpb D%beta single bond +% \yl@xdiff=-10\relax + \yl@xdiff=10\relax + \yl@ydiff=-10\relax + \Put@Line(-10,-6)(-3,5){90}% % single bond at 1 + \Put@Line(10,6)(-3,5){90}% % single bond at 1 + \else\if\@tmpb T%beta single bond +% \yl@xdiff=-10\relax + \yl@xdiff=10\relax + \yl@ydiff=-10\relax + \Put@Line(-15,-9)(-3,5){90}% % single bond at 1 + \Put@Line(0,0)(-3,5){90}% % single bond at 1 + \Put@Line(15,9)(-3,5){90}% % single bond at 1 + \else\ifx\@tmpb\empty%beta single bond +% \yl@xdiff=-10\relax + \yl@xdiff=10\relax + \yl@ydiff=-10\relax + \Put@Line(0,0)(-3,5){90}% % single bond at 1 + \fi\fi\fi\fi\fi\fi\fi% +% \putlatom{-80}{160}{\@memberb}% % left type + \putlatom{-100}{160}{\@memberb}% % left type + \fi% +}% end of \setatombondD +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\setatombondG} +% \changes{v1.02}{1998/10/25}{New command: \cs{setatombondG}} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v4.03}{2005/07/20}{Concrete wave bonds for stereochemistry: FU, GU} +% \begin{macrocode} +\def\setatombondG{%% (-3,-5) + \if@clipfuse% + \yl@xdiff=-10\relax +% \yl@ydiff=70\relax + \yl@ydiff=90\relax + \if\@tmpb B%beta single bond + {% + \thicklines% + \Put@Line(-30,-50)(-3,-5){60}% % single bond at 1 + }% + \else\if\@tmpb A%alpha single bond + \dotorline(-30,-50)(-3,-5){60}/(-30,-50)(-90,-150)% +% \dotorline(-33,-55)(-3,-5){60}/(-30,-50)(-90,-150)% + \else\if\@tmpb U%unspecified single bond + {% + \WaveBonds% + \Put@Line(-30,-50)(-3,-5){60}% % single bond at 1 + }% + \else\if\@tmpb S%beta single bond + \Put@Line(-30,-50)(-3,-5){60}% % single bond at 1 + \else\if\@tmpb D%double bond + \Put@Line(-40,-44)(-3,-5){60}% % single bond at 1 + \Put@Line(-20,-56)(-3,-5){60}% % single bond at 1 + \else\if\@tmpb T%triple bond + \Put@Line(-45,-41)(-3,-5){60}% % single bond at 1 + \Put@Line(-30,-50)(-3,-5){60}% % single bond at 1 + \Put@Line(-15,-59)(-3,-5){60}% % single bond at 1 + \else\ifx\@tmpb\empty%beta single bond + \Put@Line(-30,-50)(-3,-5){60}% % single bond at 1 + \fi\fi\fi\fi\fi\fi\fi% +% \putlatom{-80}{-220}{\@memberb}% % left type + \putlatom{-80}{-240}{\@memberb}% % left type + \else%no clipping + \yl@xdiff=-10\relax +% \yl@ydiff=70\relax + \yl@ydiff=90\relax + \if\@tmpb B%beta single bond + {% + \thicklines% + \Put@Line(0,0)(-3,-5){90}% % single bond at 1 + }% + \else\if\@tmpb A%alpha single bond + \dotorline(0,0)(-3,-5){90}/(0,0)(-90,-150)% + \else\if\@tmpb U%unspecified single bond + {% + \WaveBonds% + \Put@Line(0,0)(-3,-5){90}% % single bond at 1 + }% + \else\if\@tmpb S%beta single bond + \Put@Line(0,0)(-3,-5){90}% % single bond at 1 + \else\if\@tmpb D%beta single bond + \Put@Line(-10,6)(-3,-5){90}% % single bond at 1 + \Put@Line(10,-6)(-3,-5){90}% % single bond at 1 + \else\if\@tmpb T%beta single bond + \Put@Line(-15,9)(-3,-5){90}% % single bond at 1 + \Put@Line(0,0)(-3,-5){90}% % single bond at 1 + \Put@Line(15,-9)(-3,-5){90}% % single bond at 1 + \else\ifx\@tmpb\empty%beta single bond + \Put@Line(0,0)(-3,-5){90}% % single bond at 1 + \fi\fi\fi\fi\fi\fi\fi% +% \putlatom{-80}{-220}{\@memberb}% % left type + \putlatom{-80}{-240}{\@memberb}% % left type + \fi% +}% end of \setatombondG +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\setatombondH} +% \changes{v1.02}{1998/10/25}{New command: \cs{setatombondH}} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v4.03}{2005/07/20}{Concrete wave bonds for stereochemistry: FU, GU} +% \begin{macrocode} +\def\setatombondH{%% (-1,1) + \yl@xdiff=0\relax + \yl@ydiff=0\relax + \if@clipfuse% + \if\@tmpb B%beta single bond + {% + \thicklines% + \Put@Line(-40,40)(-1,1){100}% % single bond at 1 + }% + \else\if\@tmpb A%alpha single bond + \dotorline(-40,40)(-1,1){100}/(-40,40)(-140,140)% + \else\if\@tmpb U%unspecified single bond + {% + \WaveBonds% + \Put@Line(-40,40)(-1,1){100}% % single bond at 1 + }% + \else\if\@tmpb S%beta single bond + \Put@Line(-40,40)(-1,1){100}% % single bond at 1 + \else\if\@tmpb D%double bond + \Put@Line(-46,36)(-1,1){100}% % single bond at 1 + \Put@Line(-36,46)(-1,1){100}% % single bond at 1 + \else\if\@tmpb T%triple bond + \Put@Line(-50,30)(-1,1){100}% % single bond at 1 + \Put@Line(-40,40)(-1,1){100}% % single bond at 1 + \Put@Line(-30,50)(-1,1){100}% % single bond at 1 + \else\ifx\@tmpb\empty%beta single bond + \Put@Line(-40,40)(-1,1){100}% % single bond at 1 + \fi\fi\fi\fi\fi\fi\fi% + \putlatom{-140}{140}{\@memberb}% % left type + \else%no clipping + \if\@tmpb B%beta single bond + {% + \thicklines% + \Put@Line(0,0)(-1,1){120}% % single bond at 1 + }% + \else\if\@tmpb A%alpha single bond + \dotorline(0,0)(-1,1){120}/(0,0)(-120,120)% + \else\if\@tmpb U%unspecified single bond + {% + \WaveBonds% + \Put@Line(0,0)(-1,1){120}% % single bond at 1 + }% + \else\if\@tmpb S%beta single bond + \Put@Line(0,0)(-1,1){120}% % single bond at 1 + \else\if\@tmpb D%beta single bond + \Put@Line(-6,-6)(-1,1){120}% % single bond at 1 + \Put@Line(6,6)(-1,1){120}% % single bond at 1 + \else\if\@tmpb T%beta single bond + \Put@Line(-10,-10)(-1,1){120}% % single bond at 1 + \Put@Line(0,0)(-1,1){120}% % single bond at 1 + \Put@Line(10,10)(-1,1){120}% % single bond at 1 + \else\ifx\@tmpb\empty%beta single bond + \Put@Line(0,0)(-1,1){120}% % single bond at 1 + \fi\fi\fi\fi\fi\fi\fi% + \putlatom{-120}{120}{\@memberb}% % left type + \fi% +}% end of \setatombondH +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\setatombondC} +% \changes{v1.02}{1998/10/25}{New command: \cs{setatombondC}} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v4.03}{2005/07/20}{Concrete wave bonds for stereochemistry: FU, GU} +% \begin{macrocode} +\def\setatombondC{%% (-1,-1) + \if@clipfuse% + \yl@xdiff=0\relax + \yl@ydiff=60\relax + \if\@tmpb B%beta single bond + {% + \thicklines% + \Put@Line(-40,-40)(-1,-1){100}% % single bond at 1 + }% + \else\if\@tmpb A%alpha single bond + \dotorline(-40,-40)(-1,-1){100}/(-40,-40)(-140,-140)% + \else\if\@tmpb U%unspecified single bond + {% + \WaveBonds% + \Put@Line(-40,-40)(-1,-1){100}% % single bond at 1 + }% + \else\if\@tmpb S%beta single bond + \Put@Line(-40,-40)(-1,-1){100}% % single bond at 1 + \else\if\@tmpb D%double bond + \Put@Line(-46,-36)(-1,-1){100}% % single bond at 1 + \Put@Line(-36,-46)(-1,-1){100}% % single bond at 1 + \else\if\@tmpb T%triple bond + \Put@Line(-50,-30)(-1,-1){100}% % single bond at 1 + \Put@Line(-40,-40)(-1,-1){100}% % single bond at 1 + \Put@Line(-30,-50)(-1,-1){100}% % single bond at 1 + \else\ifx\@tmpb\empty%beta single bond + \Put@Line(-40,-40)(-1,-1){100}% % single bond at 1 + \fi\fi\fi\fi\fi\fi\fi% + \putlatom{-140}{-200}{\@memberb}% % left type + \else%no clipping + \yl@xdiff=0\relax + \yl@ydiff=60\relax + \if\@tmpb B%beta single bond + {% + \thicklines% + \Put@Line(0,0)(-1,-1){120}% % single bond at 1 + }% + \else\if\@tmpb A%alpha single bond + \dotorline(0,0)(-1,-1){120}/(0,0)(-120,-120)% + \else\if\@tmpb U%unspecified single bond + {% + \WaveBonds% + \Put@Line(0,0)(-1,-1){120}% % single bond at 1 + }% + \else\if\@tmpb S%beta single bond + \Put@Line(0,0)(-1,-1){120}% % single bond at 1 + \else\if\@tmpb D%beta single bond + \Put@Line(-6,6)(-1,-1){120}% % single bond at 1 + \Put@Line(6,-6)(-1,-1){120}% % single bond at 1 + \else\if\@tmpb T%beta single bond + \Put@Line(-10,10)(-1,-1){120}% % single bond at 1 + \Put@Line(0,0)(-1,-1){120}% % single bond at 1 + \Put@Line(10,-10)(-1,-1){120}% % single bond at 1 + \else\ifx\@tmpb\empty%beta single bond + \Put@Line(0,0)(-1,-1){120}% % single bond at 1 + \fi\fi\fi\fi\fi\fi\fi% + \putlatom{-120}{-180}{\@memberb}% % left type + \fi% +}% end of \setatombondC +% \end{macrocode} +% \end{macro} +% +% \section{Minor Linking Units} +% +% \begin{macro}{\ayl} +% \begin{macrocode} +\def\ayl{\@ifnextchar({\@ayl@}{\@ayl@(10,40)}} +\def\@ayl@(#1,#2)#3{\begingroup\yl@xdiff=0 \yl@ydiff=0% +\kern#1\unitlength\raise#2\unitlength\hbox to0pt{#3\hss}% +\endgroup} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\upnobond} +% \begin{macro}{\downnobond} +% \begin{macrocode} +\def\upnobond#1#2{% +\hbox{\hbox to0.72em{\hss#1\hss}\kern-0.72em\raise2.2ex\hbox{#2}}} +\def\downnobond#1#2{% +\hbox{\hbox to0.72em{\hss#1\hss}\kern-0.72em\lower2.2ex\hbox{#2}}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\BiFunc} +% \changes{v5.01}{2013/03/14}{\cs{BiFunc} added to biphenyl-type derivative} +% The format (slope){length}{moietyA}{moietyB} supports the function for +% linking moiety A and moiety B through a bond with a given slope. +% \begin{macrocode} +\def\BiFunc(#1,#2)#3#4#5{% +\SlopetoXY(0,0)(#1,#2){#3}% +\begin{picture}(\@tempcntXa,\@tempcntYa)(0,0)% +\Put@Line(0,0)(#1,#2){#3}% +\put(0,0){#4}% +\put(\@tempcntXa,\@tempcntYa){#5}% +\end{picture}} +% \end{macrocode} +% \end{macro} +% +% \section{Spriro-Ring Commands} +% \subsection{Basic Commands for Six-Membered Rings} +% +% For treating spiro-ring fusion, the following basic commands +% (|\test@vertix| and |\test@vertix@sixv|) are added at the +% time of releasing Version 2.00. These commands are generally +% used for detecting hetero atoms at respective vertices of a +% heterocyclic ring. +% +% The command |\test@vertix| is used in |\test@vertix@sixv|. +% which is designed to test the existence of a hetero atom +% (or an equivalent) at each vertix of a six-membered ring. +% +% \begin{macro}{\test@vertix} +% \begin{macro}{\test@vertix@sixv} +% \changes{v2.00}{1998/11/15}{New command: \cs{test@vertix} and +% \cs{test@vertix@sixv}} +% \changes{v4.03b}{2006/9/6}{\cs{ggg} is changed into \cs{gggA} for \cs{test@vertix} and +% \cs{test@vertix@sixv}} +% \begin{macrocode} +\def\test@vertix#1{% + \def\tempG{#1}\relax%%%added 2006/9/6 + \if\tempG g\relax + \expandafter\def\csname #1#1#1A\endcsname{@}% + \if\@tmpb h\relax + \expandafter\def\csname #1#1#1A\endcsname{@}% + \else\if\@tmpb s\relax + \expandafter\def\csname #1#1#1A\endcsname{}% + \fi\fi + \else + \expandafter\def\csname #1#1#1\endcsname{@}% + \if\@tmpb h\relax + \expandafter\def\csname #1#1#1\endcsname{@}% + \else\if\@tmpb s\relax + \expandafter\def\csname #1#1#1\endcsname{}% + \fi\fi + \fi +} +% \end{macrocode} +% +% The command |\test@vertix@sixv| is designed to test +% the existence of a hetero atom (or an equivalent) +% at each vertix of a six-membered ring. +% +% \begin{macrocode} +\def\test@vertix@sixv#1#2#3#4#5#6#7{% +\@forsemicol\member:=#1\do{% +\ifx\member\empty \relax\else% +\expandafter\@m@mb@r\member;\relax% +\expandafter\twoCH@R\@membera//% +\ifcase\@tmpa% +% \changes{v2.00}{1996/11/14}{@ in place of a net value} + \or \test@vertix{#2}% + \or \test@vertix{#3}% + \or \test@vertix{#4}% + \or + \if\@tmpb a\relax% + \def\iii{@}% + \else + \test@vertix{#5}% + \fi + \or \test@vertix{#6}% + \or \test@vertix{#7}% +\fi\fi}}% end of \test@vertix@sixv +%\def\test@vertix@sixv#1#2#3#4#5#6#7{% +%\@forsemicol\member:=#1\do{% +%\expandafter\@m@mb@r\member;\relax% +%\expandafter\twoch@r\@membera{}% +%\ifcase\@tmpa% +%% \changes{v2.00}{1996/11/14}{@ in place of a net value} +% \or \test@vertix{#2}% +% \or \test@vertix{#3}% +% \or \test@vertix{#4}% +% \or \test@vertix{#5}% +% \or \test@vertix{#6}% +% \or \test@vertix{#7}% +%\fi}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The command |\set@hetatom@sixv| is to set a spiro group +% (stored as |\@memberb|) +% at a vertix designated by |\@tmpaa| (or originally by |\@tmpa|). +% The atom modifier `s' designates that the spiro group contains +% a carbon atom (a vertix) at a spiro position, while `h' +% represents the presence of a hetero atom at a spiro position. +% The absence of such atom modifiers shows the substitution +% of a usual hetero atom. The command |\set@hetatom@sixv| is +% used in such commands as |\sixheterov| and |\sixheterovi| +% for treating thier ATOMLISTs, +% e.g. |1==N;1s==\sixheterov{}{1==(yl)}|. +% +% \begin{macro}{\set@hetatom@sixv} +% \changes{v2.00}{1998/11/15}{New command: \cs{set@hetatom@sixv}} +% \begin{macrocode} +\def\set@hetatom@sixv#1#2#3#4#5{% +\@forsemicol\member:=#1\do{% +\ifx\member\empty \relax\else% +\expandafter\@m@mb@r\member;\relax% +\expandafter\twoch@r\@membera{}\relax% +\ifnum#5 < 0\relax% +\@tmpaa=-\@tmpa\relax \advance\@tmpaa by#2\relax% +\else\@tmpaa=\@tmpa\relax \advance\@tmpaa by#2\relax \fi +\ifnum\@tmpaa >#3\relax% +\ifnum\@tmpaa <#4\relax% +\ifcase\@tmpaa \relax% +\or%position 1 + \if\@tmpb h\relax + \@acliptrue% + \putratom{0}{356}{\@memberb}% % right type + \else\if\@tmpb s\relax + \@aclipfalse% + \putratom{0}{406}{\@memberb}% % right type + \else\if\@tmpb a\relax%omit fused position + \else\relax + \@acliptrue% + \putratom{-31}{356}{\@memberb}% % right type + \fi\fi\fi +\or%position 2 + \if\@tmpb h\relax + \@bcliptrue% + \putratom{135}{280}{\@memberb}% % right type + \else\if\@tmpb s\relax + \@bclipfalse% + \putratom{175}{303}{\@memberb}% % right type + \else\if\@tmpb a\relax%omit fused position + \else\relax + \@bcliptrue% + \putratom{135}{280}{\@memberb}% % right type + \fi\fi\fi +\or%position 3 + \if\@tmpb h\relax + \@ccliptrue% + \putratom{135}{95}{\@memberb}% % right type + \else\if\@tmpb s\relax + \@cclipfalse% + \putratom{175}{103}{\@memberb}% % right type + \else\if\@tmpb a\relax%omit fused position + \else\relax + \@ccliptrue% + \putratom{135}{65}{\@memberb}% % right type + \fi\fi\fi +\or%position 4 + \if\@tmpb h\relax + \@cliptrue% + \putratom{0}{50}{\@memberb}% % right type + \else\if\@tmpb s\relax + \@clipfalse% + \putratom{0}{0}{\@memberb}% % right type + \else\if\@tmpb a\relax%omit fused position + \else\relax + \@cliptrue% + \putratom{-31}{-10}{\@memberb}% % right type + \fi\fi\fi +\or%position 5 + \if\@tmpb h\relax + \@ecliptrue% + \putlatom{-135}{95}{\@memberb}% % right type + \else\if\@tmpb s\relax + \@eclipfalse% + \putlatom{-175}{103}{\@memberb}% % right type + \else\if\@tmpb a\relax%omit fused position + \else\relax + \@ecliptrue% + \putlatom{-135}{65}{\@memberb}% % left type + \fi\fi\fi +\or%position 6 + \if\@tmpb h\relax + \@fcliptrue% + \putlatom{-135}{280}{\@memberb}% % right type + \else\if\@tmpb s\relax + \@fclipfalse% + \putlatom{-175}{303}{\@memberb}% % right type + \else\if\@tmpb a\relax%omit fused position + \else\relax + \@fcliptrue% + \putlatom{-135}{280}{\@memberb}% % left type + \fi\fi\fi +\fi% end of ifcase +\fi\fi\fi}}% end of the macro \set@hetatom@sixv +% \end{macrocode} +% \end{macro} +% +% The command |\set@hetatom@sixh| is to set a spiro group +% (stored as |\@memberb|) +% at a vertix designated by |\@tmpaa| (or originally by |\@tmpa|). +% The atom modifier `s' designates that the spiro group contains +% a carbon atom (a vertix) at a spiro position, while `h' +% represents the presence of a hetero atom at a spiro position. +% The absence of such atom modifiers shows the substitution +% of a usual hetero atom. The command |\set@hetatom@sixh| is +% used in such commands as |\sixheteroh| and |\sixheterohi| +% for treating thier ATOMLISTs, +% e.g. |1==N;1s==\sixheteroh{}{1==(yl)}|. +% +% \begin{macro}{\set@hetatom@sixh} +% \changes{v2.00}{1998/11/23}{New command: \cs{set@hetatom@sixh}} +% \begin{macrocode} +\def\set@hetatom@sixh#1#2#3#4#5{% +\@forsemicol\member:=#1\do{% +\ifx\member\empty\else% +\expandafter\@m@mb@r\member;\relax% +%\expandafter\twoch@r\@membera{}% +\expandafter\twoCH@R\@membera//% +\ifnum#5 < 0\relax% +\@tmpaa=-\@tmpa\relax \advance\@tmpaa by#2\relax% +\else\@tmpaa=\@tmpa\relax \advance\@tmpaa by#2\relax \fi +\ifnum\@tmpaa >#3\relax% +\ifnum\@tmpaa <#4\relax% +\ifcase\@tmpaa% +\or%position 1 + \if\@tmpb h\relax + \@acliptrue% + \putlatom{60}{0}{\@memberb}% % left type + \else\if\@tmpb s\relax + \@aclipfalse% + \putlatom{0}{0}{\@memberb}% % left type + \else\if\@tmpb a\relax%omit fused position + \else + \@acliptrue% + \putlatom{60}{-36}{\@memberb}% % left type + \fi\fi\fi +\or%position 2 + \if\@tmpb h\relax + \@bcliptrue% + \putlatom{135}{141}{\@memberb}% % left type + \else\if\@tmpb s\relax + \@bclipfalse% + \putlatom{103}{171}{\@memberb}% % left type + \else\if\@tmpb a\relax%omit fused position + \else + \@bcliptrue% + \putlatom{135}{141}{\@memberb}% % left type + \fi\fi\fi +\or%position 3 + \if\@tmpb h\relax + \@ccliptrue% + \putratom{273}{141}{\@memberb}% % right type + \else\if\@tmpb s\relax + \@cclipfalse% + \putratom{303}{171}{\@memberb}% % right type + \else\if\@tmpb a\relax%omit fused position + \else + \@ccliptrue% + \putratom{273}{141}{\@memberb}% % right type + \fi\fi\fi +\or%position 4 + \if\@tmpb h\relax + \@cliptrue% + \putratom{346}{0}{\@memberb}% % right type + \else\if\@tmpb s\relax + \@clipfalse% + \putratom{406}{0}{\@memberb}% % right type + \else\if\@tmpb a\relax%omit fused position + \else + \@cliptrue% + \putratom{346}{-36}{\@memberb}% % right type + \fi\fi\fi +\or%position 5 + \if\@tmpb h\relax + \@ecliptrue% + \putratom{283}{-131}{\@memberb}% % right type + \else\if\@tmpb s\relax + \@eclipfalse% + \putratom{303}{-171}{\@memberb}% % right type + \else\if\@tmpb a\relax%omit fused position + \else + \@ecliptrue% + \putratom{273}{-211}{\@memberb}% % right type + \fi\fi\fi +\or%position 6 + \if\@tmpb h\relax + \@fcliptrue% + \putlatom{125}{-131}{\@memberb}% % left type + \else\if\@tmpb s\relax + \@fclipfalse% + \putlatom{103}{-171}{\@memberb}% % left type + \else\if\@tmpb a\relax%omit fused position + \else + \@fcliptrue% + \putlatom{135}{-211}{\@memberb}% % left type + \fi\fi\fi +\fi% end of ifcase +\fi\fi\fi}}% end of the macro \set@hetatom@sixh +% \end{macrocode} +% \end{macro} +% +% \subsection{Basic Commands for Six-Six Rings} +% +% The command |\test@vertix@decav| is designed to test +% the existence of a hetero atom (or an equivalent) +% at each vertix of a six-six fused ring. +% +% \begin{macro}{\test@vertix@decav} +% \begin{macrocode} +\def\test@vertix@decav#1#2#3#4#5#6#7{% +\@forsemicol\member:=#1\do{% +\ifx\member\empty\relax\else% +\expandafter\@m@mb@r\member;\relax% +\expandafter\twoch@r\@membera{}% +\ifcase\@tmpa \relax% + \or\or\or\or\or\or + \or \test@vertix{#2}% + \or + \if\@tmpb a\relax% + \def\jjj{@}% + \else + \test@vertix{#3}% + \fi + \or \test@vertix{#4}% + \or \test@vertix{#5}% +% \or \test@vertix{#6}% +% \or \test@vertix{#7}% +\fi\fi}} +% \end{macrocode} +% \end{macro} +% +% The command |\set@vrtx@fuse| is to set an atom (stored as +% |\@memberb|) at one (stored as |\@tmpa|) of the fused vertices +% of a six-six ring. +% These vertices are incapable of accomodating a spiro group. +% On the other hand, the other positions can take spiro groups +% (stored as |\@memberb|), which are treated by means of +% the command |\set@hetatom@sixv|. +% The command |\set@vrtx@fuse| is used in such commands +% as |\decaheterov| for treating thier ATOMLISTs, +% +% \begin{macro}{\set@vrtx@fuse} +% \changes{v2.00}{1998/11/15}{New command: \cs{set@vrtx@fuse}} +% \changes{v2.01}{1998/11/15}{The prefix \cs{\global} are omitted.} +% \begin{macrocode} +\def\set@vrtx@fuse#1{% +\@forsemicol\member:=#1\do{% +\ifx\member\empty\else% +\expandafter\@m@mb@r\member;\relax% +\expandafter\twoch@r\@membera{}% +\ifcase\@tmpa% + \or + \or + \or + \or%%%%4 + \if\@tmpb a\relax% +% \global\@icliptrue% + \@icliptrue%2001/06/20 by S. Fujita + \putlatom{207}{65}{\@memberb}% % left type + \else\relax + \fi + \or%5 + \or%6 + \or%7 + \or% + \if\@tmpb a\relax% +% \global\@jcliptrue% + \@jcliptrue%2001/06/20 by S. Fujita + \putlatom{207}{280}{\@memberb}% % left type + \else\relax + \fi +\or%9 (= 4a) +% \global\@icliptrue% + \@icliptrue%2001/06/20 by S. Fujita + \putlatom{207}{65}{\@memberb}% % left type +\or%10 (= 8a) +% \global\@jcliptrue% + \@jcliptrue%2001/06/20 by S. Fujita + \putlatom{207}{280}{\@memberb}% % left type +\fi\fi}% +}% end of the macro \set@vrtx@fuse +% \end{macrocode} +% \end{macro} +% +% The command |\set@vrtx@fuseh| is to set an atom (stored as +% |\@memberb|) at one (stored as |\@tmpa|) of the fused vertices +% of a six-six ring. +% These vertices are incapable of accomodating a spiro group. +% On the other hand, the other positions can take spiro groups +% (stored as |\@memberb|), which are treated by means of +% the command |\set@hetatom@sixh|. +% The command |\set@vrtx@fuseh| is used in such commands +% as |\decaheteroh| for treating thier ATOMLISTs, +% +% \begin{macro}{\set@vrtx@fuseh} +% \changes{v2.00}{1998/11/15}{New command: \cs{set@vrtx@fuseh}} +% \changes{v2.01}{1998/11/15}{The prefix \cs{\global} are omitted.} +% \begin{macrocode} +\def\set@vrtx@fuseh#1{% +\@forsemicol\member:=#1\do{% +\ifx\member\empty\else% +\expandafter\@m@mb@r\member;\relax% +\expandafter\twoCH@R\@membera//% +\ifcase\@tmpa% + \or + \or + \or + \or%%%%4 + \if\@tmpb a\relax% +% \global\@icliptrue% + \@icliptrue%%2001/06/20 by S. Fujita + \putratom{273}{-211}{\@memberb}% % right type + \else\relax + \fi + \or%5 + \or%6 + \or%7 + \or% + \if\@tmpb a\relax% +% \global\@jcliptrue% + \@jcliptrue%2001/06/20 by S. Fujita% + \putlatom{135}{-211}{\@memberb}% % left type + \else\relax + \fi +\or%9 (= 4a) + \ifx\@tmpb\empty\relax +% \global\@icliptrue% + \@icliptrue%%2001/06/20 by S. Fujita + \putratom{273}{-211}{\@memberb}% % right type + \else + \XyMTeXWarning{Forbidden spiro ring for the 4a position}% + \fi +\or%10 (= 8a) + \ifx\@tmpb\empty\relax +% \global\@jcliptrue% + \@jcliptrue%%2001/06/20 by S. Fujita + \putlatom{135}{-211}{\@memberb}% % left type + \else + \XyMTeXWarning{Forbidden spiro ring for the 8a position}% + \fi +\fi\fi}% +}% end of the macro \set@vrtx@fuseh +% \end{macrocode} +% \end{macro} +% +% \section{Ring-fusion Commands for Six-Membered Rings} +% \subsection{Normal Vertical Type} +% +% The macro |\set@fusionadd@sixv| is an inner command contained +% in the definition of |\sixheterov| etc., where +% the macro is used for setting an additive +% or a fused ring at each bond (designated by |\@@tmpa|). The +% fused ring is typeset by the inner command |\set@fusion@sixv|. +% +% \begin{macro}{\set@fusionadd@sixv} +% \changes{v2.00}{1998/11/15}{New command: \cs{set@fusionadd@sixv}} +% \begin{macrocode} +\def\set@fusionadd@sixv{% + \if\@@tmpa 1\relax% + \putratom{-38}{282}{\@@tmpb}% % right type + \else\if\@@tmpa 2\relax% + \putratom{60}{253}{\@@tmpb}% % right type + \else\if\@@tmpa 3\relax% + \putratom{60}{120}{\@@tmpb}% % right type + \else\if\@@tmpa 4\relax% + \putratom{-38}{88}{\@@tmpb}% % right type + \else\if\@@tmpa 6\relax% + \putratom{-90}{253}{\@@tmpb}% % right type + \else\if\@@tmpa 5\relax% + \putratom{-90}{120}{\@@tmpb}% % right type + \else +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% + \set@fusion@sixv + \fi\fi\fi\fi\fi\fi% +}% +% \end{macrocode} +% \end{macro} +% +% The inner command |\set@fusion@sixv| is used for typesetting +% a fused ring at each bond represented by |\@@tmpa|. Warnings +% concerning mismatched ring-fusions are based on the command +% |\FuseWarning|. +% +% \begin{macro}{\set@fusion@sixv} +% \changes{v2.00}{1998/11/15}{New command: \cs{set@fusion@sixv}} +% \begin{macrocode} +\def\set@fusion@sixv{% +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% +\if\@@tmpa d\relax% + \putlratom{0}{0}{\@@tmpb}% % bond fused + \FuseWarning{171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{d, h, or other}% + \else\if\@@tmpa D\relax% + \putlratom{-171}{103}{\@@tmpb}% % bond fused + \FuseWarning{-171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{D, H, or other}% + \else\if\@@tmpa e\relax% + \putlratom{-171}{103}{\@@tmpb}% % bond fused + \FuseWarning{0}{-200}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{e, k, or other}% + \else\if\@@tmpa E\relax% + \putlratom{-171}{303}{\@@tmpb}% % bond fused + \FuseWarning{0}{200}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{E, K, or other}% + \else\if\@@tmpa f\relax% + \putlratom{-171}{303}{\@@tmpb}% % bond fused + \FuseWarning{-171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{f, j, or other}% + \else\if\@@tmpa F\relax% + \putlratom{0}{406}{\@@tmpb}% % bond fused + \FuseWarning{171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{F, J, or other}% + \else\if\@@tmpa a\relax% + \putlratom{0}{406}{\@@tmpb}% % bond fused + \FuseWarning{-171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a, i, or other}% + \else\if\@@tmpa A\relax% + \putlratom{171}{303}{\@@tmpb}% % bond fused + \FuseWarning{171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A, I, or other}% + \else\if\@@tmpa b\relax% + \putlratom{171}{303}{\@@tmpb}% % bond fused + \FuseWarning{0}{200}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b, k, or other}% + \else\if\@@tmpa B\relax% + \putlratom{171}{103}{\@@tmpb}% % bond fused + \FuseWarning{0}{-200}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B, K, or other}% + \else\if\@@tmpa c\relax% + \putlratom{171}{103}{\@@tmpb}% % bond fused + \FuseWarning{171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c, e, or other}% + \else\if\@@tmpa C\relax% + \putlratom{0}{0}{\@@tmpb}% % bond fused + \FuseWarning{-171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C, E, or other}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +}% end of the macro \set@fusion@sixv +% \end{macrocode} +% \end{macro} +% +% \subsection{Inverse Vertical Type} +% +% The macro |\set@fusionadd@sixvi| is an inner command contained +% in the definition of |\sixheterovi| etc., where +% the macro is used for setting an additive +% or a fused ring at each bond (designated by |\@@tmpa|). The +% fused ring is typeset by the inner command |\set@fusion@sixvi|. +% +% \begin{macro}{\set@fusionadd@sixvi} +% \changes{v2.00}{1998/11/15}{New command: \cs{set@fusionadd@sixvi}} +% \begin{macrocode} +\def\set@fusionadd@sixvi{% + \if\@@tmpa 4\relax% + \putratom{-38}{282}{\@@tmpb}% % right type + \else\if\@@tmpa 3\relax% + \putratom{60}{253}{\@@tmpb}% % right type + \else\if\@@tmpa 2\relax% + \putratom{60}{120}{\@@tmpb}% % right type + \else\if\@@tmpa 1\relax% + \putratom{-38}{88}{\@@tmpb}% % right type + \else\if\@@tmpa 5\relax% + \putratom{-90}{253}{\@@tmpb}% % right type + \else\if\@@tmpa 6\relax% + \putratom{-90}{120}{\@@tmpb}% % right type + \else +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% + \set@fusion@sixvi + \fi\fi\fi\fi\fi\fi% +}% end of the macro \set@fusionadd@sixvi +% \end{macrocode} +% \end{macro} +% +% The inner command |\set@fusion@sixvi| is used for typesetting +% a fused ring at each bond represented by |\@@tmpa|. Warnings +% concerning mismatched ring-fusions are based on the command +% |\FuseWarning|. +% +% \begin{macro}{\set@fusion@sixvi} +% \changes{v2.00}{1998/11/15}{New command: \cs{set@fusion@sixvi}} +% \begin{macrocode} +\def\set@fusion@sixvi{% +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% + \if\@@tmpa a\relax% + \putlratom{0}{0}{\@@tmpb}% % right type + \FuseWarning{-171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a or other}% + \else\if\@@tmpa A\relax% + \putlratom{171}{103}{\@@tmpb}% % right type + \FuseWarning{171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A or other}% + \else\if\@@tmpa b\relax% + \putlratom{171}{103}{\@@tmpb}% % right type + \FuseWarning{0}{-200}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b or other}% + \else\if\@@tmpa B\relax% + \putlratom{171}{303}{\@@tmpb}% % right type + \FuseWarning{0}{200}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B or other}% + \else\if\@@tmpa c\relax% + \putlratom{171}{303}{\@@tmpb}% % right type + \FuseWarning{171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c or other}% + \else\if\@@tmpa C\relax% + \putlratom{0}{406}{\@@tmpb}% % right type + \FuseWarning{-171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C or other}% + \else\if\@@tmpa d\relax% + \putlratom{0}{406}{\@@tmpb}% % right type + \FuseWarning{171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{d or other}% + \else\if\@@tmpa D\relax% + \putlratom{-171}{303}{\@@tmpb}% % right type + \FuseWarning{-171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{D or other}% + \else\if\@@tmpa e\relax% + \putlratom{-171}{303}{\@@tmpb}% % right type + \FuseWarning{0}{200}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{e or other}% + \else\if\@@tmpa E\relax% + \putlratom{-171}{103}{\@@tmpb}% % right type + \FuseWarning{0}{-200}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{E or other}% + \else\if\@@tmpa f\relax% + \putlratom{-171}{103}{\@@tmpb}% % right type + \FuseWarning{171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{f or other}% + \else\if\@@tmpa F\relax% + \putlratom{0}{0}{\@@tmpb}% % right type + \FuseWarning{-171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{F or other}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +}% end of the marcro \set@fusion@sixvi +% \end{macrocode} +% \end{macro} +% +% \subsection{Normal Horizontal Type} +% +% The macro |\set@fusionadd@sixh| is an inner command contained +% in the definition of |\sixheteroh| etc., where +% the macro is used for setting an additive +% or a fused ring at each bond (designated by |\@@tmpa|). The +% fused ring is typeset by the inner command |\set@fusion@sixh|. +% +% \begin{macro}{\set@fusionadd@sixh} +% \changes{v2.00}{1998/11/23}{New command: \cs{set@fusionadd@sixh}} +% \begin{macrocode} +\def\set@fusionadd@sixh{% + \if\@@tmpa 4\relax% + \putratom{272}{-18}{\@@tmpb}% % right type + \else\if\@@tmpa 1\relax% + \putratom{68}{-18}{\@@tmpb}% % right type + \else\if\@@tmpa 3\relax% + \putratom{233}{60}{\@@tmpb}% % right type + \else\if\@@tmpa 2\relax% + \putratom{120}{60}{\@@tmpb}% % right type + \else\if\@@tmpa 5\relax% + \putratom{233}{-110}{\@@tmpb}% % right type + \else\if\@@tmpa 6\relax% + \putratom{120}{-110}{\@@tmpb}% % right type + \else +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% + \set@fusion@sixh + \fi\fi\fi\fi\fi\fi% +}% +% \end{macrocode} +% \end{macro} +% +% The inner command |\set@fusion@sixh| is used for typesetting +% a fused ring at each bond represented by |\@@tmpa|. Warnings +% concerning mismatched ring-fusions are based on the command +% |\FuseWarning|. +% +% \begin{macro}{\set@fusion@sixh} +% \changes{v2.00}{1998/11/23}{New command: \cs{set@fusion@sixh}} +% \begin{macrocode} +\def\set@fusion@sixh{% +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% +\if\@@tmpa d\relax% + \putlratom{406}{0}{\@@tmpb}% % bond fused + \FuseWarning{103}{171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{d, h, or other}% + \else\if\@@tmpa D\relax% + \putlratom{303}{-171}{\@@tmpb}% % bond fused + \FuseWarning{-103}{-171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{D, H, or other}% + \else\if\@@tmpa e\relax% + \putlratom{303}{-171}{\@@tmpb}% % bond fused + \FuseWarning{200}{0}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{e, k, or other}% + \else\if\@@tmpa E\relax% + \putlratom{103}{-171}{\@@tmpb}% % bond fused + \FuseWarning{-200}{0}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{E, K, or other}% + \else\if\@@tmpa f\relax% + \putlratom{103}{-171}{\@@tmpb}% % bond fused + \FuseWarning{103}{-171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{f, j, or other}% + \else\if\@@tmpa F\relax% + \putlratom{0}{0}{\@@tmpb}% % bond fused + \FuseWarning{-103}{171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{F, J, or other}% + \else\if\@@tmpa a\relax% + \putlratom{0}{0}{\@@tmpb}% % bond fused + \FuseWarning{-103}{-171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a, i, or other}% + \else\if\@@tmpa A\relax% + \putlratom{103}{171}{\@@tmpb}% % bond fused + \FuseWarning{103}{171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A, I, or other}% + \else\if\@@tmpa b\relax% + \putlratom{103}{171}{\@@tmpb}% % bond fused + \FuseWarning{-200}{0}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b, k, or other}% + \else\if\@@tmpa B\relax% + \putlratom{303}{171}{\@@tmpb}% % bond fused + \FuseWarning{200}{0}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B, K, or other}% + \else\if\@@tmpa c\relax% + \putlratom{303}{171}{\@@tmpb}% % bond fused + \FuseWarning{-103}{171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c, e, or other}% + \else\if\@@tmpa C\relax% + \putlratom{406}{0}{\@@tmpb}% % bond fused +% \FuseWarning{103}{171}% + \FuseWarning{103}{-171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C, E, or other}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +}% end of the macro \set@fusion@sixh +% \end{macrocode} +% \end{macro} +% +% \subsection{Inverse Horizontal Type} +% +% The macro |\set@fusionadd@sixhi| is an inner command contained +% in the definition of |\sixheterohi| etc., where +% the macro is used for setting an additive +% or a fused ring at each bond (designated by |\@@tmpa|). The +% fused ring is typeset by the inner command |\set@fusion@sixhi|. +% +% \begin{macro}{\set@fusionadd@sixhi} +% \changes{v2.00}{1998/11/29}{New command: \cs{set@fusionadd@sixhi}} +% \begin{macrocode} +\def\set@fusionadd@sixhi{% + \if\@@tmpa 1\relax% + \putratom{272}{-18}{\@@tmpb}% % right type + \else\if\@@tmpa 4\relax% + \putratom{68}{-18}{\@@tmpb}% % right type + \else\if\@@tmpa 2\relax% + \putratom{233}{60}{\@@tmpb}% % right type + \else\if\@@tmpa 3\relax% + \putratom{120}{60}{\@@tmpb}% % right type + \else\if\@@tmpa 6\relax% + \putratom{233}{-110}{\@@tmpb}% % right type + \else\if\@@tmpa 5\relax% + \putratom{120}{-110}{\@@tmpb}% % right type + \else +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% + \set@fusion@sixhi + \fi\fi\fi\fi\fi\fi% +}% +% \end{macrocode} +% \end{macro} +% +% The inner command |\set@fusion@sixhi| is used for typesetting +% a fused ring at each bond represented by |\@@tmpa|. Warnings +% concerning mismatched ring-fusions are based on the command +% |\FuseWarning|. +% +% \begin{macro}{\set@fusion@sixhi} +% \changes{v2.00}{1998/11/23}{New command: \cs{set@fusion@sixhi}} +% \begin{macrocode} +\def\set@fusion@sixhi{% +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% +\if\@@tmpa F\relax% + \putlratom{406}{0}{\@@tmpb}% % bond fused + \FuseWarning{103}{171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{F, J, or other}% + \else\if\@@tmpa f\relax% + \putlratom{303}{-171}{\@@tmpb}% % bond fused + \FuseWarning{-103}{-171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{f, j, or other}% + \else\if\@@tmpa E\relax% + \putlratom{303}{-171}{\@@tmpb}% % bond fused + \FuseWarning{200}{0}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{E, K, or other}% + \else\if\@@tmpa e\relax% + \putlratom{103}{-171}{\@@tmpb}% % bond fused + \FuseWarning{-200}{0}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{e, k, or other}% + \else\if\@@tmpa D\relax% + \putlratom{103}{-171}{\@@tmpb}% % bond fused + \FuseWarning{103}{-171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{D, H, or other}% + \else\if\@@tmpa d\relax% + \putlratom{0}{0}{\@@tmpb}% % bond fused + \FuseWarning{-103}{171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{d, h, or other}% + \else\if\@@tmpa C\relax% + \putlratom{0}{0}{\@@tmpb}% % bond fused + \FuseWarning{-103}{-171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C, E, or other}% + \else\if\@@tmpa c\relax% + \putlratom{103}{171}{\@@tmpb}% % bond fused + \FuseWarning{103}{171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c, e, or other}% + \else\if\@@tmpa B\relax% + \putlratom{103}{171}{\@@tmpb}% % bond fused + \FuseWarning{-200}{0}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B, K, or other}% + \else\if\@@tmpa b\relax% + \putlratom{303}{171}{\@@tmpb}% % bond fused + \FuseWarning{200}{0}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b, k, or other}% + \else\if\@@tmpa A\relax% + \putlratom{303}{171}{\@@tmpb}% % bond fused + \FuseWarning{-103}{171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A, I, or other}% + \else\if\@@tmpa a\relax% + \putlratom{406}{0}{\@@tmpb}% % bond fused + \FuseWarning{103}{-171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a, i, or other}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +}% end of the macro \set@fusion@sixhi +% \end{macrocode} +% \end{macro} +% +% \section{Ring-fusion Commands for Six-Six Fused Rings} +% \subsection{Conventions for Warning} +% +% \begin{macro}{\UnfavorableFusion} +% \changes{v2.00}{1998/12/23}{New command: \cs{UnfavorableFusion}} +% \begin{macrocode} +\def\UnfavorableFusion#1{\if@smallringsw\else +\XyMTeXWarning{Unfavorable Fusion for bond `#1'}\fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ForbiddenFusion} +% \changes{v2.00}{1998/12/23}{New command: \cs{ForbiddenFusion}} +% \begin{macrocode} +\def\ForbiddenFusion#1{\if@smallringsw\else +\XyMTeXWarning{Forbidden Fusion for bond `#1'}\fi} +% \end{macrocode} +% \end{macro} +% +% \subsection{Normal Vertical Type} +% +% The macro |\set@fusion@decav| is an inner command contained +% in the definition of |\decalinev| and |\decaheterov|, where +% the macro is used for setting an additive +% or a fused ring at each bond (designated by |\@@tmpa|). The +% fused ring is typeset by the inner command |\set@fusionadd@sixv|. +% +% \begin{macro}{\set@fusion@decav} +% \changes{v2.00}{1998/11/15}{New command: \cs{set@fusion@decav}} +% \begin{macrocode} +\def\set@fusion@decav{% + \let\@@tmpa=\@tmpa + \let\@@tmpb=\@tmpb + \if\@tmpa a% + \let\@@tmpa=\@tmpa + \Put@Direct(342,0){\set@fusionadd@sixv}% + \else\if\@tmpa A% + \let\@@tmpa=\@tmpa + \Put@Direct(342,0){\set@fusionadd@sixv}% + \else\if\@tmpa b% + \let\@@tmpa=\@tmpa + \Put@Direct(342,0){\set@fusionadd@sixv}% + \else\if\@tmpa B% + \let\@@tmpa=\@tmpa + \Put@Direct(342,0){\set@fusionadd@sixv}% + \else\if\@tmpa c% + \let\@@tmpa=\@tmpa + \Put@Direct(342,0){\set@fusionadd@sixv}% + \else\if\@tmpa C% + \let\@@tmpa=\@tmpa + \Put@Direct(342,0){\set@fusionadd@sixv}% + \else\if\@tmpa d% + \let\@@tmpa=\@tmpa + \Put@Direct(342,0){\set@fusionadd@sixv}% + \UnfavorableFusion{d}% + \else\if\@tmpa D% + \let\@@tmpa=\@tmpa + \Put@Direct(342,0){\set@fusionadd@sixv}% + \UnfavorableFusion{D}% + \else\if\@tmpa e% + \edef\@@tmpa{c}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \UnfavorableFusion{e}% + \else\if\@tmpa E% + \edef\@@tmpa{C}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \UnfavorableFusion{E}% + \else\if\@tmpa f% + \edef\@@tmpa{d}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa F% + \edef\@@tmpa{D}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa g% + \edef\@@tmpa{e}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa G% + \edef\@@tmpa{E}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa h% + \edef\@@tmpa{f}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa H% + \edef\@@tmpa{F}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa i% + \edef\@@tmpa{a}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \UnfavorableFusion{i}% + \else\if\@tmpa I% + \edef\@@tmpa{A}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \UnfavorableFusion{I}% + \else\if\@tmpa j% + \edef\@@tmpa{f}% + \Put@Direct(342,0){\set@fusionadd@sixv}% + \UnfavorableFusion{j}% + \else\if\@tmpa J% + \edef\@@tmpa{F}% + \Put@Direct(342,0){\set@fusionadd@sixv}% + \UnfavorableFusion{J}% + \else\if\@tmpa k% + \edef\@@tmpa{e}% + \Put@Direct(342,0){\set@fusionadd@sixv}% + \ForbiddenFusion{k}% + \else\if\@tmpa K% + \edef\@@tmpa{E}% + \Put@Direct(342,0){\set@fusionadd@sixv}% + \ForbiddenFusion{K}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +}% end of the macro \set@fusion@decav +% \end{macrocode} +% \end{macro} +% +% \subsection{Vertical-Bottom Type} +% +% The macro |\set@fusion@decavb| is an inner command contained +% in the definition of |\decalinevb| and |\decaheterovb| etc., +% where the macro is used for setting an additive +% or a fused ring at each bond (designated by |\@@tmpa|). The +% fused ring is typeset by the inner command |\set@fusionadd@sixv|. +% +% \begin{macro}{\set@fusion@decavb} +% \changes{v2.00}{1998/12/25}{New command: \cs{set@fusion@decavb}} +% \begin{macrocode} +\def\set@fusion@decavb{% + \let\@@tmpa=\@tmpa + \let\@@tmpb=\@tmpb + \if\@tmpa a% + \edef\@@tmpa{b}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa A% + \edef\@@tmpa{B}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa b% + \edef\@@tmpa{c}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa B% + \edef\@@tmpa{C}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa c% + \edef\@@tmpa{d}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa C% + \edef\@@tmpa{D}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa d% + \edef\@@tmpa{e}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \UnfavorableFusion{d}% + \else\if\@tmpa D% + \edef\@@tmpa{E}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \UnfavorableFusion{D}% + \else\if\@tmpa e% + \edef\@@tmpa{d}% + \Put@Direct(-171,303){\set@fusionadd@sixv}% + \UnfavorableFusion{e}% + \else\if\@tmpa E% + \edef\@@tmpa{D}% + \Put@Direct(-171,303){\set@fusionadd@sixv}% + \UnfavorableFusion{E}% + \else\if\@tmpa f% + \edef\@@tmpa{e}% + \Put@Direct(-171,303){\set@fusionadd@sixv}% + \else\if\@tmpa F% + \edef\@@tmpa{E}% + \Put@Direct(-171,303){\set@fusionadd@sixv}% + \else\if\@tmpa g% + \edef\@@tmpa{f}% + \Put@Direct(-171,303){\set@fusionadd@sixv}% + \else\if\@tmpa G% + \edef\@@tmpa{F}% + \Put@Direct(-171,303){\set@fusionadd@sixv}% + \else\if\@tmpa h% + \edef\@@tmpa{a}% + \Put@Direct(-171,303){\set@fusionadd@sixv}% + \else\if\@tmpa H% + \edef\@@tmpa{A}% + \Put@Direct(-171,303){\set@fusionadd@sixv}% + \else\if\@tmpa i% + \edef\@@tmpa{b}% + \Put@Direct(-171,303){\set@fusionadd@sixv}% + \UnfavorableFusion{i}% + \else\if\@tmpa I% + \edef\@@tmpa{B}% + \Put@Direct(-171,303){\set@fusionadd@sixv}% + \UnfavorableFusion{I}% + \else\if\@tmpa j% + \edef\@@tmpa{a}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \UnfavorableFusion{j}% + \else\if\@tmpa J% + \edef\@@tmpa{A}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \UnfavorableFusion{J}% + \else\if\@tmpa k% + \edef\@@tmpa{c}% + \Put@Direct(-171,303){\set@fusionadd@sixv}% + \ForbiddenFusion{k}% + \else\if\@tmpa K% + \edef\@@tmpa{C}% + \Put@Direct(-171,303){\set@fusionadd@sixv}% + \ForbiddenFusion{K}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +}% end of the macro \set@fusion@decavb +% \end{macrocode} +% \end{macro} +% +% \subsection{Vertical-Top Type} +% +% The macro |\set@fusion@decavt| is an inner command contained +% in the definition of |\decalinevt| and |\decaheterovt| etc., +% where the macro is used for setting an additive +% or a fused ring at each bond (designated by |\@@tmpa|). The +% fused ring is typeset by the inner command |\set@fusionadd@sixv|. +% +% \begin{macro}{\set@fusion@decavt} +% \changes{v2.00}{1998/12/25}{New command: \cs{set@fusion@decavt}} +% \begin{macrocode} +\def\set@fusion@decavt{% + \let\@@tmpa=\@tmpa + \let\@@tmpb=\@tmpb + \if\@tmpa a% + \edef\@@tmpa{f}% + \Put@Direct(171,303){\set@fusionadd@sixv}% + \else\if\@tmpa A% + \edef\@@tmpa{F}% + \Put@Direct(171,303){\set@fusionadd@sixv}% + \else\if\@tmpa b% + \edef\@@tmpa{a}% + \Put@Direct(171,303){\set@fusionadd@sixv}% + \else\if\@tmpa B% + \edef\@@tmpa{A}% + \Put@Direct(171,303){\set@fusionadd@sixv}% + \else\if\@tmpa c% + \edef\@@tmpa{b}% + \Put@Direct(171,303){\set@fusionadd@sixv}% + \else\if\@tmpa C% + \edef\@@tmpa{B}% + \Put@Direct(171,303){\set@fusionadd@sixv}% + \else\if\@tmpa d% + \edef\@@tmpa{c}% + \Put@Direct(171,303){\set@fusionadd@sixv}% + \UnfavorableFusion{d}% + \else\if\@tmpa D% + \edef\@@tmpa{C}% + \Put@Direct(171,303){\set@fusionadd@sixv}% + \UnfavorableFusion{D}% + \else\if\@tmpa e% + \edef\@@tmpa{b}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \UnfavorableFusion{e}% + \else\if\@tmpa E% + \edef\@@tmpa{B}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \UnfavorableFusion{E}% + \else\if\@tmpa f% + \edef\@@tmpa{c}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa F% + \edef\@@tmpa{C}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa g% + \edef\@@tmpa{d}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa G% + \edef\@@tmpa{D}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa h% + \edef\@@tmpa{e}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa H% + \edef\@@tmpa{E}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa i% + \edef\@@tmpa{f}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \UnfavorableFusion{i}% + \else\if\@tmpa I% + \edef\@@tmpa{F}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \UnfavorableFusion{I}% + \else\if\@tmpa j% + \edef\@@tmpa{e}% + \Put@Direct(171,303){\set@fusionadd@sixv}% + \UnfavorableFusion{j}% + \else\if\@tmpa J% + \edef\@@tmpa{E}% + \Put@Direct(171,303){\set@fusionadd@sixv}% + \UnfavorableFusion{J}% + \else\if\@tmpa k% + \edef\@@tmpa{d}% + \Put@Direct(171,303){\set@fusionadd@sixv}% + \ForbiddenFusion{k}% + \else\if\@tmpa K% + \edef\@@tmpa{D}% + \Put@Direct(171,303){\set@fusionadd@sixv}% + \ForbiddenFusion{K}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +}% end of \set@fusion@decavt +% \end{macrocode} +% \end{macro} +% +% \subsection{Normal Horizontal Type} +% +% The macro |\set@fusion@decah| is an inner command contained +% in the definition of |\decalineh| and |\decaheteroh|, where +% the macro is used for setting an additive +% or a fused ring at each bond (designated by |\@@tmpa|). The +% fused ring is typeset by the inner command |\set@fusionadd@sixh|. +% +% \begin{macro}{\set@fusion@decah} +% \changes{v2.00}{1998/11/15}{New command: \cs{set@fusion@decah}} +% \begin{macrocode} +\def\set@fusion@decah{% + \let\@@tmpa=\@tmpa + \let\@@tmpb=\@tmpb + \if\@tmpa a% + \let\@@tmpa=\@tmpa + \Put@Direct(0,0){\set@fusionadd@sixh}% + \else\if\@tmpa A% + \let\@@tmpa=\@tmpa + \Put@Direct(0,0){\set@fusionadd@sixh}% + \else\if\@tmpa b% + \let\@@tmpa=\@tmpa + \Put@Direct(0,0){\set@fusionadd@sixh}% + \else\if\@tmpa B% + \let\@@tmpa=\@tmpa + \Put@Direct(0,0){\set@fusionadd@sixh}% + \else\if\@tmpa c% + \let\@@tmpa=\@tmpa + \Put@Direct(0,0){\set@fusionadd@sixh}% + \else\if\@tmpa C% + \let\@@tmpa=\@tmpa + \Put@Direct(0,0){\set@fusionadd@sixh}% + \else\if\@tmpa d% + \let\@@tmpa=\@tmpa + \Put@Direct(0,0){\set@fusionadd@sixh}% + \UnfavorableFusion{d}% + \else\if\@tmpa D% + \let\@@tmpa=\@tmpa + \Put@Direct(0,0){\set@fusionadd@sixh}% + \UnfavorableFusion{D}% + \else\if\@tmpa e% + \edef\@@tmpa{c}% + \Put@Direct(0,-342){\set@fusionadd@sixh}% + \UnfavorableFusion{e}% + \else\if\@tmpa E% + \edef\@@tmpa{C}% + \Put@Direct(0,-342){\set@fusionadd@sixh}% + \UnfavorableFusion{E}% + \else\if\@tmpa f% + \edef\@@tmpa{d}% + \Put@Direct(0,-342){\set@fusionadd@sixh}% + \else\if\@tmpa F% + \edef\@@tmpa{D}% + \Put@Direct(0,-342){\set@fusionadd@sixh}% + \else\if\@tmpa g% + \edef\@@tmpa{e}% + \Put@Direct(0,-342){\set@fusionadd@sixh}% + \else\if\@tmpa G% + \edef\@@tmpa{E}% + \Put@Direct(0,-342){\set@fusionadd@sixh}% + \else\if\@tmpa h% + \edef\@@tmpa{f}% + \Put@Direct(0,-342){\set@fusionadd@sixh}% + \else\if\@tmpa H% + \edef\@@tmpa{F}% + \Put@Direct(0,-342){\set@fusionadd@sixh}% + \else\if\@tmpa i% + \edef\@@tmpa{a}% + \Put@Direct(0,-342){\set@fusionadd@sixh}% + \UnfavorableFusion{i}% + \else\if\@tmpa I% + \edef\@@tmpa{A}% + \Put@Direct(0,-342){\set@fusionadd@sixh}% + \UnfavorableFusion{I}% + \else\if\@tmpa j% + \edef\@@tmpa{f}% + \Put@Direct(0,0){\set@fusionadd@sixh}% + \UnfavorableFusion{j}% + \else\if\@tmpa J% + \edef\@@tmpa{F}% + \Put@Direct(0,0){\set@fusionadd@sixh}% + \UnfavorableFusion{J}% + \else\if\@tmpa k% + \edef\@@tmpa{e}% + \Put@Direct(0,0){\set@fusionadd@sixh}% + \ForbiddenFusion{k}% + \else\if\@tmpa K% + \edef\@@tmpa{E}% + \Put@Direct(0,0){\set@fusionadd@sixh}% + \ForbiddenFusion{K}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +}% end of the macro \set@fusion@decah +% \end{macrocode} +% \end{macro} +% +% \section{Ring-fusion Commands for Six-Six-Six Fused Rings} +% \subsection{Normal Vertical Type of Anthracenes} +% +% The macro |\set@fusion@hanthrav| is an inner command contained +% in the definition of |\hanthracenev|, where +% the macro is used for setting an additive +% or a fused ring at each bond (designated by |\@@tmpa|). The +% fused ring is typeset by the inner command |\set@fusionadd@sixv|. +% +% \begin{macro}{\set@fusion@hanthrav} +% \changes{v2.00}{1998/11/23}{New command: \cs{set@fusion@hanthrav}} +% \begin{macrocode} +\def\set@fusion@hanthrav{% + \let\@@tmpa=\@tmpa + \let\@@tmpb=\@tmpb + \if\@tmpa a% + \let\@@tmpa=\@tmpa + \Put@Direct(684,0){\set@fusionadd@sixv}% + \else\if\@tmpa A% + \let\@@tmpa=\@tmpa + \Put@Direct(684,0){\set@fusionadd@sixv}% + \else\if\@tmpa b% + \let\@@tmpa=\@tmpa + \Put@Direct(684,0){\set@fusionadd@sixv}% + \else\if\@tmpa B% + \let\@@tmpa=\@tmpa + \Put@Direct(684,0){\set@fusionadd@sixv}% + \else\if\@tmpa c% + \let\@@tmpa=\@tmpa + \Put@Direct(684,0){\set@fusionadd@sixv}% + \else\if\@tmpa C% + \let\@@tmpa=\@tmpa + \Put@Direct(684,0){\set@fusionadd@sixv}% + \else\if\@tmpa d% + \let\@@tmpa=\@tmpa + \Put@Direct(684,0){\set@fusionadd@sixv}% + \UnfavorableFusion{d}% + \else\if\@tmpa D% + \let\@@tmpa=\@tmpa + \Put@Direct(684,0){\set@fusionadd@sixv}% + \UnfavorableFusion{D}% + \else\if\@tmpa e% + \edef\@@tmpa{c}% + \Put@Direct(342,0){\set@fusionadd@sixv}% + \UnfavorableFusion{e}% + \else\if\@tmpa E% + \edef\@@tmpa{C}% + \Put@Direct(342,0){\set@fusionadd@sixv}% + \UnfavorableFusion{E}% + \else\if\@tmpa f% + \edef\@@tmpa{d}% + \Put@Direct(342,0){\set@fusionadd@sixv}% + \UnfavorableFusion{f}% + \else\if\@tmpa F% + \edef\@@tmpa{D}% + \Put@Direct(342,0){\set@fusionadd@sixv}% + \UnfavorableFusion{F}% + \else\if\@tmpa g% + \edef\@@tmpa{c}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \UnfavorableFusion{g}% + \else\if\@tmpa G% + \edef\@@tmpa{C}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \UnfavorableFusion{G}% + \else\if\@tmpa h% + \edef\@@tmpa{d}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa H% + \edef\@@tmpa{D}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa i% + \edef\@@tmpa{e}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa I% + \edef\@@tmpa{E}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa j% + \edef\@@tmpa{f}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa J% + \edef\@@tmpa{F}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa k% + \edef\@@tmpa{a}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \UnfavorableFusion{k}% + \else\if\@tmpa K% + \edef\@@tmpa{A}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \UnfavorableFusion{K}% + \else\if\@tmpa l% + \edef\@@tmpa{f}% + \Put@Direct(342,0){\set@fusionadd@sixv}% + \UnfavorableFusion{l}% + \else\if\@tmpa L% + \edef\@@tmpa{F}% + \Put@Direct(342,0){\set@fusionadd@sixv}% + \UnfavorableFusion{L}% + \else\if\@tmpa m% + \edef\@@tmpa{a}% + \Put@Direct(342,0){\set@fusionadd@sixv}% + \UnfavorableFusion{m}% + \else\if\@tmpa M% + \edef\@@tmpa{A}% + \Put@Direct(342,0){\set@fusionadd@sixv}% + \UnfavorableFusion{M}% + \else\if\@tmpa n% + \edef\@@tmpa{f}% + \Put@Direct(684,0){\set@fusionadd@sixv}% + \UnfavorableFusion{n}% + \else\if\@tmpa N% + \edef\@@tmpa{F}% + \Put@Direct(684,0){\set@fusionadd@sixv}% + \UnfavorableFusion{N}% + \else\if\@tmpa o% + \edef\@@tmpa{e}% + \Put@Direct(684,0){\set@fusionadd@sixv}% + \ForbiddenFusion{o}% + \else\if\@tmpa O% + \edef\@@tmpa{E}% + \Put@Direct(684,0){\set@fusionadd@sixv}% + \ForbiddenFusion{O}% + \else\if\@tmpa p% + \edef\@@tmpa{e}% + \Put@Direct(342,0){\set@fusionadd@sixv}% + \ForbiddenFusion{p}% + \else\if\@tmpa P% + \edef\@@tmpa{E}% + \Put@Direct(342,0){\set@fusionadd@sixv}% + \ForbiddenFusion{P}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +}% end of the macro \set@fusion@hanthrav +% \end{macrocode} +% \end{macro} +% +% \subsection{Normal Vertical Type of Phenanthrenes} +% +% The macro |\set@fusion@hphenanv| is an inner command contained +% in the definition of |\hphenanthrenev|, where +% the macro is used for setting an additive +% or a fused ring at each bond (designated by |\@@tmpa|). The +% fused ring is typeset by the inner command |\set@fusionadd@sixv|. +% +% \begin{macro}{\set@fusion@hphenanv} +% \changes{v2.00}{1998/11/23}{New command: \cs{set@fusion@phenanv}} +% \begin{macrocode} +\def\set@fusion@hphenanv{% + \let\@@tmpa=\@tmpa + \let\@@tmpb=\@tmpb + \if\@tmpa a% + \edef\@@tmpa{b}% + \Put@Direct(513,303){\set@fusionadd@sixv}% + \else\if\@tmpa A% + \edef\@@tmpa{B}% + \Put@Direct(513,303){\set@fusionadd@sixv}% + \else\if\@tmpa b% + \edef\@@tmpa{a}% + \Put@Direct(513,303){\set@fusionadd@sixv}% + \else\if\@tmpa B% + \edef\@@tmpa{A}% + \Put@Direct(513,303){\set@fusionadd@sixv}% + \else\if\@tmpa c% + \edef\@@tmpa{f}% + \Put@Direct(513,303){\set@fusionadd@sixv}% + \else\if\@tmpa C% + \edef\@@tmpa{F}% + \Put@Direct(513,303){\set@fusionadd@sixv}% + \else\if\@tmpa d% + \edef\@@tmpa{e}% + \Put@Direct(513,303){\set@fusionadd@sixv}% + \UnfavorableFusion{d}% + \else\if\@tmpa D% + \edef\@@tmpa{E}% + \Put@Direct(513,303){\set@fusionadd@sixv}% + \UnfavorableFusion{D}% + \else\if\@tmpa e% + \edef\@@tmpa{f}% + \Put@Direct(342,0){\set@fusionadd@sixv}% + \UnfavorableFusion{e}% + \else\if\@tmpa E% + \edef\@@tmpa{F}% + \Put@Direct(342,0){\set@fusionadd@sixv}% + \UnfavorableFusion{E}% + \else\if\@tmpa f% + \edef\@@tmpa{a}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \UnfavorableFusion{f}% + \else\if\@tmpa F% + \edef\@@tmpa{A}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \UnfavorableFusion{F}% + \else\if\@tmpa g% + \edef\@@tmpa{f}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa G% + \edef\@@tmpa{F}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa h% + \edef\@@tmpa{e}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa H% + \edef\@@tmpa{E}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa i% + \edef\@@tmpa{d}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa I% + \edef\@@tmpa{D}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa j% + \edef\@@tmpa{c}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \UnfavorableFusion{j}% + \else\if\@tmpa J% + \edef\@@tmpa{C}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \UnfavorableFusion{J}% + \else\if\@tmpa k% + \edef\@@tmpa{d}% + \Put@Direct(342,0){\set@fusionadd@sixv}% + \UnfavorableFusion{k}% + \else\if\@tmpa K% + \edef\@@tmpa{D}% + \Put@Direct(342,0){\set@fusionadd@sixv}% + \UnfavorableFusion{K}% + \else\if\@tmpa l% + \edef\@@tmpa{c}% + \Put@Direct(342,0){\set@fusionadd@sixv}% + \else\if\@tmpa L% + \edef\@@tmpa{C}% + \Put@Direct(342,0){\set@fusionadd@sixv}% + \else\if\@tmpa m% + \edef\@@tmpa{b}% + \Put@Direct(342,0){\set@fusionadd@sixv}% + \UnfavorableFusion{m}% + \else\if\@tmpa M% + \edef\@@tmpa{B}% + \Put@Direct(342,0){\set@fusionadd@sixv}% + \UnfavorableFusion{M}% + \else\if\@tmpa n% + \edef\@@tmpa{c}% + \Put@Direct(513,303){\set@fusionadd@sixv}% + \UnfavorableFusion{n}% + \else\if\@tmpa N% + \edef\@@tmpa{C}% + \Put@Direct(513,303){\set@fusionadd@sixv}% + \UnfavorableFusion{N}% + \else\if\@tmpa o% + \edef\@@tmpa{d}% + \Put@Direct(513,303){\set@fusionadd@sixv}% + \ForbiddenFusion{o}% + \else\if\@tmpa O% + \edef\@@tmpa{D}% + \Put@Direct(513,303){\set@fusionadd@sixv}% + \ForbiddenFusion{O}% + \else\if\@tmpa p% + \edef\@@tmpa{e}% + \Put@Direct(342,0){\set@fusionadd@sixv}% + \ForbiddenFusion{p}% + \else\if\@tmpa P% + \edef\@@tmpa{E}% + \Put@Direct(342,0){\set@fusionadd@sixv}% + \ForbiddenFusion{P}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +}% end of the macro \set@fusion@hphananv +% \end{macrocode} +% \end{macro} +% +% \section{Ring-fusion Commands for Five-Membered Rings} +% \subsection{Normal vertical type} +% +% The macro |\set@fusionadd@fivev| is an inner command contained +% in the definition of |\fiveheterov| etc., where +% the macro is used for setting an additive +% or a fused ring at each bond (designated by |\@@tmpa|). The +% fused ring is typeset by the inner command |\set@fusion@fivev|. +% +% \begin{macro}{\set@fusionadd@fivev} +% \changes{v2.00}{1998/12/4}{New command: \cs{set@fusionadd@fivev}} +% \begin{macrocode} +\def\set@fusionadd@fivev{% + \if\@@tmpa 1\relax% + \putratom{-38}{88}{\@@tmpb}% % right type + \else\if\@@tmpa 2\relax% + \putratom{60}{120}{\@@tmpb}% % right type + \else\if\@@tmpa 3\relax% + \putratom{60}{233}{\@@tmpb}% % right type + \else\if\@@tmpa 4\relax% + \putratom{-60}{233}{\@@tmpb}% % right type + \else\if\@@tmpa 5\relax% + \putratom{-60}{120}{\@@tmpb}% % right type + \else\if\@@tmpa 0\relax% + \putratom{-38}{150}{\@@tmpb}% % right type + \else +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% + \set@fusion@fivev + \fi\fi\fi\fi\fi\fi% +}% end of the macro \set@fusionadd@fivev +% \end{macrocode} +% \end{macro} +% +% The inner command |\set@fusion@fivev| is used for typesetting +% a fused ring at each bond represented by |\@@tmpa|. Warnings +% concerning mismatched ring-fusions are based on the command +% |\FuseWarning|. +% +% \begin{macro}{\set@fusion@fivev} +% \changes{v2.00}{1998/12/4}{New command: \cs{set@fusion@fivev}} +% \changes{v5.00}{2010/10/01}{For bond coloring} +% \begin{macrocode} +\newif\iffusesw \fuseswfalse +\def\set@fusion@fivev{% +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% + \if\@@tmpa a\relax% + \putlratom{0}{0}{\@@tmpb}% % right type + \FuseWarning{-171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}% + \else\if\@@tmpa A\relax% + \putlratom{171}{103}{\@@tmpb}% % right type + \FuseWarning{171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}% + \else\if\@@tmpa b\relax% + \putlratom{171}{103}{\@@tmpb}% % right type + \FuseWarning{0}{-200}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}% + \else\if\@@tmpa B\relax% + \putlratom{171}{303}{\@@tmpb}% % right type + \FuseWarning{0}{200}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}% + \else\if\@@tmpa c\relax + \iffusesw + \putlratom{171}{103}{\@@tmpb}% % right type + \else + \XyMTeXWarning{Not-used fusion at bond `c'}% + \fi + \else\if\@@tmpa C\relax% + \iffusesw + \putlratom{-171}{103}{\@@tmpb}% % right type + \else + \XyMTeXWarning{Not-used fusion at bond `C'}% + \fi + \else\if\@@tmpa d\relax% + \putlratom{-171}{303}{\@@tmpb}% % right type + \FuseWarning{0}{200}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{d}% + \else\if\@@tmpa D\relax% + \putlratom{-171}{103}{\@@tmpb}% % right type + \FuseWarning{0}{-200}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{D}% + \else\if\@@tmpa e\relax% + \putlratom{-171}{103}{\@@tmpb}% % right type + \FuseWarning{171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{e}% + \else\if\@@tmpa E\relax% + \putlratom{0}{0}{\@@tmpb}% % right type + \FuseWarning{-171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{E}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +}% end of the marcro \set@fusion@fivev +% \end{macrocode} +% \end{macro} +% +% \subsection{Inverse vertical type} +% +% The macro |\set@fusionadd@fivevi| is an inner command contained +% in the definition of |\fiveheterov| etc., where +% the macro is used for setting an additive +% or a fused ring at each bond (designated by |\@@tmpa|). The +% fused ring is typeset by the inner command |\set@fusion@fivevi|. +% +% \begin{macro}{\set@fusionadd@fivevi} +% \changes{v2.00}{1998/12/4}{New command: \cs{set@fusionadd@fivevi}} +% \begin{macrocode} +\def\set@fusionadd@fivevi{% + \if\@@tmpa 1\relax% + \putratom{-38}{282}{\@@tmpb}% % right type + \else\if\@@tmpa 2\relax% + \putratom{60}{233}{\@@tmpb}% % right type + \else\if\@@tmpa 3\relax% + \putratom{60}{120}{\@@tmpb}% % right type + \else\if\@@tmpa 4\relax% + \putratom{-60}{120}{\@@tmpb}% % right type + \else\if\@@tmpa 5\relax% + \putratom{-60}{233}{\@@tmpb}% % right type + \else\if\@@tmpa 0\relax% + \putratom{-38}{213}{\@@tmpb}% % right type + \else +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% + \set@fusion@fivevi + \fi\fi\fi\fi\fi\fi% +}% end of the macro \set@fusionadd@fivevi +% \end{macrocode} +% \end{macro} +% +% The inner command |\set@fusion@fivevi| is used for typesetting +% a fused ring at each bond represented by |\@@tmpa|. Warnings +% concerning mismatched ring-fusions are based on the command +% |\FuseWarning|. +% +% \begin{macro}{\set@fusion@fivevi} +% \changes{v2.00}{1998/12/4}{New command: \cs{set@fusion@fivevi}} +% \changes{v5.00}{2010/10/01}{For bond coloring} +% \begin{macrocode} +\def\set@fusion@fivevi{% +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% +\if\@@tmpa d\relax% + \putlratom{-171}{103}{\@@tmpb}% % bond fused + \FuseWarning{0}{-200}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{d, k, or other}% + \else\if\@@tmpa D\relax% + \putlratom{-171}{303}{\@@tmpb}% % bond fused + \FuseWarning{0}{200}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{D, K, or other}% + \else\if\@@tmpa e\relax% + \putlratom{-171}{303}{\@@tmpb}% % bond fused + \FuseWarning{-171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{e, j, or other}% + \else\if\@@tmpa E\relax% + \putlratom{0}{406}{\@@tmpb}% % bond fused + \FuseWarning{171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{E, J, or other}% + \else\if\@@tmpa a\relax% + \putlratom{0}{406}{\@@tmpb}% % bond fused + \FuseWarning{-171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a, i, or other}% + \else\if\@@tmpa A\relax% + \putlratom{171}{303}{\@@tmpb}% % bond fused + \FuseWarning{171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A, I, or other}% + \else\if\@@tmpa b\relax% + \putlratom{171}{303}{\@@tmpb}% % bond fused + \FuseWarning{0}{200}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b, k, or other}% + \else\if\@@tmpa B\relax% + \putlratom{171}{103}{\@@tmpb}% % bond fused + \FuseWarning{0}{-200}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B, K, or other}% + \else\if\@@tmpa c\relax + \iffusesw + \putlratom{171}{103}{\@@tmpb}% % right type + \else + \XyMTeXWarning{Not-used fusion at bond `c'}% + \fi + \else\if\@@tmpa C\relax% + \iffusesw + \putlratom{-171}{103}{\@@tmpb}% % right type + \else + \XyMTeXWarning{Not-used fusion at bond `C'}% + \fi + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +}% end of the macro \set@fusion@fivevi +% \end{macrocode} +% \end{macro} +% +% \subsection{Normal horizontal type} +% +% The macro |\set@fusionadd@fiveh| is an inner command contained +% in the definition of |\fiveheteroh| etc., where +% the macro is used for setting an additive +% or a fused ring at each bond (designated by |\@@tmpa|). The +% fused ring is typeset by the inner command |\set@fusion@fiveh|. +% +% \begin{macro}{\set@fusionadd@fiveh} +% \changes{v2.00}{1998/11/29}{New command: \cs{set@fusionadd@fiveh}} +% \begin{macrocode} +\def\set@fusionadd@fiveh{% + \if\@@tmpa 1\relax% + \putratom{272}{-18}{\@@tmpb}% % right type + \else\if\@@tmpa 2\relax% + \putratom{233}{60}{\@@tmpb}% % right type + \else\if\@@tmpa 3\relax% + \putratom{120}{60}{\@@tmpb}% % right type + \else\if\@@tmpa 5\relax% + \putratom{233}{-110}{\@@tmpb}% % right type + \else\if\@@tmpa 4\relax% + \putratom{120}{-110}{\@@tmpb}% % right type + \else\if\@@tmpa 0\relax% + \putratom{196}{-30}{\@@tmpb}% % right type + \else +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% + \set@fusion@fiveh + \fi\fi\fi\fi\fi\fi% +}% +% \end{macrocode} +% \end{macro} +% +% The inner command |\set@fusion@fiveh| is used for typesetting +% a fused ring at each bond represented by |\@@tmpa|. Warnings +% concerning mismatched ring-fusions are based on the command +% |\FuseWarning|. +% +% \begin{macro}{\set@fusion@fiveh} +% \changes{v2.00}{1998/11/23}{New command: \cs{set@fusion@fiveh}} +% \changes{v5.00}{2010/10/01}{For bond coloring} +% \begin{macrocode} +\def\set@fusion@fiveh{% +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% +\if\@@tmpa E\relax% + \putlratom{406}{0}{\@@tmpb}% % bond fused + \FuseWarning{103}{171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{E, J, or other}% + \else\if\@@tmpa e\relax% + \putlratom{303}{-171}{\@@tmpb}% % bond fused + \FuseWarning{-103}{-171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{e, j, or other}% + \else\if\@@tmpa D\relax% + \putlratom{303}{-171}{\@@tmpb}% % bond fused + \FuseWarning{200}{0}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{D, K, or other}% + \else\if\@@tmpa d\relax% + \putlratom{103}{-171}{\@@tmpb}% % bond fused + \FuseWarning{-200}{0}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{d, k, or other}% + \else\if\@@tmpa c\relax + \iffusesw + \putlratom{303}{171}{\@@tmpb}% % right type + \else + \XyMTeXWarning{Not-used fusion at bond `c'}% + \fi + \else\if\@@tmpa C\relax% + \iffusesw + \putlratom{303}{-171}{\@@tmpb}% % right type + \else + \XyMTeXWarning{Not-used fusion at bond `C'}% + \fi + \else\if\@@tmpa B\relax% + \putlratom{103}{171}{\@@tmpb}% % bond fused + \FuseWarning{-200}{0}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B, K, or other}% + \else\if\@@tmpa b\relax% + \putlratom{303}{171}{\@@tmpb}% % bond fused + \FuseWarning{200}{0}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b, k, or other}% + \else\if\@@tmpa A\relax% + \putlratom{303}{171}{\@@tmpb}% % bond fused + \FuseWarning{-103}{171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A, I, or other}% + \else\if\@@tmpa a\relax% + \putlratom{406}{0}{\@@tmpb}% % bond fused + \FuseWarning{103}{-171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a, i, or other}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +}% end of the macro \set@fusion@fiveh +% \end{macrocode} +% \end{macro} +% +% \subsection{Inverse horizontal type} +% +% The macro |\set@fusionadd@fivehi| is an inner command contained +% in the definition of |\fiveheterohi| etc., where +% the macro is used for setting an additive +% or a fused ring at each bond (designated by |\@@tmpa|). The +% fused ring is typeset by the inner command |\set@fusion@fivehi|. +% +% \begin{macro}{\set@fusionadd@fivehi} +% \changes{v2.00}{1998/11/23}{New command: \cs{set@fusionadd@fivehi}} +% \begin{macrocode} +\def\set@fusionadd@fivehi{% + \if\@@tmpa 1\relax% + \putratom{-38}{282}{\@@tmpb}% % right type + \else\if\@@tmpa 2\relax% + \putratom{60}{233}{\@@tmpb}% % right type + \else\if\@@tmpa 3\relax% + \putratom{60}{120}{\@@tmpb}% % right type + \else\if\@@tmpa 4\relax% + \putratom{-60}{120}{\@@tmpb}% % right type + \else\if\@@tmpa 5\relax% + \putratom{-60}{233}{\@@tmpb}% % right type + \else\if\@@tmpa 0\relax% + \putratom{140}{-30}{\@@tmpb}% % right type + \else +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% + \set@fusion@fivehi + \fi\fi\fi\fi\fi\fi% +}% +% \end{macrocode} +% \end{macro} +% +% The inner command |\set@fusion@fivehi| is used for typesetting +% a fused ring at each bond represented by |\@@tmpa|. Warnings +% concerning mismatched ring-fusions are based on the command +% |\FuseWarning|. +% +% \begin{macro}{\set@fusion@fivehi} +% \changes{v2.00}{1998/11/23}{New command: \cs{set@fusion@fivehi}} +% \changes{v5.00}{2010/10/01}{For bond coloring} +% \begin{macrocode} +\def\set@fusion@fivehi{% +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% +\if\@@tmpa d\relax% + \putlratom{303}{-171}{\@@tmpb}% % bond fused + \FuseWarning{200}{0}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{d, k, or other}% + \else\if\@@tmpa D\relax% + \putlratom{103}{-171}{\@@tmpb}% % bond fused + \FuseWarning{-200}{0}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{D, K, or other}% + \else\if\@@tmpa e\relax% + \putlratom{103}{-171}{\@@tmpb}% % bond fused + \FuseWarning{103}{-171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{e, j, or other}% + \else\if\@@tmpa E\relax% + \putlratom{0}{0}{\@@tmpb}% % bond fused + \FuseWarning{-103}{171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{E, J, or other}% + \else\if\@@tmpa a\relax% + \putlratom{0}{0}{\@@tmpb}% % bond fused + \FuseWarning{-103}{-171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a, i, or other}% + \else\if\@@tmpa A\relax% + \putlratom{103}{171}{\@@tmpb}% % bond fused + \FuseWarning{103}{171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A, I, or other}% + \else\if\@@tmpa b\relax% + \putlratom{103}{171}{\@@tmpb}% % bond fused + \FuseWarning{-200}{0}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b, k, or other}% + \else\if\@@tmpa B\relax% + \putlratom{303}{171}{\@@tmpb}% % bond fused + \FuseWarning{200}{0}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B, K, or other}% + \else\if\@@tmpa c\relax + \iffusesw + \putlratom{303}{171}{\@@tmpb}% % right type + \else + \XyMTeXWarning{Not-used fusion at bond `c'}% + \fi + \else\if\@@tmpa C\relax% + \iffusesw + \putlratom{303}{-171}{\@@tmpb}% % right type + \else + \XyMTeXWarning{Not-used fusion at bond `C'}% + \fi + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +}% end of the macro \set@fusion@sixhi +% \end{macrocode} +% \end{macro} +% +% \section{Ring-fusion Commands for Six-Five-fused Rings} +% \subsection{Normal vertical type} +% +% The macro |\set@fusion@nonav| is an inner command contained +% in the definition of |\indanev| and |\nonaheterov|, where +% the macro is used for setting an additive +% or a fused ring at each bond (designated by |\@@tmpa|). The +% fused ring is typeset by the inner command |\set@fusionadd@sixvi|. +% +% \begin{macro}{\set@fusion@nonav} +% \begin{macrocode} +\def\set@fusion@nonav{% + \let\@@tmpa=\@tmpa + \let\@@tmpb=\@tmpb + \if\@tmpa a% + \let\@@tmpa=\@tmpa + \Put@Direct(342,0){\set@fusionadd@sixvi}% + \else\if\@tmpa A% + \let\@@tmpa=\@tmpa + \Put@Direct(342,0){\set@fusionadd@sixvi}% + \else\if\@tmpa b% + \let\@@tmpa=\@tmpa + \Put@Direct(342,0){\set@fusionadd@sixvi}% + \else\if\@tmpa B% + \let\@@tmpa=\@tmpa + \Put@Direct(342,0){\set@fusionadd@sixvi}% + \else\if\@tmpa c\relax + \XyMTeXWarning{Not-used fusion at bond `c'}% + \else\if\@tmpa C\relax% + \XyMTeXWarning{Not-used fusion at bond `C'}% + \else\if\@tmpa d% + \edef\@@tmpa{c}% + \Put@Direct(0,0){\set@fusionadd@sixvi}% + \UnfavorableFusion{d}% + \else\if\@tmpa D% + \edef\@@tmpa{C}% + \Put@Direct(0,0){\set@fusionadd@sixvi}% + \UnfavorableFusion{D}% + \else\if\@tmpa e% + \edef\@@tmpa{d}% + \Put@Direct(0,0){\set@fusionadd@sixvi}% + \else\if\@tmpa E% + \edef\@@tmpa{D}% + \Put@Direct(0,0){\set@fusionadd@sixvi}% + \else\if\@tmpa f% + \edef\@@tmpa{e}% + \Put@Direct(0,0){\set@fusionadd@sixvi}% + \else\if\@tmpa F% + \edef\@@tmpa{E}% + \Put@Direct(0,0){\set@fusionadd@sixvi}% + \else\if\@tmpa g% + \edef\@@tmpa{f}% + \Put@Direct(0,0){\set@fusionadd@sixvi}% + \else\if\@tmpa G% + \edef\@@tmpa{F}% + \Put@Direct(0,0){\set@fusionadd@sixvi}% + \else\if\@tmpa h% + \edef\@@tmpa{a}% + \Put@Direct(0,0){\set@fusionadd@sixvi}% + \UnfavorableFusion{h}% + \else\if\@tmpa H% + \edef\@@tmpa{A}% + \Put@Direct(0,0){\set@fusionadd@sixvi}% + \UnfavorableFusion{H}% + \else\if\@tmpa i% + \edef\@@tmpa{f}% + \Put@Direct(342,0){\set@fusionadd@sixvi}% + \UnfavorableFusion{i}% + \else\if\@tmpa I% + \edef\@@tmpa{F}% + \Put@Direct(342,0){\set@fusionadd@sixvi}% + \UnfavorableFusion{I}% + \else\if\@tmpa j% + \edef\@@tmpa{e}% + \Put@Direct(342,0){\set@fusionadd@sixvi}% + \ForbiddenFusion{j}% + \else\if\@tmpa J% + \edef\@@tmpa{E}% + \Put@Direct(342,0){\set@fusionadd@sixvi}% + \ForbiddenFusion{J}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +}% end of the macro \set@fusion@nonav +% \end{macrocode} +% \end{macro} +% +% \subsection{Inverse vertical type} +% +% The macro |\set@fusion@nonavi| is an inner command contained +% in the definition of |\indanevi| and |\nonaheterovi|, where +% the macro is used for setting an additive +% or a fused ring at each bond (designated by |\@@tmpa|). The +% fused ring is typeset by the inner command |\set@fusionadd@sixv|. +% +% \begin{macro}{\set@fusion@nonavi} +% \changes{v2.00}{1998/12/5}{New command: \cs{set@fusion@nonavi}} +% \begin{macrocode} +\def\set@fusion@nonavi{% + \let\@@tmpa=\@tmpa + \let\@@tmpb=\@tmpb + \if\@tmpa a% + \let\@@tmpa=\@tmpa + \Put@Direct(342,0){\set@fusionadd@sixv}% + \else\if\@tmpa A% + \let\@@tmpa=\@tmpa + \Put@Direct(342,0){\set@fusionadd@sixv}% + \else\if\@tmpa b% + \let\@@tmpa=\@tmpa + \Put@Direct(342,0){\set@fusionadd@sixv}% + \else\if\@tmpa B% + \let\@@tmpa=\@tmpa + \Put@Direct(342,0){\set@fusionadd@sixv}% + \else\if\@tmpa c\relax + \XyMTeXWarning{Not-used fusion at bond `c'}% + \else\if\@tmpa C\relax% + \XyMTeXWarning{Not-used fusion at bond `C'}% + \else\if\@tmpa d% + \edef\@@tmpa{c}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \UnfavorableFusion{d}% + \else\if\@tmpa D% + \edef\@@tmpa{C}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \UnfavorableFusion{D}% + \else\if\@tmpa e% + \edef\@@tmpa{d}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa E% + \edef\@@tmpa{D}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa f% + \edef\@@tmpa{e}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa F% + \edef\@@tmpa{E}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa g% + \edef\@@tmpa{f}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa G% + \edef\@@tmpa{F}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \else\if\@tmpa h% + \edef\@@tmpa{a}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \UnfavorableFusion{h}% + \else\if\@tmpa H% + \edef\@@tmpa{A}% + \Put@Direct(0,0){\set@fusionadd@sixv}% + \UnfavorableFusion{H}% + \else\if\@tmpa i% + \edef\@@tmpa{f}% + \Put@Direct(342,0){\set@fusionadd@sixv}% + \UnfavorableFusion{i}% + \else\if\@tmpa I% + \edef\@@tmpa{F}% + \Put@Direct(342,0){\set@fusionadd@sixv}% + \UnfavorableFusion{I}% + \else\if\@tmpa j% + \edef\@@tmpa{e}% + \Put@Direct(342,0){\set@fusionadd@sixv}% + \ForbiddenFusion{j}% + \else\if\@tmpa J% + \edef\@@tmpa{E}% + \Put@Direct(342,0){\set@fusionadd@sixv}% + \ForbiddenFusion{J}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +}% end of the macro \set@fusion@nonavi +% \end{macrocode} +% \end{macro} +% +% \subsection{Normal horizontal type} +% +% The macro |\set@fusion@nonah| is an inner command contained +% in the definition of |\nonaheteroh|, where +% the macro is used for setting an additive +% or a fused ring at each bond (designated by |\@@tmpa|). The +% fused ring is typeset by the inner command |\set@fusionadd@sixhi|. +% +% \begin{macro}{\set@fusion@nonah} +% \changes{v2.00}{1998/12/6}{New command: \cs{set@fusion@nonah}} +% \begin{macrocode} +\def\set@fusion@nonah{% + \let\@@tmpa=\@tmpa + \let\@@tmpb=\@tmpb + \if\@tmpa a% + \let\@@tmpa=\@tmpa + \Put@Direct(0,0){\set@fusionadd@sixhi}% + \else\if\@tmpa A% + \let\@@tmpa=\@tmpa + \Put@Direct(0,0){\set@fusionadd@sixhi}% + \else\if\@tmpa b% + \let\@@tmpa=\@tmpa + \Put@Direct(0,0){\set@fusionadd@sixhi}% + \else\if\@tmpa B% + \let\@@tmpa=\@tmpa + \Put@Direct(0,0){\set@fusionadd@sixhi}% + \else\if\@tmpa c\relax + \XyMTeXWarning{Not-used fusion at bond `c'}% + \else\if\@tmpa C\relax% + \XyMTeXWarning{Not-used fusion at bond `C'}% + \else\if\@tmpa d% + \edef\@@tmpa{c}% + \Put@Direct(0,-342){\set@fusionadd@sixhi}% + \UnfavorableFusion{d}% + \else\if\@tmpa D% + \edef\@@tmpa{C}% + \Put@Direct(0,-342){\set@fusionadd@sixhi}% + \UnfavorableFusion{D}% + \else\if\@tmpa e% + \edef\@@tmpa{d}% + \Put@Direct(0,-342){\set@fusionadd@sixhi}% + \else\if\@tmpa E% + \edef\@@tmpa{D}% + \Put@Direct(0,-342){\set@fusionadd@sixhi}% + \else\if\@tmpa f% + \edef\@@tmpa{e}% + \Put@Direct(0,-342){\set@fusionadd@sixhi}% + \else\if\@tmpa F% + \edef\@@tmpa{E}% + \Put@Direct(0,-342){\set@fusionadd@sixhi}% + \else\if\@tmpa g% + \edef\@@tmpa{f}% + \Put@Direct(0,-342){\set@fusionadd@sixhi}% + \else\if\@tmpa G% + \edef\@@tmpa{F}% + \Put@Direct(0,-342){\set@fusionadd@sixhi}% + \else\if\@tmpa h% + \edef\@@tmpa{a}% + \Put@Direct(0,-342){\set@fusionadd@sixhi}% + \UnfavorableFusion{h}% + \else\if\@tmpa H% + \edef\@@tmpa{A}% + \Put@Direct(0,-342){\set@fusionadd@sixhi}% + \UnfavorableFusion{H}% + \else\if\@tmpa i% + \edef\@@tmpa{f}% + \Put@Direct(0,0){\set@fusionadd@sixhi}% + \UnfavorableFusion{i}% + \else\if\@tmpa I% + \edef\@@tmpa{F}% + \Put@Direct(0,0){\set@fusionadd@sixhi}% + \UnfavorableFusion{I}% + \else\if\@tmpa j% + \edef\@@tmpa{e}% + \Put@Direct(0,0){\set@fusionadd@sixhi}% + \ForbiddenFusion{j}% + \else\if\@tmpa J% + \edef\@@tmpa{E}% + \Put@Direct(0,0){\set@fusionadd@sixhi}% + \ForbiddenFusion{J}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +}% end of the macro \set@fusion@nonah +% \end{macrocode} +% \end{macro} +% +% \subsection{Inverse horizontal type} +% +% The macro |\set@fusion@nonahi| is an inner command contained +% in the definition of |\indanehi| and |\nonaheterohi|, where +% the macro is used for setting an additive +% or a fused ring at each bond (designated by |\@@tmpa|). The +% fused ring is typeset by the inner command |\set@fusionadd@sixh|. +% +% \begin{macro}{\set@fusion@nonahi} +% \changes{v2.00}{1998/12/5}{New command: \cs{set@fusion@nonahi}} +% \begin{macrocode} +\def\set@fusion@nonahi{% + \let\@@tmpa=\@tmpa + \let\@@tmpb=\@tmpb + \if\@tmpa a% + \let\@@tmpa=\@tmpa + \Put@Direct(0,0){\set@fusionadd@sixh}% + \else\if\@tmpa A% + \let\@@tmpa=\@tmpa + \Put@Direct(0,0){\set@fusionadd@sixh}% + \else\if\@tmpa b% + \let\@@tmpa=\@tmpa + \Put@Direct(0,0){\set@fusionadd@sixh}% + \else\if\@tmpa B% + \let\@@tmpa=\@tmpa + \Put@Direct(0,0){\set@fusionadd@sixh}% + \else\if\@tmpa c\relax + \XyMTeXWarning{Not-used fusion at bond `c'}% + \else\if\@tmpa C\relax% + \XyMTeXWarning{Not-used fusion at bond `C'}% + \else\if\@tmpa d% + \edef\@@tmpa{c}% + \Put@Direct(0,-342){\set@fusionadd@sixh}% + \UnfavorableFusion{d}% + \else\if\@tmpa D% + \edef\@@tmpa{C}% + \Put@Direct(0,-342){\set@fusionadd@sixh}% + \UnfavorableFusion{D}% + \else\if\@tmpa e% + \edef\@@tmpa{d}% + \Put@Direct(0,-342){\set@fusionadd@sixh}% + \else\if\@tmpa E% + \edef\@@tmpa{D}% + \Put@Direct(0,-342){\set@fusionadd@sixh}% + \else\if\@tmpa f% + \edef\@@tmpa{e}% + \Put@Direct(0,-342){\set@fusionadd@sixh}% + \else\if\@tmpa F% + \edef\@@tmpa{E}% + \Put@Direct(0,-342){\set@fusionadd@sixh}% + \else\if\@tmpa g% + \edef\@@tmpa{f}% + \Put@Direct(0,-342){\set@fusionadd@sixh}% + \else\if\@tmpa G% + \edef\@@tmpa{F}% + \Put@Direct(0,-342){\set@fusionadd@sixh}% + \else\if\@tmpa h% + \edef\@@tmpa{a}% + \Put@Direct(0,-342){\set@fusionadd@sixh}% + \UnfavorableFusion{h}% + \else\if\@tmpa H% + \edef\@@tmpa{A}% + \Put@Direct(0,-342){\set@fusionadd@sixh}% + \UnfavorableFusion{H}% + \else\if\@tmpa i% + \edef\@@tmpa{f}% + \Put@Direct(0,0){\set@fusionadd@sixh}% + \UnfavorableFusion{i}% + \else\if\@tmpa I% + \edef\@@tmpa{F}% + \Put@Direct(0,0){\set@fusionadd@sixh}% + \UnfavorableFusion{I}% + \else\if\@tmpa j% + \edef\@@tmpa{e}% + \Put@Direct(0,0){\set@fusionadd@sixh}% + \ForbiddenFusion{j}% + \else\if\@tmpa J% + \edef\@@tmpa{E}% + \Put@Direct(0,0){\set@fusionadd@sixh}% + \ForbiddenFusion{J}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +}% end of the macro \set@fusion@nonahi +% \end{macrocode} +% \end{macro} +% +% \subsection{Truncation for two or more atoms} +% +% The macros |SetTwoAtoms| and |SetTwoAtomx| are user commands for +% truncating a vertex to accommodate two or more atoms. +% +% \begin{macro}{SetTwoAtoms} +% \changes{v5.01}{2013/03/22}{New command: \cs{SetTwoAtoms}} +% \begin{macrocode} +\def\SetTwoAtoms#1{\setbox0=\hbox{#1}% +{\white \rule{\wd0}{\ht0}}\kern-\wd0{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{SetTwoAtomx} +% \changes{v5.01}{2013/04/06}{New command: \cs{SetTwoAtomx}} +% \begin{macrocode} +\def\SetTwoAtomx#1{{\setbox0=\hbox{#1}% +\@tempdimd=\wd0 \advance\@tempdimd by8\unitlength% +\@tempdime=\ht0 \advance\@tempdime by8\unitlength% +\kern-4\unitlength{\white \rule[-4\unitlength]{\@tempdimd}{\@tempdime}}% +\kern-\@tempdimd{#1}}} +% \end{macrocode} +% \end{macro} +% +% \subsection{Original Setting} +% +% \begin{macro}{originalsetting} +% \begin{macrocode} +\originalpicture%initial setting +%</chemstr> +% \end{macrocode} +% \end{macro} +% +% \Finale +% +\endinput diff --git a/Master/texmf-dist/source/latex/xymtex/base/chemstr.ins b/Master/texmf-dist/source/latex/xymtex/base/chemstr.ins new file mode 100644 index 00000000000..374b426a158 --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/chemstr.ins @@ -0,0 +1,62 @@ +\def\batchfile{chemstr.ins} +\input docstrip.tex +\preamble + +This is a generated file. + +Copyright 1996, 1998, 2001, 2002, 2004, 2005, 2006, 2009, 2010, 2011, 2013 by Shinsaku Fujita +all rights reserved. +This style file is created for drawing chemical structural formulas +This style file is to be contained in the ``xymtex'' directory which +is an input directory for TeX. + +This file is part of the XyMTeX system. +======================================= + +Old Versions: +Version 1.01 Released on August 16, 1996 +Version 1.02 Released on October 31, 1998 (private version) +Version 2.00 Released on December 25, 1998 +Version 2.01 Released on June 20, 2001 (private version) +Version 3.00 Released on April 30, 2002 +Version 4.00 Released on May 30, 2002 (private version) +Version 4.01 Released on August 30, 2004 +Version 4.01a Released on November 11, 2004 +Version 4.02 Released on December 20, 2004 +Version 4.03 Released on July 20, 2005 +Version 4.03b Released on September 5, 2006 +Version 4.04a Released on July 7, 2009 +Version 5.00 Released on October 01, 2010 +Version 5.01b Released on February 24, 2011 +Version 5.01 Released on March 22, 2013 + +The Present Version: +Version 5.01 Released on June 19, 2013 + +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 chemstr.dtx and chemstr.ins +and the derived file chemstr.sty. + +======================================= + +\endpreamble + +\keepsilent + +\generateFile{chemstr.drv}{t}{% + \from{chemstr.dtx}{driver}} + +\generateFile{chemstr.sty}{t}{% + \from{chemstr.dtx}{chemstr}} + +\endinput diff --git a/Master/texmf-dist/source/latex/xymtex/base/doins.bat b/Master/texmf-dist/source/latex/xymtex/base/doins.bat new file mode 100755 index 00000000000..96a60aed40c --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/doins.bat @@ -0,0 +1,14 @@ +platex aliphat.ins +platex carom.ins +platex ccycle.ins +platex chemist.ins +platex chemstr.ins +platex hcycle.ins +platex hetarom.ins +platex hetaromh.ins +platex locant.ins +platex lowcycle.ins +platex polymers.ins +platex methylen.ins +platex fusering.ins +platex sizeredc.ins diff --git a/Master/texmf-dist/source/latex/xymtex/base/fusering.dtx b/Master/texmf-dist/source/latex/xymtex/base/fusering.dtx new file mode 100644 index 00000000000..1d7facf5839 --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/fusering.dtx @@ -0,0 +1,4597 @@ +% \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} +%</driver> +% \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 * +% ********************************** +% +% <Six-membered fused ring units> +% \sixfusev \@sixfusev \sixfuseposv +% \sixfusevi \@sixfusevi \sixfuseposvi +% \sixfuseh \@sixfuseh \sixfuseposh +% \sixfusehi \@sixfusehi \sixfuseposhi +% +% <Five-membered fused ring units> +% \fivefusev \@fivefusev \fivefuseposv +% \fivefusevi \@fivefusevi \fivefuseposvi +% \fivefuseh \@fivefuseh \fivefuseposh +% \fivefusehi \@fivefusehi \fivefuseposhi +% +% <Four-membered fused ring units> +% \fourfuse \@fourfuse \fourfusepos +% +% <Three-membered fused ring units> +% \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 +%</fusering> +% \end{macrocode} +% \end{macro} +% +% \Finale +% +\endinput diff --git a/Master/texmf-dist/source/latex/xymtex/base/fusering.ins b/Master/texmf-dist/source/latex/xymtex/base/fusering.ins new file mode 100644 index 00000000000..c12b5e9e3b3 --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/fusering.ins @@ -0,0 +1,53 @@ +\def\batchfile{fusering.ins} +\input docstrip.tex +\preamble + +This is a generated file. + +Copyright 1998,2001,2002,2004,2010 by Shinsaku Fujita +all rights reserved. +This style file is created for drawing chemical structural formulas +This style file is to be contained in the ``xymtex'' directory which +is an input directory for TeX. + +This file is part of the XyMTeX system. +======================================= + +Old Versions: +Version 1.02 Released on October 31, 1998 (private version) +Version 2.00 Released on December 25, 1998 +Version 2.01 Released on June 20, 2001 (private version) +Version 3.00 Released on April 30, 2002 +Version 4.00 Released on May 30, 2002 (private version) +Version 4.01 Released on August 30, 2004 + +The Present Version: +Version 5.00 Released on October 01, 2010 + +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. + +======================================= + +\endpreamble + +\keepsilent + +\generateFile{fusering.drv}{t}{% + \from{fusering.dtx}{driver}} + +\generateFile{fusering.sty}{t}{% + \from{fusering.dtx}{fusering}} + +\endinput diff --git a/Master/texmf-dist/source/latex/xymtex/base/hcycle.dtx b/Master/texmf-dist/source/latex/xymtex/base/hcycle.dtx new file mode 100644 index 00000000000..87909359c34 --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/hcycle.dtx @@ -0,0 +1,3897 @@ +% \iffalse meta-comment +%% File: hcycle.dtx +% +% Copyright 1993,1996,1998,2001,2002,2004,2010,2013 by Shinsaku Fujita +% +% This file is part of XyMTeX system. +% ------------------------------------- +% +% This file is a successor to: +% +% hcycle.sty +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 1.00} +% \typeout{ -- Released December 1, 1993 by Shinsaku Fujita} +% Copyright (C) 1993 by Shinsaku Fujita, all rights reserved. +% +% This file is a part of the macro package ``XyMTeX'' which has been +% designed for typesetting chemical structural formulas. +% +% This file is to be contained in the ``xymtex'' directory which is +% an input directory for TeX. It is a LaTeX optional style file and +% should be used only within LaTeX, because several macros of the file +% are based on LaTeX commands. +% +% For the review of XyMTeX, see +% (1) Shinsaku Fujita, ``Typesetting structural formulas with the text +% formatter TeX/LaTeX'', Computers and Chemistry, in press. +% The following book deals with an application of TeX/LaTeX to +% preparation of manuscripts of chemical fields: +% (2) Shinsaku Fujita, ``LaTeX for Chemists and Biochemists'' +% Tokyo Kagaku Dozin, Tokyo (1993) [in Japanese]. +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% The Current Maintainer of this work is Shinsaku Fujita. +% +% This work consists of the files hcycle.dtx and hcycle.ins +% and the derived file hcycle.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{hcycle} +% \def\versi@ndate{December 01, 1993} +% \def\versi@nno{ver1.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hcycle} +% \def\versi@ndate{August 16, 1996} +% \def\versi@nno{ver1.01} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hcycle} +% \def\versi@ndate{October 31, 1998} +% \def\versi@nno{ver1.02} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hcycle} +% \def\versi@ndate{December 25, 1998} +% \def\versi@nno{ver2.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hcycle} +% \def\versi@ndate{June 20, 2001} +% \def\versi@nno{ver2.01} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hcycle} +% \def\versi@ndate{April 30, 2002} +% \def\versi@nno{ver3.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hcycle} +% \def\versi@ndate{May 30, 2002} +% \def\versi@nno{ver4.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hcycle} +% \def\versi@ndate{August 30, 2004} +% \def\versi@nno{ver4.01} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hcycle} +% \def\versi@ndate{October 01, 2010} +% \def\versi@nno{ver5.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hcycle} +% \def\versi@ndate{March 31, 2013} +% \def\versi@nno{ver5.01b} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \fi +% +% \CheckSum{3807} +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +% +% \setcounter{StandardModuleDepth}{1} +% +% \StopEventually{} +% \MakeShortVerb{\|} +% +% \iffalse +% \changes{v1.01}{1996/06/26}{first edition for LaTeX2e} +% \changes{v1.02}{1998/10/31}{revised edition for LaTeX2e} +% \changes{v2.00}{1998/12/25}{enhanced edition for LaTeX2e} +% \changes{v2.01}{2001/6/20}{Command for Sugars} (private version) +% \changes{v3.00}{2002/4/30}{Command for Sugars} +% \changes{v4.00}{2002/05/30}{PostScript output and ShiftPicEnv} +% \changes{v4.01}{2004/08/30}{Minor additions} +% \changes{v5.00}{2010/10/01}{bond coloring and the LaTeX Project Public License} +% \changes{v5.01b}{2013/03/30}{Improvement of this documentation} +% \changes{v5.01bb}{2013/03/31}{\cs{pyranosew} etc. added} +% \changes{v5.01}{2013/06/25}{\cs{sixsugarhw} etc. added. Wavy bonds added} +% \fi +% +% \iffalse +%<*driver> +\NeedsTeXFormat{pLaTeX2e} +% \fi +\ProvidesFile{hcycle.dtx}[2013/06/25 v5.01 XyMTeX{} package file] +% \iffalse +\documentclass{ltxdoc} +\GetFileInfo{hcycle.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{Further Hetrocycles by {\sffamily hcycle.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{hcycle.dtx} +\end{document} +%</driver> +% \fi +% +% \section{Introduction}\label{hcycle:intro} +% +% \subsection{Options for {\sffamily docstrip}} +% +% \DeleteShortVerb{\|} +% \begin{center} +% \begin{tabular}{|l|l|} +% \hline +% \emph{option} & \emph{function}\\ \hline +% hcycle & hcycle.sty \\ +% driver & driver for this dtx file \\ +% \hline +% \end{tabular} +% \end{center} +% \MakeShortVerb{\|} +% +% \subsection{Version Information} +% +% \begin{macrocode} +%<*hcycle> +\typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 5.01} +\typeout{ -- Released June 25, 2013 by Shinsaku Fujita} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\j@urnalname{hcycle} +\def\versi@ndate{June 25, 2013} +\def\versi@nno{ver5.01} +\def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\typeout{XyMTeX Macro File `\j@urnalname' (\versi@nno) <\versi@ndate>% +\space[\copyrighth@lder]} +% \end{macrocode} +% +% \section{List of commands for hcycle.sty} +% +% \begin{verbatim} +% ******************************** +% * hcycle.sty: list of commands * +% ******************************** +% +% <Convention for bond-setting> +% +% \@pyrana +% \@pyranb +% \@pyranbb +% \@pyranbB +% \@pyranbC +% \@pyranc +% +% <Pyranose and Furanose> +% +% construction: +% \pyranose \@pyranose +% \Pyranose \@Pyranose +% \furanose \@furanose +% \Furanose \@Furanose +% +% \pyranosew \@pyranosew +% \Pyranosew \@Pyranosew +% \furanosew \@furanosew +% \Furanosew \@Furanosew +% +% adjustment: +% \ylpyranoseposition +% \ylfuranoseposition +% +% <Six-membered Sugars> +% large dimension: +% (construction) +% \SixSugarh \@Six@Sugarh \@Six@@Sugarh \@SixSugarh +% +% (adjustment) +% \ylSixSugarhposition \test@vrtx@SixSugarh +% \set@skel@Sugarhbond \set@hetatom@Sugarh +% +% (bond) +% \Sugarhskbonda \Sugarhskbondc \Sugarhskbondd +% \Sugarhskbondb \Sugarhskbonde \Sugarhskbondf +% +% \Sugarhbonda \Sugarhbondf \Sugarhbondc +% \Sugarhbondd \Sugarhbonde \Sugarhbondb +% +% normal dimension: +% (construction) +% \sixsugarh \@six@sugarh \@six@@sugarh \@sixsugarh +% \sixsugarhw \@six@sugarhw +% +% (adjustment) +% \set@skel@sugarhbond \set@hetatom@sugarh +% +% (bond) +% \sugarhskbonda \sugarhskbondc \sugarhskbondd +% \sugarhskbondb \sugarhskbonde \sugarhskbondf +% +% \sugarhbonda \sugarhbondf \sugarhbondc +% \sugarhbondd \sugarhbonde \sugarhbondb +% +% <Five-membered Sugars> +% +% large dimension: +% (construction) +% \FiveSugarh \@Five@Sugarh \@Five@@Sugarh \@FiveSugarh +% +% (adjustment) +% \ylFiveSugarhposition +% \set@hteatom@FiveSugarh +% +% (bond) +% \fSugarhskbondd \fSugarhskbonde +% +% \fSugarhbondd \fSugarhbonde +% +% normal dimension: +% (construction) +% \fivesugarh \@five@sugarh \@five@@sugarh \@fivesugarh +% \fivesugarhw \@five@sugarhw +% +% (adjustment) +% \ylfiveSugarhposition +% \set@hteatom@fivesugarh +% +% (bond) +% \fsugarhskbondd \fsugarhskbonde +% +% \fsugarhbondd \fsugarhbonde +% +% <Applications> +% \cyclitol \@cyclitol +% \Cyclitol \@Cyclitol +% +% +% \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 hcycle.sty} for the present case). Hence, the combination +% of |\input| and |\@ifundefined| is used to crossload sty +% files ({\sf chemstr.sty} for the present case) in place of the +% |\RequirePackage| command of \LaTeXe{}. +% +% \begin{macrocode} +% ************************* +% * input of basic macros * +% ************************* +\@ifundefined{setsixringv}{\input chemstr.sty\relax}{} +\unitlength=0.1pt +% \end{macrocode} +% +% \section{Pyranoses and Furanoses} +% \subsection{Macros for setting substituents} +% +% Macros |\@pyrana| to |\@pyranc| are used to set substituents +% on each position of a pyranose and furanose. Note that +% comments (conerning locant numbers) on the end of each row have +% lost the exact meaning, +% since such a command moiety is used in many macros after copying. +% +% \begin{macro}{\@pyrana} +% \begin{macro}{\@pyranb} +% \begin{macro}{\@pyranbb} +% \begin{macro}{\@pyranbB} +% \begin{macro}{\@pyranc} +% \begin{macro}{\@pyranbC} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.01}{2001/6/20}{Adding \cs{\@pyranbC}} +% \changes{v5.01}{2013/6/25}{Adding wavy bonds} +% \begin{macrocode} +% ************************************************** +% * setting substituents for pyranose and furanose * +% ************************************************** +% %%%%%%%%%%%%%%% +% % subst. on 1 % +% %%%%%%%%%%%%%%% +\newif\if@clipping \@clippingfalse +\def\@pyrana{% + \if@clipping%clipping + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=-10 + \yl@ydiff=30 + \Put@Line(45,0)(1,0){80}% single bond at 1 + \putratom{130}{-30}{\@memberb}% right type + \else\if\@tmpc a%(a) alpha + \yl@xdiff=32 + \yl@ydiff=72 + \Put@Line(0,-45)(0,-1){73}% single bond at 1 alpha (down) + \putratom{-32}{-190}{\@memberb}% right type + \else\if\@tmpc b%(e) beta + \yl@xdiff=32 + \yl@ydiff=-12 + \Put@Line(0,45)(0,1){73}% single bond at 1 beta (up) + \putratom{-32}{130}{\@memberb}% right type + \else\if\@tmpc A% alpha + \yl@xdiff=-10 + \yl@ydiff=60 + \Put@Line(25,-25)(1,-1){100}% single bond at 1 + \putratom{130}{-180}{\@memberb}% right type + \else\if\@tmpc B% beta + \yl@xdiff=-10 + \yl@ydiff=10 + \Put@Line(25,25)(1,1){100}% single bond at 1 + \putratom{130}{110}{\@memberb}% right type + \fi\fi\fi\fi\fi% + \else \if\@tmpb D%double bond + \yl@xdiff=-10 + \yl@ydiff=30 + \Put@Line(30,-15)(1,0){90}% double bond at 1 + \Put@Line(30,15)(1,0){90}% double bond at 1 + \putratom{130}{-30}{\@memberb}% right type +%2013/06/25 + \else\if\@tmpb U%(U) alpha undefined + \yl@xdiff=-10\relax + \yl@ydiff=30\relax + {% + \WaveBonds% + \Put@Line(25,0)(1,0){100}% % wavy bond at 1 + }% + \putratom{130}{-30}{\@memberb}% right type +% + \else% + \yl@xdiff=-10 + \yl@ydiff=30 + \Put@Line(45,0)(1,0){90}% single bond at 1 + \putratom{130}{-30}{\@memberb}% right type + \fi + \fi\fi + \else + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=-10 + \yl@ydiff=30 + \Put@Line(0,0)(1,0){120}% single bond at 1 + \putratom{130}{-30}{\@memberb}% right type + \else\if\@tmpc a%(a) alpha + \yl@xdiff=32 + \yl@ydiff=72 + \Put@Line(0,0)(0,-1){118}% single bond at 1 alpha (down) + \putratom{-32}{-190}{\@memberb}% right type + \else\if\@tmpc b%(e) beta + \yl@xdiff=32 + \yl@ydiff=-12 + \Put@Line(0,0)(0,1){118}% single bond at 1 beta (up) + \putratom{-32}{130}{\@memberb}% right type + \else\if\@tmpc A% alpha + \yl@xdiff=-10 + \yl@ydiff=60 + \Put@Line(0,0)(1,-1){120}% single bond at 1 + \putratom{130}{-180}{\@memberb}% right type + \else\if\@tmpc B% beta + \yl@xdiff=-10 + \yl@ydiff=10 + \Put@Line(0,0)(1,1){120}% single bond at 1 + \putratom{130}{110}{\@memberb}% right type + \fi\fi\fi\fi\fi% + \else \if\@tmpb D%double bond + \yl@xdiff=-10 + \yl@ydiff=30 + \Put@Line(0,-15)(1,0){120}% double bond at 1 + \Put@Line(0,15)(1,0){120}% double bond at 1 + \putratom{130}{-30}{\@memberb}% right type +%2013/06/25 + \else\if\@tmpb U%(U) alpha undefined + \yl@xdiff=-10\relax + \yl@ydiff=30\relax + {% + \WaveBonds% + \Put@Line(0,0)(1,0){120}% % wavy bond at 1 + }% + \putratom{130}{-30}{\@memberb}% right type +% + \else% + \yl@xdiff=-10 + \yl@ydiff=30 + \Put@Line(0,0)(1,0){120}% single bond at 1 + \putratom{130}{-30}{\@memberb}% right type + \fi\fi\fi + \fi +}% +% \end{macrocode} +% +% \changes{v1.02}{1998/10/25}{\cs{@pyranb} is divided into +% \cs{@pyranb}, \cs{@pyranbb} and \cs{@pyranbB}} +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%% +% % subst. on 2,3,5 % +% %%%%%%%%%%%%%%%%%%% +% %%%%%%%%%%%%%%% +% % subst. on 2 % +% %%%%%%%%%%%%%%% +\def\@pyranb{% + \if@clipping%clipping + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=-10 + \yl@ydiff=60 + \Put@Line(45,-45)(1,-1){100}% single bond at 2 + \putratom{130}{-180}{\@memberb}% right type + \else\if\@tmpc a%(a) alpha + \yl@xdiff=32 + \yl@ydiff=72 + \Put@Line(0,-45)(0,-1){73}% single bond alpha (down) + \putlratom{-32}{-190}{\@memberb}% left & right type + \else\if\@tmpc b%(b) beta + \yl@xdiff=32 + \yl@ydiff=-12 + \Put@Line(0,45)(0,1){73}% single bond beta (up) + \putlratom{-32}{130}{\@memberb}% left & right type + \else\if\@tmpc A%(A) beta + \yl@xdiff=10 + \yl@ydiff=40 + \Put@Line(40,-40)(1,-1){100}% single bond at 2 + \putratom{130}{-180}{\@memberb}% right type + \else\if\@tmpc B%(B) beta + \yl@xdiff=-10 + \yl@ydiff=40 + \Put@Line(-40,-40)(-1,-1){100}% single bond at 2 + \putlatom{-130}{-180}{\@memberb}% left type + \fi\fi\fi\fi\fi% + \else \if\@tmpb D%double bond: Added by SF 1998/10/25 + \yl@xdiff=-10 + \yl@ydiff=60 + \Put@Line(15,-45)(1,-1){100}% double bond at 2 + \Put@Line(45,-15)(1,-1){100}% double bond at 2 + \putratom{130}{-180}{\@memberb}% right type +%2013/06/25 + \else\if\@tmpb U%(U) alpha undefined + \yl@xdiff=-10\relax + \yl@ydiff=40\relax + {% + \WaveBonds% + \Put@Line(40,-40)(1,-1){90}% % wavy bond at 2 + }% + \putratom{130}{-180}{\@memberb}% right type +% + \else% + \yl@xdiff=-10 + \yl@ydiff=10 + \Put@Line(45,45)(1,1){100}% single bond at 1 + \putratom{130}{110}{\@memberb}% left type + \fi\fi\fi + \else + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=-10 + \yl@ydiff=60 + \Put@Line(0,0)(1,-1){120}% single bond at 1 + \putratom{130}{-180}{\@memberb}% left type + \else\if\@tmpc a%(a) alpha + \yl@xdiff=32 + \yl@ydiff=72 + \Put@Line(0,0)(0,-1){118}% single bond alpha (down) + \putlratom{-32}{-190}{\@memberb}% left & right type + \else\if\@tmpc b%(b) beta + \yl@xdiff=32 + \yl@ydiff=-12 + \Put@Line(0,0)(0,1){118}% single bond beta (up) + \putlratom{-32}{130}{\@memberb}% left & right type + \fi\fi\fi%\fi\fi% + \else \if\@tmpb D%double bond: Added by SF 1998/10/25 + \yl@xdiff=-10 + \yl@ydiff=60 + \Put@Line(-15,-15)(1,-1){120}% double bond at 1 + \Put@Line(0,15)(1,-1){120}% double bond at 1 + \putratom{130}{-180}{\@memberb}% right type +%2013/06/25 + \else\if\@tmpb U%(U) alpha undefined + \yl@xdiff=-10\relax + \yl@ydiff=60\relax + {% + \WaveBonds% + \Put@Line(0,0)(1,-1){120}% % wavy bond at 2 + }% + \putratom{130}{-180}{\@memberb}% right type +% + \else% + \yl@xdiff=-10 + \yl@ydiff=10 + \Put@Line(0,0)(1,1){120}% single bond at 1 + \putratom{130}{110}{\@memberb}% left type + \fi\fi\fi + \fi +}% +% \end{macrocode} +% +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 3 % +% %%%%%%%%%%%%%%% +\def\@pyranbb{% + \if@clipping%clipping + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=-10 + \yl@ydiff=60 + \Put@Line(45,-45)(1,-1){100}% single bond at 3 + \putratom{130}{-180}{\@memberb}% right type + \else\if\@tmpc a%(a) alpha + \yl@xdiff=32 + \yl@ydiff=72 + \Put@Line(0,-45)(0,-1){73}% single bond alpha (down) + \putlratom{-32}{-190}{\@memberb}% left & right type + \else\if\@tmpc b%(b) beta + \yl@xdiff=32 + \yl@ydiff=-12 + \Put@Line(0,45)(0,1){73}% single bond beta (up) + \putlratom{-32}{130}{\@memberb}% left & right type + \else\if\@tmpc A%(A) beta% + \yl@xdiff=-10 + \yl@ydiff=60 + \Put@Line(45,-45)(1,-1){100}% single bond at 3 + \putratom{130}{-180}{\@memberb}% right type + \else\if\@tmpc B%(B) beta + \yl@xdiff=10 + \yl@ydiff=60 + \Put@Line(-45,-45)(-1,-1){100}% single bond at 3 + \putlatom{-130}{-180}{\@memberb}% left type + \fi\fi\fi\fi\fi% + \else \if\@tmpb D%double bond: Added by SF 1998/10/25 + \yl@xdiff=20 + \yl@ydiff=60 + \Put@Line(-15,-45)(-1,-1){100}% double bond at 3 + \Put@Line(-45,-15)(-1,-1){100}% double bond at 3 + \putlatom{-130}{-180}{\@memberb}%left type +%2013/06/25 + \else\if\@tmpb U%(U) alpha undefined + \yl@xdiff=-10\relax + \yl@ydiff=60\relax + {% + \WaveBonds% + \Put@Line(-40,-40)(-1,-1){90}% % wavy bond at 2 + }% + \putlatom{-130}{-180}{\@memberb}% left type +% + \else% + \yl@xdiff=10 + \yl@ydiff=60 + \Put@Line(-45,-45)(-1,-1){100}% single bond at 1 + \putlatom{-130}{-180}{\@memberb}% left type + \fi\fi\fi + \else + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=-10 + \yl@ydiff=60 + \Put@Line(0,0)(1,-1){120}% single bond at 1 + \putratom{130}{-180}{\@memberb}% left type + \else\if\@tmpc a%(a) alpha + \yl@xdiff=32 + \yl@ydiff=72 + \Put@Line(0,0)(0,-1){118}% single bond alpha (down) + \putlratom{-32}{-190}{\@memberb}% left & right type + \else\if\@tmpc b%(b) beta + \yl@xdiff=32 + \yl@ydiff=-12 + \Put@Line(0,0)(0,1){118}% single bond beta (up) + \putlratom{-32}{130}{\@memberb}% left & right type + \fi\fi\fi%\fi\fi% + \else \if\@tmpb D%double bond: Added by SF 1998/10/25 + \yl@xdiff=20 + \yl@ydiff=60 + \Put@Line(15,-15)(-1,-1){120}% double bond at 1 + \Put@Line(0,15)(-1,-1){120}% double bond at 1 + \putlatom{-130}{-180}{\@memberb}%left type +%2013/06/25 + \else\if\@tmpb U%(U) alpha undefined + \yl@xdiff=-10\relax + \yl@ydiff=60\relax + {% + \WaveBonds% + \Put@Line(0,0)(-1,-1){120}% % wavy bond at 2 + }% + \putlatom{-130}{-180}{\@memberb}% left type +% + \else% + \yl@xdiff=10 + \yl@ydiff=60 + \Put@Line(0,0)(-1,-1){120}% single bond at 1 + \putlatom{-130}{-180}{\@memberb}% left type + \fi\fi\fi + \fi +}% +% \end{macrocode} +% +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 5 % +% %%%%%%%%%%%%%%% +\def\@pyranbB{% + \if@clipping%clipping + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=10 + \yl@ydiff=-60 + \Put@Line(-45,45)(-1,1){100}% single bond at 5 + \putlatom{-130}{130}{\@memberb}% left type + \else\if\@tmpc a%(a) alpha + \yl@xdiff=32 + \yl@ydiff=72 + \Put@Line(0,-45)(0,-1){73}% single bond alpha (down) + \putlratom{-32}{-190}{\@memberb}% left & right type + \else\if\@tmpc b%(b) beta + \yl@xdiff=32 + \yl@ydiff=-12 + \Put@Line(0,45)(0,1){73}% single bond beta (up) + \putlratom{-32}{130}{\@memberb}% left & right type + \else\if\@tmpc A%(A) beta + \yl@xdiff=10 + \yl@ydiff=-60 + \Put@Line(-45,45)(-1,1){100}% single bond at 5 + \putlatom{-130}{130}{\@memberb}% left type + \else\if\@tmpc B%(B) beta + \yl@xdiff=-10 + \yl@ydiff=60 + \Put@Line(45,45)(1,1){100}% single bond at 5 + \putratom{130}{130}{\@memberb}% left type + \fi\fi\fi\fi\fi% + \else \if\@tmpb D%double bond: Added by SF 1998/10/25 + \yl@xdiff=0 + \yl@ydiff=-20 + \Put@Line(-15,45)(-1,1){100}% double bond at 5 + \Put@Line(-45,15)(-1,1){100}% double bond at 5 + \putlatom{-120}{140}{\@memberb}%left type +%2013/06/25 + \else\if\@tmpb U%(U) alpha undefined + \yl@xdiff=10\relax + \yl@ydiff=-60\relax + {% + \WaveBonds% + \Put@Line(-40,40)(-1,1){90}% % wavy bond at 5 + }% + \putlatom{-130}{130}{\@memberb}% left type +% + \else% + \yl@xdiff=10 + \yl@ydiff=-60 + \Put@Line(-45,45)(-1,1){100}% single bond at 5 + \putlatom{-130}{130}{\@memberb}% left type + \fi\fi\fi + \else + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=-10 + \yl@ydiff=60 + \Put@Line(0,0)(1,-1){120}% single bond at 5 + \putratom{130}{-180}{\@memberb}% left type + \else\if\@tmpc a%(a) alpha + \yl@xdiff=32 + \yl@ydiff=72 + \Put@Line(0,0)(0,-1){118}% single bond alpha (down) + \putlratom{-32}{-190}{\@memberb}% left & right type + \else\if\@tmpc b%(b) beta + \yl@xdiff=32 + \yl@ydiff=-12 + \Put@Line(0,0)(0,1){118}% single bond beta (up) + \putlratom{-32}{130}{\@memberb}% left & right type + \fi\fi\fi%\fi\fi% + \else \if\@tmpb D%double bond: Added by SF 1998/10/25 + \yl@xdiff=0 + \yl@ydiff=-20 + \Put@Line(15,15)(-1,1){120}% double bond at 5 + \Put@Line(0,-15)(-1,1){120}% double bond at 5 + \putlatom{-120}{140}{\@memberb}%left type +%2013/06/25 + \else\if\@tmpb U%(U) alpha undefined + \yl@xdiff=10\relax + \yl@ydiff=-60\relax + {% + \WaveBonds% + \Put@Line(0,0)(-1,1){120}% % wavy bond at 5 + }% + \putlatom{-130}{130}{\@memberb}% left type +% + \else% + \yl@xdiff=10 + \yl@ydiff=-20 + \Put@Line(0,0)(-1,1){120}% single bond at 1 + \putlatom{-130}{140}{\@memberb}% left type + \fi\fi\fi + \fi +}% +% \end{macrocode} +% +% \changes{v1.02}{1998/10/31}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 4 % +% %%%%%%%%%%%%%%% +\def\@pyranc{% + \if@clipping%clipping + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=10 + \yl@ydiff=30 + \Put@Line(-45,0)(-1,0){80}% single bond at 4 + \putlatom{-130}{-30}{\@memberb}% left type + \else\if\@tmpc a%(a) alpha + \yl@xdiff=-32 + \yl@ydiff=72 + \Put@Line(0,-45)(0,-1){80}% single bond at 4 + \putlatom{32}{-190}{\@memberb}% left type + \else\if\@tmpc b%(e) beta + \yl@xdiff=-32 + \yl@ydiff=-12 + \Put@Line(0,45)(0,1){80}% single bond at 4 beta (up) + \putlatom{32}{130}{\@memberb}% left type + \else\if\@tmpc A% alpha + \yl@xdiff=10 + \yl@ydiff=60 + \Put@Line(-30,-30)(-1,-1){100}% single bond at 4 + \putlatom{-130}{-180}{\@memberb}% left type + \else\if\@tmpc B% beta + \yl@xdiff=10 + \yl@ydiff=10 + \Put@Line(-30,30)(-1,1){100}% single bond at 4 + \putlatom{-130}{110}{\@memberb}% left type + \fi\fi\fi\fi\fi% + \else \if\@tmpb D%double bond + \yl@xdiff=10 + \yl@ydiff=30 + \Put@Line(-30,-15)(-1,0){100}% double bond at 4 + \Put@Line(-30,15)(-1,0){100}% double bond at 4 + \putlatom{-130}{-30}{\@memberb}% left type +%2013/06/25 + \else\if\@tmpb U%(U) alpha undefined + \yl@xdiff=10\relax + \yl@ydiff=30\relax + {% + \WaveBonds% + \Put@Line(-30,0)(-1,0){100}% % wavy bond at 4 + }% + \putlatom{-130}{-30}{\@memberb}% left type +% + \else% + \yl@xdiff=10 + \yl@ydiff=30 + \Put@Line(-45,0)(-1,0){80}% single bond at 4 + \putlatom{-130}{-30}{\@memberb}% left type + \fi\fi\fi + \else + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=10 + \yl@ydiff=30 + \Put@Line(0,0)(-1,0){120}% single bond at 4 + \putlatom{-130}{-30}{\@memberb}% left type + \else\if\@tmpc a%(a) alpha + \yl@xdiff=-32 + \yl@ydiff=72 + \Put@Line(0,0)(0,-1){118}% single bond at 4 alpha (down) + \putlatom{32}{-190}{\@memberb}% left type + \else\if\@tmpc b%(e) beta + \yl@xdiff=-32 + \yl@ydiff=-12 + \Put@Line(0,0)(0,1){118}% single bond at 4 beta (up) + \putlatom{32}{130}{\@memberb}% left type + \else\if\@tmpc A% alpha + \yl@xdiff=10 + \yl@ydiff=60 + \Put@Line(0,0)(-1,-1){120}% single bond at 4 + \putlatom{-130}{-180}{\@memberb}% left type + \else\if\@tmpc B% beta + \yl@xdiff=10 + \yl@ydiff=10 + \Put@Line(0,0)(-1,1){120}% single bond at 4 + \putlatom{-130}{110}{\@memberb}% left type + \fi\fi\fi\fi\fi% + \else \if\@tmpb D%double bond + \yl@xdiff=10 + \yl@ydiff=30 + \Put@Line(0,-15)(-1,0){120}% double bond at 4 + \Put@Line(0,15)(-1,0){120}% double bond at 4 + \putlatom{-130}{-30}{\@memberb}% left type +%2013/06/25 + \else\if\@tmpb U%(U) alpha undefined + \yl@xdiff=10\relax + \yl@ydiff=30\relax + {% + \WaveBonds% + \Put@Line(0,0)(-1,0){120}% % wavy bond at 4 + }% + \putlatom{-130}{-30}{\@memberb}% left type +% + \else% + \yl@xdiff=10 + \yl@ydiff=30 + \Put@Line(0,0)(-1,0){120}% single bond at 4 + \putlatom{-130}{-30}{\@memberb}% left type + \fi\fi\fi + \fi +}% +% \end{macrocode} +% +% \changes{v2.01}{2001/06/20}{New command for SixSugar} +% \begin{macrocode} +% %%%%%%%%%%%%%%% +% % subst. on 6 % +% %%%%%%%%%%%%%%% +\def\@pyranbC{% + \if@clipping%clipping + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=5 + \yl@ydiff=5 + \Put@Line(45,45)(1,1){100}% single bond at 6 + \putratom{130}{140}{\@memberb}% left type + \else\if\@tmpc a%(a) alpha + \yl@xdiff=32 + \yl@ydiff=72 + \Put@Line(0,-45)(0,-1){73}% single bond alpha (down) + \putlratom{-32}{-190}{\@memberb}% left & right type + \else\if\@tmpc b%(b) beta + \yl@xdiff=32 + \yl@ydiff=-12 + \Put@Line(0,45)(0,1){73}% single bond beta (up) + \putlratom{-32}{130}{\@memberb}% left & right type + \else\if\@tmpc A%(A) + \yl@xdiff=5 + \yl@ydiff=5 + \Put@Line(45,45)(1,1){100}% single bond at 6 + \putratom{130}{140}{\@memberb}% right type + \else\if\@tmpc B%(B) + \yl@xdiff=5 + \yl@ydiff=-15 + \Put@Line(-45,45)(-1,1){100}% single bond at 6 + \putlatom{-130}{140}{\@memberb}% left type + \fi\fi\fi\fi\fi% + \else \if\@tmpb D%double bond: Added by SF 1998/10/25 + \yl@xdiff=0 + \yl@ydiff=-20 + \Put@Line(45,15)(1,1){100}% double bond at 6 + \Put@Line(15,45)(1,1){100}% double bond at 6 + \putratom{130}{140}{\@memberb}%right type +%2013/06/25 + \else\if\@tmpb U%(U) alpha undefined + \yl@xdiff=5\relax + \yl@ydiff=5\relax + {% + \WaveBonds% + \Put@Line(40,40)(1,1){90}% % wavy bond at 6 + }% + \putratom{130}{130}{\@memberb}% right type +% + \else% + \yl@xdiff=5 + \yl@ydiff=5 + \Put@Line(45,45)(1,1){100}% single bond at 6 + \putratom{130}{140}{\@memberb}% left type + \fi\fi\fi + \else + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=-10 + \yl@ydiff=60 + \Put@Line(0,0)(1,-1){120}% single bond at 6 + \putratom{130}{-180}{\@memberb}% left type + \else\if\@tmpc a%(a) alpha + \yl@xdiff=32 + \yl@ydiff=72 + \Put@Line(0,0)(0,-1){118}% single bond alpha (down) + \putlratom{-32}{-190}{\@memberb}% left & right type + \else\if\@tmpc b%(b) beta + \yl@xdiff=32 + \yl@ydiff=-12 + \Put@Line(0,0)(0,1){118}% single bond beta (up) + \putlratom{-32}{130}{\@memberb}% left & right type + \fi\fi\fi%\fi\fi% + \else \if\@tmpb D%double bond: Added by SF 1998/10/25 + \yl@xdiff=0 + \yl@ydiff=-20 + \Put@Line(15,-15)(1,1){120}% double bond at 6 + \Put@Line(0,15)(1,1){120}% double bond at 6 + \putratom{130}{140}{\@memberb}%right type +%2013/06/25 + \else\if\@tmpb U%(U) alpha undefined + \yl@xdiff=5\relax + \yl@ydiff=5\relax + {% + \WaveBonds% + \Put@Line(0,0)(1,1){120}% % wavy bond at 6 + }% + \putratom{130}{130}{\@memberb}% right type +% + \else% + \yl@xdiff=10 + \yl@ydiff=-20 + \Put@Line(0,0)(1,1){120}% single bond at 6 + \putratom{130}{140}{\@memberb}% right type + \fi\fi\fi + \fi +}% +%</hcycle> +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% +% \subsection{Pyranose derivatives} +% +% The standard skeleton of pyranose is selected +% to have the following locant numbers. +% +% \begin{verbatim} +% *********************** +% * pyranose derivative * +% *********************** +% +% The following numbering is adopted in this macro. +% +% 5 e 6 +% ----O +% d * * f +% the original point ===> 4 * * 1 +% (0,0) * * a +% c ----- +% 3 b 2 +% \end{verbatim} +% +% The macro |\pyranose| has an argument |SUBSLIST| as well as an optional +% argument |BONDLIST|. +% \begin{verbatim} +% +% \pyranose[BONDLIST]{SUBSLIST} +% +% \end{verbatim} +% +% The |BONDLIST| argument contains one or more +% characters selected from a to f, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% \begin{verbatim} +% +% BONDLIST = +% +% none : mother skeleton +% 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 +% +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% \begin{verbatim} +% +% SUBSLIST: list of substituents (max 5 substitution positions) +% +% for n = 1 to 5 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nSA : single bond (down) at n-atom (for n=1) +% nSB : single bond (up) at n-atom (for n=1) +% nSa : alpha single bond at n-atom +% nSb : beta single bond at n-atom +% +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \pyranose{1Sb==Cl;2Sa==F} +% \pyranose{1Sb==Cl;4Sa==F;2Sa==CH$_{3}$} +% \pyranose[a]{3Sb==OAc;4Sb==\lmoiety{MeO};5Sb==CH$_{2}$OAc} +% \end{verbatim} +% +% The definition of |\@pyranose| uses a picture environment, in which +% bonds are put directly, while subsituents are typset by using +% the macros |\@pyrana| to |\@pyranc| described above. +% \changes{v1.02}{1998/10/31}{Adding \cs{ylpyranoseposition}, \cs{if@ylsw}, +% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% +% \changes{v2.01}{2001/06/20}{The definition has been changed: +% the old \cs{pyranose} to \cs{pyranoseold}} +% \changes{v5.00}{2010/10/01}{For bond coloring} +% \begin{macro}{\pyranoseold} +% \begin{macro}{\@pyranoseold} +% \begin{macrocode} +%<*hcycleold> +\def\pyranoseold{\@ifnextchar[{\@pyranoseold}{\@pyranoseold[r]}} +\def\@pyranoseold[#1]#2{% +\@reset@ylsw% +\ylpyranoseposition{#2}% +\def\@@ylii{0}\def\@@yli{0}% +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(880,800)(-240,-400){pyranose}% +(240,400)%2002/4/30 by S. Fujita + \Put@Line(0,0)(3,5){120}% %bond 4-5 + \Put@Line(120,200)(1,0){252}% %bond 5-6 + \Put@Line(532,0)(-3,5){96}% %bond 1-6 + {\thicklines% + \Put@Line(0,0)(3,-5){120}% %bond 4-3 + \Put@Line(412,-200)(3,5){120}% %bond 2-1 + \Put@Line(120,-200)(1,0){292}}% %bond 3-2 + \putratom{382}{160}{O}% left type + % +\@tfor\member:=#1\do{% +\if\member r%no endcyclic double bonds +\else \if\member a% + \Put@Line(400,-150)(3,5){90}% %double bond 2-1 +\else \if\member b% + \Put@Line(150,-160)(1,0){232}% %double bond 3-2 +\else \if\member c% + \Put@Line(50,-12)(3,-5){90}% %double bond 4-3 +\else \if\member d% + \Put@Line(50,12)(3,5){90}% %double bond 4-5 +\else \if\member e% + \Put@Line(150,160)(1,0){232}% %double bond 5-6 +\else \if\member f% + \Put@Line(482,12)(-3,5){70}% %double bond 1-6 +\fi\fi\fi\fi\fi\fi\fi}% +% +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa%0 omit + \or\setBScolor{\Put@Direct(532,0){% + \if@clip \@clippingtrue \else \@clippingfalse\fi + \@pyrana}}% subst. on 1 + \or\setBScolor{\Put@Direct(412,-200){% + \if@eclip \@clippingtrue \else \@clippingfalse\fi + \@pyranb}}% subst. on 2 + \or\setBScolor{\Put@Direct(120,-200){% + \if@fclip \@clippingtrue \else \@clippingfalse\fi + \@pyranbb}}% subst. on 3 + \or\setBScolor{\Put@Direct(0,0){% + \if@aclip \@clippingtrue \else \@clippingfalse\fi + \@pyranc}}% subst. on 4 + \or\setBScolor{\Put@Direct(120,200){% + \if@bclip \@clippingtrue \else \@clippingfalse\fi + \@pyranbB}}% subst. on 5 + \or\setBScolor{\Put@Direct(412,200){% + \if@cclip \@clippingtrue \else \@clippingfalse\fi + \@pyranbC}}% subst. on 6%%added 2001/6/20 +\fi %end of ifcase +\fi\fi% +}% +\end{ShiftPicEnvB}% +}% %end of \pyranose macro +%</hcycleold> +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \changes{v2.01}{2001/06/20}{The new definition for \cs{pyranose}} +% +% \begin{macro}{\pyranose} +% \begin{macro}{\@pyranose} +% \begin{macrocode} +%<*hcycle> +\def\pyranose{\@ifnextchar[{\@pyranose}{\@pyranose[]}} +\def\@pyranose[#1]#2{\sixsugarh[#1]{6==O}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The front skeletal bonds of a pyranose ring are typeset with a bold line and wedged lines. +% \changes{v5.01}{2013/03/31}{added the definition for \cs{pyranosew}} +% +% \begin{macro}{\pyranosew} +% \begin{macro}{\@pyranosew} +% \begin{macrocode} +\def\pyranosew{\@ifnextchar[{\@pyranosew}{\@pyranosew[]}} +\def\@pyranosew[#1]#2{% +\sixsugarh[#1]{6==O;1s==\WedgeAsSubst(0,0)(-3,-5){120};4s==\WedgeAsSubst(0,0)(3,-5){120};% +3s==\PutBondLine(-17,0)(307,0){2.8pt}}{#2}[abc]} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% Pyranose derivatives of slightly large dimension can be +% drawn by the |\Pyranose| macro. +% +% \changes{v2.01}{2001/06/20}{New command: \cs{Pyranose}} +% +% \begin{macro}{\Pyranose} +% \begin{macro}{\@Pyranose} +% \begin{macrocode} +\def\Pyranose{\@ifnextchar[{\@Pyranose}{\@Pyranose[]}} +\def\@Pyranose[#1]#2{\SixSugarh[#1]{6==O}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The front skeletal bonds of a pyranose ring are typeset with a bold line and wedged lines. +% This command cannot be used in |\TeX|/|\LaTeX| mode. The PostScript mode or the PDF mode +% should be used. +% \changes{v5.01}{2013/03/31}{added the definition for \cs{Pyranosew}} +% +% \begin{macro}{\Pyranosew} +% \begin{macro}{\@Pyranosew} +% \begin{macrocode} +\def\Pyranosew{\@ifnextchar[{\@Pyranosew}{\@Pyranosew[]}} +\def\@Pyranosew[#1]#2{% +\SixSugarh[#1]{6==O;1s==\WedgeAsSubst(0,0)(-3,-5){153};4s==\WedgeAsSubst(0,0)(3,-5){153};% +3s==\PutBondLine(-17,0)(376,0){2.8pt}}{#2}[abc]} +%</hcycle> +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Furanose derivatives} +% +% The standard skeleton of furanose is selected +% to have the following locant numbers. +% +% \begin{verbatim} +% *********************** +% * furanose derivative * +% *********************** +% +% The following numbering is adopted in this macro. +% +% 5 +% O +% d * * e +% the original point ===> 4 * * 1 +% (0,0) * * a +% c ----- +% 3 b 2 +% +% \end{verbatim} +% +% The macro |\furanose| has an argument |SUBSLIST| as well as an optional +% argument |BONDLIST|. +% \begin{verbatim} +% \furanose[BONDLIST]{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one or more +% characters selected from a to e, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% \begin{verbatim} +% BONDLIST = +% +% none : mother skeleton +% 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 +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% \begin{verbatim} +% SUBSLIST: list of substituents (max 4 substitution positions) +% +% for n = 1 to 4 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nSA : single bond (down) at n-atom (for n=1) +% nSB : single bond (up) at n-atom (for n=1) +% nSa : alpha single bond at n-atom +% nSb : beta single bond at n-atom +%\end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \furanose{1Sa==Cl;2Sb==F} +% +% \end{verbatim} +% +% The definition of |\@furanose| uses a picture environment, in which +% bonds are put directly, while subsituents are typset by using +% the macros |\@pyrana| to |\@pyranc| described above. +% \changes{v1.02}{1998/10/31}{Adding \cs{ylfuranoseposition}, \cs{if@ylsw}, +% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v5.00}{2010/10/01}{For bond coloring} +% +% \begin{macro}{\furanoseold} +% \begin{macro}{\@furanoseold} +% \begin{macrocode} +%<*hcycleold> +\def\furanoseold{\@ifnextchar[{\@furanoseold}{\@furanoseold[r]}} +\def\@furanoseold[#1]#2{% +\@reset@ylsw% +\ylfuranoseposition{#2}% +\def\@@ylii{0}\def\@@yli{0}% +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(880,800)(-240,-400){furanose}% +(240,400)%2002/4/30 by S. Fujita + \Put@Line(0,0)(5,3){236}% %bond 4-5 + \Put@Line(532,0)(-5,3){236}% %bond 1-5 + {\thicklines% + \Put@Line(0,0)(3,-5){120}% %bond 4-3 + \Put@Line(412,-200)(3,5){120}% %bond 2-1 + \Put@Line(120,-200)(1,0){292}}% %bond 3-2 + \putratom{236}{130}{O}% left type +% +\@tfor\member:=#1\do{% +\if\member r%no endcyclic double bonds +\else \if\member a% + \Put@Line(400,-150)(3,5){80}% %double bond 2-1 +\else \if\member b% + \Put@Line(150,-160)(1,0){232}% %double bond 3-2 +\else \if\member c% + \Put@Line(50,-12)(3,-5){80}% %double bond 4-3 +\else \if\member d% + \Put@Line(50,0)(5,3){180}% %double bond 4-5 +\else \if\member e% + \Put@Line(482,0)(-5,3){180}% %double bond 1-5 +\fi\fi\fi\fi\fi\fi}% +% +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa%0 omit + \or\setBScolor{\Put@Direct(532,0){\@pyrana}}% subst. on 1 + \or\setBScolor{\Put@Direct(412,-200){\@pyranb}}% subst. on 2 + \or\setBScolor{\Put@Direct(120,-200){\@pyranbb}}% subst. on 3 + \or\setBScolor{\Put@Direct(0,0){\@pyranc}}% subst. on 4 +\fi%end of ifcase +\fi\fi% +}% +\end{ShiftPicEnvB}% +}% %end of \furanoseold macro +%</hcycleold> +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \changes{v2.01}{2001/06/20}{The new definition for \cs{furanose}} +% \begin{macro}{\furanose} +% \begin{macro}{\@furanose} +% \begin{macrocode} +%<*hcycle> +\def\furanose{\@ifnextchar[{\@furanose}{\@furanose[]}} +\def\@furanose[#1]#2{\fivesugarh[#1]{5==O}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The front skeletal bonds of a pyranose ring are typeset with a bold line and wedged lines. +% \changes{v5.01}{2013/03/31}{New command \cs{furanosew}} +% \begin{macro}{\furanosew} +% \begin{macro}{\@furanosew} +% \begin{macrocode} +\def\furanosew{\@ifnextchar[{\@furanosew}{\@furanosew[]}} +\def\@furanosew[#1]#2{% +\fivesugarh[#1]{5==O;1s==\WedgeAsSubst(0,0)(-3,-5){120};% +4s==\WedgeAsSubst(0,0)(3,-5){120};% +3s==\PutBondLine(-17,0)(307,0){2.8pt}}{#2}[abc]} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% Furanose derivatives of slightly large dimension can be +% drawn by the |\Furanose| macro. +% +% \changes{v2.01}{2001/06/20}{New command: \cs{Furanose}} +% +% \begin{macro}{\Furanose} +% \begin{macro}{\@Furanose} +% \begin{macrocode} +\def\Furanose{\@ifnextchar[{\@Furanose}{\@Furanose[]}} +\def\@Furanose[#1]#2{\FiveSugarh[#1]{5==O}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The front skeletal bonds of a pyranose ring are typeset with a bold line and wedged lines. +% This command cannot be used in |\TeX|/|\LaTeX| mode. The PostScript mode or the PDF mode +% should be used. +% \changes{v5.01}{2013/03/31}{New command \cs{Furanosew}} +% \begin{macro}{\Furanosew} +% \begin{macro}{\@Furanosew} +% \begin{macrocode} +\def\Furanosew{\@ifnextchar[{\@Furanosew}{\@Furanosew[]}} +\def\@Furanosew[#1]#2{% +\FiveSugarh[#1]{5==O;1s==\WedgeAsSubst(0,0)(-3,-5){153};% +4s==\WedgeAsSubst(0,0)(3,-5){153};% +3s==\PutBondLine(-17,0)(376,0){2.8pt}}{#2}[abc]} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \section{Six-Membered Sugar Derivatives of Large Dimension} +% \subsection{General Conventions} +% +% The standard skeleton of cyclitol is selected +% to have the following locant numbers. +% +% \begin{verbatim} +% ******************** +% * Sugarh derivative * +% ******************** +% +% The following numbering is adopted in this macro. +% +% 5 e 6 +% ---- +% d * * f +% the original point ===> 4 * * 1 +% (0,0) * * a +% c ----- +% 3 b 2 +% \end{verbatim} +% +% +% The macro |\SixSugarh| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \SixSugarh(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] +% \end{verbatim} +% +% The |SKBONDLIST| argument contains pairs of two alphabets in +% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase +% character selected from bond specifiers `a' to `f' and a uppercase +% character `A' or `B'. +% +% The |BONDLIST| argument contains one +% character selected from a to f, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The option `$n+$' ($n=1$ to $6$) represents a plus charge on a hetero atom +% at the $n$-position. +% +% \begin{verbatim} +% +% BONDLIST = +% none or [] : fully saturated form +% a : 1,2-double bond +% b : 2,3-double bond +% c : 4,3-double bond +% d : 4,5-double bond +% e : 5,6-double bond +% f : 6,1-double bond +% {n+} : plus at the n-nitrogen atom (n = 1 to 4) +% \end{verbatim} +% +% The |ATOMLIST| argument contains one or more heteroatom descriptors +% which are separated from each other by a semicolon. Each heteroatom +% descriptor consists of a locant number and a heteroatom, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% ATOMLIST: list of heteroatoms (max 6 atoms) +% +% for n = 1 to 6 +% +% n : Hetero atom, e.g. N, O, etc. at n-position, +% e.g. 1==N for N at 1-position +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% +% SUBSLIST: list of substituents (max 6 substitution positions) +% +% for n = 1 to 6 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nSA : single bond (down) at n-atom (for n=1) +% nSB : single bond (up) at n-atom (for n=1) +% nSa : alpha single bond at n-atom +% nSb : beta single bond at n-atom +% +% \end{verbatim} +% +% The argument |OMIT| represents one or more bonds to be omitted. +% The omitted edges may be regarded as both fused and non-fused +% positions. +% +% \begin{verbatim} +% OMIT: one or more bonds omitted (a, b, c, d, e, or f) +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% \SixSugarh{6==O}{1Sa==OH;2Sa==OH} +% \end{verbatim} +% +% The definition of |\SixSugarh| 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 dirctly +% (cf. |\setsixringh| for a |\sixheteroh|) +% \end{enumerate} +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \changes{v5.00}{2010/10/01}{For bond coloring} +% +% \begin{macro}{\SixSugarh} +% \begin{macro}{\@Six@Sugarh} +% \begin{macro}{\@Six@@Sugarh} +% \begin{macro}{\@SixSugarh} +% \begin{macrocode} +\def\SixSugarh{\@ifnextchar({\@Six@Sugarh(@}{\@Six@Sugarh(@)}} +\def\@Six@Sugarh(#1){\@ifnextchar[{\@Six@@Sugarh(#1)[@}% +{\@Six@@Sugarh(#1)[@]}} +\def\@Six@@Sugarh(#1)[#2]#3#4{\@ifnextchar[% +{\@SixSugarh(#1)[#2]{#3}{#4}[@}% +{\@SixSugarh(#1)[#2]{#3}{#4}[@]}} +\def\@SixSugarh(#1)[#2]#3#4[#5]{% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%% +% % treatment of atom list % +% %%%%%%%%%%%%%%%%%%%%%%%%%% +\iniatom\iniflag%initialize +\test@vrtx@SixSugarh{#3}% +%test for a hetero atom or a spiro substituent on a vertex +\@reset@ylsw% +\ylSixSugarhposition{#4}%shift values +\begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(880,800)(-240,-400){SixSugarh}%2002/4/30 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +{\resetbdsw% +\@bond@@omit{#5}%%%|\@aaa| etc. are empty if they are omitted. +\molfronttrue +\set@skel@Sugarhbond{#1}{a}{a}% + %bond between 1 and 2 \@aaa -> \Sugarhskbonda etc +\set@skel@Sugarhbond{#1}{b}{b}% + %bond between 2 and 3 \@bbb -> \Sugarhskbondb etc +\set@skel@Sugarhbond{#1}{c}{c}% + %bond between 3 and 4 \@ccc -> \Sugarhskbondc etc +\molfrontfalse +\set@skel@Sugarhbond{#1}{d}{d}% + %bond between 4 and 5 \@ddd -> \Sugarhskbondd etc +\set@skel@Sugarhbond{#1}{e}{e}% + %bond between 5 and 6 \@eee -> \Sugarhskbonde etc +\set@skel@Sugarhbond{#1}{f}{f}% + %bond between 6 and 1 \@fff -> \Sugarhskbondf etc +}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\@tfor\member:=#2\do{% +\if\member r\relax \Sugarhbondd \Sugarhbondf \Sugarhbondb% +\else \if\member l\relax \Sugarhbonda \Sugarhbondc \Sugarhbonde% +\else \if\member a\relax \Sugarhbonda% +\else \if\member b\relax \Sugarhbondb% +\else \if\member c\relax \Sugarhbondc% +\else \if\member d\relax \Sugarhbondd% +\else \if\member e\relax \Sugarhbonde% +\else \if\member f\relax \Sugarhbondf% +\else \if\member A% no action: %%left aromatic circle +% \Put@oCircle(203,0){240}% %circle +% %%%%%%%%%%%%%%%%%%%%%%%%% +% % inner bond attachment % +% %%%%%%%%%%%%%%%%%%%%%%%%% +\else + \expandafter\twoCH@@R\member//% + \set@fusionadd@sixhi + \ifx\@@tmpa\empty% + \XyMTeXWarning{Fused function is unavailable for SixSugarh.}\fi +\fi\fi\fi\fi\fi\fi\fi\fi\fi}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting hetero atoms % +% %%%%%%%%%%%%%%%%%%%%%%%% +\iniatom\iniflag%initialize +\set@hetatom@Sugarh{#3}{-3}{0}{5}{1}% %subst 4--6 +\set@hetatom@Sugarh{#3}{3}{3}{7}{1}% %subst 1 -- 3 +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents % +% %%%%%%%%%%%%%%%%%%%%%%%% +\@forsemicol\member:=#4\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa%0 omit + \or\setBScolor{\Put@Direct(668,0){% + \if@clip \@clippingtrue \else \@clippingfalse\fi + \@pyrana}}% subst. on 1 + \or\setBScolor{\Put@Direct(513,-255){% + \if@eclip \@clippingtrue \else \@clippingfalse\fi + \@pyranb}}% subst. on 2 + \or\setBScolor{\Put@Direct(153,-255){% + \if@fclip \@clippingtrue \else \@clippingfalse\fi + \@pyranbb}}% subst. on 3 + \or\setBScolor{\Put@Direct(0,0){% + \if@aclip \@clippingtrue \else \@clippingfalse\fi + \@pyranc}}% subst. on 4 + \or\setBScolor{\Put@Direct(153,255){% + \if@bclip \@clippingtrue \else \@clippingfalse\fi + \@pyranbB}}% subst. on 5 + \or\setBScolor{\Put@Direct(513,255){% + \if@cclip \@clippingtrue \else \@clippingfalse\fi + \@pyranbC}}% subst. on 6 +\fi %end of ifcase +\fi\fi}% +\end{ShiftPicEnv}% +\iniatom\iniflag}% %end of \SixSugarh macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The macro |\test@vrtx@SixSugarh| is used to test the presence of +% a hetero atom or a spiro substituent on a vertex of the +% sixheteroh nucleus. +% +% \begin{macro}{\test@vrtx@SixSugarh} +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +\def\test@vrtx@SixSugarh#1{% +\@forsemicol\member:=#1\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\twoch@r\@membera{}% +\ifcase\@tmpa% + \or \if\@tmpb s\relax\def\aaa{}\else\def\aaa{@}\fi + \or \if\@tmpb s\relax\def\bbb{}\else\def\bbb{@}\fi + \or \if\@tmpb s\relax\def\ccc{}\else\def\ccc{@}\fi + \or \if\@tmpb s\relax\def\ddd{}\else\def\ddd{@}\fi + \or \if\@tmpb s\relax\def\eee{}\else\def\eee{@}\fi + \or \if\@tmpb s\relax\def\fff{}\else\def\fff{@}\fi +\fi\fi}% +}% end of \test@vrtx@SixSugarh +% \end{macrocode} +% \end{macro} +% +% The command |\ylSixSugarhposition| is to obtain the shift values +% |\@ylii| and |\@yli| which are used for shifting the standard +% point of a substituent. +% \changes{v1.02}{1998/10/25}{New commands for setting substituents} +% +% \begin{macro}{\ylSixSugarhposition} +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +\def\ylSixSugarhposition#1{% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpa%0 omit + \or\gdef\@ylii{-668}\gdef\@yli{0}\global\@ylswtrue% subst. on 1 + \or\gdef\@ylii{-513}\gdef\@yli{255}\global\@ylswtrue% subst. on 2 + \or\gdef\@ylii{-153}\gdef\@yli{255}\global\@ylswtrue% subst. on 3 + \or\gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% subst. on 4 + \or\gdef\@ylii{-153}\gdef\@yli{-255}\global\@ylswtrue% subst. on 5 + \or\gdef\@ylii{-513}\gdef\@yli{-255}\global\@ylswtrue% subst. on 6 +\fi%end of ifcase +\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% \subsection{Skeletal bonds of Sugarhs} +% +% The macro |\set@skel@Sugarhbond| is used in |\SixSugarh| etc. +% for setting skeletal bonds (outer bonds), when |\@aaa| etc. +% (produced by |\csname|...|\endcsname|) are equal to `a' +% etc. (given as \#2). Thinline, thickline and dotted-line +% skeletal bonds are available. +% +% \begin{macro}{\set@skel@Sugarhbond} +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +\newif\ifmolfront \molfrontfalse +\newif\if@fivemembered \@fivememberedfalse +\def\set@skel@Sugarhbond#1#2#3{% + \expandafter\if\csname @#2#2#2\endcsname #2\relax%OK + % \if\@aaa #2\relax%OK + \@skbondlistfalse + \@tfor\member:=#1\do{% + \expandafter\twoCH@@R\member//% + \if\@@tmpa #2\relax% + \if\@@tmpb A\relax% + \if@fivemembered + \expandafter\csname fdothskbond#3\endcsname% \dothskbonda etc. + \else + \expandafter\csname dothskbond#3\endcsname% \dothskbonda etc. + \fi + \@skbondlisttrue + \else\if\@@tmpb B\relax% + {\thicklines + \if@fivemembered + \expandafter\csname fSugarhskbond#3\endcsname% \dothskbonda etc. + \else + \expandafter\csname Sugarhskbond#3\endcsname% \hskbonda etc. + \fi + }% + \@skbondlisttrue + \fi\fi + \fi% + }% + \if@skbondlist\else + \ifmolfront + {\thicklines + \if@fivemembered + \expandafter\csname fSugarhskbond#3\endcsname% \dothskbonda etc. + \else + \expandafter\csname Sugarhskbond#3\endcsname% \hskbonda etc. + \fi + }% + \else + {\thinlines + \if@fivemembered + \expandafter\csname fSugarhskbond#3\endcsname% \dothskbonda etc. + \else + \expandafter\csname Sugarhskbond#3\endcsname% \hskbonda etc. + \fi + }% + \fi + \fi% + \else + \expandafter\ifx\csname @#2#2#2\endcsname \empty\relax% + % \ifx\@aaa\empty\relax + \@tfor\member:=#1\do{% + \expandafter\twoCH@@R\member//% + \if\@@tmpa #2\relax% + \XyMTeXWarning{Unavailable bond `#2' in SKBONDLIST}\fi + }% + \fi\fi +}% end of \set@skel@Sugarhbond +% \end{macrocode} +% \end{macro} +% +% The macros |\SixSugarh| uses inner macros for setting +% skeletal bonds in accordance with the presence or the absence of +% hetero atoms. During the processes of such setting, +% the inner macros |\Sugarhskbonda| to |\Sugarhskbondf| are used to set a bond +% on each edge of a six- or five-membered ring. +% +% \begin{verbatim} +% ************************************ +% * setting skeletal bonds of Sugarhs * +% ************************************ +% The following numbering is adopted in this macro. +% +% e +% (eee) 5 6 (fff) +% d ----- c +% * * +% the original point ===> 4 * (ddd) * 1 (aaa) +% (0,0) * * a +% c ----- +% (ccc) 3 2 (bbb) +% b +% \end{verbatim} +% +% \begin{macro}{\Sugarhskbonda} +% The macro |\Sugarhskbonda| refers to the control sequences representing +% atoms on both of the terminal vertices (|\aaa| and |\bbb|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +%bond between 1 and 2 +\def\Sugarhskbonda{% + \ifx\aaa\empty% + \ifx\bbb\empty% + \Put@Line(668,0)(-3,-5){153}% %bond 1-2 + \else% + \Put@Line(668,0)(-3,-5){120}% %bond 1-2 + \fi% + \else% + \ifx\bbb\empty% + \Put@Line(635,-55)(-3,-5){120}% %bond 1-2 + \else% + \Put@Line(635,-55)(-3,-5){93}% %bond 1-2 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Sugarhskbondf} +% The macro |\Sugarhskbonda| refers to the control sequences representing +% atoms on both of the terminal vertices (|\aaa| and |\fff|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +%bond between 1 and 6 +\def\Sugarhskbondf{% + \ifx\aaa\empty% + \ifx\fff\empty% + \Put@Line(668,0)(-3,5){153}% %bond 1-6 + \else% + \Put@Line(668,0)(-3,5){120}% %bond 1-6 + \fi% + \else% + \ifx\fff\empty% + \Put@Line(635,55)(-3,5){120}% %bond 1-6 + \else% + \Put@Line(635,55)(-3,5){93}% %bond 1-6 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Sugarhskbondc} +% The macro |\Sugarhskbondc| refers to the control sequences representing +% atoms on both of the terminal vertices (|\ccc| and |\ddd|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +%bond between 4 and 3 +\def\Sugarhskbondc{% + \ifx\ddd\empty% + \ifx\ccc\empty% + \Put@Line(0,0)(3,-5){153}% %bond 4-3 + \else% + \Put@Line(0,0)(3,-5){120}% %bond 4-3 + \fi% + \else% + \ifx\ccc\empty% + \Put@Line(33,-55)(3,-5){120}% %bond 4-3 + \else% + \Put@Line(33,-55)(3,-5){93}% %bond 4-3 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Sugarhskbondd} +% The macro |\Sugarhskbondc| refers to the control sequences representing +% atoms on both of the terminal vertices (|\ddd| and |\eee|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +%bond between 4 and 5 +\def\Sugarhskbondd{% + \ifx\ddd\empty% + \ifx\eee\empty% + \Put@Line(0,0)(3,5){153}% %bond 4-5 + \else% + \Put@Line(0,0)(3,5){120}% %bond 4-5 + \fi% + \else% + \ifx\eee\empty% + \Put@Line(33,55)(3,5){120}% %bond 4-5 + \else% + \Put@Line(33,55)(3,5){93}% %bond 4-5 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Sugarhskbondb} +% The macro |\Sugarhskbondb| refers to the control sequences representing +% atoms on both of the terminal vertices (|\bbb| and |\ccc|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +%bond between 3 and 2 +\def\Sugarhskbondb{% + \ifx\ccc\empty% + \ifx\bbb\empty% + \Put@Line(153,-255)(1,0){360}% %bond 3-2 + \else% + \Put@Line(153,-255)(1,0){314}% %bond 3-2 + \fi% + \else% + \ifx\bbb\empty% + \Put@Line(199,-255)(1,0){314}% %bond 3-2 + \else% + \Put@Line(199,-255)(1,0){278}% %bond 3-2 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Sugarhskbonde} +% The macro |\Sugarhskbonde| refers to the control sequences representing +% atoms on both of the terminal vertices (|\eee| and |\fff|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +%bond between 5 and 6 +\def\Sugarhskbonde{% + \ifx\eee\empty% + \ifx\fff\empty% + \Put@Line(153,255)(1,0){360}% %bond 5-6 + \else% + \Put@Line(153,255)(1,0){314}% %bond 5-6 + \fi% + \else% + \ifx\fff\empty% + \Put@Line(199,255)(1,0){314}% %bond 5-6 + \else% + \Put@Line(199,255)(1,0){278}% %bond 5-6 + \fi\fi}% +% \end{macrocode} +% \end{macro} + +% +% \subsection{Inner Double Bonds of Sugarhs} +% +% The macros |\SixSugarh| uses inner macros for setting +% skeletal bonds in accordance with the presence or the absence of +% hetero atoms. During the processes of such setting, +% the inner macros |\Sugarhbonda| to |\Sugarhbondf| are used to set a bond +% on each edge of a six- or five-membered ring. +% +% \begin{verbatim} +% ******************************************** +% * setting skeletal bonds (horizontal type) * +% ******************************************** +% The following numbering is adopted in this macro. +% +% e +% (eee) 5 6 (fff) +% d ----- c +% * * +% the original point ===> 4 * (ddd) * 1 (aaa) +% (0,0) * * a +% c ----- +% (ccc) 3 2 (bbb) +% b +% \end{verbatim} +% +% \begin{macro}{\Sugarhbonda} +% The macro |\Sugarhbonda| refers to the control sequences representing +% atoms on both of the terminal vertices (|\aaa| and |\bbb|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +%bond between 1 and 2 +\def\Sugarhbonda{% + \ifx\aaa\empty% + \ifx\bbb\empty% + \Put@Line(605,-22)(-3,-5){100}% %bond 1-2 + \else% + \Put@Line(604,-15)(-3,-5){93}% %bond 1-2 + \fi% + \else% + \ifx\bbb\empty% + \Put@Line(587,-52)(-3,-5){93}% %bond 1-2 + \else% + \Put@Line(593,-42)(-3,-5){93}% %bond 1-2 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Sugarhbondf} +% The macro |\Sugarhbonda| refers to the control sequences representing +% atoms on both of the terminal vertices (|\aaa| and |\fff|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +%bond between 1 and 6 +\def\Sugarhbondf{% + \ifx\aaa\empty% + \ifx\fff\empty% + \Put@Line(605,22)(-3,5){100}% %bond 1-6 + \else% + \Put@Line(604,15)(-3,5){97}% %bond 1-6 + \fi% + \else% + \ifx\fff\empty% + \Put@Line(587,52)(-3,5){93}% %bond 1-6 + \else% + \Put@Line(593,42)(-3,5){93}% %bond 1-6 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Sugarhbondc} +% The macro |\Sugarhbondc| refers to the control sequences representing +% atoms on both of the terminal vertices (|\ccc| and |\ddd|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +%bond between 4 and 3 +\def\Sugarhbondc{% + \ifx\ddd\empty% + \ifx\ccc\empty% + \Put@Line(63,-22)(3,-5){100}% %bond 4-3 + \else% + \Put@Line(64,-15)(3,-5){97}% %bond 4-3 + \fi% + \else% + \ifx\ccc\empty% + \Put@Line(81,-52)(3,-5){93}% %bond 4-3 + \else% + \Put@Line(75,-42)(3,-5){93}% %bond 4-3 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Sugarhbondd} +% The macro |\Sugarhbondc| refers to the control sequences representing +% atoms on both of the terminal vertices (|\ddd| and |\eee|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +%bond between 4 and 5 +\def\Sugarhbondd{% + \ifx\ddd\empty% + \ifx\eee\empty% + \Put@Line(63,22)(3,5){100}% %bond 4-5 + \else% + \Put@Line(64,15)(3,5){97}% %bond 4-5 + \fi% + \else% + \ifx\eee\empty% + \Put@Line(81,52)(3,5){93}% %bond 4-5 + \else% + \Put@Line(75,42)(3,5){93}% %bond 4-5 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Sugarhbondb} +% The macro |\Sugarhbondb| refers to the control sequences representing +% atoms on both of the terminal vertices (|\aaa| and |\bbb|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +%bond between 3 and 2 +\def\Sugarhbondb{% + \ifx\ccc\empty% + \ifx\bbb\empty% + \Put@Line(183,-205)(1,0){300}% %bond 3-2 + \else% + \Put@Line(183,-205)(1,0){275}% %bond 3-2 + \fi% + \else% + \ifx\bbb\empty% + \Put@Line(203,-205)(1,0){275}% %bond 3-2 + \else% + \Put@Line(198,-205)(1,0){270}% %bond 3-2 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Sugarhbonde} +% The macro |\Sugarhbonde| refers to the control sequences representing +% atoms on both of the terminal vertices (|\eee| and |\fff|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +%bond between 5 and 6 +\def\Sugarhbonde{% + \ifx\eee\empty% + \ifx\fff\empty% + \Put@Line(183,205)(1,0){300}% %bond 5-6 + \else% + \Put@Line(183,205)(1,0){275}% %bond 5-6 + \fi% + \else% + \ifx\fff\empty% + \Put@Line(203,205)(1,0){275}% %bond 5-6 + \else% + \Put@Line(198,205)(1,0){270}% %bond 5-6 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \subsection{Hetero Atoms on Sugarh Skeletons} +% +% The command |\set@hetatom@Sugarh| is to set a spiro group +% (stored as |\@memberb|) +% at a vertix designated by |\@tmpaa| (or originally by |\@tmpa|). +% The atom modifier `s' designates that the spiro group contains +% a carbon atom (a vertix) at a spiro position, while `h' +% represents the presence of a hetero atom at a spiro position. +% The absence of such atom modifiers shows the substitution +% of a usual hetero atom. The command |\set@hetatom@Sugarh| is +% used in such commands as |\SixSugarh| for treating thier ATOMLISTs, +% e.g. |1==N;1s==\SixSugarh{}{1==(yl)}|. +% +% \begin{macro}{\set@hetatom@Sugarh} +% \changes{v2.01}{2001/6/20}{New command: \cs{set@hetatom@Sugarh}} +% \begin{macrocode} +\def\set@hetatom@Sugarh#1#2#3#4#5{% +\@forsemicol\member:=#1\do{% +\ifx\member\empty\else% +\expandafter\@m@mb@r\member;\relax% +\expandafter\twoCH@R\@membera//% +\ifnum#5 < 0\relax% +\@tmpaa=-\@tmpa\relax \advance\@tmpaa by#2\relax% +\else\@tmpaa=\@tmpa\relax \advance\@tmpaa by#2\relax \fi +\ifnum\@tmpaa >#3\relax% +\ifnum\@tmpaa <#4\relax% +\ifcase\@tmpaa% +\or%position 1 + \if\@tmpb h\relax + \@acliptrue% + \putlatom{60}{0}{\@memberb}% % left type + \else\if\@tmpb s\relax + \@aclipfalse% + \putlatom{0}{0}{\@memberb}% % left type + \else\if\@tmpb a\relax%omit fused position + \else + \@acliptrue% + \putlatom{60}{-36}{\@memberb}% % left type + \fi\fi\fi +\or%position 2 + \if\@tmpb h\relax + \@bcliptrue% + \putlatom{185}{225}{\@memberb}% % left type + \else\if\@tmpb s\relax + \@bclipfalse% + \putlatom{153}{255}{\@memberb}% % left type + \else\if\@tmpb a\relax%omit fused position + \else + \@bcliptrue% + \putlatom{185}{225}{\@memberb}% % left type + \fi\fi\fi +\or%position 3 + \if\@tmpb h\relax + \@ccliptrue% + \putratom{483}{225}{\@memberb}% % right type + \else\if\@tmpb s\relax + \@cclipfalse% + \putratom{513}{255}{\@memberb}% % right type + \else\if\@tmpb a\relax%omit fused position + \else + \@ccliptrue% + \putratom{483}{225}{\@memberb}% % right type + \fi\fi\fi +\or%position 4 + \if\@tmpb h\relax + \@cliptrue% + \putratom{608}{0}{\@memberb}% % right type + \else\if\@tmpb s\relax + \@clipfalse% + \putratom{668}{0}{\@memberb}% % right type + \else\if\@tmpb a\relax%omit fused position + \else + \@cliptrue% + \putratom{608}{-36}{\@memberb}% % right type + \fi\fi\fi +\or%position 5 + \if\@tmpb h\relax + \@ecliptrue% + \putratom{493}{-225}{\@memberb}% % right type + \else\if\@tmpb s\relax + \@eclipfalse% + \putratom{513}{-255}{\@memberb}% % right type + \else\if\@tmpb a\relax%omit fused position + \else + \@ecliptrue% + \putratom{483}{-295}{\@memberb}% % right type + \fi\fi\fi +\or%position 6 + \if\@tmpb h\relax + \@fcliptrue% + \putlatom{175}{-215}{\@memberb}% % left type + \else\if\@tmpb s\relax + \@fclipfalse% + \putlatom{153}{-255}{\@memberb}% % left type + \else\if\@tmpb a\relax%omit fused position + \else + \@fcliptrue% + \putlatom{185}{-295}{\@memberb}% % left type + \fi\fi\fi +\fi% end of ifcase +\fi\fi\fi}}% end of the macro \set@hetatom@Sugarh +% \end{macrocode} +% \end{macro} +% +% \section{Six-Membered Sugar Derivatives of Normal Dimension} +% \subsection{General Conventions} +% +% The standard skeleton of cyclitol is selected +% to have the following locant numbers. +% +% \begin{verbatim} +% ********************* +% * sugarh derivative * +% ********************* +% +% The following numbering is adopted in this macro. +% +% 5 e 6 +% ---- +% d * * f +% the original point ===> 4 * * 1 +% (0,0) * * a +% c ----- +% 3 b 2 +% \end{verbatim} +% +% +% The macro |\sixsugarh| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \sixsugarh(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] +% \end{verbatim} +% +% The |SKBONDLIST| argument contains pairs of two alphabets in +% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase +% character selected from bond specifiers `a' to `f' and a uppercase +% character `A' or `B'. +% +% The |BONDLIST| argument contains one +% character selected from a to f, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The option `$n+$' ($n=1$ to $6$) represents a plus charge on a hetero atom +% at the $n$-position. +% +% \begin{verbatim} +% +% BONDLIST = +% +% none or [] : fully saturated form +% a : 1,2-double bond +% b : 2,3-double bond +% c : 4,3-double bond +% d : 4,5-double bond +% e : 5,6-double bond +% f : 6,1-double bond +% {n+} : not supproted (+ at the n-hetro atom, n = 1 to 6) +% \end{verbatim} +% +% The |ATOMLIST| argument contains one or more heteroatom descriptors +% which are separated from each other by a semicolon. Each heteroatom +% descriptor consists of a locant number and a heteroatom, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% ATOMLIST: list of heteroatoms (max 6 atoms) +% +% for n = 1 to 6 +% +% n : Hetero atom, e.g. N, O, etc. at n-position, +% e.g. 1==N for N at 1-position +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% +% SUBSLIST: list of substituents (max 6 substitution positions) +% +% for n = 1 to 6 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nSA : single bond (down) at n-atom (for n=1) +% nSB : single bond (up) at n-atom (for n=1) +% nSa : alpha single bond at n-atom +% nSb : beta single bond at n-atom +% +% \end{verbatim} +% +% The argument |OMIT| represents one or more bonds to be omitted. +% The omitted edges may be regarded as both fused and non-fused +% positions. +% +% \begin{verbatim} +% OMIT: one or more bonds omitted (a, b, c, d, e, or f) +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% \sixsugarh{6==O}{1Sa==OH;2Sa==OH} +% \end{verbatim} +% +% The definition of |\sixsugarh| 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 dirctly +% (cf. |\setsixringh| for a |\sixheteroh|) +% \end{enumerate} +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \changes{v5.00}{2010/10/01}{For bond coloring} +% +% \begin{macro}{\sixsugarh} +% \begin{macro}{\@six@sugarh} +% \begin{macro}{\@six@@sugarh} +% \begin{macro}{\@sixsugarh} +% \begin{macrocode} +\def\sixsugarh{\@ifnextchar({\@six@sugarh(@}{\@six@sugarh(@)}} +\def\@six@sugarh(#1){\@ifnextchar[{\@six@@sugarh(#1)[@}% +{\@six@@sugarh(#1)[@]}} +\def\@six@@sugarh(#1)[#2]#3#4{\@ifnextchar[% +{\@sixsugarh(#1)[#2]{#3}{#4}[@}% +{\@sixsugarh(#1)[#2]{#3}{#4}[@]}} +\def\@sixsugarh(#1)[#2]#3#4[#5]{% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%% +% % treatment of atom list % +% %%%%%%%%%%%%%%%%%%%%%%%%%% +\iniatom\iniflag%initialize +\test@vrtx@SixSugarh{#3}% +%test for a hetero atom or a spiro substituent on a vertex +\@reset@ylsw% +\ylpyranoseposition{#4}%shift values +\begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(880,800)(-240,-400){sixsugarh}%2002/4/30 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +{\resetbdsw% +\@bond@@omit{#5}%%%|\@aaa| etc. are empty if they are omitted. +\@fivememberedfalse%not five-membered ring +\molfronttrue%boldfaced lines (thicklines) +\set@skel@sugarhbond{#1}{a}{a}% + %bond between 1 and 2 \@aaa -> \sugarhskbonda etc +\set@skel@sugarhbond{#1}{b}{b}% + %bond between 2 and 3 \@bbb -> \sugarhskbondb etc +\set@skel@sugarhbond{#1}{c}{c}% + %bond between 3 and 4 \@ccc -> \sugarhskbondc etc +\molfrontfalse%normal lines (thinelines) +\set@skel@sugarhbond{#1}{d}{d}% + %bond between 4 and 5 \@ddd -> \sugarhskbondd etc +\set@skel@sugarhbond{#1}{e}{e}% + %bond between 5 and 6 \@eee -> \sugarhskbonde etc +\set@skel@sugarhbond{#1}{f}{f}% + %bond between 6 and 1 \@fff -> \sugarhskbondf etc +}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\@tfor\member:=#2\do{% +\if\member r\relax \sugarhbondd \sugarhbondf \sugarhbondb% +\else \if\member l\relax \sugarhbonda \sugarhbondc \sugarhbonde% +\else \if\member a\relax \sugarhbonda% +\else \if\member b\relax \sugarhbondb% +\else \if\member c\relax \sugarhbondc% +\else \if\member d\relax \sugarhbondd% +\else \if\member e\relax \sugarhbonde% +\else \if\member f\relax \sugarhbondf% +\else \if\member A% no action: %%left aromatic circle +% \Put@oCircle(203,0){240}% %circle +% %%%%%%%%%%%%%%%%%%%%%%%%% +% % inner bond attachment % +% %%%%%%%%%%%%%%%%%%%%%%%%% +\else + \expandafter\twoCH@@R\member//% + \set@fusionadd@sixhi + \ifx\@@tmpa\empty% + \XyMTeXWarning{Fused function is unavailable for sixsugarh.}\fi +\fi\fi\fi\fi\fi\fi\fi\fi\fi}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting hetero atoms % +% %%%%%%%%%%%%%%%%%%%%%%%% +\iniatom\iniflag%initialize +\set@hetatom@sugarh{#3}{-3}{0}{5}{1}% %subst 4--6 +\set@hetatom@sugarh{#3}{3}{3}{7}{1}% %subst 1 -- 3 +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents % +% %%%%%%%%%%%%%%%%%%%%%%%% +\@forsemicol\member:=#4\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa%0 omit + \or\setBScolor{\Put@Direct(532,0){% + \if@clip \@clippingtrue \else \@clippingfalse\fi + \@pyrana}}% subst. on 1 + \or\setBScolor{\Put@Direct(412,-200){% + \if@eclip \@clippingtrue \else \@clippingfalse\fi + \@pyranb}}% subst. on 2 + \or\setBScolor{\Put@Direct(120,-200){% + \if@fclip \@clippingtrue \else \@clippingfalse\fi + \@pyranbb}}% subst. on 3 + \or\setBScolor{\Put@Direct(0,0){% + \if@aclip \@clippingtrue \else \@clippingfalse\fi + \@pyranc}}% subst. on 4 + \or\setBScolor{\Put@Direct(120,200){% + \if@bclip \@clippingtrue \else \@clippingfalse\fi + \@pyranbB}}% subst. on 5 + \or\setBScolor{\Put@Direct(412,200){% + \if@cclip \@clippingtrue \else \@clippingfalse\fi + \@pyranbC}}% subst. on 6 +\fi %end of ifcase +\fi\fi}% +\end{ShiftPicEnv}% +\iniatom\iniflag}% %end of \sixsugarh macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The command |\ylpyranoseposition| is to obtain the shift values +% |\@ylii| and |\@yli| which are used for shifting the standard +% point of a substituent. +% \changes{v1.02}{1998/10/25}{New commands for setting substituents} +% \changes{v2.01}{2001/6/20}{Added for position 6} +% +% \begin{macro}{\ylpyranoseposition} +% \begin{macrocode} +\def\ylpyranoseposition#1{% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpa%0 omit + \or\gdef\@ylii{-532}\gdef\@yli{0}\global\@ylswtrue% subst. on 1 + \or\gdef\@ylii{-412}\gdef\@yli{200}\global\@ylswtrue% subst. on 2 + \or\gdef\@ylii{-120}\gdef\@yli{200}\global\@ylswtrue% subst. on 3 + \or\gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% subst. on 4 + \or\gdef\@ylii{-120}\gdef\@yli{-200}\global\@ylswtrue% subst. on 5 + \or\gdef\@ylii{-412}\gdef\@yli{-200}\global\@ylswtrue% subst. on 6 +\fi%end of ifcase +\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% The front skeletal bonds of a pyranose ring are typeset with a bold line and wedged lines. +% \changes{v5.01}{2013/06/25}{added the definition for \cs{sixsugarhw}} +% +% \begin{macro}{\sixsugarhw} +% \begin{macro}{\@sixsugarhw} +% \begin{macrocode} +\def\sixsugarhw{\@ifnextchar[{\@sixsugarhw}{\@sixsugarhw[]}} +\def\@sixsugarhw[#1]#2#3{% +\sixsugarh[#1]{6==O;1s==\WedgeAsSubst(0,0)(-3,-5){120};% +4s==\WedgeAsSubst(0,0)(3,-5){120};% +3s==\PutBondLine(-17,0)(307,0){2.8pt};#2}{#3}[abc]} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Skeletal bonds of sugarhs} +% +% The macro |\set@skel@sugarhbond| is used in |\sixsugarh| etc. +% for setting skeletal bonds (outer bonds), when |\@aaa| etc. +% (produced by |\csname|...|\endcsname|) are equal to `a' +% etc. (given as \#2). Thinline, thickline and dotted-line +% skeletal bonds are available. +% +% \begin{macro}{\set@skel@sugarhbond} +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +\def\set@skel@sugarhbond#1#2#3{% + \expandafter\if\csname @#2#2#2\endcsname #2\relax%OK + % \if\@aaa #2\relax%OK + \@skbondlistfalse + \@tfor\member:=#1\do{% + \expandafter\twoCH@@R\member//% + \if\@@tmpa #2\relax% + \if\@@tmpb A\relax% + \if@fivemembered + \expandafter\csname fdothskbond#3\endcsname% \dothskbonda etc. + \else + \expandafter\csname dothskbond#3\endcsname% \dothskbonda etc. + \fi + \@skbondlisttrue + \else\if\@@tmpb B\relax% + {\thicklines + \if@fivemembered + \expandafter\csname fsugarhskbond#3\endcsname% \hskbonda etc. + \else + \expandafter\csname sugarhskbond#3\endcsname% \hskbonda etc. + \fi + }% + \@skbondlisttrue + \fi\fi + \fi% + }% + \if@skbondlist\else + \ifmolfront + {\thicklines + \if@fivemembered + \expandafter\csname fsugarhskbond#3\endcsname% \hskbonda etc. + \else + \expandafter\csname sugarhskbond#3\endcsname% \hskbonda etc. + \fi + }% + \else + {\thinlines + \if@fivemembered + \expandafter\csname fsugarhskbond#3\endcsname% \hskbonda etc + \else + \expandafter\csname sugarhskbond#3\endcsname% \hskbonda etc. + \fi + }% + \fi + \fi% + \else + \expandafter\ifx\csname @#2#2#2\endcsname \empty\relax% + % \ifx\@aaa\empty\relax + \@tfor\member:=#1\do{% + \expandafter\twoCH@@R\member//% + \if\@@tmpa #2\relax% + \XyMTeXWarning{Unavailable bond `#2' in SKBONDLIST}\fi + }% + \fi\fi +}% end of \set@skel@sugarhbond +% \end{macrocode} +% \end{macro} +% +% The macros |\sixsugarh| uses inner macros for setting +% skeletal bonds in accordance with the presence or the absence of +% hetero atoms. During the processes of such setting, +% the inner macros |\sugarhskbonda| to |\sugarhskbondf| are used to set a bond +% on each edge of a six- or five-membered ring. +% +% \begin{verbatim} +% ************************************ +% * setting skeletal bonds of sugarhs * +% ************************************ +% The following numbering is adopted in this macro. +% +% e +% (eee) 5 6 (fff) +% d ----- c +% * * +% the original point ===> 4 * (ddd) * 1 (aaa) +% (0,0) * * a +% c ----- +% (ccc) 3 2 (bbb) +% b +% \end{verbatim} +% +% \begin{macro}{\sugarhskbonda} +% The macro |\sugarhskbonda| refers to the control sequences representing +% atoms on both of the terminal vertices (|\aaa| and |\bbb|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +%bond between 1 and 2 +\def\sugarhskbonda{% + \ifx\aaa\empty% + \ifx\bbb\empty% + \Put@Line(532,0)(-3,-5){120}% %bond 1-2 + \else% + \Put@Line(532,0)(-3,-5){96}% %bond 1-2 + \fi% + \else% + \ifx\bbb\empty% +% \Put@Line(635,-55)(-3,-5){120}% %bond 1-2 + \Put@Line(511,-35)(-3,-5){96}% %bond 1-2 + \else% + \Put@Line(511,-35)(-3,-5){80}% %bond 1-2 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\sugarhskbondf} +% The macro |\sugarhskbonda| refers to the control sequences representing +% atoms on both of the terminal vertices (|\aaa| and |\fff|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +%bond between 1 and 6 +\def\sugarhskbondf{% + \ifx\aaa\empty% + \ifx\fff\empty% + \Put@Line(532,0)(-3,5){120}% %bond 1-6 + \else% + \Put@Line(532,0)(-3,5){96}% %bond 1-6 + \fi% + \else% + \ifx\fff\empty% + \Put@Line(511,35)(-3,5){96}% %bond 1-6 + \else% + \Put@Line(511,35)(-3,5){80}% %bond 1-6 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\sugarhskbondc} +% The macro |\sugarhskbondc| refers to the control sequences representing +% atoms on both of the terminal vertices (|\ccc| and |\ddd|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +%bond between 4 and 3 +\def\sugarhskbondc{% + \ifx\ddd\empty% + \ifx\ccc\empty% + \Put@Line(0,0)(3,-5){120}% %bond 4-3 + \else% + \Put@Line(0,0)(3,-5){96}% %bond 4-3 + \fi% + \else% + \ifx\ccc\empty% + \Put@Line(21,-35)(3,-5){96}% %bond 4-3 + \else% + \Put@Line(21,-35)(3,-5){80}% %bond 4-3 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\sugarhskbondd} +% The macro |\sugarhskbondd| refers to the control sequences representing +% atoms on both of the terminal vertices (|\ddd| and |\eee|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +%bond between 4 and 5 +\def\sugarhskbondd{% + \ifx\ddd\empty% + \ifx\eee\empty% + \Put@Line(0,0)(3,5){120}% %bond 4-5 + \else% + \Put@Line(0,0)(3,5){97}% %bond 4-5 + \fi% + \else% + \ifx\eee\empty% + \Put@Line(21,35)(3,5){97}% %bond 4-5 + \else% + \Put@Line(21,35)(3,5){80}% %bond 4-5 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\sugarhskbondb} +% The macro |\sugarhskbondb| refers to the control sequences representing +% atoms on both of the terminal vertices (|\bbb| and |\ccc|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +%bond between 3 and 2 +\def\sugarhskbondb{% + \ifx\ccc\empty% + \ifx\bbb\empty% + \Put@Line(120,-200)(1,0){292}% %bond 3-2 + \else% + \Put@Line(120,-200)(1,0){252}% %bond 3-2 + \fi% + \else% + \ifx\bbb\empty% + \Put@Line(160,-200)(1,0){252}% %bond 3-2 + \else% + \Put@Line(160,-200)(1,0){212}% %bond 3-2 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\sugarhskbonde} +% The macro |\sugarhskbonde| refers to the control sequences representing +% atoms on both of the terminal vertices (|\eee| and |\fff|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +%bond between 5 and 6 +\def\sugarhskbonde{% + \ifx\eee\empty% + \ifx\fff\empty% + \Put@Line(120,200)(1,0){292}% %bond 5-6 + \else% + \Put@Line(120,200)(1,0){252}% %bond 5-6 + \fi% + \else% + \ifx\fff\empty% + \Put@Line(160,200)(1,0){252}% %bond 5-6 + \else% + \Put@Line(160,200)(1,0){212}% %bond 5-6 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \subsection{Hetero Atoms on sugarh Skeletons} +% +% The command |\set@hetatom@sugarh| is to set a spiro group +% (stored as |\@memberb|) +% at a vertix designated by |\@tmpaa| (or originally by |\@tmpa|). +% The atom modifier `s' designates that the spiro group contains +% a carbon atom (a vertix) at a spiro position, while `h' +% represents the presence of a hetero atom at a spiro position. +% The absence of such atom modifiers shows the substitution +% of a usual hetero atom. The command |\set@hetatom@sugarh| is +% used in such commands as |\sixsugarh| for treating thier ATOMLISTs, +% e.g. |1==N;1s==\sixsugarh{}{1==(yl)}|. +% +% \begin{macro}{\set@hetatom@sugarh} +% \changes{v2.01}{2001/6/20}{New command: \cs{set@hetatom@sugarh}} +% \begin{macrocode} +\def\set@hetatom@sugarh#1#2#3#4#5{% +\@forsemicol\member:=#1\do{% +\ifx\member\empty\else% +\expandafter\@m@mb@r\member;\relax% +\expandafter\twoCH@R\@membera//% +\ifnum#5 < 0\relax% +\@tmpaa=-\@tmpa\relax \advance\@tmpaa by#2\relax% +\else\@tmpaa=\@tmpa\relax \advance\@tmpaa by#2\relax \fi +\ifnum\@tmpaa >#3\relax% +\ifnum\@tmpaa <#4\relax% +\ifcase\@tmpaa% +\or%position 1 + \if\@tmpb h\relax + \@acliptrue% + \putlatom{60}{0}{\@memberb}% % left type + \else\if\@tmpb s\relax + \@aclipfalse% + \putlatom{0}{0}{\@memberb}% % left type + \else\if\@tmpb a\relax%omit fused position + \else + \@acliptrue% + \putlatom{60}{-36}{\@memberb}% % left type + \fi\fi\fi +\or%position 2 + \if\@tmpb h\relax + \@bcliptrue% + \putlatom{155}{180}{\@memberb}% % left type + \else\if\@tmpb s\relax + \@bclipfalse% + \putlatom{120}{200}{\@memberb}% % left type + \else\if\@tmpb a\relax%omit fused position + \else + \@bcliptrue% + \putlatom{155}{180}{\@memberb}% % left type + \fi\fi\fi +\or%position 3 + \if\@tmpb h\relax + \@ccliptrue% + \putratom{382}{180}{\@memberb}% % right type + \else\if\@tmpb s\relax + \@cclipfalse% + \putratom{412}{200}{\@memberb}% % right type + \else\if\@tmpb a\relax%omit fused position + \else + \@ccliptrue% + \putratom{382}{180}{\@memberb}% % right type + \fi\fi\fi +\or%position 4 + \if\@tmpb h\relax + \@cliptrue% + \putratom{472}{0}{\@memberb}% % right type + \else\if\@tmpb s\relax + \@clipfalse% + \putratom{532}{0}{\@memberb}% % right type + \else\if\@tmpb a\relax%omit fused position + \else + \@cliptrue% + \putratom{472}{-36}{\@memberb}% % right type + \fi\fi\fi +\or%position 5 + \if\@tmpb h\relax + \@ecliptrue% + \putratom{382}{-240}{\@memberb}% % right type + \else\if\@tmpb s\relax + \@eclipfalse% + \putratom{412}{-200}{\@memberb}% % right type + \else\if\@tmpb a\relax%omit fused position + \else + \@ecliptrue% + \putratom{382}{-240}{\@memberb}% % right type + \fi\fi\fi +\or%position 6 + \if\@tmpb h\relax + \@fcliptrue% + \putlatom{155}{-240}{\@memberb}% % left type + \else\if\@tmpb s\relax + \@fclipfalse% + \putlatom{120}{-200}{\@memberb}% % left type + \else\if\@tmpb a\relax%omit fused position + \else + \@fcliptrue% + \putlatom{155}{-240}{\@memberb}% % left type + \fi\fi\fi +\fi% end of ifcase +\fi\fi\fi}}% end of the macro \set@hetatom@sugarh +% \end{macrocode} +% \end{macro} +% +% \subsection{Inner Double Bonds of sugarhs} +% +% The macros |\sixsugarh| uses inner macros for setting +% skeletal bonds in accordance with the presence or the absence of +% hetero atoms. During the processes of such setting, +% the inner macros |\sugarhbonda| to |\sugarhbondf| are used to set a bond +% on each edge of a six- or five-membered ring. +% +% \begin{verbatim} +% ******************************************** +% * setting skeletal bonds (horizontal type) * +% ******************************************** +% The following numbering is adopted in this macro. +% e +% (eee) 5 6 (fff) +% d ----- c +% * * +% the original point ===> 4 * (ddd) * 1 (aaa) +% (0,0) * * a +% c ----- +% (ccc) 3 2 (bbb) +% b +% \end{verbatim} +% +% \begin{macro}{\sugarhbonda} +% The macro |\sugarhbonda| refers to the control sequences representing +% atoms on both of the terminal vertices (|\aaa| and |\bbb|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +%bond between 1 and 2 +%\else \if\member a% +\def\sugarhbonda{% + \ifx\aaa\empty% + \ifx\bbb\empty% + \Put@Line(482,-12)(-3,-5){90}% %double bond 1-2 + \else% + \Put@Line(482,-12)(-3,-5){80}% %double bond 1-2 + \fi% + \else% + \ifx\bbb\empty% + \Put@Line(394,-160)(3,5){70}% %double bond 2-1 + \else% + \Put@Line(394,-160)(3,5){70}% %double bond 2-1 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\sugarhbondf} +% The macro |\sugarhbonda| refers to the control sequences representing +% atoms on both of the terminal vertices (|\aaa| and |\fff|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +%bond between 1 and 6 +\def\sugarhbondf{% + \ifx\aaa\empty% + \ifx\fff\empty% + \Put@Line(482,12)(-3,5){90}% %double bond 1-6 + \else% + \Put@Line(482,12)(-3,5){80}% %double bond 1-6 + \fi% + \else% + \ifx\fff\empty% + \Put@Line(394,160)(3,-5){70}% %double bond 6-1 + \else% + \Put@Line(394,160)(3,-5){70}% %double bond 6-1 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\sugarhbondc} +% The macro |\sugarhbondc| refers to the control sequences representing +% atoms on both of the terminal vertices (|\ccc| and |\ddd|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +%bond between 4 and 3 +\def\sugarhbondc{% + \ifx\ddd\empty% + \ifx\ccc\empty% + \Put@Line(50,-12)(3,-5){90}% %double bond 4-3 + \else% + \Put@Line(50,-12)(3,-5){80}% %double bond 4-3 + \fi% + \else% + \ifx\ccc\empty% + \Put@Line(138,-160)(-3,5){70}% %double bond 3-4 + \else% + \Put@Line(138,-160)(-3,5){70}% %double bond 3-4 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\sugarhbondd} +% The macro |\sugarhbondd| refers to the control sequences representing +% atoms on both of the terminal vertices (|\ddd| and |\eee|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +%bond between 4 and 5 +\def\sugarhbondd{% + \ifx\ddd\empty% + \ifx\eee\empty% + \Put@Line(50,12)(3,5){90}% %double bond 4-5 + \else% + \Put@Line(50,12)(3,5){80}% %double bond 4-5 + \fi% + \else% + \ifx\eee\empty% + \Put@Line(138,160)(-3,-5){70}% %double bond 5-4 + \else% + \Put@Line(138,160)(-3,-5){70}% %double bond 5-4 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\sugarhbondb} +% The macro |\sugarhbondb| refers to the control sequences representing +% atoms on both of the terminal vertices (|\aaa| and |\bbb|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +%bond between 3 and 2 +\def\sugarhbondb{% + \ifx\ccc\empty% + \ifx\bbb\empty% + \Put@Line(150,-160)(1,0){232}% %double bond 3-2 + \else% + \Put@Line(160,-160)(1,0){217}% %double bond 3-2 + \fi% + \else% + \ifx\bbb\empty% + \Put@Line(170,-160)(1,0){217}% %double bond 3-2 + \else% + \Put@Line(170,-160)(1,0){197}% %double bond 3-2 + \fi\fi}% +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\sugarhbonde} +% The macro |\sugarhbonde| refers to the control sequences representing +% atoms on both of the terminal vertices (|\eee| and |\fff|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +%bond between 5 and 6 +\def\sugarhbonde{% + \ifx\eee\empty% + \ifx\fff\empty% + \Put@Line(150,160)(1,0){232}% %double bond 5-6 + \else% + \Put@Line(160,160)(1,0){217}% %double bond 5-6 + \fi% + \else% + \ifx\fff\empty% + \Put@Line(170,160)(1,0){217}% %double bond 5-6 + \else% + \Put@Line(170,160)(1,0){197}% %double bond 5-6 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \section{Cyclitol Derivaives} +% +% Cyclitol derivatives can be drawn by the |\cyclitol| macro. +% +% \changes{v2.01}{2001/06/20}{New command: \cs{cyclitol}} +% +% \begin{macro}{\cyclitol} +% \begin{macro}{\@cyclitol} +% \begin{macrocode} +\def\cyclitol{\@ifnextchar[{\@cyclitol}{\@cyclitol[]}} +\def\@cyclitol[#1]#2{\sixsugarh[#1]{}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% Cyclitol derivatives of slightly large dimension can be +% drawn by the |\Cyclitol| macro. +% +% \changes{v2.01}{2001/06/20}{New command: \cs{Cyclitol}} +% +% \begin{macro}{\Cyclitol} +% \begin{macro}{\@Cyclitol} +% \begin{macrocode} +\def\Cyclitol{\@ifnextchar[{\@Cyclitol}{\@Cyclitol[]}} +\def\@Cyclitol[#1]#2{\SixSugarh[#1]{}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \section{Five-Membered Sugar Derivatives of Normal Dimension} +% \subsection{General Conventions} +% +% The standard skeleton of cyclitol is selected +% to have the following locant numbers. +% +% \begin{verbatim} +% ************************** +% * five-sugarh derivative * +% ************************** +% +% The following numbering is adopted in this macro. +% +% 5 +% * +% d * * e +% the original point ===> 4 * * 1 +% (0,0) * * a +% c ----- +% 3 b 2 +% +% \end{verbatim} +% +% The macro |\fivesugarh| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \fivesugarh(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] +% \end{verbatim} +% +% The |SKBONDLIST| argument contains pairs of two alphabets in +% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase +% character selected from bond specifiers `a' to `e' and a uppercase +% character `A' or `B'. +% +% The |BONDLIST| argument contains one +% character selected from a to f, 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 = +% +% none or [] : fully saturated form +% a : 1,2-double bond +% b : 2,3-double bond +% c : 4,3-double bond +% d : 4,5-double bond +% e : 5,1-double bond +% {n+} : not supported (+ at the n-nitrogen atom, n = 1 to 4) +% \end{verbatim} +% +% The |ATOMLIST| argument contains one or more heteroatom descriptors +% which are separated from each other by a semicolon. Each heteroatom +% descriptor consists of a locant number and a heteroatom, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% ATOMLIST: list of heteroatoms (max 6 atoms) +% +% for n = 1 to 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 (max 5 substitution positions) +% +% for n = 1 to 5 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nSA : single bond (down) at n-atom (for n=1) +% nSB : single bond (up) at n-atom (for n=1) +% nSa : alpha single bond at n-atom +% nSb : beta single bond at n-atom +% +% \end{verbatim} +% +% The argument |OMIT| represents one or more bonds to be omitted. +% The omitted edges may be regarded as both fused and non-fused +% positions. +% +% \begin{verbatim} +% OMIT: one or more bonds omitted (a, b, c, d, or e) +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% \fivesugarh{5==O}{1Sa==OH;2Sa==OH} +% \end{verbatim} +% +% The definition of |\fivesugarh| uses a picture environment and +% consists of the same unit processes as shown in |\fiveheteroh|: +% \begin{enumerate} +% \item treatment of atom list, +% \item placing outer skeletons, +% \item placing inner double bonds, +% \item setting hetero atoms, and +% \item placing substituents dirctly +% (cf. |\setsixringh| for a |\fiveheteroh|) +% \end{enumerate} +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \changes{v5.01}{2001/6/25}{bug fix for position 5} +% +% \begin{macro}{\fivesugarh} +% \begin{macro}{\@five@sugarh} +% \begin{macro}{\@five@@sugarh} +% \begin{macro}{\@fivesugarh} +% \begin{macrocode} +\def\fivesugarh{\@ifnextchar({\@five@sugarh(@}{\@five@sugarh(@)}} +\def\@five@sugarh(#1){\@ifnextchar[{\@five@@sugarh(#1)[@}% +{\@five@@sugarh(#1)[@]}} +\def\@five@@sugarh(#1)[#2]#3#4{\@ifnextchar[% +{\@fivesugarh(#1)[#2]{#3}{#4}[@}% +{\@fivesugarh(#1)[#2]{#3}{#4}[@]}} +\def\@fivesugarh(#1)[#2]#3#4[#5]{% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%% +% % treatment of atom list % +% %%%%%%%%%%%%%%%%%%%%%%%%%% +\iniatom\iniflag%initialize +\test@vrtx@SixSugarh{#3}% +%test for a hetero atom or a spiro substituent on a vertex +\@reset@ylsw% +\ylfuranoseposition{#4}%shift values +\begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(880,800)(-240,-400){fivesugarh}%2002/4/30 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +{\resetbdsw% +\@bond@@omit{#5}%%%|\@aaa| etc. are empty if they are omitted. +\@fivememberedfalse%common bonds to a six-membered ring +\molfronttrue%boldfaced lines (thicklines) +\set@skel@sugarhbond{#1}{a}{a}% + %bond between 1 and 2 \@aaa -> \sugarhskbonda etc +\set@skel@sugarhbond{#1}{b}{b}% + %bond between 2 and 3 \@bbb -> \sugarhskbondb etc +\set@skel@sugarhbond{#1}{c}{c}% + %bond between 3 and 4 \@ccc -> \sugarhskbondc etc +\@fivememberedtrue%bonds for a five-membered ring +\molfrontfalse%normal lines (thinelines) +\set@skel@sugarhbond{#1}{d}{d}% + %bond between 4 and 5 \@ddd -> \fsugarhskbondd etc +\set@skel@sugarhbond{#1}{e}{e}% + %bond between 5 and 1 \@eee -> \fsugarhskbonde etc +}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\@tfor\member:=#2\do{% +\if\member r\relax %no action \sugarhbondd \sugarhbondf \sugarhbondb% +\else \if\member l\relax %no action \sugarhbonda \sugarhbondc \sugarhbonde% +\else \if\member a\relax \sugarhbonda% +\else \if\member b\relax \sugarhbondb% +\else \if\member c\relax \sugarhbondc% +\else \if\member d\relax \fsugarhbondd% +\else \if\member e\relax \fsugarhbonde% +\else \if\member A% no action: %%left aromatic circle +% \Put@oCircle(203,0){240}% %circle +% %%%%%%%%%%%%%%%%%%%%%%%%% +% % inner bond attachment % +% %%%%%%%%%%%%%%%%%%%%%%%%% +\else%no action +% \expandafter\twoCH@@R\member//% +% \set@fusionadd@sixhi +% \ifx\@@tmpa\empty% +% \XyMTeXWarning{Fused function is unavailable for fivesugarh.}\fi +\fi\fi\fi\fi\fi\fi\fi\fi}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting hetero atoms % +% %%%%%%%%%%%%%%%%%%%%%%%% +\iniflag%initialize +\set@hetatom@sugarh{#3}{-3}{0}{2}{1}% %subst 4 +\set@hetatom@sugarh{#3}{3}{3}{7}{1}% %subst 1 -- 3 +\set@hteatom@fivesugarh{#3}% %subsituent 5 +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents % +% %%%%%%%%%%%%%%%%%%%%%%%% +\@forsemicol\member:=#4\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa%0 omit +\or\setBScolor{\Put@Direct(532,0){% + \if@clip \@clippingtrue \else \@clippingfalse\fi + \@pyrana}}% subst. on 1 + \or\setBScolor{\Put@Direct(412,-200){% + \if@eclip \@clippingtrue \else \@clippingfalse\fi + \@pyranb}}% subst. on 2 + \or\setBScolor{\Put@Direct(120,-200){% + \if@fclip \@clippingtrue \else \@clippingfalse\fi + \@pyranbb}}% subst. on 3 + \or\setBScolor{\Put@Direct(0,0){% + \if@aclip \@clippingtrue \else \@clippingfalse\fi + \@pyranc}}% subst. on 4 + \or\setBScolor{\Put@Direct(266,160){% + %\if@bclip \@clippingtrue \else \@clippingfalse\fi + %\@pyranbB}}% subst. on 5 + {\if@bclip \@acliptrue \put(0,-386){\@substa}%subst. on 5 bug fix 2013/06/25 + \else \@aclipfalse% subst. on 5 bug fix 2013/06/25 + \put(0,-406){\@substa}\fi}\@aclipfalse}}%%%\@pyranbB}}% subst. on 5 bug fix 2013/06/25 +\fi %end of ifcase +\fi\fi}% +\end{ShiftPicEnv}% +\iniatom\iniflag}% %end of \fivesugarh macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\resetflags} +% \begin{macrocode} +% (undefined) +% \end{macrocode} +% \end{macro} +% +% The front skeletal bonds of a furanose ring are typeset with a bold line and wedged lines. +% \changes{v5.01}{2013/06/25}{added the definition for \cs{fivesugarhw}} +% +% \begin{macro}{\fivesugarhw} +% \begin{macro}{\@fivesugarhw} +% \begin{macrocode} +\def\fivesugarhw{\@ifnextchar[{\@fivesugarhw}{\@fivesugarhw[]}} +\def\@fivesugarhw[#1]#2#3{% +\fivesugarh[#1]{5==O;1s==\WedgeAsSubst(0,0)(-3,-5){120};% +4s==\WedgeAsSubst(0,0)(3,-5){120};% +3s==\PutBondLine(-17,0)(307,0){2.8pt};#2}{#3}[abc]} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The command |\ylfuranoseposition| is to obtain the shift values +% |\@ylii| and |\@yli| which are used for shifting the standard +% point of a substituent. +% \changes{v1.02}{1998/10/23}{New commands for setting substituents} +% \changes{v2.01}{2001/6/20}{Added for position 5} +% +% \begin{macro}{\ylfuranoseposition} +% \begin{macrocode} +\def\ylfuranoseposition#1{% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpa%0 omit + \or\gdef\@ylii{-532}\gdef\@yli{0}\global\@ylswtrue% subst. on 1 + \or\gdef\@ylii{-412}\gdef\@yli{200}\global\@ylswtrue% subst. on 2 + \or\gdef\@ylii{-120}\gdef\@yli{200}\global\@ylswtrue% subst. on 3 + \or\gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% subst. on 4 + \or\gdef\@ylii{-266}\gdef\@yli{-160}\global\@ylswtrue% subst. on 5 +\fi%end of ifcase +\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% \subsection{Skeletal Bonds of fivesugarh} +% +% The macros |\fivesugarh| uses inner macros for setting +% skeletal bonds in accordance with the presence or the absence of +% hetero atoms. During the processes of such setting, +% the inner macros |\sugarhskbonda| to |\sugarhskbondc| +% (common to |\sixsugarh|) as well as +% |\fsugarhskbondd| to |\fsugarhskbonde| +% to set a bond on each edge of a five-membered ring. +% +% \begin{macro}{\fsugarhskbondd} +% The macro |\fsugarhskbondd| refers to the control sequences representing +% atoms on both of the terminal vertices (|\ddd| and |\eee|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +\def\fsugarhskbondd{% + \ifx\ddd\empty% + \ifx\eee\empty% + \Put@Line(0,0)(5,3){266}% %bond 4-5 + \else% + \Put@Line(0,0)(5,3){231}% %bond 4-5 + \fi% + \else% + \ifx\eee\empty% + \Put@Line(35,21)(5,3){231}% %bond 4-5 + \else% + \Put@Line(35,21)(5,3){200}% %bond 4-5 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\fsugarhskbonde} +% The macro |\fsugarhskbonde| refers to the control sequences representing +% atoms on both of the terminal vertices (|\eee| and |\aaa|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +%bond between 5 and 1 +\def\fsugarhskbonde{% + \ifx\aaa\empty% + \ifx\eee\empty% + \Put@Line(532,0)(-5,3){266}% %bond 5-1 + \else% + \Put@Line(532,0)(-5,3){231}% %bond 5-1 + \fi% + \else% + \ifx\eee\empty% + \Put@Line(497,21)(-5,3){231}% %bond 5-1 + \else% + \Put@Line(497,21)(-5,3){200}% %bond 5-1 + \fi\fi}% +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\set@hteatom@fivesugarh} +% The macro |\set@hteatom@fivesugarh| put a hetero atom +% on vertex no. 5 of |\fivesugarh|. +% +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +\def\set@hteatom@fivesugarh#1{% +\@forsemicol\member:=#1\do{% +\ifx\member\empty\else% +\expandafter\@m@mb@r\member;\relax% +\expandafter\twoCH@R\@membera//% +\@tmpaa=\@tmpa\relax +\ifnum\@tmpaa=5\relax + \if\@tmpb h\relax + \@bcliptrue% + \putratom{236}{130}{\@memberb}% % right type + \else\if\@tmpb s\relax + \@bclipfalse% + \putratom{266}{160}{\@memberb}% % right type + \else\if\@tmpb a\relax%omit fused position + \else + \@bcliptrue% + \putratom{236}{130}{\@memberb}% left type + \fi\fi\fi +\fi% end of ifnum +\fi +}}% end of the macro \set@hetatom@fivesugarh +% \end{macrocode} +% \end{macro} +% +% \subsection{Inner Double Bonds of fivesugarh} +% +% The macros |\fivesugarh| uses inner macros for setting +% skeletal bonds in accordance with the presence or the absence of +% hetero atoms. During the processes of such setting, +% the inner macros |\fsugarhbonda| to |\sugarhbondc| +% (common to |\sixsugarh|) as well as +% |\fsugarhbondd| and |\sugarhbonde| are used to set a bond +% on each edge of a five-membered ring. +% +% \begin{macro}{\fsugarhbondd} +% The macro |\fsugarhbondd| refers to the control sequences representing +% atoms on both of the terminal vertices (|\ddd| and |\eee|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +%bond between 4 and 5 +\def\fsugarhbondd{% + \ifx\ddd\empty% + \ifx\eee\empty% + \Put@Line(60,-10)(5,3){190}% %double bond 4-5 + \else% + \Put@Line(60,-10)(5,3){170}% %double bond 4-5 + \fi% + \else% + \ifx\eee\empty% + \Put@Line(80,6)(5,3){170}% %double bond 5-4 + \else% + \Put@Line(80,6)(5,3){160}% %double bond 5-4 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\fsugarhbonde} +% The macro |\fsugarhbonde| refers to the control sequences representing +% atoms on both of the terminal vertices (|\aaa| and |\eee|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +%bond between 5 and 1 +\def\fsugarhbonde{% + \ifx\aaa\empty% + \ifx\eee\empty% + \Put@Line(472,-10)(-5,3){190}% %double bond 5-1 + \else% + \Put@Line(472,-10)(-5,3){170}% %double bond 5-1 + \fi% + \else% + \ifx\eee\empty% + \Put@Line(452,6)(-5,3){170}% %double bond 5-1 + \else% + \Put@Line(452,6)(-5,3){160}% %double bond 5-1 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \section{Five-Membered Sugar Derivatives of Large Dimension} +% \subsection{General Conventions} +% +% The standard skeleton of cyclitol is selected +% to have the following locant numbers. +% +% \begin{verbatim} +% ******************** +% * Sugarh derivative * +% ******************** +% +% The following numbering is adopted in this macro. +% +% +% 5 +% * +% d * * e +% the original point ===> 4 * * 1 +% (0,0) * * a +% c ----- +% 3 b 2 +% \end{verbatim} +% +% +% The macro |\FiveSugarh| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \FiveSugarh(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] +% \end{verbatim} +% +% The |SKBONDLIST| argument contains pairs of two alphabets in +% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase +% character selected from bond specifiers `a' to `e' and a uppercase +% character `A' or `B'. +% +% The |BONDLIST| argument contains one +% character selected from a to 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 or [] : fully saturated form +% a : 1,2-double bond +% b : 2,3-double bond +% c : 4,3-double bond +% d : 4,5-double bond +% e : 5,1-double bond +% {n+} : not suported: plus at 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 6 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 (max 5 substitution positions) +% +% for n = 1 to 5 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nSA : single bond (down) at n-atom (for n=1) +% nSB : single bond (up) at n-atom (for n=1) +% nSa : alpha single bond at n-atom +% nSb : beta single bond at n-atom +% +% \end{verbatim} +% +% The argument |OMIT| represents one or more bonds to be omitted. +% The omitted edges may be regarded as both fused and non-fused +% positions. +% +% \begin{verbatim} +% OMIT: one or more bonds omitted (a, b, c, d, or e) +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% \FiveSugarh{6==O}{1Sa==OH;2Sa==OH} +% \end{verbatim} +% +% The definition of |\FiveSugarh| 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 dirctly +% (cf. |\setsixringh| for a |\sixheteroh|) +% \end{enumerate} +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \changes{v5.00}{2010/10/01}{For bond coloring} +% +% \begin{macro}{\FiveSugarh} +% \begin{macro}{\@Five@Sugarh} +% \begin{macro}{\@Five@@Sugarh} +% \begin{macro}{\@FiveSugarh} +% \begin{macrocode} +\def\FiveSugarh{\@ifnextchar({\@Five@Sugarh(@}{\@Five@Sugarh(@)}} +\def\@Five@Sugarh(#1){\@ifnextchar[{\@Five@@Sugarh(#1)[@}% +{\@Five@@Sugarh(#1)[@]}} +\def\@Five@@Sugarh(#1)[#2]#3#4{\@ifnextchar[% +{\@FiveSugarh(#1)[#2]{#3}{#4}[@}% +{\@FiveSugarh(#1)[#2]{#3}{#4}[@]}} +\def\@FiveSugarh(#1)[#2]#3#4[#5]{% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%% +% % treatment of atom list % +% %%%%%%%%%%%%%%%%%%%%%%%%%% +\iniatom\iniflag%initialize +\test@vrtx@SixSugarh{#3}%common to six-membered ring +%test for a hetero atom or a spiro substituent on a vertex +\@reset@ylsw% +\ylFiveSugarhposition{#4}%shift values +\begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(1100,800)(-240,-400){FiveSugarh}%2002/4/30 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +{\resetbdsw% +\@bond@@omit{#5}%%%|\@aaa| etc. are empty if they are omitted. +\molfronttrue +\@fivememberedfalse%common bonds to a six-membered ring +\set@skel@Sugarhbond{#1}{a}{a}% + %bond between 1 and 2 \@aaa -> \Sugarhskbonda etc +\set@skel@Sugarhbond{#1}{b}{b}% + %bond between 2 and 3 \@bbb -> \Sugarhskbondb etc +\set@skel@Sugarhbond{#1}{c}{c}% + %bond between 3 and 4 \@ccc -> \Sugarhskbondc etc +\molfrontfalse +\@fivememberedtrue%only five-membered ring +\set@skel@Sugarhbond{#1}{d}{d}% + %bond between 4 and 5 \@ddd -> \fSugarhskbondd etc +\set@skel@Sugarhbond{#1}{e}{e}% + %bond between 5 and 1 \@eee -> \fSugarhskbonde etc +}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\@tfor\member:=#2\do{% +\if\member r\relax %%% no action \Sugarhbondd \Sugarhbondf \Sugarhbondb% +\else \if\member l\relax %% noaction \Sugarhbonda \Sugarhbondc \Sugarhbonde% +\else \if\member a\relax \Sugarhbonda% +\else \if\member b\relax \Sugarhbondb% +\else \if\member c\relax \Sugarhbondc% +\else \if\member d\relax \fSugarhbondd% +\else \if\member e\relax \fSugarhbonde% +\else \if\member A% no action: %%left aromatic circle +% \Put@oCircle(203,0){240}% %circle +% %%%%%%%%%%%%%%%%%%%%%%%%% +% % inner bond attachment % +% %%%%%%%%%%%%%%%%%%%%%%%%% +%\else +% \expandafter\twoCH@@R\member//% +% \set@fusionadd@sixhi +% \ifx\@@tmpa\empty% +% \XyMTeXWarning{Fused function is unavailable for FiveSugarh.}\fi +\fi\fi\fi\fi\fi\fi\fi\fi}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting hetero atoms % +% %%%%%%%%%%%%%%%%%%%%%%%% +\iniatom\iniflag%initialize +\set@hetatom@Sugarh{#3}{-3}{0}{2}{1}% %subst 4 +\set@hetatom@Sugarh{#3}{3}{3}{7}{1}% %subst 1 -- 3 +\set@hteatom@FiveSugarh{#3}% %subst 5 +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents % +% %%%%%%%%%%%%%%%%%%%%%%%% +\@forsemicol\member:=#4\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa%0 omit + \or\setBScolor{\Put@Direct(668,0){% + \if@clip \@clippingtrue \else \@clippingfalse\fi + \@pyrana}}% subst. on 1 + \or\setBScolor{\Put@Direct(513,-255){% + \if@eclip \@clippingtrue \else \@clippingfalse\fi + \@pyranb}}% subst. on 2 + \or\setBScolor{\Put@Direct(153,-255){% + \if@fclip \@clippingtrue \else \@clippingfalse\fi + \@pyranbb}}% subst. on 3 + \or\setBScolor{\Put@Direct(0,0){% + \if@aclip \@clippingtrue \else \@clippingfalse\fi + \@pyranc}}% subst. on 4 + \or\setBScolor{\Put@Direct(333,200){% + \if@bclip \@clippingtrue \else \@clippingfalse\fi + \@pyranbB}}% subst. on 5 +\fi %end of ifcase +\fi\fi}% +\end{ShiftPicEnv}% +\iniatom\iniflag}% %end of \FiveSugarh macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The command |\ylFiveSugarhposition| is to obtain the shift values +% |\@ylii| and |\@yli| which are used for shifting the standard +% point of a substituent. +% \changes{v1.02}{1998/10/25}{New commands for setting substituents} +% +% \begin{macro}{\ylFiveSugarhposition} +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +\def\ylFiveSugarhposition#1{% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpa%0 omit + \or\gdef\@ylii{-668}\gdef\@yli{0}\global\@ylswtrue% subst. on 1 + \or\gdef\@ylii{-513}\gdef\@yli{255}\global\@ylswtrue% subst. on 2 + \or\gdef\@ylii{-153}\gdef\@yli{255}\global\@ylswtrue% subst. on 3 + \or\gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% subst. on 4 + \or\gdef\@ylii{-333}\gdef\@yli{-200}\global\@ylswtrue% subst. on 5 +\fi%end of ifcase +\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% \subsection{Skeletal Bonds of FiveSugarh} +% +% The macros |\FiveSugarh| uses inner macros for setting +% skeletal bonds in accordance with the presence or the absence of +% hetero atoms. During the processes of such setting, +% the inner macros |\sugarhskbonda| to |\sugarhskbondc| +% (common to |\sixsugarh|) as well as +% |\fSugarhskbondd| to |\fSugarhskbonde| +% to set a bond on each edge of a five-membered ring. +% +% \begin{macro}{\fSugarhskbondd} +% The macro |\fSugarhskbondd| refers to the control sequences representing +% atoms on both of the terminal vertices (|\ddd| and |\eee|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +\def\fSugarhskbondd{% + \ifx\ddd\empty% + \ifx\eee\empty% + \Put@Line(0,0)(5,3){333}% %bond 4-5 + \else% + \Put@Line(0,0)(5,3){298}% %bond 4-5 + \fi% + \else% + \ifx\eee\empty% + \Put@Line(35,21)(5,3){298}% %bond 4-5 + \else% + \Put@Line(35,21)(5,3){263}% %bond 4-5 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\fSugarhskbonde} +% The macro |\fSugarhskbonde| refers to the control sequences representing +% atoms on both of the terminal vertices (|\eee| and |\aaa|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +%bond between 5 and 1 +\def\fSugarhskbonde{% + \ifx\aaa\empty% + \ifx\eee\empty% + \Put@Line(668,0)(-5,3){333}% %bond 5-1 + \else% + \Put@Line(668,0)(-5,3){298}% %bond 5-1 + \fi% + \else% + \ifx\eee\empty% + \Put@Line(633,21)(-5,3){298}% %bond 5-1 + \else% + \Put@Line(633,21)(-5,3){263}% %bond 5-1 + \fi\fi}% +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\set@hteatom@FiveSugarh} +% The macro |\set@hteatom@FiveSugarh| put a hetero atom +% on vertex no. 5 of |\FiveSugarh|. +% +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +\def\set@hteatom@FiveSugarh#1{% +\@forsemicol\member:=#1\do{% +\ifx\member\empty\else% +\expandafter\@m@mb@r\member;\relax% +\expandafter\twoCH@R\@membera//% +\@tmpaa=\@tmpa\relax +\ifnum\@tmpaa=5\relax + \if\@tmpb h\relax + \@bcliptrue% + \putratom{303}{170}{\@memberb}% % right type + \else\if\@tmpb s\relax + \@bclipfalse% + \putratom{333}{200}{\@memberb}% % right type + \else\if\@tmpb a\relax%omit fused position + \else + \@bcliptrue% + \putratom{303}{170}{\@memberb}% left type + \fi\fi\fi +\fi% end of ifnum +\fi +}}% end of the macro \set@hetatom@FiveSugarh +% \end{macrocode} +% \end{macro} +% +% \subsection{Inner Double Bonds of FiveSugarh} +% +% The macros |\FiveSugarh| uses inner macros for setting +% skeletal bonds in accordance with the presence or the absence of +% hetero atoms. During the processes of such setting, +% the inner macros |\Sugarhbonda| to |\Sugarhbondc| +% (common to |\SixSugarh|) as well as +% |\fSugarhbondd| and |\fSugarhbonde| are used to set a bond +% on each edge of a five-membered ring. +% +% \begin{macro}{\fSugarhbondd} +% The macro |\fSugarhbondd| refers to the control sequences representing +% atoms on both of the terminal vertices (|\ddd| and |\eee|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +%bond between 4 and 5 +\def\fSugarhbondd{% + \ifx\ddd\empty% + \ifx\eee\empty% + \Put@Line(60,-10)(5,3){257}% %double bond 4-5 + \else% + \Put@Line(60,-10)(5,3){237}% %double bond 4-5 + \fi% + \else% + \ifx\eee\empty% + \Put@Line(80,6)(5,3){237}% %double bond 5-4 + \else% + \Put@Line(80,6)(5,3){227}% %double bond 5-4 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\fSugarhbonde} +% The macro |\fSugarhbonde| refers to the control sequences representing +% atoms on both of the terminal vertices (|\aaa| and |\eee|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \changes{v2.01}{2001/6/20}{Newly defined.} +% \begin{macrocode} +%bond between 5 and 1 +\def\fSugarhbonde{% + \ifx\aaa\empty% + \ifx\eee\empty% + \Put@Line(608,-10)(-5,3){257}% %double bond 5-1 + \else% + \Put@Line(608,-10)(-5,3){237}% %double bond 5-1 + \fi% + \else% + \ifx\eee\empty% + \Put@Line(588,6)(-5,3){237}% %double bond 5-1 + \else% + \Put@Line(588,6)(-5,3){227}% %double bond 5-1 + \fi\fi}% +%</hcycle> +% \end{macrocode} +% \end{macro} +% +% \Finale +% +\endinput +%</hcycle> diff --git a/Master/texmf-dist/source/latex/xymtex/base/hcycle.ins b/Master/texmf-dist/source/latex/xymtex/base/hcycle.ins new file mode 100644 index 00000000000..14129d36baf --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/hcycle.ins @@ -0,0 +1,55 @@ +\def\batchfile{hcycle.ins} +\input docstrip.tex +\preamble + +This is a generated file. + +Copyright 1996,1998,2001,2002,2004,2010,2013 by Shinsaku Fujita +all rights reserved. +This style file is created for drawing chemical structural formulas +This style file is to be contained in the ``xymtex'' directory which +is an input directory for TeX. + +This file is part of the XyMTeX system. +======================================= + +Old Versions: +Version 1.01 Released on August 16, 1996 +Version 1.02 Released on October 31, 1996 (private version) +Version 2.00 Released on December 25, 1998 +Version 2.01 Released on June 20, 2001 (private version) +Version 3.00 Released on April 30, 2002 +Version 4.00 Released on May 30, 2002 (private version) +Version 4.01 Released on August 30, 2002 +Version 5.00 Released on October 01, 2010 +Version 5.01b Released on March 30, 2013 + +The Present Version: +Version 5.01 Released on June 25, 2013 + +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 hcycle.dtx and hcycle.ins +and the derived file hcycle.sty. + +======================================= +\endpreamble + +\keepsilent + +\generateFile{hcycle.drv}{t}{% + \from{hcycle.dtx}{driver}} + +\generateFile{hcycle.sty}{t}{% + \from{hcycle.dtx}{hcycle}} + +\endinput diff --git a/Master/texmf-dist/source/latex/xymtex/base/hetarom.dtx b/Master/texmf-dist/source/latex/xymtex/base/hetarom.dtx new file mode 100644 index 00000000000..a61bca3e297 --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/hetarom.dtx @@ -0,0 +1,8620 @@ +% \iffalse meta-comment +%% File: hetarom.dtx +% +% Copyright 1993,1996,1998,2000,2002,2004,2006,2010,2013 by Shinsaku Fujita +% +% This file is part of XyMTeX system. +% ------------------------------------- +% +% This file is a successor to: +% +% hetarom.sty +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 1.00} +% \typeout{ -- Released December 1, 1993 by Shinsaku Fujita} +% Copyright (C) 1993 by Shinsaku Fujita, all rights reserved. +% +% This file is a part of the macro package ``XyMTeX'' which has been +% designed for typesetting chemical structural formulas. +% +% This file is to be contained in the ``xymtex'' directory which is +% an input directory for TeX. It is a LaTeX optional style file and +% should be used only within LaTeX, because several macros of the file +% are based on LaTeX commands. +% +% For the review of XyMTeX, see +% (1) Shinsaku Fujita, ``Typesetting structural formulas with the text +% formatter TeX/LaTeX'', Computers and Chemistry, in press. +% The following book deals with an application of TeX/LaTeX to +% preparation of manuscripts of chemical fields: +% (2) Shinsaku Fujita, ``LaTeX for Chemists and Biochemists'' +% Tokyo Kagaku Dozin, Tokyo (1993) [in Japanese]. +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% The Current Maintainer of this work is Shinsaku Fujita. +% +% This work consists of the files hetarom.dtx and hetarom.ins +% and the derived file hetarom.sty. +% +% Please report any bugs, comments, suggestions, etc. to: +% Shinsaku Fujita, +% Shonan Institute of Chemoinformatics and Mathematical Chemistry +% Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun, Kanagawa 250-0019 Japan +% (old address) +% Ashigara Research Laboratories, Fuji Photo Film Co., Ltd., +% Minami-Ashigara, Kanagawa-ken, 250-01, Japan. +% (old address) +% Department of Chemistry and Materials Technology, +% Kyoto Institute of Technology, \\ +% Matsugasaki, Sakyoku, Kyoto, 606 Japan +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hetarom} +% \def\versi@ndate{December 01, 1993} +% \def\versi@nno{ver1.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hetarom} +% \def\versi@ndate{August 16, 1996} +% \def\versi@nno{ver1.01} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hetarom} +% \def\versi@ndate{October 31, 1998} +% \def\versi@nno{ver1.02} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hetarom} +% \def\versi@ndate{December 25, 1998} +% \def\versi@nno{ver2.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hetarom} +% \def\versi@ndate{November 11, 2000} +% \def\versi@nno{ver2.00a} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hetarom} +% \def\versi@ndate{June 20, 2001} +% \def\versi@nno{ver2.01} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hetarom} +% \def\versi@ndate{April 30, 2002} +% \def\versi@nno{ver3.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hetarom} +% \def\versi@ndate{May 30, 2002} +% \def\versi@nno{ver4.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hetarom} +% \def\versi@ndate{August 30, 2004} +% \def\versi@nno{ver4.01} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hetarom} +% \def\versi@ndate{December 20, 2004} +% \def\versi@nno{ver4.02} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hetarom} +% \def\versi@ndate{September 5, 2006} +% \def\versi@nno{ver4.03b} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hetarom} +% \def\versi@ndate{October 01, 2010} +% \def\versi@nno{ver5.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \fi +% +% \CheckSum{9032} +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +% +% \setcounter{StandardModuleDepth}{1} +% +% \StopEventually{} +% \MakeShortVerb{\|} +% +% \iffalse +% \changes{v1.01}{1996/06/27}{first edition for LaTeX2e} +% \changes{v1.02}{1998/10/31}{revised edition for LaTeX2e} +% \changes{v2.00}{1998/12/25}{enhanced edition for LaTeX2e} +% \changes{v2.00a}{1998/11/11}{bug fix} +% \changes{v2.01}{2001/06/20}{Size reduction and Clip infomation} +% \changes{v2.01}{2001/06/21}{The command \cs{dotorline} is added.} +% \changes{v3.00}{2002/04/30}{sfpicture environment etc.} +% \changes{v4.00}{2002/05/30}{PostScript output and ShiftPicEnv} +% \changes{v4.01}{2004/08/30}{Minor additions} +% \changes{v4.02}{2004/12/20}{Exception to wedged bonds} +% \changes{v4.02a}{2004/12/27}{Bug fix: \cs{ggg} to \cs{gggA}} +% \changes{v4.03b}{2006/9/5}{Bug fix: \cs{decahetero} and \cs{nonahetero}} +% \changes{v5.00}{2010/10/01}{for bond coloring and the LaTeX Project Public License} +% \changes{v5.01}{2013/03/19}{Three and four-membered specfic commands are added} +% \fi +% +% \iffalse +%<*driver> +\NeedsTeXFormat{pLaTeX2e} +% \fi +\ProvidesFile{hetarom.dtx}[2013/03/19 v5.01 XyMTeX{} package file] +% \iffalse +\documentclass{ltxdoc} +\GetFileInfo{hetarom.dtx} +% +% %%XyMTeX Logo: Definition 2%%% +\def\UPSILON{\char'7} +\def\XyM{X\kern-.30em\smash{% +\raise.50ex\hbox{\UPSILON}}\kern-.30em{M}} +\def\XyMTeX{\XyM\kern-.1em\TeX} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\title{Heterocycles of vertical type by {\sffamily hetarom.sty} +(\fileversion) of \XyMTeX{}} +\author{Shinsaku Fujita \\ +Shonan Institute of Chemoinformatics and Mathematical Chemistry, \\ +Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun, Kanagawa 250-0019 Japan +% % (old address) +% %Department of Chemistry and Materials Technology, \\ +% %Kyoto Institute of Technology, \\ +% %Matsugasaki, Sakyoku, Kyoto, 606-8585 Japan +% %% (old address) +% %% Ashigara Research Laboratories, +% %% Fuji Photo Film Co., Ltd., \\ +% %% Minami-Ashigara, Kanagawa, 250-01 Japan +} +\date{\filedate} +% +\begin{document} + \maketitle + \DocInput{hetarom.dtx} +\end{document} +%</driver> +% \fi +% +% \section{Introduction}\label{hetarom:intro} +% +% \subsection{Options for {\sffamily docstrip}} +% +% \DeleteShortVerb{\|} +% \begin{center} +% \begin{tabular}{|l|l|} +% \hline +% \emph{option} & \emph{function}\\ \hline +% hetarom & hetarom.sty \\ +% driver & driver for this dtx file \\ +% \hline +% \end{tabular} +% \end{center} +% \MakeShortVerb{\|} +% +% \subsection{Version Information} +% +% \begin{macrocode} +%<*hetarom> +\typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 5.01} +\typeout{ -- Released March 19, 2013 by Shinsaku Fujita} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\j@urnalname{hetarom} +\def\versi@ndate{March 19, 2013} +\def\versi@nno{ver5.01} +\def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\typeout{XyMTeX Macro File `\j@urnalname' (\versi@nno) <\versi@ndate>% +\space[\copyrighth@lder]} +% \end{macrocode} +% +% \section{List of commands for hetarom.sty} +% +% \begin{verbatim} +% ********************************* +% * hetarom.sty: list of commands * +% ********************************* +% +% <Various flags (switches)> +% +% \if@gclip \@gclipfalse \@gcliptrue +% \if@hclip \@hclipfalse \@hcliptrue +% \if@iclip \@iclipfalse \@icliptrue +% \if@jclip \@jclipfalse \@jcliptrue +% \iniflag +% \iniatom +% \aaa +% \bbb +% \ccc +% \ddd +% \eee +% \fff +% \gggA +% \hhh +% \iii +% \jjj +% \end{verbatim} +% +% \begin{verbatim} +% +% <Six-Membered Heterocycles> +% Setting inner double bonds +% +% \bonda +% \bondb +% \bondc +% \bondd +% \bonde +% \bondf +% \bondhoriz +% \bondhorizi +% +% Setting skeletal bonds +% +% \skbonda +% \skbondf +% \skbondc +% \skbondd +% \skbondb +% \skbonde +% \skbondhoriz +% \skbondhorizi +% +% Setting dotted skeletal bonds +% +% \dotskbonda +% \dotskbondf +% \dotskbondc +% \dotskbondd +% \dotskbondb +% \dotskbonde +% \dotskbondhoriz +% \dotskbondhorizi +% +% Basic Macros +% +% \sixheterov \@sixheterov +% \sixheterovi \@sixheterovi +% +% Application Macros +% +% \pyridinev \@pyridinev +% \pyridinevi \@pyridinevi +% \pyrazinev \@pyrazinev +% \pyrimidinev \@pyrimidinev +% \pyrimidinevi \@pyrimidinevi +% \pyridazinev \@pyridazinev +% \pyridazinevi \@pyridazinevi +% \triazinev \@triazinev +% \triazinevi \@triazinevi +% \end{verbatim} +% +% \begin{verbatim} +% +% <Five-Membered Heterocycles> +% Basic Macros +% +% \fiveheterov \@fiveheterov +% \fiveheterovi \@fiveheterovi +% +% Application Macros +% +% \pyrrolev \@pyrrolev +% \pyrazolev \@pyrazolev +% \imidazolev \@imidazolev +% \isoxazolev \@isoxazolev +% \oxazolev \@oxazolev +% +% \furanv \@furanv +% \thiophenev \@thiophenev +% +% \pyrrolevi \@pyrrolevi +% \pyrazolevi \@pyrazolevi +% \imidazolevi \@imidazolevi +% \isoxazolevi \@isoxazolevi +% \oxazolevi \@oxazolevi +% +% \furanvi \@furanvi +% \thiophenevi \@thiophenevi +% \end{verbatim} +% +% \begin{verbatim} +% +% <Six-Six-Fused Heterocycles> +% Basic Macros +% +% \decaheterov \@decaheterov +% \decaheterovi \@decaheterovi +% \decaheterovb \@decaheterovb +% \decaheterovt \@decaheterovt +% +% Adjustment Macros (for structures as substituents) +% \changes{v1.02}{1998/10/16}{Newly added command} +% +% \clipdetection +% \ylhetposition +% \ylhetpositionb +% \ylhetpositiont +% +% Application Macros +% +% \quinolinev \@quinolinev +% \quinolinevi \@quinolinevi +% \quinolinevb \@quinolinevb +% \quinolinevt \@quinolinevt +% +% \isoquinolinev \@isoquinolinev +% \isoquinolinevi \@isoquinolinevi +% \isoquinolinevb \@isoquinolinevb +% \isoquinolinevt \@isoquinolinevt +% +% \quinoxalinev \@quinoxalinev +% \quinoxalinevi \@quinoxalinevi +% \quinoxalinevb \@quinoxalinevb +% \quinoxalinevt \@quinoxalinevt +% +% \quinazolinev \@quinazolinev +% \quinazolinevi \@quinazolinevi +% \quinazolinevb \@quinazolinevb +% \quinazolinevt \@quinazolinevt +% +% \cinnolinev \@cinnolinev +% \cinnolinevi \@cinnolinevi +% \cinnolinevb \@cinnolinevb +% \cinnolinevt \@cinnolinevt +% +% \pteridinev \@pteridinev +% \pteridinevi \@pteridinevi +% \pteridinevb \@pteridinevb +% \pteridinevt \@pteridinevt +% \end{verbatim} +% +% \begin{verbatim} +% +% <Six-Five-Fused Heterocycles> +% Basic Macros +% +% \nonaheterov \@nonaheterov +% \nonaheterovi \@nonaheterovi +% +% Application Macros +% +% \purinev \@purinev +% \purinevi \@purinevi +% \indolev \@indolev +% \indolevi \@indolevi +% \indolizinev \@indolizinev +% \indolizinevi \@indolizinevi +% \isoindolev \@isoindolev +% \isoindolevi \@isoindolevi +% \benzofuranev \@benzofuranev +% \benzofuranevi \@benzofuranevi +% \isobenzofuranev \@isobenzofuranev +% \isobenzofuranevi \@isobenzofuranevi +% \benzoxazolev \@benzoxazolev +% \benzoxazolevi \@benzoxazolevi +% \end{verbatim} +% +% \begin{verbatim} +% +% <Four-Membered Heterocycles> +% Setting bonds +% \bondshoriz \bondshorizi +% \skbondshoriz \skbondshorizi +% +% Basic Macros +% +% \fourhetero \@fourhetero +% +% Application Macros +% +% \oxetane +% \azetidine +% +% \end{verbatim} +% +% \begin{verbatim} +% +% <Four-Membered Heterocycles> +% Setting inner double bonds +% +% \bondtria \bondtrib +% \skbondtria \skbondtrib +% \Bondtria \Bondtrib +% \skBondtria \skBondtrib +% +% Basic Macros +% +% (\fourhetero) (\@fourhetero) +% \set@fusionadd@fourv \set@fusion@fourv +% +% <Three-Membered Heterocycles> +% +% \threehetero \@threehetero +% \threeheteroi \@threeheteroi +% +% \threeheterov \@threeheterov +% \threeheterovi \@threeheterovi +% +% \set@fusionadd@threev \set@fusion@threev +% \set@fusionadd@threevi \set@fusion@threevi +% +% Application Macros +% +% \oxiranev \oxiranevi +% \aziridinev \aziridinevi +% \thiiranev \thiiranevi +% +% \end{verbatim} +% +% \begin{verbatim} +% +% <Building Units> +% +% \sixunitv \@sixunitv +% \fiveunitv \@fiveunitv +% \fiveunitvi \@fiveunitvi +% \end{verbatim} +% +% \section{Input of basic macros} +% +% To assure the compatibility to \LaTeX{}2.09 (the native mode), +% the commands added by \LaTeXe{} have not been used in the resulting sty +% files ({\sf hetarom.sty} for the present case). Hence, the combination +% of |\input| and |\@ifundefined| is used to crossload sty +% files ({\sf chemstr.sty} for the present case) in place of the +% |\RequirePackage| command of \LaTeXe{}. +% +% \begin{macrocode} +% ************************* +% * input of basic macros * +% ************************* +\@ifundefined{setsixringv}{\input chemstr.sty\relax}{}% +\unitlength=0.1pt% +% \end{macrocode} +% +% The following switches and macros have been moved to {\sf chemstr.sty}; +% hence, they are commented out. +% \begin{macrocode} +% % **************************** +% % * various flags (switches) * +% % **************************** +% \newif\if@gclip \@gclipfalse% +% \newif\if@hclip \@hclipfalse% +% \newif\if@iclip \@iclipfalse% +% \newif\if@jclip \@jclipfalse% +% \def\iniflag{% +% \@aclipfalse \@bclipfalse\@cclipfalse\@clipfalse\@eclipfalse% +% \@fclipfalse\@gclipfalse\@hclipfalse\@iclipfalse\@jclipfalse% +% \@clipfusefalse}% +% \def\iniatom{% +% \def\aaa{}\def\bbb{}\def\ccc{}\def\ddd{}\def\eee{}\def\fff{}% +% \def\gggA{}\def\hhh{}\def\iii{}\def\jjj{}% +% \def\@aaa{}\def\@bbb{}\def\@ccc{}\def\@ddd{}\def\@eee{}\def\@fff{}% +% }% +% \def\resetbdsw{\gdef\@aaa{a}\gdef\@bbb{b}\gdef\@ccc{c}% +% \gdef\@ddd{d}\gdef\@eee{e}\gdef\@fff{f}}% +% \end{macrocode} +% +% \section{Initialization} +% +% \begin{macrocode} +\iniatom% +% \end{macrocode} +% +% \section{Macros for setting bonds} +% \subsection{Inner double bonds} +% +% The macros |\sixhetero| and |\fivehetero| use internal macros for setting +% inner double bonds in accordance with the presence or the absence of +% hetero atoms. During the processes of such setting, +% the inner macros |\bonda| to |\bondf| are used to set a bond +% on each edge of a six- or five-membered ring; and +% the inner macros |\bondz| to |\bondzi| draw horizontal bonds +% of a five-membered ring. +% +% Note that +% comments (conerning locant numbers) on the end of each row have +% lost the exact meaning, +% since such a command moiety is used in many macros after copying. +% +% \begin{verbatim} +% ****************************** +% * setting inner double bonds * +% ****************************** +% The following numbering is adopted in these macros. +% aaa +% 1 +% f * a +% fff 6 * * 2 bbb +% e | | b +% | | +% eee 5 * * 3 ccc +% d * c +% 4 <===== the original point +% ddd +% \end{verbatim} +% +% \begin{macro}{\bonda} +% The macro |\bonda| refers to the control sequences representing +% atoms on both of the terminal vertices (|\aaa| and |\bbb|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +% bond between 1 and 2 +\def\bonda{% + \ifx\aaa\empty% + \ifx\bbb\empty% + \Put@Line(6,364)(5,-3){126}% %double bond 1-2 + \else% + \Put@Line(6,364)(5,-3){100}% %double bond 1-2 + \fi% + \else% + \ifx\bbb\empty% + \Put@Line(35,340)(5,-3){100}% %double bond 1-2 + \else% + \Put@Line(35,352)(5,-3){100}% %double bond 1-2 + \fi% % line <1OO not available + \fi% + }% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bondb} +% The macro |\bondb| refers to the control sequences representing +% atoms on both of the terminal vertices (|\bbb| and |\ccc|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +% bond between 3 and 2 + \def\bondb{% + \ifx\bbb\empty% + \ifx\ccc\empty% + \Put@Line(138,129)(0,1){148}% %double bond 3-2 + \else% + \Put@Line(138,143)(0,1){134}% %double bond 3-2 + \fi% + \else% + \ifx\ccc\empty% + \Put@Line(138,129)(0,1){134}% %double bond 3-2 + \else% + \Put@Line(138,143)(0,1){110}% %double bond 3-2 + \fi% + \fi% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bondc} +% The macro |\bondc| refers to the control sequences representing +% atoms on both of the terminal vertices (|\ddd| and |\ccc|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +% bond between 4 and 3 + \def\bondc{% + \ifx\ddd\empty% + \ifx\ccc\empty% + \Put@Line(6,42)(5,3){126}% %double bond 4-3 + \else% + \Put@Line(6,42)(5,3){100}% %double bond 4-3 + \fi% + \else% + \ifx\ccc\empty% + \Put@Line(35,66)(5,3){100}% %double bond 4-3 + \else% + \Put@Line(35,60)(5,3){100}% %double bond 4-3 + \fi% % line <1OO not available + \fi% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bondd} +% The macro |\bondd| refers to the control sequences representing +% atoms on both of the terminal vertices (|\ddd| and |\eee|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +% bond between 4 and 5 + \def\bondd{% + \ifx\ddd\empty% + \ifx\eee\empty% + \Put@Line(-6,42)(-5,3){126}% %double bond 4-5 + \else% + \Put@Line(-6,42)(-5,3){100}% %double bond 4-5 + \fi% + \else% + \ifx\eee\empty% + \Put@Line(-35,66)(-5,3){100}% %double bond 4-5 + \else% + \Put@Line(-35,60)(-5,3){100}% %double bond 4-5 + \fi% % line <1OO not available + \fi% + }% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bonde} +% The macro |\bonde| refers to the control sequences representing +% atoms on both of the terminal vertices (|\fff| and |\eee|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +% bond between 5 and 6 +\def\bonde{% + \ifx\fff\empty% + \ifx\eee\empty% + \Put@Line(-138,129)(0,1){148}% %double bond 5-6 + \else% + \Put@Line(-138,143)(0,1){134}% %double bond 5-6 + \fi% + \else% + \ifx\eee\empty% + \Put@Line(-138,129)(0,1){134}% %double bond 5-6 + \else% + \Put@Line(-138,143)(0,1){110}% %double bond 5-6 + \fi% + \fi% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bondf} +% The macro |\bondf| refers to the control sequences representing +% atoms on both of the terminal vertices (|\aaa| and |\fff|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +% bond between 1 and 6 +\def\bondf{% + \ifx\aaa\empty% + \ifx\fff\empty% + \Put@Line(-6,364)(-5,-3){126}% %double bond 1-6 + \else% + \Put@Line(-6,364)(-5,-3){100}% %double bond 1-6 + \fi% + \else% + \ifx\fff\empty% + \Put@Line(-35,340)(-5,-3){100}% %double bond 1-6 +% \Put@Line(-6,364)(-5,-3){126}% %double bond 1-6 bug fix 2010/10/01 + \else% + \Put@Line(-35,352)(-5,-3){100}% %double bond 1-6 + \fi% % line <1OO not available + \fi% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bondz} +% The macro |\bondz| refers to the control sequences representing +% atoms on both of the terminal vertices (|\fff| and |\bbb|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +% horizontal inner bond for five-membered rings +\def\bondhoriz{% + \ifx\fff\empty% + \ifx\bbb\empty% + \Put@Line(-138,270)(1,0){277}% %double bond 4-3 + \else% + \Put@Line(-138,270)(1,0){258}% %double bond 4-3 + \fi% + \else% + \ifx\bbb\empty% + \Put@Line(-120,270)(1,0){258}% %double bond 4-3 + \else% + \Put@Line(-120,270)(1,0){239}% %double bond 4-3 + \fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bondzi} +% The macro |\bondzi| refers to the control sequences representing +% atoms on both of the terminal vertices (|\eee| and |\ccc|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +% horizontal inner bond for five-membered rings (inverse type) +\def\bondhorizi{% + \ifx\eee\empty% + \ifx\ccc\empty% + \Put@Line(-138,136)(1,0){277}% %double bond 4-3 + \else% + \Put@Line(-138,136)(1,0){258}% %double bond 4-3 + \fi% + \else% + \ifx\ccc\empty% + \Put@Line(-120,136)(1,0){258}% %double bond 4-3 + \else% + \Put@Line(-120,136)(1,0){239}% %double bond 4-3 + \fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% \subsection{Skeletal bonds} +% +% The macros |\sixhetero| and |\fivehetero| use inner macros for setting +% skeletal bonds in accordance with the presence or the absence of +% hetero atoms. During the processes of such setting, +% the inner macros |\skbonda| to |\skbondf| are used to set a bond +% on each edge of a six- or five-membered ring; and +% the inner macros |\skbondz| to |\skbondzi| draw horizontal bonds +% of a five-membered ring. +% +% \begin{verbatim} +% ************************** +% * setting skeletal bonds * +% ************************** +% The following numbering is adopted in this macro. +% aaa +% 1 +% f * a +% fff 6 * * 2 bbb +% e | | b +% | | +% eee 5 * * 3 ccc +% d * c +% 4 <===== the original point +% ddd +% +% \end{verbatim} +% +% \begin{macro}{\skbonda} +% The macro |\skbonda| refers to the control sequences representing +% atoms on both of the terminal vertices (|\aaa| and |\bbb|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%bond between 1 and 2 +\def\skbonda{% + \ifx\aaa\empty% + \ifx\bbb\empty% + \Put@Line(0,406)(5,-3){171}% %bond 1-2 + \else% + \Put@Line(0,406)(5,-3){136}% %bond 1-2 + \fi% + \else% + \ifx\bbb\empty% + \Put@Line(35,385)(5,-3){136}% %bond 1-2 + \else% + \Put@Line(35,385)(5,-3){100}% %bond 1-2 + \fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\skbondf} +% The macro |\skbonda| refers to the control sequences representing +% atoms on both of the terminal vertices (|\aaa| and |\fff|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%bond between 1 and 6 +\def\skbondf{% + \ifx\aaa\empty% + \ifx\fff\empty% + \Put@Line(0,406)(-5,-3){171}% %bond 1-6 + \else% + \Put@Line(0,406)(-5,-3){136}% %bond 1-6 + \fi% + \else% + \ifx\fff\empty% + \Put@Line(-35,385)(-5,-3){136}% %bond 1-6 + \else% + \Put@Line(-35,385)(-5,-3){100}% %bond 1-6 + \fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\skbondc} +% The macro |\skbondc| refers to the control sequences representing +% atoms on both of the terminal vertices (|\ccc| and |\ddd|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%bond between 4 and 3 +\def\skbondc{% + \ifx\ddd\empty% + \ifx\ccc\empty% + \Put@Line(0,0)(5,3){171}% %bond 4-3 + \else% + \Put@Line(0,0)(5,3){136}% %bond 4-3 + \fi% + \else% + \ifx\ccc\empty% + \Put@Line(35,21)(5,3){138}% %bond 4-3 + \else% + \Put@Line(35,21)(5,3){100}% %bond 4-3 + \fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\skbondd} +% The macro |\skbondd| refers to the control sequences representing +% atoms on both of the terminal vertices (|\ddd| and |\eee|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%bond between 4 and 5 +\def\skbondd{% + \ifx\ddd\empty% + \ifx\eee\empty% + \Put@Line(0,0)(-5,3){171}% %bond 4-5 + \else% + \Put@Line(0,0)(-5,3){136}% %bond 4-5 + \fi% + \else% + \ifx\eee\empty% + \Put@Line(-35,21)(-5,3){138}% %bond 4-5 + \else% + \Put@Line(-35,21)(-5,3){100}% %bond 4-5 + \fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\skbondb} +% The macro |\skbondb| refers to the control sequences representing +% atoms on both of the terminal vertices (|\bbb| and |\ccc|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%bond between 3 and 2 +\def\skbondb{% + \ifx\bbb\empty%% + \ifx\ccc\empty%% + \Put@Line(171,103)(0,1){200}% %bond 3-2 + \else% + \Put@Line(171,143)(0,1){160}% %bond 3-2 + \fi% + \else% + \ifx\ccc\empty%% + \Put@Line(171,103)(0,1){150}% %bond 3-2 + \else% + \Put@Line(171,143)(0,1){110}% %bond 3-2 + \fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\skbonde} +% The macro |\skbonde| refers to the control sequences representing +% atoms on both of the terminal vertices (|\eee| and |\fff|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%bond between 5 and 6 +\def\skbonde{% + \ifx\eee\empty% + \ifx\fff\empty% + \Put@Line(-171,103)(0,1){200}% %bond 5-6 + \else% + \Put@Line(-171,103)(0,1){150}% %bond 5-6 + \fi% + \else% + \ifx\fff\empty% + \Put@Line(-171,143)(0,1){160}% %bond 5-6 + \else% + \Put@Line(-171,143)(0,1){110}% %bond 5-6 + \fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\skbondhoriz} +% The macro |\skbondhoriz| refers to the control sequences representing +% atoms on both of the terminal vertices (|\fff| and |\bbb|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%horizontal bond for five-membered rings +\def\skbondhoriz{% + \ifx\fff\empty% + \ifx\bbb\empty% + \Put@Line(-171,303)(1,0){342}% %bond 4-3 + \else% + \Put@Line(-171,303)(1,0){300}% %bond 4-3 + \fi% + \else% + \ifx\bbb\empty% + \Put@Line(171,303)(-1,0){300}% %bond 4-3 + \else% + \Put@Line(-129,303)(1,0){258}% %bond 4-3 + \fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\skbondhorizi} +% The macro |\skbondhorizi| refers to the control sequences representing +% atoms on both of the terminal vertices (|\eee| and |\ccc|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%horizontal bond for five-membered rings (inverse type) +\def\skbondhorizi{% + \ifx\eee\empty% + \ifx\ccc\empty% + \Put@Line(-171,103)(1,0){342}% %bond 4-3 + \else% + \Put@Line(-171,103)(1,0){300}% %bond 4-3 + \fi% + \else% + \ifx\ccc\empty% + \Put@Line(171,103)(-1,0){300}% %bond 4-3 + \else% + \Put@Line(-129,103)(1,0){258}% %bond 4-3 + \fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\set@outskel@sixv} +% The macro |\set@outskel@sixv| is to typeset a series of +% outer-skeleton bonds to six rings. It is +% used in |\sixheterov| and |\sixheterovi|. +% +% \begin{macrocode} +\def\set@outskel@sixv{% + \skbonda% bond between 1 and 2 + \skbondf% bond between 1 and 6 + \skbondc% bond between 4 and 3 + \skbondd% bond between 4 and 5 + \skbondb% bond between 3 and 2 + \skbonde% bond between 5 and 6 +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Dotted Skeletal Bonds} +% +% The macros |\sixfusev| etc. use inner macros for setting +% skeletal bonds in accordance with the presence or the absence of +% hetero atoms. During the processes of such setting, +% the inner macros |\dotskbonda| to |\dotskbondf| are used +% to set a dotted bond on each edge of a six- or five-membered ring. +% +% \begin{macro}{\dotskbonda} +% The macro |\dotskbonda| is the dotted couterpart of |\skbonda|, +% which refers to the control sequences representing +% atoms on both of the terminal vertices (|\aaa| and |\bbb|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%bond between 1 and 2 +\def\dotskbonda{% + \ifx\aaa\empty% + \ifx\bbb\empty% + \dotorline(0,406)(5,-3){171}/(0,406)(171,303)% + \else% + \dotorline(0,406)(5,-3){136}/(0,406)(136,324)% + \fi% + \else% + \ifx\bbb\empty% + \dotorline(35,385)(5,-3){136}/(35,386)(171,303)% + \else% + \dotorline(35,385)(5,-3){100}/(35,386)(136,324)% + \fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dotskbondb} +% The macro |\dotskbondb| is the dotted couterpart of |\skbondb|, +% which refers to the control sequences representing +% atoms on both of the terminal vertices (|\bbb| and |\ccc|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%bond between 3 and 2 +\def\dotskbondb{% + \ifx\bbb\empty%% + \ifx\ccc\empty%% + \dotorline(171,103)(0,1){200}/(171,103)(171,303)% + \else% + \dotorline(171,143)(0,1){160}/(171,143)(171,303)% + \fi% + \else% + \ifx\ccc\empty%% + \dotorline(171,103)(0,1){150}/(171,103)(171,253)% + \else% + \dotorline(171,143)(0,1){110}/(171,143)(171,253)% + \fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dotskbondc} +% The macro |\dotskbondc| is the dotted couterpart of |\skbondc|, +% which refers to the control sequences representing +% atoms on both of the terminal vertices (|\ccc| and |\ddd|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%bond between 4 and 3 +\def\dotskbondc{% + \ifx\ddd\empty% + \ifx\ccc\empty%% + \dotorline(0,0)(5,3){171}/(0,0)(171,103)% + \else% + \dotorline(0,0)(5,3){136}/(0,0)(136,81)% + \fi% + \else% + \ifx\ccc\empty% + \dotorline(35,21)(5,3){138}/(35,21)(171,103)% + \else% + \dotorline(35,21)(5,3){100}/(35,21)(136,81)% + \fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dotskbondd} +% The macro |\dotskbondd| is the dotted couterpart of |\skbondd|, +% which refers to the control sequences representing +% atoms on both of the terminal vertices (|\ddd| and |\eee|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%bond between 4 and 5 +\def\dotskbondd{% + \ifx\ddd\empty% + \ifx\eee\empty% + \dotorline(0,0)(-5,3){171}/(0,0)(-171,103)% + \else% + \dotorline(0,0)(-5,3){136}/(0,0)(-136,81)% + \fi% + \else% + \ifx\eee\empty% + \dotorline(-35,21)(-5,3){138}/(-35,21)(-171,103)% + \else% + \dotorline(-35,21)(-5,3){100}/(-35,21)(-136,81)% + \fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dotskbonde} +% The macro |\dotskbonde| is the dotted couterpart of |\skbonde|, +% which refers to the control sequences representing +% atoms on both of the terminal vertices (|\eee| and |\fff|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%bond between 5 and 6 +\def\dotskbonde{% + \ifx\eee\empty% + \ifx\fff\empty% + \dotorline(-171,103)(0,1){200}/(-171,103)(-171,303)% + \else% + \dotorline(-171,103)(0,1){150}/(-171,103)(-171,253)% + \fi% + \else% + \ifx\fff\empty% + \dotorline(-171,143)(0,1){160}/(-171,143)(-171,303)% + \else% + \dotorline(-171,143)(0,1){110}/(-171,143)(-171,253)% + \fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dotskbondf} +% The macro |\dotskbondf| is the dotted couterpart of |\skbondf|, +% which refers to the control sequences representing +% atoms on both of the terminal vertices (|\aaa| and |\fff|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%bond between 1 and 6 +\def\dotskbondf{% + \ifx\aaa\empty% + \ifx\fff\empty% + \dotorline(0,406)(-5,-3){171}/(0,406)(-171,303)% + \else% + \dotorline(0,406)(-5,-3){136}/(0,406)(-136,325)% + \fi% + \else% + \ifx\fff\empty% + \dotorline(-35,385)(-5,-3){136}/(-35,385)(-171,303)% + \else% + \dotorline(-35,385)(-5,-3){100}/(-35,385)(-136,325)% + \fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dotskbondhoriz} +% The macro |\dotskbondhoriz| is the dotted couterpart of |\skbondhoriz|, +% which refers to the control sequences representing +% atoms on both of the terminal vertices (|\fff| and |\bbb|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%horizontal bond for five-membered rings +\def\dotskbondhoriz{% + \ifx\fff\empty% + \ifx\bbb\empty% + \dotorline(-171,303)(1,0){342}/(-171,303)(171,303)% + \else% + \dotorline(-171,303)(1,0){300}/(-171,303)(129,303)% + \fi% + \else% + \ifx\bbb\empty% + \dotorline(171,303)(-1,0){300}/(171,303)(-129,303)% + \else% + \dotorline(-129,303)(1,0){258}/(-129,303)(129,303)% + \fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dotskbondhorizi} +% The macro |\dotskbondhorizi| refers to the control sequences representing +% atoms on both of the terminal vertices (|\eee| and |\ccc|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%horizontal bond for five-membered rings (inverse type) +\def\dotskbondhorizi{% + \ifx\eee\empty% + \ifx\ccc\empty% + \dotorline(-171,103)(1,0){342}/(-171,103)(171,103)% + \else% + \dotorline(-171,103)(1,0){300}/(-171,103)(129,103)% + \fi% + \else% + \ifx\ccc\empty% + \dotorline(171,103)(-1,0){300}/(171,103)(-129,103)% + \else% + \dotorline(-129,103)(1,0){258}/(-129,103)(129,103)% + \fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% The macro |\set@skel@bond| is used in such commands as |\sixheterov| +% and |\sixfusev| for setting skeletal bonds (outer bonds), +% when |\@aaa| etc. (produced by |\csname|...|\endcsname|) are equal +% to `a' etc. (given as \#2). Thinline, thickline and dotted-line +% skeletal bonds are available. +% +% \begin{macro}{\if@skbondlist} +% \begin{macrocode} +\newif\if@skbondlist +\@skbondlistfalse +% \end{macrocode} +% \end{macro}% from fusering.sty to hetarom.sty +% +% \changes{v4.02}{2004/12/20}{The positions of \cs{@skbondlisttrue} are changed.} +% \changes{v5.00}{2010/10/01}{For bond coloring} +% +% \begin{macro}{\set@skel@bond} +% \begin{macrocode} +\def\set@skel@bond#1#2#3{% + \expandafter\if\csname @#2#2#2\endcsname #2\relax%OK + % \if\@aaa #2\relax%OK + \def\skbondreplace{#3}% + \@skbondlistfalse + \@tfor\member:=#1\do{% + \expandafter\twoCH@@R\member//% + \if\@@tmpa #2\relax% + \if\@@tmpb A\relax% + \@skbondlisttrue + \expandafter\csname dotskbond#3\endcsname% \dotskbonda etc. +% \@skbondlisttrue + \else\if\@@tmpb B\relax% + \@skbondlisttrue + {\thicklines + \expandafter\csname skbond#3\endcsname% \skbonda etc. + }% +% \@skbondlisttrue + \else%%%added for color 2010/10/01 + \@skbondlisttrue% + \put(0,0){\@@tmpb}% + \fi\fi + \fi% + }% + \if@skbondlist\else + {\thinlines + \expandafter\csname skbond#3\endcsname% \skbonda etc. + }% + \fi% + \else + \expandafter\ifx\csname @#2#2#2\endcsname \empty\relax% + % \ifx\@aaa\empty\relax + \@tfor\member:=#1\do{% + \expandafter\twoCH@@R\member//% + \if\@@tmpa #2\relax% + \XyMTeXWarning{Unavailable bond `#2' in SKBONDLIST}\fi + }% + \fi\fi +}% end of \set@skel@bond +% \end{macrocode} +% \end{macro} +% +% The macro |\set@skel@longbond| is used in |\fivefusev| etc. +% for setting skeletal bonds (outer bonds), when |\@aaa| etc. +% (produced by |\csname|...|\endcsname|) are equal to `a' +% etc. (given as \#2). Thinline, thickline and dotted-line +% skeletal bonds are available. +% +% hetarom.dtx +% \changes{v4.02}{2004/12/20}{The positions of \cs{@skbondlisttrue} are changed.} +% \changes{v5.00}{2010/10/01}{For bond coloring} +% +% \begin{macro}{\set@skel@longbond} +% \begin{macrocode} +\newif\iflongskbond \longskbondfalse +\def\set@skel@longbond#1#2#3{% + \expandafter\if\csname @#2#2#2\endcsname #2\relax%OK + % \if\@aaa #2\relax%OK + \def\skbondreplace{#3}% + \longskbondtrue% + \@skbondlistfalse + \@tfor\member:=#1\do{% + \expandafter\twoCH@@R\member//% + \if\@@tmpa #2\relax% + \if\@@tmpb A\relax% + \@skbondlisttrue + \expandafter\csname dot#3\endcsname% \dotskbonda etc. +% \@skbondlisttrue + \else\if\@@tmpb B\relax% + \@skbondlisttrue + {\thicklines + \expandafter\csname #3\endcsname% \skbonda etc. + }% +% \@skbondlisttrue + \else%%%added for color 2010/10/01 + \@skbondlisttrue% + \put(0,0){\@@tmpb}% + \fi\fi + \fi% + }% + \if@skbondlist\else + {\thinlines + \expandafter\csname #3\endcsname% \skbonda etc. + }% + \fi% + \else + \expandafter\ifx\csname @#2#2#2\endcsname \empty\relax% + % \ifx\@aaa\empty\relax + \@tfor\member:=#1\do{% + \expandafter\twoCH@@R\member//% + \if\@@tmpa #2\relax% + \XyMTeXWarning{Unavailable bond `#2' in SKBONDLIST}\fi + }% + \fi\fi + \longskbondfalse +}% end of \set@skel@longbond +% \end{macrocode} +% \end{macro} +% +% The macro |\@bond@@omit| is used in |\sixheterov| etc. +% for detecting omitted bonds, where |\@aaa| etc. are empty if +% they are omitted. +% +% \begin{macro}{\@bond@@omit} +% \begin{macrocode} +\def\@bond@@omit#1{% +\@tfor\memBer:=#1\do{% +\if\memBer a\relax\gdef\@aaa{}\fi% +\if\memBer A\relax\gdef\@aaa{}\fi% +\if\memBer b\relax\gdef\@bbb{}\fi% +\if\memBer B\relax\gdef\@bbb{}\fi% +\if\memBer c\relax\gdef\@ccc{}\fi% +\if\memBer C\relax\gdef\@ccc{}\fi% +\if\memBer d\relax\gdef\@ddd{}\fi% +\if\memBer D\relax\gdef\@ddd{}\fi% +\if\memBer e\relax\gdef\@eee{}\fi% +\if\memBer E\relax\gdef\@eee{}\fi% +\if\memBer f\relax\gdef\@fff{}\fi% +\if\memBer F\relax\gdef\@fff{}\fi% +\if\memBer g\relax\gdef\@ggg{}\fi% +\if\memBer G\relax\gdef\@ggg{}\fi% +\if\memBer h\relax\gdef\@hhh{}\fi% +\if\memBer H\relax\gdef\@hhh{}\fi% +\if\memBer i\relax\gdef\@iii{}\fi% +\if\memBer I\relax\gdef\@iii{}\fi% +\if\memBer j\relax\gdef\@jjj{}\fi% +\if\memBer J\relax\gdef\@jjj{}\fi% +\if\memBer k\relax\gdef\@kkk{}\fi% +\if\memBer K\relax\gdef\@kkk{}\fi% +}}% +% \end{macrocode} +% \end{macro} +% +% \section{Six-membered heterocyles} +% \subsection{Vertical type} +% +% The standard skeleton of a six-membered heterocycle is selected +% to have the following locant numbers. +% +% \begin{verbatim} +% ************************* +% * sixhetero derivatives * +% * (vertical type) * +% ************************* +% The following numbering is adopted in this macro. +% +% 1 +% * +% 6 * * 2 +% | | +% | | +% 5 * * 3 +% * +% 4 <===== the original point +% \end{verbatim} +% +% The macro |\sixheterov| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \sixheterov(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] +% \end{verbatim} +% +% The |SKBONDLIST| argument contains pairs of two alphabets in +% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase +% character selected from bond specifiers `a' to `f' and a uppercase +% character `A' or `B'. +% +% The |BONDLIST| argument contains one +% character selected from a to f, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The option `A' represents an aromatic circle. The option +% `$n+$' ($n=1$ to $6$) represents a plus charge on a hetero atom +% at the $n$-position. +% +% \begin{verbatim} +% BONDLIST = +% +% none or r : sixhetero (right-handed) +% l : sixhetero (left-handed) +% [] : fully saturated form +% a : 1,2-double bond +% b : 2,3-double bond +% c : 4,3-double bond +% d : 4,5-double bond +% e : 5,6-double bond +% f : 6,1-double bond +% A : aromatic circle +% {n+} : plus at the n-nitrogen atom (n = 1 to 6) +% \end{verbatim} +% +% The |ATOMLIST| argument contains one or more heteroatom descriptors +% which are separated from each other by a semicolon. Each heteroatom +% descriptor consists of a locant number and a heteroatom, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% +% ATOMLIST: list of heteroatoms (max 6 atoms) +% +% for n = 1 to 6 +% +% n : Hetero atom, e.g. N, O, etc. at n-position, +% e.g. 1==N for N at 1-position +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% \begin{verbatim} +% +% SUBSLIST: list of substituents +% +% for n = 1 to 6 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% +% \end{verbatim} +% +% The argument |OMIT| represents one or more bonds to be omitted. +% The omitted edges may be regarded as both fused and non-fused +% positions. +% +% \begin{verbatim} +% OMIT: one or more bonds omitted (a, b, c, d, e, or f) +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \sixheterov{1==N}{1==Cl;2==F} +% \sixheterov[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \sixheterov[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl} +% \end{verbatim} +% +% The definition of |\sixheterov| uses a picture environment and +% consists of the following unit processes: +% \begin{enumerate} +% \item treatment of atom list, +% \item placing outer skeletons, +% \item placing inner double bonds, +% \item setting hetero atoms, and +% \item placing substituents by |\setsixringv|. +% \end{enumerate} +% +% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw}, +% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/11/15}{Adding \cs{test@vertix@sixv}} +% +% \begin{macro}{\sixheterov} +% \begin{macro}{\@six@heterov} +% \begin{macro}{\@six@@heterov} +% \begin{macro}{\@sixheterov} +% \begin{macrocode} +\def\sixheterov{\@ifnextchar({\@six@heterov(@}{\@six@heterov(@)}} +\def\@six@heterov(#1){\@ifnextchar[{\@six@@heterov(#1)[@}% +{\@six@@heterov(#1)[@]}} +\def\@six@@heterov(#1)[#2]#3#4{\@ifnextchar[% +{\@sixheterov(#1)[#2]{#3}{#4}[@}% +{\@sixheterov(#1)[#2]{#3}{#4}[@]}} +\def\@sixheterov(#1)[#2]#3#4[#5]{% +% \end{macrocode} +% +% \changes{v3.01}{2002/4/30}{Replaced by \cs{ShiftPicEnv}} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%% +% % treatment of atom list % +% %%%%%%%%%%%%%%%%%%%%%%%%%% +\iniatom\iniflag%initialize +\test@vertix@sixv{#3}{a}{b}{c}{d}{e}{f}% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % adustment of subs positions % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\@reset@ylsw% +\ylposition{#4}{0}{0}{7}{0}% +\begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(800,880)(-\shiftii,-\shifti){sixheterov}%2002/4/30 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +{% +\resetbdsw% +\@bond@@omit{#5}% +\set@skel@bond{#1}{a}{a}% bond between 1 and 2 \@aaa -> \skbonda etc +\set@skel@bond{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc +\set@skel@bond{#1}{c}{c}% bond between 3 and 4 \@ccc -> \skbondc etc +\set@skel@bond{#1}{d}{d}% bond between 4 and 5 \@ddd -> \skbondd etc +\set@skel@bond{#1}{e}{e}% bond between 5 and 6 \@eee -> \skbonde etc +\set@skel@bond{#1}{f}{f}% bond between 6 and 1 \@fff -> \skbondf etc +}% +%%%%%\set@outskel@sixv % replaced by above 1998/12/30 +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\@tfor\member:=#2\do{% +\if\member r\relax \bondd \bondf \bondb% +\else\if\member l\relax \bonda \bondc \bonde% +\else\if\member a\relax \bonda% +\else\if\member b\relax \bondb% +\else\if\member c\relax \bondc% +\else\if\member d\relax \bondd% +\else\if\member e\relax \bonde% +\else\if\member f\relax \bondf% +\else\if\member A%left aromatic circle + \Put@oCircle(0,203){240}% %circle +% %%%%%%%%%%%%%%%%%%%%%%%%% +% % inner bond attachment % +% %%%%%%%%%%%%%%%%%%%%%%%%% +\else \expandafter\twoCH@@R\member//% + \set@fusionadd@sixv% +\fi\fi\fi\fi\fi\fi\fi\fi\fi% +}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting hetero atoms % +% %%%%%%%%%%%%%%%%%%%%%%%% +\set@hetatom@sixv{#3}{0}{0}{7}{0}% %atom 1--6% +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents % +% %%%%%%%%%%%%%%%%%%%%%%%% +\setsixringv{#4}{0}{0}{7}{0}% %subst 1--6 +\end{ShiftPicEnv}\iniatom\iniflag}% %end of \sixheterov macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Inverse vertical type} +% +% The standard skeleton of a six-membered heterocycle of inverse type +% is selected to have the following locant numbers. +% +% \begin{verbatim} +% ********************************** +% * sixhetero derivatives * +% * (vertical type, inverse type) * +% ********************************** +% The following numbering is adopted in this macro. +% +% 4 +% * +% 5 * * 3 +% | | +% | | +% 6 * * 2 +% * +% 1 <===== the original point +% \end{verbatim} +% +% The macro |\sixheterovi| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \sixheterovi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] +% \end{verbatim} +% +% The |SKBONDLIST| argument contains pairs of two alphabets in +% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase +% character selected from bond specifiers `a' to `f' and a uppercase +% character `A' or `B'. +% +% The |BONDLIST| argument contains one +% character selected from a to f, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The option `A' represents an aromatic circle. The option +% `$n+$' ($n=1$ to $6$) represents a plus charge on a hetero atom +% at the $n$-position. +% +% \begin{verbatim} +% +% BONDLIST = +% +% none or r : sixhetero (right-handed) +% l : sixhetero (left-handed) +% [] : fully saturated form +% a : 1,2-double bond +% b : 2,3-double bond +% c : 4,3-double bond +% d : 4,5-double bond +% e : 5,6-double bond +% f : 6,1-double bond +% A : aromatic circle +% {n+} : plus at the n-nitrogen atom (n = 1 to 6) +% \end{verbatim} +% +% The |ATOMLIST| argument contains one or more heteroatom descriptors +% which are separated from each other by a semicolon. Each heteroatom +% descriptor consists of a locant number and a heteroatom, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% +% ATOMLIST: list of heteroatoms (max 6 atoms) +% +% for n = 1 to 6 +% +% n : Hetero atom, e.g. N, O, etc. at n-position, +% e.g. 1==N for N at 1-position +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% \begin{verbatim} +% +% SUBSLIST: list of substituents +% +% for n = 1 to 6 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% +% \end{verbatim} +% +% The argument |OMIT| represents one or more bonds to be omitted. +% The omitted edges may be regarded as both fused and non-fused +% positions. +% +% \begin{verbatim} +% OMIT: one or more bonds omitted (a, b, c, d, e, or f) +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \sixheterovi{1==N}{1==Cl;2==F} +% \sixheterovi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \sixheterovi[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl} +% +% \end{verbatim} +% +% The definition of |\sixheterovi| uses a picture environment and +% consists of the same unit processes as shown in |\sixheterov|: +% \begin{enumerate} +% \item treatment of atom list, +% \item placing outer skeletons, +% \item placing inner double bonds, +% \item setting hetero atoms, and +% \item placing substituents by |\setsixringv|. +% \end{enumerate} +% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw}, +% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% +% \begin{macro}{\sixheterovi} +% \begin{macro}{\@six@heterovi} +% \begin{macro}{\@six@@heterovi} +% \begin{macro}{\@sixheterovi} +% \begin{macrocode} +\def\sixheterovi{\@ifnextchar({\@six@heterovi(@}{\@six@heterovi(@)}} +\def\@six@heterovi(#1){\@ifnextchar[{\@six@@heterovi(#1)[@}% +{\@six@@heterovi(#1)[@]}} +\def\@six@@heterovi(#1)[#2]#3#4{\@ifnextchar[% +{\@sixheterovi(#1)[#2]{#3}{#4}[@}% +{\@sixheterovi(#1)[#2]{#3}{#4}[@]}} +\def\@sixheterovi(#1)[#2]#3#4[#5]{% +% \end{macrocode} +% +% \changes{v3.01}{2002/4/30}{Replaced by \cs{ShiftPicEnv}} +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%% +% % treatment of atom list % +% %%%%%%%%%%%%%%%%%%%%%%%%%% +\iniatom\iniflag%initialize +\test@vertix@sixv{#3}{d}{c}{b}{a}{f}{e}% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % adjustment of subs positions % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\@reset@ylsw% +\ylposition{#4}{5}{0}{5}{-1}% %subst 1--4 +\ylposition{#4}{11}{4}{7}{-1}% %subst 5 and 6 +\begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(800,880)(-\shiftii,-\shifti){sixheterovi}%2002/4/30 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +{\resetbdsw% +\@bond@@omit{#5}% +\set@skel@bond{#1}{a}{c}% bond between 1 and 2 \@aaa -> \skbondc etc +\set@skel@bond{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc +\set@skel@bond{#1}{c}{a}% bond between 3 and 4 \@ccc -> \skbonda etc +\set@skel@bond{#1}{d}{f}% bond between 4 and 5 \@ddd -> \skbondf etc +\set@skel@bond{#1}{e}{e}% bond between 5 and 6 \@eee -> \skbonde etc +\set@skel@bond{#1}{f}{d}% bond between 6 and 1 \@fff -> \skbondd etc +}% +%%%\set@outskel@sixv% replaced by the above 1998/12/30 +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\@tfor\member:=#2\do{% +\if\member r\relax \bondd \bondf \bondb% +\else\if\member l\relax \bonda \bondc \bonde% +\else\if\member a\relax \bondc% +\else\if\member b\relax \bondb% +\else\if\member c\relax \bonda% +\else\if\member d\relax \bondf% +\else\if\member e\relax \bonde% +\else\if\member f\relax \bondd% +\else\if\member A%left aromatic circle + \Put@oCircle(0,203){240}% %circle +% %%%%%%%%%%%%%%%%%%%%%%%%% +% % inner bond attachment % +% %%%%%%%%%%%%%%%%%%%%%%%%% +\else \expandafter\twoCH@@R\member//% + \set@fusionadd@sixvi% +\fi\fi\fi\fi\fi\fi\fi\fi\fi% +}% +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting hetero atoms % +% %%%%%%%%%%%%%%%%%%%%%%%% +\set@hetatom@sixv{#3}{5}{0}{5}{-1}% %atom 1--4% +\set@hetatom@sixv{#3}{11}{4}{7}{-1}% %atom 5 and 6% +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents % +% %%%%%%%%%%%%%%%%%%%%%%%% +\setsixringv{#4}{5}{0}{5}{-1}% %subst 1--4 +\setsixringv{#4}{11}{4}{7}{-1}% %subst 5 and 6 +\end{ShiftPicEnv}\iniatom\iniflag}% %end of \sixheterovi macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Pyridine derivatives of vertical type} +% +% The macros |\sixheterov| and |\sixheterovi| can be used in the +% form of a fixed |ATOMLIST|. Hence, the resulting commands for +% drawing a six-membered heterocyle with one or more nitrogen atoms +% have an argument |SUBSLIST| as well as an optional argument |BONDLIST|. +% +% \begin{verbatim} +% ************************ +% * pyridine derivatives * +% * (vertical type) * +% ************************ +% +% \pyridinev[BONDLIST]{SUBSLIST} +% \pyridinevi[BONDLIST]{SUBSLIST} +% \pyrazinev[BONDLIST]{SUBSLIST} +% \pyrimidinev[BONDLIST]{SUBSLIST} +% \pyrimidinevi[BONDLIST]{SUBSLIST} +% \triazinev[BONDLIST]{SUBSLIST} +% \triazinevi[BONDLIST]{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one +% character selected from a to f, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The option `A' represents an aromatic circle. The option +% `$n+$' ($n=1$ to $6$) represents a plus charge on a hetero atom +% at the $n$-position. +% +% \begin{verbatim} +% BONDLIST = +% +% none or r : pyridine (right-handed) +% l : pyridine (left-handed) +% [] : fully saturated ring +% a : 1,2-double bond +% b : 2,3-double bond +% c : 4,3-double bond +% d : 4,5-double bond +% e : 5,6-double bond +% f : 6,1-double bond +% A : aromatic circle +% {n+} : plus at the n-nitrogen atom +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% \begin{verbatim} +% +% SUBSLIST: list of substituents +% +% for n = 1 to 6 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \pyridinev{1==Cl;2==F} +% \pyridinev[c]{1==Cl;4==F;2==CH$_{3}$} +% \pyridinev[eb]{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl} +% \end{verbatim} +% +% \begin{macro}{\pridinev} +% \begin{macro}{\pridinevi} +% \begin{macrocode} +\def\pyridinev{\@ifnextchar[{\@pyridinev[@}{\@pyridinev[r]}} +\def\@pyridinev[#1]#2{% +\iforigpt \typeout{command `pyridinev' % + is based on `sixheterov'.}\fi% +\sixheterov[#1]{1==N}{#2}}%end of \pyridinev macro +\def\pyridinevi{\@ifnextchar[{\@pyridinevi[@}{\@pyridinevi[r]}} +\def\@pyridinevi[#1]#2{% +\iforigpt \typeout{command `pyridinevi' % + is based on `sixheterovi'.}\fi% +\sixheterovi[#1]{1==N}{#2}}%end of \pyridinevi macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\pyrazinev} +% \begin{macro}{\pyrazinevi} +% \begin{macrocode} +\def\pyrazinev{\@ifnextchar[{\@pyrazinev[@}{\@pyrazinev[r]}} +\def\@pyrazinev[#1]#2{% +\iforigpt \typeout{command `pyrazinev' % + is based on `sixheterov'.}\fi% +\sixheterov[#1]{1==N;4==N}{#2}}%end of \pyrazinev macro +%the same formula with an alternative locant numbering +\def\pyrazinevi{\@ifnextchar[{\@pyrazinevi[@}{\@pyrazinevi[r]}} +\def\@pyrazinevi[#1]#2{% +\iforigpt \typeout{command `pyrazinevi' % + is based on `sixheterovi'.}\fi% +\sixheterovi[#1]{1==N;4==N}{#2}}%end of \pyrazinevi macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\pyrimidinev} +% \begin{macro}{\pyrimidinevi} +% \begin{macrocode} +\def\pyrimidinev{\@ifnextchar[{\@pyrimidinev[@}{\@pyrimidinev[r]}} +\def\@pyrimidinev[#1]#2{% +\iforigpt \typeout{command `pyrimidinev' % + is based on `sixheterov'.}\fi% +\sixheterov[#1]{1==N;3==N}{#2}}%end of \pyrimidinev macro +\def\pyrimidinevi{\@ifnextchar[{\@pyrimidinevi[@}{\@pyrimidinevi[r]}} +\def\@pyrimidinevi[#1]#2{% +\iforigpt \typeout{command `pyrimidinevi' % + is based on `sixheterovi'.}\fi% +\sixheterovi[#1]{1==N;3==N}{#2}}%end of \pyrimidinevi macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\pyridazinev} +% \begin{macro}{\pyridazinevi} +% \begin{macrocode} +\def\pyridazinev{\@ifnextchar[{\@pyridazinev[@}{\@pyridazinev[r]}} +\def\@pyridazinev[#1]#2{% +\iforigpt \typeout{command `pyridazinev' % + is based on `sixheterov'.}\fi% +\sixheterov[#1]{1==N;2==N}{#2}}%end of \pyridazinev macro +\def\pyridazinevi{\@ifnextchar[{\@pyridazinevi[@}{\@pyridazinevi[r]}} +\def\@pyridazinevi[#1]#2{% +\iforigpt \typeout{command `pyridazinev' % + is based on `sixheterovi'.}\fi% +\sixheterovi[#1]{1==N;2==N}{#2}}%end of \pyridazinevi macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\triazinev} +% \begin{macro}{\triazinevi} +% \begin{macrocode} +\def\triazinev{\@ifnextchar[{\@triazinev[@}{\@triazinev[r]}} +\def\@triazinev[#1]#2{% +\iforigpt \typeout{command `triazinev' % + is based on `sixheterov'.}\fi% +\sixheterov[#1]{1==N;3==N;5==N}{#2}}%end of \triazinev macro +\def\triazinevi{\@ifnextchar[{\@triazinevi[@}{\@triazinevi[r]}} +\def\@triazinevi[#1]#2{% +\iforigpt \typeout{command `triazinevi' % + is based on `sixheterovi'.}\fi% +\sixheterovi[#1]{1==N;3==N;5==N}{#2}}%end of \triazinevi macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \section{Five-membered heterocycles} +% \subsection{Vertical type} +% +% The standard skeleton of a five-membered heterocycle +% is selected to have the following locant numbers. +% +% \begin{verbatim} +% ************************** +% * fivehetero derivatives * +% * (vertical type) * +% ************************** +% The following numbering is adopted in this macro. +% +% 4 _____ 3 +% | | +% | | +% 5 * * 2 +% * +% 1 <===== the original point +% \end{verbatim} +% +% The macro |\fiveheterov| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \fiveheterov(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] +% \end{verbatim} +% +% The |SKBONDLIST| argument contains pairs of two alphabets in +% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase +% character selected from bond specifiers `a' to `e' and a uppercase +% character `A' or `B'. +% +% The |BONDLIST| argument contains one +% character selected from a to e, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The option `A' represents an aromatic circle. The option +% `$n+$' ($n=1$ to $5$) represents a plus charge on a hetero atom +% at the $n$-position. +% The option `$0+$' typesets a plus charge at the center of the ring. +% +% \begin{verbatim} +% BONDLIST: list of inner double bonds +% +% a : 1,2-double bond +% b : 2,3-double bond +% c : 4,3-double bond +% d : 4,5-double bond +% e : 5,1-double bond +% A : aromatic circle +% {n+} : plus at the n-nitrogen atom (n = 1 to 5) +% {0+} : plus (or minus) at the center +% \end{verbatim} +% +% The |ATOMLIST| argument contains one or more heteroatom descriptors +% which are separated from each other by a semicolon. Each heteroatom +% descriptor consists of a locant number and a heteroatom, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% +% ATOMLIST: list of heteroatoms (max 5 atoms) +% +% for n = 1 to 5 +% +% n : Hetero atom, e.g. N, O, etc. at n-position +% e.g. 1==N for N at 1-position +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 5 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% \end{verbatim} +% +% The argument |OMIT| represents one or more bonds to be omitted. +% The omitted edges may be regarded as both fused and non-fused +% positions. +% +% \begin{verbatim} +% OMIT: one or more bonds omitted (a, b, c, d, or e) +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \fiveheterov{1==N}{1==H;2==F} +% \fiveheterov[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \fiveheterov[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl} +% \end{verbatim} +% +% The definition of |\fiveheterov| uses a picture environment and +% consists of the same unit processes as shown in |\sixheterov|: +% \begin{enumerate} +% \item treatment of atom list, +% \item placing outer skeletons, +% \item placing inner double bonds, +% \item setting hetero atoms, and +% \item placing substituents by using |\setsixringv| partially. +% \end{enumerate} +% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw}, +% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/10/31}{Add: fused and spiro rings} +% +% \begin{macro}{\fiveheterov} +% \begin{macro}{\@five@heterov} +% \begin{macro}{\@five@@heterov} +% \begin{macro}{\@fiveheterov} +% \begin{macrocode} +\def\fiveheterov{\@ifnextchar({\@five@heterov(@}{\@five@heterov(@)}} +\def\@five@heterov(#1){\@ifnextchar[{\@five@@heterov(#1)[@}% +{\@five@@heterov(#1)[@]}} +\def\@five@@heterov(#1)[#2]#3#4{\@ifnextchar[% +{\@fiveheterov(#1)[#2]{#3}{#4}[@}% +{\@fiveheterov(#1)[#2]{#3}{#4}[@]}} +\def\@fiveheterov(#1)[#2]#3#4[#5]{% +\iniatom\iniflag%initialize +% %%%%%%%%%%%%% +% % atom list % +% %%%%%%%%%%%%% +\test@vertix@sixv{#3}{d}{c}{b}{f}{e}{a}% +% \end{macrocode} +% +% \changes{v3.01}{2002/4/30}{Replaced by \cs{ShiftPicEnv}} +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % adustment of subs positions % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\@reset@ylsw% +\ylposition{#4}{5}{1}{5}{-1}% % for 1 to 3 +\ylposition{#4}{10}{4}{7}{-1}% % for 4 to 5 +\begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(800,880)(-\shiftii,-\shifti){fiveheterov}%2002/4/30 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +{\resetbdsw% +\@bond@@omit{#5}% +\set@skel@bond{#1}{a}{c}% bond between 1 and 2 \@aaa -> \skbondc etc +\set@skel@bond{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc +\set@skel@longbond{#1}{c}{skbondhoriz}% + % bond between 3 and 4 \@ccc -> \skbondhoriz etc +\set@skel@bond{#1}{d}{e}% bond between 4 and 5 \@ddd -> \skbonde etc +\set@skel@bond{#1}{e}{d}% bond between 5 and 1 \@eee -> \skbondd etc +}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\@tfor\member:=#2\do{% +\if\member r% +\else\if\member a\relax \bondc% +\else\if\member b\relax \bondb% +\else\if\member c\relax \bondhoriz% +\else\if\member d\relax \bonde% +\else\if\member e\relax \bondd% +\else\if\member A\relax% + \Put@oCircle(0,173){180}%aromatic circle +% %%%%%%%%%%%%%%%%%%%%%%%%% +% % inner bond attachment % +% %%%%%%%%%%%%%%%%%%%%%%%%% +\else + \expandafter\twoCH@@R\member//% + \set@fusionadd@fivev +\fi\fi\fi\fi\fi\fi\fi}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%% +% % setting heteroatoms % +% %%%%%%%%%%%%%%%%%%%%%%% +\set@hetatom@sixv{#3}{5}{1}{5}{-1}% % for 1 to 3 +\set@hetatom@sixv{#3}{10}{4}{7}{-1}% % for 4 to 5 +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents % +% %%%%%%%%%%%%%%%%%%%%%%%% +\setsixringv{#4}{5}{1}{5}{-1}% % for 1 to 3 +\setsixringv{#4}{10}{4}{7}{-1}% % for 4 to 5 +\end{ShiftPicEnv}\iniatom\iniflag}% %end of \fiveheterov macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Inverse vertical type} +% +% The standard skeleton of a five-membered heterocycle of inverse type +% is selected to have the following locant numbers. +% +% \begin{verbatim} +% ***************************** +% * fivehetero derivatives * +% * (vertical type, inverse) * +% ***************************** +% The following numbering is adopted in this macro. +% +% 1 +% * +% 6 * * 2 +% | | +% |_____| +% 4 3 +% * +% (0,0) <===== the original point +% \end{verbatim} +% +% The macro |\fiveheterovi| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \fiveheterovi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] +% \end{verbatim} +% +% The |SKBONDLIST| argument contains pairs of two alphabets in +% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase +% character selected from bond specifiers `a' to `f' and a uppercase +% character `A' or `B'. +% +% The |BONDLIST| argument contains one +% character selected from a to e, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The option `A' represents an aromatic circle. The option +% `$n+$' ($n=1$ to $5$) represents a plus charge on a hetero atom +% at the $n$-position. +% The option `$0+$' typesets a plus charge at the center of the ring. +% +% \begin{verbatim} +% BONDLIST: list of inner double bonds +% +% a : 1,2-double bond +% b : 2,3-double bond +% c : 4,3-double bond +% d : 4,5-double bond +% e : 5,1-double bond +% A : aromatic circle +% {n+} : plus at the n-nitrogen atom (n = 1 to 5) +% {0+} : plus (or minus) at the center +% \end{verbatim} +% +% The |ATOMLIST| argument contains one or more heteroatom descriptors +% which are separated from each other by a semicolon. Each heteroatom +% descriptor consists of a locant number and a heteroatom, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% ATOMLIST: list of heteroatoms (max 5 atoms) +% +% for n = 1 to 5 +% +% n : Hetero atom, e.g. N, O, etc. at n-position +% e.g. 1==N for N at 1-position +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 5 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% \end{verbatim} +% +% The argument |OMIT| represents one or more bonds to be omitted. +% The omitted edges may be regarded as both fused and non-fused +% positions. +% +% \begin{verbatim} +% OMIT: one or more bonds omitted (a, b, c, d, or e) +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \fiveheterovi{1==N}{1==H;2==F} +% \fiveheterovi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \fiveheterovi[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl} +% \end{verbatim} +% +% The definition of |\fiveheterovi| uses a picture environment and +% consists of the same unit processes as shown in |\sixheterov|: +% \begin{enumerate} +% \item treatment of atom list, +% \item placing outer skeletons, +% \item placing inner double bonds, +% \item setting hetero atoms, and +% \item placing substituents by using |\setsixringv| partially. +% \end{enumerate} +% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw}, +% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% +% \begin{macro}{\fiveheterovi} +% \begin{macro}{\@five@heterovi} +% \begin{macro}{\@five@@heterovi} +% \begin{macro}{\@fiveheterovi} +% \begin{macrocode} +\def\fiveheterovi{\@ifnextchar({\@five@heterovi(@}{\@five@heterovi(@)}} +\def\@five@heterovi(#1){\@ifnextchar[{\@five@@heterovi(#1)[@}% +{\@five@@heterovi(#1)[@]}} +\def\@five@@heterovi(#1)[#2]#3#4{\@ifnextchar[% +{\@fiveheterovi(#1)[#2]{#3}{#4}[@}% +{\@fiveheterovi(#1)[#2]{#3}{#4}[@]}} +\def\@fiveheterovi(#1)[#2]#3#4[#5]{% +\iniatom\iniflag%initialize +% \end{macrocode} +% +% \changes{v3.01}{2002/4/30}{Replaced by \cs{ShiftPicEnv}} +% \begin{macrocode} +% %%%%%%%%%%%%% +% % atom list % +% %%%%%%%%%%%%% +\test@vertix@sixv{#3}{a}{b}{c}{e}{f}{d}% d -- dummy +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % adustment of subs positions % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\@reset@ylsw% +\ylposition{#4}{0}{0}{4}{0}% % for 1 to 3 +\ylposition{#4}{1}{4}{7}{0}% % for 4 to 5 +\begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(800,880)(-\shiftii,-\shifti){fiveheterov}%2002/4/30 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +{\resetbdsw% +\@bond@@omit{#5}% +\set@skel@bond{#1}{a}{a}% bond between 1 and 2 \@aaa -> \skbonda etc +\set@skel@bond{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc +\set@skel@longbond{#1}{c}{skbondhorizi}% + % bond between 3 and 4 \@ccc -> \skbondhorizi etc +\set@skel@bond{#1}{d}{e}% bond between 4 and 5 \@ddd -> \skbonde etc +\set@skel@bond{#1}{e}{f}% bond between 5 and 6 \@eee -> \skbondf etc +}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\@tfor\member:=#2\do{% +\if\member r% +\else\if\member a\relax \bonda% +\else\if\member b\relax \bondb% +\else\if\member c\relax \bondhorizi% +\else\if\member d\relax \bonde% +\else\if\member e\relax \bondf% +\else\if\member A\relax% + \Put@oCircle(0,233){180}%aromatic circle +\else + \expandafter\twoCH@@R\member//% + \set@fusionadd@fivevi +\fi\fi\fi\fi\fi\fi\fi}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%% +% % setting heteroatoms % +% %%%%%%%%%%%%%%%%%%%%%%% +\set@hetatom@sixv{#3}{0}{0}{4}{0}% % for 1 to 3 +\set@hetatom@sixv{#3}{1}{4}{7}{0}% % for 4 to 5 +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents % +% %%%%%%%%%%%%%%%%%%%%%%%% +\setsixringv{#4}{0}{0}{4}{0}% % for 1 to 3 +\setsixringv{#4}{1}{4}{7}{0}% % for 4 to 5 +\end{ShiftPicEnv}\iniatom\iniflag}% %end of \fiveheterovi macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Pyrrole derivatives of vertical type} +% +% The macro |\fiveheterov| can be used in the +% form of a fixed |ATOMLIST|. Hence, the resulting commands for +% drawing a five-membered heterocyle with one or more nitrogen atoms +% have an argument |SUBSLIST| as well as an optional argument |BONDLIST|. +% +% \begin{verbatim} +% *********************************** +% * pyrrole derivatives and others * +% * (vertical type) * +% *********************************** +% +% \pyrrolev[BONDLIST]{SUBSLIST} +% \pyrazolev[BONDLIST]{SUBSLIST} +% \imidazolev[BONDLIST]{SUBSLIST} +% \isoxazolev[BONDLIST]{SUBSLIST} +% \oxazolev[BONDLIST]{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one +% character selected from a to e, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The option +% `$n+$' ($n=1$ to $5$) represents a plus charge on a hetero atom +% at the $n$-position. +% +% \begin{verbatim} +% BONDLIST: list of inner double bonds +% +% none : mother nucleus +% [] : fully saturated form +% a : 1,2-double bond +% b : 2,3-double bond +% c : 4,3-double bond +% d : 4,5-double bond +% e : 5,1-double bond +% {n+} : plus at the n-nitrogen atom (n = 1 to 5) +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 5 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \pyrrolev{1==H;2==F} +% \pyrrolev[]{1==H;2==F} +% \imidazolev[c]{1==Cl;4==F;2==CH$_{3}$} +% \isoxazolev[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl} +% \end{verbatim} +% +% \begin{macro}{\pyrrolev} +% \begin{macro}{\pyrazolev} +% \begin{macro}{\imidazolev} +% \begin{macro}{\isoxazolev} +% \begin{macro}{\oxazolev} +% \begin{macrocode} +\def\pyrrolev{\@ifnextchar[{\@pyrrolev[@}{\@pyrrolev[bd]}} +\def\@pyrrolev[#1]#2{% +\iforigpt \typeout{command `pyrrolev' % + is based on `fiveheterov'.}\fi% +\fiveheterov[#1]{1==N}{#2}} +\def\pyrazolev{\@ifnextchar[{\@pyrazolev[@}{\@pyrazolev[bd]}} +\def\@pyrazolev[#1]#2{% +\iforigpt \typeout{command `pyrazolev' % + is based on `fiveheterov'.}\fi% +\fiveheterov[#1]{1==N;2==N}{#2}} +\def\imidazolev{\@ifnextchar[{\@imidazolev[@}{\@imidazolev[bd]}} +\def\@imidazolev[#1]#2{% +\iforigpt \typeout{command `imidazolev' % + is based on `fiveheterov'.}\fi% +\fiveheterov[#1]{1==N;3==N}{#2}} +\def\isoxazolev{\@ifnextchar[{\@isoxazolev[@}{\@isoxazolev[bd]}} +\def\@isoxazolev[#1]#2{% +\iforigpt \typeout{command `isoxazolev' % + is based on `fiveheterov'.}\fi% +\fiveheterov[#1]{1==O;2==N}{#2}} +\def\oxazolev{\@ifnextchar[{\@oxazolev[@}{\@oxazolev[bd]}} +\def\@oxazolev[#1]#2{% +\iforigpt \typeout{command `oxazolev' % + is based on `fiveheterov'.}\fi% +\fiveheterov[#1]{1==O;3==N}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\furanv} +% \begin{macro}{\thiophenev} +% \begin{macrocode} +\def\furanv{\@ifnextchar[{\@furanv[@}{\@furanv[bd]}} +\def\@furanv[#1]#2{% +\iforigpt \typeout{command `furanv' % + is based on `fiveheterov'.}\fi% +\fiveheterov[#1]{1==O}{#2}} +\def\thiophenev{\@ifnextchar[{\@thiophenev[@}{\@thiophenev[bd]}} +\def\@thiophenev[#1]#2{% +\iforigpt \typeout{command `thiophenev' % + is based on `fiveheterov'.}\fi% +\fiveheterov[#1]{1==S}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Pyrrole derivatives of inverse vertical type} +% +% The macro |\fiveheterovi| can be used in the +% form of a fixed |ATOMLIST|. Hence, the resulting commands for +% drawing a five-membered heterocyle with one or more nitrogen atoms +% have an argument |SUBSLIST| as well as an optional argument |BONDLIST|. +% +% \begin{verbatim} +% *********************************** +% * pyrrole derivatives and others * +% * (vertical type, inverse) * +% *********************************** +% +% \pyrrolevi[BONDLIST]{SUBSLIST} +% \pyrazolevi[BONDLIST]{SUBSLIST} +% \imidazolevi[BONDLIST]{SUBSLIST} +% \isoxazolevi[BONDLIST]{SUBSLIST} +% \oxazolevi[BONDLIST]{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one +% character selected from a to e, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The option +% `$n+$' ($n=1$ to $5$) represents a plus charge on a hetero atom +% at the $n$-position. +% +% \begin{verbatim} +% BONDLIST: list of inner double bonds +% +% none : mother nucleus +% [] : fully saturated form +% a : 1,2-double bond +% b : 2,3-double bond +% c : 4,3-double bond +% d : 4,5-double bond +% e : 5,1-double bond +% {n+} : plus at the n-nitrogen atom (n = 1 to 5) +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% SUBSLIST: list of substituents (max 6 substitution positions) +% +% for n = 1 to 5 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \pyrrolevi{1==H;2==F} +% \pyrrolevi[]{1==H;2==F} +% \imidazolevi[c]{1==Cl;4==F;2==CH$_{3}$} +% \isoxazolevi[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl} +% \end{verbatim} +% +% \begin{macro}{\pyrrolevi} +% \begin{macro}{\pyrazolevi} +% \begin{macro}{\imidazolevi} +% \begin{macro}{\isoxazolevi} +% \begin{macro}{\oxazolevi} +% \begin{macrocode} +\def\pyrrolevi{\@ifnextchar[{\@pyrrolevi[@}{\@pyrrolevi[bd]}} +\def\@pyrrolevi[#1]#2{% +\iforigpt \typeout{command `pyrrolevi' % + is based on `fiveheterovi'.}\fi% +\fiveheterovi[#1]{1==N}{#2}} +\def\pyrazolevi{\@ifnextchar[{\@pyrazolevi[@}{\@pyrazolevi[bd]}} +\def\@pyrazolevi[#1]#2{% +\iforigpt \typeout{command `pyrazolevi' % + is based on `fiveheterovi'.}\fi% +\fiveheterovi[#1]{1==N;2==N}{#2}} +\def\imidazolevi{\@ifnextchar[{\@imidazolevi[@}{\@imidazolevi[bd]}} +\def\@imidazolevi[#1]#2{% +\iforigpt \typeout{command `imidazolevi' % + is based on `fiveheterovi'.}\fi% +\fiveheterovi[#1]{1==N;3==N}{#2}} +\def\isoxazolevi{\@ifnextchar[{\@isoxazolevi[@}{\@isoxazolevi[bd]}} +\def\@isoxazolevi[#1]#2{% +\iforigpt \typeout{command `isoxazolevi' % + is based on `fiveheterovi'.}\fi% +\fiveheterovi[#1]{1==O;2==N}{#2}} +\def\oxazolevi{\@ifnextchar[{\@oxazolevi[@}{\@oxazolevi[bd]}} +\def\@oxazolevi[#1]#2{% +\iforigpt \typeout{command `oxazolevi' % + is based on `fiveheterovi'.}\fi% +\fiveheterovi[#1]{1==O;3==N}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\furanvi} +% \begin{macro}{\thiophenevi} +% \begin{macrocode} +\def\furanvi{\@ifnextchar[{\@furanvi[@}{\@furanvi[bd]}} +\def\@furanvi[#1]#2{% +\iforigpt \typeout{command `furanvi' % + is based on `fiveheterovi'.}\fi% +\fiveheterovi[#1]{1==O}{#2}} +\def\thiophenevi{\@ifnextchar[{\@thiophenevi[@}{\@thiophenevi[bd]}} +\def\@thiophenevi[#1]#2{% +\iforigpt \typeout{command `thiophenevi' % + is based on `fiveheterovi'.}\fi% +\fiveheterovi[#1]{1==S}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \section{Six-to-six fused heterocyles} +% \subsection{Vertical type} +% +% The standard skeleton of a six-to-six fused heterocycle is selected +% to have the following locant numbers. +% +% \begin{verbatim} +% ************************** +% * decahetero derivatives * +% * (vertical type) * +% ************************** +% The following numbering is adopted in this macro. +% +% 8 (10)1 +% * 8a * +% 7 * * * * 2 +% | | | +% | | | +% 6 * * * * 3 +% * 4a * +% 5 (9) 4 +% ^ +% | +% the original point +% \end{verbatim} +% +% The macro |\decaheterov| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \decaheterov(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] +% \end{verbatim} +% +% The |SKBONDLIST| argument contains pairs of two alphabets in +% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase +% character selected from bond specifiers `a' to `k' and a uppercase +% character `A' or `B'. +% +% The |BONDLIST| argument contains one +% character selected from a to k, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The option `A' and `B' represent aromatic circles. The option +% `$n+$' ($n=1$ to $10$) represents a plus charge on a hetero atom +% at the $n$-position. +% +% \begin{verbatim} +% BONDLIST: list of bonds +% +% none or r : decahetero (right-handed) +% l : decahetero (left-handed) +% [] : fully saturated form +% a : 1,2-double bond b : 2,3-double bond +% c : 4,3-double bond d : 4,4a-double bond +% e : 4a,5-double bond f : 5,6-double bond +% g : 6,7-double bond h : 7,8-double bond +% i : 8,8a-double bond j : 1,8a-double bond +% k : 4a,8a-double bond +% A : aromatic circle B : aromatic circle +% {n+} : plus at the n-nitrogen atom (n = 1 to 10) +% \end{verbatim} +% +% The |ATOMLIST| argument contains one or more heteroatom descriptors +% which are separated from each other by a semicolon. Each heteroatom +% descriptor consists of a locant number and a heteroatom, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% ATOMLIST: list of heteroatoms (max 10 atoms) +% +% for n = 1 to 8 +% +% n : Hetero atom, e.g. N, O, etc. at n-position +% e.g. 1==N for N at 1-position +% na : Hetero atom at 4a or 8b (n=4 or 8) +% e.g. 4a==N (or 9==N) for N at 4a-position +% 8a==N (or {{10}}==N) for N at 8a-position +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 8 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% +% for 9 (4a position) and 10 (8a position) +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% \end{verbatim} +% +% The argument |OMIT| represents one or more bonds to be omitted. +% The omitted edges may be regarded as both fused and non-fused +% positions. +% +% \begin{verbatim} +% OMIT: one or more bonds omitted (a to k: see BONDLIST) +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \decaheterov{1==N}{1==Cl;2==F} +% \decaheterov[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \decaheterov[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl} +% \end{verbatim} +% +% The definition of |\decaheterov| uses a picture environment and +% consists of the same unit processes as shown in |\sixheterov|: +% \begin{enumerate} +% \item treatment of atom list, +% \item placing outer skeletons, +% \item placing inner double bonds, +% \item setting hetero atoms, and +% \item placing substituents by using |\setsixringv| several times. +% \end{enumerate} +% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw}, +% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/12/25}{Spiro rings and fused rings +% \cs{test@vertix@sixv}, \cs{test@vertix@decav}, etc.} +% \changes{v4.03b}{2006/9/5}{bug fix \cs{ggg} to \cs{gggA} etc. in \cs{test@vertix@sixv}} +% +% \begin{macro}{\decaheterov} +% \begin{macro}{\@deca@heterov} +% \begin{macro}{\@deca@@heterov} +% \begin{macro}{\@decaheterov} +% \begin{macrocode} +\def\decaheterov{\@ifnextchar({\@deca@heterov(@}{\@deca@heterov(@)}} +\def\@deca@heterov(#1){\@ifnextchar[{\@deca@@heterov(#1)[@}% +{\@deca@@heterov(#1)[@]}} +\def\@deca@@heterov(#1)[#2]#3#4{\@ifnextchar[% +{\@decaheterov(#1)[#2]{#3}{#4}[@}% +{\@decaheterov(#1)[#2]{#3}{#4}[@]}}% +\def\@decaheterov(#1)[#2]#3#4[#5]{% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%% +% % treatment of atom list % +% %%%%%%%%%%%%%%%%%%%%%%%%%% +\iniflag\iniatom% +\test@vertix@sixv{#3}{a}{b}{c}{d}{e}{f}% +\test@vertix@decav{#3}{g}{h}{i}{j}{@}{@}% +% %%%%%%%%%%%%%%%%%%%%%%% +% % adjustment for (yl) % +% %%%%%%%%%%%%%%%%%%%%%%% +\@reset@ylsw% +\ylhetposition{#4}{0}{0}{5}{0}% %substituents on 1 to 4 +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-342}\def\@@yli{0}\fi +\else +\ylhetposition{#4}{-1}{3}{7}{0}% %substituents on 5 to 7 +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +\ylhetposition{#4}{-7}{0}{2}{0}% %substituent on 8 +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +{% +\clipdetection% +\@clipfusefalse \if@iclip \@clipfusetrue \fi% +\ylatombondposition{#4}{-8}{7}% %9 %for 4a position +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-171}\def\@@yli{-103}\fi +\else +{% +\clipdetection% +\@clipfusefalse \if@jclip \@clipfusetrue \fi% +\ylatombondposition{#4}{-9}{1}% %10 for 8a position +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-171}\def\@@yli{-303}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(1200,880)(-\shiftii,-\shifti){decaheterov}%2002/4/30 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +\begingroup +\resetbdsw% +\@bond@@omit{#5}% +{\let\fff=\jjj \let\eee=\iii% +\Put@Direct(342,0){\set@skel@bond{#1}{a}{a}}% + % bond between 1 and 2 \@aaa -> \skbonda etc +\Put@Direct(342,0){\set@skel@bond{#1}{b}{b}}% + % bond between 2 and 3 \@bbb -> \skbondb etc +\Put@Direct(342,0){\set@skel@bond{#1}{c}{c}}% + % bond between 3 and 4 \@ccc -> \skbondc etc +\Put@Direct(342,0){\set@skel@bond{#1}{d}{d}}% + % bond between 4 and 4a \@ddd -> \skbondd etc +\Put@Direct(342,0){\set@skel@bond{#1}{k}{e}}% + % bond between 4a and 8a \@kkk -> \skbonde etc +\Put@Direct(342,0){\set@skel@bond{#1}{j}{f}}% + % bond between 8a and 1 \@jjj -> \skbondf etc +}% +{\let\aaa=\hhh \let\ddd=\eee \let\eee=\fff \let\fff=\gggA% + \let\ccc=\iii \let\bbb=\jjj% +\set@skel@bond{#1}{i}{a}% bond between 8 and 8a \@iii -> \skbonda etc +\set@skel@bond{#1}{e}{c}% bond between 5 and 4a \@eee -> \skbondc etc +\set@skel@bond{#1}{f}{d}% bond between 5 and 6 \@fff -> \skbondd etc +\set@skel@bond{#1}{g}{e}% bond between 6 and 7 \@ggg -> \skbonde etc +\set@skel@bond{#1}{h}{f}% bond between 7 and 8 \@hhh -> \skbondf etc +}% +\endgroup +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\@tfor\member:=#2\do{% +\if\member r\relax% +{\let\fff=\jjj \let\eee=\iii% + \Put@Direct(342,0){\bonda}% bond between 1 and 2 + \Put@Direct(342,0){\bondc}% bond between 3 and 4 +}% +{\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA% + \let\ccc=\iii\let\bbb=\jjj% + \Put@Direct(0,0){\bondb}% bond between 8a and 4a + \Put@Direct(0,0){\bondf}% bond between 8 and 7 + \Put@Direct(0,0){\bondd}% bond between 5 and 6 +}% +\else\if\member l\relax% +\else\if\member a\relax% + \Put@Direct(342,0){\bonda}% bond between 1 and 2 +\else\if\member b\relax + \Put@Direct(342,0){\bondb}% bond between 2 and 3 +\else\if\member c\relax + \Put@Direct(342,0){\bondc}% bond between 3 and 4 +\else\if\member d\relax% +{\let\eee=\iii% + \Put@Direct(342,0){\bondd}% bond between 4 and 4a +}% +\else\if\member e\relax% +{\let\ccc=\iii \let\ddd=\eee% + \Put@Direct(0,0){\bondc}% bond between 5 and 4a +}% +\else\if\member f\relax% +{\let\ddd=\eee \let\eee=\fff% + \Put@Direct(0,0){\bondd}% bond between 5 and 6 +}% +\else\if\member g\relax% +{\let\eee=\fff \let\fff=\gggA% + \Put@Direct(0,0){\bonde}% bond between 6 and 7 +}% +\else\if\member h\relax% +{\let\aaa=\hhh \let\fff=\gggA% + \Put@Direct(0,0){\bondf}% bond between 8 and 7 +}% +\else\if\member i\relax% +{\let\aaa=\hhh \let\bbb=\jjj% + \Put@Direct(0,0){\bonda}% bond between 8 and 8a +}% +\else\if\member j\relax% +{\let\fff=\jjj% + \Put@Direct(342,0){\bondf}% bond between 1 and 8a +}% +\else\if\member k\relax% +{\let\ccc=\iii\let\bbb=\jjj% + \Put@Direct(0,0){\bondb}% bond between 8a and 4a +}% +\else\if\member K\relax% +{\let\eee=\iii\let\fff=\jjj% + \Put@Direct(342,0){\bonde}% bond between 8a and 4a in the other ring +}% +\else\if\member A%left aromatic circle + \Put@oCircle(0,203){240}% %circle +\else\if\member B%left aromatic circle + \Put@oCircle(342,203){240}% %circle +\else + \expandafter\twoCH@@R\member//% + \def\aax{8a}\def\aay{4a}\def\aaz{10}% + \if\@@tmpa 1\relax% % plus charge etc. + \putratom{304}{282}{\@@tmpb}% % right type + \else\if\@@tmpa 2\relax% + \putratom{402}{253}{\@@tmpb}% % right type + \else\if\@@tmpa 3\relax% + \putratom{402}{120}{\@@tmpb}% % right type + \else\if\@@tmpa 4\relax% + \putratom{304}{68}{\@@tmpb}% % right type + \else\if\@@tmpa 5\relax% + \putratom{-38}{68}{\@@tmpb}% % right type + \else\if\@@tmpa 6\relax% + \putlatom{-60}{253}{\@@tmpb}% % left type + \else\if\@@tmpa 7\relax% + \putlatom{-60}{120}{\@@tmpb}% % left type + \else\if\@@tmpa 8\relax% + \putratom{-38}{282}{\@@tmpb}% % right type + \else\if\@@tmpa 9\relax% + \putratom{60}{120}{\@@tmpb}% % right type +% \else\if\@@tmpa 10\relax% + \else\ifx\@@tmpa\aaz\relax%1998/10/17 + \putratom{60}{253}{\@@tmpb}% % right type + \else\ifx\@@tmpa\aax\relax% + \putratom{60}{253}{\@@tmpb}% % right type + \else\ifx\@@tmpa\aay\relax% + \putratom{60}{120}{\@@tmpb}% % right type + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +% *********************** +% * setting fused rings * +% *********************** + \expandafter\twoCH@R\member//% + \set@fusion@decav +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +\fi\fi\fi\fi\fi\fi% +}% +% \end{macrocode} +% +% \changes{v2.00a}{2000/11/11}{The +% \cs{iniflag} command is added to 5- and 8-substitution.} +% \changes{v2.01}{2001/6/20}{The \cs{storeclipinfo} command is added.} +% \changes{v4.03b}{2006/9/5}{The \cs{storeclipinfo} command, bugfixed} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % setting hetero atoms and spiro rings % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\iniflag +\Put@Direct(342,0){\set@hetatom@sixv{#3}{0}{0}{5}{0}% +% \if@aclip \global\@acliptrue\fi +% \if@bclip \global\@bcliptrue\fi +% \if@cclip \global\@ccliptrue\fi +% \if@clip \global\@cliptrue\fi +\storeclipinfo%2001/06/20 +}% %substituents on 1 to 4 +{% +%\developclipinfo%2001/06/20 %2006/9/5deleted +\Put@Direct(0,0){\iniflag%2000/11/11 by S. Fujita + \set@hetatom@sixv{#3}{-1}{3}{7}{0}% +% \@gclipfalse \if@fclip \global\@gcliptrue \fi% +% \@fclipfalse \if@eclip \global\@fcliptrue \fi% +% \@eclipfalse \if@clip \global\@ecliptrue \fi +% + \@gclipfalse \if@fclip \@gcliptrue \fi% + \@fclipfalse \if@eclip \@fcliptrue \fi% + \@eclipfalse \if@clip \@ecliptrue \fi + \@clipfalse%2006/9/5added +% +\storeclipinfo%2001/06/20 +}%substituents on 5 to 7 +}{% +%\developclipinfo%2001/06/20 2006/9/5deleted +\Put@Direct(0,0){\iniflag%2000/11/11 by S. Fujita + \set@hetatom@sixv{#3}{-7}{0}{2}{0}% +%% \@hclipfalse \if@aclip \global\@hcliptrue \fi + \@hclipfalse \if@aclip \@hcliptrue \fi + \@aclipfalse%2006/9/5added +\storeclipinfo%%2001/06/20 +%%====\clipinfo====%%%2006/9/5test +}%%substituent on 8 +}{% +%\developclipinfo%%2001/06/20 2006/9/5deleted +\Put@Direct(0,0){\set@vrtx@fuse{#3}% +% \if@iclip \global\@icliptrue \fi +% \if@jclip \global\@jcliptrue \fi +\storeclipinfo%%2001/06/20 +}% fused positions +}% +%====\clipinfo====%%2006/9/5test +\developclipinfo%%2001/06/20 +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents and exocyclic bonds % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\global\drawsamesubsttrue%2002/05/30 warning on +{%2006/9/5bugfix +\Put@Direct(342,0){\setsixringv{#4}{0}{0}{5}{0}}% %substituents on 1 to 4 +}% +\global\drawsamesubstfalse%2002/05/30 warning off +{% + \@clipfalse \if@eclip \@cliptrue \fi% %substituents on 5 to 7 + \@eclipfalse \if@fclip \@ecliptrue \fi% + \@fclipfalse \if@gclip \@fcliptrue \fi% +\Put@Direct(0,0){\setsixringv{#4}{-1}{3}{7}{0}}% +}% +{\@aclipfalse \if@hclip \@acliptrue \fi% %substituent on 8 +\Put@Direct(0,0){\setsixringv{#4}{-7}{0}{2}{0}}% +}% +{\@clipfusefalse \if@iclip \@clipfusetrue \fi% + \Put@Direct(171,103){\setatombond{#4}{-8}{7}}% %9 %for 4a position +}% +{\@clipfusefalse \if@jclip \@clipfusetrue \fi% + \Put@Direct(171,303){\setatombond{#4}{-9}{1}}% %10 for 8a position +}% +\end{ShiftPicEnvB}\iniatom\iniflag}% %end of \decaheterov macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The |\clipdetection| command is used for the detection of +% clippings for a six-six ring. In particular, the clippings +% at the fused positions are detected in the |\decaheterov| command, +% where the data are applied to the command +% |\ylatombondposition| (chemstr.dtx). +% \changes{v1.02}{1998/10/16}{Newly added command} +% \changes{v2.01}{2001/6/20}{The +% \cs{storeclipinfo} command is added.} +% +% \begin{macro}{\clipdetection} +% \begin{macrocode} +\def\clipdetection{% +% hetero atom on 1 +\ifx\aaa\empty\else% + \@acliptrue% +\fi% +% hetero atom on 2 +\ifx\bbb\empty\else% + \@bcliptrue% +\fi% +% hetero atom on 3 +\ifx\ccc\empty\else% + \@ccliptrue% +\fi% +% hetero atom on 4 +\ifx\ddd\empty\else% + \@cliptrue% +\fi% +% hetero atom on 4a +{\let\eee=\iii% +\ifx\eee\empty\else% +% \global\@icliptrue% + \@icliptrue% + \storeclipinfo%2001/06/20 +\fi% +}% +\developclipinfo%2001/06/20 +% hetero atom on 8a +{\let\fff=\jjj% +\ifx\fff\empty\else% +% \global\@jcliptrue% + \@jcliptrue% + \storeclipinfo%2001/06/20 +\fi% +}% +\developclipinfo%2001/06/20 +% hetero atom on 5 +{\let\ddd=\eee% +\ifx\ddd\empty\else +% \global\@ecliptrue% + \@ecliptrue% + \storeclipinfo%2001/06/20 +\fi% +}% +\developclipinfo%2001/06/20 +% hetero atom on 6 +{\let\eee=\fff% +\ifx\eee\empty\else% +% \global\@fcliptrue% + \@fcliptrue% + \storeclipinfo%2001/06/20 +\fi% +}% +\developclipinfo%2001/06/20 +% hetero atom on 7 +{\let\fff=\gggA% +\ifx\fff\empty\else% +% \global\@gcliptrue% + \@gcliptrue% + \storeclipinfo%2001/06/20 +\fi% +}% +\developclipinfo%2001/06/20 +% hetero atom on 8 +{\let\aaa=\hhh% +\ifx\aaa\empty\else% +% \global\@hcliptrue% + \@hcliptrue% + \storeclipinfo%2001/06/20 +\fi% +}% +\developclipinfo%2001/06/20 +}% end \clipdetection +% \end{macrocode} +% \end{macro} +% +% The command |\ylhetposition| is used in the |\decaheterov| command, +% giving the sift values for drawing a structure as a substituent. +% \changes{v1.02}{1998/10/16}{Newly added command} +% \changes{v5.01}{2012/03/25}{Bug fixed} +% +% \begin{macro}{\ylhetposition} +% \begin{macrocode} +\def\ylhetposition#1#2#3#4#5{% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else% +\ifx\member\empty\else% +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}\relax% +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifnum#5<0\relax% +\@tmpaa=-\@tmpa\relax \advance\@tmpaa by#2\relax% +\else\@tmpaa=\@tmpa\relax \advance\@tmpaa by#2\relax\fi +\ifnum\@tmpaa>#3\relax% +\ifnum\@tmpaa<#4\relax% +\ifcase\@tmpaa%0 omit +% \end{macrocode} +% +% The flags |\@lyatrue| etc are not used in a revised edition. +% +% \begin{macrocode} + \or + \ifx\aaa\empty + \ifx\hhh\empty% aaa and hhh are absent + \gdef\@ylii{0}\gdef\@yli{-406}\global\@ylswtrue%\@ylatrue% subst. on 1 + \else% hhh is present + \def\@ylii{0}\def\@yli{-442}\@ylswtrue%\@ylatrue% subst. on 1 + \fi + \else%aaa is present + \def\@ylii{0}\def\@yli{-442}\@ylswtrue%\@ylatrue% subst. on 1 + \fi + \or\ifx\bbb\empty + \def\@ylii{-171}\def\@yli{-303}\@ylswtrue%\@ylbtrue% subst. on 2 +% \def\@ylii{-513}\def\@yli{-303}\@ylswtrue%\@ylbtrue% subst. on 2 + \else + \def\@ylii{-213}\def\@yli{-327}\@ylswtrue%\@ylbtrue% subst. on 2 +% \def\@ylii{-555}\def\@yli{-327}\@ylswtrue%\@ylbtrue% subst. on 2 + \fi + \or\ifx\ccc\empty + \def\@ylii{-171}\def\@yli{-103}\@ylswtrue%\@ylctrue% subst. on 3 +% \def\@ylii{-513}\def\@yli{-103}\@ylswtrue%\@ylctrue% subst. on 3 + \else + \def\@ylii{-213}\def\@yli{-79}\@ylswtrue%\@ylctrue% subst. on 3 +% \def\@ylii{-555}\def\@yli{-79}\@ylswtrue%\@ylctrue% subst. on 3 + \fi + \or\ifx\ddd\empty + \ifx\eee\empty% ddd and eee are absent + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%\@yldtrue% subst. on 4 + \else% eee present + \gdef\@ylii{0}\gdef\@yli{36}\global\@ylswtrue%\@yldtrue% subst. on 4 + \fi + \else% ddd present + \gdef\@ylii{0}\gdef\@yli{36}\global\@ylswtrue%\@yldtrue% subst. on 4 + \fi + \or + \ifx\eee\empty + \ifx\iii\empty + \ifx\fff\empty% eee, iii and fff are absent +% \def\@ylii{173}\def\@yli{-103}\@ylswtrue%\@yletrue% subst. on 5 + \def\@ylii{171}\def\@yli{-103}\@ylswtrue%\@yletrue% subst. on 5 refined 2013/03/25 + \else% fff is present + \def\@ylii{213}\def\@yli{-79}\@ylswtrue%\@yletrue% subst. on 5 + \fi +% \else% iii is present; fused position => no action here +% \def\@ylii{0}\def\@yli{-36}\@ylswtrue%\@yletrue% subst. on 5 + \fi + \else% eee is present +% \def\@ylii{213}\def\@yli{-79}\@ylswtrue%\@yletrue% subst. on 5 + \def\@ylii{171}\def\@yli{-103}\@ylswtrue%\@yletrue% subst. on 5 bug fix 2013/03/25 + \fi + \or + \ifx\fff\empty + \ifx\jjj\empty + \ifx\gggA\empty% fff, jjj, and ggg are absent +% \def\@ylii{173}\def\@yli{-303}\@ylswtrue%\@ylftrue% subst. on 6 + \def\@ylii{171}\def\@yli{-303}\@ylswtrue%\@ylftrue% subst. on 6 refined 2013/03/25 + \else%ggg is present + \def\@ylii{213}\def\@yli{-327}\@ylswtrue%\@ylftrue% subst. on 6 + \fi +% \else%jjj is present; fused position => no action here +% \def\@ylii{213}\def\@yli{-327}\@ylswtrue%\@ylftrue% subst. on 6 + \fi + \else%fff is present + \def\@ylii{213}\def\@yli{-327}\@ylswtrue%\@ylftrue% subst. on 6 + \fi% +\fi%end of ifcase +\fi\fi\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% \subsection{Inverse vertical type} +% +% The standard skeleton of a six-to-six fused heterocycle is selected +% to have the following locant numbers. +% +% \begin{verbatim} +% ********************************** +% * decahetero derivatives * +% * (vertical type, inverse type) * +% ********************************** +% The following numbering is adopted in this macro. +% +% 5 (9) 4 +% * 4a * +% 6 * * * * 3 +% | | | +% | | | +% 7 * * * * 2 +% * 8a * +% 8 (10)1 +% ^ +% | +% the original point +% \end{verbatim} +% +% The macro |\decaheterovi| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \decaheterovi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] +% \end{verbatim} +% +% The |SKBONDLIST| argument contains pairs of two alphabets in +% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase +% character selected from bond specifiers `a' to `k' and a uppercase +% character `A' or `B'. +% +% The |BONDLIST| argument contains one +% character selected from a to k, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The options `A' and `B' represent aromatic circles in two rings. +% The option `$n+$' ($n=1$ to $10$) represents a plus charge on a hetero atom +% at the $n$-position. +% +% \begin{verbatim} +% BONDLIST: list of bonds +% +% none or r : decahetero (right-handed) +% l : decahetero (left-handed) +% [] : fully saturated form +% a : 1,2-double bond b : 2,3-double bond +% c : 4,3-double bond d : 4,4a-double bond +% e : 4a,5-double bond f : 5,6-double bond +% g : 6,7-double bond h : 7,8-double bond +% i : 8,8a-double bond j : 1,8a-double bond +% k : 4a,8a-double bond +% K : 4a,8a-double bond in the other ring +% A : aromatic circle B : aromatic circle +% {n+} : plus at the n-nitrogen atom (n = 1 to 10) +% \end{verbatim} +% +% The |ATOMLIST| argument contains one or more heteroatom descriptors +% which are separated from each other by a semicolon. Each heteroatom +% descriptor consists of a locant number and a heteroatom, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% ATOMLIST: list of heteroatoms (max 10 atoms) +% +% for n = 1 to 8 +% +% n : Hetero atom, e.g. N, O, etc. at n-position +% e.g. 1==N for N at 1-position +% na : Hetero atom at 4a or 8b (n=4 or 8) +% e.g. 4a==N (or 9==N) for N at 4a-position +% 8a==N (or {{10}}==N) for N at 8a-position +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 8 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% +% for 9 (4a position) and 10 (8a position) +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% \end{verbatim} +% +% The argument |OMIT| represents one or more bonds to be omitted. +% The omitted edges may be regarded as both fused and non-fused +% positions. +% +% \begin{verbatim} +% OMIT: one or more bonds omitted (a to k: see BONDLIST) +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \decaheterovi{1==N}{1==Cl;2==F} +% \decaheterovi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \decaheterovi[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl} +% \end{verbatim} +% +% The definition of |\decaheterovi| uses a picture environment and +% consists of the same unit processes as shown in |\sixheterovi|: +% \begin{enumerate} +% \item treatment of atom list, +% \item placing outer skeletons, +% \item placing inner double bonds, +% \item setting hetero atoms, and +% \item placing substituents by using |\setsixringv| several times. +% \end{enumerate} +% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw}, +% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/12/25}{Spiro rings and fused rings: +% \cs{test@vertix@decavi}, etc.} +% \changes{v2.01}{2001/06/20}{The \cs{storeclipinfo} command, etc.} +% +% \begin{macro}{\decaheterovi} +% \begin{macro}{\@deca@heterovi} +% \begin{macro}{\@deca@@heterovi} +% \begin{macro}{\@decaheterovi} +% \begin{macrocode} +\def\decaheterovi{\@ifnextchar({\@deca@heterovi(@}{\@deca@heterovi(@)}} +\def\@deca@heterovi(#1){\@ifnextchar[{\@deca@@heterovi(#1)[@}% +{\@deca@@heterovi(#1)[@]}} +\def\@deca@@heterovi(#1)[#2]#3#4{\@ifnextchar[% +{\@decaheterovi(#1)[#2]{#3}{#4}[@}% +{\@decaheterovi(#1)[#2]{#3}{#4}[@]}} +\def\@decaheterovi(#1)[#2]#3#4[#5]{% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%% +% % treatment of atom list % +% %%%%%%%%%%%%%%%%%%%%%%%%%% +\iniflag\iniatom% +%%\test@vertix@sixv{#3}{d}{c}{b}{a}{h}{g}% +%%\test@vertix@decav{#3}{f}{e}{i}{j}{@}{@}%{i}{j} fixed +\test@vertix@decavi{#3}% +% +% %%%%%%%%%%%%%%%%%%%%%%% +% % adjustment for (yl) % +% %%%%%%%%%%%%%%%%%%%%%%% +\@reset@ylsw% +\ylhetposition{#4}{5}{0}{5}{-1}% %substituents on 1 to 4 +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-342}\def\@@yli{0}\fi +\else +\ylhetposition{#4}{12}{3}{7}{-1}% %substituents on 6 to 8 +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +\ylhetposition{#4}{-4}{0}{2}{0}% %substituent on 5 +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +{% +\clipdetection% +\@clipfusefalse \if@iclip \@clipfusetrue \fi% + \ylatombondposition{#4}{-9}{7}% %10 for 8a position +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-171}\def\@@yli{-103}\fi +\else +{% +\clipdetection% +\@clipfusefalse \if@jclip \@clipfusetrue \fi% +\ylatombondposition{#4}{-8}{1}% %9 for 4a position +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-171}\def\@@yli{-303}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(1200,880)(-\shiftii,-\shifti){decaheterovi}%2002/4/30 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +\begingroup +\resetbdsw% +\@bond@@omit{#5}% +{\let\fff=\jjj \let\eee=\iii% +\Put@Direct(342,0){\set@skel@bond{#1}{c}{a}}% + % bond between 1 and 2 \@aaa -> \skbonda etc +\Put@Direct(342,0){\set@skel@bond{#1}{b}{b}}% + % bond between 2 and 3 \@bbb -> \skbondb etc +\Put@Direct(342,0){\set@skel@bond{#1}{a}{c}}% + % bond between 3 and 4 \@ccc -> \skbondc etc +\Put@Direct(342,0){\set@skel@bond{#1}{j}{d}}% + % bond between 4 and 4a \@ddd -> \skbondd etc +\Put@Direct(342,0){\set@skel@bond{#1}{k}{e}}% + % bond between 4a and 8a \@kkk -> \skbonde etc +\Put@Direct(342,0){\set@skel@bond{#1}{d}{f}}% + % bond between 8a and 1 \@jjj -> \skbondf etc +}% +{\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA% + \let\ccc=\iii\let\bbb=\jjj% +\set@skel@bond{#1}{e}{a}% bond between 8 and 8a \@eee -> \skbonda etc +\set@skel@bond{#1}{i}{c}% bond between 5 and 4a \@iii -> \skbondc etc +\set@skel@bond{#1}{h}{d}% bond between 5 and 6 \@hhh -> \skbondd etc +\set@skel@bond{#1}{g}{e}% bond between 6 and 7 \@ggg -> \skbonde etc +\set@skel@bond{#1}{f}{f}% bond between 7 and 8 \@fff -> \skbondf etc +}% +\endgroup +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\@tfor\member:=#2\do{% +\if\member r\relax% +{\let\fff=\jjj \let\eee=\iii% + \Put@Direct(342,0){\bonda}% bond between 1 and 2 + \Put@Direct(342,0){\bondc}% bond between 3 and 4 +}% +{\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA% + \let\ccc=\iii\let\bbb=\jjj% + \Put@Direct(0,0){\bondb}% bond between 8a and 4a + \Put@Direct(0,0){\bondf}% bond between 8 and 7 + \Put@Direct(0,0){\bondd}% bond between 5 and 6 +}% +\else\if\member l\relax% +\else\if\member a\relax% + \Put@Direct(342,0){\bondc}% bond between 3 and 4 +\else\if\member b\relax% + \Put@Direct(342,0){\bondb}% bond between 2 and 3 +\else\if\member c\relax% + \Put@Direct(342,0){\bonda}% bond between 1 and 2 +\else\if\member d\relax% +{\let\fff=\jjj% + \Put@Direct(342,0){\bondf}% bond between 1 and 8a +}% +\else\if\member e\relax% +{\let\aaa=\hhh \let\bbb=\jjj% + \Put@Direct(0,0){\bonda}% bond between 8 and 8a +}% +\else\if\member f\relax% +{\let\aaa=\hhh \let\fff=\gggA% + \Put@Direct(0,0){\bondf}% bond between 8 and 7 +}% +\else\if\member g\relax% +{\let\eee=\fff \let\fff=\gggA% + \Put@Direct(0,0){\bonde}% bond between 6 and 7 +}% +\else\if\member h\relax% +{\let\ddd=\eee \let\eee=\fff% + \Put@Direct(0,0){\bondd}% bond between 5 and 6 +}% +\else\if\member i\relax% +{\let\ccc=\iii \let\ddd=\eee% + \Put@Direct(0,0){\bondc}% bond between 5 and 4a +}% +\else\if\member j\relax% +{\let\eee=\iii% + \Put@Direct(342,0){\bondd}% bond between 4 and 4a +}% +\else\if\member k\relax% +{\let\ccc=\iii\let\bbb=\jjj% + \Put@Direct(0,0){\bondb}% bond between 8a and 4a +}% +\else\if\member K\relax% +{\let\eee=\iii\let\fff=\jjj% + \Put@Direct(342,0){\bonde}% bond between 8a and 4a in the other ring +}% +\else\if\member A%left aromatic circle + \Put@oCircle(0,203){240}% %circle +\else\if\member B%left aromatic circle + \Put@oCircle(342,203){240}% %circle +\else + \expandafter\twoCH@@R\member//% + \def\aax{4a}\def\aay{8a}\def\aaz{10}% + \if\@@tmpa 4\relax% % plus charge etc. + \putratom{304}{282}{\@@tmpb}% % right type + \else\if\@@tmpa 3\relax% + \putratom{402}{253}{\@@tmpb}% % right type + \else\if\@@tmpa 2\relax% + \putratom{402}{120}{\@@tmpb}% % right type + \else\if\@@tmpa 1\relax% + \putratom{304}{68}{\@@tmpb}% % right type + \else\if\@@tmpa 7\relax% + \putlatom{-60}{253}{\@@tmpb}% % left type + \else\if\@@tmpa 6\relax% + \putlatom{-60}{120}{\@@tmpb}% % left type + \else\if\@@tmpa 5\relax% + \putratom{-38}{282}{\@@tmpb}% % right type + \else\if\@@tmpa 9\relax% + \putratom{60}{253}{\@@tmpb}% % right type + \else\ifx\@@tmpa\aax\relax% + \putratom{60}{253}{\@@tmpb}% % right type + \else\ifx\@@tmpa\aay\relax% + \putratom{60}{120}{\@@tmpb}% % right type + \else\ifx\@@tmpa\aaz\relax% 1998/10/17 by S. Fujita +% \else\if\@@tmpa 10\relax% + \putratom{60}{120}{\@@tmpb}% % right type + \else\if\@@tmpa 8\relax% + \putratom{-38}{68}{\@@tmpb}% % right type + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +% *********************** +% * setting fused rings * +% *********************** + \expandafter\twoCH@R\member//% + \set@fusion@decavi +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +\fi\fi\fi\fi\fi\fi% +}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % setting hetero atoms and spiro rings % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\iniflag\iniatom% +\@tmpclipfalse +\Put@Direct(0,0){\set@hetatom@sixv{#3}{12}{3}{7}{-1}% +% \@gclipfalse \if@fclip \global\@gcliptrue \fi% +% \@fclipfalse \if@eclip \global\@fcliptrue \fi% +% \@eclipfalse \if@clip \global\@ecliptrue \fi% + \@gclipfalse \if@fclip \@gcliptrue \fi%%bug fix 2013/03/25 + \@fclipfalse \if@eclip \@fcliptrue \fi%%bug fix 2013/03/25 + \@eclipfalse \if@clip \@ecliptrue \@clipfalse \fi%%bug fix 2013/03/25 +\storeclipinfo +}%substituents on 6 to 8 +\developclipinfo +\Put@Direct(0,0){\set@hetatom@sixv{#3}{-4}{0}{2}{0}% +% \@aclipfalse \if@aclip \global\@hcliptrue \fi% +% \@aclipfalse \if@aclip \@hcliptrue \fi% + \@hclipfalse \if@aclip \@hcliptrue \@aclipfalse\fi%bug fix 2013/03/25 + \storeclipinfo +}%%substituent on 5 +\developclipinfo +\Put@Direct(0,0){\set@vrtx@decafusevi{#3}% + \@tmpclipfalse +% \if@iclip \global\@tmpcliptrue \fi +% \if@jclip \global\@icliptrue \fi +% \if@tmpclip \global\@jcliptrue \fi + \if@iclip \@tmpcliptrue \fi + \if@jclip \@icliptrue \fi + \if@tmpclip \@jcliptrue \fi + \storeclipinfo +}% fused positions +\developclipinfo +%to be done after all +\Put@Direct(342,0){\set@hetatom@sixv{#3}{5}{0}{5}{-1}% +% \if@aclip \global\@acliptrue\fi +% \if@bclip \global\@bcliptrue\fi +% \if@cclip \global\@ccliptrue\fi +% \if@clip \global\@cliptrue\fi +\storeclipinfo +}% %substituents on 1 to 4 +\developclipinfo +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents and exocyclic bonds % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\global\drawsamesubsttrue%2002/05/30 warning on +\Put@Direct(342,0){\setsixringv{#4}{5}{0}{5}{-1}}% %substituents on 1 to 4 +\global\drawsamesubstfalse%2002/05/30 warning off +{\@clipfalse \if@eclip \@cliptrue \fi% %substituents on 6 to 8 + \@eclipfalse \if@fclip \@ecliptrue \fi% + \@fclipfalse \if@gclip \@fcliptrue \fi% +\Put@Direct(0,0){\setsixringv{#4}{12}{3}{7}{-1}}% +}% +{\@aclipfalse \if@hclip \@acliptrue \fi% %substituent on 5 +\Put@Direct(0,0){\setsixringv{#4}{-4}{0}{2}{0}}% +}% +{\@clipfusefalse \if@iclip \@clipfusetrue \fi% + \Put@Direct(171,103){\setatombond{#4}{-9}{7}}% %10 for 8a position +}% +{\@clipfusefalse \if@jclip \@clipfusetrue \fi% + \Put@Direct(171,303){\setatombond{#4}{-8}{1}}% %9 for 4a position +}% +\end{ShiftPicEnvB}\iniatom\iniflag}% %end of \decaheterovi macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The macro |\test@vertix@decavi| is used to test the presence of +% a hetero atom or a spiro substituent on a vertex of the +% decaheterovi nucleus. +% +% \begin{macro}{\if@tmpclip} +% \begin{macro}{\test@vertix@decavi} +% \begin{macrocode} +\newif\if@tmpclip \@tmpclipfalse +\def\test@vertix@decavi#1{% +\@forsemicol\member:=#1\do{% +\ifx\member\empty\else% +\expandafter\@m@mb@r\member;\relax% +\expandafter\twoch@r\@membera{}% +\ifcase\@tmpa% + \or% + \if\@tmpb s\relax\def\ddd{}\else\def\ddd{@}\fi + \or%2 + \if\@tmpb s\relax\def\ccc{}\else\def\ccc{@}\fi + \or%3 + \if\@tmpb s\relax\def\bbb{}\else\def\bbb{@}\fi + \or% + \if\@tmpb a% + \def\jjj{@}%4a + \else\if\@tmpb s% + \def\aaa{}%4 + \else\if\@tmpb h% + \def\aaa{@}%4 + \else\ifx\@tmpb\empty% + \def\aaa{@}%4 + \fi\fi\fi\fi% + \or%5 + \if\@tmpb s\relax\def\hhh{}\else\def\hhh{@}\fi + \or%6 + \if\@tmpb s\relax\def\gggA{}\else\def\gggA{@}\fi + \or%7 + \if\@tmpb s\relax\def\fff{}\else\def\fff{@}\fi + \or% + \if\@tmpb a% + \xdef\iii{@}%8a + \else\if\@tmpb s% + \xdef\eee{}%8s + \else\if\@tmpb h% + \xdef\eee{@}%8h + \else\ifx\@tmpb\empty% + \xdef\eee{@}%8 + \fi\fi\fi\fi% +\or%9 (= 4a) + \if\@tmpb s\relax\def\jjj{}\else\def\jjj{@}\fi +\or%10 (= 8a) + \if\@tmpb s\relax\def\iii{}\else\def\iii{@}\fi +\fi\fi}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The macro |\set@vrtx@decafusevi| is used to set +% a hetero atom or on a vertex of a bridgehead location. +% +% \begin{macro}{\set@vrtx@decafusevi} +% \begin{macrocode} +\def\set@vrtx@decafusevi#1{% +\@forsemicol\member:=#1\do{% +\ifx\member\empty\else% +\expandafter\@m@mb@r\member;\relax% +\expandafter\twoch@r\@membera{}% +\ifcase\@tmpa\or\or\or + \or%%%%4 + \if\@tmpb a\relax% +% \global\@icliptrue% + \@icliptrue%2001/06/20 by S. Fujita + \putlatom{207}{280}{\@memberb}% % left type + \else\relax + \fi + \or\or\or + \or%8 + \if\@tmpb a\relax% +% \global\@jcliptrue% + \@jcliptrue%%2001/06/20 by S. Fujita + \putlatom{207}{65}{\@memberb}% % left type + \else\relax + \fi +\or%9 (= 4a) +% \global\@icliptrue% + \@icliptrue%%2001/06/20 by S. Fujita + \putlatom{207}{280}{\@memberb}% % left type +\or%10 (= 8a) +% \global\@jcliptrue% + \@jcliptrue%%2001/06/20 by S. Fujita + \putlatom{207}{65}{\@memberb}% % left type +\fi\fi}% +}% end of the macro \set@vrtx@decafusevi +% \end{macrocode} +% \end{macro} +% +% The macro |\set@fusion@decavi| is used to set +% a fused ring or on an edge of the decaheterovi nucleus. +% +% \begin{macro}{\set@fusion@decavi} +% \begin{macrocode} +\def\set@fusion@decavi{% + \let\@@tmpa=\@tmpa + \let\@@tmpb=\@tmpb + \if\@tmpa a% + \let\@@tmpa=\@tmpa + \Put@Direct(342,0){\set@fusionadd@sixvi}% + \else\if\@tmpa A% + \let\@@tmpa=\@tmpa + \Put@Direct(342,0){\set@fusionadd@sixvi}% + \else\if\@tmpa b% + \let\@@tmpa=\@tmpa + \Put@Direct(342,0){\set@fusionadd@sixvi}% + \else\if\@tmpa B% + \let\@@tmpa=\@tmpa + \Put@Direct(342,0){\set@fusionadd@sixvi}% + \else\if\@tmpa c% + \let\@@tmpa=\@tmpa + \Put@Direct(342,0){\set@fusionadd@sixvi}% + \else\if\@tmpa C% + \let\@@tmpa=\@tmpa + \Put@Direct(342,0){\set@fusionadd@sixvi}% + \else\if\@tmpa d% + \let\@@tmpa=\@tmpa + \Put@Direct(342,0){\set@fusionadd@sixvi}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `d'}% + \fi + \else\if\@tmpa D% + \let\@@tmpa=\@tmpa + \Put@Direct(342,0){\set@fusionadd@sixvi}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `D'}% + \fi + \else\if\@tmpa e% + \edef\@@tmpa{c}% + \Put@Direct(0,0){\set@fusionadd@sixvi}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `e'}% + \fi + \else\if\@tmpa E% + \edef\@@tmpa{C}% + \Put@Direct(0,0){\set@fusionadd@sixvi}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `E'}% + \fi + \else\if\@tmpa f% + \edef\@@tmpa{d}% + \Put@Direct(0,0){\set@fusionadd@sixvi}% + \else\if\@tmpa F% + \edef\@@tmpa{D}% + \Put@Direct(0,0){\set@fusionadd@sixvi}% + \else\if\@tmpa g% + \edef\@@tmpa{e}% + \Put@Direct(0,0){\set@fusionadd@sixvi}% + \else\if\@tmpa G% + \edef\@@tmpa{E}% + \Put@Direct(0,0){\set@fusionadd@sixvi}% + \else\if\@tmpa h% + \edef\@@tmpa{f}% + \Put@Direct(0,0){\set@fusionadd@sixvi}% + \else\if\@tmpa H% + \edef\@@tmpa{F}% + \Put@Direct(0,0){\set@fusionadd@sixvi}% + \else\if\@tmpa i% + \edef\@@tmpa{a}% + \Put@Direct(0,0){\set@fusionadd@sixvi}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `i'}% + \fi + \else\if\@tmpa I% + \edef\@@tmpa{A}% + \Put@Direct(0,0){\set@fusionadd@sixvi}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `I'}% + \fi + \else\if\@tmpa j% + \edef\@@tmpa{f}% + \Put@Direct(342,0){\set@fusionadd@sixvi}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `j'}% + \fi + \else\if\@tmpa J% + \edef\@@tmpa{F}% + \Put@Direct(342,0){\set@fusionadd@sixvi}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `J'}% + \fi + \else\if\@tmpa k% + \edef\@@tmpa{e}% + \Put@Direct(342,0){\set@fusionadd@sixvi}% + \if@smallringsw\else + \XyMTeXWarning{Forbidden Fusion for bond `k'}% + \fi + \else\if\@tmpa K% + \edef\@@tmpa{E}% + \Put@Direct(342,0){\set@fusionadd@sixvi}% + \if@smallringsw\else + \XyMTeXWarning{Forbidden Fusion for bond `K'}% + \fi + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +}% end of the macro \set@fusion@decavi +% \end{macrocode} +% \end{macro} +% +% \subsection{Vertical-bottom type} +% The macro |\decaheterovb| is used for drawing six-six heterocyclic +% derivatives of vertical-bottom type (numbering from the bottom +% to the left-upper part). +% The word ``vertical'' means that each benzene ring is a vertical type. +% The word ``bottom'' means that the benzene ring with young locant numbers +% is located at the bottom. +% The skeleton and endocyclic double bonds are drawn directly, +% while substituents and exocyclic bonds are placed by useing +% the inner macro |\setsixringv|. +% +% The standard skeleton of a six-to-six fused heterocycle is selected +% to have the following locant numbers. +% +% \changes{v1.02}{1998/10/16}{Newly added command} +% \changes{v2.01}{2001/06/20}{The \cs{storeclipinfo} command, etc.} +% +% \begin{verbatim} +% *************************** +% * decahetro derivatives * +% * (vertical bottom type) * +% *************************** +% The following numbering is adopted in this macro. +% +% 7 +% * +% 6 * * 8 +% | | +% | | 0G (4a) +% 5 * * * +% 0F(4a) * * 1 +% | | +% | | +% 4 * * 2 +% * +% 3 +% ^ +% | +% the original point +% \end{verbatim} +% +% The macro |\decaheterovb| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \decaheterovb(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] +% \end{verbatim} +% +% The |SKBONDLIST| argument contains pairs of two alphabets in +% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase +% character selected from bond specifiers `a' to `k' and a uppercase +% character `A' or `B'. +% +% The |BONDLIST| argument contains one +% character selected from a to k, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The option `A' and `B' represent aromatic circles. The option +% `$n+$' ($n=1$ to $10$) represents a plus charge on a hetero atom +% at the $n$-position. +% +% \begin{verbatim} +% BONDLIST: list of bonds +% +% none or r : decahetero (right-handed) +% l : decahetero (left-handed) +% [] : fully saturated form +% a : 1,2-double bond b : 2,3-double bond +% c : 4,3-double bond d : 4,4a-double bond +% e : 4a,5-double bond f : 5,6-double bond +% g : 6,7-double bond h : 7,8-double bond +% i : 8,8a-double bond j : 1,8a-double bond +% k : 4a,8a-double bond +% K : 4a,8a-double bond in the other ring +% A : aromatic circle B : aromatic circle +% {n+} : plus at the n-nitrogen atom (n = 1 to 10) +% \end{verbatim} +% +% The |ATOMLIST| argument contains one or more heteroatom descriptors +% which are separated from each other by a semicolon. Each heteroatom +% descriptor consists of a locant number and a heteroatom, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% ATOMLIST: list of heteroatoms (max 10 atoms) +% +% for n = 1 to 8 +% +% n : Hetero atom, e.g. N, O, etc. at n-position +% e.g. 1==N for N at 1-position +% na : Hetero atom at 4a or 8b (n=4 or 8) +% e.g. 4a==N (or 9==N) for N at 4a-position +% 8a==N (or {{10}}==N) for N at 8a-position +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 8 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% +% for 9 (4a position) and 10 (8a position) +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% \end{verbatim} +% +% The argument |OMIT| represents one or more bonds to be omitted. +% The omitted edges may be regarded as both fused and non-fused +% positions. +% +% \begin{verbatim} +% OMIT: one or more bonds omitted (a to k: see BONDLIST) +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \decaheterovb{1==N}{1==Cl;2==F} +% \decaheterovb[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \decaheterovb[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl} +% \end{verbatim} +% +% The definition of |\decaheterovb| uses a picture environment and +% consists of the same unit processes as shown in |\sixheterov|: +% \begin{enumerate} +% \item treatment of atom list, +% \item placing outer skeletons, +% \item placing inner double bonds, +% \item setting hetero atoms, and +% \item placing substituents by using |\setsixringv| several times. +% \end{enumerate} +% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw}, +% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/12/25}{Spiro rings and fused rings} +% +% \begin{macro}{\decaheterovb} +% \begin{macro}{\@deca@heterovb} +% \begin{macro}{\@deca@@heterovb} +% \begin{macro}{\@decaheterovb} +% \begin{macrocode} +\def\decaheterovb{\@ifnextchar({\@deca@heterovb(@}{\@deca@heterovb(@)}} +\def\@deca@heterovb(#1){\@ifnextchar[{\@deca@@heterovb(#1)[@}% +{\@deca@@heterovb(#1)[@]}} +\def\@deca@@heterovb(#1)[#2]#3#4{\@ifnextchar[% +{\@decaheterovb(#1)[#2]{#3}{#4}[@}% +{\@decaheterovb(#1)[#2]{#3}{#4}[@]}} +\def\@decaheterovb(#1)[#2]#3#4[#5]{% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%% +% % treatment of atom list % +% %%%%%%%%%%%%%%%%%%%%%%%%%% +\iniflag\iniatom% +\test@vertix@decavb{#3}% +% %%%%%%%%%%%%%%%%%%%%%%% +% % adjustment for (yl) % +% %%%%%%%%%%%%%%%%%%%%%%% +\@reset@ylsw% +{\let\eee=\ddd\let\ddd=\ccc +\let\ccc=\bbb\let\bbb=\aaa +\ylhetpositionb{#4}{1}{1}{6}{0}% %substituents on 1 to 4 +}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +\ylhetpositionb{#4}{0}{4}{7}{0}% %substituents on 5 to 6 +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{171}\def\@@yli{-303}\fi +\else +{\let\aaa=\gggA \let\bbb=\hhh +\ylhetpositionb{#4}{-6}{0}{3}{0}% %substituents on 7 to 8 +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{171}\def\@@yli{-303}\fi +\else +{% +\clipdetection% +\@clipfusefalse \if@iclip \@clipfusetrue \fi% +\ylatombondposition{#4}{-8}{9}% %9 %for 4a position +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{171}\def\@@yli{-303}\fi +\else +{% +\clipdetection% +\@clipfusefalse \if@jclip \@clipfusetrue \fi% +\ylatombondposition{#4}{-9}{3}% %10 for 8a position +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{-406}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(1000,1200)(-550,-240){decaheterob}%2002/4/30 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +\begingroup +\resetbdsw% +\@bond@@omit{#5}% +{\let\eee=\ddd\let\ddd=\ccc + \let\ccc=\bbb\let\bbb=\aaa + \let\aaa=\jjj \let\fff=\iii +\set@skel@bond{#1}{j}{a}% bond between 8a and 1 \@jjj -> \skbonda etc +\set@skel@bond{#1}{a}{b}% bond between 1 and 2 \@aaa -> \skbondb etc +\set@skel@bond{#1}{b}{c}% bond between 2 and 3 \@bbb -> \skbondc etc +\set@skel@bond{#1}{c}{d}% bond between 3 and 4 \@ccc -> \skbondd etc +\set@skel@bond{#1}{d}{e}% bond between 4 and 4a \@ddd -> \skbonde etc +\set@skel@bond{#1}{k}{f}% bond between 4a and 8a \@kkk -> \skbondf etc +}% +{\let\aaa=\gggA\let\bbb=\hhh\let\ccc=\jjj\let\ddd=\iii +\Put@Direct(-171,303){\set@skel@bond{#1}{h}{a}}% + % bond between 7 and 8 \@hhh -> \skbonda etc +\Put@Direct(-171,303){\set@skel@bond{#1}{i}{b}}% + % bond between 8 and 8a \@iii -> \skbondb etc +\Put@Direct(-171,303){\set@skel@bond{#1}{e}{d}}% + % bond between 4a and 5 \@eee -> \skbondd etc +\Put@Direct(-171,303){\set@skel@bond{#1}{f}{e}}% + % bond between 5 and 6 \@fff -> \skbonde etc +\Put@Direct(-171,303){\set@skel@bond{#1}{g}{f}}% + % bond between 6 and 7 \@ggg -> \skbondf etc +}% +\endgroup +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\@tfor\member:=#2\do{% +\if\member r\relax% +{\let\aaa=\gggA\let\bbb=\hhh\let\ccc=\jjj\let\ddd=\iii + \Put@Direct(-171,303){\bonda}% bond between 7 and 8 + \Put@Direct(-171,303){\bonde}% bond between 5 and 6 +}% +{\let\eee=\ddd\let\ddd=\ccc + \let\ccc=\bbb\let\bbb=\aaa + \let\aaa=\jjj \let\fff=\iii + \Put@Direct(0,0){\bondb}% bond between 1 and 2 + \Put@Direct(0,0){\bondd}% bond between 3 and 4 + \Put@Direct(0,0){\bondf}% bond between 4a and 4b +}% +\else\if\member l\relax% +\else\if\member a\relax% +{\let\ccc=\bbb\let\bbb=\aaa + \Put@Direct(0,0){\bondb}% bond between 1 and 2 +}% +\else\if\member b\relax +{\let\ddd=\ccc\let\ccc=\bbb + \Put@Direct(0,0){\bondc}% bond between 2 and 3 +}% +\else\if\member c\relax +{\let\eee=\ddd\let\ddd=\ccc + \Put@Direct(0,0){\bondd}% bond between 3 and 4 +}% +\else\if\member d\relax% +{\let\fff=\eee\let\eee=\ddd + \Put@Direct(0,0){\bonde}% bond between 4 and 4a +}% +\else\if\member e\relax% +{\let\ddd=\iii% + \Put@Direct(-171,303){\bondd}% bond between 5 and 4a +}% +\else\if\member f\relax% + \Put@Direct(-171,303){\bonde}% bond between 5 and 6 +\else\if\member g\relax% +{\let\aaa=\gggA + \Put@Direct(-171,303){\bondf}% bond between 6 and 7 +}% +\else\if\member h\relax% +{\let\aaa=\gggA \let\bbb=\hhh% + \Put@Direct(-171,303){\bonda}% bond between 8 and 7 +}% +\else\if\member i\relax% +{\let\bbb=\hhh \let\ccc=\jjj% + \Put@Direct(-171,303){\bondb}% bond between 8 and 8a +}% +\else\if\member j\relax% +{\let\bbb=\aaa\let\aaa=\jjj% + \Put@Direct(0,0){\bonda}% bond between 1 and 8a +}% +\else\if\member k\relax% +{\let\aaa=\jjj\let\fff=\iii% + \Put@Direct(0,0){\bondf}% bond between 8a and 4a +}% +\else\if\member K\relax% +{\let\ccc=\jjj\let\ddd=\iii% + \Put@Direct(-171,303){\bondc}% bond between 8a and 4a in the other ring +}% +\else\if\member A%left aromatic circle + \Put@oCircle(-171,506){240}% %circle +\else\if\member B%left aromatic circle + \Put@oCircle(0,203){240}% %circle +\else \expandafter\twoCH@@R\member//% + \def\aax{8a}\def\aay{4a}\def\aaz{10}% + \if\@@tmpa 1\relax% % plus charge etc. + \putratom{60}{253}{\@@tmpb}% % right type + \else\if\@@tmpa 2\relax% + \putratom{60}{120}{\@@tmpb}% % right type + \else\if\@@tmpa 3\relax% + \putratom{-38}{68}{\@@tmpb}% % right type + \else\if\@@tmpa 4\relax% + \putratom{-120}{120}{\@@tmpb}% % right type + \else\if\@@tmpa 5\relax% + \putlatom{-209}{431}{\@@tmpb}% % left type + \else\if\@@tmpa 6\relax% + \putlatom{-209}{546}{\@@tmpb}% % left type + \else\if\@@tmpa 7\relax% + \putratom{-209}{585}{\@@tmpb}% % right type + \else\if\@@tmpa 8\relax% + \putratom{-111}{546}{\@@tmpb}% % right type + \else\if\@@tmpa 9\relax% + \putlatom{-60}{253}{\@@tmpb}% % left type + \else\ifx\@@tmpa\aaz\relax% + \putratom{-38}{282}{\@@tmpb}% % right type + \else\ifx\@@tmpa\aax\relax% + \putratom{-38}{282}{\@@tmpb}% % right type + \else\ifx\@@tmpa\aay\relax% + \putratom{-209}{371}{\@@tmpb}% % right type + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +% *********************** +% * setting fused rings * +% *********************** + \expandafter\twoCH@R\member//% + \set@fusion@decavb +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +\fi\fi\fi\fi\fi\fi% +}% +% \end{macrocode} +% +% \changes{v2.00a}{2000/11/11}{The +% \cs{iniflag} command is added to 5- and 8-substitution.} +% \changes{v5.01}{2013/03/23}{bug fix subs 7 to 8.} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting hetero atoms % +% %%%%%%%%%%%%%%%%%%%%%%%% +\iniflag\iniatom +\Put@Direct(-171,303){\set@hetatom@sixv{#3}{0}{4}{7}{0}% +%\if@eclip \global\@ecliptrue\fi% +%\if@fclip \global\@fcliptrue\fi% +\storeclipinfo +}% %substituents on 5 to 6 +\developclipinfo +\Put@Direct(-171,303){\set@hetatom@sixv{#3}{-6}{0}{3}{0}% +% \@gclipfalse \if@aclip \global\@gcliptrue \fi% +% \@hclipfalse \if@bclip \global\@hcliptrue \fi% + \@gclipfalse \if@aclip \@gcliptrue \fi% +% \@hclipfalse \if@bclip \@hcliptrue \fi% + \@hclipfalse \if@bclip \@hcliptrue \@bclipfalse \fi%bugfix 2013/03/23 +\storeclipinfo +}% %substituents on 7 to 8 +\developclipinfo +\Put@Direct(0,0){\set@vrtx@decafusevb{#3}% +% \if@iclip \global\@icliptrue \fi +% \if@jclip \global\@jcliptrue \fi +\storeclipinfo +}%9 %for 4a position, %10 for 8a position +\developclipinfo +%to be done after all +\Put@Direct(0,0){\iniflag%2000/11/11 by S. Fujita +\set@hetatom@sixv{#3}{1}{1}{6}{0}% +%\@aclipfalse \if@bclip \global\@acliptrue \fi% +%\@bclipfalse \if@cclip \global\@bcliptrue \fi% +%\@cclipfalse \if@clip \global\@ccliptrue \fi% +%\@clipfalse \if@eclip \global\@cliptrue \fi% +\@aclipfalse \if@bclip \@acliptrue \fi% +\@bclipfalse \if@cclip \@bcliptrue \fi% +\@cclipfalse \if@clip \@ccliptrue \fi% +\@clipfalse \if@eclip \@cliptrue \fi% +\storeclipinfo +}% %substituents on 1 to 4 +\developclipinfo +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents and exocyclic bonds % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\global\drawsamesubsttrue%2002/05/30 warning on +{% +\@eclipfalse \if@clip \@ecliptrue \fi% +\@clipfalse \if@cclip \@cliptrue \fi% +\@cclipfalse \if@bclip \@ccliptrue \fi% +\@bclipfalse \if@aclip \@bcliptrue \fi% +\Put@Direct(0,0){\setsixringv{#4}{1}{1}{6}{0}}% %substituents on 1 to 4 +}% +\global\drawsamesubstfalse%2002/05/30 warning off +{% +\Put@Direct(-171,303){\setsixringv{#4}{0}{4}{7}{0}}% %substituents on 5 to 6 +}% +{% + \@aclipfalse \if@gclip \@acliptrue \fi% + \@bclipfalse \if@hclip \@bcliptrue \fi% +\Put@Direct(-171,303){\setsixringv{#4}{-6}{0}{3}{0}}% %substituents on 7 to 8 +}% +{\@clipfusefalse \if@iclip \@clipfusetrue \fi% + \Put@Direct(-171,303){\setatombond{#4}{-8}{9}}% %9 %for 4a position +}% +{\@clipfusefalse \if@jclip \@clipfusetrue \fi% + \Put@Direct(0,406){\setatombond{#4}{-9}{3}}% %10 for 8a position +}% +\end{ShiftPicEnvB}\iniatom\iniflag}% %end of \decaheterovb macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The command |\ylhetpositionb| is used in the |\decaheterovb| command, +% giving the sift values for drawing a structure as a substituent. +% \changes{v1.02}{1998/10/16}{Newly added command} +% +% \begin{macro}{\ylhetpositionb} +% \begin{macrocode} +\def\ylhetpositionb#1#2#3#4#5{% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else% +\ifx\member\empty\else% +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}\relax% +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifnum#5<0\relax% +\@tmpaa=-\@tmpa\relax \advance\@tmpaa by#2\relax% +\else\@tmpaa=\@tmpa\relax \advance\@tmpaa by#2\relax\fi +\ifnum\@tmpaa>#3\relax% +\ifnum\@tmpaa<#4\relax% +\ifcase\@tmpaa%0 omit + \or + \ifx\aaa\empty% + \ifx\gggA\empty% aaa and ggg are absent + \gdef\@ylii{0}\gdef\@yli{-406}\global\@ylswtrue%\@ylatrue% subst. on 1 + \else% ggg is present + \gdef\@ylii{0}\gdef\@yli{-442}\global\@ylswtrue%\@ylatrue% subst. on 1 + \fi + \else%aaa is present + \gdef\@ylii{0}\gdef\@yli{-442}\global\@ylswtrue%\@ylatrue% subst. on 1 + \fi + \or + \ifx\bbb\empty + \ifx\hhh\empty% aaa and hhh are absent + \gdef\@ylii{-171}\gdef\@yli{-303}\global\@ylswtrue%\@ylbtrue% subst. on 2 + \else%hhh is present + \gdef\@ylii{-213}\gdef\@yli{-327}\global\@ylswtrue%\@ylbtrue% subst. on 2 + \fi + \else + \gdef\@ylii{-213}\gdef\@yli{-327}\global\@ylswtrue%\@ylbtrue% subst. on 2 + \fi + \or\ifx\ccc\empty + \gdef\@ylii{-171}\gdef\@yli{-103}\global\@ylswtrue%\@ylctrue% subst. on 3 + \else + \gdef\@ylii{-213}\gdef\@yli{-79}\global\@ylswtrue%\@ylctrue% subst. on 3 + \fi + \or + \ifx\ddd\empty + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%\@yldtrue% subst. on 4 + \else% ddd present + \gdef\@ylii{0}\gdef\@yli{36}\global\@ylswtrue%\@yldtrue% subst. on 4 + \fi + \or + \ifx\eee\empty + \gdef\@ylii{173}\gdef\@yli{-103}\global\@ylswtrue%\@yletrue% subst. on 5 + \else% eee is present + \gdef\@ylii{223}\gdef\@yli{-79}\global\@ylswtrue%\@yletrue% subst. on 5 + \fi + \or + \ifx\fff\empty + \gdef\@ylii{173}\gdef\@yli{-303}\global\@ylswtrue%\@ylftrue% subst. on 6 + \else%fff is present + \gdef\@ylii{213}\gdef\@yli{-327}\global\@ylswtrue%\@ylftrue% subst. on 6 + \fi +\fi%end of ifcase +\fi\fi\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% The macro |\test@vertix@decavb| determines the presence of +% a hetro atom or a spriro ring at each of the vertices. +% \changes{v2.00}{1998/12/25}{Added: spiro rings} +% +% \begin{macro}{\test@vertix@decavb} +% \begin{macrocode} +\def\test@vertix@decavb#1{% +\@forsemicol\member:=#1\do{% +\ifx\member\empty\else% +\expandafter\@m@mb@r\member;\relax% +\expandafter\twoch@r\@membera{}% +\ifcase\@tmpa% + \or% \xdef\aaa{\@memberb}%1 + \if\@tmpb s\relax\def\aaa{}\else\def\aaa{@}\fi + \or% \xdef\bbb{\@memberb}%2 + \if\@tmpb s\relax\def\bbb{}\else\def\bbb{@}\fi + \or% \xdef\ccc{\@memberb}%3 + \if\@tmpb s\relax\def\ccc{}\else\def\ccc{@}\fi + \or% + \if\@tmpb a% + \def\iii{@}%4a + \else\if\@tmpb s% + \def\ddd{}%4 + \else\if\@tmpb h% + \def\ddd{@}%4 + \else\ifx\@tmpb\empty% + \def\ddd{@}%4 + \fi\fi\fi\fi% + \or% \xdef\eee{\@memberb}%5 + \if\@tmpb s\relax\def\eee{}\else\def\eee{@}\fi + \or% \xdef\fff{\@memberb}%6 + \if\@tmpb s\relax\def\fff{}\else\def\fff{@}\fi + \or% \xdef\gggA{\@memberb}%7 + \if\@tmpb s\relax\def\gggA{}\else\def\gggA{@}\fi + \or% + \if\@tmpb a% + \def\jjj{@}%8a + \else\if\@tmpb s% + \def\hhh{}%8 + \else\if\@tmpb h% + \def\hhh{@}%4 + \else\ifx\@tmpb\empty% + \def\hhh{@}%4 + \fi\fi\fi\fi% +\or% \xdef\iii{\@memberb}%9 (= 4a) + \if\@tmpb s\relax\def\iii{}\else\def\iii{@}\fi +\or% \xdef\jjj{\@memberb}%10 (= 8a) + \if\@tmpb s\relax\def\jjj{}\else\def\jjj{@}\fi +\fi\fi}% +}% end of the macro \test@vertix@decavb +% \end{macrocode} +% \end{macro} +% +% The macro |\set@vrtx@decafusevb| typesets a hetero atom +% at each fused position. +% \changes{v2.00}{1998/12/25}{Added: spiro rings} +% \changes{v2.01}{2001/06/20}{\cs{global} omitted} +% +% \begin{macro}{\set@vrtx@decafusevb} +% \begin{macrocode} +\def\set@vrtx@decafusevb#1{% +\@forsemicol\member:=#1\do{% +\ifx\member\empty\else% +\expandafter\@m@mb@r\member;\relax% +\expandafter\twoch@r\@membera{}% +\ifcase\@tmpa\or\or\or + \or%%%%4 + \if\@tmpb a\relax% +% \global\@icliptrue% + \@icliptrue%%2001/06/20 by S. Fujita + \putlatom{-135}{280}{\@memberb}% % left type + \else\relax + \fi + \or\or\or + \or%8 + \if\@tmpb a\relax% +% \global\@jcliptrue% + \@jcliptrue%%2001/06/20 by S. Fujita + \putratom{-31}{356}{\@memberb}% % right type + \else\relax + \fi +\or%9 (= 4a) +% \global\@icliptrue% + \@icliptrue%%2001/06/20 by S. Fujita + \putlatom{-135}{280}{\@memberb}% % left type +\or%10 (= 8a) +% \global\@jcliptrue% + \@jcliptrue%%2001/06/20 by S. Fujita + \putratom{-31}{356}{\@memberb}% % right type +\fi\fi}% +}% end of the macro \set@vrtx@decafusevb +% \end{macrocode} +% \end{macro} +% +% \subsection{Vertical-top type} +% +% The macro |\decaheterovt| is used for drawing six-to-six fused derivatives +% of vertical-bottom type (numbering from the top to the left-down part). +% The word ``vertical'' means that each benzene ring is a vertical type. +% The word ``top'' means that the benzene ring with young locant numbers +% is located at the top. +% The skeleton and endocyclic double bonds are drawn directly, +% while substituents and exocyclic bonds are placed by useing +% the inner macro |\setsixringv|. +% \changes{v1.02}{1998/10/18}{Newly added command} +% \changes{v2.01}{2001/06/20}{The \cs{storeclipinfo} command, etc.} +% +% \begin{verbatim} +% **************************** +% * decaheterovt derivatives * +% * (vertical-top type) * +% **************************** +% The following numbering is adopted in this macro. +% +% 2 +% * +% 1 * * 3 +% | | +% | | +% 0G (8a) * * 4 +% 8 * * 0F(4a) +% | | +% | | +% 7 * * 5 +% * +% 6 +% ^ +% | +% the original point +% \end{verbatim} +% +% The macro |\decaheterovt| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \decaheterovt(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] +% \end{verbatim} +% +% The |SKBONDLIST| argument contains pairs of two alphabets in +% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase +% character selected from bond specifiers `a' to `k' and a uppercase +% character `A' or `B'. +% +% The |BONDLIST| argument contains one +% character selected from a to k, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The option `A' and `B' represent aromatic circles. The option +% `$n+$' ($n=1$ to $10$) represents a plus charge on a hetero atom +% at the $n$-position. +% +% \begin{verbatim} +% BONDLIST: list of bonds +% +% none or r : decahetero (right-handed) +% l : decahetero (left-handed) +% [] : fully saturated form +% a : 1,2-double bond b : 2,3-double bond +% c : 4,3-double bond d : 4,4a-double bond +% e : 4a,5-double bond f : 5,6-double bond +% g : 6,7-double bond h : 7,8-double bond +% i : 8,8a-double bond j : 1,8a-double bond +% k : 4a,8a-double bond +% K : 4a,8a-double bond in the other ring +% A : aromatic circle B : aromatic circle +% {n+} : plus at the n-nitrogen atom (n = 1 to 10) +% \end{verbatim} +% +% The |ATOMLIST| argument contains one or more heteroatom descriptors +% which are separated from each other by a semicolon. Each heteroatom +% descriptor consists of a locant number and a heteroatom, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% ATOMLIST: list of heteroatoms (max 10 atoms) +% +% for n = 1 to 8 +% +% n : Hetero atom, e.g. N, O, etc. at n-position +% e.g. 1==N for N at 1-position +% na : Hetero atom at 4a or 8b (n=4 or 8) +% e.g. 4a==N (or 9==N) for N at 4a-position +% 8a==N (or {{10}}==N) for N at 8a-position +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 8 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% +% for 9 (4a position) and 10 (8a position) +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% \end{verbatim} +% +% The argument |OMIT| represents one or more bonds to be omitted. +% The omitted edges may be regarded as both fused and non-fused +% positions. +% +% \begin{verbatim} +% OMIT: one or more bonds omitted (a to k: see BONDLIST) +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \decaheterovt{1==N}{1==Cl;2==F} +% \decaheterovt[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \decaheterovt[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl} +% \end{verbatim} +% +% The definition of |\decaheterovt| uses a picture environment and +% consists of the same unit processes as shown in |\sixheterov|: +% \begin{enumerate} +% \item treatment of atom list, +% \item placing outer skeletons, +% \item placing inner double bonds, +% \item setting hetero atoms, and +% \item placing substituents by using |\setsixringv| several times. +% \end{enumerate} +% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw}, +% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/10/31}{Add: Spiro and fused rings} +% \changes{v5.01}{2013/03/23}{Bug fix: omit vacant at 1 position} +% +% \begin{macro}{\decaheterovt} +% \begin{macro}{\@deca@heterovt} +% \begin{macro}{\@deca@@heterovt} +% \begin{macro}{\@decaheterovt} +% \begin{macrocode} +\def\decaheterovt{\@ifnextchar({\@deca@heterovt(@}{\@deca@heterovt(@)}} +\def\@deca@heterovt(#1){\@ifnextchar[{\@deca@@heterovt(#1)[@}% +{\@deca@@heterovt(#1)[@]}} +\def\@deca@@heterovt(#1)[#2]#3#4{\@ifnextchar[% +{\@decaheterovt(#1)[#2]{#3}{#4}[@}% +{\@decaheterovt(#1)[#2]{#3}{#4}[@]}} +\def\@decaheterovt(#1)[#2]#3#4[#5]{% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%% +% % treatment of atom list % +% %%%%%%%%%%%%%%%%%%%%%%%%%% +\iniflag\iniatom% +\test@vertix@decavb{#3}% +% %%%%%%%%%%%%%%%%%%%%%%% +% % adjustment for (yl) % +% %%%%%%%%%%%%%%%%%%%%%%% +\@reset@ylsw% +{\let\fff=\aaa +\ylhetpositiont{#4}{5}{5}{7}{0}% %substituent on 1 +}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-171}\def\@@yli{-303}\fi +\else +{\let\aaa=\bbb\let\bbb=\ccc\let\ccc=\ddd +\ylhetpositiont{#4}{-1}{0}{4}{0}% %substituents on 2 to 4 +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-171}\def\@@yli{-303}\fi +\else +{\let\ccc=\eee\let\ddd=\fff +\let\eee=\gggA\let\fff=\hhh +\ylhetpositiont{#4}{-2}{2}{7}{0}% %substituents on 5 to 8 +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +{% +\clipdetection% +\@clipfusefalse \if@iclip \@clipfusetrue \fi% +\ylatombondposition{#4}{-8}{5}% %9 %for 4a position +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-171}\def\@@yli{-303}\fi +\else +{% +\clipdetection% +\@clipfusefalse \if@jclip \@clipfusetrue \fi% +\ylatombondposition{#4}{-9}{11}% %10 for 8a position +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{-406}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(1200,880)(-\shiftii,-\shifti){decaheterovt}%2002/4/30 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +\begingroup +\resetbdsw% +\@bond@@omit{#5}% +{% + \let\fff=\aaa \let\aaa=\bbb \let\bbb=\ccc + \let\ccc=\ddd \let\ddd=\iii \let\eee=\jjj +\Put@Direct(171,303){\set@skel@bond{#1}{b}{a}}% + % bond between 2 and 3 \@bbb -> \skbonda etc +\Put@Direct(171,303){\set@skel@bond{#1}{c}{b}}% + % bond between 3 and 4 \@ccc -> \skbondb etc +\Put@Direct(171,303){\set@skel@bond{#1}{d}{c}}% + % bond between 4 and 4a \@ddd -> \skbondc etc +\Put@Direct(171,303){\set@skel@bond{#1}{k}{d}}% + % bond between 4a and 8a \@kkk -> \skbondd etc +\Put@Direct(171,303){\set@skel@bond{#1}{j}{e}}% + % bond between 8a and 1 \@jjj -> \skbonde etc +\Put@Direct(171,303){\set@skel@bond{#1}{a}{f}}% + % bond between 1 and 2 \@aaa -> \skbondf etc +}% +{% + \let\aaa=\jjj\let\bbb=\iii + \let\ccc=\eee\let\ddd=\fff + \let\eee=\gggA\let\fff=\hhh +\set@skel@bond{#1}{e}{b}% bond between 4a and 5 \@eee -> \skbondb etc +\set@skel@bond{#1}{f}{c}% bond between 5 and 6 \@fff -> \skbondc etc +\set@skel@bond{#1}{g}{d}% bond between 6 and 7 \@ggg -> \skbondd etc +\set@skel@bond{#1}{h}{e}% bond between 7 and 8 \@hhh -> \skbonde etc +\set@skel@bond{#1}{i}{f}% bond between 8 and 8a \@iii -> \skbondf etc +}% +\endgroup +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\@tfor\member:=#2\do{% +\if\member r\relax% +{% + \let\ccc=\eee\let\ddd=\fff\let\eee=\gggA\let\fff=\gggA + \Put@Direct(0,0){\bondc}% bond between 7 and 8 + \Put@Direct(0,0){\bonde}% bond between 5 and 6 +}% +{% + \let\fff=\aaa\let\aaa=\bbb + \let\bbb=\ccc\let\ccc=\ddd + \let\ddd=\iii\let\eee=\jjj + \Put@Direct(171,303){\bondf}% bond between 1 and 2 + \Put@Direct(171,303){\bondb}% bond between 3 and 4 + \Put@Direct(171,303){\bondd}% bond between 4a and 8a +}% +\else\if\member l\relax% +\else\if\member a\relax% +{\let\fff=\aaa\let\aaa=\bbb + \Put@Direct(171,303){\bondf}% bond between 1 and 2 +}% +\else\if\member b\relax +{\let\aaa=\bbb\let\bbb=\ccc + \Put@Direct(171,303){\bonda}% bond between 2 and 3 +}% +\else\if\member c\relax +{\let\bbb=\ccc\let\ccc=\ddd + \Put@Direct(171,303){\bondb}% bond between 3 and 4 +}% +\else\if\member d\relax% +{\let\ccc=\ddd\let\ddd=\eee + \Put@Direct(171,303){\bondc}% bond between 4 and 4a +}% +\else\if\member e\relax% +{\let\ccc=\eee\let\bbb=\iii% + \Put@Direct(0,0){\bondb}% bond between 5 and 4a +}% +\else\if\member f\relax% +{\let\ccc=\eee\let\ddd=\fff + \Put@Direct(0,0){\bondc}% bond between 5 and 6 +}% +\else\if\member g\relax% +{\let\ddd=\fff\let\eee=\gggA + \Put@Direct(0,0){\bondd}% bond between 6 and 7 +}% +\else\if\member h\relax% +{\let\eee=\gggA \let\fff=\hhh% + \Put@Direct(0,0){\bonde}% bond between 8 and 7 +}% +\else\if\member i\relax% +{\let\aaa=\jjj \let\fff=\hhh% + \Put@Direct(0,0){\bondf}% bond between 8 and 8a +}% +\else\if\member j\relax% +{\let\fff=\aaa\let\eee=\jjj% + \Put@Direct(171,303){\bonde}% bond between 1 and 8a +}% +\else\if\member k\relax% +{\let\aaa=\jjj\let\bbb=\iii% + \Put@Direct(0,0){\bonda}% bond between 8a and 4a +}% +\else\if\member K\relax% +{\let\eee=\jjj\let\ddd=\iii% + \Put@Direct(171,303){\bondd}% bond between 8a and 4a in the other ring +}% +\else\if\member A%left aromatic circle + \Put@oCircle(171,506){240}% %circle +\else\if\member B%left aromatic circle + \Put@oCircle(0,203){240}% %circle +\else + \expandafter\twoCH@@R\member//% + \def\aax{8a}\def\aay{4a}\def\aaz{10}% + \if\@@tmpa 1\relax% % plus charge etc. + \putlatom{111}{546}{\@@tmpb}% % left type + \else\if\@@tmpa 2\relax% + \putlatom{209}{585}{\@@tmpb}% % left type + \else\if\@@tmpa 3\relax% + \putratom{209}{546}{\@@tmpb}% % right type + \else\if\@@tmpa 4\relax% + \putratom{209}{431}{\@@tmpb}% % right type + \else\if\@@tmpa 5\relax% + \putratom{60}{120}{\@@tmpb}% % right type + \else\if\@@tmpa 6\relax% + \putratom{-38}{68}{\@@tmpb}% % right type + \else\if\@@tmpa 7\relax% + \putratom{-120}{120}{\@@tmpb}% % right type + \else\if\@@tmpa 8\relax% + \putlatom{-60}{253}{\@@tmpb}% % left type + \else\if\@@tmpa 9\relax% + \putratom{60}{253}{\@@tmpb}% % right type + \else\ifx\@@tmpa\aaz\relax% + \putratom{-38}{282}{\@@tmpb}% % right type + \else\ifx\@@tmpa\aax\relax% + \putratom{-38}{282}{\@@tmpb}% % right type + \else\ifx\@@tmpa\aay\relax% + \putratom{60}{253}{\@@tmpb}% % right type + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +% *********************** +% * setting fused rings * +% *********************** + \expandafter\twoCH@R\member//% + \set@fusion@decavt +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +\fi\fi\fi\fi\fi\fi% +}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting hetero atoms % +% %%%%%%%%%%%%%%%%%%%%%%%% +\iniflag +\Put@Direct(0,0){\set@hetatom@sixv{#3}{-2}{2}{7}{0}% +% \@hclipfalse \if@fclip \global\@hcliptrue \fi% +% \@gclipfalse \if@eclip \global\@gcliptrue \fi% +% \@fclipfalse \if@clip \global\@fcliptrue \fi% +% \@eclipfalse \if@cclip \global\@ecliptrue \fi% + \@hclipfalse \if@fclip \@hcliptrue \fi% + \@gclipfalse \if@eclip \@gcliptrue \fi% + \@fclipfalse \if@clip \@fcliptrue \fi% + \@eclipfalse \if@cclip \@ecliptrue \fi% +\storeclipinfo +}% %substituents on 5 to 8 +\developclipinfo +\Put@Direct(0,0){\set@vrtx@decafusevt{#3}% +% \if@iclip \global\@icliptrue \fi +% \if@jclip \global\@jcliptrue \fi +\storeclipinfo +}%9 %for 4a position, %10 for 8a position +\developclipinfo +%to be done after all (exept aclip) +\Put@Direct(171,303){\set@hetatom@sixv{#3}{-1}{0}{4}{0}% +%\@clipfalse \if@cclip \global\@cliptrue \fi% +%\@cclipfalse \if@bclip \global\@ccliptrue \fi% +%\@bclipfalse \if@aclip \global\@bcliptrue \fi% +\@clipfalse \if@cclip \@cliptrue \fi% +\@cclipfalse \if@bclip \@ccliptrue \fi% +%\@bclipfalse \if@aclip \@bcliptrue \fi%bug fix 2013/03/23 +\@bclipfalse \if@aclip \@bcliptrue \@aclipfalse \fi% +\storeclipinfo +}% %substituents on 2 to 4 +\developclipinfo +{% +\@fclipfalse%locally cancelled 1999/2/15 by Shinsaku Fujita +\Put@Direct(171,303){\set@hetatom@sixv{#3}{5}{5}{7}{0}% +%\@aclipfalse \if@fclip \global\@acliptrue \fi% +\@aclipfalse \if@fclip \@acliptrue \fi% +\storeclipinfo +}% %substituent on 1 +\developclipinfo +}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents and exocyclic bonds % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\global\drawsamesubsttrue%2002/05/30 warning on +{% +\@fclipfalse \if@aclip \@fcliptrue \fi% +\Put@Direct(171,303){\setsixringv{#4}{5}{5}{7}{0}}% %substituent on 1 +}% +\global\drawsamesubstfalse%2002/05/30 warning off +{% +\@aclipfalse \if@bclip \@acliptrue \fi% +\@bclipfalse \if@cclip \@bcliptrue \fi% +\@cclipfalse \if@clip \@ccliptrue \fi% +\Put@Direct(171,303){\setsixringv{#4}{-1}{0}{4}{0}}% %substituents on 2 to 4 +}% +{% + \@cclipfalse \if@eclip \@ccliptrue \fi% + \@clipfalse \if@fclip \@cliptrue \fi% + \@eclipfalse \if@gclip \@ecliptrue \fi% + \@fclipfalse \if@hclip \@fcliptrue \fi% +\Put@Direct(0,0){\setsixringv{#4}{-2}{2}{7}{0}}% %substituents on 5 to 8 +}% +{\@clipfusefalse \if@iclip \@clipfusetrue \fi% + \Put@Direct(171,303){\setatombond{#4}{-8}{5}}% %9 %for 4a position +}% +{\@clipfusefalse \if@jclip \@clipfusetrue \fi% + \Put@Direct(0,406){\setatombond{#4}{-9}{11}}% %10 for 8a position +}% +\end{ShiftPicEnvB}\iniatom\iniflag}% %end of \decaheterovt macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The command |\ylhetpositiont| is used in the |\decaheterovt| command, +% giving the sift values for drawing a structure as a substituent. +% \changes{v1.02}{1998/10/18}{Newly added command} +% +% \begin{macro}{\ylhetpositiont} +% \begin{macrocode} +\def\ylhetpositiont#1#2#3#4#5{% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else% +\ifx\member\empty\else% +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}\relax% +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifnum#5<0\relax% +\@tmpaa=-\@tmpa\relax \advance\@tmpaa by#2\relax% +\else\@tmpaa=\@tmpa\relax \advance\@tmpaa by#2\relax\fi +\ifnum\@tmpaa>#3\relax% +\ifnum\@tmpaa<#4\relax% +\ifcase\@tmpaa%0 omit + \or + \ifx\aaa\empty% + \ifx\bbb\empty% aaa and bbb are absent + \gdef\@ylii{0}\gdef\@yli{-406}\global\@ylswtrue%\@ylatrue% subst. on 1 + \else% bbb is present + \gdef\@ylii{0}\gdef\@yli{-442}\global\@ylswtrue%\@ylatrue% subst. on 1 + \fi + \else%aaa is present + \gdef\@ylii{0}\gdef\@yli{-442}\global\@ylswtrue%\@ylatrue% subst. on 1 + \fi + \or + \ifx\bbb\empty + \ifx\ccc\empty% aaa and ccc are absent + \gdef\@ylii{-171}\gdef\@yli{-303}\global\@ylswtrue%\@ylbtrue% subst. on 2 + \else%ccc is present + \gdef\@ylii{-213}\gdef\@yli{-327}\global\@ylswtrue%\@ylbtrue% subst. on 2 + \fi + \else + \gdef\@ylii{-213}\gdef\@yli{-327}\global\@ylswtrue%\@ylbtrue% subst. on 2 + \fi + \or + \ifx\ccc\empty + \ifx\ddd\empty + \ifx\eee\empty% ccc, ddd, eee are absent + \gdef\@ylii{-171}\gdef\@yli{-103}\global\@ylswtrue%\@ylctrue%subst. on 3 + \else%eee is present + \gdef\@ylii{-213}\gdef\@yli{-79}\global\@ylswtrue%\@ylctrue% subst. on 3 + \fi + \else%ddd is present + \gdef\@ylii{-213}\gdef\@yli{-79}\global\@ylswtrue%\@ylctrue% subst. on 3 + \fi + \else%ccc is present + \gdef\@ylii{-213}\gdef\@yli{-79}\global\@ylswtrue%\@ylctrue% subst. on 3 + \fi + \or + \ifx\ddd\empty + \ifx\fff\empty%ddd and fff are absent + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%\@yldtrue% subst. on 4 + \else%fff present + \gdef\@ylii{0}\gdef\@yli{36}\global\@ylswtrue%\@yldtrue% subst. on 4 + \fi + \else% ddd present + \gdef\@ylii{0}\gdef\@yli{36}\global\@ylswtrue%\@yldtrue% subst. on 4 + \fi + \or + \ifx\eee\empty + \ifx\gggA\empty%eee and ggg are absent + \gdef\@ylii{173}\gdef\@yli{-103}\global\@ylswtrue%\@yletrue% subst. on 5 + \else% ggg is present + \gdef\@ylii{223}\gdef\@yli{-79}\global\@ylswtrue%\@yletrue% subst. on 5 + \fi + \else% eee is present + \gdef\@ylii{223}\gdef\@yli{-79}\global\@ylswtrue%\@yletrue% subst. on 5 + \fi + \or + \ifx\fff\empty + \ifx\hhh\empty%fff and hhh are absent + \gdef\@ylii{173}\gdef\@yli{-303}\global\@ylswtrue%\@ylftrue% subst. on 6 + \else%hhh is present + \gdef\@ylii{213}\gdef\@yli{-327}\global\@ylswtrue%\@ylftrue% subst. on 6 + \fi + \else%fff is present + \gdef\@ylii{213}\gdef\@yli{-327}\global\@ylswtrue%\@ylftrue% subst. on 6 + \fi +\fi%end of ifcase +\fi\fi\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% The macro |\set@vrtx@decafusevt| is used to typeset a hetero +% atom at each fused vertex (4a or 8a) of a decaheterovt ring. +% +% \begin{macro}{\set@vrtx@decafusevt} +% \begin{macrocode} +\def\set@vrtx@decafusevt#1{% +\@forsemicol\member:=#1\do{% +\ifx\member\empty\else% +\expandafter\@m@mb@r\member;\relax% +\expandafter\twoch@r\@membera{}% +\ifcase\@tmpa\or\or\or + \or%%%%4 + \if\@tmpb a\relax% +% \global\@icliptrue% + \global\@icliptrue%%2001/06/20 by S. Fujita + \putratom{135}{280}{\@memberb}% % right type + \else\relax + \fi + \or\or\or + \or%8 + \if\@tmpb a\relax% +% \global\@jcliptrue% + \@jcliptrue%%2001/06/20 by S. Fujita + \putlatom{31}{356}{\@memberb}% % left type + \else\relax + \fi +\or%9 (= 4a) +% \global\@icliptrue% + \@icliptrue%%2001/06/20 by S. Fujita + \putratom{135}{280}{\@memberb}% % right type +\or%10 (= 8a) +% \global\@jcliptrue% + \@jcliptrue%%2001/06/20 by S. Fujita + \putlatom{31}{356}{\@memberb}% % left type +\fi\fi}% +}% end of the macro \set@vrtx@decafusevt +% \end{macrocode} +% \end{macro} +% +% \subsection{Short-cut commands for fused heterocycles} +% +% The macros |\decaheterov|, |\decaheterovb|, and +% |\decaheterovt| can be used in the form of a fixed |ATOMLIST|. +% Hence, the resulting commands for drawing a fused heterocyle +% with one or more nitrogen atoms have an argument |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% +% \begin{verbatim} +% **************************************************** +% * heterocycles having two fused six-membered rings * +% * (vertical type) * +% **************************************************** +% +% \quinolinev[BONDLIST]{SUBSLIST} +% \quinolinevi[BONDLIST]{SUBSLIST} +% \quinolinevb[BONDLIST]{SUBSLIST} +% \quinolinevt[BONDLIST]{SUBSLIST} +% +% \isoquinolinev[BONDLIST]{SUBSLIST} +% \isoquinolinevi[BONDLIST]{SUBSLIST} +% \isoquinolinevb[BONDLIST]{SUBSLIST} +% \isoquinolinevt[BONDLIST]{SUBSLIST} +% +% \quinoxalinev[BONDLIST]{SUBSLIST} +% \quinoxalinevi[BONDLIST]{SUBSLIST} +% \quinoxalinevb[BONDLIST]{SUBSLIST} +% \quinoxalinevt[BONDLIST]{SUBSLIST} +% +% \quinazolinev[BONDLIST]{SUBSLIST} +% \quinazolinevi[BONDLIST]{SUBSLIST} +% \quinazolinevb[BONDLIST]{SUBSLIST} +% \quinazolinevt[BONDLIST]{SUBSLIST} +% +% \cinnolinev[BONDLIST]{SUBSLIST} +% \cinnolinevi[BONDLIST]{SUBSLIST} +% \cinnolinevb[BONDLIST]{SUBSLIST} +% \cinnolinevt[BONDLIST]{SUBSLIST} +% +% \pteridinev[BONDLIST]{SUBSLIST} +% \pteridinevi[BONDLIST]{SUBSLIST} +% \pteridinevb[BONDLIST]{SUBSLIST} +% \pteridinevt[BONDLIST]{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one character selected +% from a to k (K), each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The optiona `A' and `B' typeset aromatic circles. +% The option +% `$n+$' ($n=1$ to $10$) represents a plus charge on a hetero atom +% at the $n$-position. +% +% \begin{verbatim} +% BONDLIST: list of bonds +% +% none or r : decahetero (right-handed) +% l : decahetero (left-handed) +% [] : fully saturated form +% a : 1,2-double bond b : 2,3-double bond +% c : 4,3-double bond d : 4,4a-double bond +% e : 4a,5-double bond f : 5,6-double bond +% g : 6,7-double bond h : 7,8-double bond +% i : 8,8a-double bond j : 1,8a-double bond +% k : 4a,8a-double bond +% K : 4a,8a-double bond in the other ring +% A : aromatic circle B : aromatic circle +% {n+} : plus at the n-nitrogen atom (n = 1 to 10) +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 8 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% +% for 9 (4a position) and 10 (8a position) +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \quinolinev{3==Cl;2==F} +% \quinolinev{3==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% +% \begin{macro}{\quinolinev} +% \begin{macro}{\quinolinevi} +% \begin{macro}{\quinolinevb} +% \begin{macro}{\quinolinevt} +% \changes{v1.02}{1998/10/18}{Newly added commands: +% \cs{quinolinevb} and \cs{quinolinevt}} +% \begin{macrocode} +\def\quinolinev{% + \@ifnextchar[{\@quinolinev[@}{\@quinolinev[acfhk]}} +\def\@quinolinev[#1]#2{% +\iforigpt \typeout{command `quinolinev' % + is based on `decaheterov'.}\fi% +\decaheterov[#1]{1==N}{#2}} +\def\quinolinevi{% + \@ifnextchar[{\@quinolinevi[@}{\@quinolinevi[acfhk]}} +\def\@quinolinevi[#1]#2{% +\iforigpt \typeout{command `quinolinevi' % + is based on `decaheterovi'.}\fi% +\decaheterovi[#1]{1==N}{#2}} +\def\quinolinevb{% + \@ifnextchar[{\@quinolinevb[@}{\@quinolinevb[acfhk]}} +\def\@quinolinevb[#1]#2{% +\iforigpt \typeout{command `quinolinevb' % + is based on `decaheterovb'.}\fi% +\decaheterovb[#1]{1==N}{#2}} +\def\quinolinevt{% + \@ifnextchar[{\@quinolinevt[@}{\@quinolinevt[acfhk]}} +\def\@quinolinevt[#1]#2{% +\iforigpt \typeout{command `quinolinevt' % + is based on `decaheterovt'.}\fi% +\decaheterovt[#1]{1==N}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\isoquinolinev} +% \begin{macro}{\isoquinolinevi} +% \begin{macro}{\isoquinolinevb} +% \begin{macro}{\isoquinolinevt} +% \changes{v1.02}{1998/10/18}{Newly added commands: +% \cs{isoquinolinevb} and \cs{isoquinolinevt}} +% \begin{macrocode} +\def\isoquinolinev{% + \@ifnextchar[{\@isoquinolinev[@}{\@isoquinolinev[acfhk]}} +\def\@isoquinolinev[#1]#2{% +\iforigpt \typeout{command `isoquinolinev' % + is based on `decaheterov'.}\fi% +\decaheterov[#1]{2==N}{#2}} +\def\isoquinolinevi{% + \@ifnextchar[{\@isoquinolinevi[@}{\@isoquinolinevi[acfhk]}} +\def\@isoquinolinevi[#1]#2{% +\iforigpt \typeout{command `isoquinolinevi' % + is based on `decaheterovi'.}\fi% +\decaheterovi[#1]{2==N}{#2}}% +\def\isoquinolinevb{% + \@ifnextchar[{\@isoquinolinevb[@}{\@isoquinolinevb[acfhk]}} +\def\@isoquinolinevb[#1]#2{% +\iforigpt \typeout{command `isoquinolinevb' % + is based on `decaheterovi'.}\fi% +\decaheterovb[#1]{2==N}{#2}}% +\def\isoquinolinevt{% + \@ifnextchar[{\@isoquinolinevt[@}{\@isoquinolinevt[acfhk]}} +\def\@isoquinolinevt[#1]#2{% +\iforigpt \typeout{command `isoquinolinevt' % + is based on `decaheterovt'.}\fi% +\decaheterovt[#1]{2==N}{#2}}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\quinoxalinev} +% \begin{macro}{\quinoxalinevi} +% \begin{macro}{\quinoxalinevb} +% \begin{macro}{\quinoxalinevt} +% \changes{v1.02}{1998/10/18}{Newly added commands: +% \cs{quinoxalinevb} and \cs{quinoxalinevt}} +% \begin{macrocode} +\def\quinoxalinev{% + \@ifnextchar[{\@quinoxalinev[@}{\@quinoxalinev[acfhk]}} +\def\@quinoxalinev[#1]#2{% +\iforigpt \typeout{command `quinoxalinev' % + is based on `decaheterov'.}\fi% +\decaheterov[#1]{1==N;4==N}{#2}} +\def\quinoxalinevi{% + \@ifnextchar[{\@quinoxalinevi[@}{\@quinoxalinevi[acfhk]}} +\def\@quinoxalinevi[#1]#2{%but v--->vi 2013/03/22 +\iforigpt \typeout{command `quinoxalinevi' % + is based on `decaheterovi'.}\fi% +\decaheterovi[#1]{1==N;4==N}{#2}} +\def\quinoxalinevb{% + \@ifnextchar[{\@quinoxalinevb[@}{\@quinoxalinevb[acfhk]}} +\def\@quinoxalinevb[#1]#2{% +\iforigpt \typeout{command `quinoxalinevb' % + is based on `decaheterovb'.}\fi% +\decaheterovb[#1]{1==N;4==N}{#2}} +\def\quinoxalinevt{% + \@ifnextchar[{\@quinoxalinevt[@}{\@quinoxalinevt[acfhk]}} +\def\@quinoxalinevt[#1]#2{% +\iforigpt \typeout{command `quinoxalinevt' % + is based on `decaheterovt'.}\fi% +\decaheterovt[#1]{1==N;4==N}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\quinazolinev} +% \begin{macro}{\quinazolinevi} +% \begin{macro}{\quinazolinevb} +% \begin{macro}{\quinazolinevt} +% \changes{v1.02}{1998/10/18}{Newly added commands: +% \cs{quinazolinevb} and \cs{quinazolinevt}} +% \begin{macrocode} +\def\quinazolinev{% + \@ifnextchar[{\@quinazolinev[@}{\@quinazolinev[acfhk]}} +\def\@quinazolinev[#1]#2{% +\iforigpt \typeout{command `quinazolinev' % + is based on `decaheterov'.}\fi% +\decaheterov[#1]{1==N;3==N}{#2}} +\def\quinazolinevi{% + \@ifnextchar[{\@quinazolinevi[@}{\@quinazolinevi[acfhk]}} +\def\@quinazolinevi[#1]#2{% +\iforigpt \typeout{command `quinazolinevi' % + is based on `decaheterovi'.}\fi% +\decaheterovi[#1]{1==N;3==N}{#2}} +\def\quinazolinevb{% + \@ifnextchar[{\@quinazolinevb[@}{\@quinazolinevb[acfhk]}} +\def\@quinazolinevb[#1]#2{% +\iforigpt \typeout{command `quinazolinevb' % + is based on `decaheterovb'.}\fi% +\decaheterovb[#1]{1==N;3==N}{#2}} +\def\quinazolinevt{% + \@ifnextchar[{\@quinazolinevt[@}{\@quinazolinevt[acfhk]}} +\def\@quinazolinevt[#1]#2{% +\iforigpt \typeout{command `quinazolinevt' % + is based on `decaheterovt'.}\fi% +\decaheterovt[#1]{1==N;3==N}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\cinnolinev} +% \begin{macro}{\cinnolinevi} +% \begin{macro}{\cinnolinevb} +% \begin{macro}{\cinnolinevt} +% \changes{v1.02}{1998/10/18}{Newly added commands: +% \cs{cinnolinevb} and \cs{cinnolinevt}} +% \begin{macrocode} +\def\cinnolinev{% + \@ifnextchar[{\@cinnolinev[@}{\@cinnolinev[acfhk]}} +\def\@cinnolinev[#1]#2{% +\iforigpt \typeout{command `cinnolinev' % + is based on `decaheterov'.}\fi% +\decaheterov[#1]{1==N;2==N}{#2}} +\def\cinnolinevi{% + \@ifnextchar[{\@cinnolinevi[@}{\@cinnolinevi[acfhk]}} +\def\@cinnolinevi[#1]#2{% +\iforigpt \typeout{command `cinnolinevi' % + is based on `decaheterovi'.}\fi% +\decaheterovi[#1]{1==N;2==N}{#2}} +\def\cinnolinevb{% + \@ifnextchar[{\@cinnolinevb[@}{\@cinnolinevb[acfhk]}} +\def\@cinnolinevb[#1]#2{% +\iforigpt \typeout{command `cinnolinevb' % + is based on `decaheterovb'.}\fi% +\decaheterovb[#1]{1==N;2==N}{#2}} +\def\cinnolinevt{% + \@ifnextchar[{\@cinnolinevt[@}{\@cinnolinevt[acfhk]}} +\def\@cinnolinevt[#1]#2{% +\iforigpt \typeout{command `cinnolinevt' % + is based on `decaheterovt'.}\fi% +\decaheterovt[#1]{1==N;2==N}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\pteridinev} +% \begin{macro}{\pteridinevi} +% \begin{macro}{\pteridinevb} +% \begin{macro}{\pteridinevt} +% \changes{v1.02}{1998/10/18}{Newly added commands: +% \cs{pteridinevb} and \cs{pteridinevt}} +% \begin{macrocode} +\def\pteridinev{\@ifnextchar[{\@pteridinev[@}{\@pteridinev[acfhk]}} +\def\@pteridinev[#1]#2{% +\iforigpt \typeout{command `pteridinev' % + is based on `decaheterov'.}\fi% +\decaheterov[#1]{1==N;3==N;5==N;8==N}{#2}} +\def\pteridinevi{\@ifnextchar[{\@pteridinevi[@}{\@pteridinevi[acfhk]}} +\def\@pteridinevi[#1]#2{% +\iforigpt \typeout{command `pteridinevi' % + is based on `decaheterovi'.}\fi% +\decaheterovi[#1]{1==N;3==N;5==N;8==N}{#2}} +\def\pteridinevb{\@ifnextchar[{\@pteridinevb[@}{\@pteridinevb[acfhk]}} +\def\@pteridinevb[#1]#2{% +\iforigpt \typeout{command `pteridinevb' % + is based on `decaheterovb'.}\fi% +\decaheterovb[#1]{1==N;3==N;5==N;8==N}{#2}} +\def\pteridinevt{\@ifnextchar[{\@pteridinevt[@}{\@pteridinevt[acfhk]}} +\def\@pteridinevt[#1]#2{% +\iforigpt \typeout{command `pteridinevt' % + is based on `decaheterovt'.}\fi% +\decaheterovt[#1]{1==N;3==N;5==N;8==N}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \section{Six-to-five fused heterocycles} +% \subsection{Vertical type} +% +% The standard skeleton of a six-to-five fused heterocycle is selected +% to have the following locant numbers. +% +% \begin{verbatim} +% ************************** +% * nonahetero derivatives * +% * (vertical type) * +% ************************** +% The following numbering is adopted in this macro. +% +% 4 +% * 3a(8) +% 5 * * _____ 3 +% | | | +% | | | +% 6 * * * * 2 +% * 7a * +% 7 (9) 1 +% ^ +% | +% the original point +% \end{verbatim} +% +% The macro |\nonaheterov| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \nonaheterov(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] +% \end{verbatim} +% +% The |SKBONDLIST| argument contains pairs of two alphabets in +% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase +% character selected from bond specifiers `a' to `j' and a uppercase +% character `A' or `B'. +% +% The |BONDLIST| argument contains one +% character selected from a to j, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The options `A' and `B' represent aromatic circles in two rings. +% The option `$n+$' ($n=1$ to $9$) represents a plus charge on a hetero atom +% at the $n$-position. +% +% \begin{verbatim} +% BONDLIST: list of bonds +% +% none or r : aromatic six-membered ring +% [] : fully saturated form +% a : 1,2-double bond b : 2,3-double bond +% c : 3,3a-double bond d : 4,3a-double bond +% e : 4,5-double bond f : 5,6-double bond +% g : 6,7-double bond h : 7,7a-double bond +% i : 1,7a-double bond +% j : 3a,4a-double bond +% J : 3a,4a-double bond in the other ring +% A : aromatic circle (six-membered ring) +% B : aromatic circle (five-membered ring) +% {n+} : plus at the n-nitrogen atom (n = 1 to 9) +% \end{verbatim} +% +% The |ATOMLIST| argument contains one or more heteroatom descriptors +% which are separated from each other by a semicolon. Each heteroatom +% descriptor consists of a locant number and a heteroatom, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% ATOMLIST: list of heteroatoms (max 9 atoms) +% +% for n = 1 to 7 +% +% n : Hetero atom, e.g. N, O, etc. at n-position +% e.g. 1==N for N at 1-position +% na : Hetero atom at 3a or 7b (n=3 or 7) +% e.g. 3a==N (or 8==N) for N at 4a-position +% 7a==N (or 9==N) for N at 8a-position +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 8 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% +% for 8 (3a position) and 9 (7a position) +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% \end{verbatim} +% +% The argument |OMIT| represents one or more bonds to be omitted. +% The omitted edges may be regarded as both fused and non-fused +% positions. +% +% \begin{verbatim} +% OMIT: one or more bonds omitted (a to j: see BONDLIST) +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \nonaheterov{1==N}{1==Cl;2==F} +% \nonaheterov[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% +% The definition of |\nonaheterov| uses a picture environment and +% consists of the same unit processes as shown in |\sixheterov|: +% \begin{enumerate} +% \item treatment of atom list, +% \item placing outer skeletons, +% \item placing inner double bonds, +% \item setting hetero atoms, and +% \item placing substituents by using |\setsixringv| several times in +% a restricted fashion. +% \end{enumerate} +% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw}, +% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/12/5}{Add: fused and spiro rings} +% \changes{v2.01}{2001/6/20}{The +% \cs{storeclipinfo} command is added.} +% +% \begin{macro}{\nonaheterov} +% \begin{macro}{\@nona@heterov} +% \begin{macro}{\@nona@@heterov} +% \begin{macro}{\@nonaheterov} +% \begin{macrocode} +\def\nonaheterov{\@ifnextchar({\@nona@heterov(@}{\@nona@heterov(@)}} +\def\@nona@heterov(#1){\@ifnextchar[{\@nona@@heterov(#1)[@}% +{\@nona@@heterov(#1)[@]}} +\def\@nona@@heterov(#1)[#2]#3#4{\@ifnextchar[% +{\@nonaheterov(#1)[#2]{#3}{#4}[@}% +{\@nonaheterov(#1)[#2]{#3}{#4}[@]}} +\def\@nonaheterov(#1)[#2]#3#4[#5]{% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%% +% % treatment of atom list % +% %%%%%%%%%%%%%%%%%%%%%%%%%% +\iniflag\iniatom% +\test@vertix@nonav{#3}% +% %%%%%%%%%%%%%%%%%%%%%%% +% % adjustment for (yl) % +% %%%%%%%%%%%%%%%%%%%%%%% +\@reset@ylsw% +\ylposition{#4}{5}{1}{5}{-1}% %substituents on 1 to 3 +\if@ylsw \ifx\@@ylii\empty\relax +\def\@@ylii{-342}\def\@@yli{0}\fi +\else +{\let\ddd=\eee\let\eee=\fff\let\fff=\gggA +\ylposition{#4}{11}{3}{7}{-1}% %substituents on 5 to 7 +}% +\fi +\if@ylsw \ifx\@@ylii\empty\relax +\def\@@ylii{0}\def\@@yli{0}\fi +\else +{\let\aaa=\hhh +\ylposition{#4}{-3}{0}{2}{0}%%substituent on 4 +}% +\fi +\if@ylsw \ifx\@@ylii\empty\relax +\def\@@ylii{0}\def\@@yli{0}\fi +\else +{% +\clipdetection% +\@clipfusefalse \if@iclip \@clipfusetrue \fi% +\ylatombondposition{#4}{-8}{7}% %9 %for 7a position +}% +\fi +\if@ylsw \ifx\@@ylii\empty\relax +\def\@@ylii{-171}\def\@@yli{-103}\fi +\else +{% +\clipdetection% +\@clipfusefalse \if@jclip \@clipfusetrue \fi% +\ylatombondposition{#4}{-7}{1}% %8 for 3a position +}% +\fi +\if@ylsw \ifx\@@ylii\empty\relax +\def\@@ylii{-171}\def\@@yli{-303}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(1200,880)(-\shiftii,-\shifti){nonaheterov}%2002/4/30 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +\begingroup +\resetbdsw% +\@bond@@omit{#5}% +{\let\fff=\jjj \let\eee=\iii% +\Put@Direct(342,0){\set@skel@bond{#1}{a}{c}}% + % bond between 1 and 2 \@aaa -> \skbondc etc +\Put@Direct(342,0){\set@skel@bond{#1}{b}{b}}% + % bond between 2 and 3 \@bbb -> \skbondb etc +\Put@Direct(342,0){\set@skel@longbond{#1}{c}{skbondhoriz}}% + % bond between 3 and 3a \@ccc -> \skbondhoriz etc +\Put@Direct(342,0){\set@skel@bond{#1}{j}{e}}% + % bond between 3a and 7a \@jjj -> \skbonde etc +\Put@Direct(342,0){\set@skel@bond{#1}{i}{d}}% + % bond between 7a and 1 \@iii -> \skbondd etc +}% +{\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA% + \let\ccc=\iii\let\bbb=\jjj% +\set@skel@bond{#1}{d}{a}% bond between 3a and 4 \@ddd -> \skbonda etc +\set@skel@bond{#1}{h}{c}% bond between 7 and 7a \@hhh -> \skbondc etc +\set@skel@bond{#1}{g}{d}% bond between 6 and 7 \@ggg -> \skbondd etc +\set@skel@bond{#1}{f}{e}% bond between 5 and 6 \@fff -> \skbonde etc +\set@skel@bond{#1}{e}{f}% bond between 4 and 5 \@eee -> \skbondf etc +}% +\endgroup +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\@tfor\member:=#2\do{% +\if\member r\relax% +{\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA% + \let\ccc=\iii\let\bbb=\jjj% + \Put@Direct(0,0){\bondb}% bond between 3a and 7a + \Put@Direct(0,0){\bondf}% bond between 4 and 5 + \Put@Direct(0,0){\bondd}% bond between 6 and 7 +}% +\else\if\member l\relax% +\else\if\member a\relax% + \Put@Direct(342,0){\bondc}% bond between 3 and 4 +\else\if\member b\relax% + \Put@Direct(342,0){\bondb}% bond between 2 and 3 +\else\if\member c\relax% + \Put@Direct(342,0){\bondhoriz}% bond between 3 and 3a +\else\if\member d\relax% +{\let\aaa=\hhh \let\bbb=\jjj% + \Put@Direct(0,0){\bonda}% bond between 4 and 3a +}% +\else\if\member e\relax% +{\let\aaa=\hhh \let\fff=\gggA% + \Put@Direct(0,0){\bondf}% bond between 4 and 5 +}% +\else\if\member f\relax% +{\let\eee=\fff \let\fff=\gggA% + \Put@Direct(0,0){\bonde}% bond between 5 and 6 +}% +\else\if\member g\relax% +{\let\ddd=\eee \let\eee=\fff% + \Put@Direct(0,0){\bondd}% bond between 6 and 7 +}% +\else\if\member h\relax% +{\let\ccc=\iii \let\ddd=\eee% + \Put@Direct(0,0){\bondc}% bond between 7 and 7a +}% +\else\if\member i\relax% +{\let\eee=\iii% + \Put@Direct(342,0){\bondd}% bond between 1 and 7a +}% +\else\if\member j\relax% +{\let\ccc=\iii\let\bbb=\jjj% + \Put@Direct(0,0){\bondb}% bond between 7a and 3a +}% +\else\if\member J\relax% +{\let\eee=\iii\let\fff=\jjj% + \Put@Direct(342,0){\bonde}% bond between 7a and 3a +}% +\else\if\member A\relax%left aromatic circle + \Put@oCircle(0,203){240}% %circle +\else\if\member B\relax%left aromatic circle + \Put@oCircle(342,173){180}% %circle 1993/11/20 S.Fujita +\else + \expandafter\twoCH@@R\member//% + \def\aax{7a}\def\aay{3a}% + \if\@@tmpa 1\relax% + \putratom{304}{68}{\@@tmpb}% % right type + \else\if\@@tmpa 2\relax% + \putratom{402}{120}{\@@tmpb}% % right type + \else\if\@@tmpa 3\relax% + \putratom{402}{253}{\@@tmpb}% % right type + \else\if\@@tmpa 4\relax% + \putratom{-38}{282}{\@@tmpb}% % right type + \else\if\@@tmpa 5\relax% + \putlatom{-60}{120}{\@@tmpb}% % left type + \else\if\@@tmpa 6\relax% + \putlatom{-60}{253}{\@@tmpb}% % left type + \else\if\@@tmpa 7\relax% + \putratom{-38}{68}{\@@tmpb}% % right type + \else\if\@@tmpa 8\relax% + \putratom{60}{253}{\@@tmpb}% % right type + \else\ifx\@@tmpa\aax\relax% + \putratom{60}{253}{\@@tmpb}% % right type + \else\ifx\@@tmpa\aay\relax% + \putratom{60}{120}{\@@tmpb}% % right type + \else\if\@@tmpa 9\relax% + \putratom{60}{120}{\@@tmpb}% % right type + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +% *********************** +% * setting fused rings * +% *********************** + \expandafter\twoCH@R\member//% + \set@fusion@nonav +\fi\fi\fi\fi\fi\fi\fi\fi\fi% +\fi\fi\fi\fi\fi\fi% +}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % setting hetero atoms and spiro rings % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\iniflag\iniatom% +\@tmpclipfalse +%position 7 should be treated before +%position 1 (using the same \if@clip) +\Put@Direct(0,0){\set@hetatom@sixv{#3}{11}{3}{7}{-1}% +% \@gclipfalse \if@fclip \global\@gcliptrue \fi% +% \@fclipfalse \if@eclip \global\@fcliptrue \fi% +% \@eclipfalse \if@clip \global\@ecliptrue \fi% + \@gclipfalse \if@fclip \@gcliptrue \fi% + \@fclipfalse \if@eclip \@fcliptrue \fi% + \@eclipfalse \if@clip \@ecliptrue \fi% + \@clipfalse%2006/9/5added +\storeclipinfo +}%substituents on 5 to 7 +%\developclipinfo%2006/9/5 deleted +\Put@Direct(342,0){\set@hetatom@sixv{#3}{5}{1}{5}{-1}% +% \if@bclip \global\@bcliptrue\fi +% \if@cclip \global\@ccliptrue\fi +% \if@clip \global\@cliptrue\fi +\storeclipinfo +}% %substituents on 1 to 3 +%\developclipinfo%2006/9/5 deleted +\Put@Direct(0,0){\set@hetatom@sixv{#3}{-3}{0}{2}{0}% +% \@aclipfalse \if@aclip \global\@hcliptrue \fi% + \@hclipfalse \if@aclip \@hcliptrue \fi% +\storeclipinfo +}%%substituent on 4 +%\developclipinfo%2006/9/5 deleted +\Put@Direct(0,0){\set@vrtx@nonafusev{#3}% + \@tmpclipfalse +% \if@iclip \global\@tmpcliptrue \fi +% \if@jclip \global\@icliptrue \fi +% \if@tmpclip \global\@jcliptrue \fi + \if@iclip \@tmpcliptrue \fi +% \if@jclip \@icliptrue \fi +% \if@tmpclip \@jcliptrue \fi + \if@jclip \@icliptrue \else \@iclipfalse \fi + \if@tmpclip \@jcliptrue \else \@jclipfalse \fi +\storeclipinfo +%%%====\clipinfo====%%%2006/9/5test +}% fused positions +\developclipinfo +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents and exocyclic bonds % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\Put@Direct(342,0){\setsixringv{#4}{5}{1}{5}{-1}}% %substituents on 1 to 3 +{\@clipfalse \if@eclip \@cliptrue \fi% %substituents on 5 to 7 + \@eclipfalse \if@fclip \@ecliptrue \fi% + \@fclipfalse \if@gclip \@fcliptrue \fi% +\Put@Direct(0,0){\setsixringv{#4}{11}{3}{7}{-1}}% +}% +{\@aclipfalse \if@hclip \@acliptrue \fi% %substituent on 4 +\Put@Direct(0,0){\setsixringv{#4}{-3}{0}{2}{0}}% +}% +{\@clipfusefalse \if@iclip \@clipfusetrue \fi% + \Put@Direct(171,103){\setatombond{#4}{-8}{7}}% %9 for 7a position +}% +{\@clipfusefalse \if@jclip \@clipfusetrue \fi% + \Put@Direct(171,303){\setatombond{#4}{-7}{1}}% %8 for 3a position +}% +\end{ShiftPicEnvB}\iniatom\iniflag}% %end of \nonaheterov macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The macro |\test@vertix@nonav| is used to test the presence of +% a hetero atom or a spiro substituent on a vertex of the +% nonaheterov nucleus. +% \changes{v2.00}{1998/12/05}{New command: \cs{test@vertix@nonav}} +% +% \begin{macro}{\test@vertix@nonav} +% \begin{macrocode} +\def\test@vertix@nonav#1{% +\@forsemicol\member:=#1\do{% +\ifx\member\empty\else% +\expandafter\@m@mb@r\member;\relax% +\expandafter\twoch@r\@membera{}% +\ifcase\@tmpa% + \or% + \if\@tmpb s\relax\def\ddd{}\else\def\ddd{@}\fi + \or%2 + \if\@tmpb s\relax\def\ccc{}\else\def\ccc{@}\fi + \or%3% + \if\@tmpb a\relax% + \def\jjj{@}%3a + \else\if\@tmpb s\relax% + \def\bbb{}%3 + \else\if\@tmpb h\relax% + \def\bbb{@}%3 + \else\ifx\@tmpb\empty\relax% + \def\bbb{@}%3 + \fi\fi\fi\fi% + \or%4 + \if\@tmpb s\relax\def\hhh{}\else\def\hhh{@}\fi + \or%5 + \if\@tmpb s\relax\def\gggA{}\else\def\gggA{@}\fi + \or%6 + \if\@tmpb s\relax\def\fff{}\else\def\fff{@}\fi + \or%7 + \if\@tmpb a% + \xdef\iii{@}%7a + \else\if\@tmpb s\relax% + \xdef\eee{}%7s + \else\if\@tmpb h\relax% + \xdef\eee{@}%7h + \else\ifx\@tmpb\empty\relax% + \xdef\eee{@}%7 + \fi\fi\fi\fi% +\or%8 (= 3a) + \if\@tmpb s\relax\def\jjj{}\else\def\jjj{@}\fi +\or%9 (= 7a) + \if\@tmpb s\relax\def\iii{}\else\def\iii{@}\fi +\fi\fi}}% end of \test@vertix@nonav +% \end{macrocode} +% \end{macro} +% +% The macro |\set@vrtx@nonafusev| is used to set +% a hetero atom or on a vertex of a bridgehead location. +% +% \begin{macro}{\set@vrtx@nonafusev} +% \begin{macrocode} +\def\set@vrtx@nonafusev#1{% +\@forsemicol\member:=#1\do{% +\ifx\member\empty \relax\else% +\expandafter\@m@mb@r\member;\relax% +\expandafter\twoch@r\@membera{}% +\ifcase\@tmpa\or\or + \or%%%%3 + \if\@tmpb a\relax% +% \global\@icliptrue% + \@icliptrue%20001/06/20 by S. Fujita + \putlatom{207}{280}{\@memberb}% % left type + \else\relax + \fi + \or\or\or + \or%7 + \if\@tmpb a\relax% +% \global\@jcliptrue% + \@jcliptrue%%20001/06/20 by S. Fujita + \putlatom{207}{65}{\@memberb}% % left type + \else\relax + \fi +\or%8 (= 3a) +% \global\@icliptrue% + \@icliptrue%%20001/06/20 by S. Fujita + \putlatom{207}{280}{\@memberb}% % left type +\or%9 (= 7a) +% \global\@jcliptrue% + \@jcliptrue%%20001/06/20 by S. Fujita + \putlatom{207}{65}{\@memberb}% % left type +\fi\fi}% +}% end of the macro \set@vrtx@nonafusev +% \end{macrocode} +% \end{macro} +% +% \subsection{Inverse vertical type} +% +% The standard skeleton of a six-to-five fused heterocycle is selected +% to have the following locant numbers. +% +% \begin{verbatim} +% ********************************** +% * nonahetero derivatives * +% * (vertical type, inverse type) * +% ********************************** +% The following numbering is adopted in this macro. +% +% 7(10) 1 +% * 7a * +% 6 * * * * 2 +% | | | +% | |_____| +% 5 * * 3 +% * 3a(8) +% 4 +% ^ +% | +% the original point +% \end{verbatim} +% +% The macro |\nonaheterovi| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \nonaheterovi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] +% \end{verbatim} +% +% The |SKBONDLIST| argument contains pairs of two alphabets in +% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase +% character selected from bond specifiers `a' to `j' and a uppercase +% character `A' or `B'. +% +% The |BONDLIST| argument contains one +% character selected from a to j, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The options `A' and `B' represent aromatic circles in two rings. +% The option `$n+$' ($n=1$ to $9$) represents a plus charge on a hetero atom +% at the $n$-position. +% +% \begin{verbatim} +% BONDLIST: list of bonds +% +% none or r : aromatic six-membered ring +% [] : fully saturated form +% a : 1,2-double bond b : 2,3-double bond +% c : 3,3a-double bond d : 4,3a-double bond +% e : 4,5-double bond f : 5,6-double bond +% g : 6,7-double bond h : 7,7a-double bond +% i : 1,7a-double bond +% j : 3a,4a-double bond +% J : 3a,4a-double bond in the other ring +% A : aromatic circle (six-membered ring) +% B : aromatic circle (five-membered ring) +% {n+} : plus at the n-nitrogen atom (n = 1 to 9) +% \end{verbatim} +% +% The |ATOMLIST| argument contains one or more heteroatom descriptors +% which are separated from each other by a semicolon. Each heteroatom +% descriptor consists of a locant number and a heteroatom, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% ATOMLIST: list of heteroatoms (max 9 atoms) +% +% for n = 1 to 7 +% +% n : Hetero atom, e.g. N, O, etc. at n-position +% e.g. 1==N for N at 1-position +% na : Hetero atom at 3a or 7b (n=3 or 7) +% e.g. 3a==N (or 8==N) for N at 4a-position +% 7a==N (or 9==N) for N at 8a-position +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 8 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% +% for 8 (3a position) and 9 (7a position) +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% \end{verbatim} +% +% The argument |OMIT| represents one or more bonds to be omitted. +% The omitted edges may be regarded as both fused and non-fused +% positions. +% +% \begin{verbatim} +% OMIT: one or more bonds omitted (a to j: see BONDLIST) +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \nonaheterovi{1==N}{1==Cl;2==F} +% \nonaheterovi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% +% The definition of |\nonaheterovi| uses a picture environment and +% consists of the same unit processes as shown in |\sixheterov|: +% \begin{enumerate} +% \item treatment of atom list, +% \item placing outer skeletons, +% \item placing inner double bonds, +% \item setting hetero atoms, and +% \item placing substituents by using |\setsixringv| several times in +% a restricted fashion. +% \end{enumerate} +% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw}, +% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/12/05}{Added: spiro and fused rings} +% \changes{v2.01}{2001/6/20}{The +% \cs{storeclipinfo} command is added.} +% +% \begin{macro}{\nonaheterovi} +% \begin{macro}{\@nona@heterovi} +% \begin{macro}{\@nona@@heterovi} +% \begin{macro}{\@nonaheterovi} +% \begin{macrocode} +\def\nonaheterovi{\@ifnextchar({\@nona@heterovi(@}{\@nona@heterovi(@)}} +\def\@nona@heterovi(#1){\@ifnextchar[{\@nona@@heterovi(#1)[@}% +{\@nona@@heterovi(#1)[@]}} +\def\@nona@@heterovi(#1)[#2]#3#4{\@ifnextchar[% +{\@nonaheterovi(#1)[#2]{#3}{#4}[@}% +{\@nonaheterovi(#1)[#2]{#3}{#4}[@]}} +\def\@nonaheterovi(#1)[#2]#3#4[#5]{% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%% +% % treatment of atom list % +% %%%%%%%%%%%%%%%%%%%%%%%%%% +\iniflag\iniatom%initialize +\test@vertix@nonavi{#3}% +% %%%%%%%%%%%%%%%%%%%%%%% +% % adjustment for (yl) % +% %%%%%%%%%%%%%%%%%%%%%%% +\@reset@ylsw% +\ylposition{#4}{0}{0}{4}{0}% %substituents on 1 to 3 +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-342}\def\@@yli{0}\fi +\else +{\let\ddd=\eee\let\eee=\fff\let\fff=\gggA +\ylposition{#4}{0}{3}{7}{0}%%substituents on 4 to 6 +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +{\let\aaa=\hhh +\ylposition{#4}{-6}{0}{2}{0}%%substituent on 7 +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +{% +\clipdetection% +\@clipfusefalse \if@iclip \@clipfusetrue \fi% +\ylatombondposition{#4}{-7}{7}% %8 for 3a position +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-171}\def\@@yli{-103}\fi +\else +{% +\clipdetection% +\@clipfusefalse \if@jclip \@clipfusetrue \fi% +\ylatombondposition{#4}{-8}{1}% %9 for 7a position +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-171}\def\@@yli{-303}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(1200,880)(-\shiftii,-\shifti){nonaheterovi}%2002/4/30 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +\begingroup +\resetbdsw% +\@bond@@omit{#5}% +{\let\fff=\jjj \let\eee=\iii% +\Put@Direct(342,0){\set@skel@bond{#1}{a}{a}}% + % bond between 1 and 2 \@aaa -> \skbonda etc +\Put@Direct(342,0){\set@skel@bond{#1}{b}{b}}% + % bond between 2 and 3 \@bbb -> \skbondb etc +\Put@Direct(342,0){\set@skel@longbond{#1}{c}{skbondhorizi}}% + % bond between 3 and 3a \@ccc -> \skbondhoriz etc +\Put@Direct(342,0){\set@skel@bond{#1}{j}{e}}% + % bond between 3a and 7a \@jjj -> \skbonde etc +\Put@Direct(342,0){\set@skel@bond{#1}{i}{f}}% + % bond between 7a and 1 \@iii -> \skbondf etc +}% +{\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA% + \let\ccc=\iii\let\bbb=\jjj% +\set@skel@bond{#1}{h}{a}% bond between 7a and 7 \@hhh -> \skbonda etc +\set@skel@bond{#1}{d}{c}% bond between 3a and 4 \@ddd -> \skbondc etc +\set@skel@bond{#1}{e}{d}% bond between 4 and 5 \@eee -> \skbondd etc +\set@skel@bond{#1}{f}{e}% bond between 5 and 6 \@fff -> \skbonde etc +\set@skel@bond{#1}{g}{f}% bond between 6 and 7 \@ggg -> \skbondf etc +}% +\endgroup +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\@tfor\member:=#2\do{% +\if\member r\relax% +{\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA + \let\ccc=\iii\let\bbb=\jjj + \Put@Direct(0,0){\bondb}% bond between 3a and 7a + \Put@Direct(0,0){\bondf}% bond between 6 and 7 + \Put@Direct(0,0){\bondd}% bond between 4 and 5 +}% +\else\if\member l\relax% +\else\if\member a\relax% + \Put@Direct(342,0){\bonda}% bond between 1 and 2 +\else\if\member b\relax% + \Put@Direct(342,0){\bondb}% bond between 2 and 3 +\else\if\member c\relax% + \Put@Direct(342,0){\bondhorizi}% bond between 3 and 3a +\else\if\member d\relax% +{\let\ccc=\iii \let\ddd=\eee% + \Put@Direct(0,0){\bondc}% bond between 4 and 3a +}% +\else\if\member e\relax% +{\let\ddd=\eee\let\eee=\fff% + \Put@Direct(0,0){\bondd}% bond between 4 and 5 +}% +\else\if\member f\relax% +{\let\eee=\fff \let\fff=\gggA% + \Put@Direct(0,0){\bonde}% bond between 5 and 6 +}% +\else\if\member g\relax% +{\let\aaa=\hhh \let\fff=\gggA% + \Put@Direct(0,0){\bondf}% bond between 7 and 6 +}% +\else\if\member h\relax% +{\let\aaa=\hhh \let\bbb=\jjj% + \Put@Direct(0,0){\bonda}% bond between 7 and 7a +}% +\else\if\member i\relax% +{\let\fff=\jjj% + \Put@Direct(342,0){\bondf}% bond between 1 and 7a +}% +\else\if\member j\relax% +{\let\ccc=\iii\let\bbb=\jjj% + \Put@Direct(0,0){\bondb}% bond between 7a and 3a +}% +\else\if\member J\relax% +{\let\eee=\iii\let\fff=\jjj% + \Put@Direct(342,0){\bonde}% bond between 7a and 3a +}% +\else\if\member A\relax%left aromatic circle + \Put@oCircle(0,203){240}% %circle +\else\if\member B\relax%left aromatic circle + \Put@oCircle(342,233){180}% %circle 1993/11/20 S.Fujita +\else + \expandafter\twoCH@@R\member//% + \def\aax{7a}\def\aay{3a}% + \if\@@tmpa 1\relax% + \putratom{304}{282}{\@@tmpb}% % right type + \else\if\@@tmpa 3\relax% + \putratom{402}{120}{\@@tmpb}% % right type + \else\if\@@tmpa 2\relax% + \putratom{402}{253}{\@@tmpb}% % right type + \else\if\@@tmpa 7\relax% + \putratom{-38}{282}{\@@tmpb}% % right type + \else\if\@@tmpa 6\relax% + \putlatom{-60}{120}{\@@tmpb}% % left type + \else\if\@@tmpa 5\relax% + \putlatom{-60}{253}{\@@tmpb}% % left type + \else\if\@@tmpa 4\relax% + \putratom{-38}{68}{\@@tmpb}% % right type + \else\if\@@tmpa 9\relax% + \putratom{60}{253}{\@@tmpb}% % right type + \else\ifx\@@tmpa\aax\relax% + \putratom{60}{253}{\@@tmpb}% % right type + \else\ifx\@@tmpa\aay\relax% + \putratom{60}{120}{\@@tmpb}% % right type + \else\if\@@tmpa 8\relax% + \putratom{60}{120}{\@@tmpb}% % right type + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +% *********************** +% * setting fused rings * +% *********************** + \expandafter\twoCH@R\member//% + \set@fusion@nonavi +\fi\fi\fi\fi\fi\fi\fi\fi\fi% +\fi\fi\fi\fi\fi\fi% +}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % setting hetero atoms and spiro rings % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\iniflag +\Put@Direct(342,0){\set@hetatom@sixv{#3}{0}{0}{4}{0}% +% \if@aclip \global\@acliptrue\fi +% \if@bclip \global\@bcliptrue\fi +% \if@cclip \global\@ccliptrue\fi + \@xclipfalse \if@aclip \@xcliptrue \@aclipfalse\fi%avoid conflict position 7 2013/03/24 +\storeclipinfo +}% %substituents on 1 to 3 +\developclipinfo +\Put@Direct(0,0){\set@hetatom@sixv{#3}{0}{3}{7}{0}% + \@gclipfalse \if@fclip \@gcliptrue \fi% + \@fclipfalse \if@eclip \@fcliptrue \fi% + \@eclipfalse \if@clip \@ecliptrue \fi +\storeclipinfo +}%substituents on 4 to 6 +\developclipinfo +\Put@Direct(0,0){\set@hetatom@sixv{#3}{-6}{0}{2}{0}% + \@hclipfalse \if@aclip \@hcliptrue \fi +\storeclipinfo +}%%substituent on 7 +\developclipinfo +\Put@Direct(0,0){\set@vrtx@nonafusevi{#3}% +\storeclipinfo +}% fused positions +\developclipinfo +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents and exocyclic bonds % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +{% +\@aclipfalse \if@xclip \@acliptrue \fi% %avoid conflict 2013/3/24 +\Put@Direct(342,0){\setsixringv{#4}{0}{0}{4}{0}}% %substituents on 1 to 3 +}% +{\@clipfalse \if@eclip \@cliptrue \fi% %substituents on 4 to 6 + \@eclipfalse \if@fclip \@ecliptrue \fi% + \@fclipfalse \if@gclip \@fcliptrue \fi% +\Put@Direct(0,0){\setsixringv{#4}{0}{3}{7}{0}}% +}% +{\@aclipfalse \if@hclip \@acliptrue \fi% %substituent on 7 +\Put@Direct(0,0){\setsixringv{#4}{-6}{0}{2}{0}}% +}% +{\@clipfusefalse \if@iclip \@clipfusetrue \fi% + \Put@Direct(171,103){\setatombond{#4}{-7}{7}}% %8 for 3a position +}% +{\@clipfusefalse \if@jclip \@clipfusetrue \fi% + \Put@Direct(171,303){\setatombond{#4}{-8}{1}}% %9 for 7a position +}% +\end{ShiftPicEnvB}\iniatom\iniflag}% %end of \nonaheterovi macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The macro |\test@vertix@nonavi| is used to test the presence of +% a hetero atom or a spiro substituent on a vertex of the +% nonaheterovi nucleus. +% \changes{v2.00}{1998/12/05}{New command: \cs{test@vertix@nonavi}} +% +% \begin{macro}{\test@vertix@nonavi} +% \begin{macrocode} +\def\test@vertix@nonavi#1{% +\@forsemicol\member:=#1\do{% +\ifx\member\empty\else% +\expandafter\@m@mb@r\member;\relax% +\expandafter\twoch@r\@membera{}% +\ifcase\@tmpa% + \or% + \if\@tmpb s\relax\def\aaa{}\else\def\aaa{@}\fi + \or%2 + \if\@tmpb s\relax\def\bbb{}\else\def\bbb{@}\fi + \or%3% + \if\@tmpb a\relax% + \def\iii{@}%3a + \else\if\@tmpb s\relax% + \def\ccc{}%3 + \else\if\@tmpb h\relax% + \def\ccc{@}%3 + \else\ifx\@tmpb\empty\relax% + \def\ccc{@}%3 + \fi\fi\fi\fi% + \or%4 + \if\@tmpb s\relax\def\eee{}\else\def\eee{@}\fi + \or%5 + \if\@tmpb s\relax\def\fff{}\else\def\fff{@}\fi + \or%6 + \if\@tmpb s\relax\def\gggA{}\else\def\gggA{@}\fi + \or%7 + \if\@tmpb a% + \xdef\jjj{@}%7a + \else\if\@tmpb s\relax% + \xdef\hhh{}%7s + \else\if\@tmpb h\relax% + \xdef\hhh{@}%7h + \else\ifx\@tmpb\empty\relax% + \xdef\hhh{@}%7 + \fi\fi\fi\fi% +\or%8 (= 3a) + \if\@tmpb s\relax\def\iii{}\else\def\iii{@}\fi +\or%9 (= 7a) + \if\@tmpb s\relax\def\jjj{}\else\def\jjj{@}\fi +\fi\fi}} +% \end{macrocode} +% \end{macro} +% +% The macro |\set@vrtx@nonafusevi| is used to set +% a hetero atom on a vertex of a bridgehead location. +% \changes{v2.00}{1998/12/05}{New command: \cs{set@vrtx@nonafusevi}} +% +% \begin{macro}{\set@vrtx@nonafusevi} +% \begin{macrocode} +\def\set@vrtx@nonafusevi#1{% +\@forsemicol\member:=#1\do{% +\ifx\member\empty\else% +\expandafter\@m@mb@r\member;\relax% +\expandafter\twoch@r\@membera{}% +\ifcase\@tmpa\or\or + \or%%%%3 + \if\@tmpb a\relax% +% \global\@icliptrue% + \@icliptrue%%20001/06/20 by S. Fujita + \putlatom{207}{65}{\@memberb}% % left type + \else\relax + \fi + \or\or\or + \or%7 + \if\@tmpb a\relax% +% \global\@jcliptrue% + \@jcliptrue%%20001/06/20 by S. Fujita + \putlatom{207}{280}{\@memberb}% % left type + \else\relax + \fi +\or%8 (= 3a) +% \global\@icliptrue% + \@icliptrue%%20001/06/20 by S. Fujita + \putlatom{207}{65}{\@memberb}% % left type +\or%9 (= 7a) +% \global\@jcliptrue% + \@jcliptrue%%20001/06/20 by S. Fujita + \putlatom{207}{280}{\@memberb}% % left type +\fi\fi}% +}% end of the macro \set@vrtx@nonafusevi +% \end{macrocode} +% \end{macro} +% +% \subsection{Short-cut commands for fused heterocycles} +% +% The macros |\nonaheterov| and |\nonaheterovi| can be used in the +% form of a fixed |ATOMLIST|. Hence, the resulting commands for +% drawing a fused heterocyle with one or more nitrogen atoms +% have an argument |SUBSLIST| as well as an optional argument |BONDLIST|. +% +% \begin{verbatim} +% ********************************************************** +% * heterocycles having fused six- and five-membered rings * +% * (vertical type) * +% ********************************************************** +% +% N-heterocycles: +% +% \indolev[BONDLIST]{SUBSLIST} +% \indolevi[BONDLIST]{SUBSLIST} +% +% \isoindolev[BONDLIST]{SUBSLIST} +% \isoindolevi[BONDLIST]{SUBSLIST} +% +% \indolizinev[BONDLIST]{SUBSLIST} +% \indolizinevi[BONDLIST]{SUBSLIST} +% (different from the IUPAC numbering) +% +% \purinev[BONDLIST]{SUBSLIST} +% \purinevi[BONDLIST]{SUBSLIST} +% (different from the IUPAC numbering) +% +% O-heterocycles: +% +% \benzofuranev[BONDLIST]{SUBSLIST} +% \benzofuranevi[BONDLIST]{SUBSLIST} +% +% \isobenzofuranevi[BONDLIST]{SUBSLIST} +% +% \benzoxazolev[BONDLIST]{SUBSLIST} +% \benzoxazolevi[BONDLIST]{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one +% character selected from a to j, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The optiona `A' and `B' typeset aromatic circles. +% The option +% `$n+$' ($n=1$ to $9$) represents a plus charge on a hetero atom +% at the $n$-position. +% +% \begin{verbatim} +% BONDLIST: list of bonds +% +% none or r : aromatic six-membered ring +% [] : fully saturated form +% a : 1,2-double bond b : 2,3-double bond +% c : 3,3a-double bond d : 4,3a-double bond +% e : 4,5-double bond f : 5,6-double bond +% g : 6,7-double bond h : 7,7a-double bond +% i : 1,7a-double bond +% J : 3a,4a-double bond in the other ring +% A : aromatic circle +% {n+} : plus at the n-nitrogen atom (n = 1 to 9) +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 8 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% +% for 8 (3a position) and 9 (7a position) +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% +% e.g. +% +% \indolev{1==N}{1==Cl;2==F} +% \indolev[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% +% \begin{macro}{\purinev} +% \begin{macro}{\purinevi} +% \begin{macrocode} +\def\purinev{\@ifnextchar[{\@purinev[@}{\@purinev[ra]}} +\def\@purinev[#1]#2{% +\iforigpt \typeout{command `purinev' % + is based on `nonaheterov'.}\fi% +\nonaheterov[#1]{1==N;3==N;5==N;7==N}{#2}} +\def\purinevi{\@ifnextchar[{\@purinevi[@}{\@purinevi[ra]}} +\def\@purinevi[#1]#2{% +\iforigpt \typeout{command `purinevi' % + is based on `nonaheterovi'.}\fi% +\nonaheterovi[#1]{1==N;3==N;5==N;7==N}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\indolev} +% \begin{macro}{\indolevi} +% \begin{macrocode} +\def\indolev{\@ifnextchar[{\@indolev[@}{\@indolev[rb]}} +\def\@indolev[#1]#2{% +\iforigpt \typeout{command `indolev' % + is based on `nonaheterov'.}\fi% +\nonaheterov[#1]{1==N}{#2}} +\def\indolevi{\@ifnextchar[{\@indolevi[@}{\@indolevi[rb]}} +\def\@indolevi[#1]#2{% +\iforigpt \typeout{command `indolevi' % + is based on `nonaheterovi'.}\fi% +\nonaheterovi[#1]{1==N}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\indolizinev} +% \begin{macro}{\indolizinevi} +% \begin{macrocode} +\def\indolizinev{% + \@ifnextchar[{\@indolizinev[@}{\@indolizinev[aceg]}} +\def\@indolizinev[#1]#2{% +\iforigpt \typeout{command `indolizinev' % + is based on `nonaheterov'.}\fi% +\nonaheterov[#1]{7a==N}{#2}} +\def\indolizinevi{% + \@ifnextchar[{\@indolizinevi[@}{\@indolizinevi[aceg]}} +\def\@indolizinevi[#1]#2{% +\iforigpt \typeout{command `indolizinevi' % + is based on `nonaheterovi'.}\fi% +\nonaheterovi[#1]{7a==N}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\isoindolev} +% \begin{macro}{\isoindolevi} +% \begin{macrocode} +\def\isoindolev{\@ifnextchar[{\@isoindolev[@}{\@isoindolev[cegi]}} +\def\@isoindolev[#1]#2{% +\iforigpt \typeout{command `isoindolev' % + is based on `nonaheterov'.}\fi% +\nonaheterov[#1]{2==N}{#2}} +\def\isoindolevi{\@ifnextchar[{\@isoindolevi[@}{\@isoindolevi[cegi]}} +\def\@isoindolevi[#1]#2{% +\iforigpt \typeout{command `isoindolevi' % + is based on `nonaheterovi'.}\fi% +\nonaheterovi[#1]{2==N}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\benzofuranev} +% \begin{macro}{\benzofuranevi} +% \begin{macrocode} +\def\benzofuranev{% + \@ifnextchar[{\@benzofuranev[@}{\@benzofuranev[rb]}} +\def\@benzofuranev[#1]#2{% +\iforigpt \typeout{command `benzofuranev' % + is based on `nonaheterov'.}\fi% +\nonaheterov[#1]{1==O}{#2}} +\def\benzofuranevi{% + \@ifnextchar[{\@benzofuranevi[@}{\@benzofuranevi[rb]}} +\def\@benzofuranevi[#1]#2{% +\iforigpt \typeout{command `benzofuranevi' % + is based on `nonaheterovi'.}\fi% +\nonaheterovi[#1]{1==O}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\isobenzofuranev} +% \begin{macro}{\isobenzofuranevi} +% \begin{macrocode} +\def\isobenzofuranev{\@ifnextchar[{\@isobenzofuranev[@}% + {\@isobenzofuranev[cegi]}} +\def\@isobenzofuranev[#1]#2{% +\iforigpt \typeout{command `isobenzofuranev' % + is based on `nonaheterov'.}\fi% +\nonaheterov[#1]{2==O}{#2}} +\def\isobenzofuranevi{\@ifnextchar[{\@isobenzofuranevi[@}% + {\@isobenzofuranevi[cegi]}} +\def\@isobenzofuranevi[#1]#2{% +\iforigpt \typeout{command `isobenzofuranevi' % + is based on `nonaheterovi'.}\fi% +\nonaheterovi[#1]{2==O}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\benzoxazolev} +% \begin{macro}{\benzoxazolevi} +% \begin{macrocode} +\def\benzoxazolev{% + \@ifnextchar[{\@benzoxazolev[@}{\@benzoxazolev[rb]}} +\def\@benzoxazolev[#1]#2{% +\iforigpt \typeout{command `benzoxazolev' % + is based on `nonaheterov'.}\fi% +\nonaheterov[#1]{1==O;3==N}{#2}} +\def\benzoxazolevi{% + \@ifnextchar[{\@benzoxazolevi[@}{\@benzoxazolevi[rb]}} +\def\@benzoxazolevi[#1]#2{% +\iforigpt \typeout{command `benzoxazolevi' % + is based on `nonaheterovi'.}\fi% +\nonaheterovi[#1]{1==O;3==N}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \section{Building blocks} +% \subsection{Six-membered ring unit} +% +% The old function (v1.01) of |\sixunitv| as a fusing ring unit +% is succeeded by |\sixfusev| and |\sixfusevi|. +% The command |\sixunitv| has been changed into a subsidiary +% command of |\sixheterov| (v2.00). +% +% The macro |\sixunitv| is a six-membered fragment that can be +% fused to another ring structure to produce a new ring system. +% The following +% numbering is adopted in this macro. +% +% \begin{verbatim} +% ********************** +% * six-membered unit * +% * (vertical type) * +% ********************** +% +% 1 +% * +% 6 * * 2 +% | | +% | | +% 5 * * 3 +% * +% 4 <===== the original point +% \end{verbatim} +% +% The macro |\sixunitv| has three arguments |ATOMLIST|, |SUBSLIST| +% and |OMIT| +% as well as an optional argument |BONDLIST|. +% +% \begin{verbatim} +% \sixunitv[BONDLIST]{ATOMLIST}{SUBSLIST}{OMIT} +% \end{verbatim} +% +% The |BONDLIST| argument contains one +% character selected from a to f, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The option `$n+$' ($n=1$ to $6$) represents a plus charge on a hetero atom +% at the $n$-position. +% +% \begin{verbatim} +% BONDLIST = +% +% none : fully saturated +% a : 1,2-double bond +% b : 2,3-double bond +% c : 4,3-double bond +% d : 4,5-double bond +% e : 5,6-double bond +% f : 6,1-double bond +% {n+} : plus at the n-nitrogen atom (n = 1 to 6) +% \end{verbatim} +% +% The |ATOMLIST| argument contains one or more heteroatom descriptors +% which are separated from each other by a semicolon. Each heteroatom +% descriptor consists of a locant number and a heteroatom, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% ATOMLIST: list of heteroatoms (max 6 atoms) +% +% for n = 1 to 6 +% +% n : Hetero atom, e.g. N, O, etc. at n-position, +% e.g. 1==N for N at 1-position +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 6 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% \end{verbatim} +% +% The argument |OMIT| represents one bond to be omitted. +% The omitted edge is regarded as a fused position. +% +% \begin{verbatim} +% OMIT: one bond omitted (a, b, c, d, e, or f) +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \sixhunitv{1==N}{1==Cl;2==F}{e} +% \end{verbatim} +% +% The definition of |\sixunitv| uses a picture environment and +% consists of the same unit processes as shown in |\sixheterov|: +% \begin{enumerate} +% \item treatment of atom list, +% \item placing outer skeletons, +% \item placing inner double bonds, +% \item setting hetero atoms, and +% \item placing substituents by using |\setsixringv|. +% \end{enumerate} +% +% \changes{v1.01a}{1998/06/08}{\cs{sixunitv} bug fix: +% \cs{bbb} to \cs{fff} and \cs{ccc} to \cs{eee}} +% +% \begin{macro}{\sixunitv} +% \begin{macro}{\@sixunitv} +% \begin{macrocode} +\def\sixunitv{\@ifnextchar[{\@sixunitv[@}{\@sixunitv[@]}} +\def\@sixunitv[#1]#2#3#4{\sixheterov[#1]{#2}{#3}[#4]} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \changes{v3.00}{2002/04/30}{\cs{sixunitv}: Old definition deleted.} +% +% \subsection{Five-membered ring unit} +% \subsubsection{Vertical type} +% +% The old function (v1.01) of |\fiveunitv| as a fusing ring unit +% is succeeded by |\fivefusev|. +% The command |\fiveunitv| has been changed into a subsidiary +% command of |\fiveheterov| (v2.00). +% +% The macro |\fiveunitv| is a five-membered fragment that can be +% fused to another +% ring structure to produce a new ring system. The following +% numbering is adopted in this macro. +% +% \begin{verbatim} +% ********************** +% * five-membered unit * +% * (vertical type) * +% ********************** +% +% 4 _______ 3 +% | | +% | | +% 5 * * 2 +% * +% 1 <===== the original point +% \end{verbatim} +% +% The macro |\fiveunitv| has three arguments |ATOMLIST|, |SUBSLIST| +% and |OMIT| +% as well as an optional argument |BONDLIST|. +% +% \begin{verbatim} +% \fiveunitv[BONDLIST]{ATOMLIST}{SUBSLIST}{OMIT} +% \end{verbatim} +% +% The |BONDLIST| argument contains one +% character selected from a to e, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The option `$n+$' ($n=1$ to $5$) represents a plus charge on a hetero atom +% at the $n$-position. +% +% \begin{verbatim} +% BONDLIST: list of inner double bonds +% +% a : 1,2-double bond +% b : 2,3-double bond +% c : 4,3-double bond +% d : 4,5-double bond +% e : 5,1-double bond +% {n+} : plus at the n-nitrogen atom (n = 1 to 5) +% \end{verbatim} +% +% The |ATOMLIST| argument contains one or more heteroatom descriptors +% which are separated from each other by a semicolon. Each heteroatom +% descriptor consists of a locant number and a heteroatom, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% ATOMLIST: list of heteroatoms (max 5 atoms) +% +% for n = 1 to 5 +% +% n : Hetero atom, e.g. N, O, etc. at n-position +% e.g. 1==N for N at 1-position +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 5 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% \end{verbatim} +% +% The argument |OMIT| represents one bond to be omitted. +% The omitted edge is regarded as a fused position. +% +% \begin{verbatim} +% OMIT: one bond omitted (a, b, c, d, e, or f) +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \fiveunitv{1==N}{1==H;2==F}{a} +% \end{verbatim} +% +% The definition of |\fiveunitv| uses a picture environment and +% consists of the same unit processes as shown in |\fiveheterov|: +% \begin{enumerate} +% \item treatment of atom list, +% \item placing outer skeletons, +% \item placing inner double bonds, +% \item setting hetero atoms, and +% \item placing substituents by using |\setsixringv| partially. +% \end{enumerate} +% +% \begin{macro}{\fiveunitv} +% \begin{macro}{\@fiveunitv} +% \begin{macrocode} +\def\fiveunitv{\@ifnextchar[{\@fiveunitv[@}{\@fiveunitv[r]}} +\def\@fiveunitv[#1]#2#3#4{\fiveheterov[#1]{#2}{#3}[#4]} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \changes{v3.00}{2002/04/30}{\cs{fivunitv}: Old definition deleted.} +% +% \subsubsection{Inverse vertical type} +% +% The old function (v1.01) of |\fiveunitvi| as a fusing ring unit +% is succeeded by |\fivefusevi|. +% The command |\fiveunitvi| has been changed into a subsidiary +% command of |\fiveheterovi| (v2.00). +% +% The macro |\fiveunitvi| typesets a five-membered fragment that can be +% fused to another +% ring structure to produce a new ring system. The following +% numbering is adopted in this macro. +% +% \begin{verbatim} +% ************************************ +% * five-membered unit * +% * (vertical type, inverse type) * +% ************************************ +% +% 1 +% * +% 6 * * 2 +% | | +% |_____| +% 4 3 +% * +% (0,0) <===== the original point +% \end{verbatim} +% +% The macro |\fiveunitvi| has three arguments |ATOMLIST|, |SUBSLIST| +% and |OMIT| +% as well as an optional argument |BONDLIST|. +% +% \begin{verbatim} +% \fiveunitvi[BONDLIST]{ATOMLIST}{SUBSLIST}{OMIT} +% \end{verbatim} +% +% The |BONDLIST| argument contains one +% character selected from a to e, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The option `$n+$' ($n=1$ to $5$) represents a plus charge on a hetero atom +% at the $n$-position. +% +% \begin{verbatim} +% BONDLIST: list of inner double bonds +% +% a : 1,2-double bond +% b : 2,3-double bond +% c : 4,3-double bond +% d : 4,5-double bond +% e : 5,1-double bond +% {n+} : plus at the n-nitrogen atom (n = 1 to 5) +% \end{verbatim} +% +% The |ATOMLIST| argument contains one or more heteroatom descriptors +% which are separated from each other by a semicolon. Each heteroatom +% descriptor consists of a locant number and a heteroatom, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% ATOMLIST: list of heteroatoms (max 5 atoms) +% +% for n = 1 to 5 +% +% n : Hetero atom, e.g. N, O, etc. at n-position +% e.g. 1==N for N at 1-position +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 5 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% \end{verbatim} +% +% The argument |OMIT| represents one bond to be omitted. +% The omitted edge is regarded as a fused position. +% +% \begin{verbatim} +% OMIT: one bond omitted (a, b, c, d, e, or f) +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \fiveunitvi{1==N}{1==H;2==F}{a} +% \end{verbatim} +% +% The definition of |\fiveunitvi| uses a picture environment and +% consists of the same unit processes as shown in |\sixheterov|: +% \begin{enumerate} +% \item treatment of atom list, +% \item placing outer skeletons, +% \item placing inner double bonds, +% \item setting hetero atoms, and +% \item placing substituents by using |\setsixringv| partially. +% \end{enumerate} +% +% \begin{macro}{\fiveunitvi} +% \begin{macro}{\@fiveunitvi} +% \begin{macrocode} +\def\fiveunitvi{\@ifnextchar[{\@fiveunitvi[@}{\@fiveunitvi[r]}} +\def\@fiveunitvi[#1]#2#3#4{\fiveheterovi[#1]{#2}{#3}[#4]} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \changes{v3.00}{2002/04/30}{\cs{fivunitvi}: Old definition deleted.} +% +% \section{Four-membered heterocycles} +% \subsection{Horizontal bonds} +% +% \begin{macro}{\bondshoriz} +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%% +% % horizontal bond % +% %%%%%%%%%%%%%%%%%%% +% horizontal inner bond for four-membered rings +\def\bondshoriz{% + \begin{sfpicture}(200,300)(0,0) + \ifx\fff\empty% + \ifx\bbb\empty% + \Put@Line(-138,270)(1,0){134}%double bond 4-3 + \else% + \Put@Line(-138,270)(1,0){115}%double bond 4-3 + \fi% + \else% + \ifx\bbb\empty% + \Put@Line(-120,270)(1,0){115}%double bond 4-3 + \else% + \Put@Line(-120,270)(1,0){96}%double bond 4-3 + \fi% + \fi\end{sfpicture}}% +% horizontal inner bond for four-membered rings (inverse type) +\def\bondshorizi{% + \begin{sfpicture}(200,300)(0,0) + \ifx\eee\empty% + \ifx\ccc\empty% + \Put@Line(-138,136)(1,0){134}%double bond 4-3 + \else%% + \Put@Line(-138,136)(1,0){115}%double bond 4-3 + \fi% + \else% + \ifx\ccc\empty% + \Put@Line(-120,136)(1,0){115}%double bond 4-3 + \else% + \Put@Line(-120,136)(1,0){96}%double bond 4-3 + \fi% + \fi\end{sfpicture}}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\skbondshoriz} +% \begin{macrocode} +%horizontal bond for four-membered rings +\def\skbondshoriz{% + \begin{sfpicture}(200,300)(0,0) + \ifx\fff\empty% + \ifx\bbb\empty% + \Put@Line(-171,303)(1,0){200}%bond 4-3 + \else% + \Put@Line(-171,303)(1,0){158}%bond 4-3 + \fi% + \else% + \ifx\bbb\empty% + \Put@Line(29,303)(-1,0){158}%bond 4-3 + \else% + \Put@Line(-129,303)(1,0){116}%bond 4-3 + \fi% + \fi\end{sfpicture}}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\skbondshorizi} +% \begin{macrocode} +%horizontal bond for four-membered rings (inverse type) +\def\skbondshorizi{% + \begin{sfpicture}(200,300)(0,0) + \ifx\eee\empty% + \ifx\ccc\empty% + \Put@Line(-171,103)(1,0){200}%bond 4-3 + \else% + \Put@Line(-171,103)(1,0){158}%bond 4-3 + \fi% + \else% + \ifx\ccc\empty% + \Put@Line(29,103)(-1,0){158}%bond 4-3 + \else% + \Put@Line(-129,103)(1,0){116}%bond 4-3 + \fi% + \fi\end{sfpicture}}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dotskbondshoriz} +% \begin{macrocode} +%horizontal bond for four-membered rings +\def\dotskbondshoriz{% + \begin{sfpicture}(200,300)(0,0) + \ifx\fff\empty% + \ifx\bbb\empty% + \dotorline(-171,303)(1,0){200}/(-171,303)(29,303)% + \else% + \dotorline(-171,303)(1,0){158}/(-171,303)(-29,303)% + \fi% + \else% + \ifx\bbb\empty% + \dotorline(29,303)(-1,0){158}/(29,303)(-129,303)% + \else% + \dotorline(-129,303)(1,0){116}/(-129,303)(-13,303)% + \fi% + \fi\end{sfpicture}}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dotskbondshorizi} +% \begin{macrocode} +%horizontal bond for four-membered rings (inverse type) +\def\dotskbondshorizi{% + \begin{sfpicture}(200,300)(0,0) + \ifx\eee\empty% + \ifx\ccc\empty% + \dotorline(-171,103)(1,0){200}/(-171,103)(29,103)% + \else% + \dotorline(-171,103)(1,0){158}/(-171,103)(-29,103)% + \fi% + \else% + \ifx\ccc\empty% + \dotorline(29,103)(-1,0){158}/(29,103)(-129,103)% + \else% + \dotorline(-129,103)(1,0){116}/(-129,103)(-13,103)% + \fi% + \fi\end{sfpicture}}% +% \end{macrocode} +% \end{macro} +% +% \subsection{Drawing four-membered heterocycles} +% +% The macro |\fourhetero| typesets a four-membered ring. The following +% numbering is adopted in this macro. +% +% \begin{verbatim} +% ************************** +% * fourhetero derivatives * +% * (vertical type) * +% ************************** +% The following numbering is adopted in this macro. +% +% c +% 4 _____ 3 +% d | | b +% | | +% 1 ----- 2<===== the original point +% a +% \end{verbatim} +% +% The macro |\fourhetero| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \fourhetero(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] +% \end{verbatim} +% +% The |SKBONDLIST| argument contains pairs of two alphabets in +% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase +% character selected from bond specifiers `a' to `d' and a uppercase +% character `A' or `B'. +% +% The |BONDLIST| argument contains one +% character selected from a to e, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The option `$n+$' ($n=1$ to $4$) represents a plus charge on a hetero atom +% at the $n$-position. +% +% \begin{verbatim} +% BONDLIST: list of inner double bonds +% +% a : 1,2-double bond +% b : 2,3-double bond +% c : 4,3-double bond +% e : 4,1-double bond +% +% {n+} : plus at the n-nitrogen atom (n = 1 to 4) +% \end{verbatim} +% +% The |ATOMLIST| argument contains one or more heteroatom descriptors +% which are separated from each other by a semicolon. Each heteroatom +% descriptor consists of a locant number and a heteroatom, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% ATOMLIST: list of heteroatoms (max 4 atoms) +% +% for n = 1 to 4 +% +% n : Hetero atom, e.g. N, O, etc. at n-position +% e.g. 1==N for N at 1-position +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 4 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% \end{verbatim} +% +% The argument |OMIT| represents one or more bonds to be omitted. +% The omitted edges may be regarded as both fused and non-fused +% positions. +% +% \begin{verbatim} +% OMIT: one or more bonds omitted (a to d: see BONDLIST) +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \fourhetero{1==N}{1==H;2==F} +% \fourhetero[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \fourhetero[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl} +% \end{verbatim} +% +% The definition of |\fourhetero| uses a picture environment and +% consists of the same unit processes as shown in |\sixheterov|: +% \begin{enumerate} +% \item treatment of atom list, +% \item placing outer skeletons, +% \item placing inner double bonds, +% \item setting hetero atoms, and +% \item placing substituents by using |\setsixringv| partially. +% \end{enumerate} +% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw}, +% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/12/5}{Add: spiro and fused rings} +% +% \begin{macro}{\fourhetero} +% \begin{macro}{\@four@hetero} +% \begin{macro}{\@four@@hetero} +% \begin{macro}{\@fourhetero} +% \begin{macrocode} +\def\fourhetero{\@ifnextchar({\@four@hetero(@}{\@four@hetero(@)}} +\def\@four@hetero(#1){\@ifnextchar[{\@four@@hetero(#1)[@}% +{\@four@@hetero(#1)[@]}} +\def\@four@@hetero(#1)[#2]#3#4{\@ifnextchar[% +{\@fourhetero(#1)[#2]{#3}{#4}[@}% +{\@fourhetero(#1)[#2]{#3}{#4}[@]}} +\def\@fourhetero(#1)[#2]#3#4[#5]{% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%% +% % treatment of atom list % +% %%%%%%%%%%%%%%%%%%%%%%%%%% +\iniatom\iniflag%initialize +\test@vertix@sixv{#3}{e}{c}{b}{f}{@}{@}% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % adustment of subs positions % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\@reset@ylsw% +\ylposition{#4}{5}{1}{4}{-1}% for 2 to 3 +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{142}\def\@@yli{0}\fi +\else +\ylposition{#4}{4}{4}{6}{0}% for 1 +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +\ylposition{#4}{2}{5}{7}{0}% for 4 +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(800,880)(-571,-137){fourhetero}% +(571,137)(171,-103)%2002/4/30 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +{\resetbdsw% +\@bond@@omit{#5}% +\Put@Direct(0,0){\set@skel@longbond{#1}{a}{skbondshorizi}}% + % bond between 1 and 2 \@aaa -> \skbondshorizi etc +\Put@Direct(-142,0){\set@skel@bond{#1}{b}{b}}% + % bond between 2 and 3 \@bbb -> \skbondb etc +\Put@Direct(0,0){\set@skel@longbond{#1}{c}{skbondshoriz}}% + % bond between 3 and 4 \@ccc -> \skbondshoriz etc +\Put@Direct(0,0){\set@skel@bond{#1}{d}{e}}% + % bond between 4 and 1 \@ddd -> \skbonde etc +}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\@tfor\member:=#2\do{% +\if\member r\relax% +\else\if\member a\relax \Put@Direct(0,0){\bondshorizi}% +\else\if\member b\relax \Put@Direct(-142,0){\bondb}% +\else\if\member c\relax \Put@Direct(0,0){\bondshoriz}% +\else\if\member d\relax \Put@Direct(0,0){\bonde}% +\else +% %%%%%%%%%%%%%%%%%%%%%%%%% +% % inner bond attachment % +% %%%%%%%%%%%%%%%%%%%%%%%%% + \expandafter\twoCH@@R\member//% + \set@fusionadd@fourv +\fi\fi\fi\fi\fi}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%% +% % setting heteroatoms % +% %%%%%%%%%%%%%%%%%%%%%%% +\Put@Direct(-142,0){\set@hetatom@sixv{#3}{5}{1}{4}{-1}% +\storeclipinfo%added 2001/06/20 by S. Fujita +}% for 2 to 3 +\developclipinfo%added 2001/06/20 by S. Fujita +\Put@Direct(0,0){\set@hetatom@sixv{#3}{4}{4}{6}{0}% +\storeclipinfo%added 2001/06/20 by S. Fujita +}% for 1 +\developclipinfo%added 2001/06/20 by S. Fujita +\Put@Direct(0,0){\set@hetatom@sixv{#3}{2}{5}{7}{0}% +\storeclipinfo%added 2001/06/20 by S. Fujita +}% for 4 +\developclipinfo%added 2001/06/20 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents % +% %%%%%%%%%%%%%%%%%%%%%%%% +\Put@Direct(-142,0){\setsixringv{#4}{5}{1}{4}{-1}}% for 2 to 3 +\Put@Direct(0,0){\setsixringv{#4}{4}{4}{6}{0}}% for 1 +\Put@Direct(0,0){\setsixringv{#4}{2}{5}{7}{0}}% for 4 +\end{ShiftPicEnvB}\iniatom\iniflag}% %end of \fourhetero macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The macro |\set@fusionadd@fourv| is an inner command contained +% in the definition of |\fourhetero| etc., where +% the macro is used for setting an additive +% or a fused ring at each bond (designated by |\@@tmpa|). The +% fused ring is typeset by the inner command |\set@fusion@fourv|. +% +% \begin{macro}{\set@fusionadd@fourv} +% \changes{v2.00}{1998/12/5}{New command: \cs{set@fusionadd@fourv}} +% \begin{macrocode} +\def\set@fusionadd@fourv{% + \if\@@tmpa 1\relax% + \putlatom{-200}{120}{\scriptsize \@@tmpb}% % right type + \else\if\@@tmpa 2\relax% + \putratom{60}{120}{\scriptsize \@@tmpb}% % right type + \else\if\@@tmpa 3\relax% + \putratom{60}{233}{\scriptsize \@@tmpb}% % right type + \else\if\@@tmpa 4\relax% + \putlatom{-200}{233}{\scriptsize \@@tmpb}% % right type + \else +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% + \set@fusion@fourv + \fi\fi\fi\fi% +}% +% \end{macrocode} +% \end{macro} +% +% The inner command |\set@fusion@fourv| is used for typesetting +% a fused ring at each bond represented by |\@@tmpa|. Warnings +% concerning mismatched ring-fusions are based on the command +% |\FuseWarning|. +% +% \begin{macro}{\set@fusion@fourv} +% \changes{v2.00}{1998/12/5}{New command: \cs{set@fusion@fourv}} +% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring} +% \begin{macrocode} +\def\set@fusion@fourv{% +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% +\if\@@tmpa d\relax% + \putlratom{-171}{303}{\@@tmpb}% % bond fused + \FuseWarning{0}{200}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{d}% + \else\if\@@tmpa D\relax% + \putlratom{-171}{103}{\@@tmpb}% % bond fused + \FuseWarning{0}{-200}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{D}% + \else\if\@@tmpa a\relax% + \putlratom{-173}{103}{\@@tmpb}% % bond fused + \FuseWarning{-200}{0}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{f}% + \else\if\@@tmpa A\relax% + \putlratom{27}{103}{\@@tmpb}% % bond fused + \FuseWarning{200}{0}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}% + \else\if\@@tmpa b\relax% + \putlratom{27}{103}{\@@tmpb}% % bond fused + \FuseWarning{0}{-200}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}% + \else\if\@@tmpa B\relax% + \putlratom{27}{303}{\@@tmpb}% % bond fused + \FuseWarning{0}{200}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}% + \else\if\@@tmpa c\relax% + \putlratom{27}{303}{\@@tmpb}% % bond fused + \FuseWarning{200}{0}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c}% + \else\if\@@tmpa C\relax% + \putlratom{-171}{303}{\@@tmpb}% % bond fused + \FuseWarning{-200}{0}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C}% +\fi\fi\fi\fi\fi\fi\fi\fi% +\global\let\FuseWarning=\FuseW@rning%added 2010/10/01 +}% end of the macro \set@fusion@fourv +% \end{macrocode} +% \end{macro} +% +% +% \changes{v5.01}{2013/3/19}{added \cs{oxetane}, \cs{thietane}, and \cs{azetidine} } +% \begin{macro}{\oxetane} +% \begin{macro}{\azetidine} +% \begin{macro}{\thietane} +% \begin{macrocode} +\def\oxetane{\@ifnextchar[{\@oxetane[@}{\@oxetane[]}} +\def\@oxetane[#1]#2{% +\iforigpt \typeout{command `oxetane' % + is based on `fourhetero'.}\fi% +\fourhetero[#1]{1==O}{#2}} +\def\azetidine{\@ifnextchar[{\@azetidine[@}{\@azetidine[]}} +\def\@azetidine[#1]#2{% +\iforigpt \typeout{command `azetidine' % + is based on `fourhetero'.}\fi% +\fourhetero[#1]{1==N}{#2}} +\def\thietane{\@ifnextchar[{\@thietane[@}{\@thietane[]}} +\def\@thietane[#1]#2{% +\iforigpt \typeout{command `thietane' % + is based on `fourhetero'.}\fi% +\fourhetero[#1]{1==S}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% +% \section{Three-membered heterocycles} +% \subsection{Vertical type} +% \subsubsection{Sloped bonds} +% +% \begin{macro}{\bondtria} +% \begin{macrocode} +% ********************** +% * bonds for triangle * +% ********************** +% fff 3--------2bbb +% ` / +% ddd `1/ <===== the original point +% bond between 1 and 2 + \def\bondtria{% + \ifx\ddd\empty% + \ifx\bbb\empty% + \Put@Line(-6,42)(3,5){72}% %double bond 1-2 + \else% + \Put@Line(-6,42)(3,5){60}% %double bond 1-2 + \fi% + \else% + \ifx\bbb\empty% + \Put@Line(6,62)(3,5){60}% %double bond 1-2 + \else% + \Put@Line(10,32)(3,5){60}% %double bond 1-2 + \fi% + \fi% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bondtrib} +% \begin{macrocode} +% bond between 1 and 3 + \def\bondtrib{% + \ifx\ddd\empty% + \ifx\fff\empty% + \Put@Line(6,42)(-3,5){72}% %double bond 1-3 + \else% + \Put@Line(6,42)(-3,5){60}% %double bond 1-3 + \fi% + \else% + \ifx\fff\empty% + \Put@Line(-6,62)(-3,5){60}% %double bond 1-2 + \else% + \Put@Line(6,42)(-3,5){60}% %double bond 1-2 + \fi% + \fi% + }% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\skbondtria} +% \begin{macrocode} +%bond between 1 and 2 +\def\skbondtria{% + \begin{sfpicture}(200,200)(0,0) + \ifx\ddd\empty% + \ifx\bbb\empty% + \Put@Line(0,0)(3,5){103}% %bond 1-2 + \else% + \Put@Line(0,0)(3,5){80}% %bond 1-2 + \fi% + \else% + \ifx\bbb\empty% + \Put@Line(103,171)(-3,-5){80}% %bond 1-2 + \else% + \Put@Line(35,21)(3,5){60}% %bond 1-2 + \fi% + \fi\end{sfpicture}}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\skbondtrib} +% \begin{macrocode} +%bond between 1 and 3 +\def\skbondtrib{% + \begin{sfpicture}(200,200)(0,0) + \ifx\ddd\empty% + \ifx\fff\empty% + \Put@Line(0,0)(-3,5){103}% %bond 1-3 + \else% + \Put@Line(0,0)(-3,5){80}% %bond 1-3 + \fi% + \else% +% \ifx\eee\empty%bug fix 1993/11/19 + \ifx\fff\empty% + \Put@Line(-103,171)(3,-5){80}% %bond 1-3 + \else% + \Put@Line(-35,21)(-3,5){60}% %bond 1-3 + \fi% + \fi\end{sfpicture}}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dotskbondtria} +% \begin{macrocode} +%bond between 1 and 2 +\def\dotskbondtria{% + \begin{sfpicture}(200,200)(0,0) + \ifx\ddd\empty% + \ifx\bbb\empty% + \dotorline(0,0)(3,5){103}/(0,0)(103,171)% + \else% + \dotorline(0,0)(3,5){80}/(0,0)(80,133)% + \fi% + \else% + \ifx\bbb\empty% + \dotorline(103,171)(-3,-5){80}/(103,171)(23,38)% + \else% + \dotorline(35,21)(3,5){60}/(35,21)(95,121)% + \fi% + \fi\end{sfpicture}}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dotskbondtrib} +% \begin{macrocode} +%bond between 1 and 3 +\def\dotskbondtrib{% + \begin{sfpicture}(200,200)(0,0) + \ifx\ddd\empty% + \ifx\fff\empty% + \dotorline(0,0)(-3,5){103}/(0,0)(-103,171)% + \else% + \dotorline(0,0)(-3,5){80}/(0,0)(-80,133)% + \fi% + \else% + \ifx\fff\empty% + \dotorline(-103,171)(3,-5){80}/(-103,171)(-23,38)% + \else% + \dotorline(-35,21)(-3,5){60}/(-35,21)(-95,121)% + \fi% + \fi\end{sfpicture}}% +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Drawing three-membered heterocycles} +% +% The macro |\threehetero| typesets a three-membered ring. The following +% numbering is adopted in this macro. +% +% \begin{verbatim} +% **************************** +% * thereehetero derivatives * +% * (vertical type) * +% **************************** +% +% b +% 3--------2 +% c ` / a +% `1/ <===== the original point +% \end{verbatim} +% +% The macro |\threehetero| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \threehetero(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] +% \threeheterov(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] +% \end{verbatim} +% +% The |SKBONDLIST| argument contains pairs of two alphabets in +% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase +% character selected from bond specifiers `a' to `c' and a uppercase +% character `A' or `B'. +% +% The |BONDLIST| argument contains one +% character selected from a to c, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The option `$n+$' ($n=1$ to $3$) represents a plus charge on a hetero atom +% at the $n$-position. +% The option `$n+$' ($n=4$ to $6$) represents a plus charge outside the ring. +% The option `$0+$' typesets a plus charge at the center of the ring. +% +% \begin{verbatim} +% BONDLIST = +% +% none : saturated +% a : 1,2-double bond +% b : 2,3-double bond +% c : 3,1-double bond +% A : aromatic circle +% {n+} : plus at the n-hetero atom (n = 1 to 3) +% : n=4 -- outer plus at 1 position +% : n=5 -- outer plus at 2 position +% : n=6 -- outer plus at 3 position +% {0+} : plus at the center of a cyclopropane ring +% \end{verbatim} +% +% The |ATOMLIST| argument contains one or more heteroatom descriptors +% which are separated from each other by a semicolon. Each heteroatom +% descriptor consists of a locant number and a heteroatom, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% ATOMLIST: list of heteroatoms (max 3 atoms) +% +% for n = 1 to 3 +% +% n : Hetero atom, e.g. N, O, etc. at n-position, +% e.g. 1==N for N at 1-position +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 3 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% \end{verbatim} +% +% The argument |OMIT| represents one or more bonds to be omitted. +% The omitted edges may be regarded as both fused and non-fused +% positions. +% +% \begin{verbatim} +% OMIT: one or more bonds omitted (a to c: see BONDLIST) +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \threehetero{1==N}{1==Cl;2==F} +% \threehetero[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \threehetero{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl} +% \end{verbatim} +% +% The definition of |\threehetero| uses a picture environment and +% consists of the same unit processes as shown in |\sixheterov|: +% \begin{enumerate} +% \item treatment of atom list, +% \item placing outer skeletons, +% \item placing inner double bonds, +% \item setting hetero atoms, and +% \item placing substituents by using |\setsixringv| partially. +% \end{enumerate} +% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw}, +% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/12/5}{Add: spiro and fused rings} +% \changes{v2.01}{2001/6/20}{The +% \cs{storeclipinfo} command is added.} +% +% \begin{macro}{\threehetero} +% \begin{macro}{\@three@hetero} +% \begin{macro}{\@three@@hetero} +% \begin{macro}{\@threehetero} +% \begin{macrocode} +\def\threehetero{\@ifnextchar({\@three@hetero(@}{\@three@hetero(@)}} +\def\@three@hetero(#1){\@ifnextchar[{\@three@@hetero(#1)[@}% +{\@three@@hetero(#1)[@]}} +\def\@three@@hetero(#1)[#2]#3#4{\@ifnextchar[% +{\@threehetero(#1)[#2]{#3}{#4}[@}% +{\@threehetero(#1)[#2]{#3}{#4}[@]}} +\def\@threehetero(#1)[#2]#3#4[#5]{% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%% +% % treatment of atom list % +% %%%%%%%%%%%%%%%%%%%%%%%%%% +\iniatom\iniflag%initialize +\test@vertix@sixv{#3}{d}{b}{f}{@}{@}{@}% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % adustment of subs positions % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\@reset@ylsw% +\ylposition{#4}{3}{3}{5}{0}%subst 1 +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{68}\def\@@yli{0}\fi +\else +\ylposition{#4}{0}{1}{3}{0}%subst 2 +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{142}\def\@@yli{132}\fi +\else +\ylposition{#4}{3}{5}{7}{0}%subst 3 +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{132}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(800,580)(-468,-240){threeheterov}% +(468,240)(68,0)%2002/4/30 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +{\resetbdsw% +\@bond@@omit{#5}% +\Put@Direct(-68,0){\set@skel@longbond{#1}{a}{skbondtria}}% + % bond between 1 and 2 \@aaa -> \skbondtria etc +\Put@Direct(0,-132){\set@skel@longbond{#1}{b}{skbondshoriz}}% + % bond between 2 and 3 \@bbb -> \skbondb etc +\Put@Direct(-68,0){\set@skel@longbond{#1}{c}{skbondtrib}}% + % bond between 3 and 1 \@ccc -> \skbondtria etc +}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\@tfor\member:=#2\do{% +\if\member r\relax% +\else\if\member a\relax\Put@Direct(-68,0){\bondtria}% +\else\if\member b\relax\Put@Direct(0,-126){\bondshoriz}% +\else\if\member c\relax\Put@Direct(-68,0){\bondtrib}% +\else\if\member A\relax% aromatic circle + \Put@oCircle(-70,108){100}% %circle +\else +% %%%%%%%%%%%%%%%%%%%%%%%%% +% % inner bond attachment % +% %%%%%%%%%%%%%%%%%%%%%%%%% + \expandafter\twoCH@@R\member//% + \set@fusionadd@threev +\fi\fi\fi\fi\fi% +}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting hetero atoms % +% %%%%%%%%%%%%%%%%%%%%%%%% +\Put@Direct(-68,0){\set@hetatom@sixv{#3}{3}{3}{5}{0}% +%\if@clip\global\@cliptrue\fi +\storeclipinfo +}%subst 1 +\developclipinfo +\Put@Direct(-142,-132){\set@hetatom@sixv{#3}{0}{1}{3}{0}% +%\if@bclip\global\@bcliptrue\fi +\storeclipinfo +}%subst 2 +\developclipinfo +\Put@Direct(0,-132){\set@hetatom@sixv{#3}{3}{5}{7}{0}% +%\if@fclip\global\@fcliptrue\fi +\storeclipinfo +}%subst 3 +\developclipinfo +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents % +% %%%%%%%%%%%%%%%%%%%%%%%% +\Put@Direct(-68,0){\setsixringv{#4}{3}{3}{5}{0}}%subst 1 +\Put@Direct(-142,-132){\setsixringv{#4}{0}{1}{3}{0}}%subst 2 +\Put@Direct(0,-132){\setsixringv{#4}{3}{5}{7}{0}}%subst 3 +\end{ShiftPicEnvB}\iniatom\iniflag}% %end of \threehetero macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\threeheterov} +% \begin{macrocode} +\let\threeheterov=\threehetero +% \end{macrocode} +% \end{macro} +% +% The macro |\set@fusionadd@threev| is an inner command contained +% in the definition of |\threehetero| etc., where +% the macro is used for setting an additive +% or a fused ring at each bond (designated by |\@@tmpa|). The +% fused ring is typeset by the inner command |\set@fusion@threev|. +% +% \begin{macro}{\set@fusionadd@threev} +% \changes{v2.00}{1998/12/5}{New command: \cs{set@fusionadd@threev}} +% \begin{macrocode} +\def\set@fusionadd@threev{% + \if\@@tmpa 0\relax% + \putratom{-94}{92}{\scriptsize\@@tmpb}% % right type + \else\if\@@tmpa 1\relax% + \putratom{-94}{60}{\scriptsize\@@tmpb}% % right type + \else\if\@@tmpa 2\relax% + \putratom{-52}{120}{\scriptsize\@@tmpb}% % right type + \else\if\@@tmpa 3\relax% + \putratom{-126}{126}{\scriptsize\@@tmpb}% % right type + \else\if\@@tmpa 4\relax% + \putratom{-30}{-20}{\scriptsize\@@tmpb}% % right type + \else\if\@@tmpa 5\relax% + \putratom{52}{110}{\scriptsize\@@tmpb}% % right type + \else\if\@@tmpa 6\relax% + \putratom{-250}{110}{\scriptsize\@@tmpb}% % right type + \else +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% + \set@fusion@threev + \fi\fi\fi\fi\fi\fi\fi% +}% +% \end{macrocode} +% \end{macro} +% +% The inner command |\set@fusion@threev| is used for typesetting +% a fused ring at each bond represented by |\@@tmpa|. Warnings +% concerning mismatched ring-fusions are based on the command +% |\FuseWarning|. +% +% \begin{macro}{\set@fusion@threev} +% \changes{v2.00}{1998/12/5}{New command: \cs{set@fusion@threev}} +% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring} +% \begin{macrocode} +\def\set@fusion@threev{% +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% +\if\@@tmpa b\relax% + \putlratom{29}{171}{\@@tmpb}% % bond fused + \FuseWarning{200}{0}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}% + \else\if\@@tmpa B\relax% + \putlratom{-171}{171}{\@@tmpb}% % bond fused + \FuseWarning{-200}{0}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}% + \else\if\@@tmpa a\relax% + \putlratom{-68}{0}{\@@tmpb}% % bond fused + \FuseWarning{-103}{-171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}% + \else\if\@@tmpa A\relax% + \putlratom{29}{171}{\@@tmpb}% % bond fused + \FuseWarning{103}{171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}% + \else\if\@@tmpa c\relax% + \putlratom{-171}{171}{\@@tmpb}% % bond fused + \FuseWarning{-103}{171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c}% + \else\if\@@tmpa C\relax% + \putlratom{-68}{0}{\@@tmpb}% % bond fused + \FuseWarning{103}{-171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C}% +\fi\fi\fi\fi\fi\fi% +\global\let\FuseWarning=\FuseW@rning%added 2010/10/01 +}% end of the macro \set@fusion@threev +% \end{macrocode} +% \end{macro} +% +% \changes{v5.01}{2013/3/19}{added \cs{oxiranev}, \cs{aziridinev}, and \cs{thiiranev} } +% \begin{macro}{\oxiranev} +% \begin{macro}{\aziridinev} +% \begin{macro}{\thiiranev} +% \begin{macrocode} +\def\oxiranev{\@ifnextchar[{\@oxiranev[@}{\@oxiranev[]}} +\def\@oxiranev[#1]#2{% +\iforigpt \typeout{command `oxiranev' % + is based on `threeheterov'.}\fi% +\threeheterov[#1]{1==O}{#2}} +\def\aziridinev{\@ifnextchar[{\@aziridinev[@}{\@aziridinev[]}} +\def\@aziridinev[#1]#2{% +\iforigpt \typeout{command `aziridinev' % + is based on `threeheterov'.}\fi% +\threeheterov[#1]{1==N}{#2}} +\def\thiiranev{\@ifnextchar[{\@thiiranev[@}{\@thiiranev[]}} +\def\@thiiranev[#1]#2{% +\iforigpt \typeout{command `thiiranev' % + is based on `threeheterov'.}\fi% +\threeheterov[#1]{1==S}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Inverse vertical type} +% \subsubsection{Sloped bonds} +% +% \changes{v1.02}{1998/10/20}{Newly added commands: +% \cs{Bondtria}} +% \begin{macro}{\Bondtria} +% \begin{macrocode} +% ********************** +% * bonds for triangle * +% ********************** +% +% aaa /1` <===== the original point +% / ` +% eee 3--------2ccc +% bond between 1 and 2 + \def\Bondtria{% + \ifx\aaa\empty% + \ifx\ccc\empty% + \Put@Line(-6,-42)(3,-5){72}% %double bond 1-2 + \else% + \Put@Line(-6,-42)(3,-5){60}% %double bond 1-2 + \fi% + \else% + \ifx\ccc\empty% + \Put@Line(6,-62)(3,-5){60}% %double bond 1-2 + \else% + \Put@Line(10,-32)(3,-5){60}% %double bond 1-2 + \fi% + \fi% +}% +% \end{macrocode} +% \end{macro} +% +% \changes{v1.02}{1998/10/20}{Newly added commands: \cs{Bondtrib}} +% \begin{macro}{\Bondtrib} +% \begin{macrocode} +% bond between 1 and 3 + \def\Bondtrib{% + \ifx\aaa\empty% + \ifx\eee\empty% + \Put@Line(6,-42)(-3,-5){72}% %double bond 1-3 + \else% + \Put@Line(6,-42)(-3,-5){60}% %double bond 1-3 + \fi% + \else% + \ifx\fff\empty% + \Put@Line(-6,-62)(-3,-5){60}% %double bond 1-2 + \else% + \Put@Line(6,-42)(-3,-5){60}% %double bond 1-2 + \fi% + \fi% + }% +% \end{macrocode} +% \end{macro} +% +% \changes{v1.02}{1998/10/20}{Newly added commands: +% \cs{skBondtria}} +% \begin{macro}{\skBondtria} +% \begin{macrocode} +%bond between 1 and 2 +\def\skBondtria{% +% \begin{sfpicture}(200,200)(0,0) +% \begin{sfpicture}(0,0)(0,0) + \ifx\aaa\empty% + \ifx\ccc\empty% + \Put@Line(0,0)(3,-5){103}% %bond 1-2 + \else% + \Put@Line(0,0)(3,-5){80}% %bond 1-2 + \fi% + \else% + \ifx\ccc\empty% + \Put@Line(103,-171)(-3,5){80}% %bond 1-2 + \else% + \Put@Line(35,-21)(3,-5){60}% %bond 1-2 + \fi% + \fi +%\end{sfpicture} +}% +% \end{macrocode} +% \end{macro} +% +% \changes{v1.02}{1998/10/20}{Newly added commands: +% \cs{skBondtrib}} +% \begin{macro}{\skBondtrib} +% \begin{macrocode} +%bond between 1 and 3 +\def\skBondtrib{% +% \begin{sfpicture}(0,0)(0,0) +% \begin{sfpicture}(200,200)(0,0) + \ifx\aaa\empty% + \ifx\eee\empty% + \Put@Line(0,0)(-3,-5){103}% %bond 1-3 + \else% + \Put@Line(0,0)(-3,-5){80}% %bond 1-3 + \fi% + \else% + \ifx\eee\empty% + \Put@Line(-103,-171)(3,5){80}% %bond 1-3 + \else% + \Put@Line(-35,-21)(-3,-5){60}% %bond 1-3 + \fi% + \fi +%\end{sfpicture} +}% +% \end{macrocode} +% \end{macro} +% +% \changes{v2.00}{1998/12/25}{Newly added commands: +% \cs{dotskBondtria}} +% \begin{macro}{\dotskBondtria} +% \begin{macrocode} +%bond between 1 and 2 +\def\dotskBondtria{% + \ifx\aaa\empty% + \ifx\ccc\empty% + \dotorline(0,0)(3,-5){103}/(0,0)(103,-171)% + \else% + \dotorline(0,0)(3,-5){80}/(0,0)(80,-133)% + \fi% + \else% + \ifx\ccc\empty% + \dotorline(103,-171)(-3,5){80}/(103,-171)(23,-38)% + \else% + \dotorline(35,-21)(3,-5){60}/(35,-21)(95,-121)% + \fi% + \fi +}% +% \end{macrocode} +% \end{macro} +% +% \changes{v2.00}{1998/12/25}{Newly added commands: +% \cs{dotskBondtrib}} +% \begin{macro}{\dotskBondtrib} +% \begin{macrocode} +%bond between 1 and 3 +\def\dotskBondtrib{% + \ifx\aaa\empty% + \ifx\eee\empty% + \dotorline(0,0)(-3,-5){103}/(0,0)(-103,-171)% + \else% + \dotorline(0,0)(-3,-5){80}/(0,0)(-80,-133)% + \fi% + \else% + \ifx\eee\empty% + \dotorline(-103,-171)(3,5){80}/(-103,-171)(-23,-38)% + \else% + \dotorline(-35,-21)(-3,-5){60}/(-35,-21)(-95,-121)% + \fi% + \fi +}% +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Drawing three-membered heterocycles (inverse)} +% +% The macro |\threeheteroi| typesets a three-membered ring of +% inverse vertical type. The following numbering is adopted +% in this macro. +% \changes{v1.02}{1998/10/20}{Newly added commands: +% \cs{threeheteroi}} +% +% \begin{verbatim} +% **************************** +% * thereehetero derivatives * +% * (inverse vertical type) * +% **************************** +% +% /1` <===== the original point +% c / ` a +% 3--------2 +% b +% \end{verbatim} +% +% The macro |\threeheteroi| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \threeheteroi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] +% \threeheterovi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] +% \end{verbatim} +% +% The |SKBONDLIST| argument contains pairs of two alphabets in +% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase +% character selected from bond specifiers `a' to `c' and a uppercase +% character `A' or `B'. +% +% The |BONDLIST| argument contains one +% character selected from a to c, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The option `$n+$' ($n=1$ to $3$) represents a plus charge on a hetero atom +% at the $n$-position. +% The option `$n+$' ($n=4$ to $6$) represents a plus charge outside the ring. +% The option `$0+$' typesets a plus charge at the center of the ring. +% +% \begin{verbatim} +% BONDLIST = +% +% none : saturated +% a : 1,2-double bond +% b : 2,3-double bond +% c : 3,1-double bond +% A : aromatic circle +% {n+} : plus at the n-hetero atom (n = 1 to 3) +% : n=4 -- outer plus at 1 position +% : n=5 -- outer plus at 2 position +% : n=6 -- outer plus at 3 position +% {0+} : plus at the center of a cyclopropane ring +% \end{verbatim} +% +% The |ATOMLIST| argument contains one or more heteroatom descriptors +% which are separated from each other by a semicolon. Each heteroatom +% descriptor consists of a locant number and a heteroatom, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% ATOMLIST: list of heteroatoms (max 3 atoms) +% +% for n = 1 to 3 +% +% n : Hetero atom, e.g. N, O, etc. at n-position, +% e.g. 1==N for N at 1-position +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 3 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% \end{verbatim} +% +% The argument |OMIT| represents one or more bonds to be omitted. +% The omitted edges may be regarded as both fused and non-fused +% positions. +% +% \begin{verbatim} +% OMIT: one or more bonds omitted (a to c: see BONDLIST) +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \threeheteroi{1==N}{1==Cl;2==F} +% \threeheteroi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \threeheteroi{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl} +% \end{verbatim} +% +% The definition of |\threehetero| uses a picture environment and +% consists of the same unit processes as shown in |\sixheterov|: +% \begin{enumerate} +% \item treatment of atom list, +% \item placing outer skeletons, +% \item placing inner double bonds, +% \item setting hetero atoms, and +% \item placing substituents by using |\setsixringv| partially. +% \end{enumerate} +% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw}, +% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/12/5}{Add: spiro and fused rings} +% \changes{v2.01}{2001/6/20}{The +% \cs{storeclipinfo} command is added.} +% +% \begin{macro}{\threeheteroi} +% \begin{macro}{\@three@heteroi} +% \begin{macro}{\@three@@heteroi} +% \begin{macro}{\@threeheteroi} +% \begin{macrocode} +\def\threeheteroi{\@ifnextchar({\@three@heteroi(@}{\@three@heteroi(@)}} +\def\@three@heteroi(#1){\@ifnextchar[{\@three@@heteroi(#1)[@}% +{\@three@@heteroi(#1)[@]}} +\def\@three@@heteroi(#1)[#2]#3#4{\@ifnextchar[% +{\@threeheteroi(#1)[#2]{#3}{#4}[@}% +{\@threeheteroi(#1)[#2]{#3}{#4}[@]}} +\def\@threeheteroi(#1)[#2]#3#4[#5]{% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%% +% % treatment of atom list % +% %%%%%%%%%%%%%%%%%%%%%%%%%% +\iniatom\iniflag%initialize +\test@vertix@sixv{#3}{a}{c}{e}{@}{@}{@}% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % adustment of subs positions % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\@reset@ylsw% +\ylposition{#4}{0}{0}{2}{0}%subst 1 +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{68}\def\@@yli{406}\fi +\else +\ylposition{#4}{1}{2}{4}{0}%subst 2 +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{142}\def\@@yli{275}\fi +\else +\ylposition{#4}{2}{4}{6}{0}%subst 3 +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{275}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(800,580)(-468,-340){threeheterovi}% +(468,340)(68,0)%2002/4/30 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +{\resetbdsw% +\@bond@@omit{#5}% +\Put@Direct(-68,0){\set@skel@longbond{#1}{a}{skBondtria}}% + % bond between 1 and 2 \@aaa -> \skBondtria etc +\Put@Direct(0,-275){\set@skel@longbond{#1}{b}{skbondshorizi}}% + % bond between 2 and 3 \@bbb -> \skbondb etc +\Put@Direct(-68,0){\set@skel@longbond{#1}{c}{skBondtrib}}% + % bond between 3 and 1 \@ccc -> \skBondtrib etc +}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\@tfor\member:=#2\do{% +\if\member r\relax% +\else\if\member a\relax\Put@Direct(-68,0){\Bondtria}% +\else\if\member b\relax\Put@Direct(0,-274){\bondshorizi}% +\else\if\member c\relax\Put@Direct(-68,0){\Bondtrib}% +\else\if\member A\relax% aromatic circle + \Put@oCircle(-70,-108){100}% %circle +\else +% %%%%%%%%%%%%%%%%%%%%%%%%% +% % inner bond attachment % +% %%%%%%%%%%%%%%%%%%%%%%%%% + \expandafter\twoCH@@R\member//% + \set@fusionadd@threevi +\fi\fi\fi\fi\fi% +}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting hetero atoms % +% %%%%%%%%%%%%%%%%%%%%%%%% +\Put@Direct(-68,-406){\set@hetatom@sixv{#3}{0}{0}{2}{0}% +%\if@aclip\global\@acliptrue\fi +\storeclipinfo +}%subst 1 +\developclipinfo +\Put@Direct(0,-275){\set@hetatom@sixv{#3}{2}{4}{6}{0}% +%\if@eclip\global\@ecliptrue\fi +\storeclipinfo +}%subst 3 +\developclipinfo +\Put@Direct(-142,-275){\set@hetatom@sixv{#3}{1}{2}{4}{0}% +%\if@cclip\global\@ccliptrue\fi +\storeclipinfo +}%subst 2 +\developclipinfo +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents % +% %%%%%%%%%%%%%%%%%%%%%%%% +\Put@Direct(-68,-406){\setsixringv{#4}{0}{0}{2}{0}}%subst 1 +\Put@Direct(0,-275){\setsixringv{#4}{2}{4}{6}{0}}%subst 3 +\Put@Direct(-142,-275){\setsixringv{#4}{1}{2}{4}{0}}%subst 2 +\end{ShiftPicEnvB}\iniatom\iniflag}% %end of \threeheteroi macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\threeheterovi} +% \begin{macrocode} +\let\threeheterovi=\threeheteroi +% \end{macrocode} +% \end{macro} +% +% The macro |\set@fusionadd@threevi| is an inner command contained +% in the definition of |\threeheteroi| etc., where +% the macro is used for setting an additive +% or a fused ring at each bond (designated by |\@@tmpa|). The +% fused ring is typeset by the inner command |\set@fusion@threevi|. +% +% \begin{macro}{\set@fusionadd@threevi} +% \changes{v2.00}{1998/12/5}{New command: \cs{set@fusionadd@threevi}} +% \begin{macrocode} +\def\set@fusionadd@threevi{% + \if\@@tmpa 0\relax% + \putratom{-94}{-120}{\scriptsize\@@tmpb}% % right type + \else\if\@@tmpa 1\relax% + \putratom{-94}{-80}{\scriptsize\@@tmpb}% % right type + \else\if\@@tmpa 2\relax% + \putratom{-52}{-150}{\scriptsize\@@tmpb}% % right type + \else\if\@@tmpa 3\relax% + \putratom{-126}{-150}{\scriptsize\@@tmpb}% % right type + \else\if\@@tmpa 4\relax% + \putratom{-30}{0}{\scriptsize\@@tmpb}% % right type + \else\if\@@tmpa 5\relax% + \putratom{32}{-130}{\scriptsize\@@tmpb}% % right type + \else\if\@@tmpa 6\relax% + \putratom{-230}{-130}{\scriptsize\@@tmpb}% % right type + \else +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% + \set@fusion@threevi + \fi\fi\fi\fi\fi\fi\fi% +}% +% \end{macrocode} +% \end{macro} +% +% The inner command |\set@fusion@threevi| is used for typesetting +% a fused ring at each bond represented by |\@@tmpa|. Warnings +% concerning mismatched ring-fusions are based on the command +% |\FuseWarning|. +% +% \begin{macro}{\set@fusion@threevi} +% \changes{v2.00}{1998/12/5}{New command: \cs{set@fusion@threevi}} +% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring} +% \begin{macrocode} +\def\set@fusion@threevi{% +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% +\if\@@tmpa b\relax% + \putlratom{29}{-171}{\@@tmpb}% % bond fused + \FuseWarning{200}{0}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}% + \else\if\@@tmpa B\relax% + \putlratom{-171}{-171}{\@@tmpb}% % bond fused + \FuseWarning{-200}{0}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}% + \else\if\@@tmpa a\relax% + \putlratom{-68}{0}{\@@tmpb}% % bond fused + \FuseWarning{-103}{171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}% + \else\if\@@tmpa A\relax% + \putlratom{29}{-171}{\@@tmpb}% % bond fused + \FuseWarning{103}{-171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}% + \else\if\@@tmpa c\relax% + \putlratom{-171}{-171}{\@@tmpb}% % bond fused + \FuseWarning{103}{171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c}% + \else\if\@@tmpa C\relax% + \putlratom{-68}{0}{\@@tmpb}% % bond fused + \FuseWarning{-103}{-171}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C}% +\fi\fi\fi\fi\fi\fi% +\global\let\FuseWarning=\FuseW@rning%added 2010/10/01 +}% end of the macro \set@fusion@threevi +%</hetarom> +% \end{macrocode} +% \end{macro} +% +% \changes{v5.01}{2013/3/19}{added \cs{oxiranev}, \cs{aziridinev}, and \cs{thiiranev} } +% \begin{macro}{\oxiranevi} +% \begin{macro}{\aziridinevi} +% \begin{macro}{\thiiranevi} +% \begin{macrocode} +\def\oxiranevi{\@ifnextchar[{\@oxiranevi[@}{\@oxiranevi[]}} +\def\@oxiranevi[#1]#2{% +\iforigpt \typeout{command `oxiranevi' % + is based on `threeheterovi'.}\fi% +\threeheterovi[#1]{1==O}{#2}} +\def\aziridinevi{\@ifnextchar[{\@aziridinevi[@}{\@aziridinevi[]}} +\def\@aziridinevi[#1]#2{% +\iforigpt \typeout{command `aziridinevi' % + is based on `threeheterovi'.}\fi% +\threeheterovi[#1]{1==N}{#2}} +\def\thiiranevi{\@ifnextchar[{\@thiiranevi[@}{\@thiiranevi[]}} +\def\@thiiranevi[#1]#2{% +\iforigpt \typeout{command `thiiranevi' % + is based on `threeheterovi'.}\fi% +\threeheterovi[#1]{1==S}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \Finale +% +\endinput diff --git a/Master/texmf-dist/source/latex/xymtex/base/hetarom.ins b/Master/texmf-dist/source/latex/xymtex/base/hetarom.ins new file mode 100644 index 00000000000..dc95b4b86fd --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/hetarom.ins @@ -0,0 +1,58 @@ +\def\batchfile{hetarom.ins} +\input docstrip.tex +\preamble + +This is a generated file. + +Copyright 1996, 1998, 2000, 2001, 2002, 2004, 2006, 2010, 2013 by Shinsaku Fujita +all rights reserved. +This style file is created for drawing chemical structural formulas +This style file is to be contained in the ``xymtex'' directory which +is an input directory for TeX. + +This file is part of the XyMTeX system. +======================================= + +Old Versions: +Version 1.01 Released on August 16, 1996 +Version 1.02 Released on October 31, 1998 (private version) +Version 2.00 Released on December 25, 1998 +Version 2.00a Released on November 11, 2000 +Version 2.01 Released on June 20, 2001 (private version) +Version 3.00 Released on April 30, 2002 +Version 4.00 Released on May 30, 2002 (private version) +Version 4.00 Released on August 30, 2004 +Version 4.02 Released on December 20, 2004 +Version 4.03b Released on September 5, 2006 (decaheterov, nonaheterov bug fix) +Version 5.00 Released on October 01, 2010 + +The Present Version: +Version 5.01 Released on March 19, 2013 + +This work may be distributed and/or modified under the +conditions of the LaTeX Project Public License, either version 1.3 +of this license or (at your option) any later version. +The latest version of this license is in + http://www.latex-project.org/lppl.txt +and version 1.3 or later is part of all distributions of LaTeX +version 2005/12/01 or later. + +This work has the LPPL maintenance status `maintained'. +The Current Maintainer of this work is Shinsaku Fujita. + +This work consists of the files hetarom.dtx and hetarom.ins +and the derived file hetarom.sty. + +======================================= + +\endpreamble + +\keepsilent + +\generateFile{hetarom.drv}{t}{% + \from{hetarom.dtx}{driver}} + +\generateFile{hetarom.sty}{t}{% + \from{hetarom.dtx}{hetarom}} + +\endinput diff --git a/Master/texmf-dist/source/latex/xymtex/base/hetaromh.dtx b/Master/texmf-dist/source/latex/xymtex/base/hetaromh.dtx new file mode 100644 index 00000000000..88374187ae8 --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/hetaromh.dtx @@ -0,0 +1,6287 @@ +% \iffalse meta-comment +%% File: hetaromh.dtx +% +% Copyright 1993,1996,1998,2000,2001,2002,2004,2006,2010,2013 by Shinsaku Fujita +% +% This file is part of XyMTeX system. +% ------------------------------------- +% +% This file is a successor to: +% +% hetaromh.sty +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%\typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 1.00} +%\typeout{ -- Released December 1, 1993 by Shinsaku Fujita} +% Copyright (C) 1993 by Shinsaku Fujita, all rights reserved. +% +% This file is a part of the macro package ``XyMTeX'' which has been +% designed for typesetting chemical structural formulas. +% +% This file is to be contained in the ``xymtex'' directory which is +% an input directory for TeX. It is a LaTeX optional style file and +% should be used only within LaTeX, because several macros of the file +% are based on LaTeX commands. +% +% For the review of XyMTeX, see +% (1) Shinsaku Fujita, ``Typesetting structural formulas with the text +% formatter TeX/LaTeX'', Computers and Chemistry, in press. +% The following book deals with an application of TeX/LaTeX to +% preparation of manuscripts of chemical fields: +% (2) Shinsaku Fujita, ``LaTeX for Chemists and Biochemists'' +% Tokyo Kagaku Dozin, Tokyo (1993) [in Japanese]. +% +% 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 hetaromh.dtx and hetaromh.ins +% and the derived file hetaromh.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{hetaromh} +% \def\versi@ndate{December 01, 1993} +% \def\versi@nno{ver1.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hetaromh} +% \def\versi@ndate{August 16, 1996} +% \def\versi@nno{ver1.01} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hetaromh} +% \def\versi@ndate{October 31, 1998} +% \def\versi@nno{ver1.02} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hetaromh} +% \def\versi@ndate{December 25, 1998} +% \def\versi@nno{ver2.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hetaromh} +% \def\versi@ndate{November 11, 2000} +% \def\versi@nno{ver2.00a} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hetaromh} +% \def\versi@ndate{June 20, 2001} +% \def\versi@nno{ver2.01} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hetaromh} +% \def\versi@ndate{April 30, 2002} +% \def\versi@nno{ver3.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hetaromh} +% \def\versi@ndate{May 30, 2002} +% \def\versi@nno{ver4.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hetaromh} +% \def\versi@ndate{August 30, 2004} +% \def\versi@nno{ver4.01} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hetaromh} +% \def\versi@ndate{December 20, 2004} +% \def\versi@nno{ver4.02} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hetaromh} +% \def\versi@ndate{September 5, 2006} +% \def\versi@nno{ver4.03b} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{hetaromh} +% \def\versi@ndate{October 01, 2010} +% \def\versi@nno{ver5.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \fi +% +% \CheckSum{5645} +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +% +% \setcounter{StandardModuleDepth}{1} +% +% \StopEventually{} +% \MakeShortVerb{\|} +% +% \iffalse +% \changes{v1.01}{1996/06/26}{first edition for LaTeX2e} +% \changes{v1.02}{1998/10/31}{revised edition for LaTeX2e} +% \changes{v2.00}{1998/12/25}{enhanced edition for LaTeX2e} +% \changes{v2.00a}{2000/11/11}{bug fix} +% \changes{v2.01}{2001/6/20}{Size reduction and clipping information} +% \changes{v3.00}{2002/4/30}{sfpicture enviroment etc.} +% \changes{v4.00}{2002/05/30}{PostScript output and ShiftPicEnv} +% \changes{v4.01}{2004/08/30}{Minor additions} +% \changes{v4.02}{2004/12/20}{Exception to wedged bonds} +% \changes{v4.02a}{2004/12/27}{Bug fix: \cs{ggg} to \cs{gggA}} +% \changes{v4.03b}{2006/9/5}{Bug fix: \cs{ggg} to \cs{gggA} revised} +% \changes{v5.00}{2010/10/01}{the LaTeX Project Public License} +% \changes{v5.01}{2013/03/19}{added \cs{pyrazinehi}, \cs{oxiraneh}, etc.} +% \fi +% +% \iffalse +%<*driver> +\NeedsTeXFormat{pLaTeX2e} +% \fi +\ProvidesFile{hetaromh.dtx}[2013/03/19 v5.01 XyMTeX{} package file] +% \iffalse +\documentclass{ltxdoc} +\GetFileInfo{hetaromh.dtx} +% +% %%XyMTeX Logo: Definition 2%%% +\def\UPSILON{\char'7} +\def\XyM{X\kern-.30em\smash{% +\raise.50ex\hbox{\UPSILON}}\kern-.30em{M}} +\def\XyMTeX{\XyM\kern-.1em\TeX} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\title{Heterocycles of horizontal type by {\sffamily hetaromh.sty} +(\fileversion) of \XyMTeX{}} +\author{Shinsaku Fujita \\ +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{hetaromh.dtx} +\end{document} +%</driver> +% \fi +% +% \section{Introduction}\label{hetaromh:intro} +% +% \subsection{Options for {\sffamily docstrip}} +% +% \DeleteShortVerb{\|} +% \begin{center} +% \begin{tabular}{|l|l|} +% \hline +% \emph{option} & \emph{function}\\ \hline +% hetaromh & hetaromh.sty \\ +% driver & driver for this dtx file \\ +% \hline +% \end{tabular} +% \end{center} +% \MakeShortVerb{\|} +% +% \subsection{Version Information} +% +% \begin{macrocode} +%<*hetaromh> +\typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 5.01} +\typeout{ -- Released March 19, 2013 by Shinsaku Fujita} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\j@urnalname{hetaromh} +\def\versi@ndate{March 19, 2013} +\def\versi@nno{ver5.01} +\def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\typeout{XyMTeX Macro File `\j@urnalname' (\versi@nno) <\versi@ndate>% +\space[\copyrighth@lder]} +% \end{macrocode} +% +% \section{List of commands for hetaromh.sty} +% +% \begin{verbatim} +% +% ********************************** +% * hetaromh.sty: list of commands * +% ********************************** +% +% <Conventions for bond-setting> +% +% \hbonda +% \hbondf +% \hbondb +% \hbondc +% \hbondd +% \hbonde +% \hbondvert +% \hbondverti +% +% \hskbonda +% \hskbondf +% \hskbondc +% \hskbondd +% \hskbondb +% \hskbonde +% \hskbondvert +% \hskbondverti +% +% \dothskbonda +% \dothskbondf +% \dothskbondc +% \dothskbondd +% \dothskbondb +% \dothskbonde +% \dothskbondvert +% \dothskbondverti +% \end{verbatim} +% +% \begin{verbatim} +% +% <Six-membered heterocycles (horizontal)> +% +% Basic Macros +% +% \sixheteroh \@sixheteroh +% \sixheterohi \@sixheterohi +% +% Application Macros +% +% \pyridineh \@pyridineh +% \pyridinehi \@pyridinehi +% \pyrazineh \@pyrazineh +% \pyrazinehi \@pyrazinehi +% \pyrimidineh \@pyrimidineh +% \pyrimidinehi \@pyrimidinehi +% \pyridazineh \@pyridazineh +% \pyridazinehi \@pyridazinehi +% \triazineh \@triazineh +% \triazinehi \@triazinehi +% \end{verbatim} +% +% \begin{verbatim} +% +% <Five-membered heterocycles (horizontal)> +% +% Basic Macros +% +% \fiveheteroh \@fiveheteroh +% \fiveheterohi \@fiveheterohi +% +% Application Macros +% +% \pyrroleh \@pyrroleh +% \pyrazoleh \@pyrazoleh +% \imidazoleh \@imidazoleh +% \isoxazoleh \@isoxazoleh +% \oxazoleh \@oxazoleh +% +% \furanh \@furanh +% \thiopheneh \@thiopheneh +% +% \pyrrolehi \@pyrrolehi +% \pyrazolehi \@pyrazolehi +% \imidazolehi \@imidazolehi +% \isoxazolehi \@isoxazolehi +% \oxazolehi \@oxazolehi +% +% \furanhi \@furanhi +% \thiophenehi \@thiophenehi +% +% \end{verbatim} +% +% \begin{verbatim} +% +% <Six-Six fused heterocycles (horizontal)> +% +% Basic Macros +% +% \decaheteroh \@decaheteroh +% \decaheterohi \@decaheterohi +% +% Application Macros +% +% \quinolineh \@quinolineh +% \quinolinehi \@quinolinehi +% \isoquinolineh \@isoquinolineh +% \isoquinolinehi \@isoquinolinehi +% \quinoxalineh \@quinoxalineh +% \quinoxalinehi \@quinoxalinehi +% \quinazolineh \@quinazolineh +% \quinazolinehi \@quinazolinehi +% \cinnolineh \@cinnolineh +% \cinnolinehi \@cinnolinehi +% \pteridineh \@pteridineh +% \pteridinehi \@pteridinehi +% \end{verbatim} +% +% \begin{verbatim} +% +% <Six-Five fused heterocycles (horizontal)> +% +% Basic Macros +% +% \nonaheteroh \@nonaheteroh +% \nonaheterohi \@nonaheterohi +% +% Application Macros +% +% \purineh \@purineh +% \purinehi \@purinehi +% \indoleh \@indoleh +% \indolehi \@indolehi +% \indolizineh \@indolizineh +% \indolizinehi \@indolizinehi +% \isoindoleh \@isoindoleh +% \isoindolehi \@isoindolehi +% \benzofuraneh \@benzofuraneh +% \benzofuranehi \@benzofuranehi +% \isobenzofuraneh \@isobenzofuraneh +% \isobenzofuranehi \@isobenzofuranehi +% \benzoxazoleh \@benzoxazoleh +% \benzoxazolehi \@benzoxazolehi +% \end{verbatim} +% +% \begin{verbatim} +% +% <Building units> +% +% \sixunith \@sixunith +% \fiveunith \@fiveunith +% \fiveunithi \@fiveunithi +% \end{verbatim} +% +% \begin{verbatim} +% +% <Three-membered rings> +% +% \threeheteroh \@threeheteroh +% \threeheterohi \@threeheterohi +% +% Application Macros +% \oxiraneh \oxiranehi +% \aziridineh \aziridinehi +% \thiiraneh \thiiranehi +% \end{verbatim} +% +% \section{Input of basic macros} +% +% To assure the compatibility to \LaTeX{}2.09 (the native mode), +% the commands added by \LaTeXe{} have not been used in the resulting sty +% files ({\sf hetaromh.sty} for the present case). Hence, the combination +% of |\input| and |\@ifundefined| is used to crossload sty +% files ({\sf chemstr.sty} for the present case) in place of the +% |\RequirePackage| command of \LaTeXe{}. +% +% \begin{macrocode} +% ************************* +% * input of basic macros * +% ************************* +\@ifundefined{setsixringv}{\input chemstr.sty\relax}{}% +\@ifundefined{test@vertix@decavi}{\input hetarom.sty\relax}{}% +\unitlength=0.1pt% +% \end{macrocode} +% +% \section{Various switches} +% +% These control sequences have been commented out, since they are +% defined elsewhere. +% +% \begin{macrocode} +% % **************************** +% % * various flags (switches) * +% % **************************** +% \newif\if@gclip \@gclipfalse% +% \newif\if@hclip \@hclipfalse% +% \newif\if@iclip \@iclipfalse% +% \newif\if@jclip \@jclipfalse% +% \def\iniflag{% +% \@aclipfalse \@bclipfalse\@cclipfalse\@clipfalse\@eclipfalse% +% \@fclipfalse\@gclipfalse\@hclipfalse\@iclipfalse\@jclipfalse% +% \@clipfusefalse}% +% \def\iniatom{% +% \def\aaa{}\def\bbb{}\def\ccc{}\def\ddd{}\def\eee{}\def\fff{}% +% \def\gggA{}\def\hhh{}\def\iii{}\def\jjj{}% +% \def\@aaa{}\def\@bbb{}\def\@ccc{}\def\@ddd{}\def\@eee{}\def\@fff{}% +% }% +% \def\resetbdsw{\gdef\@aaa{a}\gdef\@bbb{b}\gdef\@ccc{c}% +% \gdef\@ddd{d}\gdef\@eee{e}\gdef\@fff{f}}% +% +\iniatom% +% \end{macrocode} +% +% \section{Macros for setting bonds} +% \subsection{Inner double bonds} +% +% The macros |\sixheteroh| and |\fiveheteroh| use internal macros for setting +% inner double bonds in accordance with the presence or the absence of +% hetero atoms. During the processes of such setting, +% the inner macros |\hbonda| to |\hbondf| are used to set a bond +% on each edge of a six- or five-membered ring; and +% the inner macros |\hbondvert| and |\hbondverti| draw vertical bonds +% of a five-membered ring. +% +% Note that +% comments (conerning locant numbers) on the end of each row have +% lost the exact meaning, +% since such a command moiety is used in many macros after copying. +% +% \begin{verbatim} +% ****************************** +% * setting inner double bonds * +% ****************************** +% +% b +% (bbb) 2 3 (ccc) +% a ----- c +% * * +% the original point ===> 1 * (aaa) * 4 (ddd) +% (0,0) * * c +% f ----- +% (fff) 6 5 (eee) +% e +% \end{verbatim} +% +% \begin{macro}{\hbonda} +% The macro |\hbonda| refers to the control sequences representing +% atoms on both of the terminal vertices (|\aaa| and |\bbb|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +% bond between 1 and 2 +\def\hbonda{% + \ifx\aaa\empty% + \ifx\bbb\empty% + \Put@Line(42,6)(3,5){78}% %double bond 1-2 + \else% + \Put@Line(42,6)(3,5){62}% %double bond 1-2 + \fi% + \else% + \ifx\bbb\empty% + \Put@Line(57,36)(3,5){62}% %double bond 1-2 + \else% + \Put@Line(57,36)(3,5){62}% %double bond 1-2 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\hbondf} +% The macro |\hbondf| refers to the control sequences representing +% atoms on both of the terminal vertices (|\aaa| and |\fff|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +% bond between 1 and 6 +\def\hbondf{% + \ifx\aaa\empty% + \ifx\fff\empty% + \Put@Line(42,-6)(3,-5){78}% %double bond 1-6 + \else% + \Put@Line(42,-6)(3,-5){62}% %double bond 1-6 + \fi% + \else% + \ifx\fff\empty% + \Put@Line(57,-36)(3,-5){62}% %double bond 1-6 + \else% + \Put@Line(57,-36)(3,-5){62}% %double bond 1-6 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\hbondb} +% The macro |\hbondf| refers to the control sequences representing +% atoms on both of the terminal vertices (|\bbb| and |\ccc|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +% bond between 3 and 2 + \def\hbondb{% + \ifx\bbb\empty% + \ifx\ccc\empty% + \Put@Line(129,138)(1,0){148}% %double bond 2-3 + \else% + \Put@Line(129,138)(1,0){134}% %double bond 3-2 + \fi% + \else% + \ifx\ccc\empty% + \Put@Line(143,138)(1,0){134}% %double bond 3-2 + \else% + \Put@Line(143,138)(1,0){110}% %double bond 3-2 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\hbondc} +% The macro |\hbondc| refers to the control sequences representing +% atoms on both of the terminal vertices (|\ddd| and |\ccc|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +% bond between 4 and 3 + \def\hbondc{% + \ifx\ddd\empty% + \ifx\ccc\empty% + \Put@Line(364,6)(-3,5){78}% %double bond 4-3 + \else% + \Put@Line(364,6)(-3,5){62}% %double bond 4-3 + \fi% + \else% + \ifx\ccc\empty% + \Put@Line(349,36)(-3,5){62}% %double bond 4-3 + \else% + \Put@Line(349,36)(-3,5){62}% %double bond 4-3 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\hbondd} +% The macro |\hbondf| refers to the control sequences representing +% atoms on both of the terminal vertices (|\ddd| and |\eee|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +% bond between 4 and 5 + \def\hbondd{% + \ifx\ddd\empty% + \ifx\eee\empty% + \Put@Line(364,-6)(-3,-5){78}% %double bond 4-5 + \else% + \Put@Line(364,-6)(-3,-5){62}% %double bond 4-5 + \fi% + \else% + \ifx\eee\empty% + \Put@Line(349,-36)(-3,-5){62}% %double bond 4-5 + \else% + \Put@Line(349,-36)(-3,-5){62}% %double bond 4-5 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\hbonde} +% The macro |\hbonde| refers to the control sequences representing +% atoms on both of the terminal vertices (|\fff| and |\eee|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +% bond between 5 and 6 +\def\hbonde{% + \ifx\fff\empty% + \ifx\eee\empty% + \Put@Line(129,-138)(1,0){148}% %double bond 6-5 + \else% + \Put@Line(129,-138)(1,0){134}% %double bond 5-6 + \fi% + \else% + \ifx\eee\empty% + \Put@Line(143,-138)(1,0){134}% %double bond 5-6 + \else% + \Put@Line(143,-138)(1,0){110}% %double bond 5-6 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\hbondvert} +% The macro |\hbondvert| refers to the control sequences representing +% atoms on both of the terminal vertices (|\fff| and |\bbb|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +% vertical inner bond for five-membered rings +\def\hbondvert{% + \ifx\fff\empty% + \ifx\bbb\empty% + \Put@Line(136,-138)(0,1){277}% %double bond 4-3 + \else% + \Put@Line(136,-138)(0,1){258}% %double bond 4-3 + \fi% + \else% + \ifx\bbb\empty% + \Put@Line(136,-120)(0,1){258}% %double bond 4-3 + \else + \Put@Line(136,-120)(0,1){239}% %double bond 4-3 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\hbondverti} +% The macro |\hbondverti| refers to the control sequences representing +% atoms on both of the terminal vertices (|\ccc| and |\eee|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +% horizontal inner bond for five-membered rings (inverse type) +\def\hbondverti{% + \ifx\eee\empty% + \ifx\ccc\empty% + \Put@Line(270,-138)(0,0){277}% %double bond 4-3 + \else% + \Put@Line(270,-138)(0,1){258}% %double bond 4-3 + \fi% + \else% + \ifx\ccc\empty% + \Put@Line(270,-120)(0,1){258}% %double bond 4-3 + \else% + \Put@Line(270,-120)(0,1){239}% %double bond 4-3 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \subsection{Skeletal bonds} +% +% The macros |\sixheteroh| and |\fiveheteroh| use inner macros for setting +% skeletal bonds in accordance with the presence or the absence of +% hetero atoms. During the processes of such setting, +% the inner macros |\skbonda| to |\skbondf| are used to set a bond +% on each edge of a six- or five-membered ring; and +% the inner macros |\hskibondverti| to |\hskibondverti| draw vertical bonds +% of a five-membered ring. +% +% \begin{verbatim} +% ******************************************** +% * setting skeletal bonds (horizontal type) * +% ******************************************** +% The following numbering is adopted in this macro. +% +% b +% (bbb) 2 3 (ccc) +% a ----- c +% * * +% the original point ===> 1 * (aaa) * 4 (ddd) +% (0,0) * * d +% f ----- +% (fff) 6 5 (eee) +% e +% \end{verbatim} +% +% \begin{macro}{\hskbonda} +% The macro |\hskbonda| refers to the control sequences representing +% atoms on both of the terminal vertices (|\aaa| and |\bbb|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%bond between 1 and 2 +\def\hskbonda{% + \ifx\aaa\empty% + \ifx\bbb\empty% + \Put@Line(0,0)(3,5){103}% %bond 1-2 + \else% + \Put@Line(0,0)(3,5){79}% %bond 1-2 + \fi% + \else% + \ifx\bbb\empty% + \Put@Line(24,40)(3,5){79}% %bond 1-2 + \else% + \Put@Line(24,40)(3,5){62}% %bond 1-2 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\hskbondf} +% The macro |\hskbondf| refers to the control sequences representing +% atoms on both of the terminal vertices (|\aaa| and |\fff|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%bond between 1 and 6 +\def\hskbondf{% + \ifx\aaa\empty% + \ifx\fff\empty + \Put@Line(0,0)(3,-5){103}% %bond 1-6 + \else% + \Put@Line(0,0)(3,-5){79}% %bond 1-6 + \fi% + \else% + \ifx\fff\empty% + \Put@Line(24,-40)(3,-5){79}% %bond 1-6 + \else% + \Put@Line(24,-40)(3,-5){62}% %bond 1-6 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\hskbondc} +% The macro |\hskbondc| refers to the control sequences representing +% atoms on both of the terminal vertices (|\ddd| and |\ccc|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%bond between 4 and 3 +\def\hskbondc{% + \ifx\ddd\empty% + \ifx\ccc\empty% + \Put@Line(406,0)(-3,5){103}% %bond 4-3 + \else% + \Put@Line(406,0)(-3,5){79}% %bond 4-3 + \fi% + \else% + \ifx\ccc\empty% + \Put@Line(382,40)(-3,5){79}% %bond 4-3 + \else% + \Put@Line(382,40)(-3,5){62}% %bond 4-3 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\hskbondd} +% The macro |\hskbondd| refers to the control sequences representing +% atoms on both of the terminal vertices (|\ddd| and |\eee|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%bond between 4 and 5 +\def\hskbondd{% + \ifx\ddd\empty% + \ifx\eee\empty% + \Put@Line(406,0)(-3,-5){103}% %bond 4-5 + \else% + \Put@Line(406,0)(-3,-5){79}% %bond 4-5 + \fi% + \else% + \ifx\eee\empty% + \Put@Line(382,-40)(-3,-5){79}% %bond 4-5 + \else% + \Put@Line(382,-40)(-3,-5){62}% %bond 4-5 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\hskbondb} +% The macro |\hskbondb| refers to the control sequences representing +% atoms on both of the terminal vertices (|\bbb| and |\ccc|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%bond between 3 and 2 +\def\hskbondb{% + \ifx\bbb\empty% + \ifx\ccc\empty% + \Put@Line(103,171)(1,0){200}% %bond 2-3 + \else% + \Put@Line(103,171)(1,0){160}% %bond 3-2 + \fi% + \else% + \ifx\ccc\empty% + \Put@Line(143,171)(1,0){160}% %bond 3-2 + \else% + \Put@Line(143,171)(1,0){120}% %bond 3-2 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\hskbonde} +% The macro |\hskbonde| refers to the control sequences representing +% atoms on both of the terminal vertices (|\eee| and |\fff|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%bond between 5 and 6 +\def\hskbonde{% + \ifx\eee\empty% + \ifx\fff\empty% + \Put@Line(103,-171)(1,0){200}% %bond 6-5 + \else% + \Put@Line(143,-171)(1,0){160}% %bond 5-6 + \fi% + \else% + \ifx\fff\empty% + \Put@Line(103,-171)(1,0){160}% %bond 5-6 + \else% + \Put@Line(143,-171)(1,0){120}% %bond 5-6 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\hskbondvert} +% The macro |\hskbondvert| refers to the control sequences representing +% atoms on both of the terminal vertices (|\bbb| and |\fff|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%vertical bond for five-membered rings +\def\hskbondvert{% + \ifx\fff\empty% + \ifx\bbb\empty% + \Put@Line(103,-171)(0,1){342}% %bond 4-3 + \else% + \Put@Line(103,-171)(0,1){300}% %bond 4-3 + \fi% + \else% + \ifx\bbb\empty% + \Put@Line(103,171)(0,-1){300}% %bond 4-3 + \else% + \Put@Line(103,-129)(0,1){258}% %bond 4-3 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\hskbondverti} +% The macro |\hskbondverti| refers to the control sequences representing +% atoms on both of the terminal vertices (|\eee| and |\ccc|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%vertical bond for five-membered rings (inverse type) +\def\hskbondverti{% + \ifx\eee\empty% + \ifx\ccc\empty% + \Put@Line(303,-171)(0,1){342}% %bond 4-3 + \else% + \Put@Line(303,-171)(0,1){300}% %bond 4-3 + \fi% + \else% + \ifx\ccc\empty% + \Put@Line(303,171)(0,-1){300}% %bond 4-3 + \else% + \Put@Line(303,-129)(0,1){258}% %bond 4-3 + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \subsection{Dotted Skeletal Bonds} +% +% The macros |\sixfuseh| etc. use inner macros for setting +% skeletal bonds in accordance with the presence or the absence of +% hetero atoms. During the processes of such setting, +% the inner macros |\dothskbonda| to |\dothskbondf| are used +% to set a dotted bond on each edge of a six- or five-membered ring. +% +% \begin{macro}{\dothskbonda} +% The macro |\dothskbonda| is the dotted counterpart of |\hskbonda|, +% which refers to the control sequences representing +% atoms on both of the terminal vertices (|\aaa| and |\bbb|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%bond between 1 and 2 +\def\dothskbonda{% + \ifx\aaa\empty% + \ifx\bbb\empty% + \dotorline(0,0)(3,5){103}/(0,0)(103,171)% + \else% + \dotorline(0,0)(3,5){79}/(0,0)(79,132)% + \fi% + \else% + \ifx\bbb\empty% + \dotorline(24,40)(3,5){79}/(24,40)(103,171)% + \else% + \dotorline(24,40)(3,5){62}/(24,40)(86,143)% + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dothskbondb} +% The macro |\dothskbondb| is the dotted counterpart of |\hskbondb|, +% which refers to the control sequences representing +% atoms on both of the terminal vertices (|\bbb| and |\ccc|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%bond between 3 and 2 +\def\dothskbondb{% + \ifx\bbb\empty% + \ifx\ccc\empty% + \dotorline(103,171)(1,0){200}/(103,171)(303,171)% + \else% + \dotorline(103,171)(1,0){160}/(103,171)(263,171)% + \fi% + \else% + \ifx\ccc\empty% + \dotorline(143,171)(1,0){160}/(143,171)(303,171)% + \else% + \dotorline(143,171)(1,0){120}/(143,171)(263,171)% + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dothskbondc} +% The macro |\dothskbondc| is the dotted counterpart of |\hskbondc|, +% which refers to the control sequences representing +% atoms on both of the terminal vertices (|\ddd| and |\ccc|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%bond between 4 and 3 +\def\dothskbondc{% + \ifx\ddd\empty% + \ifx\ccc\empty% + \dotorline(406,0)(-3,5){103}/(406,0)(303,171)% + \else% + \dotorline(406,0)(-3,5){79}/(406,0)(327,132)% + \fi% + \else% + \ifx\ccc\empty% + \dotorline(382,40)(-3,5){79}/(382,40)(303,171)% + \else% + \dotorline(382,40)(-3,5){62}/(382,40)(320,143)% + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dothskbondd} +% The macro |\dothskbondd| is the dotted counterpart of |\hskbondd|, +% which refers to the control sequences representing +% atoms on both of the terminal vertices (|\ddd| and |\eee|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%bond between 4 and 5 +\def\dothskbondd{% + \ifx\ddd\empty% + \ifx\eee\empty% + \dotorline(406,0)(-3,-5){103}/(406,0)(303,-171)% + \else% + \dotorline(406,0)(-3,-5){79}/(406,0)(327,-132)% + \fi% + \else% + \ifx\eee\empty% + \dotorline(382,-40)(-3,-5){79}/(382,-40)(303,-171)% + \else% + \dotorline(382,-40)(-3,-5){62}/(382,-40)(320,-143)% + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dothskbonde} +% The macro |\dothskbonde| is the dotted counterpart of |\hskbonde|, +% which refers to the control sequences representing +% atoms on both of the terminal vertices (|\eee| and |\fff|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%bond between 5 and 6 +\def\dothskbonde{% + \ifx\eee\empty% + \ifx\fff\empty% + \dotorline(103,-171)(1,0){200}/(103,-171)(303,-171)% + \else% + \dotorline(143,-171)(1,0){160}/(143,-171)(303,-171)% + \fi% + \else% + \ifx\fff\empty% + \dotorline(103,-171)(1,0){160}/(103,-171)(263,-171)% + \else% + \dotorline(143,-171)(1,0){120}/(143,-171)(263,-171)% + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dothskbondf} +% The macro |\dothskbondf| is the dotted counterpart of |\hskbondf|, +% which refers to the control sequences representing +% atoms on both of the terminal vertices (|\aaa| and |\fff|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%bond between 1 and 6 +\def\dothskbondf{% + \ifx\aaa\empty% + \ifx\fff\empty + \dotorline(0,0)(3,-5){103}/(0,0)(103,-171)% + \else% + \dotorline(0,0)(3,-5){79}/(0,0)(79,-131)% + \fi% + \else% + \ifx\fff\empty% + \dotorline(24,-40)(3,-5){79}/(24,-40)(103,-171)% + \else% + \dotorline(24,-40)(3,-5){62}/(24,-40)(86,-143)% + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dothskbondvert} +% The macro |\dothskbondvert| refers to the control sequences representing +% atoms on both of the terminal vertices (|\bbb| and |\fff|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%vertical bond for five-membered rings +\def\dothskbondvert{% + \ifx\fff\empty% + \ifx\bbb\empty% + \dotorline(103,-171)(0,1){342}/(103,-171)(103,171)% + \else% + \dotorline(103,-171)(0,1){300}/(103,-171)(103,129)% + \fi% + \else% + \ifx\bbb\empty% + \dotorline(103,171)(0,-1){300}/(103,171)(103,-129)% + \else% + \dotorline(103,-129)(0,1){258}/(103,-129)(103,129)% + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dothskbondverti} +% The macro |\dothskbondverti| refers to the control sequences representing +% atoms on both of the terminal vertices (|\eee| and |\ccc|) and +% examine whether these are empty or not. Thereby, +% it decides the vertices to be truncated. +% +% \begin{macrocode} +%vertical bond for five-membered rings (inverse type) +\def\dothskbondverti{% + \ifx\eee\empty% + \ifx\ccc\empty% + \dotorline(303,-171)(0,1){342}/(303,-171)(303,171)% + \else% + \dotorline(303,-171)(0,1){300}/(303,-171)(303,129)% + \fi% + \else% + \ifx\ccc\empty% + \dotorline(303,171)(0,-1){300}/(303,171)(303,-129)% + \else% + \dotorline(303,-129)(0,1){258}/(303,-129)(303,129)% + \fi\fi}% +% \end{macrocode} +% \end{macro} +% +% The macro |\set@skel@bondh| is used in |\sixfuseh| etc. +% for setting skeletal bonds (outer bonds), when |\@aaa| etc. +% (produced by |\csname|...|\endcsname|) are equal to `a' +% etc. (given as \#2). Thinline, thickline and dotted-line +% skeletal bonds are available. +% +% \changes{v4.02}{2004/12/20}{The positions of \cs{@skbondlisttrue} are changed.} +% \changes{v5.00}{2010/10/01}{For bond coloring} +% +% \begin{macro}{\set@skel@bondh} +% \begin{macrocode} +\def\set@skel@bondh#1#2#3{% + \expandafter\if\csname @#2#2#2\endcsname #2\relax%OK + % \if\@aaa #2\relax%OK + \def\skbondreplace{#3}% + \@skbondlistfalse + \@tfor\member:=#1\do{% + \expandafter\twoCH@@R\member//% + \if\@@tmpa #2\relax% + \if\@@tmpb A\relax% + \@skbondlisttrue + \expandafter\csname dothskbond#3\endcsname% \dothskbonda etc. +% \@skbondlisttrue + \else\if\@@tmpb B\relax% + \@skbondlisttrue + {\thicklines + \expandafter\csname hskbond#3\endcsname% \hskbonda etc. + }% +% \@skbondlisttrue + \else%%%added for color 2010/10/01 + \@skbondlisttrue% + \put(0,0){\@@tmpb}% + \fi\fi + \fi% + }% + \if@skbondlist\else + {\thinlines + \expandafter\csname hskbond#3\endcsname% \hskbonda etc. + }% + \fi% + \else + \expandafter\ifx\csname @#2#2#2\endcsname \empty\relax% + % \ifx\@aaa\empty\relax + \@tfor\member:=#1\do{% + \expandafter\twoCH@@R\member//% + \if\@@tmpa #2\relax% + \XyMTeXWarning{Unavailable bond `#2' in SKBONDLIST}\fi + }% + \fi\fi +}% end of \set@skel@bondh +% \end{macrocode} +% \end{macro} +% +% \section{Six-membered heterocyles} +% \subsection{Horizontal type} +% +% The standard skeleton of a six-membered heterocycle is selected +% to have the following locant numbers. +% +% \begin{verbatim} +% ************************* +% * sixhetero derivatives * +% * (horizontal type) * +% ************************* +% The following numbering is adopted in this macro. +% +% b +% 2 3 +% a ----- c +% * * +% the original point ===> 1 * * 4 +% (0,0) * * d +% f ----- +% 6 5 +% e +% +% \end{verbatim} +% +% The macro |\sixheterovh| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \sixheteroh(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] +% \end{verbatim} +% +% The |SKBONDLIST| argument contains pairs of two alphabets in +% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase +% character selected from bond specifiers `a' to `f' and a uppercase +% character `A' or `B'. +% +% The |BONDLIST| argument contains one +% character selected from a to f, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The option `A' represents an aromatic circle. The option +% `$n+$' ($n=1$ to $6$) represents a plus charge on a hetero atom +% at the $n$-position. +% +% \begin{verbatim} +% BONDLIST = +% +% none or r : sixhetero (right-handed) +% l : sixhetero (left-handed) +% a : 1,2-double bond +% b : 2,3-double bond +% c : 4,3-double bond +% d : 4,5-double bond +% e : 5,6-double bond +% f : 6,1-double bond +% A : aromatic circle +% {n+} : plus at the n-nitrogen atom (n = 1 to 6) +% \end{verbatim} +% +% The |ATOMLIST| argument contains one or more heteroatom descriptors +% which are separated from each other by a semicolon. Each heteroatom +% descriptor consists of a locant number and a heteroatom, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% ATOMLIST: list of heteroatoms (max 6 atoms) +% +% for n = 1 to 6 +% +% n : Hetero atom, e.g. N, O, etc. at n-position, +% e.g. 1==N for N at 1-position +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% SUBSLIST: list of substituents (max 6 substitution positions) +% +% for n = 1 to 6 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% \end{verbatim} +% +% The argument |OMIT| represents one or more bonds to be omitted. +% The omitted edges may be regarded as both fused and non-fused +% positions. +% +% \begin{verbatim} +% OMIT: one or more bonds omitted (a, b, c, d, e, or f) +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \sixheteroh{1==N}{1==Cl;2==F} +% \sixheteroh[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \sixheteroh[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl} +% \end{verbatim} +% +% The definition of |\sixheteroh| uses a picture environment and +% consists of the following unit processes: +% \begin{enumerate} +% \item treatment of atom list, +% \item placing outer skeletons, +% \item placing inner double bonds, +% \item setting hetero atoms, and +% \item placing substituents by |\setsixringh|. +% \end{enumerate} +% +% \changes{v1.02}{1998/10/31}{Adding \cs{ylpositionh}, \cs{if@ylsw}, +% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/11/29}{Add: Spiro and fused rings} +% +% \begin{macro}{\sixheteroh} +% \begin{macro}{\@six@heteroh} +% \begin{macro}{\@six@@heteroh} +% \begin{macro}{\@sixheteroh} +% \begin{macrocode} +\def\sixheteroh{\@ifnextchar({\@six@heteroh(@}{\@six@heteroh(@)}} +\def\@six@heteroh(#1){\@ifnextchar[{\@six@@heteroh(#1)[@}% +{\@six@@heteroh(#1)[@]}} +\def\@six@@heteroh(#1)[#2]#3#4{\@ifnextchar[% +{\@sixheteroh(#1)[#2]{#3}{#4}[@}% +{\@sixheteroh(#1)[#2]{#3}{#4}[@]}} +\def\@sixheteroh(#1)[#2]#3#4[#5]{% +% \end{macrocode} +% +% \changes{v3.01}{2002/4/30}{Replaced by \cs{ShiftPicEnv}} +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%% +% % treatment of atom list % +% %%%%%%%%%%%%%%%%%%%%%%%%%% +\iniatom\iniflag%initialize +\test@vrtx@sixh{#3}% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % adjustment of attached positions % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\@reset@ylsw% +\ylpositionh{#4}{0}{0}{7}{0}% +\begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(880,800)(-240,-400){sixheteroh}%2002/4/30 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +{% +\resetbdsw% +\@bond@@omit{#5}% +\set@skel@bondh{#1}{a}{a}% bond between 1 and 2 \@aaa -> \hskbonda etc +\set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc +\set@skel@bondh{#1}{c}{c}% bond between 3 and 4 \@ccc -> \hskbondc etc +\set@skel@bondh{#1}{d}{d}% bond between 4 and 5 \@ddd -> \hskbondd etc +\set@skel@bondh{#1}{e}{e}% bond between 5 and 6 \@eee -> \hskbonde etc +\set@skel@bondh{#1}{f}{f}% bond between 6 and 1 \@fff -> \hskbondf etc +}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\@tfor\member:=#2\do{% +\if\member r\relax \hbondd\hbondf\hbondb% +\else \if\member l\relax \hbonda\hbondc\hbonde% +\else \if\member a\relax \hbonda% +\else \if\member b\relax \hbondb% +\else \if\member c\relax \hbondc% +\else \if\member d\relax \hbondd% +\else \if\member e\relax \hbonde% +\else \if\member f\relax \hbondf% +\else \if\member A%left aromatic circle +% \Put@oCircle(0,203){240}% %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% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents % +% %%%%%%%%%%%%%%%%%%%%%%%% +\setsixringh{#4}{0}{0}{7}{0}% %subst 1--6 +\end{ShiftPicEnv}% +\iniatom\iniflag}% %end of \sixheteroh macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The macro |\test@vrtx@sixh| is used to test the presence of +% a hetero atom or a spiro substituent on a vertex of the +% sixheteroh nucleus. +% +% \begin{macro}{\test@vrtx@sixh} +% \begin{macrocode} +\def\test@vrtx@sixh#1{% +\@forsemicol\member:=#1\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\twoch@r\@membera{}% +\ifcase\@tmpa% + \or% \xdef\aaa{\@memberb}% + \if\@tmpb s\relax\def\aaa{}\else\def\aaa{@}\fi + \or% \xdef\bbb{\@memberb}% + \if\@tmpb s\relax\def\bbb{}\else\def\bbb{@}\fi + \or% \xdef\ccc{\@memberb}% + \if\@tmpb s\relax\def\ccc{}\else\def\ccc{@}\fi + \or% \xdef\ddd{\@memberb}% + \if\@tmpb s\relax\def\ddd{}\else\def\ddd{@}\fi + \or% \xdef\eee{\@memberb}% + \if\@tmpb s\relax\def\eee{}\else\def\eee{@}\fi + \or% \xdef\fff{\@memberb}% + \if\@tmpb s\relax\def\fff{}\else\def\fff{@}\fi +\fi\fi}% +}% end of \test@vrtx@sixh +% \end{macrocode} +% \end{macro} +% +% \subsection{Inverse horizontal type} +% +% The standard skeleton of a six-membered heterocycle of inverse type +% is selected to have the following locant numbers. +% +% \begin{verbatim} +% ************************************ +% * sixhetero derivatives * +% * (horizontal type, inverse type) * +% ************************************ +% The following numbering is adopted in this macro. +% +% b +% 3 2 +% c ----- a +% * * +% the original point ===> 4 * * 1 +% (0,0) * * f +% d ----- +% 5 6 +% e +% \end{verbatim} +% +% The macro |\sixheterohi| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \sixheterohi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] +% \end{verbatim} +% +% The |SKBONDLIST| argument contains pairs of two alphabets in +% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase +% character selected from bond specifiers `a' to `f' and a uppercase +% character `A' or `B'. +% +% The |BONDLIST| argument contains one +% character selected from a to f, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The option `A' represents an aromatic circle. The option +% `$n+$' ($n=1$ to $6$) represents a plus charge on a hetero atom +% at the $n$-position. +% +% \begin{verbatim} +% +% BONDLIST = +% +% none or r : sixhetero (right-handed) +% l : sixhetero (left-handed) +% [] : fully saturated form +% a : 1,2-double bond +% b : 2,3-double bond +% c : 4,3-double bond +% d : 4,5-double bond +% e : 5,6-double bond +% f : 6,1-double bond +% A : aromatic circle +% {n+} : plus at the n-nitrogen atom (n = 1 to 4) +% \end{verbatim} +% +% The |ATOMLIST| argument contains one or more heteroatom descriptors +% which are separated from each other by a semicolon. Each heteroatom +% descriptor consists of a locant number and a heteroatom, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% ATOMLIST: list of heteroatoms (max 6 atoms) +% +% for n = 1 to 6 +% +% n : Hetero atom, e.g. N, O, etc. at n-position, +% e.g. 1==N for N at 1-position +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% SUBSLIST: list of substituents (max 6 substitution positions) +% +% for n = 1 to 6 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% \end{verbatim} +% +% The argument |OMIT| represents one or more bonds to be omitted. +% The omitted edges may be regarded as both fused and non-fused +% positions. +% +% \begin{verbatim} +% OMIT: one or more bonds omitted (a, b, c, d, e, or f) +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \sixheterohi{1==N}{1==Cl;2==F} +% \sixheterohi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \sixheterohi[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl} +% \end{verbatim} +% +% The definition of |\sixheterohi| uses a picture environment and +% consists of the same unit processes as shown in |\sixheterov|: +% \begin{enumerate} +% \item treatment of atom list, +% \item placing outer skeletons, +% \item placing inner double bonds, +% \item setting hetero atoms, and +% \item placing substituents by |\setsixringh|. +% \end{enumerate} +% \changes{v1.02}{1998/10/31}{Adding \cs{ylpositionh}, \cs{if@ylsw}, +% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/11/29}{Add: Spiro and fused rings} +% +% \begin{macro}{\sixheterohi} +% \begin{macro}{\@six@heterohi} +% \begin{macro}{\@six@@heterohi} +% \begin{macro}{\@sixheterohi} +% \begin{macrocode} +\def\sixheterohi{\@ifnextchar({\@six@heterohi(@}{\@six@heterohi(@)}} +\def\@six@heterohi(#1){\@ifnextchar[{\@six@@heterohi(#1)[@}% +{\@six@@heterohi(#1)[@]}} +\def\@six@@heterohi(#1)[#2]#3#4{\@ifnextchar[% +{\@sixheterohi(#1)[#2]{#3}{#4}[@}% +{\@sixheterohi(#1)[#2]{#3}{#4}[@]}} +\def\@sixheterohi(#1)[#2]#3#4[#5]{% +% \end{macrocode} +% +% \changes{v3.01}{2002/4/30}{Replaced by \cs{ShiftPicEnv}} +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%% +% % treatment of atom list % +% %%%%%%%%%%%%%%%%%%%%%%%%%% +\iniatom\iniflag%initialize +\test@vrtx@sixhi{#3}% +\@reset@ylsw% +\ylpositionh{#4}{5}{0}{5}{-1}% %subst 1--4 +\ylpositionh{#4}{11}{4}{7}{-1}% %subst 5 and 6 +\begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(880,800)(-240,-400){sixheterohi}%2002/4/30 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +{\resetbdsw% +\@bond@@omit{#5}% +\set@skel@bondh{#1}{a}{c}% bond between 1 and 2 \@aaa -> \hskbondc etc +\set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc +\set@skel@bondh{#1}{c}{a}% bond between 3 and 4 \@ccc -> \hskbonda etc +\set@skel@bondh{#1}{d}{f}% bond between 4 and 5 \@ddd -> \hskbondf etc +\set@skel@bondh{#1}{e}{e}% bond between 5 and 6 \@eee -> \hskbonde etc +\set@skel@bondh{#1}{f}{d}% bond between 6 and 1 \@fff -> \hskbondd etc +}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\@tfor\member:=#2\do{% +\if\member r\relax \hbondd \hbondf \hbondb% +\else \if\member l\relax \hbonda \hbondc \hbonde% +\else \if\member a\relax \hbondc% +\else \if\member b\relax \hbondb% +\else \if\member c\relax \hbonda% +\else \if\member d\relax \hbondf% +\else \if\member e\relax \hbonde% +\else \if\member f\relax \hbondd% +\else \if\member A%left aromatic circle +% \Put@oCircle(0,203){240}% %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 +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents % +% %%%%%%%%%%%%%%%%%%%%%%%% +\setsixringh{#4}{5}{0}{5}{-1}% %subst 1--4 +\setsixringh{#4}{11}{4}{7}{-1}% %subst 5 and 6 +\end{ShiftPicEnv}% +\iniatom\iniflag}% %end of \sixheterohi macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The macro |\test@vrtx@sixhi| is used to test the presence of +% a hetero atom or a spiro substituent on a vertex of the +% sixheteroh nucleus. +% +% \begin{macro}{\test@vrtx@sixhi} +% \begin{macrocode} +\def\test@vrtx@sixhi#1{% +\@forsemicol\member:=#1\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\twoch@r\@membera{}% +\ifcase\@tmpa% + \or \if\@tmpb s\relax\def\ddd{}\else\def\ddd{@}\fi + \or \if\@tmpb s\relax\def\ccc{}\else\def\ccc{@}\fi + \or \if\@tmpb s\relax\def\bbb{}\else\def\bbb{@}\fi + \or \if\@tmpb s\relax\def\aaa{}\else\def\aaa{@}\fi + \or \if\@tmpb s\relax\def\fff{}\else\def\fff{@}\fi + \or \if\@tmpb s\relax\def\eee{}\else\def\eee{@}\fi +\fi\fi}% +}% end of \test@vrtx@sixhi +% \end{macrocode} +% \end{macro} +% +% \subsection{Pyridine derivatives of horizontal type} +% +% The macros |\sixheteroh| and |\sixheterohi| can be used in the +% form of a fixed |ATOMLIST|. Hence, the resulting commands for +% drawing a six-membered heterocyle with one or more nitrogen atoms +% have an argument |SUBSLIST| as well as an optional argument |BONDLIST|. +% +% \begin{verbatim} +% ************************ +% * pyridine derivatives * +% * (horizontal type) * +% ************************ +% +% \pyridineh[BONDLIST]{SUBSLIST} +% \pyridinehi[BONDLIST]{SUBSLIST} +% \pyrazineh[BONDLIST]{SUBSLIST} +% \pyrazinehi[BONDLIST]{SUBSLIST} +% \pyrimidineh[BONDLIST]{SUBSLIST} +% \pyrimidinehi[BONDLIST]{SUBSLIST} +% \triazineh[BONDLIST]{SUBSLIST} +% \triazinehi[BONDLIST]{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one +% character selected from a to f, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The option `A' represents an aromatic circle. The option +% `$n+$' ($n=1$ to $6$) represents a plus charge on a hetero atom +% at the $n$-position. +% +% \begin{verbatim} +% BONDLIST = +% +% none or r : pyridine (right-handed) +% l : pyridine (left-handed) +% [] : fully saturated ring +% a : 1,2-double bond +% b : 2,3-double bond +% c : 4,3-double bond +% d : 4,5-double bond +% e : 5,6-double bond +% f : 6,1-double bond +% A : aromatic circle +% {n+} : plus at the nitrogen atom +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 6 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \pyridineh{1==Cl;2==F} +% \pyridineh[c]{1==Cl;4==F;2==CH$_{3}$} +% \pyridineh[eb]{1D==O;4SA==MeO;4SB==OMe;5W==Cl;6==Cl} +% \end{verbatim} +% \changes{v2.00}{1998/11/29}{Add: fused rings} +% +% \begin{macro}{\pyridineh} +% \begin{macro}{\pyridinehi} +% \begin{macrocode} +\def\pyridineh{\@ifnextchar[{\@pyridineh[@}{\@pyridineh[r]}}% +\def\@pyridineh[#1]#2{% +\iforigpt \typeout{command `pyridineh' % + is based on `sixheteroh'.}\fi% +\sixheteroh[#1]{1==N}{#2}}%end of \pyridineh macro +\def\pyridinehi{\@ifnextchar[{\@pyridinehi}{\@pyridinehi[r]}}% +\def\@pyridinehi[#1]#2{% +\iforigpt \typeout{command `pyridinehi' % + is based on `sixheterohi'.}\fi% +\sixheterohi[#1]{1==N}{#2}}% %end of \pyridinehi macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\pyrazineh} +% \begin{macro}{\pyrazinehi} +% \changes{v5.01}{2013/03/17}{Add: pyrazinehi} +% \begin{macrocode} +\def\pyrazineh{\@ifnextchar[{\@pyrazineh[@}{\@pyrazineh[r]}}% +\def\@pyrazineh[#1]#2{% +\iforigpt \typeout{command `pyrazineh' % + is based on `sixheteroh'.}\fi% +\sixheteroh[#1]{1==N;4==N}{#2}}%end of \pyrazineh macro +\def\pyrazinehi{\@ifnextchar[{\@pyrazinehi[@}{\@pyrazinehi[r]}}% +\def\@pyrazinehi[#1]#2{% +\iforigpt \typeout{command `pyrazinehi' % + is based on `sixheterohi'.}\fi% +\sixheterohi[#1]{1==N;4==N}{#2}}%end of \pyrazinehi macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\pyrimidineh} +% \begin{macro}{\pyrimidinehi} +% \begin{macrocode} +\def\pyrimidineh{% + \@ifnextchar[{\@pyrimidineh[@}{\@pyrimidineh[r]}}% +\def\@pyrimidineh[#1]#2{% +\iforigpt \typeout{command `pyrimidineh' % + is based on `sixheteroh'.}\fi% +\sixheteroh[#1]{1==N;3==N}{#2}}% + %end of \pyrimidineh macro +\def\pyrimidinehi{% + \@ifnextchar[{\@pyrimidinehi[@}{\@pyrimidinehi[r]}}% +\def\@pyrimidinehi[#1]#2{% +\iforigpt \typeout{command `pyrimidinehi' % + is based on `sixheterohi'.}\fi% +\sixheterohi[#1]{1==N;3==N}{#2}}%end of \pyrimidinehi macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\pyridazineh} +% \begin{macro}{\pyridazinehi} +% \begin{macrocode} +\def\pyridazineh{\@ifnextchar[{\@pyridazineh[@}{\@pyridazineh[r]}}% +\def\@pyridazineh[#1]#2{% +\iforigpt \typeout{command `pyridazineh' % + is based on `sixheteroh'.}\fi% +\sixheteroh[#1]{1==N;2==N}{#2}}% + %end of \pyridazineh macro +\def\pyridazinehi{% + \@ifnextchar[{\@pyridazinehi}{\@pyridazinehi[r]}}% +\def\@pyridazinehi[#1]#2{% +\iforigpt \typeout{command `pyridazinehi' % + is based on `sixheterohi'.}\fi% +\sixheterohi[#1]{1==N;2==N}{#2}}%end of \pyridazinehi macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\triazineh} +% \begin{macro}{\triazinehi} +% \begin{macrocode} +\def\triazineh{\@ifnextchar[{\@triazineh[@}{\@triazineh[r]}}% +\def\@triazineh[#1]#2{% +\iforigpt \typeout{command `triazineh' % + is based on `sixheteroh'.}\fi% +\sixheteroh[#1]{1==N;3==N;5==N}{#2}}%end of \triazineh macro +\def\triazinehi{\@ifnextchar[{\@triazinehi[@}{\@triazinehi[r]}}% +\def\@triazinehi[#1]#2{% +\iforigpt \typeout{command `triazinehi' % + is based on `sixheterohi'.}\fi% +\sixheterohi[#1]{1==N;3==N;5==N}{#2}}%end of \triazinehi macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \section{Five-membered heterocycles} +% \subsection{Horizontal type} +% +% The standard skeleton of a five-membered heterocycle +% is selected to have the following locant numbers. +% +% \begin{verbatim} +% **************************** +% * fivehetero derivatives * +% * (horizontal type) * +% **************************** +% The following numbering is adopted in this macro. +% +% 3 _____ 2 +% | * +% | * 1 <===== the original point +% | * +% 4 ----- 5 +% \end{verbatim} +% +% The macro |\fiveheteroh| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \fiveheteroh(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] +% \end{verbatim} +% +% The |SKBONDLIST| argument contains pairs of two alphabets in +% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase +% character selected from bond specifiers `a' to `e' and a uppercase +% character `A' or `B'. +% +% The |BONDLIST| argument contains one +% character selected from a to e, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The option `A' represents an aromatic circle. The option +% `$n+$' ($n=1$ to $5$) represents a plus charge on a hetero atom +% at the $n$-position. The option +% `$0+$' represents a plus charge at the center of the ring. +% +% \begin{verbatim} +% BONDLIST: list of inner double bonds +% +% a : 1,2-double bond +% b : 2,3-double bond +% c : 4,3-double bond +% d : 4,5-double bond +% e : 5,1-double bond +% A : aromatic circle +% {n+} : plus at the n-nitrogen atom (n = 1 to 5) +% {0+} : plus (or others) at the center +% \end{verbatim} +% +% The |ATOMLIST| argument contains one or more heteroatom descriptors +% which are separated from each other by a semicolon. Each heteroatom +% descriptor consists of a locant number and a heteroatom, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% ATOMLIST: list of heteroatoms (max 5 atoms) +% +% for n = 1 to 5 +% +% n : Hetero atom, e.g. N, O, etc. at n-position +% e.g. 1==N for N at 1-position +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 5 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% \end{verbatim} +% +% The argument |OMIT| represents one or more bonds to be omitted. +% The omitted edges may be regarded as both fused and non-fused +% positions. +% +% \begin{verbatim} +% OMIT: one or more bonds omitted (a, b, c, d, or e) +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \fiveheteroh{1==N}{1==H;2==F} +% \fiveheteroh[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \fiveheteroh[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl} +% \end{verbatim} +% +% The definition of |\fiveheteroh| uses a picture environment and +% consists of the same unit processes as shown in |\sixheterov|: +% \begin{enumerate} +% \item treatment of atom list, +% \item placing outer skeletons, +% \item placing inner double bonds, +% \item setting hetero atoms, and +% \item placing substituents by |\setsixringh| partially. +% \end{enumerate} +% \changes{v1.02}{1998/10/31}{Adding \cs{ylpositionh}, \cs{if@ylsw}, +% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/12/5}{Add: fused and spiro rings} +% +% \begin{macro}{\fiveheteroh} +% \begin{macro}{\@five@heteroh} +% \begin{macro}{\@five@@heteroh} +% \begin{macro}{\@fiveheteroh} +% \begin{macrocode} +\def\fiveheteroh{\@ifnextchar({\@five@heteroh(@}{\@five@heteroh(@)}} +\def\@five@heteroh(#1){\@ifnextchar[{\@five@@heteroh(#1)[@}% +{\@five@@heteroh(#1)[@]}} +\def\@five@@heteroh(#1)[#2]#3#4{\@ifnextchar[% +{\@fiveheteroh(#1)[#2]{#3}{#4}[@}% +{\@fiveheteroh(#1)[#2]{#3}{#4}[@]}} +\def\@fiveheteroh(#1)[#2]#3#4[#5]{% +\iniatom\iniflag%initialize +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%% +% % treatment of atom list % +% %%%%%%%%%%%%%%%%%%%%%%%%%% +\test@vrtx@fivehi{#3}% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % adustment of subs positions % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\@reset@ylsw% +\ylpositionh{#4}{5}{1}{5}{-1}% % for 1 to 3 +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +\ylpositionh{#4}{10}{4}{7}{-1}% % for 4 to 5 +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(800,880)(-240,-400){fiveheteroh}%2002/4/30 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +{\resetbdsw% +\@bond@@omit{#5}% +\set@skel@bondh{#1}{a}{c}% bond between 1 and 2 \@aaa -> \skbondc etc +\set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \skbondb etc +\set@skel@longbond{#1}{c}{hskbondvert}% + % bond between 3 and 4 \@ccc -> \skbondhoriz etc +\set@skel@bondh{#1}{d}{e}% bond between 4 and 5 \@ddd -> \skbonde etc +\set@skel@bondh{#1}{e}{d}% bond between 5 and 1 \@eee -> \skbondd etc +}% +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\@tfor\member:=#2\do{% +\if\member r% +\else \if\member a\relax \hbondc% +\else \if\member b\relax \hbondb% +\else \if\member c\relax \hbondvert% +\else \if\member d\relax \hbonde% +\else \if\member e\relax \hbondd% +\else \if\member A%left aromatic circle + \Put@oCircle(233,0){180}% %circle +\else + \expandafter\twoCH@@R\member//% + \set@fusionadd@fiveh +\fi\fi\fi\fi\fi\fi\fi}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting hetero atoms % +% %%%%%%%%%%%%%%%%%%%%%%%% +\Put@Direct(0,0){\set@hetatom@sixh{#3}{5}{1}{5}{-1}% +\storeclipinfo%added 2001/06/20 by S. Fujita +}% % for 1 to 3 +\developclipinfo%added 2001/06/20 by S. Fujita +\Put@Direct(0,0){\set@hetatom@sixh{#3}{10}{4}{7}{-1}% +\storeclipinfo%added 2001/06/20 by S. Fujita +}% % for 4 to 5 +\developclipinfo%added 2001/06/20 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents % +% %%%%%%%%%%%%%%%%%%%%%%%% +\Put@Direct(0,0){\setsixringh{#4}{5}{1}{5}{-1}}% % for 1 to 3 +\Put@Direct(0,0){\setsixringh{#4}{10}{4}{7}{-1}}% % for 4 to 5 +\end{ShiftPicEnvB}% +\iniatom\iniflag}% %end of \fiveheteroh macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The macro |\test@vrtx@fivehi| is used to test the presence of +% a hetero atom or a spiro substituent on a vertex of the +% fiveheteroh nucleus. +% +% \begin{macro}{\test@vrtx@fivehi} +% \begin{macrocode} +\def\test@vrtx@fivehi#1{% +\@forsemicol\member:=#1\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\twoch@r\@membera{}% +\ifcase\@tmpa% + \or \if\@tmpb s\relax\def\ddd{}\else\def\ddd{@}\fi + \or \if\@tmpb s\relax\def\ccc{}\else\def\ccc{@}\fi + \or \if\@tmpb s\relax\def\bbb{}\else\def\bbb{@}\fi + \or \if\@tmpb s\relax\def\fff{}\else\def\fff{@}\fi + \or \if\@tmpb s\relax\def\eee{}\else\def\eee{@}\fi + \or \if\@tmpb s\relax\def\aaa{}\else\def\aaa{@}\fi% dummy +\fi\fi}% +}% end of \test@vrtx@sixhi +% \end{macrocode} +% \end{macro} +% +% \subsection{Inverse horizontal type} +% +% The standard skeleton of a five-membered heterocycle of inverse type +% is selected to have the following locant numbers. +% +% \begin{verbatim} +% ******************************* +% * fivehetero derivatives * +% * (horizontal type, inverse) * +% ******************************* +% The following numbering is adopted in this macro. +% +% 2 ----- 3 +% * | +% the original point 1 * | +% * | +% _____| +% 5 4 +% \end{verbatim} +% +% The macro |\fiveheterohi| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \fiveheterohi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] +% \end{verbatim} +% +% The |SKBONDLIST| argument contains pairs of two alphabets in +% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase +% character selected from bond specifiers `a' to `e' and a uppercase +% character `A' or `B'. +% +% The |BONDLIST| argument contains one +% character selected from a to e, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The option `A' represents an aromatic circle. The option +% `$n+$' ($n=1$ to $5$) represents a plus charge on a hetero atom +% at the $n$-position. The option +% `$0+$' represents a plus charge at the center of the ring. +% +% \begin{verbatim} +% +% BONDLIST: list of inner double bonds +% +% a : 1,2-double bond +% b : 2,3-double bond +% c : 4,3-double bond +% d : 4,5-double bond +% e : 5,1-double bond +% A : aromatic circle +% {n+} : plus at the n-nitrogen atom (n = 1 to 5) +% {0+} : plus (or others) at the center +% \end{verbatim} +% +% The |ATOMLIST| argument contains one or more heteroatom descriptors +% which are separated from each other by a semicolon. Each heteroatom +% descriptor consists of a locant number and a heteroatom, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% ATOMLIST: list of heteroatoms (max 5 atoms) +% +% for n = 1 to 5 +% +% n : Hetero atom, e.g. N, O, etc. at n-position +% e.g. 1==N for N at 1-position +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 5 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% \end{verbatim} +% +% The argument |OMIT| represents one or more bonds to be omitted. +% The omitted edges may be regarded as both fused and non-fused +% positions. +% +% \begin{verbatim} +% OMIT: one or more bonds omitted (a, b, c, d, or e) +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \fiveheterohi{1==N}{1==H;2==F} +% \fiveheterohi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \fiveheterohi[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl} +% \end{verbatim} +% +% The definition of |\fiveheterohi| uses a picture environment and +% consists of the same unit processes as shown in |\sixheteroh|: +% \begin{enumerate} +% \item treatment of atom list, +% \item placing outer skeletons, +% \item placing inner double bonds, +% \item setting hetero atoms, and +% \item placing substituents by |\setsixringh| partially. +% \end{enumerate} +% \changes{v1.02}{1998/10/31}{Adding \cs{ylpositionh}, \cs{if@ylsw}, +% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/12/5}{Add: fused and spiro rings} +% +% \begin{macro}{\fiveheterohi} +% \begin{macro}{\@five@heterohi} +% \begin{macro}{\@five@@heterohi} +% \begin{macro}{\@fiveheterohi} +% \begin{macrocode} +\def\fiveheterohi{\@ifnextchar({\@five@heterohi(@}{\@five@heterohi(@)}} +\def\@five@heterohi(#1){\@ifnextchar[{\@five@@heterohi(#1)[@}% +{\@five@@heterohi(#1)[@]}} +\def\@five@@heterohi(#1)[#2]#3#4{\@ifnextchar[% +{\@fiveheterohi(#1)[#2]{#3}{#4}[@}% +{\@fiveheterohi(#1)[#2]{#3}{#4}[@]}} +\def\@fiveheterohi(#1)[#2]#3#4[#5]{% +\iniatom\iniflag%initialize +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%% +% % treatment of atom list % +% %%%%%%%%%%%%%%%%%%%%%%%%%% +\test@vertix@sixv{#3}{a}{b}{c}{e}{f}{d}%d--dummy +\@reset@ylsw% +\ylpositionh{#4}{0}{0}{4}{0}% % for 1 to 3 +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +\ylpositionh{#4}{1}{4}{7}{0}% % for 4 to 5 +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(800,880)(-240,-400){fiveheterohi}%2002/4/30 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +{\resetbdsw% +\@bond@@omit{#5}% +\set@skel@bondh{#1}{a}{a}% bond between 1 and 2 \@aaa -> \hskbonda etc +\set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc +\set@skel@longbond{#1}{c}{hskbondverti}% + % bond between 3 and 4 \@ccc -> \hskbondverti etc +\set@skel@bondh{#1}{d}{e}% bond between 4 and 5 \@ddd -> \hskbonde etc +\set@skel@bondh{#1}{e}{f}% bond between 5 and 6 \@eee -> \hskbondf etc +}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\@tfor\member:=#2\do{% +\if\member r% +\else \if\member a\relax \hbonda% +\else \if\member b\relax \hbondb% +\else \if\member c\relax \hbondverti% +\else \if\member d\relax \hbonde% +\else \if\member e\relax \hbondf% +\else \if\member A%left aromatic circle + \Put@oCircle(173,0){180}% %circle +\else + \expandafter\twoCH@@R\member//% + \set@fusionadd@fivehi +\fi\fi\fi\fi\fi\fi\fi}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting hetero atoms % +% %%%%%%%%%%%%%%%%%%%%%%%% +\set@hetatom@sixh{#3}{0}{0}{4}{0}% % for 1 to 3 +\set@hetatom@sixh{#3}{1}{4}{7}{0}% % for 4 to 5 +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents % +% %%%%%%%%%%%%%%%%%%%%%%%% +\setsixringh{#4}{0}{0}{4}{0}% % for 1 to 3 +\setsixringh{#4}{1}{4}{7}{0}% % for 4 to 5 +\end{ShiftPicEnvB}% +\iniatom\iniflag}% %end of \fiveheterohi macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Pyrrole derivatives of horizontal type} +% +% The macro |\fiveheteroh| can be used in the +% form of a fixed |ATOMLIST|. Hence, the resulting commands for +% drawing a five-membered heterocyle with one or more nitrogen atoms +% have an argument |SUBSLIST| as well as an optional argument |BONDLIST|. +% +% \begin{verbatim} +% *********************************** +% * pyrrole derivatives and others * +% * (horizontal type) * +% *********************************** +% +% \pyrroleh[BONDLIST]{SUBSLIST} +% \pyrazoleh[BONDLIST]{SUBSLIST} +% \imidazoleh[BONDLIST]{SUBSLIST} +% \isoxazoleh[BONDLIST]{SUBSLIST} +% \oxazoleh[BONDLIST]{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one +% character selected from a to e, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The option +% `$n+$' ($n=1$ to $5$) represents a plus charge on a hetero atom +% at the $n$-position. +% +% \begin{verbatim} +% BONDLIST: list of inner double bonds +% +% none : mother nucleus +% [] : fully saturated form +% a : 1,2-double bond +% b : 2,3-double bond +% c : 4,3-double bond +% d : 4,5-double bond +% e : 5,1-double bond +% {n+} : plus at the n-nitrogen atom (n = 1 to 5) +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 5 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \pyrroleh{1==H;2==F} +% \pyrroleh[]{1==H;2==F} +% \imidazoleh[c]{1==Cl;4==F;2==CH$_{3}$} +% \isoxazoleh[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl} +% \end{verbatim} +% +% \begin{macro}{\pyrroleh} +% \begin{macro}{\pyrazoleh} +% \begin{macro}{\imidazoleh} +% \begin{macro}{\isoxazoleh} +% \begin{macro}{\oxazoleh} +% \begin{macrocode} +\def\pyrroleh{\@ifnextchar[{\@pyrroleh[@}{\@pyrroleh[bd]}}% +\def\@pyrroleh[#1]#2{% +\iforigpt \typeout{command `pyrroleh' % + is based on `fiveheteroh'.}\fi% +\fiveheteroh[#1]{1==N}{#2}}% +\def\pyrazoleh{\@ifnextchar[{\@pyrazoleh[@}{\@pyrazoleh[bd]}}% +\def\@pyrazoleh[#1]#2{% +\iforigpt \typeout{command `pyrazoleh' % + is based on `fiveheteroh'.}\fi% +\fiveheteroh[#1]{1==N;2==N}{#2}}% +\def\imidazoleh{\@ifnextchar[{\@imidazoleh[@}{\@imidazoleh[bd]}}% +\def\@imidazoleh[#1]#2{% +\iforigpt \typeout{command `imidazoleh' % + is based on `fiveheteroh'.}\fi% +\fiveheteroh[#1]{1==N;3==N}{#2}}% +\def\isoxazoleh{\@ifnextchar[{\@isoxazoleh[@}{\@isoxazoleh[bd]}}% +\def\@isoxazoleh[#1]#2{% +\iforigpt \typeout{command `isoxazoleh' % + is based on `fiveheteroh'.}\fi% +\fiveheteroh[#1]{1==O;2==N}{#2}}% +\def\oxazoleh{\@ifnextchar[{\@oxazoleh[@}{\@oxazoleh[bd]}}% +\def\@oxazoleh[#1]#2{% +\iforigpt \typeout{command `oxazoleh' % + is based on `fiveheteroh'.}\fi% +\fiveheteroh[#1]{1==O;3==N}{#2}}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\furanh} +% \begin{macro}{\thiopheneh} +% \begin{macrocode} +\def\furanh{\@ifnextchar[{\@furanh[@}{\@furanh[bd]}} +\def\@furanh[#1]#2{% +\iforigpt \typeout{command `furanh' % + is based on `fiveheteroh'.}\fi% +\fiveheteroh[#1]{1==O}{#2}} +\def\thiopheneh{\@ifnextchar[{\@thiopheneh[@}{\@thiopheneh[bd]}} +\def\@thiopheneh[#1]#2{% +\iforigpt \typeout{command `thiopheneh' % + is based on `fiveheteroh'.}\fi% +\fiveheteroh[#1]{1==S}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Pyrrole derivatives of inverse horizontal type} +% +% The macro |\fiveheterohi| can be used in the +% form of a fixed |ATOMLIST|. Hence, the resulting commands for +% drawing a five-membered heterocyle with one or more nitrogen atoms +% have an argument |SUBSLIST| as well as an optional argument |BONDLIST|. +% +% \begin{verbatim} +% ************************************* +% * pyrrole derivatives and others * +% * (horizontal type, inverse) * +% ************************************* +% +% \pyrrolehi[BONDLIST]{SUBSLIST} +% \pyrazolehi[BONDLIST]{SUBSLIST} +% \imidazolehi[BONDLIST]{SUBSLIST} +% \isoxazolehi[BONDLIST]{SUBSLIST} +% \oxazolehi[BONDLIST]{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one +% character selected from a to e, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The option +% `$n+$' ($n=1$ to $5$) represents a plus charge on a hetero atom +% at the $n$-position. +% +% \begin{verbatim} +% BONDLIST: list of inner double bonds +% +% none : mother nucleus +% [] : fully saturated form +% a : 1,2-double bond +% b : 2,3-double bond +% c : 4,3-double bond +% d : 4,5-double bond +% e : 5,1-double bond +% {n+} : plus at the n-nitrogen atom (n = 1 to 5) +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 5 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \pyrrolehi{1==H;2==F} +% \pyrrolehi[]{1==H;2==F} +% \imidazolehi[c]{1==Cl;4==F;2==CH$_{3}$} +% \isoxazolehi[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl} +% \end{verbatim} +% +% \begin{macro}{\pyrrolehi} +% \begin{macro}{\pyrazolehi} +% \begin{macro}{\imidazolehi} +% \begin{macro}{\isoxazolehi} +% \begin{macro}{\oxazolehi} +% \begin{macrocode} +\def\pyrrolehi{\@ifnextchar[{\@pyrrolehi[@}{\@pyrrolehi[bd]}}% +\def\@pyrrolehi[#1]#2{% +\iforigpt \typeout{command `pyrrolehi' % + is based on `fiveheterohi'.}\fi% +\fiveheterohi[#1]{1==N}{#2}}% +\def\pyrazolehi{\@ifnextchar[{\@pyrazolehi[@}{\@pyrazolehi[bd]}}% +\def\@pyrazolehi[#1]#2{% +\iforigpt \typeout{command `pyrazolehi' % + is based on `fiveheterohi'.}\fi% +\fiveheterohi[#1]{1==N;2==N}{#2}}% +\def\imidazolehi{\@ifnextchar[{\@imidazolehi[@}{\@imidazolehi[bd]}}% +\def\@imidazolehi[#1]#2{% +\iforigpt \typeout{command `imidazolehi' % + is based on `fiveheterohi'.}\fi% +\fiveheterohi[#1]{1==N;3==N}{#2}}% +\def\isoxazolehi{\@ifnextchar[{\@isoxazolehi[@}{\@isoxazolehi[bd]}}% +\def\@isoxazolehi[#1]#2{% +\iforigpt \typeout{command `isoxazolehi' % + is based on `fiveheterohi'.}\fi% +\fiveheterohi[#1]{1==O;2==N}{#2}}% +\def\oxazolehi{\@ifnextchar[{\@oxazolehi[@}{\@oxazolehi[bd]}}% +\def\@oxazolehi[#1]#2{% +\iforigpt \typeout{command `oxazolehi' % + is based on `fiveheterohi'.}\fi% +\fiveheterohi[#1]{1==O;3==N}{#2}}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\furanhi} +% \begin{macro}{\thiophenehi} +% \begin{macrocode} +\def\furanhi{\@ifnextchar[{\@furanhi[@}{\@furanhi[bd]}} +\def\@furanhi[#1]#2{% +\iforigpt \typeout{command `furanhi' % + is based on `fiveheterohi'.}\fi% +\fiveheterohi[#1]{1==O}{#2}} +\def\thiophenehi{\@ifnextchar[{\@thiophenehi[@}{\@thiophenehi[bd]}} +\def\@thiophenehi[#1]#2{% +\iforigpt \typeout{command `thiophenehi' % + is based on `fiveheterohi'.}\fi% +\fiveheterohi[#1]{1==S}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \section{Six-to-six fused heterocyles} +% \subsection{Horizontal type} +% +% The standard skeleton of a six-to-six fused heterocycle is selected +% to have the following locant numbers. +% +% \begin{verbatim} +% **************************** +% * decahetero derivatives * +% * (horizontal type) * +% **************************** +% The following numbering is adopted in this macro. +% +% 2 3 +% +% *1 4 (*1 origin) +% +% (10)8a 4a(9) +% +% 8 5 +% +% 7 6 +% ____ ____ +% |cf. | +% | 8 (10)1 | +% | * 8a * | +% | 7 * * * * 2 | +% | | | | | +% | | | | | +% | 6 * * * * 3 | +% | * 4a * | +% | 5 (9) 4 | +% | ^ | +% | | | +% | the original point | +% |____ ____| +% \end{verbatim} +% +% The macro |\decaheteroh| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \decaheteroh(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] +% \end{verbatim} +% +% The |SKBONDLIST| argument contains pairs of two alphabets in +% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase +% character selected from bond specifiers `a' to `k' and a uppercase +% character `A' or `B'. +% +% The |BONDLIST| argument contains one +% character selected from a to k, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The option `A' and `B' represent aromatic circles. The option +% `$n+$' ($n=1$ to $10$) represents a plus charge on a hetero atom +% at the $n$-position. +% +% \begin{verbatim} +% BONDLIST: list of bonds +% +% none or r : decahetero (right-handed) +% l : no action +% [] : fully saturated form +% a : 1,2-double bond b : 2,3-double bond +% c : 4,3-double bond d : 4,4a-double bond +% e : 4a,5-double bond f : 5,6-double bond +% g : 6,7-double bond h : 7,8-double bond +% i : 8,8a-double bond j : 1,8a-double bond +% k : 4a,8a-double bond +% K : 4a,8a-double bond in the other ring +% A : aromatic circle B : aromatic circle +% {n+} : plus at the n-nitrogen atom (n = 1 to 10) +% \end{verbatim} +% +% The |ATOMLIST| argument contains one or more heteroatom descriptors +% which are separated from each other by a semicolon. Each heteroatom +% descriptor consists of a locant number and a heteroatom, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% ATOMLIST: list of heteroatoms (max 10 atoms) +% +% for n = 1 to 8 +% +% n : Hetero atom, e.g. N, O, etc. at n-position +% e.g. 1==N for N at 1-position +% na : Hetero atom at 4a or 8b (n=4 or 8) +% e.g. 4a==N (or 9==N) for N at 4a-position +% 8a==N (or {{10}}==N) for N at 8a-position +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 8 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% +% for 9 (4a position) and 10 (8a position) +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% \end{verbatim} +% +% The argument |OMIT| represents one or more bonds to be omitted. +% The omitted edges may be regarded as both fused and non-fused +% positions. +% +% \begin{verbatim} +% OMIT: one or more bonds omitted (a to k; see BONDLIST) +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \decaheteroh{1==N}{1==Cl;2==F} +% \decaheteroh[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \decaheteroh[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl} +% \end{verbatim} +% +% The definition of |\decaheteroh| uses a picture environment and +% consists of the same unit processes as shown in |\sixheterov|: +% \begin{enumerate} +% \item treatment of atom list, +% \item placing outer skeletons, +% \item placing inner double bonds, +% \item setting hetero atoms, and +% \item placing substituents by using |\setsixringh| several times. +% \end{enumerate} +% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw}, +% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/11/30}{Add: spiro and fused rings} +% \changes{v2.01}{2001/6/20}{The +% \cs{storeclipinfo} command is added.} +% \changes{v4.03b}{2006/9/5}{bug fix \cs{ggg} etc. for \cs{test@vertix@sixv} +% in chemstr.sty} +% +% \begin{macro}{\decaheteroh} +% \begin{macro}{\@deca@heteroh} +% \begin{macro}{\@deca@@heteroh} +% \begin{macro}{\@decaheteroh} +% \begin{macrocode} +\def\decaheteroh{\@ifnextchar({\@deca@heteroh(@}{\@deca@heteroh(@)}} +\def\@deca@heteroh(#1){\@ifnextchar[{\@deca@@heteroh(#1)[@}% +{\@deca@@heteroh(#1)[@]}} +\def\@deca@@heteroh(#1)[#2]#3#4{\@ifnextchar[% +{\@decaheteroh(#1)[#2]{#3}{#4}[@}% +{\@decaheteroh(#1)[#2]{#3}{#4}[@]}} +\def\@decaheteroh(#1)[#2]#3#4[#5]{% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%% +% % treatment of atom list % +% %%%%%%%%%%%%%%%%%%%%%%%%%% +\iniflag\iniatom% +\test@vertix@sixv{#3}{a}{b}{c}{d}{e}{f}% +\test@vertix@decav{#3}{g}{h}{i}{j}{@}{@}% +% %%%%%%%%%%%%%%%%%%%%%%% +% % adjustment for (yl) % +% %%%%%%%%%%%%%%%%%%%%%%% +\@reset@ylsw% +\ylhetpositionh{#4}{0}{0}{5}{0}% %substituents on 1 to 4 +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +{\let\ddd=\eee\let\eee=\fff\let\fff=\gggA +\ylhetpositionh{#4}{-1}{3}{7}{0}% %substituents on 5 to 7 +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{342}\fi +\else +{\let\aaa=\hhh +\ylhetpositionh{#4}{-7}{0}{2}{0}% %substituent on 8 +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{342}\fi +\else +{% +\clipdetection% +\@clipfusefalse \if@iclip \@clipfusetrue \fi% +\ylatombondposition{#4}{-8}{4}% %9 for 4a position +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-303}\def\@@yli{171}\fi +\else +{% +\clipdetection% +\@clipfusefalse \if@jclip \@clipfusetrue \fi% +\ylatombondposition{#4}{-9}{10}% %10 for 8a position +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-103}\def\@@yli{171}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(1200,1200)(-400,-800){decaheteroh}%2002/4/30 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +\begingroup +\resetbdsw% +\@bond@@omit{#5}% +{\let\fff=\jjj \let\eee=\iii% +\set@skel@bondh{#1}{a}{a}% bond between 1 and 2 \@aaa -> \hskbonda etc +\set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc +\set@skel@bondh{#1}{c}{c}% bond between 3 and 4 \@ccc -> \hskbondc etc +\set@skel@bondh{#1}{d}{d}% bond between 4 and 5 \@ddd -> \skbondd etc +\set@skel@bondh{#1}{k}{e}% bond between 7 and 8 \@kkk -> \skbonde etc +\set@skel@bondh{#1}{j}{f}% bond between 7 and 8 \@jjj -> \skbondf etc +}% +{\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA% + \let\ccc=\iii\let\bbb=\jjj% +\Put@Direct(0,-342){\set@skel@bondh{#1}{i}{a}}% + % bond between 8a and 8 \@iii -> \hskbonda etc +\Put@Direct(0,-342){\set@skel@bondh{#1}{e}{c}}% + % bond between 4a and 5 \@eee -> \hskbondc etc +\Put@Direct(0,-342){\set@skel@bondh{#1}{f}{d}}% + % bond between 5 and 6 \@fff -> \hskbondd etc +\Put@Direct(0,-342){\set@skel@bondh{#1}{g}{e}}% + % bond between 6 and 7 \@ggg -> \hskbonde etc +\Put@Direct(0,-342){\set@skel@bondh{#1}{h}{f}}% + % bond between 7 and 8 \@hhh -> \hskbondf etc +}% +\endgroup +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\@tfor\member:=#2\do{% +\if\member r\relax% +{\let\fff=\jjj \let\eee=\iii% + \Put@Direct(0,0){\hbonda}% bond between 1 and 2% + \Put@Direct(0,0){\hbondc}% bond between 3 and 4% +}% +{\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA% + \let\ccc=\iii\let\bbb=\jjj% + \Put@Direct(0,-342){\hbondb}% bond between 8a and 4a + \Put@Direct(0,-342){\hbondf}% bond between 8 and 7 + \Put@Direct(0,-342){\hbondd}% bond between 5 and 6 +}% +\else \if\member l\relax% +\else \if\member a\relax% + \Put@Direct(0,0){\hbonda}% bond between 1 and 2 +\else \if\member b\relax% + \Put@Direct(0,0){\hbondb}% bond between 2 and 3 +\else \if\member c\relax% + \Put@Direct(0,0){\hbondc}% bond between 3 and 4 +% \Put@Direct(342,0){\hbondc}% bond between 3 and 4 +\else \if\member d\relax% +{\let\eee=\iii% + \Put@Direct(0,0){\hbondd}% bond between 4 and 4a +}% +\else \if\member e\relax% +{\let\ccc=\iii \let\ddd=\eee% + \Put@Direct(0,-342){\hbondc}% bond between 5 and 4a +}% +\else \if\member f\relax% +{\let\ddd=\eee \let\eee=\fff% + \Put@Direct(0,-342){\hbondd}% bond between 5 and 6 +}% +\else \if\member g\relax% +{\let\eee=\fff \let\fff=\gggA% + \Put@Direct(0,-342){\hbonde}% bond between 6 and 7 +}% +\else \if\member h\relax% +{\let\aaa=\hhh \let\fff=\gggA% + \Put@Direct(0,-342){\hbondf}% bond between 8 and 7 +}% +\else \if\member i\relax% +{\let\aaa=\hhh \let\bbb=\jjj% + \Put@Direct(0,-342){\hbonda}% bond between 8 and 8a +}% +\else \if\member j\relax% +{\let\fff=\jjj% + \Put@Direct(0,0){\hbondf}% bond between 1 and 8a +}% +\else \if\member k\relax% +{\let\ccc=\iii\let\bbb=\jjj% + \Put@Direct(0,-342){\hbondb}% bond between 8a and 4a +}% +\else \if\member K\relax% +{\let\eee=\iii\let\fff=\jjj% + \Put@Direct(0,0){\hbonde}% bond between 8a and 4a in the other ring +}% +\else \if\member A%left aromatic circle + \Put@oCircle(203,0){240}% %circle +\else \if\member B%left aromatic circle + \Put@oCircle(203,-342){240}% %circle +\else + \expandafter\twoCH@@R\member//% + \def\aax{8a}\def\aay{4a}\def\aaz{10}% + \if\@@tmpa 4\relax% + \putratom{272}{-18}{\@@tmpb}% % right type + \else\if\@@tmpa 1\relax% + \putratom{68}{-18}{\@@tmpb}% % right type + \else\if\@@tmpa 3\relax% + \putratom{233}{60}{\@@tmpb}% % right type + \else\if\@@tmpa 2\relax% + \putratom{120}{60}{\@@tmpb}% % right type + \else\ifx\@@tmpa\aaz\relax% + \putratom{120}{-110}{\@@tmpb}% % right type + \else\ifx\@@tmpa\aax\relax% + \putratom{120}{-110}{\@@tmpb}% % right type + \else\ifx\@@tmpa\aay\relax + \putratom{233}{-110}{\@@tmpb}% % right type + \else\if\@@tmpa 9\relax% + \putratom{233}{-110}{\@@tmpb}% % right type + \else\if\@@tmpa 5\relax% + \putratom{272}{-360}{\@@tmpb}% % right type + \else\if\@@tmpa 8\relax% + \putratom{68}{-360}{\@@tmpb}% % right type + \else\if\@@tmpa 6\relax% + \putratom{233}{-452}{\@@tmpb}% % right type + \else\if\@@tmpa 7\relax% + \putratom{120}{-452}{\@@tmpb}% % right type + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +% *********************** +% * setting fused rings * +% *********************** + \expandafter\twoCH@R\member//% + \set@fusion@decah +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +\fi\fi\fi\fi\fi\fi}% +% \end{macrocode} +% +% \changes{v2.00a}{2000/11/11}{The +% \cs{iniflag} command is added to 5- and 8-substitution.} +% \changes{v4.03}{2006/9/5}{The \cs{storeclipinfo} command, bugfixed} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting hetero atoms % +% %%%%%%%%%%%%%%%%%%%%%%%% +\iniflag +\Put@Direct(0,0){\set@hetatom@sixh{#3}{0}{0}{5}{0}% +% \if@aclip \global\@acliptrue\fi +% \if@bclip \global\@bcliptrue\fi +% \if@cclip \global\@ccliptrue\fi +% \if@clip \global\@cliptrue\fi +\storeclipinfo +}% %substituents on 1 to 4 +\developclipinfo +\Put@Direct(0,-342){\iniflag%2000/11/11 by Shinsaku Fujita + \set@hetatom@sixh{#3}{-1}{3}{7}{0}% +% \@gclipfalse \if@fclip \global\@gcliptrue \fi% +% \@fclipfalse \if@eclip \global\@fcliptrue \fi% +% \@eclipfalse \if@clip \global\@ecliptrue \fi + \@gclipfalse \if@fclip \@gcliptrue \fi% + \@fclipfalse \if@eclip \@fcliptrue \fi% + \@eclipfalse \if@clip \@ecliptrue \fi + \@clipfalse%2006/9/5added +\storeclipinfo +}%substituents on 5 to 7 +%\developclipinfo%%2006/9/5 deleted +\Put@Direct(0,-342){\iniflag%2000/11/11 by Shinsaku Fujita + \set@hetatom@sixh{#3}{-7}{0}{2}{0}% +% \@hclipfalse \if@aclip \global\@hcliptrue \fi + \@hclipfalse \if@aclip \@hcliptrue \fi + \@aclipfalse%2006/9/5added +\storeclipinfo +}%%substituent on 8 +%\developclipinfo%%2006/9/5 deleted +\Put@Direct(0,0){\set@vrtx@fuseh{#3}% +% \if@iclip \global\@icliptrue \fi +% \if@jclip \global\@jcliptrue \fi +\storeclipinfo +}% fused positions +\developclipinfo +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents and exocyclic bonds % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\global\drawsamesubsttrue%2002/05/30 warning on +\Put@Direct(0,0){\setsixringh{#4}{0}{0}{5}{0}}% %substituents on 1 to 4 +\global\drawsamesubstfalse%2002/05/30 warning off +{\@clipfalse \if@eclip \@cliptrue \fi% %substituents on 5 to 7 + \@eclipfalse \if@fclip \@ecliptrue \fi% + \@fclipfalse \if@gclip \@fcliptrue \fi% +\Put@Direct(0,-342){\setsixringh{#4}{-1}{3}{7}{0}}% +}% +{\@aclipfalse \if@hclip \@acliptrue \fi% %substituent on 8 +\Put@Direct(0,-342){\setsixringh{#4}{-7}{0}{2}{0}}% +}% +{\@clipfusefalse \if@iclip \@clipfusetrue \fi% + \Put@Direct(303,-171){\setatombond{#4}{-8}{4}}% %9 for 4a position +}% +{\@clipfusefalse \if@jclip \@clipfusetrue \fi% + \Put@Direct(103,-171){\setatombond{#4}{-9}{10}}% %10 for 8a position +}% +\end{ShiftPicEnvB}% +\iniatom\iniflag}% %end of \decaheteroh macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The command |\ylhetpositionh| is used in the |\decaheteroh| command, +% giving the sift values for drawing a structure as a substituent. +% \changes{v1.02}{1998/10/16}{Newly added command} +% +% \begin{macro}{\ylhetpositionh} +% \begin{macrocode} +\def\ylhetpositionh#1#2#3#4#5{% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifnum#5<0\relax% +\@tmpaa=-\@tmpa\relax \advance\@tmpaa by#2\relax% +\else\@tmpaa=\@tmpa\relax \advance\@tmpaa by#2\relax\fi +\ifnum\@tmpaa>#3\relax% +\ifnum\@tmpaa<#4\relax% +\ifcase\@tmpaa%0 omit + \or + \ifx\aaa\empty + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%\@ylatrue% subst. on 1 + \else + \gdef\@ylii{30}\gdef\@yli{0}\global\@ylswtrue%\@ylatrue% subst. on 1 + \fi + \or + \ifx\bbb\empty + \gdef\@ylii{-103}\gdef\@yli{-171}\global\@ylswtrue%\@ylbtrue% subst. on 2 + \else + \gdef\@ylii{-73}\gdef\@yli{-223}\global\@ylswtrue%\@ylbtrue% subst. on 2 + \fi + \or + \ifx\ccc\empty + \gdef\@ylii{-303}\gdef\@yli{-171}\global\@ylswtrue%\@ylctrue% subst. on 3 + \else + \gdef\@ylii{-333}\gdef\@yli{-223}\global\@ylswtrue%\@ylctrue% subst. on 3 + \fi + \or + \ifx\ddd\empty + \gdef\@ylii{-406}\gdef\@yli{0}\global\@ylswtrue%\@yldtrue% subst. on 4 + \else + \gdef\@ylii{-436}\gdef\@yli{0}\global\@ylswtrue%\@yldtrue% subst. on 4 + \fi + \or + \ifx\eee\empty + \gdef\@ylii{-303}\gdef\@yli{171}\global\@ylswtrue%\@yletrue% subst. on 5 + \else + \gdef\@ylii{-333}\gdef\@yli{223}\global\@ylswtrue%\@yletrue% subst. on 5 + \fi + \or + \ifx\fff\empty + \gdef\@ylii{-103}\gdef\@yli{171}\global\@ylswtrue%\@ylftrue% subst. on 6 + \else + \gdef\@ylii{-73}\gdef\@yli{223}\global\@ylswtrue%\@ylftrue% subst. on 6 + \fi +\fi%end of ifcase +\fi\fi\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% \subsection{Inverse horizontal type} +% +% The standard skeleton of a six-to-six fused heterocycle is selected +% to have the following locant numbers. +% +% \begin{verbatim} +% ************************************ +% * decahetero derivatives * +% * (horizonatl type, inverse type) * +% ************************************ +% The following numbering is adopted in this macro. +% +% 3 2 +% +% *4 1 (*4 origin) +% +% (8)4a 8a(10) +% +% 5 8 +% +% 6 7 +% ____ ____ +% |cf. | +% | 5 (9) 4 | +% | * 4a * | +% | 6 * * * * 3 | +% | | | | | +% | | | | | +% | 7 * * * * 2 | +% | * 8a * | +% | 8 (9) 1 | +% | ^ | +% | | | +% | the original point | +% |____ ____| +% \end{verbatim} +% +% The macro |\decaheterohi| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \decaheterohi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] +% \end{verbatim} +% +% The |SKBONDLIST| argument contains pairs of two alphabets in +% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase +% character selected from bond specifiers `a' to `k' and a uppercase +% character `A' or `B'. +% +% The |BONDLIST| argument contains one +% character selected from a to k, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The options `A' and `B' represent aromatic circles in two rings. +% The option `$n+$' ($n=1$ to $10$) represents a plus charge on a hetero atom +% at the $n$-position. +% +% \begin{verbatim} +% BONDLIST: list of bonds +% +% none or r : decahetero (right-handed) +% l : no action +% [] : fully saturated form +% a : 1,2-double bond b : 2,3-double bond +% c : 4,3-double bond d : 4,4a-double bond +% e : 4a,5-double bond f : 5,6-double bond +% g : 6,7-double bond h : 7,8-double bond +% i : 8,8a-double bond j : 1,8a-double bond +% k : 4a,8a-double bond +% K : 4a,8a-double bond in the other ring +% A : aromatic circle B : aromatic circle +% {n+} : plus at the n-nitrogen atom (n = 1 to 10) +% \end{verbatim} +% +% The |ATOMLIST| argument contains one or more heteroatom descriptors +% which are separated from each other by a semicolon. Each heteroatom +% descriptor consists of a locant number and a heteroatom, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% ATOMLIST: list of heteroatoms (max 10 atoms) +% +% for n = 1 to 8 +% +% n : Hetero atom, e.g. N, O, etc. at n-position +% e.g. 1==N for N at 1-position +% na : Hetero atom at 4a or 8b (n=4 or 8) +% e.g. 4a==N (or 9==N) for N at 4a-position +% 8a==N (or {{10}}==N) for N at 8a-position +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 8 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% +% for 9 (4a position) and 10 (8a position) +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% \end{verbatim} +% +% The argument |OMIT| represents one or more bonds to be omitted. +% The omitted edges may be regarded as both fused and non-fused +% positions. +% +% \begin{verbatim} +% OMIT: one or more bonds omitted (a to k; see BONDLIST) +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \decaheterohi{1==N}{1==Cl;2==F} +% \decaheterohi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \decaheterohi[eb]{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl} +% \end{verbatim} +% +% The definition of |\decaheterohi| uses a picture environment and +% consists of the same unit processes as shown in |\sixheterov|: +% \begin{enumerate} +% \item treatment of atom list, +% \item placing outer skeletons, +% \item placing inner double bonds, +% \item setting hetero atoms, and +% \item placing substituents by using |\setsixringh| several times. +% \end{enumerate} +% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw}, +% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/12/1}{Add: spiro and fused rings} +% \changes{v2.01}{2001/6/20}{The +% \cs{storeclipinfo} command is added.} +% +% \begin{macro}{\decaheterohi} +% \begin{macro}{\@deca@heterohi} +% \begin{macro}{\@deca@@heterohi} +% \begin{macro}{\@decaheterohi} +% \begin{macrocode} +\def\decaheterohi{\@ifnextchar({\@deca@heterohi(@}{\@deca@heterohi(@)}} +\def\@deca@heterohi(#1){\@ifnextchar[{\@deca@@heterohi(#1)[@}% +{\@deca@@heterohi(#1)[@]}} +\def\@deca@@heterohi(#1)[#2]#3#4{\@ifnextchar[% +{\@decaheterohi(#1)[#2]{#3}{#4}[@}% +{\@decaheterohi(#1)[#2]{#3}{#4}[@]}} +\def\@decaheterohi(#1)[#2]#3#4[#5]{% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%% +% % treatment of atom list % +% %%%%%%%%%%%%%%%%%%%%%%%%%% +\iniflag\iniatom% +\test@vertix@decavi{#3}% +% %%%%%%%%%%%%%%%%%%%%%%% +% % adjustment for (yl) % +% %%%%%%%%%%%%%%%%%%%%%%% +\@reset@ylsw% +\ylhetpositionh{#4}{5}{0}{5}{-1}% %substituents on 1 to 4 +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +{\let\ddd=\eee\let\eee=\fff\let\fff=\gggA +\ylhetpositionh{#4}{12}{3}{7}{-1}% %substituents on 6 to 8 +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{342}\fi +\else +{\let\aaa=\hhh +\ylhetpositionh{#4}{-4}{0}{2}{0}% %substituent on 5 +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{342}\fi +\else +{% +\clipdetection% +\@clipfusefalse \if@iclip \@clipfusetrue \fi% +\ylatombondposition{#4}{-9}{4}% %10 for 8a position +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-303}\def\@@yli{171}\fi +\else +{% +\clipdetection% +\@clipfusefalse \if@jclip \@clipfusetrue \fi% +\ylatombondposition{#4}{-8}{10}% %9 for 4a position +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-103}\def\@@yli{171}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(1200,1200)(-400,-800){decaheterohi}%2002/4/30 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +\begingroup +\resetbdsw% +\@bond@@omit{#5}% +{\let\fff=\jjj \let\eee=\iii% +\set@skel@bondh{#1}{a}{c}% bond between 1 and 2 \@aaa -> \hskbondc etc +\set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc +\set@skel@bondh{#1}{c}{a}% bond between 3 and 4 \@ccc -> \hskbonda etc +\set@skel@bondh{#1}{d}{f}% bond between 4 and 4a \@ddd -> \hskbondf etc +\set@skel@bondh{#1}{k}{e}% bond between 4a and 8a \@kkk -> \hskbonde etc +\set@skel@bondh{#1}{j}{d}% bond between 8a and 1 \@jjj -> \hskbondd etc +}% +{\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA% + \let\ccc=\iii\let\bbb=\jjj% +\Put@Direct(0,-342){\set@skel@bondh{#1}{e}{a}}% + % bond between 4a and 5 \@eee -> \hskbonda etc +\Put@Direct(0,-342){\set@skel@bondh{#1}{i}{c}}% + % bond between 8a and 8 \@iii -> \hskbondc etc +\Put@Direct(0,-342){\set@skel@bondh{#1}{h}{d}}% + % bond between 7 and 8 \@hhh -> \hskbondd etc +\Put@Direct(0,-342){\set@skel@bondh{#1}{g}{e}}% + % bond between 6 and 7 \@ggg -> \hskbonde etc +\Put@Direct(0,-342){\set@skel@bondh{#1}{f}{f}}% + % bond between 5 and 6 \@fff -> \hskbondf etc +}% +\endgroup +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\@tfor\member:=#2\do{% +\if\member r\relax% +{\let\fff=\jjj \let\eee=\iii% + \Put@Direct(0,0){\hbonda}% bond between 1 and 2 + \Put@Direct(0,0){\hbondc}% bond between 3 and 4 +}% +{\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA% + \let\ccc=\iii\let\bbb=\jjj% + \Put@Direct(0,-342){\hbondb}% bond between 8a and 4a + \Put@Direct(0,-342){\hbondf}% bond between 8 and 7 + \Put@Direct(0,-342){\hbondd}% bond between 5 and 6 +}% +\else \if\member l\relax% +\else \if\member a\relax% + \Put@Direct(0,0){\hbondc}% bond between 3 and 4 +\else \if\member b\relax + \Put@Direct(0,0){\hbondb}% bond between 2 and 3 +\else \if\member c\relax + \Put@Direct(0,0){\hbonda}% bond between 1 and 2 +\else \if\member d\relax% +{\let\fff=\jjj% + \Put@Direct(0,0){\hbondf}% bond between 1 and 8a +}% +\else \if\member e\relax% +{\let\aaa=\hhh \let\bbb=\jjj% + \Put@Direct(0,-342){\hbonda}% bond between 8 and 8a +}% +\else \if\member f\relax% +{\let\aaa=\hhh \let\fff=\gggA% + \Put@Direct(0,-342){\hbondf}% bond between 8 and 7 +}% +\else \if\member g\relax% +{\let\eee=\fff \let\fff=\gggA% + \Put@Direct(0,-342){\hbonde}% bond between 6 and 7 +}% +\else \if\member h\relax% +{\let\ddd=\eee \let\eee=\fff% + \Put@Direct(0,-342){\hbondd}% bond between 5 and 6 +}% +\else \if\member i\relax% +{\let\ccc=\iii \let\ddd=\eee% + \Put@Direct(0,-342){\hbondc}% bond between 5 and 4a +}% +\else \if\member j\relax% +{\let\eee=\iii% + \Put@Direct(0,0){\hbondd}% bond between 4 and 4a +}% +\else \if\member k\relax% +{\let\ccc=\iii\let\bbb=\jjj% + \Put@Direct(0,-342){\hbondb}% bond between 8a and 4a +}% +\else \if\member K\relax% +{\let\eee=\iii\let\fff=\jjj% + \Put@Direct(0,0){\hbonde}% bond between 8a and 4a +}% +\else \if\member A%left aromatic circle + \Put@oCircle(203,0){240}% %circle +\else \if\member B%left aromatic circle + \Put@oCircle(203,-342){240}% %circle +\else \expandafter\twoCH@@R\member//% + \def\aax{8a}\def\aay{4a}\def\aaz{10}% + \if\@@tmpa 4\relax% + \putratom{68}{-18}{\@@tmpb}% % right type + \else\if\@@tmpa 1\relax% + \putratom{272}{-18}{\@@tmpb}% % right type + \else\if\@@tmpa 3\relax% + \putratom{120}{60}{\@@tmpb}% % right type + \else\if\@@tmpa 2\relax% + \putratom{233}{60}{\@@tmpb}% % right type + \else\ifx\@@tmpa\aaz\relax% + \putratom{233}{-110}{\@@tmpb}% % right type + \else\ifx\@@tmpa\aax\relax% + \putratom{233}{-110}{\@@tmpb}% % right type + \else\ifx\@@tmpa\aay\relax% + \putratom{120}{-110}{\@@tmpb}% % right type + \else\if\@@tmpa 9\relax% + \putratom{120}{-110}{\@@tmpb}% % right type + \else\if\@@tmpa 5\relax% + \putratom{68}{-360}{\@@tmpb}% % right type + \else\if\@@tmpa 8\relax% + \putratom{272}{-360}{\@@tmpb}% % right type + \else\if\@@tmpa 6\relax% + \putratom{120}{-452}{\@@tmpb}% % right type + \else\if\@@tmpa 7\relax% + \putratom{233}{-452}{\@@tmpb}% % right type + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +% *********************** +% * setting fused rings * +% *********************** + \expandafter\twoCH@R\member//% + \set@fusion@decahi +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +\fi\fi\fi\fi\fi\fi}% +% \end{macrocode} +% +% \changes{v2.00a}{2000/11/11}{The +% \cs{iniflag} command is added to 8-substitution.} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting hetero atoms % +% %%%%%%%%%%%%%%%%%%%%%%%% +\iniflag +\@tmpclipfalse +\Put@Direct(0,0){\set@hetatom@sixh{#3}{5}{0}{5}{-1}% +% \if@aclip \global\@acliptrue\fi +% \if@bclip \global\@bcliptrue\fi +% \if@cclip \global\@ccliptrue\fi +% \if@clip \global\@cliptrue\fi +\storeclipinfo +}% %substituents on 1 to 4 +\developclipinfo +\Put@Direct(0,-342){\iniflag%2000/11/11 by Shinsaku Fujita + \set@hetatom@sixh{#3}{12}{3}{7}{-1}% +% \@gclipfalse \if@fclip \global\@gcliptrue \fi% +% \@fclipfalse \if@eclip \global\@fcliptrue \fi% +% \@eclipfalse \if@clip \global\@ecliptrue \fi% + \@gclipfalse \if@fclip \@gcliptrue \fi% + \@fclipfalse \if@eclip \@fcliptrue \fi% + \@eclipfalse \if@clip \@ecliptrue \fi% +\storeclipinfo +}%substituents on 6 to 8 +\developclipinfo +\Put@Direct(0,-342){\set@hetatom@sixh{#3}{-4}{0}{2}{0}% +% \@aclipfalse \if@aclip \global\@hcliptrue \fi% + \@aclipfalse \if@aclip \@hcliptrue \fi% +\storeclipinfo +}%%substituent on 5 +\developclipinfo +\Put@Direct(0,0){\set@vrtx@decafusehi{#3}% + \@tmpclipfalse +% \if@iclip \global\@tmpcliptrue \fi +% \if@jclip \global\@icliptrue \fi +% \if@tmpclip \global\@jcliptrue \fi + \if@iclip \@tmpcliptrue \fi + \if@jclip \@icliptrue \fi + \if@tmpclip \@jcliptrue \fi +\storeclipinfo +}% fused positions +\developclipinfo +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents and exocyclic bonds % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\global\drawsamesubsttrue%2002/05/30 warning on +\Put@Direct(0,0){\setsixringh{#4}{5}{0}{5}{-1}}% %substituents on 1 to 4 +\global\drawsamesubstfalse%2002/05/30 warning off +{\@clipfalse \if@eclip \@cliptrue \fi% %substituents on 6 to 8 + \@eclipfalse \if@fclip \@ecliptrue \fi% + \@fclipfalse \if@gclip \@fcliptrue \fi% +\Put@Direct(0,-342){\setsixringh{#4}{12}{3}{7}{-1}}% +}% +{\@aclipfalse \if@hclip \@acliptrue \fi% %substituent on 5 +\Put@Direct(0,-342){\setsixringh{#4}{-4}{0}{2}{0}}% +}% +{\@clipfusefalse \if@iclip \@clipfusetrue \fi% + \Put@Direct(303,-171){\setatombond{#4}{-9}{4}}% %10 for 8a position +}% +{\@clipfusefalse \if@jclip \@clipfusetrue \fi + \Put@Direct(103,-171){\setatombond{#4}{-8}{10}}% %9 for 4a position +}% +\end{ShiftPicEnvB}% +\iniatom\iniflag}% %end of \decaheterohi macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The macro |\set@vrtx@decafusehi| is an inner command contained +% in the definition of |\decaheterohi|, where the macro is used to set +% a hetero atom or on a vertex of a bridgehead location. +% +% \begin{macro}{\set@vrtx@decafusehi} +% \begin{macrocode} +\def\set@vrtx@decafusehi#1{% +\@forsemicol\member:=#1\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\twoch@r\@membera{}% +\ifcase\@tmpa\or\or\or + \or%%%%4 + \if\@tmpb a% + \global\@icliptrue% + \putlatom{135}{-211}{\@memberb}% % left type + \else\if\@tmpb h% + \XyMTeXWarning{Forbidden fused position `4a' or `9'}% + \else\if\@tmpb s% + \XyMTeXWarning{Forbidden fused position `4a' or `9'}% + \else\ifx\@tmpb\empty\relax + \else + \XyMTeXWarning{Forbidden fused position `4a' or `9'}% + \fi\fi\fi\fi + \or\or\or + \or%8 + \if\@tmpb a% + \global\@jcliptrue% + \putratom{273}{-211}{\@memberb}% % right type + \else\if\@tmpb h% + \XyMTeXWarning{Forbidden fused position `8a' or `10'}% + \else\if\@tmpb s% + \XyMTeXWarning{Forbidden fused position `8a' or `10'}% + \else\ifx\@tmpb\empty\relax + \else + \XyMTeXWarning{Forbidden fused position `8a' or `10'}% + \fi\fi\fi\fi +\or%9 (= 4a) + \ifx\@tmpb\empty% + \global\@icliptrue% + \putlatom{135}{-211}{\@memberb}% % left type + \else + \XyMTeXWarning{Forbidden fused position `4a' or `9'}% + \fi +\or%10 (= 8a) + \ifx\@tmpb\empty% + \global\@jcliptrue% + \putratom{273}{-211}{\@memberb}% % right type + \else + \XyMTeXWarning{Forbidden fused position `8a' or `10'}% + \fi +\fi\fi}% +}% end of the macro \set@vrtx@decafusehi +% \end{macrocode} +% \end{macro} +% +% The macro |\set@fusion@decahi| is an inner command contained +% in the definition of |\decaheterohi|, where +% the macro is used for setting an additive +% or a fused ring at each bond (designated by |\@@tmpa|). The +% fused ring is typeset by the inner command |\set@fusionadd@sixhi|. +% +% \begin{macro}{\set@fusion@decahi} +% \changes{v2.00}{1998/11/15}{New command: \cs{set@fusion@decahi}} +% \begin{macrocode} +\def\set@fusion@decahi{% + \let\@@tmpa=\@tmpa + \let\@@tmpb=\@tmpb + \if\@tmpa a% + \let\@@tmpa=\@tmpa + \Put@Direct(0,0){\set@fusionadd@sixhi}% + \else\if\@tmpa A% + \let\@@tmpa=\@tmpa + \Put@Direct(0,0){\set@fusionadd@sixhi}% + \else\if\@tmpa b% + \let\@@tmpa=\@tmpa + \Put@Direct(0,0){\set@fusionadd@sixhi}% + \else\if\@tmpa B% + \let\@@tmpa=\@tmpa + \Put@Direct(0,0){\set@fusionadd@sixhi}% + \else\if\@tmpa c% + \let\@@tmpa=\@tmpa + \Put@Direct(0,0){\set@fusionadd@sixhi}% + \else\if\@tmpa C% + \let\@@tmpa=\@tmpa + \Put@Direct(0,0){\set@fusionadd@sixhi}% + \else\if\@tmpa d% + \let\@@tmpa=\@tmpa + \Put@Direct(0,0){\set@fusionadd@sixhi}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `d'}% + \fi + \else\if\@tmpa D% + \let\@@tmpa=\@tmpa + \Put@Direct(0,0){\set@fusionadd@sixhi}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `D'}% + \fi + \else\if\@tmpa e% + \edef\@@tmpa{c}% + \Put@Direct(0,-342){\set@fusionadd@sixhi}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `e'}% + \fi + \else\if\@tmpa E% + \edef\@@tmpa{C}% + \Put@Direct(0,-342){\set@fusionadd@sixhi}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `E'}% + \fi + \else\if\@tmpa f% + \edef\@@tmpa{d}% + \Put@Direct(0,-342){\set@fusionadd@sixhi}% + \else\if\@tmpa F% + \edef\@@tmpa{D}% + \Put@Direct(0,-342){\set@fusionadd@sixhi}% + \else\if\@tmpa g% + \edef\@@tmpa{e}% + \Put@Direct(0,-342){\set@fusionadd@sixhi}% + \else\if\@tmpa G% + \edef\@@tmpa{E}% + \Put@Direct(0,-342){\set@fusionadd@sixhi}% + \else\if\@tmpa h% + \edef\@@tmpa{f}% + \Put@Direct(0,-342){\set@fusionadd@sixhi}% + \else\if\@tmpa H% + \edef\@@tmpa{F}% + \Put@Direct(0,-342){\set@fusionadd@sixhi}% + \else\if\@tmpa i% + \edef\@@tmpa{a}% + \Put@Direct(0,-342){\set@fusionadd@sixhi}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `i'}% + \fi + \else\if\@tmpa I% + \edef\@@tmpa{A}% + \Put@Direct(0,-342){\set@fusionadd@sixhi}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `I'}% + \fi + \else\if\@tmpa j% + \edef\@@tmpa{f}% + \Put@Direct(0,0){\set@fusionadd@sixhi}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `j'}% + \fi + \else\if\@tmpa J% + \edef\@@tmpa{F}% + \Put@Direct(0,0){\set@fusionadd@sixhi}% + \if@smallringsw\else + \XyMTeXWarning{Unfavorable Fusion for bond `J'}% + \fi + \else\if\@tmpa k% + \edef\@@tmpa{e}% + \Put@Direct(0,0){\set@fusionadd@sixhi}% + \if@smallringsw\else + \XyMTeXWarning{Forbidden Fusion for bond `k'}% + \fi + \else\if\@tmpa K% + \edef\@@tmpa{E}% + \Put@Direct(0,0){\set@fusionadd@sixhi}% + \if@smallringsw\else + \XyMTeXWarning{Forbidden Fusion for bond `K'}% + \fi + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +}% end of the macro \set@fusion@decahi +% \end{macrocode} +% \end{macro} +% +% \subsection{Short-cut commands for fused heterocycles} +% +% The macro |\decaheteroh| can be used in the +% form of a fixed |ATOMLIST|. Hence, the resulting commands for +% drawing a fused heterocyle with one or more nitrogen atoms +% have an argument |SUBSLIST| as well as an optional argument |BONDLIST|. +% +% \begin{verbatim} +% **************************************************** +% * heterocycles having two fused six-membered rings * +% * (horizontal type) * +% **************************************************** +% +% \quinolineh[BONDLIST]{SUBSLIST} +% \quinolinehi[BONDLIST]{SUBSLIST} +% \isoquinolineh[BONDLIST]{SUBSLIST} +% \isoquinolinehi[BONDLIST]{SUBSLIST} +% \quinoxalineh[BONDLIST]{SUBSLIST} +% \quinoxalinehi[BONDLIST]{SUBSLIST} +% \quinazolineh[BONDLIST]{SUBSLIST} +% \quinazolinehi[BONDLIST]{SUBSLIST} +% \cinnolineh[BONDLIST]{SUBSLIST} +% \cinnolinehi[BONDLIST]{SUBSLIST} +% \pteridineh[BONDLIST]{SUBSLIST} +% \pteridinehi[BONDLIST]{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one +% character selected from a to k, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The optiona `A' and `B' typeset aromatic circles. +% The option +% `$n+$' ($n=1$ to $10$) represents a plus charge on a hetero atom +% at the $n$-position. +% +% \begin{verbatim} +% BONDLIST: list of bonds +% +% none or r : decahetero (right-handed) +% l : decahetero (left-handed) +% [] : fully saturated form +% a : 1,2-double bond b : 2,3-double bond +% c : 4,3-double bond d : 4,4a-double bond +% e : 4a,5-double bond f : 5,6-double bond +% g : 6,7-double bond h : 7,8-double bond +% i : 8,8a-double bond j : 1,8a-double bond +% k : 4a,8a-double bond +% A : aromatic circle B : aromatic circle +% {n+} : plus at the n-nitrogen atom (n = 1 to 10) +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 8 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% +% for 9 (4a position) and 10 (8a position) +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \quinolineh{2==Cl;3==F} +% \end{verbatim} +% +% \begin{macro}{\quinolineh} +% \begin{macro}{\quinolinehi} +% \begin{macrocode} +\def\quinolineh{% + \@ifnextchar[{\@quinolineh[@}{\@quinolineh[acfhk]}}% +\def\@quinolineh[#1]#2{% +\iforigpt \typeout{command `quinolineh' % + is based on `decaheteroh'.}\fi% +\decaheteroh[#1]{1==N}{#2}}% +\def\quinolinehi{% + \@ifnextchar[{\@quinolinehi[@}{\@quinolinehi[acfhk]}}% +\def\@quinolinehi[#1]#2{% +\iforigpt \typeout{command `quinolinehi' % + is based on `decaheterohi'.}\fi% +\decaheterohi[#1]{1==N}{#2}}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\isoquinolineh} +% \begin{macro}{\isoquinolinehi} +% \begin{macrocode} +\def\isoquinolineh{% + \@ifnextchar[{\@isoquinolineh[@}{\@isoquinolineh[acfhk]}}% +\def\@isoquinolineh[#1]#2{% +\iforigpt \typeout{command `isoquinolineh' % + is based on `decaheteroh'.}\fi% +\decaheteroh[#1]{2==N}{#2}}% +\def\isoquinolinehi{% + \@ifnextchar[{\@isoquinolinehi[@}{\@isoquinolinehi[acfhk]}}% +\def\@isoquinolinehi[#1]#2{% +\iforigpt \typeout{command `isoquinolinehi' % + is based on `decaheterohi'.}\fi% +\decaheterohi[#1]{2==N}{#2}}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{quinoxalineh} +% \begin{macro}{quinoxalinehi} +% \begin{macrocode} +\def\quinoxalineh{% + \@ifnextchar[{\@quinoxalineh[@}{\@quinoxalineh[acfhk]}}% +\def\@quinoxalineh[#1]#2{% +\iforigpt \typeout{command `quinoxalineh' % + is based on `decaheteroh'.}\fi% +\decaheteroh[#1]{1==N;4==N}{#2}}% +\def\quinoxalinehi{% + \@ifnextchar[{\@quinoxalinehi[@}{\@quinoxalinehi[acfhk]}}% +\def\@quinoxalinehi[#1]#2{% +\iforigpt \typeout{command `quinoxalinehi' % + is based on `decaheterohi'.}\fi% +\decaheterohi[#1]{1==N;4==N}{#2}}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\quinazolineh} +% \begin{macro}{\quinazolinehi} +% \begin{macrocode} +\def\quinazolineh{% + \@ifnextchar[{\@quinazolineh[@}{\@quinazolineh[acfhk]}}% +\def\@quinazolineh[#1]#2{% +\iforigpt \typeout{command `quinazolineh' % + is based on `decaheteroh'.}\fi% +\decaheteroh[#1]{1==N;3==N}{#2}}% +\def\quinazolinehi{% + \@ifnextchar[{\@quinazolinehi[@}{\@quinazolinehi[acfhk]}}% +\def\@quinazolinehi[#1]#2{% +\iforigpt \typeout{command `quinazolinehi' % + is based on `decaheterohi'.}\fi% +\decaheterohi[#1]{1==N;3==N}{#2}}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\cinnolineh} +% \begin{macro}{\cinnolinehi} +% \begin{macrocode} +\def\cinnolineh{% + \@ifnextchar[{\@cinnolineh[@}{\@cinnolineh[acfhk]}}% +\def\@cinnolineh[#1]#2{% +\iforigpt \typeout{command `cinnolineh' % + is based on `decaheteroh'.}\fi% +\decaheteroh[#1]{1==N;2==N}{#2}}% +\def\cinnolinehi{% + \@ifnextchar[{\@cinnolinehi[@}{\@cinnolinehi[acfhk]}}% +\def\@cinnolinehi[#1]#2{% +\iforigpt \typeout{command `cinnolinehi' % + is based on `decaheterohi'.}\fi% +\decaheterohi[#1]{1==N;2==N}{#2}}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\pteridineh} +% \begin{macro}{\pteridinehi} +% \begin{macrocode} +\def\pteridineh{% + \@ifnextchar[{\@pteridineh[@}{\@pteridineh[acfhk]}}% +\def\@pteridineh[#1]#2{% +\iforigpt \typeout{command `pteridineh' % + is based on `decaheteroh'.}\fi% +\decaheteroh[#1]{1==N;3==N;5==N;8==N}{#2}}% +\def\pteridinehi{% + \@ifnextchar[{\@pteridinehi[@}{\@pteridinehi[acfhk]}}% +\def\@pteridinehi[#1]#2{% +\iforigpt \typeout{command `pteridinehi' % + is based on `decaheterohi'.}\fi% +\decaheterohi[#1]{1==N;3==N;5==N;8==N}{#2}}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \section{Six-to-five fused heterocycles} +% \subsection{Horizontal type} +% +% The standard skeleton of a six-to-five fused heterocycle is selected +% to have the following locant numbers. +% +% \begin{verbatim} +% ************************** +% * nonahetero derivatives * +% * (horizontal type) * +% ************************** +% The following numbering is adopted in this macro. +% +% 3 2 +% +% 1 (*1 origin) +% +% (8)3a 7a(9) +% +% 4 7 +% +% 5 6 +% ____ ____ +% |cf. | +% | 4 (8) | +% | * 3a | +% | 5 * * ----- 3 | +% | | | | | +% | | | | | +% | 6 * * * * 2 | +% | * 7a * | +% | 7 (9) 1 | +% | ^ | +% | | | +% | the original point | +% |____ ____| +% \end{verbatim} +% +% The macro |\nonaheteroh| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \nonaheteroh(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] +% \end{verbatim} +% +% The |SKBONDLIST| argument contains pairs of two alphabets in +% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase +% character selected from bond specifiers `a' to `j' and a uppercase +% character `A' or `B'. +% +% The |BONDLIST| argument contains one +% character selected from a to j, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The options `A' and `B' represent aromatic circles in two rings. +% The option `$n+$' ($n=1$ to $9$) represents a plus charge on a hetero atom +% at the $n$-position. +% +% \begin{verbatim} +% BONDLIST: list of bonds +% +% none or r : aromatic six-membered ring +% [] : fully saturated form +% a : 1,2-double bond b : 2,3-double bond +% c : 3,3a-double bond d : 4,3a-double bond +% e : 4,5-double bond f : 5,6-double bond +% g : 6,7-double bond h : 7,7a-double bond +% i : 1,7a-double bond +% j : 3a,4a-double bond +% J : 3a,4a-double bond in the other ring +% A : aromatic circle (six-membered) +% B : aromatic circle (five-membered) +% {n+} : plus at the n-nitrogen atom (n = 1 to 9) +% {0+} : plus (or others) at the center +% of the five-membered cycle +% \end{verbatim} +% +% The |ATOMLIST| argument contains one or more heteroatom descriptors +% which are separated from each other by a semicolon. Each heteroatom +% descriptor consists of a locant number and a heteroatom, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% ATOMLIST: list of heteroatoms (max 9 atoms) +% +% for n = 1 to 7 +% +% n : Hetero atom, e.g. N, O, etc. at n-position +% e.g. 1==N for N at 1-position +% na : Hetero atom at 3a or 7b (n=3 or 7) +% e.g. 3a==N (or 8==N) for N at 4a-position +% 7a==N (or 9==N) for N at 8a-position +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 8 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% +% for 8 (3a position) and 9 (7a position) +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% \end{verbatim} +% +% The argument |OMIT| represents one or more bonds to be omitted. +% The omitted edges may be regarded as both fused and non-fused +% positions. +% +% \begin{verbatim} +% OMIT: one or more bonds omitted (a to j; see BONDLIST) +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \nonaheteroh{1==N}{1==Cl;2==F} +% \nonaheteroh[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% +% The definition of |\nonaheteroh| uses a picture environment and +% consists of the same unit processes as shown in |\sixheteroh|: +% \begin{enumerate} +% \item treatment of atom list, +% \item placing outer skeletons, +% \item placing inner double bonds, +% \item setting hetero atoms, and +% \item placing substituents by using |\setsixringh| several times in +% a restricted fashion. +% \end{enumerate} +% \changes{v1.02}{1998/10/31}{Adding \cs{ylpositionh}, \cs{if@ylsw}, +% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/12/05}{Add: fused and spiro rings} +% \changes{v2.01}{2001/6/20}{The +% \cs{storeclipinfo} command is added.} +% +% \begin{macro}{\nonaheteroh} +% \begin{macro}{\@nona@heteroh} +% \begin{macro}{\@nona@@heteroh} +% \begin{macro}{\@nonaheteroh} +% \begin{macrocode} +\def\nonaheteroh{\@ifnextchar({\@nona@heteroh(@}{\@nona@heteroh(@)}} +\def\@nona@heteroh(#1){\@ifnextchar[{\@nona@@heteroh(#1)[@}% +{\@nona@@heteroh(#1)[@]}} +\def\@nona@@heteroh(#1)[#2]#3#4{\@ifnextchar[% +{\@nonaheteroh(#1)[#2]{#3}{#4}[@}% +{\@nonaheteroh(#1)[#2]{#3}{#4}[@]}} +\def\@nonaheteroh(#1)[#2]#3#4[#5]{% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%% +% % treatment of atom list % +% %%%%%%%%%%%%%%%%%%%%%%%%%% +\iniflag\iniatom% +\test@vertix@nonav{#3}% +% %%%%%%%%%%%%%%%%%%%%%%% +% % adjustment for (yl) % +% %%%%%%%%%%%%%%%%%%%%%%% +\@reset@ylsw% +\ylpositionh{#4}{5}{1}{5}{-1}% %substituents on 1 to 3 +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +{\let\ddd=\eee\let\eee=\fff\let\fff=\gggA +\ylpositionh{#4}{11}{3}{7}{-1}% %substituents on 5 to 7 +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{342}\fi +\else +{\let\aaa=\hhh +\ylpositionh{#4}{-3}{0}{2}{0}%%substituent on 4 +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{342}\fi +\else +{% +\clipdetection% +\@clipfusefalse \if@iclip \@clipfusetrue \fi% +\ylatombondposition{#4}{-8}{4}% %9 for 7a position +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-303}\def\@@yli{171}\fi +\else +{% +\clipdetection% +\@clipfusefalse \if@jclip \@clipfusetrue \fi% +\ylatombondposition{#4}{-7}{10}% %8 for 3a position +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-103}\def\@@yli{171}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(1200,1200)(-400,-800){nonaheteroh}%2002/4/30 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +\begingroup +\resetbdsw% +\@bond@@omit{#5}% +{\let\fff=\jjj \let\eee=\iii% +\set@skel@bondh{#1}{a}{c}% bond between 1 and 2 \@aaa -> \hskbondc etc +\set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc +\set@skel@longbond{#1}{c}{hskbondvert}% + % bond between 3 and 3a \@ccc -> \hskbondhoriz etc +\set@skel@bondh{#1}{j}{e}% bond between 3a and 7a \@jjj -> \hskbonde etc +\set@skel@bondh{#1}{i}{d}% bond between 7a and 1 \@iii -> \hskbondd etc +}% +{\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA + \let\ccc=\iii\let\bbb=\jjj% +\Put@Direct(0,-342){\set@skel@bondh{#1}{d}{a}}% + % bond between 3a and 4 \@ddd -> \hskbonda etc +\Put@Direct(0,-342){\set@skel@bondh{#1}{h}{c}}% + % bond between 7a and 7 \@hhh -> \hskbondc etc +\Put@Direct(0,-342){\set@skel@bondh{#1}{g}{d}}% + % bond between 6 and 7 \@ggg -> \hskbondd etc +\Put@Direct(0,-342){\set@skel@bondh{#1}{f}{e}}% + % bond between 5 and 6 \@fff -> \hskbonde etc +\Put@Direct(0,-342){\set@skel@bondh{#1}{e}{f}}% + % bond between 4 and 5 \@eee -> \hskbondf etc +}% +\endgroup +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\@tfor\member:=#2\do{% +\if\member r\relax% +{\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA% + \let\ccc=\iii\let\bbb=\jjj% + \Put@Direct(0,-342){\hbondb}% bond between 3a and 7a + \Put@Direct(0,-342){\hbondf}% bond between 4 and 5 + \Put@Direct(0,-342){\hbondd}% bond between 6 and 7 +}% +\else \if\member l\relax% +\else \if\member a\relax% + \Put@Direct(0,0){\hbondc}% bond between 3 and 4 +\else \if\member b\relax% + \Put@Direct(0,0){\hbondb}% bond between 2 and 3 +\else \if\member c\relax% + \Put@Direct(0,0){\hbondvert}% bond between 3 and 3a +\else \if\member d\relax% +{\let\aaa=\hhh \let\bbb=\jjj% + \Put@Direct(0,-342){\hbonda}% bond between 4 and 3a +}% +\else \if\member e\relax% +{\let\aaa=\hhh \let\fff=\gggA% + \Put@Direct(0,-342){\hbondf}% bond between 4 and 5 +}% +\else \if\member f\relax% +{\let\eee=\fff \let\fff=\gggA% + \Put@Direct(0,-342){\hbonde}% bond between 5 and 6 +}% +\else \if\member g\relax% +{\let\ddd=\eee \let\eee=\fff% + \Put@Direct(0,-342){\hbondd}% bond between 6 and 7 +}% +\else \if\member h\relax% +{\let\ccc=\iii \let\ddd=\eee% + \Put@Direct(0,-342){\hbondc}% bond between 7 and 7a +}% +\else \if\member i\relax% +{\let\eee=\iii% + \Put@Direct(0,0){\hbondd}% bond between 1 and 7a +}% +\else \if\member j\relax% +{\let\ccc=\iii\let\bbb=\jjj% + \Put@Direct(0,-342){\hbondb}% bond between 7a and 3a +}% +\else \if\member J\relax% +{\let\eee=\iii\let\fff=\jjj% + \Put@Direct(0,0){\hbonde}% bond between 7a and 3a +}% +\else \if\member B%left aromatic circle + \Put@oCircle(233,0){180}% %circle (five-membered) +\else \if\member A%left aromatic circle + \Put@oCircle(203,-342){240}% %circle (six-membered) +\else + \expandafter\twoCH@@R\member//% + \def\aax{3a}\def\aay{7a}% + \if\@@tmpa 1\relax% + \putratom{272}{-18}{\@@tmpb}% % right type + \else\if\@@tmpa 2\relax% + \putratom{233}{60}{\@@tmpb}% % right type + \else\if\@@tmpa 3\relax% + \putratom{120}{60}{\@@tmpb}% % right type + \else\if\@@tmpa 4\relax% + \putratom{68}{-360}{\@@tmpb}% % right type + \else\if\@@tmpa 5\relax% + \putratom{120}{-452}{\@@tmpb}% % right type + \else\if\@@tmpa 6\relax% + \putratom{233}{-452}{\@@tmpb}% % right type + \else\if\@@tmpa 7\relax% + \putratom{272}{-360}{\@@tmpb}% % right type + \else\if\@@tmpa 8\relax% + \putratom{120}{-110}{\@@tmpb}% % right type + \else\ifx\@@tmpa\aax\relax% + \putratom{120}{-110}{\@@tmpb}% % right type + \else\ifx\@@tmpa\aay\relax% + \putratom{233}{-110}{\@@tmpb}% % right type + \else\if\@@tmpa 9\relax% + \putratom{233}{-110}{\@@tmpb}% % right type + \else\if\@@tmpa 0\relax% + \putratom{196}{-30}{\@@tmpb}% % right type + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +% *********************** +% * setting fused rings * +% *********************** + \expandafter\twoCH@R\member//% + \set@fusion@nonah +\fi\fi\fi\fi\fi\fi\fi\fi\fi% +\fi\fi\fi\fi\fi\fi}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting hetero atoms % +% %%%%%%%%%%%%%%%%%%%%%%%% +\iniflag +\@tmpclipfalse +%position 7 should be treated before +%position 1 (using the same \if@clip) +\Put@Direct(0,-342){% +%%\@clipfalse%2003/5/1 bugfix by Shinsaku Fujita deleted/2006/9/5 +\set@hetatom@sixh{#3}{11}{3}{7}{-1}% +% \@gclipfalse \if@fclip \global\@gcliptrue \fi% +% \@fclipfalse \if@eclip \global\@fcliptrue \fi% +% \@eclipfalse \if@clip \global\@ecliptrue \fi% + \@gclipfalse \if@fclip \@gcliptrue \fi% + \@fclipfalse \if@eclip \@fcliptrue \fi% + \@eclipfalse \if@clip \@ecliptrue \fi% + \@clipfalse%2006/9/5added +\storeclipinfo +}%substituents on 5 to 7 +%%\developclipinfo%%2006/9/5 deleted +\Put@Direct(0,0){\set@hetatom@sixh{#3}{5}{1}{5}{-1}% +% \if@aclip \global\@acliptrue\fi +% \if@bclip \global\@bcliptrue\fi +% \if@cclip \global\@ccliptrue\fi +\storeclipinfo +}% %substituents on 1 to 3 +%%\developclipinfo%%2006/9/5 deleted +\Put@Direct(0,-342){\set@hetatom@sixh{#3}{-3}{0}{2}{0}% +% \@aclipfalse \if@aclip \global\@hcliptrue \fi% +% \@aclipfalse \if@aclip \@hcliptrue \fi + \@hclipfalse \if@aclip \@hcliptrue \fi%%2006/9/5 bugfix +\storeclipinfo +}%%substituent on 4 +%%\developclipinfo%%2006/9/5 deleted +\Put@Direct(0,0){\set@vrtx@nonafuseh{#3}% + \@iclipfalse%2006/9/5 bugfix by Shinsaku Fujita + \@jclipfalse%2006/9/5 bugfix by Shinsaku Fujita + \@tmpclipfalse +%% \if@iclip \global\@tmpcliptrue \fi +%% \if@jclip \global\@icliptrue \fi +%% \if@tmpclip \global\@jcliptrue \fi + \if@iclip \@tmpcliptrue \fi + \if@jclip \@icliptrue \else \@iclipfalse \fi + \if@tmpclip \@jcliptrue \else \@jclipfalse \fi +\storeclipinfo +%===\clipinfo=== +}% fused positions +\developclipinfo +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents and exocyclic bonds % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\Put@Direct(0,0){\setsixringh{#4}{5}{1}{5}{-1}}% %substituents on 1 to 3 +{\@clipfalse \if@eclip \@cliptrue \fi% %substituents on 5 to 7 + \@eclipfalse \if@fclip \@ecliptrue \fi% + \@fclipfalse \if@gclip \@fcliptrue \fi% +\Put@Direct(0,-342){\setsixringh{#4}{11}{3}{7}{-1}}% +}% +{\@aclipfalse \if@hclip \@acliptrue \fi% %substituent on 4 +\Put@Direct(0,-342){\setsixringh{#4}{-3}{0}{2}{0}}% +}% +{% +% \@clipfusefalse \if@iclip \@clipfusetrue \fi%change to the next line + \@clipfusefalse \if@jclip \@clipfusetrue \fi%2006/9/5 + \Put@Direct(303,-171){\setatombond{#4}{-8}{4}}% %9 for 7a position +}% +{% +% \@clipfusefalse \if@jclip \@clipfusetrue \fi%change to the next line + \@clipfusefalse \if@iclip \@clipfusetrue \fi%2006/9/5 + \Put@Direct(103,-171){\setatombond{#4}{-7}{10}}% %8 for 3a position +}% +\end{ShiftPicEnvB}% +\iniatom\iniflag}% %end of \nonaheteroh macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The macro |\set@vrtx@nonafuseh| is an inner command contained +% in the definition of |\nonaheteroh|, where the macro is used to set +% a hetero atom on a vertex of a bridgehead location. +% \changes{v2.00}{1998/12/05}{New command: \cs{set@vrtx@nonafuseh}} +% +% \begin{macro}{\set@vrtx@nonafuseh} +% \begin{macrocode} +\def\set@vrtx@nonafuseh#1{% +\@forsemicol\member:=#1\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\twoch@r\@membera{}% +\ifcase\@tmpa\or\or + \or%%%%3 + \if\@tmpb a% + \global\@icliptrue% + \putlatom{135}{-211}{\@memberb}% % left type + \else\if\@tmpb h% + \XyMTeXWarning{Forbidden fused position `3a' or `8'}% + \else\if\@tmpb s% + \XyMTeXWarning{Forbidden fused position `3a' or `8'}% + \else\ifx\@tmpb\empty\relax + \else + \XyMTeXWarning{Forbidden fused position `3a' or `8'}% + \fi\fi\fi\fi + \or\or\or + \or%7 + \if\@tmpb a% + \global\@jcliptrue% + \putratom{273}{-211}{\@memberb}% % right type + \else\if\@tmpb h% + \XyMTeXWarning{Forbidden fused position `7a' or `9'}% + \else\if\@tmpb s% + \XyMTeXWarning{Forbidden fused position `7a' or `9'}% + \else\ifx\@tmpb\empty\relax + \else + \XyMTeXWarning{Forbidden fused position `7a' or `9'}% + \fi\fi\fi\fi +\or%8 (= 3a) + \ifx\@tmpb\empty% + \global\@icliptrue% + \putlatom{135}{-211}{\@memberb}% % left type + \else + \XyMTeXWarning{Forbidden fused position `3a' or `8'}% + \fi +\or%9 (= 7a) + \ifx\@tmpb\empty% + \global\@jcliptrue% + \putratom{273}{-211}{\@memberb}% % right type + \else + \XyMTeXWarning{Forbidden fused position `7a' or `9'}% + \fi +\fi\fi}% +}% end of the macro \set@vrtx@nonafuseh +% \end{macrocode} +% \end{macro} +% +% \subsection{Inverse horizontal type} +% +% The standard skeleton of a six-to-five fused heterocycle is selected +% to have the following locant numbers. +% +% \begin{verbatim} +% ************************************ +% * nonahetero derivatives * +% * (horizontal type, inverse type) * +% ************************************ +% The following numbering is adopted in this macro. +% +% +% 2 3 +% +% 1 +% +% (9)7a 3a(8) +% +% 7 4 +% +% 6 5 +% ____ ____ +% |cf. | +% | 7 (9) 1 | +% | * 7a * | +% | 6 * * * * 2 | +% | | | | | +% | | | | | +% | 5 * * ----- 3 | +% | * 3a | +% | 4 (8) | +% | ^ | +% | | | +% | the original point | +% |____ ____| +% \end{verbatim} +% +% The macro |\nonaheterohi| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \nonaheterohi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] +% \end{verbatim} +% +% The |SKBONDLIST| argument contains pairs of two alphabets in +% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase +% character selected from bond specifiers `a' to `j' and a uppercase +% character `A' or `B'. +% +% The |BONDLIST| argument contains one +% character selected from a to j, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The options `A' and `B' represent aromatic circles in two rings. +% The option `$n+$' ($n=1$ to $9$) represents a plus charge on a hetero atom +% at the $n$-position. +% +% \begin{verbatim} +% +% BONDLIST: list of bonds +% +% none or r : aromatic six-membered ring +% [] : fully saturated form +% a : 1,2-double bond b : 2,3-double bond +% c : 3,3a-double bond d : 4,3a-double bond +% e : 4,5-double bond f : 5,6-double bond +% g : 6,7-double bond h : 7,7a-double bond +% i : 1,7a-double bond +% j : 3a,4a-double bond +% J : 3a,4a-double bond in the other ring +% A : aromatic circle (six-membered) +% B : aromatic circle (five-membered) +% {n+} : plus at the n-nitrogen atom (n = 1 to 9) +% {0+} : plus (or others) at the center +% of the five-membered cycle +% \end{verbatim} +% +% The |ATOMLIST| argument contains one or more heteroatom descriptors +% which are separated from each other by a semicolon. Each heteroatom +% descriptor consists of a locant number and a heteroatom, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% ATOMLIST: list of heteroatoms (max 9 atoms) +% +% for n = 1 to 7 +% +% n : Hetero atom, e.g. N, O, etc. at n-position +% e.g. 1==N for N at 1-position +% na : Hetero atom at 3a or 7b (n=3 or 7) +% e.g. 3a==N (or 8==N) for N at 4a-position +% 7a==N (or 9==N) for N at 8a-position +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 8 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% +% for 8 (3a position) and 9 (7a position) +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% \end{verbatim} +% +% The argument |OMIT| represents one or more bonds to be omitted. +% The omitted edges may be regarded as both fused and non-fused +% positions. +% +% \begin{verbatim} +% OMIT: one or more bonds omitted (a to j; see BONDLIST) +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \nonaheterohi{1==N}{1==Cl;2==F} +% \nonaheterohi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% +% The definition of |\nonaheterohi| uses a picture environment and +% consists of the same unit processes as shown in |\sixheteroh|: +% \begin{enumerate} +% \item treatment of atom list, +% \item placing outer skeletons, +% \item placing inner double bonds, +% \item setting hetero atoms, and +% \item placing substituents by using |\setsixringh| several times in +% a restricted fashion. +% \end{enumerate} +% \changes{v1.02}{1998/10/31}{Adding \cs{ylpositionh}, \cs{if@ylsw}, +% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/12/05}{Add: fused and spiro rings} +% \changes{v2.01}{2001/6/20}{The +% \cs{storeclipinfo} command is added.} +% +% \begin{macro}{\nonaheterohi} +% \begin{macro}{\@nona@heterohi} +% \begin{macro}{\@nona@@heterohi} +% \begin{macro}{\@nonaheterohi} +% \begin{macrocode} +\def\nonaheterohi{\@ifnextchar({\@nona@heterohi(@}{\@nona@heterohi(@)}} +\def\@nona@heterohi(#1){\@ifnextchar[{\@nona@@heterohi(#1)[@}% +{\@nona@@heterohi(#1)[@]}} +\def\@nona@@heterohi(#1)[#2]#3#4{\@ifnextchar[% +{\@nonaheterohi(#1)[#2]{#3}{#4}[@}% +{\@nonaheterohi(#1)[#2]{#3}{#4}[@]}} +\def\@nonaheterohi(#1)[#2]#3#4[#5]{% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%% +% % treatment of atom list % +% %%%%%%%%%%%%%%%%%%%%%%%%%% +\iniflag\iniatom%initialize +\test@vertix@nonavi{#3}% +% %%%%%%%%%%%%%%%%%%%%%%% +% % adjustment for (yl) % +% %%%%%%%%%%%%%%%%%%%%%%% +\@reset@ylsw% +\ylpositionh{#4}{0}{0}{4}{0}% %substituents on 1 to 3 +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +{\let\ddd=\eee\let\eee=\fff\let\fff=\gggA +\ylpositionh{#4}{0}{3}{7}{0}%%substituents on 4 to 6 +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{342}\fi +\else +{\let\aaa=\hhh +\ylpositionh{#4}{-6}{0}{2}{0}%%substituent on 7 +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{342}\fi +\else +{% +\clipdetection% +\@clipfusefalse \if@iclip \@clipfusetrue \fi% +\ylatombondposition{#4}{-7}{4}% %8 for 3a position +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-303}\def\@@yli{171}\fi +\else +{% +\clipdetection% +\@clipfusefalse \if@jclip \@clipfusetrue \fi% +\ylatombondposition{#4}{-8}{10}%%9 for 7a position +}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-103}\def\@@yli{171}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(1200,1200)(-400,-800){nonaheterohi}%2002/4/30 by S. Fujita +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +\begingroup +\resetbdsw% +\@bond@@omit{#5}% +{\let\fff=\jjj \let\eee=\iii% +\set@skel@bondh{#1}{a}{a}% bond between 1 and 2 \@aaa -> \hskbonda etc +\set@skel@bondh{#1}{b}{b}% bond between 2 and 3 \@bbb -> \hskbondb etc +\set@skel@longbond{#1}{c}{hskbondverti}% + % bond between 3 and 3a \@ccc -> \hskbondverti etc +\set@skel@bondh{#1}{j}{e}% bond between 3a and 7a \@jjj -> \hskbonde etc +\set@skel@bondh{#1}{i}{f}% bond between 7a and 1 \@iii -> \hskbondf etc +}% +{\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA% + \let\ccc=\iii\let\bbb=\jjj% +\Put@Direct(0,-342){\set@skel@bondh{#1}{h}{a}}% + % bond between 7a and 7 \@hhh -> \hskbonda etc +\Put@Direct(0,-342){\set@skel@bondh{#1}{d}{c}}% + % bond between 3a and 4 \@ddd -> \hskbondc etc +\Put@Direct(0,-342){\set@skel@bondh{#1}{e}{d}}% + % bond between 4 and 5 \@eee -> \hskbondd etc +\Put@Direct(0,-342){\set@skel@bondh{#1}{f}{e}}% + % bond between 5 and 6 \@fff -> \hskbonde etc +\Put@Direct(0,-342){\set@skel@bondh{#1}{g}{f}}% + % bond between 6 and 7 \@ggg -> \hskbondf etc +}% +\endgroup +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\@tfor\member:=#2\do{% +\if\member r\relax% +{\let\aaa=\hhh \let\ddd=\eee\let\eee=\fff\let\fff=\gggA% + \let\ccc=\iii\let\bbb=\jjj% + \Put@Direct(0,-342){\hbondb}% bond between 3a and 7a + \Put@Direct(0,-342){\hbondf}% bond between 6 and 7 + \Put@Direct(0,-342){\hbondd}% bond between 4 and 5 +}% +\else \if\member l\relax% +\else \if\member a\relax% + \Put@Direct(0,0){\hbonda}% bond between 1 and 2 +\else \if\member b\relax% + \Put@Direct(0,0){\hbondb}% bond between 2 and 3 +\else \if\member c\relax% + \Put@Direct(0,0){\hbondverti}% bond between 3 and 3a +\else \if\member d\relax% +{\let\ccc=\iii \let\ddd=\eee% + \Put@Direct(0,-342){\hbondc}% bond between 4 and 3a +}% +\else \if\member e\relax% +{\let\ddd=\eee\let\eee=\fff% + \Put@Direct(0,-342){\hbondd}% bond between 4 and 5 +}% +\else \if\member f\relax% +{\let\eee=\fff \let\fff=\gggA% + \Put@Direct(0,-342){\hbonde}% bond between 5 and 6 +}% +\else \if\member g\relax% +{\let\aaa=\hhh \let\fff=\gggA% + \Put@Direct(0,-342){\hbondf}% bond between 7 and 6 +}% +\else \if\member h\relax% +{\let\aaa=\hhh \let\bbb=\jjj% + \Put@Direct(0,-342){\hbonda}% bond between 7 and 7a +}% +\else \if\member i\relax% +{\let\fff=\jjj% + \Put@Direct(0,0){\hbondf}% bond between 1 and 7a +}% +\else \if\member j\relax% +{\let\ccc=\iii\let\bbb=\jjj% + \Put@Direct(0,-342){\hbondb}% bond between 7a and 3a +}% +\else \if\member J\relax% +{\let\eee=\iii\let\fff=\jjj% + \Put@Direct(0,0){\hbonde}% bond between 7a and 3a +}% +\else \if\member B%aromatic circle + \Put@oCircle(173,0){180}% %circle (five-membered) +\else \if\member A%aromatic circle + \Put@oCircle(203,-342){240}% %circle (six-membered) +\else + \expandafter\twoCH@@R\member//% + \def\aax{7a}\def\aay{3a}% + \if\@@tmpa 1\relax% + \putratom{68}{-18}{\@@tmpb}% % right type + \else\if\@@tmpa 3\relax% + \putratom{233}{60}{\@@tmpb}% % right type + \else\if\@@tmpa 2\relax% + \putratom{120}{60}{\@@tmpb}% % right type + \else\if\@@tmpa 7\relax% + \putratom{68}{-360}{\@@tmpb}% % right type + \else\if\@@tmpa 6\relax% + \putratom{120}{-452}{\@@tmpb}% % right type + \else\if\@@tmpa 5\relax% + \putratom{233}{-452}{\@@tmpb}% % right type + \else\if\@@tmpa 4\relax% + \putratom{272}{-360}{\@@tmpb}% % right type + \else\if\@@tmpa 9\relax% + \putratom{120}{-110}{\@@tmpb}% % right type + \else\ifx\@@tmpa\aax\relax% + \putratom{120}{-110}{\@@tmpb}% % right type + \else\ifx\@@tmpa\aay\relax% + \putratom{233}{-110}{\@@tmpb}% % right type + \else\if\@@tmpa 8\relax% + \putratom{233}{-110}{\@@tmpb}% % right type + \else\if\@@tmpa 0\relax% + \putratom{140}{-30}{\@@tmpb}% % right type + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +% *********************** +% * setting fused rings * +% *********************** + \expandafter\twoCH@R\member//% + \set@fusion@nonahi +\fi\fi\fi\fi\fi\fi\fi\fi\fi% +\fi\fi\fi\fi\fi\fi}% +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting hetero atoms % +% %%%%%%%%%%%%%%%%%%%%%%%% +\iniflag +\Put@Direct(0,0){\set@hetatom@sixh{#3}{0}{0}{4}{0}% +% \if@aclip \global\@acliptrue\fi +% \if@bclip \global\@bcliptrue\fi +% \if@cclip \global\@ccliptrue\fi +\storeclipinfo +}% %substituents on 1 to 3 +\developclipinfo +\Put@Direct(0,-342){\set@hetatom@sixh{#3}{0}{3}{7}{0}% +% \@gclipfalse \if@fclip \global\@gcliptrue \fi% +% \@fclipfalse \if@eclip \global\@fcliptrue \fi% +% \@eclipfalse \if@clip \global\@ecliptrue \fi + \@gclipfalse \if@fclip \@gcliptrue \fi% + \@fclipfalse \if@eclip \@fcliptrue \fi% + \@eclipfalse \if@clip \@ecliptrue \fi +\storeclipinfo +}%substituents on 4 to 6 +\developclipinfo +\Put@Direct(0,-342){% +\@aclipfalse\@bclipfalse\@cclipfalse%2003/05/01 bugfix by Shinsaku Fujita +\set@hetatom@sixh{#3}{-6}{0}{2}{0}% +% \@hclipfalse \if@aclip \global\@hcliptrue \fi + \@hclipfalse \if@aclip \@hcliptrue \fi +\storeclipinfo +}%%substituent on 7 +\developclipinfo +\Put@Direct(0,0){\set@vrtx@nonafusehi{#3}% +% \if@iclip \global\@icliptrue \fi +% \if@jclip \global\@jcliptrue \fi +\storeclipinfo +}% fused positions +\developclipinfo +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents and exocyclic bonds % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\Put@Direct(0,0){\setsixringh{#4}{0}{0}{4}{0}}% %substituents on 1 to 3 +{\@clipfalse \if@eclip \@cliptrue \fi% %substituents on 4 to 6 + \@eclipfalse \if@fclip \@ecliptrue \fi% + \@fclipfalse \if@gclip \@fcliptrue \fi% +\Put@Direct(0,-342){\setsixringh{#4}{0}{3}{7}{0}}% +}% +{\@aclipfalse \if@hclip \@acliptrue \fi% %substituent on 7 +\Put@Direct(0,-342){\setsixringh{#4}{-6}{0}{2}{0}}% +}% +{\@clipfusefalse \if@iclip \@clipfusetrue \fi% + \Put@Direct(303,-171){\setatombond{#4}{-7}{4}}% %8 for 3a position +}% +{\@clipfusefalse \if@jclip \@clipfusetrue \fi% + \Put@Direct(103,-171){\setatombond{#4}{-8}{10}}%%9 for 7a position +}% +\end{ShiftPicEnvB}% +\iniatom\iniflag}% %end of \nonaheterohi macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The command |\set@vrtx@nonafusehi| is to set an atom (stored as +% |\@memberb|) at one (stored as |\@tmpa|) of the fused vertices +% of a six-five ring. +% These vertices are incapable of accomodating a spiro group. +% On the other hand, the other positions can take spiro groups +% (stored as |\@memberb|), which are treated by means of +% the command |\set@hetatom@sixh|. +% The command |\set@vrtx@nonafusehi| is used in such commands +% as |\nonaheterohi| for treating thier ATOMLISTs, +% +% \begin{macro}{\set@vrtx@nonafusehi} +% \changes{v2.00}{1998/12/5}{New command: \cs{set@vrtx@nonafusehi}} +% \begin{macrocode} +\def\set@vrtx@nonafusehi#1{% +\@forsemicol\member:=#1\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\twoCH@R\@membera//% +\ifcase\@tmpa% + \or + \or + \or%%%%3 + \if\@tmpb a% + \global\@icliptrue% + \putratom{273}{-211}{\@memberb}% % right type + \else\relax + \fi + \or%4 + \or%5 + \or%6 + \or%7 + \if\@tmpb a% + \global\@jcliptrue% + \putlatom{135}{-211}{\@memberb}% % left type + \else\relax + \fi +\or%8 (= 3a) + \ifx\@tmpb\empty + \global\@icliptrue% + \putratom{273}{-211}{\@memberb}% % right type + \else + \XyMTeXWarning{Forbidden spiro ring for the 3a position}% + \fi +\or%9 (= 7a) + \ifx\@tmpb\empty + \global\@jcliptrue% + \putlatom{135}{-211}{\@memberb}% % left type + \else + \XyMTeXWarning{Forbidden spiro ring for the 7a position}% + \fi +\fi\fi}% +}% end of the macro \set@vrtx@nonafusehi +% \end{macrocode} +% \end{macro} +% +% \subsection{Short-cut commands for fused heterocycles} +% +% The macros |\nonaheteroh| and |\nonaheterohi| can be used in the +% form of a fixed |ATOMLIST|. Hence, the resulting commands for +% drawing a fused heterocyle with one or more nitrogen atoms +% have an argument |SUBSLIST| as well as an optional argument |BONDLIST|. +% +% \begin{verbatim} +% ********************************************************** +% * heterocycles having fused six- and five-membered rings * +% * (horizontal type) * +% ********************************************************** +% +% N-heterocycles: +% +% \indoleh[BONDLIST]{SUBSLIST} +% \indolehi[BONDLIST]{SUBSLIST} +% +% \isoindoleh[BONDLIST]{SUBSLIST} +% \isoindolehi[BONDLIST]{SUBSLIST} +% +% \indolizineh[BONDLIST]{SUBSLIST} +% \indolizinehi[BONDLIST]{SUBSLIST} +% (different from the IUPAC numbering) +% +% \purineh[BONDLIST]{SUBSLIST} +% \purinehi[BONDLIST]{SUBSLIST} +% (different from the IUPAC numbering) +% +% O-heterocycles: +% +% \benzofuraneh[BONDLIST]{SUBSLIST} +% \benzofuranehi[BONDLIST]{SUBSLIST} +% +% \isobenzofuranehi[BONDLIST]{SUBSLIST} +% +% \benzoxazoleh[BONDLIST]{SUBSLIST} +% \benzoxazolehi[BONDLIST]{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one +% character selected from a to j, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The optiona `A' typesets an aromatic circle. +% The option +% `$n+$' ($n=1$ to $9$) represents a plus charge on a hetero atom +% at the $n$-position. +% +% \begin{verbatim} +% BONDLIST: list of bonds +% +% none or r : aromatic six-membered ring +% [] : fully saturated form +% a : 1,2-double bond b : 2,3-double bond +% c : 3,3a-double bond d : 4,3a-double bond +% e : 4,5-double bond f : 5,6-double bond +% g : 6,7-double bond h : 7,7a-double bond +% i : 1,7a-double bond +% j : 3a,4a-double bond +% J : 3a,4a-double bond in the other ring +% A : aromatic circle +% {n+} : plus at the n-nitrogen atom (n = 1 to 9) +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 8 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% +% for 8 (3a position) and 9 (7a position) +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \indoleh{1==N}{1==Cl;2==F} +% \indoleh[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% +% \begin{macro}{\purineh} +% \begin{macro}{\purinehi} +% \begin{macrocode} +\def\purineh{\@ifnextchar[{\@purineh[@}{\@purineh[ra]}}% +\def\@purineh[#1]#2{% +\iforigpt \typeout{command `purineh' % + is based on `nonaheteroh'.}\fi% +\nonaheteroh[#1]{1==N;3==N;5==N;7==N}{#2}}% +\def\purinehi{\@ifnextchar[{\@purinehi[@}{\@purinehi[ra]}}% +\def\@purinehi[#1]#2{% +\iforigpt \typeout{command `purinehi' % + is based on `nonaheterohi'.}\fi% +\nonaheterohi[#1]{1==N;3==N;5==N;7==N}{#2}}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\indoleh} +% \begin{macro}{\indolehi} +% \begin{macrocode} +\def\indoleh{\@ifnextchar[{\@indoleh[@}{\@indoleh[rb]}}% +\def\@indoleh[#1]#2{% +\iforigpt \typeout{command `indoleh' % + is based on `nonaheteroh'.}\fi% +\nonaheteroh[#1]{1==N}{#2}}% +\def\indolehi{\@ifnextchar[{\@indolehi[@}{\@indolehi[rb]}}% +\def\@indolehi[#1]#2{% +\iforigpt \typeout{command `indolehi' % + is based on `nonaheterohi'.}\fi% +\nonaheterohi[#1]{1==N}{#2}}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\indolizineh} +% \begin{macro}{\indolizinehi} +% \begin{macrocode} +\def\indolizineh{% + \@ifnextchar[{\@indolizineh[@}{\@indolizineh[aceg]}}% +\def\@indolizineh[#1]#2{% +\iforigpt \typeout{command `indolizineh' % + is based on `nonaheteroh'.}\fi% +\nonaheteroh[#1]{7a==N}{#2}}% +\def\indolizinehi{% + \@ifnextchar[{\@indolizinehi[@}{\@indolizinehi[aceg]}}% +\def\@indolizinehi[#1]#2{% +\iforigpt \typeout{command `indolizinehi' % + is based on `nonaheterohi'.}\fi% +\nonaheterohi[#1]{7a==N}{#2}}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\isoindoleh} +% \begin{macro}{\isoindolehi} +% \begin{macrocode} +\def\isoindoleh{% + \@ifnextchar[{\@isoindoleh[@}{\@isoindoleh[cegi]}}% +\def\@isoindoleh[#1]#2{% +\iforigpt \typeout{command `isoindoleh' % + is based on `nonaheteroh'.}\fi% +\nonaheteroh[#1]{2==N}{#2}}% +\def\isoindolehi{% + \@ifnextchar[{\@isoindolehi[@}{\@isoindolehi[cegi]}}% +\def\@isoindolehi[#1]#2{% +\iforigpt \typeout{command `isoindolehi' % + is based on `nonaheterohi'.}\fi% +\nonaheterohi[#1]{2==N}{#2}}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\benzofuraneh} +% \begin{macro}{\benzofuranehi} +% \begin{macrocode} +\def\benzofuraneh{% + \@ifnextchar[{\@benzofuraneh[@}{\@benzofuraneh[rb]}}% +\def\@benzofuraneh[#1]#2{% +\iforigpt \typeout{command `benzofuraneh' % + is based on `nonaheteroh'.}\fi% +\nonaheteroh[#1]{1==O}{#2}}% +\def\benzofuranehi{% + \@ifnextchar[{\@benzofuranehi[@}{\@benzofuranehi[rb]}}% +\def\@benzofuranehi[#1]#2{% +\iforigpt \typeout{command `benzofuranehi' % + is based on `nonaheterohi'.}\fi% +\nonaheterohi[#1]{1==O}{#2}}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\isobenzofuraneh} +% \begin{macro}{\isobenzofuranehi} +% \begin{macrocode} +\def\isobenzofuraneh{\@ifnextchar[{\@isobenzofuraneh[@}% + {\@isobenzofuraneh[cegi]}}% +\def\@isobenzofuraneh[#1]#2{% +\iforigpt \typeout{command `isobenzofuraneh' % + is based on `nonaheteroh'.}\fi% +\nonaheteroh[#1]{2==O}{#2}}% +\def\isobenzofuranehi{\@ifnextchar[{\@isobenzofuranehi[@}% + {\@isobenzofuranehi[cegi]}}% +\def\@isobenzofuranehi[#1]#2{% +\iforigpt \typeout{command `isobenzofuranehi' % + is based on `nonaheterohi'.}\fi% +\nonaheterohi[#1]{2==O}{#2}}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\benzoxazoleh} +% \begin{macro}{\benzoxazolehi} +% \begin{macrocode} +\def\benzoxazoleh{% + \@ifnextchar[{\@benzoxazoleh[@}{\@benzoxazoleh[rb]}}% +\def\@benzoxazoleh[#1]#2{% +\iforigpt \typeout{command `benzoxazoleh' % + is based on `nonaheteroh'.}\fi% +\nonaheteroh[#1]{1==O;3==N}{#2}}% +\def\benzoxazolehi{% + \@ifnextchar[{\@benzoxazolehi[@}{\@benzoxazolehi[rb]}}% +\def\@benzoxazolehi[#1]#2{% +\iforigpt \typeout{command `benzoxazolehi' % + is based on `nonaheterohi'.}\fi% +\nonaheterohi[#1]{1==O;3==N}{#2}}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \section{Building blocks} +% \subsection{Six-membered ring unit} +% +% The old function (v1.01) of |\sixunitv| as a fusing ring unit +% is succeeded by |\sixfusev| and |\sixfusevi|. +% The command |\sixunitv| has been changed into a subsidiary +% command of |\sixheterov| (v2.00). +% +% The macro |\sixunith| is a six-membered fragment that can be +% fused to another +% ring structure to produce a new ring system. The following +% numbering is adopted in this macro. +% +% \begin{verbatim} +% ********************** +% * six-membered unit * +% * (horizontal type) * +% ********************** +% b +% 2 3 +% a ----- c +% * * +% the original point ===> 1 * * 4 +% (0,0) * * d +% f ----- +% 6 5 +% e +% \end{verbatim} +% +% The macro |\sixunith| has three arguments |ATOMLIST|, |SUBSLIST| +% and |OMIT| +% as well as an optional argument |BONDLIST|. +% +% \begin{verbatim} +% \sixunith[BONDLIST]{ATOMLIST}{SUBSLIST}{OMIT} +% \end{verbatim} +% +% The |BONDLIST| argument contains one +% character selected from a to f, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The option `$n+$' ($n=1$ to $6$) represents a plus charge on a hetero atom +% at the $n$-position. +% +% \begin{verbatim} +% BONDLIST = +% +% none : fully saturated +% a : 1,2-double bond +% b : 2,3-double bond +% c : 4,3-double bond +% d : 4,5-double bond +% e : 5,6-double bond +% f : 6,1-double bond +% {n+} : plus at the n-nitrogen atom (n = 1 to 6) +% \end{verbatim} +% +% The |ATOMLIST| argument contains one or more heteroatom descriptors +% which are separated from each other by a semicolon. Each heteroatom +% descriptor consists of a locant number and a heteroatom, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% ATOMLIST: list of heteroatoms (max 6 atoms) +% +% for n = 1 to 6 +% +% n : Hetero atom, e.g. N, O, etc. at n-position, +% e.g. 1==N for N at 1-position +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 6 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% \end{verbatim} +% +% The argument |OMIT| represents one bond to be omitted. +% The omitted edge is regarded as a fused position. +% +% \begin{verbatim} +% OMIT: one bond omitted (a, b, c, d, e, or f) +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \sixhunitv{1==N}{1==Cl;2==F}{e} +% \end{verbatim} +% +% The definition of |\sixunith| uses a picture environment and +% consists of the same unit processes as shown in |\sixheteroh|: +% \begin{enumerate} +% \item treatment of atom list, +% \item placing outer skeletons, +% \item placing inner double bonds, +% \item setting hetero atoms, and +% \item placing substituents by using |\setsixringh|. +% \end{enumerate} +% +% \begin{macro}{\sixunith} +% \begin{macro}{\@sixunith} +% \begin{macrocode} +\def\sixunith{\@ifnextchar[{\@sixunith[@}{\@sixunith[@]}} +\def\@sixunith[#1]#2#3#4{\sixheteroh[#1]{#2}{#3}[#4]} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \changes{v3.00}{2002/4/30}{\cs{sixunith}: Old definition deleted.} +% +% \subsection{Five-membered ring unit} +% \subsubsection{Horizonatl type} +% +% The old function (v1.01) of |\fiveunith| as a fusing ring unit +% is succeeded by |\fivefuseh|. +% The command |\fiveunith| has been changed into a subsidiary +% command of |\fiveheteroh| (v2.00). +% +% The macro |\fiveunith| is a five-membered fragment that can be +% fused to another +% ring structure to produce a new ring system. The following +% numbering is adopted in this macro. +% +% \begin{verbatim} +% ********************** +% * five-membered unit * +% * (horizontal type) * +% ********************** +% +% 3 _____ 2 +% | * +% | * 1 <===== the original point +% | * +% 4 ----- 5 +% \end{verbatim} +% +% The macro |\fiveunith| has three arguments |ATOMLIST|, |SUBSLIST| +% and |OMIT| +% as well as an optional argument |BONDLIST|. +% +% \begin{verbatim} +% \fiveunith[BONDLIST]{ATOMLIST}{SUBSLIST}{OMIT} +% \end{verbatim} +% +% The |BONDLIST| argument contains one +% character selected from a to e, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The option `$n+$' ($n=1$ to $5$) represents a plus charge on a hetero atom +% at the $n$-position. +% +% \begin{verbatim} +% BONDLIST: list of inner double bonds +% +% a : 1,2-double bond +% b : 2,3-double bond +% c : 4,3-double bond +% d : 4,5-double bond +% e : 5,1-double bond +% A : aromatic circle +% {n+} : plus at the n-nitrogen atom (n = 1 to 5) +% {0+} : plus (or others) at the center +% \end{verbatim} +% +% The |ATOMLIST| argument contains one or more heteroatom descriptors +% which are separated from each other by a semicolon. Each heteroatom +% descriptor consists of a locant number and a heteroatom, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% ATOMLIST: list of heteroatoms (max 5 atoms) +% +% for n = 1 to 5 +% +% n : Hetero atom, e.g. N, O, etc. at n-position +% e.g. 1==N for N at 1-position +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 5 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% \end{verbatim} +% +% The argument |OMIT| represents one bond to be omitted. +% The omitted edge is regarded as a fused position. +% +% \begin{verbatim} +% OMIT: one bond omitted (a, b, c, d, e, or f) +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \fiveunith{1==N}{1==H;2==F}{a} +% \end{verbatim} +% +% The definition of |\fiveunith| uses a picture environment and +% consists of the same unit processes as shown in |\sixheteroh|: +% \begin{enumerate} +% \item treatment of atom list, +% \item placing outer skeletons, +% \item placing inner double bonds, +% \item setting hetero atoms, and +% \item placing substituents by using |\setsixringh| partially. +% \end{enumerate} +% +% \begin{macro}{\fiveunith} +% \begin{macro}{\@fiveunith} +% \begin{macrocode} +\def\fiveunith{\@ifnextchar[{\@fiveunith[@}{\@fiveunith[r]}} +\def\@fiveunith[#1]#2#3#4{\fiveheteroh[#1]{#2}{#3}[#4]} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \changes{v3.00}{2002/4/30}{\cs{fiveunith}: Old definition deleted.} +% +% \subsubsection{Inverse horizontal type} +% +% The old function (v1.01) of |\fiveunithi| as a fusing ring unit +% is succeeded by |\fivefusehi|. +% The command |\fiveunithi| has been changed into a subsidiary +% command of |\fiveheterohi| (v2.00). +% +% The macro |\fiveunithi| typesets a five-membered fragment that can be +% fused to another +% ring structure to produce a new ring system. The following +% numbering is adopted in this macro. +% +% \begin{verbatim} +% ************************************ +% * five-membered unit * +% * (horizontal type, inverse type) * +% ************************************ +% +% 2 ----- 3 +% * | +% the original point 1 * | +% * | +% _____| +% 5 4 +% \end{verbatim} +% +% The macro |\fiveunithi| has three arguments |ATOMLIST|, |SUBSLIST| +% and |OMIT| +% as well as an optional argument |BONDLIST|. +% +% \begin{verbatim} +% \fiveunithi[BONDLIST]{ATOMLIST}{SUBSLIST}{OMIT} +% \end{verbatim} +% +% The |BONDLIST| argument contains one +% character selected from a to e, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The option `$n+$' ($n=1$ to $5$) represents a plus charge on a hetero atom +% at the $n$-position. +% +% \begin{verbatim} +% BONDLIST: list of inner double bonds +% +% a : 1,2-double bond +% b : 2,3-double bond +% c : 4,3-double bond +% d : 4,5-double bond +% e : 5,1-double bond +% A : aromatic circle +% {n+} : plus at the n-nitrogen atom (n = 1 to 5) +% {0+} : plus (or others) at the center +% \end{verbatim} +% +% The |ATOMLIST| argument contains one or more heteroatom descriptors +% which are separated from each other by a semicolon. Each heteroatom +% descriptor consists of a locant number and a heteroatom, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% ATOMLIST: list of heteroatoms (max 5 atoms) +% +% for n = 1 to 5 +% +% n : Hetero atom, e.g. N, O, etc. at n-position +% e.g. 1==N for N at 1-position +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 5 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% \end{verbatim} +% +% The argument |OMIT| represents one bond to be omitted. +% The omitted edge is regarded as a fused position. +% +% \begin{verbatim} +% OMIT: one bond omitted (a, b, c, d, e, or f) +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \fiveunithi{1==N}{1==H;2==F}{a} +% \end{verbatim} +% +% The definition of |\fiveunithi| uses a picture environment and +% consists of the same unit processes as shown in |\sixheteroh|: +% \begin{enumerate} +% \item treatment of atom list, +% \item placing outer skeletons, +% \item placing inner double bonds, +% \item setting hetero atoms, and +% \item placing substituents by using |\setsixringh| partially. +% \end{enumerate} +% +% \begin{macro}{\fiveunithi} +% \begin{macro}{\@fiveunithi} +% \begin{macrocode} +\def\fiveunithi{\@ifnextchar[{\@fiveunithi[@}{\@fiveunithi[r]}} +\def\@fiveunithi[#1]#2#3#4{\fiveheterohi[#1]{#2}{#3}[#4]} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \changes{v3.00}{2002/4/30}{\cs{fiveunithi}: Old definition deleted.} +% +% \section{Three-membered heterocycles} +% \subsection{Horizontal type} +% +% The macro |\threeheteroh| typesets a three-membered ring. The following +% numbering is adopted in this macro. +% +% \begin{verbatim} +% **************************** +% * thereehetero derivatives * +% * (horizontal type) * +% **************************** + +% aaa fff +% 3 +% | ` c +% b | 1 bbb ccc +% | / a +% 2/ +% ddd eee +% +% -- -- +% | cf. threeehetero | +% | fff 3--------2bbb | +% | ` / | +% | ddd `1/ <===== the original point | +% | | +% -- -- +% \end{verbatim} +% +% The macro |\threeheteroh| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \threeheteroh(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] +% \end{verbatim} +% +% The |SKBONDLIST| argument contains pairs of two alphabets in +% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase +% character selected from bond specifiers `a' to `c' and a uppercase +% character `A' or `B'. +% +% The |BONDLIST| argument contains one +% character selected from a to c, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The option `$n+$' ($n=1$ to $3$) represents a plus charge on a hetero atom +% at the $n$-position. +% The option `$n+$' ($n=4$ to $6$) represents a plus charge outside the ring. +% The option `$0+$' typesets a plus charge at the center of the ring. +% +% \begin{verbatim} +% BONDLIST = +% +% none : saturated +% a : 1,2-double bond +% b : 2,3-double bond +% c : 3,1-double bond +% A : aromatic circle +% {n+} : plus at the n-hetero atom (n = 1 to 3) +% : n=4 -- outer plus at 1 position +% : n=5 -- outer plus at 2 position +% : n=6 -- outer plus at 3 position +% {0+} : plus at the center of a cyclopropane ring +% \end{verbatim} +% +% The |ATOMLIST| argument contains one or more heteroatom descriptors +% which are separated from each other by a semicolon. Each heteroatom +% descriptor consists of a locant number and a heteroatom, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% ATOMLIST: list of heteroatoms (max 3 atoms) +% +% for n = 1 to 3 +% +% n : Hetero atom, e.g. N, O, etc. at n-position, +% e.g. 1==N for N at 1-position +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 3 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% \end{verbatim} +% +% The argument |OMIT| represents one or more bonds to be omitted. +% The omitted edges may be regarded as both fused and non-fused +% positions. +% +% \begin{verbatim} +% OMIT: one or more bonds omitted (a to c; see BONDLIST) +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \threeheteroh{1==N}{1==Cl;2==F} +% \threeheteroh[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \threeheteroh{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl} +% \end{verbatim} +% +% The definition of |\threeheteroh| uses a picture environment and +% consists of the same unit processes as shown in |\sixheterov|: +% \begin{enumerate} +% \item treatment of atom list, +% \item placing outer skeletons, +% \item placing inner double bonds, +% \item setting hetero atoms, and +% \item placing substituents by using |\setsixringv| partially. +% \end{enumerate} +% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw}, +% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/12/5}{Add: spiro and fused rings} +% \changes{v2.01}{2001/6/20}{The +% \cs{storeclipinfo} command is added.} +% +% \begin{macro}{\threeheteroh} +% \begin{macro}{\@three@heteroh} +% \begin{macro}{\@three@@heteroh} +% \begin{macro}{\@threeheteroh} +% \begin{macrocode} +\def\threeheteroh{\@ifnextchar({\@three@heteroh(@}{\@three@heteroh(@)}} +\def\@three@heteroh(#1){\@ifnextchar[{\@three@@heteroh(#1)[@}% +{\@three@@heteroh(#1)[@]}} +\def\@three@@heteroh(#1)[#2]#3#4{\@ifnextchar[% +{\@threeheteroh(#1)[#2]{#3}{#4}[@}% +{\@threeheteroh(#1)[#2]{#3}{#4}[@]}} +\def\@threeheteroh(#1)[#2]#3#4[#5]{% +% \end{macrocode} +% +% The procedure of adusting substitution positions is based on +% a horizontal six-membered ring, in which the positions +% 4 (ddd), 6 (fff), 2 (bbb) are used in place of the positions +% 1, 2, and 3 of the three-membered ring. +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%% +% % treatment of atom list % +% %%%%%%%%%%%%%%%%%%%%%%%%%% +\iniatom\iniflag%initialize +\test@vertix@sixv{#3}{d}{f}{b}{@}{@}{@}%tentative use for six-h +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % adustment of subs positions % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\@reset@ylsw% +\ylpositionh{#4}{3}{3}{5}{0}%subst 1 +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{235}\def\@@yli{-103}\fi +\else +\ylpositionh{#4}{-1}{1}{3}{0}%subst 3 +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{103}\def\@@yli{-29}\fi +\else +\ylpositionh{#4}{4}{5}{7}{0}%subst 2 +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{103}\def\@@yli{-171}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(580,700)(-200,-240){threeheteroh}% +(200,240)%2002/4/30 by S. Fujita +% \end{macrocode} +% +% The procedures of setting skeletal and inner bonds are based on +% a vertical six-membered ring, where the bonds c, e, and a are +% used in place of the bonds a, b, and c. Hence, +% (1) the bond a of the latter should be related to |\bbb| and |\ccc| at +% the one terminal and to |\eee| and |\ddd| at the other terminal; +% (2) the bond b of the latter should be related to |\eee| and |\ddd| at +% the one terminal and to |\aaa| and |\fff| at the other terminal; and +% (3) the bond c of the latter should be related to |\bbb| and |\ccc| at +% the one terminal and to |\aaa| and |\fff| at the other terminal. +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % retreatment of atom list % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%% +\iniatom\iniflag%initialize +\test@vertix@sixv{#3}{c}{e}{a}{@}{@}{@}% +\test@vertix@sixv{#3}{b}{d}{f}{@}{@}{@}% +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +{\resetbdsw% +\@bond@@omit{#5}% +\Put@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 +}% +% +% \Put@Direct(0,0){\skbondc}% bond between 1 and 2 +% \Put@Direct(0,-200){\skbonda}% bond between 1 and 3 +% \Put@Direct(171,-103){\skbonde}%bond between 2 and 3 +% \end{macrocode} +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\@tfor\member:=#2\do{% +\if\member r\relax% +\else\if\member a\relax\Put@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} +% +% The proceduce of setting hetero atoms on the vertices of +% a three-membered ring is based on the macro |\set@hetaromh@sixh|, +% where the positions 4, 6, and 2 of a horizontal six-membered ring +% are used in place of the positions 1, 2, and 3 of the three-membered ring. +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting hetero atoms % +% %%%%%%%%%%%%%%%%%%%%%%%% +\iniflag +%\Put@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{ShiftPicEnvB}% +\iniatom\iniflag}% %end of \threeheteroh macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The macro |\set@fusionadd@threeh| is an inner command contained +% in the definition of |\threeheteroh| etc., where +% the macro is used for setting an additive +% or a fused ring at each bond (designated by |\@@tmpa|). The +% fused ring is typeset by the inner command |\set@fusion@threeh|. +% +% \begin{macro}{\set@fusionadd@threeh} +% \changes{v2.00}{1998/12/5}{New command: \cs{set@fusionadd@threeh}} +% \begin{macrocode} +\def\set@fusionadd@threeh{% + \if\@@tmpa 0\relax% + \putratom{35}{85}{\scriptsize\@@tmpb}% % right type + \else\if\@@tmpa 1\relax% + \putratom{80}{85}{\scriptsize\@@tmpb}% % right type + \else\if\@@tmpa 2\relax% + \putratom{15}{50}{\scriptsize\@@tmpb}% % right type + \else\if\@@tmpa 3\relax% + \putratom{15}{120}{\scriptsize\@@tmpb}% % right type + \else\if\@@tmpa 4\relax% + \putratom{180}{130}{\scriptsize\@@tmpb}% % right type + \else\if\@@tmpa 5\relax% + \putratom{20}{-60}{\scriptsize\@@tmpb}% % right type + \else\if\@@tmpa 6\relax% + \putratom{20}{230}{\scriptsize\@@tmpb}% % right type + \else +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% + \set@fusion@threeh + \fi\fi\fi\fi\fi\fi\fi% +}% +% \end{macrocode} +% \end{macro} +% +% The inner command |\set@fusion@threeh| is used for typesetting +% a fused ring at each bond represented by |\@@tmpa|. Warnings +% concerning mismatched ring-fusions are based on the command +% |\FuseWarning|. +% +% \begin{macro}{\set@fusion@threeh} +% \changes{v2.00}{1998/12/5}{New command: \cs{set@fusion@threeh}} +% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring} +% \begin{macrocode} +\def\set@fusion@threeh{% +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% +\if\@@tmpa b\relax% + \putlratom{0}{0}{\@@tmpb}% % bond fused + \FuseWarning{0}{-200}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}% + \else\if\@@tmpa B\relax% + \putlratom{0}{200}{\@@tmpb}% % bond fused + \FuseWarning{0}{200}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}% + \else\if\@@tmpa a\relax% + \putlratom{171}{103}{\@@tmpb}% % bond fused + \FuseWarning{171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}% + \else\if\@@tmpa A\relax% + \putlratom{0}{0}{\@@tmpb}% % bond fused + \FuseWarning{-171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}% + \else\if\@@tmpa c\relax% + \putlratom{0}{200}{\@@tmpb}% % bond fused + \FuseWarning{-171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c}% + \else\if\@@tmpa C\relax% + \putlratom{171}{103}{\@@tmpb}% % bond fused + \FuseWarning{171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C}% +\fi\fi\fi\fi\fi\fi% +\global\let\FuseWarning=\FuseW@rning%added 2010/10/01 +}% end of the macro \set@fusion@threeh +% \end{macrocode} +% \end{macro} +% +% \changes{v5.01}{2013/3/19}{added \cs{oxiraneh}, \cs{aziridineh}, and \cs{thiiraneh} } +% \begin{macro}{\oxiraneh} +% \begin{macro}{\aziridineh} +% \begin{macro}{\thiiraneh} +% \begin{macrocode} +\def\oxiraneh{\@ifnextchar[{\@oxiraneh[@}{\@oxiraneh[]}} +\def\@oxiraneh[#1]#2{% +\iforigpt \typeout{command `oxiraneh' % + is based on `threeheteroh'.}\fi% +\threeheteroh[#1]{1==O}{#2}} +\def\aziridineh{\@ifnextchar[{\@aziridineh[@}{\@aziridineh[]}} +\def\@aziridineh[#1]#2{% +\iforigpt \typeout{command `aziridineh' % + is based on `threeheteroh'.}\fi% +\threeheteroh[#1]{1==N}{#2}} +\def\thiiraneh{\@ifnextchar[{\@thiiraneh[@}{\@thiiraneh[]}} +\def\@thiiraneh[#1]#2{% +\iforigpt \typeout{command `thiiraneh' % + is based on `threeheteroh'.}\fi% +\threeheteroh[#1]{1==S}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Inverse horizontal type} +% +% The macro |\threeheterohi| typesets a three-membered ring. The following +% numbering is adopted in this macro. +% +% \begin{verbatim} +% ******************************* +% * thereehetero derivatives * +% * (vertical horizontal type) * +% ******************************* +% +% aaa bbb +% c 3 +% / | +% eee 1 | b +% fff a` | +% 2 <---original point +% ccc ddd +% \end{verbatim} +% +% The macro |\threeheterohi| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% Two optional arguments |SKBONDLIST| and |OMIT| are added to +% treat stereochemical information or other bond situations. +% +% \begin{verbatim} +% \threeheterohi(SKBONDLIST)[BONDLIST]{ATOMLIST}{SUBSLIST}[OMIT] +% \end{verbatim} +% +% The |SKBONDLIST| argument contains pairs of two alphabets in +% parentheses, e.g. (\{bA\}\{fB\}). Each pair contains a lowercase +% character selected from bond specifiers `a' to `c' and a uppercase +% character `A' or `B'. +% +% The |BONDLIST| argument contains one +% character selected from a to c, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The option `$n+$' ($n=1$ to $3$) represents a plus charge on a hetero atom +% at the $n$-position. +% The option `$n+$' ($n=4$ to $6$) represents a plus charge outside the ring. +% The option `$0+$' typesets a plus charge at the center of the ring. +% +% \begin{verbatim} +% BONDLIST = +% +% none : saturated +% a : 1,2-double bond +% b : 2,3-double bond +% c : 3,1-double bond +% A : aromatic circle +% {n+} : plus at the n-hetero atom (n = 1 to 3) +% : n=4 -- outer plus at 1 position +% : n=5 -- outer plus at 2 position +% : n=6 -- outer plus at 3 position +% {0+} : plus at the center of a cyclopropane ring +% \end{verbatim} +% +% The |ATOMLIST| argument contains one or more heteroatom descriptors +% which are separated from each other by a semicolon. Each heteroatom +% descriptor consists of a locant number and a heteroatom, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% ATOMLIST: list of heteroatoms (max 3 atoms) +% +% for n = 1 to 3 +% +% n : Hetero atom, e.g. N, O, etc. at n-position, +% e.g. 1==N for N at 1-position +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 3 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% nSd : alpha single bond at n-atom (dotted line) +% with an alternative direction to nSA +% nSu : beta single bond at n-atom (boldface) +% with an alternative direction to nSB +% nFA : alpha single bond at n-atom (dotted line) +% for ring fusion +% nFB : beta single bond at n-atom (boldface) +% for ring fusion +% nGA : alpha single bond at n-atom (dotted line) +% for the other ring fusion +% nGB : beta single bond at n-atom (boldface) +% for the other ring fusion +% \end{verbatim} +% +% The argument |OMIT| represents one or more bonds to be omitted. +% The omitted edges may be regarded as both fused and non-fused +% positions. +% +% \begin{verbatim} +% OMIT: one or more bonds omitted (a to c; see BONDLIST) +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \threeheterohi{1==N}{1==Cl;2==F} +% \threeheterohi[c]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \threeheterohi{1==N}{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl} +% \end{verbatim} +% +% \changes{v1.02}{1998/10/31}{Adding \cs{ylposition}, \cs{if@ylsw}, +% \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, +% \cs{yl@xdiff} and \cs{yl@ydiff}} +% \changes{v2.00}{1998/12/5}{Add: spiro and fused rings} +% \changes{v2.01}{2001/6/20}{The +% \cs{storeclipinfo} command is added.} +% +% \begin{macro}{\threeheterohi} +% \begin{macro}{\@three@heterohi} +% \begin{macro}{\@three@@heterohi} +% \begin{macro}{\@threeheterohi} +% \begin{macrocode} +\def\threeheterohi{\@ifnextchar({\@three@heterohi(@}{\@three@heterohi(@)}} +\def\@three@heterohi(#1){\@ifnextchar[{\@three@@heterohi(#1)[@}% +{\@three@@heterohi(#1)[@]}} +\def\@three@@heterohi(#1)[#2]#3#4{\@ifnextchar[% +{\@threeheterohi(#1)[#2]{#3}{#4}[@}% +{\@threeheterohi(#1)[#2]{#3}{#4}[@]}} +\def\@threeheterohi(#1)[#2]#3#4[#5]{% +% \end{macrocode} +% +% The procedure of adusting substitution positions is based on +% a horizontal six-membered ring, in which the positions +% 1 (aaa), 5 (eee), 3 (ccc) are used in place of the positions +% 1, 2, and 3 of the three-membered ring. +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%% +% % treatment of atom list % +% %%%%%%%%%%%%%%%%%%%%%%%%%% +\iniatom\iniflag%initialize +\test@vertix@sixv{#3}{a}{e}{c}{@}{@}{@}%tentative use for six-h +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % adustment of subs positions % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\@reset@ylsw% +\ylpositionh{#4}{0}{0}{2}{0}%subst 1 +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{171}\def\@@yli{-103}\fi +\else +\ylpositionh{#4}{0}{2}{4}{0}%subst 3 +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{303}\def\@@yli{-29}\fi +\else +\ylpositionh{#4}{3}{4}{6}{0}%subst 2 +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{303}\def\@@yli{-171}\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(580,700)(-400,-240){threeheterohi}% +(400,240)%2002/4/30 by S. Fujita +% \end{macrocode} +% +% The procedures of setting skeletal and inner bonds are based on +% a vertical six-membered ring, where the bonds d, b, and f are +% used in place of the bonds a, b, and c. +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % retreatment of atom list % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%% +\iniatom\iniflag%initialize +\test@vertix@sixv{#3}{e}{c}{a}{@}{@}{@}% +\test@vertix@sixv{#3}{f}{d}{b}{@}{@}{@}% +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% +{\resetbdsw% +\@bond@@omit{#5}% +\Put@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} +% +% The proceduce of setting hetero atoms on the vertices of +% a three-membered ring is based on the macro |\set@hetaromh@sixh|, +% where the positions 1, 5, and 3 of a horizontal six-membered ring +% are used in place of the positions 1, 2, and 3 of the three-membered ring. +% +% \begin{macrocode} +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting hetero atoms % +% %%%%%%%%%%%%%%%%%%%%%%%% +\iniflag +\Put@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 +\developclipinfo +}%subst 3 <--six h 3 +\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{ShiftPicEnvB}% +\iniatom\iniflag}% %end of \threeheterohi macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The macro |\set@fusionadd@threehi| is an inner command contained +% in the definition of |\threeheterohi| etc., where +% the macro is used for setting an additive +% or a fused ring at each bond (designated by |\@@tmpa|). The +% fused ring is typeset by the inner command |\set@fusion@threehi|. +% +% \begin{macro}{\set@fusionadd@threeh} +% \changes{v2.00}{1998/12/5}{New command: \cs{set@fusionadd@threehi}} +% \begin{macrocode} +\def\set@fusionadd@threehi{% + \if\@@tmpa 0\relax% + \putlatom{-35}{85}{\scriptsize\@@tmpb}% % left type + \else\if\@@tmpa 1\relax% + \putlatom{-80}{85}{\scriptsize\@@tmpb}% % left type + \else\if\@@tmpa 2\relax% + \putlatom{-15}{50}{\scriptsize\@@tmpb}% % left type + \else\if\@@tmpa 3\relax% + \putlatom{-15}{120}{\scriptsize\@@tmpb}% % left type + \else\if\@@tmpa 4\relax% + \putlatom{-180}{130}{\scriptsize\@@tmpb}% % left type + \else\if\@@tmpa 5\relax% + \putlatom{-20}{-60}{\scriptsize\@@tmpb}% % left type + \else\if\@@tmpa 6\relax% + \putlatom{-20}{230}{\scriptsize\@@tmpb}% % left type + \else +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% + \set@fusion@threehi + \fi\fi\fi\fi\fi\fi\fi% +}% +% \end{macrocode} +% \end{macro} +% +% The inner command |\set@fusion@threehi| is used for typesetting +% a fused ring at each bond represented by |\@@tmpa|. Warnings +% concerning mismatched ring-fusions are based on the command +% |\FuseWarning|. +% +% \begin{macro}{\set@fusion@threehi} +% \changes{v2.00}{1998/12/5}{New command: \cs{set@fusion@threehi}} +% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring} +% \begin{macrocode} +\def\set@fusion@threehi{% +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% +\if\@@tmpa b\relax% + \putlratom{0}{0}{\@@tmpb}% % bond fused + \FuseWarning{0}{-200}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}% + \else\if\@@tmpa B\relax% + \putlratom{0}{200}{\@@tmpb}% % bond fused + \FuseWarning{0}{200}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}% + \else\if\@@tmpa a\relax% + \putlratom{-171}{103}{\@@tmpb}% % bond fused + \FuseWarning{-171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}% + \else\if\@@tmpa A\relax% + \putlratom{0}{0}{\@@tmpb}% % bond fused + \FuseWarning{171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}% + \else\if\@@tmpa c\relax% + \putlratom{0}{200}{\@@tmpb}% % bond fused + \FuseWarning{171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c}% + \else\if\@@tmpa C\relax% + \putlratom{-171}{103}{\@@tmpb}% % bond fused + \FuseWarning{-171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C}% +\fi\fi\fi\fi\fi\fi% +\global\let\FuseWarning=\FuseW@rning%added 2010/10/01 +}% end of the macro \set@fusion@threehi +%</hetaromh> +% \end{macrocode} +% \end{macro} +% +% \changes{v5.01}{2013/3/19}{added \cs{oxiranehi}, \cs{aziridinehi}, and \cs{thiiranehi} } +% \begin{macro}{\oxiranehi} +% \begin{macro}{\aziridinehi} +% \begin{macro}{\thiiranehi} +% \begin{macrocode} +\def\oxiranehi{\@ifnextchar[{\@oxiranehi[@}{\@oxiranehi[]}} +\def\@oxiranehi[#1]#2{% +\iforigpt \typeout{command `oxiranehi' % + is based on `threeheterohi'.}\fi% +\threeheterohi[#1]{1==O}{#2}} +\def\aziridinehi{\@ifnextchar[{\@aziridinehi[@}{\@aziridinehi[]}} +\def\@aziridinehi[#1]#2{% +\iforigpt \typeout{command `aziridinehi' % + is based on `threeheterohi'.}\fi% +\threeheterohi[#1]{1==N}{#2}} +\def\thiiranehi{\@ifnextchar[{\@thiiranehi[@}{\@thiiranehi[]}} +\def\@thiiranehi[#1]#2{% +\iforigpt \typeout{command `thiiranehi' % + is based on `threeheterohi'.}\fi% +\threeheterohi[#1]{1==S}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \Finale +% +\endinput diff --git a/Master/texmf-dist/source/latex/xymtex/base/hetaromh.ins b/Master/texmf-dist/source/latex/xymtex/base/hetaromh.ins new file mode 100644 index 00000000000..bb8486a8e4b --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/hetaromh.ins @@ -0,0 +1,58 @@ +\def\batchfile{hetaromh.ins} +\input docstrip.tex +\preamble + +This is a generated file. + +Copyright 1996,1998,2000,2001,2002, 2004, 2006, 2010, 2013 by Shinsaku Fujita +all rights reserved. +This style file is created for drawing chemical structural formulas +This style file is to be contained in the ``xymtex'' directory which +is an input directory for TeX. + +This file is part of the XyMTeX system. +======================================= + +Old Versions: +Version 1.01 Released on August 16, 1996 +Version 1.02 Released on October 31, 1996 (private version) +Version 2.00 Released on December 25, 1998 +Version 2.00a Released on November 11, 2000 +Version 2.01 Released on June 20, 2001 (private version) +Version 3.00 Released on April 30, 2002 +Version 4.00 Released on May 30, 2002 (private version) +Version 4.01 Released on August 30, 2004 +Version 4.02 Released on December 20, 2004 +Version 4.03b Released on September 5, 2006 +Version 5.00 Released on October 01, 2010 + +The Present Version: +Version 5.01 Released on March 19, 2013 + +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 hetaromh.dtx and hetaromh.ins +and the derived file hetaromh.sty. + +======================================= + +\endpreamble + +\keepsilent + +\generateFile{hetaromh.drv}{t}{% + \from{hetaromh.dtx}{driver}} + +\generateFile{hetaromh.sty}{t}{% + \from{hetaromh.dtx}{hetaromh}} + +\endinput diff --git a/Master/texmf-dist/source/latex/xymtex/base/lewisstruc.dtx b/Master/texmf-dist/source/latex/xymtex/base/lewisstruc.dtx new file mode 100644 index 00000000000..c09cf229bb1 --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/lewisstruc.dtx @@ -0,0 +1,1242 @@ +% \iffalse meta-comment +%% File: lewisstruc.dtx +% +% Copyright 2009, 2010, 2013 by Shinsaku Fujita +% +% This file is part of XyMTeX system. +% ------------------------------------- +% +% This file (lewisstruc.sty) is a successor to: +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 1.00} +% \typeout{ -- Released December 1, 1993 by Shinsaku Fujita} +% Copyright (C) 1993 by Shinsaku Fujita, all rights reserved. +% +% This file is a part of the macro package ``XyMTeX'' which has been +% designed for typesetting chemical structural formulas. +% +% This file is to be contained in the ``xymtex'' directory which is +% an input directory for TeX. It is a LaTeX optional style file and +% should be used only within LaTeX, because several macros of the file +% are based on LaTeX commands. +% +% For the review of XyMTeX, see +% (1) Shinsaku Fujita, ``Typesetting structural formulas with the text +% formatter TeX/LaTeX'', Computers and Chemistry, in press. +% The following book deals with an application of TeX/LaTeX to +% preparation of manuscripts of chemical fields: +% (2) Shinsaku Fujita, ``LaTeX for Chemists and Biochemists'' +% Tokyo Kagaku Dozin, Tokyo (1993) [in Japanese]. +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% The Current Maintainer of this work is Shinsaku Fujita. +% +% This work consists of the files lewisstruc.dtx and lewisstruc.ins +% and the derived file lewisstruc.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 +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{lewisstruc} +% \def\versi@ndate{November 03, 2009} +% \def\versi@nno{ver1.00} +% \def\copyrighth@lder{SF}% Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{lewisstruc} +% \def\versi@ndate{October 01, 2010} +% \def\versi@nno{ver5.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \fi +% +% \CheckSum{1697} +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +% +% \setcounter{StandardModuleDepth}{1} +% +% \StopEventually{} +% \MakeShortVerb{\|} +% +% \iffalse +% \changes{v1.00}{2009/11/03}{first edition for LaTeX2e} +% \changes{v5.00}{2010/10/01}{the LaTeX Project Public License} +% \changes{v5.01}{2013/08/02}{bug fix} +% \fi +% +% \iffalse +%<*driver> +\NeedsTeXFormat{pLaTeX2e} +% \fi +\ProvidesFile{lewisstruc.dtx}[2013/08/02 v5.01 lewisstruc package file] +% \iffalse +\documentclass{ltxdoc} +\GetFileInfo{lewisstruc.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{Lewis Structures by {\sffamily lewisstruc.sty} +(\fileversion) of \XyMTeX{}} +\author{Shinsaku Fujita \\ +Shonan Institute of Chemoinformatics and +Mathematical Chemistry \\ +Kanagawa, 258-0019 Japan +} +\date{\filedate} +% +\begin{document} + \maketitle + \DocInput{lewisstruc.dtx} +\end{document} +%</driver> +% \fi +% +% \section{Introduction}\label{lewisstruc:intro} +% +% \subsection{Options for {\sffamily docstrip}} +% +% \DeleteShortVerb{\|} +% \begin{center} +% \begin{tabular}{|l|l|} +% \hline +% \emph{option} & \emph{function}\\ \hline +% lewisstruc & lewisstruc.sty \\ +% driver & driver for this dtx file \\ +% \hline +% \end{tabular} +% \end{center} +% \MakeShortVerb{\|} +% +% \subsection{Version Information} +% +% \begin{macrocode} +%<*lewisstruc> +\typeout{Part of XyMTeX for Drawing Chemical Structural Formulas. Version 5.01} +\typeout{ -- Released August 02, 2013 by Shinsaku Fujita} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\j@urnalname{lewisstruc} +\def\versi@ndate{August 02, 2013} +\def\versi@nno{ver5.01} +\def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\typeout{XyMTeX Macro File `\j@urnalname' (\versi@nno) <\versi@ndate>% +\space[\copyrighth@lder]} +% \end{macrocode} +% +% The definition of the macro \verb/\LewisTetrahedralA/ uses the command +% \verb/\tetrahedral/ defined in the \textsf{aliphat} package of +% the \XyMTeX{} system. +% +% \begin{macrocode} +\RequirePackage{aliphat} +%\@ifundefined{tetrahedral}{\input aliphat.sty\relax}{} +% \end{macrocode} +% +% \section{Basic Macros} +% \subsection{Lone Pairs} +% +% \begin{macro}{\dotnodimension} +% A basic command \verb/\dotnodimension/ is used to draw a dot (an electron). +% \begin{macrocode} +\def\dotnodimension{\smash{\hbox to0pt{\hss.\hss}}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\verticalpair} +% The command \verb/\verticalpair/ is used to draw a vertical lone pair. +% \begin{macro}{\horizontalpair} +% The command \verb/\horizontalpair/ is used to draw a vertical lone pair. +% \begin{macrocode} +\def\verticalpair{\vbox{% +\dotnodimension +\nointerlineskip +\kern0.3em +\dotnodimension}} +\def\horizontalpair{% +\hbox{\dotnodimension\kern0.3em\dotnodimension}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\nwlonepair} +% The command \verb/\nwlonepair/ is used to draw a lone pair located at +% the northwest position. +% \begin{macro}{\selonepair} +% The command \verb/\selonepair/ is used to draw a lone pair at +% the southest posistion. +% \begin{macro}{\swlonepair} +% The command \verb/\swlonepair/ is used to draw a lone pair at +% the southwest position. +% \begin{macro}{\nelonepair} +% The command \verb/\nelonepair/ is used to draw a lone pair at +% the northeast position. +% \begin{macrocode} +\def\nwlonepair{% +\vtop{\hbox to0.21em{\hss\dotnodimension}% +\nointerlineskip +\kern0.21em +\hbox to0.21em{\dotnodimension\hss}% +}} +\def\selonepair{% +\vbox{\hbox to0.21em{\hss\dotnodimension}% +\nointerlineskip +\kern0.21em +\hbox to0.21em{\dotnodimension\hss}% +}} +\def\swlonepair{% +\vbox{\hbox to0.21em{\dotnodimension\hss}% +\nointerlineskip +\kern0.21em +\hbox to0.21em{\hss\dotnodimension}% +}} +\def\nelonepair{% +\vtop{\hbox to0.21em{\dotnodimension\hss}% +\nointerlineskip +\kern0.21em +\hbox to0.21em{\hss\dotnodimension}% +}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\LewisSbond} +% The command \verb/\LewisSbond/ is used to draw a vertical lone pair +% used in a horizontal position. For example, \verb/H\LewisSbond H/ +% outputs H:H for representing a hydrogen molecule. +% \begin{macrocode} +\def\LewisSbond{\raise0.12em\hbox to0.25em{\hss\verticalpair\hss}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\overpair} +% The command \verb/\overpair/ is used to draw a horizontal lone pair +% at the head of an atom specified by its argument. +% \begin{macro}{\underpair} +% The command \verb/\underpair/ is used to draw a horizontal lone pair +% under an atom specified by its argument. +% \begin{macrocode} +\def\overpair#1{\leavevmode\setbox0=\hbox{#1}% +\vbox{\hbox to\wd0{\hss\horizontalpair\hss}% +\nointerlineskip\kern0.08em +\box0}} +\def\underpair#1{\leavevmode\setbox0=\hbox{#1}% +\dimen0=\wd0 +\vbox to\ht0{\box0 +\nointerlineskip +\hbox{\vbox to0pt{\kern0.2em +\hbox to\dimen0{\hss\horizontalpair\hss}\vss}}% +\vss}}%bug fix 2013/08/02 \vss added +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Atoms Linked by a Lewis Bond} +% +% An atom (\verb/OverAtom/) which is attached to the top of an atom (\verb/BaseAtom/) +% through a Lewis bond is drawn by the following \verb/\overpairover/ command. +% +% \begin{verbatim} +% \overpairover{BaseAtom}{OverAtom} +% \end{verbatim} +% +% \begin{macro}{\overpairover} +% \begin{macrocode} +\def\overpairover#1#2{\leavevmode\setbox0=\hbox{#1}% +\edef\temp@@a{#2}% +\dimen0=\wd0% +\ifx\temp@@a\empty\box0\else% +\vbox{% +\hbox to\dimen0{\hss#2\hss}% +\nointerlineskip\kern0.2em +\hbox to\dimen0{\hss\horizontalpair\hss}% +\nointerlineskip\kern0.08em +\hbox{\box0}}\fi} +% \end{macrocode} +% \end{macro} +% +% An atom (\verb/UnderAtom/) which is attached to the bottom of an atom (\verb/BaseAtom/) +% through a Lewis bond is drawn by the following \verb/\overpairover/ command. +% +% \begin{verbatim} +% \underpairunder{BaseAtom}{UnderAtom} +% \end{verbatim} +% +% \begin{macro}{\underpairunder} +% \begin{macrocode} +\def\underpairunder#1#2{\leavevmode\setbox0=\hbox{#1}% +\edef\temp@@a{#2}% +\dimen0=\wd0\dimen1=\ht0 +\ifx\temp@@a\empty\box0\else% +\vbox to\dimen1{\hbox{\box0}% +\nointerlineskip +\hbox{\vbox to0pt{\kern0.18em +\hbox to\dimen0{\hss\horizontalpair\hss}% +\nointerlineskip\kern0.08em +\hbox to\dimen0{\hss#2\hss}% +\vss}}% +\vss}\fi}%bug fix2013/08/02 +% \end{macrocode} +% \end{macro} +% +% +% An atom (\verb/NWAtom/) which is attached to the northwest of an atom (\verb/BaseAtom/) +% through a Lewis bond is drawn by the following \verb/\leftlonepairover/ command. +% +% \begin{verbatim} +% \leftlonepairover{BaseAtom}{NWAtom} +% \end{verbatim} +% +% \begin{macro}{\leftlonepairover} +% \begin{macrocode} +\def\leftlonepairover#1#2{\leavevmode% +\edef\temp@@{#2}% +\ifx\temp@@\empty#1\else +\hbox to0pt{\hss\raise0.9em\hbox{#2}\kern-0.05em\raise0.8em\hbox{\nwlonepair}\kern-0.1em}#1\fi} +% \end{macrocode} +% \end{macro} +% +% An atom (\verb/NEAtom/) which is attached to the northeast of an atom (\verb/BaseAtom/) +% through a Lewis bond is drawn by the following \verb/\rightlonepairover/ command. +% +% \begin{verbatim} +% \rightlonepairover{BaseAtom}{NEAtom} +% \end{verbatim} +% +% \begin{macro}{\rightlonepairover} +% \begin{macrocode} +\def\rightlonepairover#1#2{\leavevmode% +#1% +\edef\temp@@{#2}% +\ifx\temp@@\empty\else +\hbox to0pt{\kern-0.1em\raise0.8em\hbox{\nelonepair}\kern-0.05em% +\raise0.9em\hbox{#2}\hss}\fi} +% \end{macrocode} +% \end{macro} +% +% An atom (\verb/SWAtom/) which is attached to the southwest of an atom (\verb/BaseAtom/) +% through a Lewis bond is drawn by the following \verb/\leftlonepairunder/ command. +% +% \begin{verbatim} +% \leftlonepairunder{BaseAtom}{NEAtom} +% \end{verbatim} +% +% \begin{macro}{\leftlonepairunder} +% \begin{macrocode} +\def\leftlonepairunder#1#2{\leavevmode% +\edef\temp@@{#2}% +\ifx\temp@@\empty#1\else +\hbox to0pt{\hss\lower0.9em\hbox{#2}\kern-0.05em% +\lower0.2em\hbox{\swlonepair}\kern-0.1em}#1\fi} +% \end{macrocode} +% \end{macro} +% +% An atom (\verb/SEAtom/) which is attached to the southeast of an atom (\verb/BaseAtom/) +% through a Lewis bond is drawn by the following \verb/\rightlonepairunder/ command. +% +% \begin{verbatim} +% \rightlonepairunder{BaseAtom}{SEAtom} +% \end{verbatim} +% +% \begin{macro}{\rightlonepairunder} +% \begin{macrocode} +\def\rightlonepairunder#1#2{\leavevmode% +#1% +\edef\temp@@{#2}% +\ifx\temp@@\empty\else +\hbox to0pt{\kern-0.1em\lower0.2em\hbox{\selonepair}\kern-0.05em% +\lower0.9em\hbox{#2}\hss}\fi} +% \end{macrocode} +% \end{macro} +% +% +% Atoms (W, X, Y, and Z) which are attached to a central atom (A) +% through Lewis bonds are drawn by the following \verb/\LewistetrahedralA/ command. +% +% \begin{verbatim} +% \LewistetrahedralA{0==A;1==W;2==X;3==Y;4==Z} +% \end{verbatim} +% +% \begin{verbatim} +% 1 +% W +% : +% 4 Z : A : X 2 +% : +% Y +% 3 +% \end{verbatim} +% +% Each of the atoms can be omitted. +% +% \begin{macro}{\LewistetrahedralA} +% \begin{macrocode} +\def\LewistetrahedralA#1{\begingroup% +\let\temp@a=\empty% +\let\temp@b=\empty% +\let\temp@c=\empty% +\let\temp@d=\empty% +\let\temp@e=\empty% +\@forsemicol\member:=#1\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa \edef\temp@a{\@memberb}%central atom +\or\edef\temp@b{\@memberb}% +\or\edef\temp@c{\@memberb}% +\or\edef\temp@d{\@memberb}% +\or\edef\temp@e{\@memberb}% +\fi%end of ifcase +\fi\fi +}% +\leavevmode% +\ifx\temp@e\empty +\ifx\temp@c\empty +\underpairunder{\overpairover{\temp@a}{\temp@b}}{\temp@d}% +\else%c not empty +\underpairunder{\overpairover{\temp@a}{\temp@b}}{\temp@d}% +\LewisSbond\temp@c +\fi +\else%e not empty +\ifx\temp@c\empty +\temp@e\LewisSbond\underpairunder{\overpairover{\temp@a}{\temp@b}}{\temp@d}% +\else +\temp@e\LewisSbond\underpairunder{\overpairover{\temp@a}{\temp@b}}{\temp@d}% +\LewisSbond\temp@c +\fi\fi +\endgroup +} +% \end{macrocode} +% \end{macro} +% +% Atoms (W, X, Y, and Z) which are attached to a central atom (A) +% through Lewis bonds are drawn by the following \verb/\LewistetrahedralB/ command. +% +% \begin{verbatim} +% \LewistetrahedralB{0==A;1==W;2==X;3==Y;4==Z} +% \end{verbatim} +% +% \begin{verbatim} +% +% 4 Z W 1 +% : : +% A +% : : +% 3 Y X 2 +% +% \end{verbatim} +% +% Each of the atoms can be omitted. +% +% \begin{macro}{\LewistetrahedralB} +% \begin{macrocode} +\def\LewistetrahedralB#1{\begingroup% +\let\temp@a=\empty% +\let\temp@b=\empty% +\let\temp@c=\empty% +\let\temp@d=\empty% +\let\temp@e=\empty% +\@forsemicol\member:=#1\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa \edef\temp@a{\@memberb}%central atom +\or\edef\temp@b{\@memberb}% +\or\edef\temp@c{\@memberb}% +\or\edef\temp@d{\@memberb}% +\or\edef\temp@e{\@memberb}% +\fi%end of ifcase +\fi\fi +}% +\leavevmode% +\rightlonepairover{% +\leftlonepairover{\leftlonepairunder{% +\rightlonepairunder{\temp@a}{\temp@c}}{\temp@d}}{\temp@e}}{\temp@b}% +\endgroup} +% \end{macrocode} +% \end{macro} +% +% \subsection{Lone Pairs around an Atom} +% +% Four lone pairs which are attached to a central atom (A) +% are drawn by the following \verb/\lonepairAitoiv/ command, +% where each of the top four argumets takes 0 (absence) or 1 (presence) for +% representing the absence or presece of a lone pair. The larst argument +% represents the central atom. +% +% \begin{verbatim} +% \lonepairAitoiv{0 or 1}{0 or 1}{0 or 1}{0 or 1}{A} +% \end{verbatim} +% +% \begin{verbatim} +% 1 +% : +% 4 : A : 2 +% : +% 3 +% \end{verbatim} +% +% \begin{macro}{\lonepairAitoiv} +% \begin{macrocode} +\def\lonepairAitoiv#1#2#3#4#5{\leavevmode +\begingroup\setbox0=\hbox{#5}% +\dimen0=\ht0 +\dimen1=1.22\wd0% +\setbox1=\hbox to\wd0{\hss% +\smash{%\raise0.01em +\hbox to\wd0{\hss% +\ifnum#4=0\relax +\phantom{\lower0.05em\hbox to0pt{\hss\vbox to\dimen0{\vss\verticalpair\vss}}}% +\else +\lower0.05em\hbox to0pt{\hss\vbox to\dimen0{\vss\verticalpair\vss}}% +\fi% +\lower0.2em\hbox{\vbox{\ifnum#1=0\relax +\phantom{\hbox to\dimen1{\hss\horizontalpair\hss}}% +\else +\hbox to\dimen1{\hss\horizontalpair\hss}\fi% +\nointerlineskip +\kern0.08em +\hbox to\dimen1{\hss#5\hss}% +\nointerlineskip +\kern0.2em +\ifnum#3=0\relax +\phantom{\hbox to\dimen1{\hss\horizontalpair\hss}}% +\else +\hbox to\dimen1{\hss\horizontalpair\hss}% +\fi +}}% +\ifnum#2=0\relax +\phantom{\lower0.05em\hbox to0pt{\vbox to\dimen0{\vss\verticalpair\vss}\hss}}% +\else +\lower0.05em\hbox to0pt{\vbox to\dimen0{\vss\verticalpair\vss}\hss}\fi% +\hss}}\hss}% +\wd1=\wd0 \ht1=\ht0\box1\endgroup} +% \end{macrocode} +% \end{macro} +% +% A common code for transforming a command to another command is +% defined as the command \verb/\fromfourobjects/ +% +% \begin{macro}{\fromfourobjects} +% \begin{macrocode} +\def\fromfourobjects#1#2{% +\ifnum#1=1234\relax +\TEMP@Command{1}{1}{1}{1}{#2}% +\else\ifnum#1=123\relax +\TEMP@Command{1}{1}{1}{0}{#2}% +\else\ifnum#1=124\relax +\TEMP@Command{1}{1}{0}{1}{#2}% +\else\ifnum#1=134\relax +\TEMP@Command{1}{0}{1}{1}{#2}% +\else\ifnum#1=234\relax +\TEMP@Command{0}{1}{1}{1}{#2}% +\else\ifnum#1=12\relax +\TEMP@Command{1}{1}{0}{0}{#2}% +\else\ifnum#1=13\relax +\TEMP@Command{1}{0}{1}{0}{#2}% +\else\ifnum#1=14\relax +\TEMP@Command{1}{0}{0}{1}{#2}% +\else\ifnum#1=23\relax +\TEMP@Command{0}{1}{1}{0}{#2}% +\else\ifnum#1=24\relax +\TEMP@Command{0}{1}{0}{1}{#2}% +\else\ifnum#1=34\relax +\TEMP@Command{0}{0}{1}{1}{#2}% +\else\ifnum#1=1\relax +\TEMP@Command{1}{0}{0}{0}{#2}% +\else\ifnum#1=2\relax +\TEMP@Command{0}{1}{0}{0}{#2}% +\else\ifnum#1=3\relax +\TEMP@Command{0}{0}{1}{0}{#2}% +\else\ifnum#1=4\relax +\TEMP@Command{0}{0}{0}{1}{#2}% +\else +\TEMP@Command{1}{1}{1}{1}{#2}% +\fi\fi\fi\fi\fi +\fi\fi\fi\fi\fi +\fi\fi\fi\fi\fi} +% \end{macrocode} +% \end{macro} +% +% The command \verb/\lonepairAitoiv/ is converted into +% the command \verb/\lonepairA/, where four lone pairs are +% specified by a set of numbers 1234, 234, etc as an optional +% argument. The main argument specifies a central atom. +% +% \begin{verbatim} +% \lonepairA[1234, etc.]{A} +% \end{verbatim} +% +% \begin{verbatim} +% 1 +% : +% 4 : A : 2 +% : +% 3 +% \end{verbatim} +% +% \begin{macro}{\lonepairA} +% \begin{macrocode} +\def\lonepairA{\@ifnextchar[{\l@nepairA}{\l@nepairA[1234]}} +\def\l@nepairA[#1]#2{\leavevmode% +\begingroup\let\TEMP@Command=\lonepairAitoiv% +\fromfourobjects{#1}{#2}\endgroup} +% \end{macrocode} +% \end{macro} +% +% Four unpaired electron which are attached to a central atom (A) +% are drawn by the following \verb/\tetraradical/ command, +% where each of the top four argumets takes 0 (absence) or 1 (presence) for +% representing the absence or presece of an unpaired electron. The larst argument +% represents the central atom. +% +% \begin{verbatim} +% \tetraradical{0 or 1}{0 or 1}{0 or 1}{0 or 1}{A} +% \end{verbatim} +% +% \begin{verbatim} +% 1 +% . +% 4 . A . 2 +% . +% 3 +% \end{verbatim} +% +% \begin{macro}{\chemradical} +% \begin{macro}{\tetraradical} +% \begin{macrocode} +\def\chemradical{\hbox to0pt{\hss.\hss}} +\def\tetraradical#1#2#3#4#5{\leavevmode\setbox0=\hbox{#5}% +\dimen0=\ht0 +\dimen1=1.22\wd0% +\setbox1=\hbox to\wd0{\hss% +\smash{%\raise0.01em +\hbox to\wd0{\hss% +\ifnum#4=0\relax +\phantom{\raise0.02em\hbox to0pt{\hss\vbox to\dimen0{\vss\chemradical\vss}}}% +\else +\raise0.02em\hbox to0pt{\hss\vbox to\dimen0{\vss\chemradical\vss}}% +\fi% +%\kern0pt +\lower0.22em\hbox{\vbox{% +\ifnum#1=0\relax +\phantom{\hbox to\dimen1{\hss\chemradical\hss}}% +\else +\hbox to\dimen1{\hss\chemradical\hss}\fi% +\nointerlineskip +\kern0.08em +\hbox to\dimen1{\hss#5\hss}% +\nointerlineskip +%\kern0.2em +\kern0.12em +\ifnum#3=0\relax +\phantom{\hbox to\dimen1{\hss\chemradical\hss}}% +\else +\hbox to\dimen1{\hss\chemradical\hss}% +\fi +}}% +%\kern0pt +\ifnum#2=0\relax +\phantom{\raise0.02em\hbox to0pt{\vbox to\dimen0{\vss\chemradical\vss}\hss}}% +\else +\raise0.02em\hbox to0pt{\vbox to\dimen0{\vss\chemradical\vss}\hss}\fi% +\hss}}\hss}% +\wd1=\wd0 \ht1=\ht0\box1} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The command \verb/\tetraradical/ is converted into +% the command \verb/\chemradicalA/, where four unpaired electrons are +% specified by a set of numbers 1234, 234, etc. as an optional +% argument. The main argument specifies a central atom. +% +% \begin{verbatim} +% \chemradicalA[1234, etc.]{A} +% \end{verbatim} +% +% \begin{verbatim} +% 1 +% . +% 4 . A . 2 +% . +% 3 +% \end{verbatim} +% +% \begin{macro}{\chemradicalA} +% \begin{macrocode} +\def\chemradicalA{\@ifnextchar[{\chemr@dicalA}{\chemr@dicalA[1234]}} +\def\chemr@dicalA[#1]#2{\leavevmode +\begingroup\let\TEMP@Command=\tetraradical% +\fromfourobjects{#1}{#2}\endgroup} +% \end{macrocode} +% \end{macro} +% +% Four lone pairs which are attached to a central atom (A) in another mode +% are drawn by the following \verb/\lonepairBitoiv/ command, +% where each of the top four argumets takes 0 (absence) or 1 (presence) for +% representing the absence or presece of a lone pair. The larst argument +% represents the central atom. +% +% \begin{verbatim} +% \lonepairBitoiv{0 or 1}{0 or 1}{0 or 1}{0 or 1}{A} +% \end{verbatim} +% +% \begin{verbatim} +% 4 1 +% : : +% A +% : : +% 3 2 +% \end{verbatim} +% +% \begin{macro}{\lonepairBitoiv} +% \begin{macrocode} +\def\lonepairBitoiv#1#2#3#4#5{\begingroup\setbox0=\hbox{#5}% +\dimen0=\ht0 \dimen1=1.22\wd0% +\setbox1=\hbox to\wd0{\hss% +\smash{\lower0.04em\hbox to0pt{% +\hss\vbox to\dimen0{\vss% +\ifnum#4=0\relax \phantom{\nwlonepair}\else +\nwlonepair\fi% +\nointerlineskip +\kern0.45em +\ifnum#3=0\relax \phantom{\swlonepair}\else +\swlonepair\fi +\vss}\kern-0.2em}% +\hbox to\dimen1{\hss#5\hss}% +\lower0.04em\hbox to0pt{\kern-0.22em% +\vbox to\dimen0{\vss% +\ifnum#1=0\relax \phantom{\nelonepair}\else +\nelonepair\fi% +\nointerlineskip +\kern0.45em +\ifnum#2=0\relax \phantom{\selonepair}\else +\selonepair\fi\vss}\hss}% +}\hss}% +\ht1=\ht0\box1\endgroup} +% \end{macrocode} +% \end{macro} +% +% The command \verb/\lonepairBitoiv/ is converted into +% the command \verb/\lonepairB/, where four lone pairs are +% specified by a set of numbers 1234, 234, etc as an optional +% argument. The main argument specifies a central atom. +% +% \begin{verbatim} +% \lonepairB[1234, etc.]{A} +% \end{verbatim} +% +% \begin{verbatim} +% 4 1 +% : : +% A +% : : +% 3 2 +% \end{verbatim} +% +% \begin{macro}{\lonepairB} +% \begin{macrocode} +\def\lonepairB{\@ifnextchar[{\l@nepairB}{\l@nepairB[1234]}} +\def\l@nepairB[#1]#2{\leavevmode% +\begingroup\let\TEMP@Command=\lonepairBitoiv% +\fromfourobjects{#1}{#2}\endgroup} +% \end{macrocode} +% \end{macro} +% +% Four unpaired electron which are attached to a central atom (A) in an alternative mode +% are drawn by the following \verb/\tetraradicalB/ command, +% where each of the top four argumets takes 0 (absence) or 1 (presence) for +% representing the absence or presece of an unpaired electron. The larst argument +% represents the central atom. +% +% \begin{verbatim} +% \tetraradicalB{0 or 1}{0 or 1}{0 or 1}{0 or 1}{A} +% \end{verbatim} +% +% \begin{verbatim} +% 4 1 +% . . +% A +% . . +% 3 2 +% \end{verbatim} +% +% \begin{macro}{\tetraradicalB} +% \begin{macrocode} +\def\tetraradicalB#1#2#3#4#5{\setbox0=\hbox{#5}% +\dimen0=\ht0 \dimen1=1.22\wd0% +\setbox1=\hbox to\wd0{\hss% +\smash{\lower0.009em\hbox to0pt{% +\hss\vbox to\dimen0{\vss% +\ifnum#4=0\relax \phantom{\chemradical}\else +\chemradical\fi% +\nointerlineskip +\kern0.7em +\ifnum#3=0\relax \phantom{\chemradical}\else +\chemradical\fi +\vss}\kern-0.05em}% +\hbox to\dimen1{\hss#5\hss}% +\lower0.009em\hbox to0pt{\kern-0.05em% +\vbox to\dimen0{\vss% +\ifnum#1=0\relax \phantom{\chemradical}\else +\chemradical\fi% +\nointerlineskip +\kern0.7em +\ifnum#2=0\relax \phantom{\chemradical}\else +\chemradical\fi\vss}\hss}% +}\hss}% +\ht1=\ht0\box1} +% \end{macrocode} +% \end{macro} +% +% The command \verb/\tetraradicalB/ is converted into +% the command \verb/\chemradicalB/, where four unpaired electrons are +% specified by a set of numbers 1234, 234, etc. as an optional +% argument. The main argument specifies a central atom. +% +% \begin{verbatim} +% \chemradicalB[1234, etc.]{A} +% \end{verbatim} +% +% \begin{verbatim} +% 4 1 +% . . +% A +% . . +% 3 2 +% \end{verbatim} +% +% \begin{macro}{\chemradicalA} +% \begin{macrocode} +\def\chemradicalB{\@ifnextchar[{\chemr@dicalB}{\chemr@dicalB[1234]}} +\def\chemr@dicalB[#1]#2{\leavevmode +\begingroup\let\TEMP@Command=\tetraradicalB% +\fromfourobjects{#1}{#2}\endgroup} +% \end{macrocode} +% \end{macro} +% +% \section{Macros for Nested Structures} +% +% The macro \verb/\LewisTetrahedralA/ is defined as an extension of +% \verb/\LewistetrahedralA/, where it supports a nestec structures. +% As a basic function of \verb/\LewisTetrahedralA/, +% atoms (W, X, Y, and Z) which are attached to a central atom (A) +% through Lewis bonds are drawn by the following \verb/\LewisTetrahedralA/ command. +% +% \begin{verbatim} +% \LewisTetrahedralA{0==A;1==W;2==X;3==Y;4==Z} +% \end{verbatim} +% +% \begin{verbatim} +% 1 +% W +% : +% 4 Z : A : X 2 +% : +% Y +% 3 +% \end{verbatim} +% +% Each of the atoms can be omitted. The argument of +% of the macro \verb/\LewisTetrahedralA/ can accommodate a so-called (yl)-function, +% which can draw a nested structure. +% +% \begin{macro}{\LewisTetrahedralA} +% This macro is based on the definition of the macro \verb/\tetrahedral/ +% defined in the \textsf{aliphat} package. +% \begin{macrocode} +\def\LewisTetrahedralA{% +\@ifnextchar[{\@LewisTetrahedralA[r}{\@LewisTetrahedralA[r]}} +\def\@LewisTetrahedralA#1]#2{% +\@ifnextchar<{\@@LewisTetrahedralA#1]{#2}}{\@@LewisTetrahedralA#1]{#2}<,,,>}} +\def\@@LewisTetrahedralA#1]#2<#3,#4,#5,#6>{% +\begingroup +\let\Northbond=\Northlonepair +\let\Southbond=\Southlonepair +\let\Eastbond=\Eastlonepair +\let\Westbond=\Westlonepair +\let\yltetrahedralposition=\ylLewisTetrahedralAposition +\@@tetrahedral#1]#2<#3,#4,#5,#6>% +\endgroup +\West@bondfalse +\East@bondfalse +}%end of macro LewisTetrahedralA +% \end{macrocode} +% \end{macro} +% +% Note that the innermacros \verb/\Northbond/ etc.\ used in the definition of \verb/\tetrahedral/ +% are replaced by \verb/\Northlonepair/ etc. +% +% \begin{macro}{\Northlonepair} +% \begin{macrocode} +\def\Northlonepair{% +\@ifnextchar[{\N@rthlonepair}{\N@rthlonepair[]}} +\def\N@rthlonepair[#1]{% + \if\@tmpb D\relax% + \put(0,60){\hbox to0pt{\hss\horizontalpair\hss}}% + \put(0,90){\hbox to0pt{\hss\horizontalpair\hss}}% + \putlratom{-40}{120}{\@memberb}%==1 upper substituent + \else\if\@tmpb T\relax% + \put(0,60){\hbox to0pt{\hss\horizontalpair\hss}}% + \put(0,90){\hbox to0pt{\hss\horizontalpair\hss}}% + \put(0,120){\hbox to0pt{\hss\horizontalpair\hss}}% + \putlratom{-40}{150}{\@memberb}%==1 upper substituent + \else\if\@tmpb N\relax%normal single bond + \Put@Line(0,52)(0,1){110}% + \putlratom{-40}{171}{\@memberb}%==1 upper substituent + \else + \put(0,60){\hbox to0pt{\hss\horizontalpair\hss}}% + \putlratom{-40}{90}{\@memberb}%==1 upper substituent + \fi\fi\fi% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Southlonepair} +% \begin{macrocode} +\def\Southlonepair{% +\@ifnextchar[{\S@uthlonepair}{\S@uthlonepair[]}} +\def\S@uthlonepair[#1]{% + \if\@tmpb D\relax% + \put(0,-60){\hbox to0pt{\hss\horizontalpair\hss}}% + \put(0,-90){\hbox to0pt{\hss\horizontalpair\hss}}% + \putlratom{-40}{-180}{\@memberb}%==3 down substituent + \else\if\@tmpb T\relax% + \put(0,-60){\hbox to0pt{\hss\horizontalpair\hss}}% + \put(0,-90){\hbox to0pt{\hss\horizontalpair\hss}}% + \put(0,-120){\hbox to0pt{\hss\horizontalpair\hss}}% + \putlratom{-40}{-210}{\@memberb}%==3 down substituent + \else\if\@tmpb N\relax%normal single bond + \Put@Line(0,-48)(0,-1){110}% + \putlratom{-40}{-250}{\@memberb}%==1 upper substituent + \else + \put(0,-60){\hbox to0pt{\hss\horizontalpair\hss}}% + \putlratom{-40}{-150}{\@memberb}%==3 down substituent + \fi\fi\fi% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Eastlonepair} +% \begin{macrocode} +\def\Eastlonepair{% +\@ifnextchar[{\E@stlonepair}{\E@stlonepair[]}} +\def\E@stlonepair[#1]{% + \if\@tmpb D\relax% + \put(60,-18){\hbox to0pt{\hss\verticalpair\hss}}% + \put(90,-18){\hbox to0pt{\hss\verticalpair\hss}}% + \putratom{120}{-33}{\@memberb}%==3 down substituent + \else\if\@tmpb T\relax% + \put(60,-18){\hbox to0pt{\hss\verticalpair\hss}}% + \put(90,-18){\hbox to0pt{\hss\verticalpair\hss}}% + \put(120,-18){\hbox to0pt{\hss\verticalpair\hss}}% + \putratom{150}{-33}{\@memberb}%==3 down substituent + \else\if\@tmpb N\relax%normal single bond + \Put@Line(50,0)(1,0){140}% + \putratom{190}{-33}{\@memberb}%==1 upper substituent + \else + \put(60,-18){\hbox to0pt{\hss\verticalpair\hss}}% + \putratom{90}{-33}{\@memberb}%==3 down substituent + \fi\fi\fi% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Westlonepair} +% \begin{macrocode} +\def\Westlonepair{% +\@ifnextchar[{\W@stlonepair}{\W@stlonepair[]}} +\def\W@stlonepair[#1]{% + \if\@tmpb D\relax% + \put(-65,-18){\hbox to0pt{\hss\verticalpair\hss}}% + \put(-95,-18){\hbox to0pt{\hss\verticalpair\hss}}% + \putlatom{-120}{-33}{\@memberb}%==3 down substituent + \else\if\@tmpb T\relax% + \put(-65,-18){\hbox to0pt{\hss\verticalpair\hss}}% + \put(-95,-18){\hbox to0pt{\hss\verticalpair\hss}}% + \put(-125,-18){\hbox to0pt{\hss\verticalpair\hss}}% + \putlatom{-150}{-33}{\@memberb}%==3 down substituent + \else\if\@tmpb N\relax%normal single bond + \Put@Line(-50,0)(-1,0){140}% + \putlatom{-190}{-33}{\@memberb}%==1 upper substituent + \else + \put(-65,-18){\hbox to0pt{\hss\verticalpair\hss}}% + \putlatom{-90}{-33}{\@memberb}%==3 down substituent + \fi\fi\fi% +} +% \end{macrocode} +% \end{macro} +% +% The macro \verb/\LewisTetrahedralA/ supports a (yl)-function, which +% is based on the x,y-adjustment due to the \verb/\ylLewisTetrahedralAposition/, +% which is defined in a similar way to \verb/\yltetrahedralposition/ used in +% the definition of the macro \verb/\tetrahedral/. The original values are +% left as commented lines in order to compare with the \textsf{aliphat} package +% of the \XyMTeX{} system. +% +% \begin{macro}{\ylLewisTetrahedralAposition} +% \begin{macrocode} +\def\ylLewisTetrahedralAposition#1{% +\@@ylswfalse%%%\@reset@ylsw +\West@bondfalse +\East@bondfalse +\@forsemicol\member:=#1\do{% +\if@@ylsw\else +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw% +\ifcase\@tmpa% + \or%1 + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%N subst. on 1 + \else% +% \gdef\@ylii{0}\gdef\@yli{-52}\global\@ylswtrue%N subst. on 1 + \gdef\@ylii{45}\gdef\@yli{33}\global\@ylswtrue%N subst. on 1 + \fi% + \or%2 + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% + \else% +% \gdef\@ylii{52}\gdef\@yli{0}\global\@ylswtrue% + \gdef\@ylii{40}\gdef\@yli{30}\global\@ylswtrue% + \fi% + \East@bondtrue%W subst. on 1 + \or%3 + \ifno@centeratom% + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue%S subst. on 1 + \else% +% \gdef\@ylii{0}\gdef\@yli{52}\global\@ylswtrue%S subst. on 1 + \gdef\@ylii{35}\gdef\@yli{40}\global\@ylswtrue%S subst. on 1 + \fi% + \or%4 + \ifno@centeratom% + \gdef\@ylii{-72}\gdef\@yli{0}\global\@ylswtrue%?????? + \else% +% \gdef\@ylii{-52}\gdef\@yli{0}\global\@ylswtrue% + \gdef\@ylii{-40}\gdef\@yli{32}\global\@ylswtrue% + \fi% + \West@bondtrue%E subst. on 1 +\fi%end of ifcase +\fi\fi\fi}}% +% \end{macrocode} +% \end{macro} +% +% The macro \verb/\LewisTetrahedralB/ is defined as an extension of +% \verb/\LewistetrahedralB/, where it supports a nestec structures. +% As a basic function of \verb/\LewisTetrahedralB/, +% atoms (W, X, Y, and Z) which are attached to a central atom (A) +% through Lewis bonds are drawn by the following \verb/\LewisTetrahedralB/ command. +% +% \begin{verbatim} +% \LewisteTrahedralB{0==A;1==W;2==X;3==Y;4==Z} +% \end{verbatim} +% +% \begin{verbatim} +% +% 4 Z W 1 +% : : +% A +% : : +% 3 Y X 2 +% +% \end{verbatim} +% +% Each of the atoms can be omitted. +% +% \begin{macro}{\LewisTetrahedralB} +% \begin{macrocode} +\def\LewisTetrahedralB{% +\@ifnextchar[{\@LewisTetrahedralB[r}{\@LewisTetrahedralB[r]}} +\def\@LewisTetrahedralB#1]#2{% +\begingroup +\let\NEbond=\NEbondlonepair +\let\SEbond=\SEbondlonepair +\let\SWbond=\SWbondlonepair +\let\NWbond=\NWbondlonepair +\let\ylsquareposition=\ylLewisTetrahedralBposition +\@squareplanar#1]{#2}% +\endgroup +}%end of macro LewisTetrahedralB +% \end{macrocode} +% \end{macro} +% +% Note that the inner macros \verb/\NEbond/ etc.\ used in the definition of \verb/\squareplanar/ +% are replaced by \verb/\NEbondlonepair/ etc. +% +% \begin{macro}{\NEbondlonepair} +% \begin{macrocode} +\def\NEbondlonepair{% +\begin{sfpicture}(100,300)(0,0)% + \if\@tmpb D\relax% + \put(50,50){\hbox to0pt{\hss\nelonepair\hss}}% + \put(75,75){\hbox to0pt{\hss\nelonepair\hss}}% + \putratom{90}{82}{\@memberb}%==1 northeast substituent + \else\if\@tmpb T\relax% + \put(50,50){\hbox to0pt{\hss\nelonepair\hss}}% + \put(75,75){\hbox to0pt{\hss\nelonepair\hss}}% + \put(100,100){\hbox to0pt{\hss\nelonepair\hss}}% + \putratom{115}{107}{\@memberb}%==1 northeast substituent + \else\if\@tmpb N\relax%normal single bond + \Put@Line(40,47)(1,1){95}% + \putratom{145}{137}{\@memberb}%==1 (northeast substituent) + \else + \put(50,50){\hbox to0pt{\hss\nelonepair\hss}}% + \putratom{65}{57}{\@memberb}%==1 northeast substituent + \fi\fi\fi% +\end{sfpicture}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\SEbondlonepair} +% \begin{macrocode} +\def\SEbondlonepair{% +\begin{sfpicture}(100,300)(0,0)% + \if\@tmpb D\relax% + \put(50,-50){\hbox to0pt{\hss\selonepair\hss}}% + \put(75,-75){\hbox to0pt{\hss\selonepair\hss}}% + \putratom{90}{-148}{\@memberb}%==2 southeast substituent + \else\if\@tmpb T\relax% + \put(50,-50){\hbox to0pt{\hss\selonepair\hss}}% + \put(75,-75){\hbox to0pt{\hss\selonepair\hss}}% + \put(100,-100){\hbox to0pt{\hss\selonepair\hss}}% + \putratom{115}{-173}{\@memberb}%==2 southeast substituent + \else\if\@tmpb N\relax%normal single bond + \Put@Line(40,-47)(1,-1){95}% + \putratom{145}{-203}{\@memberb}%==2 (southeast substituent) + \else + \put(50,-50){\hbox to0pt{\hss\selonepair\hss}}% + \putratom{65}{-123}{\@memberb}%==2 southeast substituent + \fi\fi\fi% +\end{sfpicture}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\SWbondlonepair} +% \begin{macrocode} +\def\SWbondlonepair{% +\begin{sfpicture}(100,300)(0,0)% + \if\@tmpb D\relax% + \put(-50,-50){\hbox to0pt{\hss\swlonepair\hss}}% + \put(-75,-75){\hbox to0pt{\hss\swlonepair\hss}}% + \putlatom{-90}{-148}{\@memberb}%==3 southeast substituent + \else\if\@tmpb T\relax% + \put(-50,-50){\hbox to0pt{\hss\swlonepair\hss}}% + \put(-75,-75){\hbox to0pt{\hss\swlonepair\hss}}% + \put(-100,-100){\hbox to0pt{\hss\swlonepair\hss}}% + \putlatom{-115}{-173}{\@memberb}%==3 southeast substituent + \else\if\@tmpb N\relax%normal single bond + \Put@Line(-50,-47)(-1,-1){95}% + \putlatom{-163}{-203}{\@memberb}%==3 (southwest substituent) + \else + \put(-50,-50){\hbox to0pt{\hss\swlonepair\hss}}% + \putlatom{-65}{-123}{\@memberb}%==3 southeast substituent + \fi\fi\fi% +\end{sfpicture}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\NWbondlonepair} +% \begin{macrocode} +\def\NWbondlonepair{% +\begin{sfpicture}(100,300)(0,0)% + \if\@tmpb D\relax% + \put(-50,50){\hbox to0pt{\hss\nwlonepair\hss}}% + \put(-75,75){\hbox to0pt{\hss\nwlonepair\hss}}% + \putlatom{-90}{82}{\@memberb}%==4 northwest substituent + \else\if\@tmpb T\relax% + \put(-50,50){\hbox to0pt{\hss\nwlonepair\hss}}% + \put(-75,75){\hbox to0pt{\hss\nwlonepair\hss}}% + \put(-100,100){\hbox to0pt{\hss\nwlonepair\hss}}% + \putlatom{-115}{107}{\@memberb}%==4 northwest substituent + \else\if\@tmpb N\relax%normal single bond + \Put@Line(-40,47)(-1,1){95}% + \putlatom{-145}{137}{\@memberb}%==4 (northwest substituent) + \else + \put(-50,50){\hbox to0pt{\hss\nwlonepair\hss}}% + \putlatom{-65}{57}{\@memberb}%==1 northwest substituent + \fi\fi\fi% +\end{sfpicture}% +} +% \end{macrocode} +% \end{macro} +% +% The macro \verb/\LewisTetrahedralB/ supports a (yl)-function, which +% is based on the x,y-adjustment due to the \verb/\ylLewisTetrahedralBposition/, +% which is defined in a similar way to \verb/\ylsquareposition/ used in +% the definition of the macro \verb/\squaraplanar/ (renamed from \verb/\square/). +% The original values are left as commented lines in order to compare +% with the \textsf{aliphat} package of the \XyMTeX{} system. +% +% \begin{macro}{\ylLewisTetrahedralBposition} +% \begin{macrocode} +\def\ylLewisTetrahedralBposition#1{% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#1\do{% +\if@@ylsw\else +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax +\expandafter\threech@r\@membera{}{}\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpa + \or% +% \gdef\@ylii{-40}\gdef\@yli{-47}\global\@ylswtrue% NE subst. on 1 + \gdef\@ylii{-28}\gdef\@yli{40}\global\@ylswtrue% NE subst. on 1 + \or%2 +% \gdef\@ylii{-40}\gdef\@yli{47}\global\@ylswtrue% SE subst. on 2 + \gdef\@ylii{-28}\gdef\@yli{35}\global\@ylswtrue% SE subst. on 2 + \or%3 +% \gdef\@ylii{50}\gdef\@yli{47}\global\@ylswtrue% SW subst. on 3 + \gdef\@ylii{35}\gdef\@yli{22}\global\@ylswtrue% SW subst. on 3 + \or%4 +% \gdef\@ylii{50}\gdef\@yli{-47}\global\@ylswtrue% NW subst. on 4 + \gdef\@ylii{35}\gdef\@yli{40}\global\@ylswtrue% NW subst. on 4 +\fi%end of ifcase +\fi\fi\fi}}% +\endinput +%</lewisstruc> +% \end{macrocode} +% \end{macro} +% +% \Finale +% +\endinput diff --git a/Master/texmf-dist/source/latex/xymtex/base/lewisstruc.ins b/Master/texmf-dist/source/latex/xymtex/base/lewisstruc.ins new file mode 100644 index 00000000000..96723624e70 --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/lewisstruc.ins @@ -0,0 +1,48 @@ +\def\batchfile{lewisstruc.ins} +\input docstrip.tex +\preamble + +This is a generated file. + +Copyright 2009,2010,2013 by Shinsaku Fujita +all rights reserved. +This style file is created for drawing chemical structural formulas +This style file is to be contained in the ``xymtex'' directory which +is an input directory for TeX. + +This file is part of the XyMTeX system. +======================================= +Old Versions: +Version 1.00 Released on November 03, 2009 +Version 5.00 Released on October 01, 2010 + +The Present Version: +Version 5.01 Released on August 02, 2013 + +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 lewisstruc.dtx and lewisstruc.ins +and the derived file lewisstruc.sty. + +======================================= + +\endpreamble + +\keepsilent + +\generateFile{lewisstruc.drv}{t}{% + \from{lewisstruc.dtx}{driver}} + +\generateFile{lewisstruc.sty}{t}{% + \from{lewisstruc.dtx}{lewisstruc}} + +\endinput diff --git a/Master/texmf-dist/source/latex/xymtex/base/locant.dtx b/Master/texmf-dist/source/latex/xymtex/base/locant.dtx new file mode 100644 index 00000000000..4f19a5c4c79 --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/locant.dtx @@ -0,0 +1,343 @@ +% \iffalse meta-comment +%% File: locant.dtx +% +% Copyright 1993,1996,2001,2002, 2004, 2010 by Shinsaku Fujita +% +% This file is part of XyMTeX system. +% ------------------------------------- +% +% This file is a successor to: +% +% locant.sty +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 1.00} +% \typeout{ -- Released December 1, 1993 by Shinsaku Fujita} +% Copyright (C) 1993 by Shinsaku Fujita, all rights reserved. +% +% This file is a part of the macro package ``XyMTeX'' which has been +% designed for typesetting chemical structural formulas. +% +% This file is to be contained in the ``xymtex'' directory which is +% an input directory for TeX. It is a LaTeX optional style file and +% should be used only within LaTeX, because several macros of the file +% are based on LaTeX commands. +% +% For the review of XyMTeX, see +% (1) Shinsaku Fujita, ``Typesetting structural formulas with the text +% formatter TeX/LaTeX'', Computers and Chemistry, in press. +% The following book deals with an application of TeX/LaTeX to +% preparation of manuscripts of chemical fields: +% (2) Shinsaku Fujita, ``LaTeX for Chemists and Biochemists'' +% Tokyo Kagaku Dozin, Tokyo (1993) [in Japanese]. +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% The Current Maintainer of this work is Shinsaku Fujita. +% +% This work consists of the files locant.dtx and locant.ins +% and the derived file locant.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{locant} +% \def\versi@ndate{December 01, 1993} +% \def\versi@nno{ver1.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{locant} +% \def\versi@ndate{August 16, 1996} +% \def\versi@nno{ver1.01} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{locant} +% \def\versi@ndate{June 20, 2001} +% \def\versi@nno{ver2.01} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{locant} +% \def\versi@ndate{April 30, 2002} +% \def\versi@nno{ver3.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{locant} +% \def\versi@ndate{May 30, 2002} +% \def\versi@nno{ver4.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{locant} +% \def\versi@ndate{August 30, 2004} +% \def\versi@nno{ver4.01} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \fi +% +% \CheckSum{136} +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +% +% \setcounter{StandardModuleDepth}{1} +% +% \StopEventually{} +% \MakeShortVerb{\|} +% +% \iffalse +% \changes{v1.01}{1996/06/26}{first edition for LaTeX2e} +% \changes{v2.01}{2001/06/20}{Size reduction and Clip information} +% \changes{v3.00}{2002/04/30}{sfpicture environment etc.} +% \changes{v4.00}{2002/05/30}{PostScript output and ShiftPicEnv} +% \changes{v4.01}{2004/08/30}{Minor additions} +% \changes{v5.00}{2010/10/01}{the LaTeX Project Public License} +% \fi +% +% \iffalse +%<*driver> +\NeedsTeXFormat{pLaTeX2e} +% \fi +\ProvidesFile{locant.dtx}[2010/10/01 v5.00 XyMTeX{} package file] +% \iffalse +\documentclass{ltxdoc} +\GetFileInfo{locant.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{Setting locant numbers by {\sffamily locant.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{locant.dtx} +\end{document} +%</driver> +% \fi +% +% \section{Introduction}\label{locant:intro} +% +% \subsection{Options for {\sffamily docstrip}} +% +% \DeleteShortVerb{\|} +% \begin{center} +% \begin{tabular}{|l|l|} +% \hline +% \emph{option} & \emph{function}\\ \hline +% locant & locant.sty \\ +% driver & driver for this dtx file \\ +% \hline +% \end{tabular} +% \end{center} +% \MakeShortVerb{\|} +% +% \subsection{Version Information} +% +% \begin{macrocode} +%<*locant> +\typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 5.00} +\typeout{ -- Released October 01, 2010 by Shinsaku Fujita} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\j@urnalname{locant} +\def\versi@ndate{October 01, 2010} +\def\versi@nno{ver4.00} +\def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\typeout{XyMTeX Macro File `\j@urnalname' (\versi@nno) <\versi@ndate>% +\space[\copyrighth@lder]} +% \end{macrocode} +% +% \section{Macros for designating locant numbers} +% +% \subsection{Font Size of Locant Numbers} +% \changes{v2.01}{2001/06/20}{New command: \cs{locantnumsize}} +% +% To change the font size of locant numbers, we can use +% |\locantnumsize|, into which a size command (|\scriptsize| etc.) +% is introduced by using the |\let| command. +% The default setting is |\scriptsize| as follows: +% +% \begin{macro}{\locantnumsize} +% \begin{macrocode} +\let\locantnumsize=\scriptsize +% \end{macrocode} +% \end{macro} +% +% \subsection{Bond indicators for vertical formulas} +% +% \begin{macro}{\dbloocant} +% \begin{macro}{\dblocant} +% The macro |\dbloocant| is used to designate six edges (inner double bonds) +% of a six-membered ring. Any character can be asigned to the respective +% bond. +% The macro |\dblocant| provides a fixed set of aliphabetical charactors +% on the six edges. +% \changes{v2.01}{2001/06/20}{The domain of a picture environment +% has been changed from (800,880) to (0,0).} +% \begin{macrocode} +\def\bdloocant#1#2#3#4#5#6{% +%\begin{sfpicture}(800,880)(-\shiftii,-\shifti) +\begin{sfpicture}(0,0)(-\shiftii,-\shifti) +\putratom{90}{380}{\locantnumsize #1}% +\putratom{200}{180}{\locantnumsize #2}% +\putratom{90}{-20}{\locantnumsize #3}% +\putlatom{-90}{380}{\locantnumsize #6}% +\putlatom{-200}{180}{\locantnumsize #5}% +\putlatom{-90}{-20}{\locantnumsize #4}% +\end{sfpicture}}% +\def\bdlocant{\bdloocant{a}{b}{c}{d}{e}{f}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Atom indicators for vertical formulas} +% \begin{macro}{\sxloocant} +% \begin{macro}{\sxlocant} +% The macro |\sxloocant| is used to designate six vertices +% of a six-membered ring. Any character can be asigned to the respective +% bond. +% The macro |\sxlocant| provides a fixed set of arabic numerals +% on the six edges. +% \changes{v2.01}{2001/06/20}{The domain of a picture environment +% has been changed from (800,880) to (0,0).} +% \begin{macrocode} +\def\sxloocant#1#2#3#4#5#6{% +%\begin{sfpicture}(800,880)(-\shiftii,-\shifti)% +\begin{sfpicture}(0,0)(-\shiftii,-\shifti)% +\putratom{-10}{340}{\locantnumsize #1}% +\putlatom{150}{260}{\locantnumsize #2}% +\putlatom{150}{110}{\locantnumsize #3}% +\putratom{-10}{40}{\locantnumsize #4}% +\putratom{-150}{110}{\locantnumsize #5}% +\putratom{-150}{260}{\locantnumsize #6}% +\end{sfpicture}}% +\def\sxlocant{\sxloocant{1}{2}{3}{4}{5}{6}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Bond indicators for horizontal formulas} +% +% \begin{macro}{\dbloocanth} +% \begin{macro}{\dblocanth} +% The macro |\dbloocanth| is used to designate six edges (inner double bonds) +% of a horizontal six-membered ring. +% Any character can be asigned to the respective bond. +% The macro |\dblocanth| provides a fixed set of aliphabetical charactors +% on the six edges. +% \changes{v2.01}{2001/06/20}{The domain of a picture environment +% has been changed from (800,880) to (0,0).} +% \begin{macrocode} +\def\bdloocnth#1#2#3#4#5#6{% +%\begin{sfpicture}(880,800)(-\shifti,-\shiftii)% +\begin{sfpicture}(0,0)(-\shifti,-\shiftii)% +\putlatom{10}{80}{\locantnumsize #1}% +\putratom{180}{210}{\locantnumsize #2}% +\putratom{380}{80}{\locantnumsize #3}% +\putratom{380}{-120}{\locantnumsize #4}% +\putratom{180}{-260}{\locantnumsize #5}% +\putlatom{10}{-120}{\locantnumsize #6}% +\end{sfpicture}}% +\def\bdlocnth{\bdloocnth{a}{b}{c}{d}{e}{f}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Atom indicators for horizontal formulas} +% \begin{macro}{\sxloocanth} +% \begin{macro}{\sixsghlocant} +% The macro |\sxloocanth| is used to designate six vertices +% of a horizontal six-membered ring. +% Any character can be asigned to the respective bond. +% The macro |\sixsghlocant| provides a fixed set of arabic numerals +% on the six edges. +% \changes{v2.01}{2001/06/20}{The domain of a picture environment +% has been changed from (800,880) to (0,0).} +% \begin{macrocode} +\def\sxloocnth#1#2#3#4#5#6{% +%\begin{sfpicture}(880,800)(-\shifti,-\shiftii)% +\begin{sfpicture}(0,0)(-\shifti,-\shiftii)% +\putratom{40}{-20}{\locantnumsize #1}% +\putratom{110}{100}{\locantnumsize #2}% +\putlatom{290}{100}{\locantnumsize #3}% +\putlatom{380}{-20}{\locantnumsize #4}% +\putratom{110}{-140}{\locantnumsize #6}% +\putlatom{290}{-140}{\locantnumsize #5}% +\end{sfpicture}}% +\def\sxlocnth{\sxloocnth{1}{2}{3}{4}{5}{6}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Locant Numbers for Cyclic Sugars} +% +% \changes{v2.01}{2001/06/20}{New command: \cs{sixsugarhlocant}} +% \begin{macro}{\sixsugarhloocnt} +% \begin{macro}{\sixsugarhlocant} +% The macro |\sixsugarhloocnt| is used to designate six vertices +% of a horizontal six-membered sugar ring. +% Any character can be asigned to the respective bond. +% The macro |\sixsugarhlocant| provides a fixed set of arabic numerals +% on the six edges. +% \begin{macrocode} +\def\sixsugarhloocnt#1#2#3#4#5#6{% +\begin{sfpicture}(0,0)(-\shifti,-\shiftii)% +\putratom{40}{-20}{\locantnumsize #1}% +\putratom{120}{125}{\locantnumsize #2}% +\putlatom{400}{125}{\locantnumsize #3}% +\putlatom{492}{-20}{\locantnumsize #4}% +\putratom{120}{-160}{\locantnumsize #6}% +\putlatom{400}{-160}{\locantnumsize #5}% +\end{sfpicture}}% +\def\sixsugarhlocant{\sixsugarhloocnt{4}{5}{6}{1}{2}{3}} +%</locant> +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \Finale +% +\endinput diff --git a/Master/texmf-dist/source/latex/xymtex/base/locant.ins b/Master/texmf-dist/source/latex/xymtex/base/locant.ins new file mode 100644 index 00000000000..d6c75dca397 --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/locant.ins @@ -0,0 +1,52 @@ +\def\batchfile{locant.ins} +\input docstrip.tex +\preamble + +This is a generated file. + +Copyright 1996, 2001, 2002, 2004, 2010 by Shinsaku Fujita +all rights reserved. +This style file is created for drawing chemical structural formulas +This style file is to be contained in the ``xymtex'' directory which +is an input directory for TeX. + +This file is part of the XyMTeX system. +======================================= + +Old Versins: +Released on August 16, 1996 +Released on June 20, 2001 (version 2.01) (private version) +Released on April 30, 2002 (version 3.00) +Version 4.00 Released on May 30, 2002 (private version) +Version 4.01 Released on August 30, 2004 + +The Present Version: +Version 5.00 Released on October 01, 2010 + +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 locant.dtx and locant.ins +and the derived file locant.sty. + +======================================= + +\endpreamble + +\keepsilent + +\generateFile{locant.drv}{t}{% + \from{locant.dtx}{driver}} + +\generateFile{locant.sty}{t}{% + \from{locant.dtx}{locant}} + +\endinput diff --git a/Master/texmf-dist/source/latex/xymtex/base/lowcycle.dtx b/Master/texmf-dist/source/latex/xymtex/base/lowcycle.dtx new file mode 100644 index 00000000000..3aac86549ea --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/lowcycle.dtx @@ -0,0 +1,892 @@ +% \iffalse meta-comment +%% File: lowcycle.dtx +% +% Copyright 1993,1996,1998,2001,2002,2004,2010 by Shinsaku Fujita +% +% This file is part of XyMTeX system. +% ------------------------------------- +% +% This file is a successor to: +% +% lowcycle.sty +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 1.00} +% \typeout{ -- Released December 1, 1993 by Shinsaku Fujita} +% Copyright (C) 1993 by Shinsaku Fujita, all rights reserved. +% +% This file is a part of the macro package ``XyMTeX'' which has been +% designed for typesetting chemical structural formulas. +% +% This file is to be contained in the ``xymtex'' directory which is +% an input directory for TeX. It is a LaTeX optional style file and +% should be used only within LaTeX, because several macros of the file +% are based on LaTeX commands. +% +% For the review of XyMTeX, see +% (1) Shinsaku Fujita, ``Typesetting structural formulas with the text +% formatter TeX/LaTeX'', Computers and Chemistry, in press. +% The following book deals with an application of TeX/LaTeX to +% preparation of manuscripts of chemical fields: +% (2) Shinsaku Fujita, ``LaTeX for Chemists and Biochemists'' +% Tokyo Kagaku Dozin, Tokyo (1993) [in Japanese]. +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% The Current Maintainer of this work is Shinsaku Fujita. +% +% This work consists of the files lowcycle.dtx and lowcycle.ins +% and the derived file lowcycle.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{lowcycle} +% \def\versi@ndate{December 01, 1993} +% \def\versi@nno{ver1.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{lowcycle} +% \def\versi@ndate{August 16, 1996} +% \def\versi@nno{ver1.01} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{lowcycle} +% \def\versi@ndate{October 31, 1998} +% \def\versi@nno{ver1.02} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{lowcycle} +% \def\versi@ndate{December 25, 1998} +% \def\versi@nno{ver2.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{lowcycle} +% \def\versi@ndate{June 20, 2001} +% \def\versi@nno{ver2.01} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{lowcycle} +% \def\versi@ndate{April 30, 2002} +% \def\versi@nno{ver3.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{lowcycle} +% \def\versi@ndate{May 30, 2002} +% \def\versi@nno{ver4.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{lowcycle} +% \def\versi@ndate{August 30, 2004} +% \def\versi@nno{ver4.01} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \fi +% +% \CheckSum{175} +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +% +% \setcounter{StandardModuleDepth}{1} +% +% \StopEventually{} +% \MakeShortVerb{\|} +% +% \iffalse +% \changes{v1.01}{1996/06/26}{first edition for LaTeX2e} +% \changes{v1.02}{1998/10/31}{revised edition for LaTeX2e} +% \changes{v2.00}{1998/12/25}{enhanced edition for LaTeX2e} +% \changes{v2.01}{2001/6/20}{Size reduction and Clip information} +% \changes{v3.00}{2002/4/30}{sfpicture environment, etc.} +% \changes{v4.00}{2002/05/30}{PostScript output and ShiftPicEnv} +% \changes{v4.01}{2004/08/30}{Minor additions} +% \changes{v5.00}{2010/10/01}{the LaTeX Project Public License} +% \fi +% +% \iffalse +%<*driver> +\NeedsTeXFormat{pLaTeX2e} +% \fi +\ProvidesFile{lowcycle.dtx}[2010/10/01 v5.00 XyMTeX{} package file] +% \iffalse +\documentclass{ltxdoc} +\GetFileInfo{lowcycle.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{Lower carbocyclic compounds by {\sffamily lowcycle.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{lowcycle.dtx} +\end{document} +%</driver> +% \fi +% +% \section{Introduction}\label{lowcycle:intro} +% +% \subsection{Options for {\sffamily docstrip}} +% +% \DeleteShortVerb{\|} +% \begin{center} +% \begin{tabular}{|l|l|} +% \hline +% \emph{option} & \emph{function}\\ \hline +% lowcycle & lowcycle.sty \\ +% driver & driver for this dtx file \\ +% \hline +% \end{tabular} +% \end{center} +% \MakeShortVerb{\|} +% +% \subsection{Version Information} +% +% \begin{macrocode} +%<*lowcycle> +\typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 5.00} +\typeout{ -- Released October 01, 2010 by Shinsaku Fujita} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\j@urnalname{lowcycle} +\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 lowcycle.sty} +% +% \begin{verbatim} +% ********************************** +% * lowcycle.sty: list of commands * +% ********************************** +% +% \cyclopentanev \@cyclopentanev +% \cyclopentanevi \@cyclopentanevi +% \cyclopentaneh \@cyclopentaneh +% \cyclopentanehi \@cyclopentanehi +% +% \cyclobutane \@cyclobutane +% +% \cyclopropane \@cyclopropane +% \cyclopropanei \@cyclopropanei +% \cyclopropaneh \@cyclopropaneh +% \cyclopropanehi \@cyclopropanehi +% +% \indanev \@indanev +% \indanevi \@indanevi +% \indaneh \@indaneh +% \indanehi \@indanehi +% \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 lowcycle.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{threehetero}{\input hetarom.sty\relax}{} +\@ifundefined{sixheteroh}{\input hetaromh.sty\relax}{} +\unitlength=0.1pt +% \end{macrocode} +% +% \section{Cyclopentane derivatives} +% \subsection{Vertical type} +% +% The macros |\cyclopentanev| and |\cyclopentanevi| have an +% argument |SUBSLIST| as well as an optional argument |BONDLIST|. +% The macro |\cyclopentanev| draws a five-membered ring with a +% flat top bond, while the macro |\cyclopentanevi| draws an +% inverse ring with a flat bottom bond. +% \begin{verbatim} +% ****************************** +% * cyclopentane derivatives * +% * (vertical type & inverse) * +% ****************************** +% +% \cyclopentanev[BONDLIST]{SUBSLIST} +% \cyclopentanevi[BONDLIST]{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one or more +% characters 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$--$5$) is used for designating a plus charge on +% the $n$-carbon. +% The option `$0+$'is used for designating a plus charge at the center +% of the five-membered ring. +% \begin{verbatim} +% BONDLIST: list of inner double bonds +% +% none : mother nucleus (fully saturated form) +% a : 1,2-double bond +% b : 2,3-double bond +% c : 4,3-double bond +% d : 4,5-double bond +% e : 5,1-double bond +% {n+} : plus at the n-carbon atom (n = 1 to 5) +% {0+} : plus at the center +% \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 +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \cyclopentanev{1==H;2==F} +% \cyclopentanev[]{1==H;2==F} +% \cyclopentanev[H]{1==H;2==F} +% \end{verbatim} +% +% \begin{macro}{\cyclopentanev} +% \begin{macro}{\cyclopentanevi} +% \begin{macrocode} +\def\cyclopentanev{\@ifnextchar[{\@cyclopentanev[@}{\@cyclopentanev[]}} +\def\@cyclopentanev[#1]#2{% +\iforigpt \typeout{command `cyclopentanev' % + is based on `fiveheterov'.}\fi% +\fiveheterov[#1]{}{#2}} +% \end{macrocode} +% +% \begin{macrocode} +\def\cyclopentanevi{\@ifnextchar[{\@cyclopentanevi[@}{\@cyclopentanevi[]}} +\def\@cyclopentanevi[#1]#2{% +\iforigpt \typeout{command `cyclopentanevi' % + is based on `fiveheterovi'.}\fi% +\fiveheterovi[#1]{}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Horizontal type} +% +% The macros |\cyclopentaneh| and |\cyclopentanehi| have an +% argument |SUBSLIST| as well as an optional argument |BONDLIST|. +% The macro |\cyclopentaneh| draws a five-membered ring with a +% vertical left bond, while the macro |\cyclopentanehi| draws an +% inverse ring with a vertical right bond. +% \begin{verbatim} +% ******************************** +% * cyclopentane derivatives * +% * (horizontal type & inverse) * +% ******************************** +% +% \cyclopentaneh[BONDLIST]{SUBSLIST} +% \cyclopentanehi[BONDLIST]{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one or more +% characters 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$--$5$) is used for designating a plus charge on +% the $n$-carbon. +% The option `$0+$'is used for designating a plus charge at the center +% of the five-membered ring. +% \begin{verbatim} +% +% BONDLIST: list of inner double bonds +% +% none : mother nucleus (fully saturated form) +% a : 1,2-double bond +% b : 2,3-double bond +% c : 4,3-double bond +% d : 4,5-double bond +% e : 5,1-double bond +% {n+} : plus at the n-carbon atom (n = 1 to 5) +% {0+} : plus at the center +% \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 +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% +% e.g. +% +% \cyclopentaneh{1==H;2==F} +% \cyclopentanehi[]{1==H;2==F} +% \cyclopentanehi[H]{1==H;2==F} +% +% \end{verbatim} +% +% \begin{macro}{\cyclopentaneh} +% \begin{macro}{\cyclopentanehi} +% \begin{macrocode} +\def\cyclopentaneh{\@ifnextchar[{\@cyclopentaneh[@}{\@cyclopentaneh[]}} +\def\@cyclopentaneh[#1]#2{% +\iforigpt \typeout{command `cyclophentaneh' % + is based on `fiveheteroh'.}\fi% +\fiveheteroh[#1]{}{#2}} +% \end{macrocode} +% +% \begin{macrocode} +\def\cyclopentanehi{% + \@ifnextchar[{\@cyclopentanehi[@}{\@cyclopentanehi[]}} +\def\@cyclopentanehi[#1]#2{% +\iforigpt \typeout{command `cyclopentanehi' % + is based on `fiveheterohi'.}\fi% +\fiveheterohi[#1]{}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \section{Indan derivatives} +% \subsection{Vertical type} +% +% The macros |\indanev| and |\indanevi| have an +% argument |SUBSLIST| as well as an optional argument |BONDLIST|. +% The macro |\indanev| draws a five-membered ring with a +% flat top bond, while the macro |\indanevi| draws an +% inverse ring with a flat bottom bond. +% \begin{verbatim} +% *********************************************************** +% * indane derivatives (fused six- and five-membered rings) * +% * (vertical type & inverse) * +% *********************************************************** +% +% \indanev[BONDLIST]{SUBSLIST} +% \indanevi[BONDLIST]{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one or more +% characters selected from a to j, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The option `A' typesets a six-membered ring with an aromatic circle. +% The option `$n+$' ($n=1$--$7$) is used for designating a plus charge on +% the $n$-carbon. +% \begin{verbatim} +% +% BONDLIST: list of bonds +% +% none or r : aromatic six-membered ring +% H or [] : fully saturated form +% a : 1,2-double bond b : 2,3-double bond +% c : 3,3a-double bond d : 4,3a-double bond +% e : 4,5-double bond f : 5,6-double bond +% g : 6,7-double bond h : 7,7a-double bond +% i : 1,7a-double bond j : 3a,4a-double bond +% A : aromatic circle +% {n+} : plus at the n-nitrogen atom (n = 1 to 7) +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% \begin{verbatim} +% +% SUBSLIST: list of substituents (max 7 substitution positions) +% +% for n = 1 to 8 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% for 8 (3a position) and 9 (7a position) +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% +% e.g. +% +% \indanev{1==Cl;2==F} +% \indanev[c]{1==Cl;4==F;2==CH$_{3}$} +% \indanev[eb]{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl} +% +% \end{verbatim} +% +% \begin{macro}{\indanev} +% \begin{macro}{\indanevi} +% \begin{macrocode} +\def\indanev{\@ifnextchar[{\@indanev[@}{\@indanev[rb]}} +\def\@indanev[#1]#2{% +\iforigpt \typeout{command `indanev' % + is based on `nonaheterov'.}\fi% +\nonaheterov[#1]{}{#2}} +% \end{macrocode} +% +% \begin{macrocode} +\def\indanevi{\@ifnextchar[{\@indanevi[@}{\@indanevi[rb]}} +\def\@indanevi[#1]#2{% +\iforigpt \typeout{command `indanevi' % + is based on `nonaheterovi'.}\fi% +\nonaheterovi[#1]{}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Horizontal type} +% +% The macros |\indaneh| and |\indanehi| have an +% argument |SUBSLIST| as well as an optional argument |BONDLIST|. +% The macro |\indaneh| draws a five-membered ring with a +% vertical left bond, while the macro |\indanehi| draws an +% inverse ring with a vertical right bond. +% \begin{verbatim} +% *********************************************************** +% * indane derivatives (fused six- and five-membered rings) * +% * (horizontal type & inverse) * +% *********************************************************** +% +% \indaneh[BONDLIST]{SUBSLIST} +% \indanehi[BONDLIST]{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one or more +% characters selected from a to j, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The option `A' typesets a six-membered ring with an aromatic circle. +% The option `$n+$' ($n=1$--$7$) is used for designating a plus charge on +% the $n$-carbon. +% \begin{verbatim} +% +% BONDLIST: list of bonds +% +% none or r : aromatic six-membered ring +% H or [] : fully saturated form +% a : 1,2-double bond b : 2,3-double bond +% c : 3,3a-double bond d : 4,3a-double bond +% e : 4,5-double bond f : 5,6-double bond +% g : 6,7-double bond h : 7,7a-double bond +% i : 1,7a-double bond j : 3a,4a-double bond +% A : aromatic circle +% {n+} : plus at the n-nitrogen atom (n = 1 to 7) +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% \begin{verbatim} +% +% SUBSLIST: list of substituents +% +% for n = 1 to 8 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% +% for 8 (3a position) and 9 (7a position) +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \indaneh{1==Cl;2==F} +% \indaneh[c]{1==Cl;4==F;2==CH$_{3}$} +% \indaneh[eb]{1D==O;4SA==MeO;4SB==OMe;5==Cl;6==Cl} +% \end{verbatim} +% +% \begin{macro}{\indaneh} +% \begin{macro}{\indanehi} +% \begin{macrocode} +\def\indaneh{\@ifnextchar[{\@indaneh[@}{\@indaneh[rb]}} +\def\@indaneh[#1]#2{% +\iforigpt \typeout{command `indaneh' % + is based on `nonaheteroh'.}\fi% +\nonaheteroh[#1]{}{#2}} +\def\indanehi{\@ifnextchar[{\@indanehi[@}{\@indanehi[rb]}} +\def\@indanehi[#1]#2{% +\iforigpt \typeout{command `indanehi' % + is based on `nonaheterohi'.}\fi% +\nonaheterohi[#1]{}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% \section{Cyclobutane derivatives} +% +% The macros |\cyclobutane| has an +% argument |SUBSLIST| as well as an optional argument |BONDLIST|. +% This macro is based on the \verb/\fourhetero/ command for drawing +% four-membered heterocycles. +% \begin{verbatim} +% *************************** +% * cyclobutane derivatives * +% *************************** +% The following numbering is adopted in this macro. +% +% c +% 4 _____ 3 +% d | | b +% | | +% 1 ----- 2<===== the original point +% a +% +% \cyclobutane[BONDLIST]{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one or more +% characters 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$--$4$) is used for designating a plus charge on +% the $n$-carbon. +% \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 |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% \begin{verbatim} +% +% SUBSLIST: list of substituents (max 5 substitution positions) +% +% 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 +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \cyclobutane{1==H;2==F} +% \cyclobutane[c]{1==Cl;4==F;2==CH$_{3}$} +% \cyclobutane[eb]{1D==O;4SA==MeO;4SB==OMe} +% \end{verbatim} +% +% \begin{macro}{\cyclobutane} +% \begin{macrocode} +\def\cyclobutane{\@ifnextchar[{\@cyclobutane[@}{\@cyclobutane[]}} +\def\@cyclobutane[#1]#2{% +\iforigpt \typeout{command `cyclobutane' % + is based on `fourhetero'.}\fi% +\fourhetero[#1]{}{#2}} +% \end{macrocode} +% \end{macro} +% +% \section{Cyclopropane derivatives} +% +% The macros |\cyclopropane| has an +% argument |SUBSLIST| as well as an optional argument |BONDLIST|. +% This macro is based on the \verb/\threehetero/ command for drawing +% three-membered heterocycles. +% \begin{verbatim} +% **************************** +% * cyclopropane derivatives * +% * (vertical type) * +% **************************** +% The following numbering is adopted in this macro. +% +% b +% 3--------2 +% c ` / a +% `1/ <===== the original point +% +% +% \cyclopropane[BONDLIST]{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one or more +% characters selected from a to c, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The option `A' is used for designating an aromatic character with a +% circle. +% The option `$n+$' ($n=1$--$3$) is used for designating a plus charge on +% the $n$-carbon, while +% the case $n=4$--$6$) indicates a plus charge outside the ring. +% The option `0+' draws a plus symbol 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 |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% \begin{verbatim} +% +% SUBSLIST: list of substituents (max 3 substitution positions) +% +% 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 +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% +% e.g. +% +% \cyclopropane{1==N}{1==Cl;2==F} +% +% \end{verbatim} +% +% \begin{macro}{\cyclopropane} +% \begin{macro}{\cyclopropanev} +% \begin{macrocode} +\def\cyclopropane{\@ifnextchar[{\@cyclopropane[@}{\@cyclopropane[]}} +\def\@cyclopropane[#1]#2{% +\iforigpt \typeout{command `cyclopropane' % + is based on `threehetero'.}\fi% +\threehetero[#1]{}{#2}} +\let\cyclopropanev=\cyclopropane +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The macros |\cyclopropanei| has an +% argument |SUBSLIST| as well as an optional argument |BONDLIST|. +% This macro is based on the \verb/\threehetero/ command for drawing +% three-membered heterocycles. +% \begin{verbatim} +% **************************** +% * cyclopropane derivatives * +% * (inverse vertical type) * +% **************************** +% The following numbering is adopted in this macro. +% +% /1` <===== the original point +% c / ` a +% 3--------2 +% b +% +% \cyclopropanei[BONDLIST]{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one or more +% characters selected from a to c, each of which indicates the presence of +% an inner (endcyclic) double bond on the corresponding position. +% The option `A' is used for designating an aromatic character with a +% circle. +% The option `$n+$' ($n=1$--$3$) is used for designating a plus charge on +% the $n$-carbon, while +% the case $n=4$--$6$) indicates a plus charge outside the ring. +% The option `0+' draws a plus symbol 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 |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% \begin{verbatim} +% +% SUBSLIST: list of substituents (max 3 substitution positions) +% +% 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 +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% +% e.g. +% +% \cyclopropanei{1==N}{1==Cl;2==F} +% +% \end{verbatim} +% \changes{v1.02}{1998/10/20}{Newly added command} +% +% \begin{macro}{\cyclopropanei} +% \begin{macro}{\cyclopropenevi} +% \begin{macrocode} +\def\cyclopropanei{\@ifnextchar[{\@cyclopropanei[@}{\@cyclopropanei[]}} +\def\@cyclopropanei[#1]#2{% +\iforigpt \typeout{command `cyclopropanei' % + is based on `threeheteroi'.}\fi% +\threeheteroi[#1]{}{#2}} +\let\cyclopropanevi=\cyclopropanei +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\cyclopropaneh} +% \begin{macrocode} +\def\cyclopropaneh{\@ifnextchar[{\@cyclopropaneh[@}{\@cyclopropaneh[]}} +\def\@cyclopropaneh[#1]#2{% +\iforigpt \typeout{command `cyclopropaneh' % + is based on `threeheteroh'.}\fi% +\threeheteroh[#1]{}{#2}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\cyclopropanehi} +% \begin{macrocode} +\def\cyclopropanehi{\@ifnextchar[{\@cyclopropanehi[@}{\@cyclopropanehi[]}} +\def\@cyclopropanehi[#1]#2{% +\iforigpt \typeout{command `cyclopropanehi' % + is based on `threeheterohi'.}\fi% +\threeheterohi[#1]{}{#2}} +%</lowcycle> +% \end{macrocode} +% \end{macro} +% +% \Finale +% +\endinput diff --git a/Master/texmf-dist/source/latex/xymtex/base/lowcycle.ins b/Master/texmf-dist/source/latex/xymtex/base/lowcycle.ins new file mode 100644 index 00000000000..9421c429362 --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/lowcycle.ins @@ -0,0 +1,53 @@ +\def\batchfile{lowcycle.ins} +\input docstrip.tex +\preamble + +This is a generated file. + +Copyright 1996,1998,2001,2002,2004,2010 by Shinsaku Fujita +all rights reserved. +This style file is created for drawing chemical structural formulas +This style file is to be contained in the ``xymtex'' directory which +is an input directory for TeX. + +This file is part of the XyMTeX system. +======================================= +Old Versions: +Version 1.01 Released on August 16, 1996 +Version 1.02 Released on October 31, 1996 (private version) +Version 2.00 Released on December 25, 1998 +Version 2.01 Released on June 20, 2001 (private version) +Version 3.00 Released on April 30, 2002 +Version 4.00 Released on May 30, 2002 (private version) +Version 4.00 Released on August 30, 2004 + +The Present Version: +Version 5.00 Released on October 01, 2010 + +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 lowcycle.dtx and lowcycle.ins +and the derived file lowcycle.sty. + +======================================= + +\endpreamble + +\keepsilent + +\generateFile{lowcycle.drv}{t}{% + \from{lowcycle.dtx}{driver}} + +\generateFile{lowcycle.sty}{t}{% + \from{lowcycle.dtx}{lowcycle}} + +\endinput diff --git a/Master/texmf-dist/source/latex/xymtex/base/methylen.dtx b/Master/texmf-dist/source/latex/xymtex/base/methylen.dtx new file mode 100644 index 00000000000..a1581b92206 --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/methylen.dtx @@ -0,0 +1,6419 @@ +% \iffalse meta-comment +%% File: methylen.dtx +% +% Copyright 1998,2001,2002,2004,2005,2010,2013 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 methylen.dtx and methylen.ins +% and the derived file methylen.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{methylen} +% \def\versi@ndate{October 31, 1998} +% \def\versi@nno{ver1.02} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{methylen} +% \def\versi@ndate{December 25, 1998} +% \def\versi@nno{ver2.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{methylen} +% \def\versi@ndate{June 20, 2001} +% \def\versi@nno{ver2.01} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{methylen} +% \def\versi@ndate{April 30, 2002} +% \def\versi@nno{ver3.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{methylen} +% \def\versi@ndate{May 30, 2002} +% \def\versi@nno{ver4.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{methylen} +% \def\versi@ndate{August 30, 2004} +% \def\versi@nno{ver4.01} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{methylen} +% \def\versi@ndate{July 20, 2005} +% \def\versi@nno{ver4.03} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{methylen} +% \def\versi@ndate{October 01, 2010} +% \def\versi@nno{ver5.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{methylen} +% \def\versi@ndate{March 29, 2013} +% \def\versi@nno{ver5.01b} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{methylen} +% \def\versi@ndate{June 27, 2013} +% \def\versi@nno{ver5.01bbb} +\def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \fi +% +% \CheckSum{8103} +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +% +% \setcounter{StandardModuleDepth}{1} +% +% \StopEventually{} +% \MakeShortVerb{\|} +% +% \iffalse +% \changes{v1.02}{1998/10/31}{first edition for LaTeX2e} +% \changes{v2.00}{1998/12/25}{enhanced edition for LaTeX2e} +% \changes{v2.01}{2001/06/20}{Size reduction and Clip information} +% \changes{v2.01}{2001/6/20}{Size reduction and clipping information} +% \changes{v3.00}{2002/4/30}{sfpicture environment, etc.} +% \changes{v4.00}{2002/05/30}{PostScript output and ShiftPicEnv} +% \changes{v4.01}{2004/08/30}{Minor additions} +% \changes{v4.03}{2005/07/20}{Wave bonds} +% \changes{v5.00}{2010/10/01}{For bond coloring and the LaTeX Project Public License} +% \changes{v5.01b}{2013/03/29}{bug fix for \cs{yltrimethyleneposition}} +% \changes{v5.01bb}{2013/06/22}{another bug fix for \cs{yltrimethyleneposition} etc.} +% \changes{v5.01bbb}{2013/06/27}{addition: Sd, Su, WU, WV, WA, WB etc. } +% \changes{v5.01}{2013/07/20}{bug fix} +% \fi +% +% \iffalse +%<*driver> +\NeedsTeXFormat{pLaTeX2e} +% \fi +\ProvidesFile{methylen.dtx}[2013/07/20 v5.01 XyMTeX{} package file] +% \iffalse +\documentclass{ltxdoc} +\GetFileInfo{methylen.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{Methylene Chains by {\sffamily methylen.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 +} +\date{\filedate} +% +\begin{document} + \maketitle + \DocInput{methylen.dtx} +\end{document} +%</driver> +% \fi +% +% \section{Introduction}\label{methylen:intro} +% +% \subsection{Options for {\sffamily docstrip}} +% +% \DeleteShortVerb{\|} +% \begin{center} +% \begin{tabular}{|l|l|} +% \hline +% \emph{option} & \emph{function}\\ \hline +% methylen & methylen.sty \\ +% driver & driver for this dtx file \\ +% \hline +% \end{tabular} +% \end{center} +% \MakeShortVerb{\|} +% +% \subsection{Version Information} +% +% \begin{macrocode} +%<*methylen> +\typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 5.01} +\typeout{ -- Released July 20, 2013 by Shinsaku Fujita} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\j@urnalname{methylen} +\def\versi@ndate{July 20, 2013} +\def\versi@nno{ver5.01} +\def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\typeout{XyMTeX Macro File `\j@urnalname' (\versi@nno) <\versi@ndate>% +\space[\copyrighth@lder]} +% \end{macrocode} +% +% \section{List of commands for methylen.sty} +% +% \begin{verbatim} +% ********************************** +% * methylen.sty: list of commands * +% ********************************** +% +% <Switches for drawing substituents and bonds> +% +% \if@adoublebond \if@bdoublebond +% \if@Adoublebond \if@adoublebond} +% \reset@double +% \if@linterchainsw \if@rinterchainsw} +% \reset@interchainsw +% +% <Command for drawing substituents and bonds> +% +% \@methsubsta \@methsubstd \@methsubstdL +% \SKbondA \SKbondB +% \bondA \bondAA +% \bondB \bondBB +% +% <Basic commands for typesetting aliphatic chains> +% +% \@@trimethylene +% \@@dimethylene +% +% <Commands for adjusting substitution sites> +% +% \yltrimethyleneposition +% \yldimethyleneposition +% +% <Commands for drawing aliphatic chains> +% +% \trimethylene \trimethylenei +% \dimethylene \dimethylenei +% \tetramethylene \tetramethylenei +% \pentamethylene \pentamethylenei +% \hexamethylene \hexamethylenei +% \heptamethylene \heptamethylenei +% \octamethylene octamethylenei +% \nonamethylene \nonamethylenei +% \decamethylene \decamethylenei +% +% \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{Westbond}{\input aliphat.sty\relax}{} +\@ifundefined{bzdrv}{\input carom.sty\relax}{} +\@ifundefined{hbonde}{\input hetaromh.sty\relax}{} +\unitlength=0.1pt +% \end{macrocode} +% +% \section{Setting Substituents} +% +% Substitutions on each methylene of a polymethylene chain +% is typeset by macros |\@methsubsta| etc. +% The macro |\@methsubsta| is used to place substituents on an +% upper-side methylene. A new bond modifier ``W'' is added to +% typeset a terminal substituent. +% +% \changes{v5.01}{2013/06/27}{Addition Su, Sd, WU, WA, WB} +% +% \begin{macro}{\@methsubsta} +% \begin{macrocode} +\newif\if@wrongbdWa \@wrongbdWafalse +\newif\if@wrongbdWd \@wrongbdWdfalse +\newif\if@wrongbdWaL \@wrongbdWaLfalse +\newif\if@wrongbdWdL \@wrongbdWdLfalse +\def\@methsubsta{% +\if@aclip% %clipping + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \Put@Line(0,436)(0,1){110}% % single bond at 1 + \putlratom{-31}{563}{\@memberb}% % left or right type + \else\if\@tmpc B%(B) beta + \yl@xdiff=-36\relax + \yl@ydiff=-27\relax + {% + \thicklines% + \Put@Line(-18,436)(-3,5){60}% % single bond at 1 + }% + \putlatom{-42}{563}{\@memberb}% % left type + \else\if\@tmpc A%(A) alpha + \yl@xdiff=37\relax + \yl@ydiff=-27\relax + \dotorline(18,436)(3,5){60}/(18,436)(72,526)% + \putratom{41}{563}{\@memberb}% % right type + \else\if\@tmpc b%(b) beta + \yl@xdiff=-36\relax + \yl@ydiff=-27\relax + \putlatom{-42}{563}{\@memberb}% % left type + \Put@Line(-18,436)(-3,5){60}% % single bond at 1 + \else\if\@tmpc a%(a) alpha + \yl@xdiff=37\relax + \yl@ydiff=-27\relax + \Put@Line(18,436)(3,5){60}% % single bond at 1 + \putratom{41}{563}{\@memberb}% % right type +%2023/06/27 + \else\if\@tmpc U% undefined + \yl@xdiff=-36\relax + \yl@ydiff=-27\relax + {% + \WaveBonds% + \Put@Line(-18,436)(-3,5){60}% % single bond at 1 + }% + \putlatom{-42}{563}{\@memberb}% % left type + \else\if\@tmpc V% undefined + \yl@xdiff=37\relax + \yl@ydiff=-27\relax + {% + \WaveBonds% + \Put@Line(18,436)(3,5){60}% % wavy single bond at 1 + }% + \putratom{41}{563}{\@memberb}% % right type + \else\if\@tmpc d%(d) alpha + \yl@xdiff=-36\relax + \yl@ydiff=-27\relax + \dotorline(-18,436)(-3,5){60}/(-18,436)(-72,536)% + \putlatom{-42}{563}{\@memberb}% % left type + \else\if\@tmpc u%(u) beta + \yl@xdiff=37\relax + \yl@ydiff=-27\relax + {% + \thicklines% + \Put@Line(18,436)(3,5){60}% % single bond at 1 + }% + \putratom{41}{563}{\@memberb}% % right type +% + \fi\fi + \fi\fi\fi\fi\fi\fi\fi% + \else\if\@tmpb D%double bond + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \putlratom{-31}{563}{\@memberb}% % left or right type + \Put@Line(-12,436)(0,1){110}% % double bond at 1 + \Put@Line(12,436)(0,1){110}% % double bond at 1 + \else\if\@tmpb B%beta single bond + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \putlratom{-31}{563}{\@memberb}% % left or right type + {% + \thicklines% + \Put@Line(0,436)(0,1){110}% % single bond at 1 + }% + \else\if\@tmpb A%alpha single bond + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \putlratom{-31}{563}{\@memberb}% % left or right type + \dotorline(0,436)(0,1){110}/(0,436)(0,546)% + \else\if\@tmpb U% undefined + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \putlratom{-31}{563}{\@memberb}% % left or right type + {% + \WaveBonds% + \Put@Line(0,436)(0,1){110}% % single bond at 1 + }% + \else\if\@tmpb W%beta single bond + \ifx\@tmpc\empty% + \yl@xdiff=-10\relax + \yl@ydiff=46\relax + \if@wrongbdWa + \XyMTeXWarning{Wrong Bond-Modifier (W)}% + \fi + \Put@Line(40,382)(5,-3){100}% % single bond at 1 + \putratom{150}{276}{\@memberb}% % left or right type +%2013/06/27 + \else\if\@tmpc U%beta undefined + \yl@xdiff=-10\relax + \yl@ydiff=46\relax + {% + \WaveBonds% + \Put@Line(40,382)(5,-3){100}% % single bond at 1 + }% + \putratom{150}{276}{\@memberb}% % left or right type + \else\if\@tmpc B%beta + \yl@xdiff=-10\relax + \yl@ydiff=46\relax + {% + \thicklines% + \Put@Line(40,382)(5,-3){100}% % single bond at 1 + }% + \putratom{150}{276}{\@memberb}% % left or right type + \else\if\@tmpc A%alpha + \yl@xdiff=-10\relax + \yl@ydiff=46\relax + \dotorline(40,382)(5,-3){100}/(40,382)(140,322)% + \putratom{150}{276}{\@memberb}% % left or right type +% + \fi\fi\fi\fi + \else% + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \putlratom{-31}{563}{\@memberb}% % left or right type + \Put@Line(0,436)(0,1){110}% % single bond at 1 + \fi\fi\fi\fi\fi\fi% +\else% % no clipping + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \Put@Line(0,406)(0,1){140}% % single bond at 1 + \putlratom{-31}{563}{\@memberb}% % left or right type + \else\if\@tmpc B%(B) beta + \yl@xdiff=-30\relax + \yl@ydiff=-37\relax + \putlatom{-42}{563}{\@memberb}% % left type + {% + \thicklines% + \Put@Line(0,406)(-3,5){72}% % single bond at 1 + }% + \else\if\@tmpc A%(A) alpha + \yl@xdiff=31\relax + \yl@ydiff=-37\relax + \putratom{41}{563}{\@memberb}% % right type + \dotorline(0,406)(3,5){72}/(0,406)(72,526)% + \else\if\@tmpc b%(b) beta + \yl@xdiff=-30\relax + \yl@ydiff=-37\relax + \putlatom{-42}{563}{\@memberb}% % left type + \Put@Line(0,406)(-3,5){72}% % single bond at 1 + \else\if\@tmpc a%(a) alpha + \yl@xdiff=31\relax + \yl@ydiff=-37\relax + \putratom{41}{563}{\@memberb}% % right type + \Put@Line(0,406)(3,5){72}% % single bond at 1 +%2023/06/27 + \else\if\@tmpc U% undefined + \yl@xdiff=-30\relax + \yl@ydiff=-37\relax + {% + \WaveBonds% + \Put@Line(0,406)(-3,5){72}% % single bond at 1 + }% + \putlatom{-42}{563}{\@memberb}% % left type + \else\if\@tmpc V% undefined + \yl@xdiff=31\relax + \yl@ydiff=-37\relax + {% + \WaveBonds% + \Put@Line(0,406)(3,5){72}% % wavy single bond at 1 + }% + \putratom{41}{563}{\@memberb}% % right type + \else\if\@tmpc d%(d) alpha + \yl@xdiff=-30\relax + \yl@ydiff=-37\relax + \dotorline(0,406)(-3,5){72}/(0,406)(-72,526)% + \putlatom{-42}{563}{\@memberb}% % left type + \else\if\@tmpc u%(u) beta + \yl@xdiff=31\relax + \yl@ydiff=-37\relax + {% + \thicklines% + \Put@Line(0,406)(3,5){72}% % single bond at 1 + }% + \putratom{41}{563}{\@memberb}% % right type +% + \fi\fi\fi\fi + \fi\fi\fi\fi\fi% + \else\if\@tmpb D%double bond + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \putlratom{-31}{563}{\@memberb}% % left or right type + \Put@Line(-12,406)(0,1){140}% % double bond at 1 + \Put@Line(12,406)(0,1){140}% % double bond at 1 + \else\if\@tmpb B%beta single bond + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \putlratom{-31}{563}{\@memberb}% % left or right type + {% + \thicklines% + \Put@Line(0,406)(0,1){140}% % single bond at 1 + }% + \else\if\@tmpb A%alpha single bond + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \putlratom{-31}{563}{\@memberb}% % left or right type + \dotorline(0,406)(0,1){140}/(0,406)(0,546)% + \else\if\@tmpb U%undefined + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \putlratom{-31}{563}{\@memberb}% % left or right type + {% + \WaveBonds% + \Put@Line(0,406)(0,1){140}% % single bond at 1 + }% + \else\if\@tmpb W%beta single bond + \ifx\@tmpc\empty% + \yl@xdiff=-10\relax + \yl@ydiff=58\relax + \if@wrongbdWa + \XyMTeXWarning{Wrong Bond-Modifier (W)}% + \fi + \Put@Line(0,406)(5,-3){120}% % single bond at 1 + \putratom{130}{276}{\@memberb}% % left or right type +%2013/06/27 + \else\if\@tmpc U%beta undefined + \yl@xdiff=-10\relax + \yl@ydiff=58\relax + {% + \WaveBonds% + \Put@Line(0,406)(5,-3){120}% % single bond at 1 + }% + \putratom{130}{276}{\@memberb}% % left or right type + \else\if\@tmpc B%beta + \yl@xdiff=-10\relax + \yl@ydiff=58\relax + {% + \thicklines% + \Put@Line(0,406)(5,-3){120}% % single bond at 1 + }% + \putratom{130}{276}{\@memberb}% % left or right type + \else\if\@tmpc A%alpha + \yl@xdiff=-10\relax + \yl@ydiff=58\relax + \dotorline(0,406)(5,-3){120}/(0,406)(120,334)% + \putratom{130}{276}{\@memberb}% % left or right type +% + \fi\fi\fi\fi + \else% + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \putlratom{-31}{563}{\@memberb}% % left or right type + \Put@Line(0,406)(0,1){140}% % single bond at 1 + \fi\fi\fi\fi\fi\fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% The macro |\@methsubstd| is used to place substituents on a +% down-side methylene. A new bond modifier ``W'' is added to +% typeset a terminal substituent. +% +% \changes{v5.01}{2013/06/27}{Addition Su, Sd, WU, WA, WB} +% +% \begin{macro}{\@methsubstd} +% \begin{macrocode} +\def\@methsubstd{% +\if@clip %clipping + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \putlratom{-31}{-230}{\@memberb}% % left or right type + \Put@Line(0,-30)(0,-1){110}% % single bond at 4 + \else\if\@tmpc B%(B) beta + \yl@xdiff=-36\relax + \yl@ydiff=100\relax + {% + \thicklines% + \Put@Line(-18,-30)(-3,-5){60}% % single bond at 4 + }% + \putlatom{-42}{-230}{\@memberb}% % left type + \else\if\@tmpc A%(A) alpha + \yl@xdiff=37\relax + \yl@ydiff=100\relax + \dotorline(18,-30)(3,-5){60}/(18,-30)(72,-120)% + \putratom{41}{-230}{\@memberb}% % right type + \else\if\@tmpc b%(b) beta + \yl@xdiff=-36\relax + \yl@ydiff=100\relax + \putlatom{-42}{-230}{\@memberb}% % left type + \Put@Line(-18,-30)(-3,-5){60}% % single bond at 4 + \else\if\@tmpc a%(a) alpha + \yl@xdiff=37\relax + \yl@ydiff=100\relax + \putratom{41}{-230}{\@memberb}% % right type + \Put@Line(18,-30)(3,-5){60}% % single bond at 4 +%2023/06/27 + \else\if\@tmpc U% undefined + \yl@xdiff=-36\relax + \yl@ydiff=100\relax + {% + \WaveBonds% + \Put@Line(-18,-30)(-3,-5){60}% % single bond at 4 + }% + \putlatom{-42}{-230}{\@memberb}% % left type + \else\if\@tmpc V% undefined + \yl@xdiff=37\relax + \yl@ydiff=100\relax + {% + \WaveBonds% + \Put@Line(18,-30)(3,-5){60}% % wavy single bond at 1 + }% + \putratom{41}{-230}{\@memberb}% % right type + \else\if\@tmpc d%(d) alpha + \yl@xdiff=-36\relax + \yl@ydiff=100\relax + \dotorline(-18,-30)(-3,-5){60}/(-18,-30)(-78,-130)% + \putlatom{-42}{-230}{\@memberb}% % left type + \else\if\@tmpc u%(u) beta + \yl@xdiff=37\relax + \yl@ydiff=100\relax + {% + \thicklines% + \Put@Line(18,-30)(3,-5){60}% % single bond at 4 + }% + \putratom{41}{-230}{\@memberb}% % right type +% + \fi\fi\fi\fi + \fi\fi\fi\fi\fi% + \else\if\@tmpb D%double bond + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \putlratom{-31}{-230}{\@memberb}% % left or right type + \Put@Line(-12,-30)(0,-1){110}% % double bond at 4 + \Put@Line(12,-30)(0,-1){110}% % double bond at 4 + \else\if\@tmpb B%beta single bond + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \putlratom{-31}{-230}{\@memberb}% % left or right type + {% + \thicklines% + \Put@Line(0,-30)(0,-1){110}% % single bond at 4 + }% + \else\if\@tmpb A%alpha single bond + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \putlratom{-31}{-230}{\@memberb}% % left or right type + \dotorline(0,-30)(0,-1){110}/(0,-30)(0,-140)% + \else\if\@tmpb U% undefined + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \putlratom{-31}{-230}{\@memberb}% % left or right type + {% + \WaveBonds% + \Put@Line(0,-30)(0,-1){110}% % single bond at 4 + }% + \else\if\@tmpb W%beta single bond + \ifx\@tmpc\empty% + \yl@xdiff=-10\relax + \yl@ydiff=30\relax + \putlratom{150}{54}{\@memberb}% % left or right type + \Put@Line(40,24)(5,3){100}% % single bond at 4 + \if@wrongbdWd + \XyMTeXWarning{Wrong Bond-Modifier (W)}% + \fi +%2013/06/27 + \else\if\@tmpc U%beta undefined + \yl@xdiff=-10\relax + \yl@ydiff=30\relax + {% + \WaveBonds% + \Put@Line(40,24)(5,3){100}% % single bond at 4 + }% + \putlratom{150}{54}{\@memberb}% % left or right type + \else\if\@tmpc B%beta + \yl@xdiff=-10\relax + \yl@ydiff=30\relax + {% + \thicklines% + \Put@Line(40,24)(5,3){100}% % single bond at 4 + }% + \putlratom{150}{54}{\@memberb}% % left or right type + \else\if\@tmpc A%alpha + \yl@xdiff=-10\relax + \yl@ydiff=30\relax + \dotorline(40,24)(5,3){100}/(40,24)(140,84)% + \putlratom{150}{54}{\@memberb}% % left or right type +% + \fi\fi\fi\fi + \else% + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \putlratom{-31}{-230}{\@memberb}% % left or right type + \Put@Line(0,-30)(0,-1){110}% % single bond at 4 + \fi\fi\fi\fi\fi\fi% + \else% no clipping + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \putlratom{-31}{-230}{\@memberb}% % left or right type + \Put@Line(0,0)(0,-1){140}% % single bond at 4 + \else\if\@tmpc B%(B) beta + \yl@xdiff=-30\relax + \yl@ydiff=110\relax + \putlatom{-42}{-230}{\@memberb}% % left type + {% + \thicklines% + \Put@Line(0,0)(-3,-5){72}% % single bond at 4 + }% + \else\if\@tmpc A%(A) alpha + \yl@xdiff=31\relax + \yl@ydiff=110\relax + \putratom{41}{-230}{\@memberb}% % right type + \dotorline(0,0)(3,-5){72}/(0,0)(72,-120)% + \else\if\@tmpc b%(b) beta + \yl@xdiff=-30\relax + \yl@ydiff=110\relax + \putlatom{-42}{-230}{\@memberb}% % left type + \Put@Line(0,0)(-3,-5){72}% % single bond at 4 + \else\if\@tmpc a%(a) alpha + \yl@xdiff=31\relax + \yl@ydiff=110\relax + \putratom{41}{-230}{\@memberb}% % right type + \Put@Line(0,0)(3,-5){72}% % single bond at 4 +%2023/06/27 + \else\if\@tmpc U% undefined + \yl@xdiff=-30\relax + \yl@ydiff=110\relax + {% + \WaveBonds% + \Put@Line(0,0)(-3,-5){72}% % single bond at 4 + }% + \putlatom{-42}{-230}{\@memberb}% % left type + \else\if\@tmpc V% undefined + \yl@xdiff=31\relax + \yl@ydiff=110\relax + {% + \WaveBonds% + \Put@Line(0,0)(3,-5){72}% % wavy single bond at 1 + }% + \putratom{41}{-230}{\@memberb}% % right type + \else\if\@tmpc d%(d) alpha + \yl@xdiff=-30\relax + \yl@ydiff=110\relax + \dotorline(0,0)(-3,-5){72}/(0,0)(-72,-120)% + \putlatom{-42}{-230}{\@memberb}% % left type + \else\if\@tmpc u%(u) beta + \yl@xdiff=31\relax + \yl@ydiff=110\relax + {% + \thicklines% + \Put@Line(0,0)(3,-5){72}% % single bond at 4 + }% + \putratom{41}{-230}{\@memberb}% % right type +% + \fi\fi\fi\fi + \fi\fi\fi\fi\fi% + \else\if\@tmpb D%double bond + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \putlratom{-31}{-230}{\@memberb}% % left or right type + \Put@Line(-12,0)(0,-1){140}% % double bond at 4 + \Put@Line(12,0)(0,-1){140}% % double bond at 4 + \else\if\@tmpb B%beta single bond + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \putlratom{-31}{-230}{\@memberb}% % left or right type + {% + \thicklines% + \Put@Line(0,0)(0,-1){140}% % single bond at 4 + }% + \else\if\@tmpb A%alpha single bond + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \putlratom{-31}{-230}{\@memberb}% % left or right type + \dotorline(0,0)(0,-1){140}/(0,0)(0,-140)% + \else\if\@tmpb U% undefined + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \putlratom{-31}{-230}{\@memberb}% % left or right type + {% + \WaveBonds% + \Put@Line(0,0)(0,-1){140}% % single bond at 4 + }% + \else\if\@tmpb W%beta single bond + \ifx\@tmpc\empty% + \yl@xdiff=-10\relax + \yl@ydiff=30\relax + \putlratom{150}{54}{\@memberb}% % left or right type + \Put@Line(0,0)(5,3){140}% % single bond at 4 + \if@wrongbdWd + \XyMTeXWarning{Wrong Bond-Modifier (W)}% + \fi +%2013/06/27 + \else\if\@tmpc U%beta undefined + \yl@xdiff=-10\relax + \yl@ydiff=30\relax + {% + \WaveBonds% + \Put@Line(0,0)(5,3){140}% % single bond at 4 + }% + \putlratom{150}{54}{\@memberb}% % left or right type + \else\if\@tmpc B%beta + \yl@xdiff=-10\relax + \yl@ydiff=30\relax + {% + \thicklines% + \Put@Line(0,0)(5,3){140}% % single bond at 4 + }% + \putlratom{150}{54}{\@memberb}% % left or right type + \else\if\@tmpc A%alpha + \yl@xdiff=-10\relax + \yl@ydiff=30\relax + \dotorline(0,0)(5,3){140}/(0,0)(140,84)% + \putlratom{150}{54}{\@memberb}% % left or right type +% + \fi\fi\fi\fi + \else% + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \putlratom{-31}{-230}{\@memberb}% % left or right type + \Put@Line(0,0)(0,-1){140}% % single bond at 4 + \fi\fi\fi\fi\fi\fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% The macro |\@methsubstdL| is used to place substituents on a +% left-teminal down-side methylene. A new bond modifier ``W'' is +% added to typeset a terminal substituent. +% \changes{v5.01}{2013/06/27}{bug fix SU to SV, SV to SU. Addition Su, Sd, WU, WA, WB} +% +% \begin{macro}{\@methsubstdL} +% \begin{macrocode} +\def\@methsubstdL{% +\if@clip %clipping + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \Put@Line(0,-30)(0,-1){110}% % single bond at 4 + \putlratom{-31}{-230}{\@memberb}% % left or right type + \else\if\@tmpc B%(B) beta + \yl@xdiff=-36\relax + \yl@ydiff=100\relax + {% + \thicklines% + \Put@Line(-18,-30)(-3,-5){60}% % single bond at 4 + }% + \putlatom{-42}{-230}{\@memberb}% % left type + \else\if\@tmpc A%(A) alpha + \yl@xdiff=37\relax + \yl@ydiff=100\relax + \dotorline(18,-30)(3,-5){60}/(18,-30)(72,-120)% + \putratom{41}{-230}{\@memberb}% % right type + \else\if\@tmpc b%(b) beta + \yl@xdiff=-36\relax + \yl@ydiff=100\relax + \Put@Line(-18,-30)(-3,-5){60}% % single bond at 4 + \putlatom{-42}{-230}{\@memberb}% % left type + \else\if\@tmpc a%(a) alpha + \yl@xdiff=37\relax + \yl@ydiff=100\relax + \Put@Line(18,-30)(3,-5){60}% % single bond at 4 + \putratom{41}{-230}{\@memberb}% % right type + \else\if\@tmpc U%(U) beta undefined%bug fix 2013/06/27 V-->U + \yl@xdiff=-36\relax + \yl@ydiff=100\relax + {% + \WaveBonds% + \Put@Line(-18,-30)(-3,-5){60}% % single bond at 4 + }% + \putlatom{-42}{-230}{\@memberb}% % left type + \else\if\@tmpc V%(V) alpha undefined%bug fix 2013/06/27 U-->V + \yl@xdiff=37\relax + \yl@ydiff=100\relax + {% + \WaveBonds% + \Put@Line(18,-30)(3,-5){60}% % single bond at 4 + }% + \putratom{41}{-230}{\@memberb}% % right type +%2013/06/27 + \else\if\@tmpc d%(d) alpha + \yl@xdiff=-36\relax + \yl@ydiff=100\relax + \dotorline(-18,-30)(-3,-5){60}/(-18,-30)(-78,-130)% + \putlatom{-42}{-230}{\@memberb}% % left type + \else\if\@tmpc u%(u) beta + \yl@xdiff=37\relax + \yl@ydiff=100\relax + {% + \thicklines% + \Put@Line(18,-30)(3,-5){60}% % single bond at 4 + }% + \putratom{41}{-230}{\@memberb}% % right type +% + \fi\fi + \fi\fi\fi\fi\fi\fi\fi% + \else\if\@tmpb D%double bond + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \Put@Line(-12,-30)(0,-1){110}% % double bond at 4 + \Put@Line(12,-30)(0,-1){110}% % double bond at 4 + \putlratom{-31}{-230}{\@memberb}% % left or right type + \else\if\@tmpb B%beta single bond + \yl@xdiff=31\relax + \yl@ydiff=90\relax + {% + \thicklines% + \Put@Line(0,-30)(0,-1){110}% % single bond at 4 + }% + \putlratom{-31}{-230}{\@memberb}% % left or right type + \else\if\@tmpb A%alpha single bond + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \dotorline(0,-30)(0,-1){110}/(0,-30)(0,-140)% + \putlratom{-31}{-230}{\@memberb}% % left or right type + \else\if\@tmpb U% undefined + \yl@xdiff=31\relax + \yl@ydiff=90\relax + {% + \WaveBonds% + \Put@Line(0,-30)(0,-1){110}% % single bond at 4 + }% + \putlratom{-31}{-230}{\@memberb}% % left or right type + \else\if\@tmpb W%beta single bond + \ifx\@tmpc\empty% + \yl@xdiff=10\relax + \yl@ydiff=30\relax + \Put@Line(-40,24)(-5,3){100}% % single bond at 4 + \putlatom{-150}{54}{\@memberb}% % lefttype + \if@wrongbdWdL + \XyMTeXWarning{Wrong Bond-Modifier (W)}% + \fi +%2013/06/27 + \else\if\@tmpc U%beta undefined + \yl@xdiff=10\relax + \yl@ydiff=30\relax + {% + \WaveBonds% + \Put@Line(-40,24)(-5,3){100}% % single bond at 4 + }% + \putlatom{-150}{54}{\@memberb}% % left type + \else\if\@tmpc B%beta + \yl@xdiff=10\relax + \yl@ydiff=30\relax + {% + \thicklines% + \Put@Line(-40,24)(-5,3){100}% % single bond at 4 + }% + \putlatom{-150}{54}{\@memberb}% % left type + \else\if\@tmpc A%alpha + \yl@xdiff=10\relax + \yl@ydiff=30\relax + \dotorline(-40,24)(-5,3){100}/(-40,24)(-140,84)% + \putlatom{-150}{54}{\@memberb}% % left type +% + \fi\fi\fi\fi + \else% + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \Put@Line(0,-30)(0,-1){110}% % single bond at 4 + \putlratom{-31}{-230}{\@memberb}% % left or right type + \fi\fi\fi\fi\fi\fi% +\else% no clipping + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \Put@Line(0,0)(0,-1){140}% % single bond at 4 + \putlratom{-31}{-230}{\@memberb}% % left or right type + \else\if\@tmpc B%(B) beta + \yl@xdiff=-30\relax + \yl@ydiff=110\relax + {% + \thicklines% + \Put@Line(0,0)(-3,-5){72}% % single bond at 4 + }% + \putlatom{-42}{-230}{\@memberb}% % left type + \else\if\@tmpc A%(A) alpha + \yl@xdiff=31\relax + \yl@ydiff=110\relax + \dotorline(0,0)(3,-5){72}/(0,0)(72,-120)% + \putratom{41}{-230}{\@memberb}% % right type + \else\if\@tmpc b%(b) beta + \yl@xdiff=-30\relax + \yl@ydiff=110\relax + \Put@Line(0,0)(-3,-5){72}% % single bond at 4 + \putlatom{-42}{-230}{\@memberb}% % left type + \else\if\@tmpc a%(a) alpha + \yl@xdiff=31\relax + \yl@ydiff=110\relax + \Put@Line(0,0)(3,-5){72}% % single bond at 4 + \putratom{41}{-230}{\@memberb}% % right type + \else\if\@tmpc U%(U) beta undefined%bug fix 2013/06/27 V-->U + \yl@xdiff=-30\relax + \yl@ydiff=110\relax + {% + \WaveBonds% + \Put@Line(0,0)(-3,-5){72}% % single bond at 4 + }% + \putlatom{-42}{-230}{\@memberb}% % left type + \else\if\@tmpc V%(V) alpha undefined%bug fix 2013/06/27 U-->V + \yl@xdiff=31\relax + \yl@ydiff=110\relax + {% + \WaveBonds% + \Put@Line(0,0)(3,-5){72}% % single bond at 4 + }% + \putratom{41}{-230}{\@memberb}% % right type +%2013/06/27 + \else\if\@tmpc d%(d) alpha + \yl@xdiff=-30\relax + \yl@ydiff=110\relax + \dotorline(0,0)(-3,-5){72}/(0,0)(-72,-120)% + \putlatom{-42}{-230}{\@memberb}% % left type + \else\if\@tmpc u%(u) beta + \yl@xdiff=31\relax + \yl@ydiff=110\relax + {% + \thicklines% + \Put@Line(0,0)(3,-5){72}% % single bond at 4 + }% + \putratom{41}{-230}{\@memberb}% % right type +% + \fi\fi + \fi\fi\fi\fi\fi\fi\fi% + \else\if\@tmpb D%double bond + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \Put@Line(-12,0)(0,-1){140}% % double bond at 4 + \Put@Line(12,0)(0,-1){140}% % double bond at 4 + \putlratom{-31}{-230}{\@memberb}% % left or right type + \else\if\@tmpb B%beta single bond + \yl@xdiff=31\relax + \yl@ydiff=90\relax + {% + \thicklines% + \Put@Line(0,0)(0,-1){140}% % single bond at 4 + }% + \putlratom{-31}{-230}{\@memberb}% % left or right type + \else\if\@tmpb A%alpha single bond + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \dotorline(0,0)(0,-1){140}/(0,0)(0,-140)% + \putlratom{-31}{-230}{\@memberb}% % left or right type + \else\if\@tmpb U%beta undefined + \yl@xdiff=31\relax + \yl@ydiff=90\relax + {% + \WaveBonds% + \Put@Line(0,0)(0,-1){140}% % single bond at 4 + }% + \putlratom{-31}{-230}{\@memberb}% % left or right type + \else\if\@tmpb W%beta single bond + \ifx\@tmpc\empty% + \yl@xdiff=10\relax + \yl@ydiff=30\relax + \Put@Line(0,0)(-5,3){140}% % single bond at 4 + \putlatom{-150}{54}{\@memberb}% % left type + \if@wrongbdWdL + \XyMTeXWarning{Wrong Bond-Modifier (W)}% + \fi +%2013/06/27 + \else\if\@tmpc U%beta undefined + \yl@xdiff=10\relax + \yl@ydiff=30\relax + {% + \WaveBonds% + \Put@Line(0,0)(-5,3){140}% % single bond at 4 + }% + \putlatom{-150}{54}{\@memberb}% % left type + \else\if\@tmpc B%beta + \yl@xdiff=10\relax + \yl@ydiff=30\relax + {% + \thicklines% + \Put@Line(0,0)(-5,3){140}% % single bond at 4 + }% + \putlatom{-150}{54}{\@memberb}% % left type + \else\if\@tmpc A%alpha + \yl@xdiff=10\relax + \yl@ydiff=30\relax + \dotorline(0,0)(-5,3){140}/(0,0)(-140,84)% + \putlatom{-150}{54}{\@memberb}% % left type +% + \fi\fi\fi\fi + \else% + \yl@xdiff=31\relax + \yl@ydiff=90\relax + \Put@Line(0,0)(0,-1){140}% % single bond at 4 + \putlratom{-31}{-230}{\@memberb}% % left or right type + \fi\fi\fi\fi\fi\fi% + \fi}%end of \@methsubstdL +% \end{macrocode} +% \end{macro} +% +% The macro |\@methsubstaL| is used to place substituents on a +% left-teminal upper-side methylene. A new bond modifier ``W'' is +% added to typeset a terminal substituent. +% \changes{v5.01}{2013/06/27}{bug fix SU to SV, SV to SU. Addition Su, Sd, WU, WA, WB} +% +% \begin{macro}{\@methsubstaL} +% \begin{macrocode} +\def\@methsubstaL{% +\if@aclip% %clipping + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \Put@Line(0,436)(0,1){110}% % single bond at 1 + \putlratom{-31}{563}{\@memberb}% % left or right type + \else\if\@tmpc B%(B) beta + \yl@xdiff=-36\relax + \yl@ydiff=-27\relax + {% + \thicklines% + \Put@Line(-18,436)(-3,5){60}% % single bond at 1 + }% + \putlatom{-42}{563}{\@memberb}% % left type + \else\if\@tmpc A%(A) alpha + \yl@xdiff=37\relax + \yl@ydiff=-27\relax + \dotorline(18,436)(3,5){60}/(18,436)(72,526)% + \putratom{41}{563}{\@memberb}% % right type + \else\if\@tmpc b%(b) beta + \yl@xdiff=-36\relax + \yl@ydiff=-27\relax + \Put@Line(-18,436)(-3,5){60}% % single bond at 1 + \putlatom{-42}{563}{\@memberb}% % left type + \else\if\@tmpc a%(a) alpha + \yl@xdiff=37\relax + \yl@ydiff=-27\relax + \Put@Line(18,436)(3,5){60}% % single bond at 1 + \putratom{41}{563}{\@memberb}% % right type + \else\if\@tmpc U%(U) beta undefined%bug fix 2013/06/27 V-->U + \yl@xdiff=-36\relax + \yl@ydiff=-27\relax + {% + \WaveBonds% + \Put@Line(-18,436)(-3,5){60}% % single bond at 1 + }% + \putlatom{-42}{563}{\@memberb}% % left type + \else\if\@tmpc V%(V) alpha undefined%bug fix 2013/06/27 U-->V + \yl@xdiff=37\relax + \yl@ydiff=-27\relax + {% + \WaveBonds% + \Put@Line(18,436)(3,5){60}% % single bond at 1 + }% + \putratom{41}{563}{\@memberb}% % right type +%2013/06/27 + \else\if\@tmpc d%(d) alpha + \yl@xdiff=-36\relax + \yl@ydiff=-27\relax + \dotorline(-18,436)(-3,5){60}/(-18,436)(-78,536)% + \putlatom{-42}{563}{\@memberb}% % left type + \else\if\@tmpc u%(u) beta + \yl@xdiff=37\relax + \yl@ydiff=-27\relax + {% + \thicklines% + \Put@Line(18,436)(3,5){60}% % single bond at 1 + }% + \putratom{41}{563}{\@memberb}% % right type +% + \fi\fi + \fi\fi\fi\fi\fi\fi\fi% + \else\if\@tmpb D%double bond + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \Put@Line(-12,436)(0,1){110}% % double bond at 1 + \Put@Line(12,436)(0,1){110}% % double bond at 1 + \putlratom{-31}{563}{\@memberb}% % left or right type + \else\if\@tmpb B%beta single bond + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + {% + \thicklines% + \Put@Line(0,436)(0,1){110}% % single bond at 1 + }% + \putlratom{-31}{563}{\@memberb}% % left or right type + \else\if\@tmpb A%alpha single bond + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \dotorline(0,436)(0,1){110}/(0,436)(0,546)% + \putlratom{-31}{563}{\@memberb}% % left or right type + \else\if\@tmpb U%beta undefined + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + {% + \WaveBonds% + \Put@Line(0,436)(0,1){110}% % single bond at 1 + }% + \putlratom{-31}{563}{\@memberb}% % left or right type + \else\if\@tmpb W%beta single bond + \ifx\@tmpc\empty% + \yl@xdiff=10\relax + \yl@ydiff=46\relax + \Put@Line(-40,382)(-5,-3){100}% % single bond at 1 + \putlatom{-150}{276}{\@memberb}% % left type + \if@wrongbdWaL + \XyMTeXWarning{Wrong Bond-Modifier (W)}% + \fi +%2013/06/27 + \else\if\@tmpc U%undefined + \yl@xdiff=10\relax + \yl@ydiff=46\relax + {% + \WaveBonds% + \Put@Line(-40,382)(-5,-3){100}% % single bond at 1 + }% + \putlatom{-150}{276}{\@memberb}% % left type + \else\if\@tmpc B%beta + \yl@xdiff=10\relax + \yl@ydiff=46\relax + {% + \thicklines% + \Put@Line(-40,382)(-5,-3){100}% % single bond at 1 + }% + \putlatom{-150}{276}{\@memberb}% % left type + \else\if\@tmpc A%alpha + \yl@xdiff=10\relax + \yl@ydiff=46\relax + \dotorline(-40,382)(-5,-3){100}/(-40,382)(-140,322)% + \putlatom{-150}{276}{\@memberb}% % left type +% + \fi\fi\fi\fi + \else% + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \Put@Line(0,436)(0,1){110}% % single bond at 1 + \putlratom{-31}{563}{\@memberb}% % left or right type + \fi\fi\fi\fi\fi\fi% +\else% % no clipping + \if\@tmpb S%single bond + \ifx\@tmpc\empty% + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \Put@Line(0,406)(0,1){140}% % single bond at 1 + \putlratom{-31}{563}{\@memberb}% % left or right type + \else\if\@tmpc B%(B) beta + \yl@xdiff=-30\relax + \yl@ydiff=-37\relax + {% + \thicklines% + \Put@Line(0,406)(-3,5){72}% % single bond at 1 + }% + \putlatom{-42}{563}{\@memberb}% % left type + \else\if\@tmpc A%(A) alpha + \yl@xdiff=31\relax + \yl@ydiff=-37\relax + \dotorline(0,406)(3,5){72}/(0,406)(72,526)% + \putratom{41}{563}{\@memberb}% % right type + \else\if\@tmpc b%(b) beta + \yl@xdiff=-30\relax + \yl@ydiff=-37\relax + \Put@Line(0,406)(-3,5){72}% % single bond at 1 + \putlatom{-42}{563}{\@memberb}% % left type + \else\if\@tmpc a%(a) alpha + \yl@xdiff=31\relax + \yl@ydiff=-37\relax + \Put@Line(0,406)(3,5){72}% % single bond at 1 + \putratom{41}{563}{\@memberb}% % right type + \else\if\@tmpc V%(V) beta undefined + \yl@xdiff=-30\relax + \yl@ydiff=-37\relax + {% + \WaveBonds% + \Put@Line(0,406)(-3,5){72}% % single bond at 1 + }% + \putlatom{-42}{563}{\@memberb}% % left type + \else\if\@tmpc U%(U) alpha undefined + \yl@xdiff=31\relax + \yl@ydiff=-37\relax + {% + \WaveBonds% + \Put@Line(0,406)(3,5){72}% % single bond at 1 + }% + \putratom{41}{563}{\@memberb}% % right type +%2013/06/27 + \else\if\@tmpc d%(d) alpha + \yl@xdiff=-30\relax + \yl@ydiff=-37\relax + \dotorline(0,406)(-3,5){72}/(0,406)(-72,526)% + \putlatom{-42}{563}{\@memberb}% % left type + \else\if\@tmpc u%(u) beta + \yl@xdiff=31\relax + \yl@ydiff=-37\relax + {% + \thicklines% + \Put@Line(0,406)(3,5){72}% % single bond at 1 + }% + \putratom{41}{563}{\@memberb}% % right type +% + \fi\fi + \fi\fi\fi\fi\fi\fi\fi% + \else\if\@tmpb D%double bond + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \Put@Line(-12,406)(0,1){140}% % double bond at 1 + \Put@Line(12,406)(0,1){140}% % double bond at 1 + \putlratom{-31}{563}{\@memberb}% % left or right type + \else\if\@tmpb B%beta single bond + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + {% + \thicklines% + \Put@Line(0,406)(0,1){140}% % single bond at 1 + }% + \putlratom{-31}{563}{\@memberb}% % left or right type + \else\if\@tmpb A%alpha single bond + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \dotorline(0,406)(0,1){140}/(0,406)(0,546)% + \putlratom{-31}{563}{\@memberb}% % left or right type + \else\if\@tmpb U%beta undefined + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + {% + \WaveBonds% + \Put@Line(0,406)(0,1){140}% % single bond at 1 + }% + \putlratom{-31}{563}{\@memberb}% % left or right type + \else\if\@tmpb W%beta single bond + \ifx\@tmpc\empty% + \yl@xdiff=10\relax + \yl@ydiff=58\relax + \Put@Line(0,406)(-5,-3){120}% % single bond at 1 + \putlatom{-130}{276}{\@memberb}% % left type + \if@wrongbdWaL + \XyMTeXWarning{Wrong Bond-Modifier (W)}% + \fi +%2013/06/27 + \else\if\@tmpc U%undefined + \yl@xdiff=10\relax + \yl@ydiff=58\relax + {% + \WaveBonds% + \Put@Line(0,406)(-5,-3){120}% % single bond at 1 + }% + \putlatom{-130}{276}{\@memberb}% % left type + \else\if\@tmpc B%beta + \yl@xdiff=10\relax + \yl@ydiff=58\relax + {% + \thicklines% + \Put@Line(0,406)(-5,-3){120}% % single bond at 1 + }% + \putlatom{-130}{276}{\@memberb}% % left type + \else\if\@tmpc A%alpha + \yl@xdiff=10\relax + \yl@ydiff=58\relax + \dotorline(0,406)(-5,-3){120}/(0,406)(-120,334)% + \putlatom{-130}{276}{\@memberb}% % left type +% + \fi\fi\fi\fi + \else% + \yl@xdiff=31\relax + \yl@ydiff=-17\relax + \Put@Line(0,406)(0,1){140}% % single bond at 1 + \putlratom{-31}{563}{\@memberb}% % left or right type + \fi\fi\fi\fi\fi\fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% \section{Setting Bonds} +% \subsection{Outer Skeletal Bonds} +% +% The macros |\SKbondB| and |\SKbondA| are used to typeset +% outer skeletal bonds of a methylene chain (|\..methylene|) +% +% \begin{macro}{\SKbondB} +% \begin{macrocode} +\def\SKbondB{% + \ifx\bbb\empty% + \ifx\ccc\empty% + \Put@Line(0,406)(5,-3){171}% %bond 1-2 + \else% + \Put@Line(0,406)(5,-3){136}% %bond 1-2 + \fi% + \else% + \ifx\ccc\empty% + \Put@Line(35,385)(5,-3){136}% %bond 1-2 + \else% + \Put@Line(35,385)(5,-3){100}% %bond 1-2 + \fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\SKbondA} +% \begin{macrocode} +\def\SKbondA{% + \ifx\bbb\empty% + \ifx\aaa\empty% + \Put@Line(0,406)(-5,-3){171}% %bond 1-6 + \else% + \Put@Line(0,406)(-5,-3){136}% %bond 1-6 + \fi% + \else% + \ifx\aaa\empty% + \Put@Line(-35,385)(-5,-3){136}% %bond 1-6 + \else% + \Put@Line(-35,385)(-5,-3){100}% %bond 1-6 + \fi% + \fi}% +% \end{macrocode} +% \end{macro} +% +% The macros |\SKbondBi| and |\SKbondAi| are used to typeset +% outer skeletal bonds of a methylene chain (inverse type |\..methylenei|). +% +% \begin{macro}{\SKbondBi} +% \begin{macrocode} +\def\SKbondBi{% + \begin{sfpicture}(0,0)(0,0) + \ifx\bbb\empty% + \ifx\ccc\empty% + \Put@Line(0,0)(5,3){171}% %bond 4-3 + \else% + \Put@Line(0,0)(5,3){136}% %bond 4-3 + \fi% + \else% + \ifx\ccc\empty% + \Put@Line(35,21)(5,3){138}% %bond 4-3 + \else% + \Put@Line(35,21)(5,3){100}% %bond 4-3 + \fi% + \fi\end{sfpicture}}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\SKbondAi} +% \begin{macrocode} +\def\SKbondAi{% + \begin{sfpicture}(0,0)(0,0) + \ifx\bbb\empty% + \ifx\aaa\empty% + \Put@Line(0,0)(-5,3){171}% %bond 4-5 + \else% + \Put@Line(0,0)(-5,3){136}% %bond 4-5 + \fi% + \else% + \ifx\aaa\empty% + \Put@Line(-35,21)(-5,3){138}% %bond 4-5 + \else% + \Put@Line(-35,21)(-5,3){100}% %bond 4-5 + \fi% + \fi\end{sfpicture}}% +% \end{macrocode} +% \end{macro} +% +% \subsection{Inner Double Bonds} +% +% The macros |\bondB| is used to place a line of +% a double bond in the (5,-3) direction at the lower side +% of an outer skeletal bond. +% +% \begin{macro}{\bondB} +% \begin{macrocode} +\def\bondB{% + \ifx\bbb\empty% + \ifx\ccc\empty% + \Put@Line(6,364)(5,-3){126}% %double bond 1-2 + \else% + \Put@Line(6,364)(5,-3){100}% %double bond 1-2 + \fi% + \else% + \ifx\ccc\empty% + \Put@Line(35,340)(5,-3){100}% %double bond 1-2 + \else% + \Put@Line(35,352)(5,-3){100}% %double bond 1-2 + \fi% % line <1OO not available + \fi% + }% +% \end{macrocode} +% \end{macro} +% +% The macros |\bondBB| is used to place a line of +% a double bond in the (5,-3) direction at the upper side +% of an outer skeletal bond. +% +% \begin{macro}{\bondBB} +% \begin{macrocode} +\def\bondBB{% + \ifx\bbb\empty% + \ifx\ccc\empty% + \Put@Line(42,420)(5,-3){126}% %double bond 1-2 + \else% + \Put@Line(42,420)(5,-3){100}% %double bond 1-2 + \fi% + \else% + \ifx\ccc\empty% + \Put@Line(52,412)(5,-3){110}% %double bond 1-2 + \else% + \Put@Line(52,412)(5,-3){100}% %double bond 1-2 + \fi% % line <1OO not available + \fi% + }% +% \end{macrocode} +% \end{macro} +% +% The macros |\bondA| is used to place a line of +% a double bond in the (-5,-3) direction at the lower +% side of an outer skeletal bond. +% +% \begin{macro}{\bondA} +% \begin{macrocode} +\def\bondA{% + \ifx\bbb\empty% + \ifx\aaa\empty% + \Put@Line(-6,364)(-5,-3){126}% %double bond 1-6 + \else% + \Put@Line(-6,364)(-5,-3){100}% %double bond 1-6 + \fi% + \else% + \ifx\aaa\empty% + \Put@Line(-35,340)(-5,-3){100}% %double bond 1-6 + \else% + \Put@Line(-35,352)(-5,-3){100}% %double bond 1-6 + \fi% % line <1OO not available + \fi% +}% +% \end{macrocode} +% \end{macro} +% +% The macros |\bondAA| is used to place a line of +% a double bond in the (-5,-3) direction at the upper side +% of an outer skeletal bond. +% +% \begin{macro}{\bondAA} +% \begin{macrocode} +\def\bondAA{% + \ifx\bbb\empty% + \ifx\aaa\empty% + \Put@Line(-42,420)(-5,-3){126}% %double bond 1-6 + \else% + \Put@Line(-42,420)(-5,-3){100}% %double bond 1-6 + \fi% + \else% + \ifx\aaa\empty% + \Put@Line(-52,412)(-5,-3){100}% %double bond 1-6 + \else% + \Put@Line(-52,412)(-5,-3){100}% %double bond 1-6 + \fi% % line <1OO not available + \fi% +}% +% \end{macrocode} +% \end{macro} +% +% The bond-setting commands with sufix ``i'' are used in the definitions +% of commands such as |\...methylenei|. +% +% The macros |\bondBi| is used to place a line of +% a double bond in the (5,3) direction at the upper side +% of an outer skeletal bond. +% +% \begin{macro}{\bondBi} +% \begin{macrocode} + \def\bondBi{% + \ifx\bbb\empty% + \ifx\ccc\empty% + \Put@Line(6,42)(5,3){126}% %double bond 4-3 + \else% + \Put@Line(6,42)(5,3){100}% %double bond 4-3 + \fi% + \else% + \ifx\ccc\empty% + \Put@Line(35,66)(5,3){100}% %double bond 4-3 + \else% + \Put@Line(35,60)(5,3){100}% %double bond 4-3 + \fi% % line <1OO not available + \fi% +}% +% \end{macrocode} +% \end{macro} +% +% The macros |\bondBBi| is used to place a line of +% a double bond in the (5,3) direction at the lower +% side of an outer skeletal bond. +% +% \begin{macro}{\bondBBi} +% \begin{macrocode} + \def\bondBBi{% + \ifx\bbb\empty% + \ifx\ccc\empty% +% \Put@Line(6,42)(5,3){126}% %double bond 4-3 + \Put@Line(42,-14)(5,3){126}% %double bond 1-6 + \else% +% \Put@Line(6,42)(5,3){100}% %double bond 4-3 +% \Put@Line(42,-14)(5,3){100}% %double bond 1-6 + \Put@Line(30,-14)(5,3){100}% %double bond 1-6 + \fi% + \else% + \ifx\ccc\empty% +% \Put@Line(35,66)(5,3){100}% %double bond 4-3 +% \Put@Line(52,6)(5,3){100}% %double bond 1-6 + \Put@Line(52,0)(5,3){100}% %double bond 1-6 + \else% +% \Put@Line(35,60)(5,3){100}% %double bond 4-3 + \Put@Line(52,0)(5,3){100}% %double bond 4-5 + \fi% % line <1OO not available + \fi% +}% +% \end{macrocode} +% \end{macro} +% +% The macros |\bondAi| is used to place a line of +% a double bond in the (-5,3) direction at the upper +% side of an outer skeletal bond. + +% \begin{macro}{\bondAi} +% \begin{macrocode} + \def\bondAi{% + \ifx\bbb\empty% + \ifx\aaa\empty% + \Put@Line(-6,42)(-5,3){126}% %double bond 4-5 + \else% + \Put@Line(-6,42)(-5,3){100}% %double bond 4-5 + \fi% + \else% + \ifx\aaa\empty% + \Put@Line(-35,66)(-5,3){100}% %double bond 4-5 + \else% + \Put@Line(-35,60)(-5,3){100}% %double bond 4-5 + \fi% % line <1OO not available + \fi% + }% +% \end{macrocode} +% \end{macro} +% +% The macros |\bondAAi| is used to place a line of +% a double bond in the (-5,3) direction at the lower +% side of an outer skeletal bond. +% +% \begin{macro}{\bondAAi} +% \begin{macrocode} + \def\bondAAi{% + \ifx\bbb\empty% + \ifx\aaa\empty% +% \Put@Line(-6,42)(-5,3){126}% %double bond 4-5 + \Put@Line(-42,-14)(-5,3){126}% %double bond 1-6 + \else% +% \Put@Line(-6,42)(-5,3){100}% %double bond 4-5 + \Put@Line(-42,-14)(-5,3){100}% %double bond 1-6 + \fi% + \else% + \ifx\aaa\empty% +% \Put@Line(-35,66)(-5,3){100}% %double bond 4-5 + \Put@Line(-52,6)(-5,3){100}% %double bond 1-6 + \else% +% \Put@Line(-35,60)(-5,3){100}% %double bond 4-5 + \Put@Line(-52,0)(-5,3){100}% %double bond 4-5 + \fi% % line <1OO not available + \fi% + }% +% \end{macrocode} +% \end{macro} +% +% \section{Switches} +% +% \begin{macro}{\if@adoublebond} +% \begin{macro}{\if@bdoublebond} +% \begin{macro}{\if@Adoublebond} +% \begin{macro}{\if@adoublebond} +% \begin{macro}{\reset@double} +% \begin{macrocode} +\newif\if@adoublebond \@adoublebondfalse +\newif\if@bdoublebond \@bdoublebondfalse +\newif\if@Adoublebond \@Adoublebondfalse +\newif\if@Bdoublebond \@Bdoublebondfalse +\def\reset@double{% +\@adoublebondfalse\@bdoublebondfalse +\@Adoublebondfalse\@Bdoublebondfalse} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\if@linterchainsw} +% \begin{macro}{\if@rinterchainsw} +% \begin{macro}{\reset@interchainsw} +% \begin{macrocode} +\newif\if@linterchainsw \@linterchainswfalse +\newif\if@rinterchainsw \@rinterchainswfalse +\def\reset@interchainsw{\@linterchainswfalse\@rinterchainswfalse} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \section{Trimethylene} +% \subsection{Normal direction} +% +% A trimethylene (or propane) and its hetera analogs can be typeset +% by the command |\trimethylene|, which is mainly based on +% two inner commands: |\yltrimethyleneposition| for adjusting a +% substitution site and |\@@trimethylene| for +% placing hetero atoms, double bonds, and substituents. +% +% \begin{macro}{\@@trimethylene} +% \begin{verbatim} +% \@@trimethylene{ATOMLIST}{BONDLIST}{TERMswitch}{Adjust} +% +% <TERMswitch> +% 0: all positions +% 1: positions bbb and ccc +% 2: positions aaa and bbb +% +% bbb +% 2 +% a / ` b +% 1 3 +% aaa ccc +% +% <Adjust> +% a positive or negative integer to adjust locant numbers +% \end{verbatim} +% +% \changes{v5.00}{2010/10/01}{For bond coloring} +% \begin{macrocode} +\def\@@trimethylene#1#2#3#4{% +\leavevmode +\iniatom\iniflag%initialize +\test@vrtx@trimethy{#1}{#4}% +%\test@vertix@sixv{#1}{a}{b}{c}{@}{@}{@}% +\begin{sfpicture}(450,480)(0,0)% +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% + \Put@Direct(171,-303){\SKbondB}% bond between 1 and 2 + \Put@Direct(171,-303){\SKbondA}% bond between 1 and 6 +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\if@adoublebond\relax\Put@Direct(171,-303){\bondA}\fi +\if@bdoublebond\relax\Put@Direct(171,-303){\bondB}\fi +\if@Adoublebond\relax\Put@Direct(171,-303){\bondAA}\fi +\if@Bdoublebond\relax\Put@Direct(171,-303){\bondBB}\fi +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting hetero atoms % +% %%%%%%%%%%%%%%%%%%%%%%%% +\test@termcnt=#3\relax +%\set@hetatom@methyl{#1}{0}{0}{4}{0}% +\set@hetatom@methyl{#1}{#4}{0}{4}{0}% +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents % +% %%%%%%%%%%%%%%%%%%%%%%%% +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\@tmpaa=\@tmpa \advance\@tmpaa by#4\relax +\ifx\@memberb\@yl\else +\ifcase\@tmpaa%0 omit +\or + \ifcase#3 + \setBScolor{\if@aclip \@cliptrue \else \@clipfalse\fi + \Put@Direct(0,0){\@methsubstdL}}% + \or\relax + \or + \setBScolor{\if@aclip \@cliptrue \else \@clipfalse\fi + \Put@Direct(0,0){\@methsubstdL}}% + \fi +\or +\setBScolor{\if@bclip \@acliptrue \else \@aclipfalse\fi + \Put@Direct(171,-303){\@methsubsta}}% +\or + \ifcase#3 + \setBScolor{\if@cclip \@cliptrue\else \@clipfalse\fi + \Put@Direct(342,0){\@methsubstd}}% + \or + \setBScolor{\if@cclip \@cliptrue\else \@clipfalse\fi + \Put@Direct(342,0){\@methsubstd}}% + \or\relax + \fi +\fi%end of ifcase +\fi\fi +}% +\end{sfpicture}}% end of \@@trimethylene +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\test@vrtx@trimethy} +% \changes{v2.00}{1998/12/21}{New command: \cs{test@vrtx@trimethy}} +% \begin{macrocode} +\def\test@vrtx@trimethy#1#2{% +\@forsemicol\member:=#1\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\twoch@r\@membera{}% +\@tmpaa=\@tmpa \advance\@tmpaa by#2\relax +\ifcase\@tmpaa% + \or \if\@tmpb s\relax \xdef\aaa{}\else\if\@tmpb h\relax + \xdef\aaa{@}\else\xdef\aaa{@}\fi\fi + \or \if\@tmpb s\relax \xdef\bbb{}\else\if\@tmpb h\relax + \xdef\bbb{@}\else\xdef\bbb{@}\fi\fi + \or \if\@tmpb s\relax \xdef\ccc{}\else\if\@tmpb h\relax + \xdef\ccc{@}\else\xdef\ccc{@}\fi\fi +\fi\fi}} +% \end{macrocode} +% \end{macro} +% +% The |\yltrimethyleneposition| is used to adjust +% substitution sites for the command |\@@trimethylene|. +% \changes{v5.01}{2013/06/22}{bug fix} +% +% \begin{macro}{\yltrimethyleneposition} +% \begin{verbatim} +% \yltrimethylene{ATOMLIST}{BONDLIST}{TERMswitch}{Adjust} +% +% <TERMswitch> +% 0: all positions +% 1: positions bbb and ccc +% 2: positions aaa and bbb +% +% bbb +% 2 +% a / ` b +% 1 3 +% aaa ccc +% +% <Adjust> +% a positive or negative integer to adjust locant numbers +% \end{verbatim} +% +% \changes{v5.01}{2013/03/29}{bug fix on a terminal position} +% \changes{v5.01}{2013/07/20}{bug fix} +% \begin{macrocode}% +\def\yltrimethyleneposition#1#2#3#4{% +\iniatom\iniflag%initialize2013/06/22 +\reset@@yl%%2013/07/20bug fix +\@forsemicol\member:=#1\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\twoch@r\@membera{}% +\@tmpaa=\@tmpa \advance\@tmpaa by#4\relax +\if\@tmpb s\else%2013/06/22added for bug fix +\ifcase\@tmpaa% + \or \def\aaa{@}%\def\aaa{\@memberb}% + \or \def\bbb{@}%\def\bbb{\@memberb}% + \or \def\ccc{@}%\def\ccc{\@memberb}% +\fi\fi +\fi +}% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#2\do{\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\@tmpaa=\@tmpa \advance\@tmpaa by#4\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpaa%0 omit +\or + \ifcase#3 + \ifx\aaa\empty + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% subst. on 1 + \else + \if@linterchainsw%interchain position + \gdef\@ylii{0}\gdef\@yli{40}\global\@ylswtrue% subst. on 1 + \else% terminal position +% \gdef\@ylii{40}\gdef\@yli{-24}\global\@ylswtrue% subst. on 1 + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% subst. on 1%bug fix 2013/03/29 + \fi + \fi + \or\relax + \or + \ifx\aaa\empty + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% subst. on 1 + \else + \if@linterchainsw%interchain position + \gdef\@ylii{0}\gdef\@yli{40}\global\@ylswtrue% subst. on 1 + \else% terminal position + \gdef\@ylii{40}\gdef\@yli{-24}\global\@ylswtrue% subst. on 1 + \fi + \fi + \fi +\or + \ifx\bbb\empty + \gdef\@ylii{-171}\gdef\@yli{-103}\global\@ylswtrue% subst. on 2 + \else + \gdef\@ylii{-171}\gdef\@yli{-133}\global\@ylswtrue% subst. on 2 + \fi +\or + \ifcase#3 + \ifx\ccc\empty + \gdef\@ylii{-342}\gdef\@yli{0}\global\@ylswtrue% subst. on 3 + \else + \if@rinterchainsw%interchain position + \gdef\@ylii{-342}\gdef\@yli{40}\global\@ylswtrue% subst. on 3 + \else + \gdef\@ylii{-382}\gdef\@yli{-24}\global\@ylswtrue% subst. on 3 + \fi + \fi + \or + \ifx\ccc\empty + \gdef\@ylii{-342}\gdef\@yli{0}\global\@ylswtrue% subst. on 3 + \else + \if@rinterchainsw%interchain position + \gdef\@ylii{-342}\gdef\@yli{40}\global\@ylswtrue% subst. on 3 + \else + \gdef\@ylii{-382}\gdef\@yli{-24}\global\@ylswtrue% subst. on 3 + \fi + \fi + \or\relax + \fi +\fi%end of ifcase +\fi}}% end of \yltrimethyleneposition +% \end{macrocode} +% \end{macro} +% +% The counter |\test@termcnt|, which is equal to +% the argument \#3 of command |\@@trimethylene|, +% is used for testing a terminal point. +% +% \begin{macro}{\test@termcnt} +% \changes{v2.00}{1998/12/21}{New command: \cs{test@termcnt}} +% \begin{macrocode} +\newcount\test@termcnt +% \end{macrocode} +% \end{macro} +% +% The |\set@hetatom@methyl| is used to set a hetero atom +% at each vertex in the command |\@@trimethylene|. +% +% \begin{macro}{\set@hetatom@methyl} +% \changes{v2.00}{1998/12/20}{New command: \cs{set@hetatom@methyl}} +% \begin{macrocode} +\def\set@hetatom@methyl#1#2#3#4#5{% +\@forsemicol\member:=#1\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +%\expandafter\twoch@r\@membera{}% +\expandafter\twoCH@R\@membera//% +\ifnum#5 < 0\relax% +\@tmpaa=-\@tmpa\relax \advance\@tmpaa by#2\relax% +\else\@tmpaa=\@tmpa\relax \advance\@tmpaa by#2\relax \fi +\ifnum\@tmpaa >#3\relax% +\ifnum\@tmpaa <#4\relax% +\ifcase\@tmpaa% +\or%position 1 <--- position 6 of set@hetatom@sixv + \ifnum\test@termcnt=1\else%not terminal point (left) + \if\@tmpb h\relax% + \@acliptrue% + \putlatom{0}{30}{\@memberb}% % right type + \else\if\@tmpb s\relax% + \@aclipfalse% +% \putlatom{-4}{0}{\@memberb}% % right type + \putlatom{0}{0}{\@memberb}% % right type + \else\if\@tmpb a\relax%omit fused position + \else + \@acliptrue% + \putlatom{36}{-23}{\@memberb}% % left type + \fi\fi\fi + \fi +\or%position 2 <--- position 1 of set@hetatom@sixv + \if\@tmpb h\relax% + \@bcliptrue% + \putratom{171}{53}{\@memberb}% % right type + \else\if\@tmpb s\relax% + \@bclipfalse% + \putratom{171}{103}{\@memberb}% % right type + \else\if\@tmpb a\relax%omit fused position + \else + \@bcliptrue% +% \putratom{140}{53}{\@memberb}% % right type + \putratom{140}{65}{\@memberb}% % right type + \fi\fi\fi +\or%position 3 <--- position 2 of set@hetatom@sixv + \ifnum\test@termcnt=2\else%not terminal point (right) + \if\@tmpb h\relax + \@ccliptrue% +% \putratom{320}{30}{\@memberb}% % right type + \putratom{330}{30}{\@memberb}% % right type + \else\if\@tmpb s\relax + \@cclipfalse% + \putratom{346}{0}{\@memberb}% % right type + \else\if\@tmpb a\relax%omit fused position + \else + \@ccliptrue% + \putratom{306}{-23}{\@memberb}% % right type + \fi\fi\fi + \fi +\fi% end of ifcase +\fi\fi\fi}}% end of the macro \set@hetatom@methyl +% \end{macrocode} +% \end{macro} +% +% The macro |\trimethylene| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% +% \begin{macro}{\trimethylene} +% \begin{macro}{\@trimethylene} +% +% \begin{verbatim} +% +% bbb +% 2 +% a / ` b (or uppercase letters) +% / ` +% 1 3 +% aaa ccc +% \end{verbatim} +% +% +% \begin{verbatim} +% \trimethylene[BONDLIST]{ATOMLIST}{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one character a, A, b, or B +% each of which indicates the presence of an inner (endcyclic) double +% bond on the corresponding position. A lowercase letter is used +% to typeset a double bond at a lower-side of an outer skeletal bond, +% while an uppercase letter typesets a double bond at a upper-side of +% an outer skeletal bond. +% (Note that the option `A' represents an aromatic circle in +% commands |\sixheterov| etc. +% +% \begin{verbatim} +% BONDLIST = +% +% [] or none : no double bond +% a : 1,2-double bond +% A : 1,2-double bond in an opposite side +% b : 2,3-double bond +% B : 1,2-double bond in an opposite side +% \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 +% nW : terminal single bond (n=1 or 3) +% +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \trimethylene{1==N}{1==Cl;2==F} +% \trimethylene[b]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% +% The definition of |\trimethylene| uses a picture environment and +% consists of the following unit processes: +% \begin{enumerate} +% \item adjusting substitution site by +% |\yltrimethyleneposition| +% \item treating atom list, +% placing outer skeletons, inner double bonds, +% setting hetero atoms, and +% placing substituents by |\@@trimethylene|. +% \end{enumerate} +% +% \changes{v3.01}{2002/4/30}{Replaced by \cs{ShiftPicEnv}} +% +% \begin{macrocode} +\def\trimethylene{% +\@ifnextchar[{\@trimethylene[@}{\@trimethylene[]}} +\def\@trimethylene[#1]#2#3{% +\iniflag\iniatom% +\@reset@ylsw% +\reset@interchainsw% +\yltrimethyleneposition{#2}{#3}{0}{0}% +\begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(450,480)(-50,-180){trimethylene}%2002/4/30 by S. Fujita +(50,180)% +\reset@double% +\@tfor\member:=#1\do{% +\if\member a\relax +\@adoublebondtrue +\else\if\member b\relax +\@bdoublebondtrue +\else\if\member A\relax +\@Adoublebondtrue +\else\if\member B\relax +\@Bdoublebondtrue% +%\else +% \expandafter\twoCH@@R\member//% +% \set@fusion@trimeth% +\fi\fi\fi\fi}% +\@wrongbdWatrue% +\@wrongbdWdfalse% + \Put@Direct(0,0){\@@trimethylene{#2}{#3}{0}{0}}% +% +%for fused rings +%shifted for coloring skeletal bond 2010/10/01 +% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member a\relax%dummy +\else\if\member b\relax%dummy +\else\if\member A\relax%dummy +\else\if\member B\relax%dummy +\else + \expandafter\twoCH@@R\member//% + \set@fusion@trimeth% +\fi\fi\fi\fi}}% +\end{ShiftPicEnv}% +}% end of \trimethylene \@trimethylene +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The inner command |\set@fusion@trimeth| is used for typesetting +% a fused ring at each bond represented by |\@@tmpa|. Warnings +% concerning mismatched ring-fusions are based on the command +% |\FuseWarning|. +% +% \begin{macro}{\set@fusion@trimeth} +% \changes{v2.00}{1998/12/21}{New command: \cs{set@fusion@trimeth}} +% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring} +% \begin{macrocode} +\def\set@fusion@trimeth{% +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% +\if\@@tmpa a\relax% + \putlratom{0}{0}{\@@tmpb}% % bond fused + \FuseWarning{-171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}% + \else\if\@@tmpa A\relax% + \putlratom{171}{103}{\@@tmpb}% % bond fused + \FuseWarning{171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}% + \else\if\@@tmpa b\relax% + \putlratom{171}{103}{\@@tmpb}% % bond fused + \FuseWarning{-171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}% + \else\if\@@tmpa B\relax% + \putlratom{342}{0}{\@@tmpb}% % bond fused + \FuseWarning{171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}% + \fi\fi\fi\fi +\global\let\FuseWarning=\FuseW@rning%added 2010/10/01 +}% end of the macro \set@fusion@trimeth +% \end{macrocode} +% \end{macro} +% +% \subsection{Inverse direction} +% +% A trimethylene (or propane) and its hetera analogs can be typeset +% by the command |\trimethylenei|, which is mainly based on +% two inner commands: |\yltrimethyleneiposition| for adjusting a +% substitution site and |\@@trimethylenei| for +% placing hetero atoms, double bonds, and substituents. +% +% \begin{macro}{\@@trimethylenei} +% \begin{verbatim} +% \@@trimethylenei{ATOMLIST}{BONDLIST}{TERMswitch}{Adjust} +% +% <TERMswitch> +% 0: all positions +% 1: positions bbb and ccc +% 2: positions aaa and bbb +% +% aaa ccc +% 1 3 +% a ` / b +% ` / +% 2 +% bbb +% +% <Adjust> +% a positive or negative integer to adjust locant numbers +% \end{verbatim} +% +% \changes{v5.00}{2010/10/01}{For bond coloring} +% \begin{macrocode} +\def\@@trimethylenei#1#2#3#4{% +\leavevmode +\iniatom\iniflag%initialize +\test@vrtx@trimethy{#1}{#4}% +%\test@vertix@sixv{#1}{a}{b}{c}{@}{@}{@}% +\begin{sfpicture}(450,480)(0,0) +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% + \Put@Direct(171,0){\SKbondAi}% bond between 1 and 2 + \Put@Direct(171,0){\SKbondBi}% bond between 2 and 3 +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\if@adoublebond\relax\Put@Direct(171,0){\bondAi}\fi +\if@bdoublebond\relax\Put@Direct(171,0){\bondBi}\fi +\if@Adoublebond\relax\Put@Direct(171,0){\bondAAi}\fi +\if@Bdoublebond\relax\Put@Direct(171,0){\bondBBi}\fi +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting hetero atoms % +% %%%%%%%%%%%%%%%%%%%%%%%% +\test@termcnt=#3\relax +%\set@hetatom@methyli{#1}{0}{0}{4}{0}% +\set@hetatom@methyli{#1}{#4}{0}{4}{0}% +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents % +% %%%%%%%%%%%%%%%%%%%%%%%% +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\@tmpaa=\@tmpa \advance\@tmpaa by#4\relax +\ifx\@memberb\@yl\else +\ifcase\@tmpaa%0 omit +\or + \ifcase#3 + \setBScolor{\Put@Direct(0,-303){\@methsubstaL}}% + \or\relax + \or + \setBScolor{\Put@Direct(0,-303){\@methsubstaL}}% + \fi +\or +\setBScolor{\if@bclip \@cliptrue \else \@clipfalse\fi + \Put@Direct(171,0){\@methsubstd}}% +\or + \ifcase#3 + \setBScolor{\if@cclip \@acliptrue\else \@aclipfalse\fi + \Put@Direct(342,-303){\@methsubsta}}% + \or + \setBScolor{\if@cclip \@acliptrue\else \@aclipfalse\fi + \Put@Direct(342,-303){\@methsubsta}}% + \or\relax + \fi +\fi%end of ifcase +\fi\fi +}% +\end{sfpicture}}% end of \@@trimethylenei +% \end{macrocode} +% \end{macro} +% +% The |\yltrimethyleneiposition| is used to adjust +% substitution sites. +% \changes{v5.01}{2013/06/22}{bug fix} +% \changes{v5.01}{2013/07/20}{bug fix} +% +% \begin{macro}{\yltrimethyleneiposition} +% \begin{verbatim} +% \yltrimethylenei{ATOMLIST}{BONDLIST}{TERMswitch}{Adjust} +% +% <TERMswitch> +% 0: all positions +% 1: positions bbb and ccc +% 2: positions aaa and bbb +% +% aaa ccc +% 1 3 +% a ` / b +% ` / +% 2 +% bbb +% +% <Adjust> +% a positive or negative integer to adjust locant numbers +% \end{verbatim} +% +% \begin{macrocode}% +\def\yltrimethyleneiposition#1#2#3#4{% +\iniatom\iniflag%initialize2013/06/22 +\reset@@yl%%2013/07/20bug fix +\@forsemicol\member:=#1\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +%\expandafter\twoch@r\@membera{}% +\expandafter\twoCH@R\@membera//% +\@tmpaa=\@tmpa \advance\@tmpaa by#4\relax +\if\@tmpb s\else%2013/06/22added for bug fix +\ifcase\@tmpaa% + \or \def\aaa{@}%\def\aaa{\@memberb}% + \or \def\bbb{@}%\def\bbb{\@memberb}% + \or \def\ccc{@}%\def\ccc{\@memberb}% +\fi\fi +\fi +}% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#2\do{\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\@tmpaa=\@tmpa \advance\@tmpaa by#4\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpaa%0 omit +\or%%%%%%position 1 + \ifcase#3 + \ifx\aaa\empty +%% \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% subst. on 1 + \gdef\@ylii{0}\gdef\@yli{-103}\global\@ylswtrue% subst. on 1 + \else + \if@linterchainsw%interchain position +% \gdef\@ylii{0}\gdef\@yli{40}\global\@ylswtrue% subst. on 1 + \gdef\@ylii{0}\gdef\@yli{-133}\global\@ylswtrue% subst. on 1 + \else% terminal position +%% \gdef\@ylii{40}\gdef\@yli{-24}\global\@ylswtrue% subst. on 1 + \gdef\@ylii{40}\gdef\@yli{-79}\global\@ylswtrue% subst. on 1 + \fi + \fi + \or\relax + \or + \ifx\aaa\empty +%% \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% subst. on 1 + \gdef\@ylii{0}\gdef\@yli{-103}\global\@ylswtrue% subst. on 1 + \else + \if@linterchainsw%interchain position + \gdef\@ylii{0}\gdef\@yli{-133}\global\@ylswtrue% subst. on 1 +% \gdef\@ylii{0}\gdef\@yli{40}\global\@ylswtrue% subst. on 1 + \else% terminal position +%% \gdef\@ylii{40}\gdef\@yli{-24}\global\@ylswtrue% subst. on 1 + \gdef\@ylii{40}\gdef\@yli{-79}\global\@ylswtrue% subst. on 1 + \fi + \fi + \fi +\or%%%%%%%%position 2 + \ifx\bbb\empty +%% \gdef\@ylii{-171}\gdef\@yli{-103}\global\@ylswtrue% subst. on 2 + \gdef\@ylii{-171}\gdef\@yli{0}\global\@ylswtrue% subst. on 2 + \else +%% \gdef\@ylii{-171}\gdef\@yli{-133}\global\@ylswtrue% subst. on 2 + \gdef\@ylii{-171}\gdef\@yli{50}\global\@ylswtrue% subst. on 2 + \fi +\or%%%%%%%%position 3 + \ifcase#3 + \ifx\ccc\empty +%% \gdef\@ylii{-342}\gdef\@yli{0}\global\@ylswtrue% subst. on 3 + \gdef\@ylii{-342}\gdef\@yli{-103}\global\@ylswtrue% subst. on 3 + \else + \if@rinterchainsw%interchain position +%% \gdef\@ylii{-342}\gdef\@yli{40}\global\@ylswtrue% subst. on 3 + \gdef\@ylii{-342}\gdef\@yli{-133}\global\@ylswtrue% subst. on 3 + \else +%% \gdef\@ylii{-382}\gdef\@yli{-24}\global\@ylswtrue% subst. on 3 + \gdef\@ylii{-382}\gdef\@yli{-79}\global\@ylswtrue% subst. on 3 + \fi + \fi + \or + \ifx\ccc\empty +% \gdef\@ylii{-342}\gdef\@yli{0}\global\@ylswtrue% subst. on 3 + \gdef\@ylii{-342}\gdef\@yli{-103}\global\@ylswtrue% subst. on 3 + \else + \if@rinterchainsw%interchain position +% \gdef\@ylii{-342}\gdef\@yli{40}\global\@ylswtrue% subst. on 3 + \gdef\@ylii{-342}\gdef\@yli{-133}\global\@ylswtrue% subst. on 3 + \else +% \gdef\@ylii{-382}\gdef\@yli{-24}\global\@ylswtrue% subst. on 3 + \gdef\@ylii{-382}\gdef\@yli{-79}\global\@ylswtrue% subst. on 3 + \fi + \fi + \or\relax + \fi +\fi%end of ifcase +\fi}}% end of \yltrimethyleneiposition +% \end{macrocode} +% \end{macro} +% +% The |\set@hetatom@methyli| is used to set a hetero atom +% at each vertex in the command |\@@trimethylenei|. +% +% \begin{macro}{\set@hetatom@methyli} +% \changes{v2.00}{1998/12/20}{New command: \cs{set@hetatom@methyli}} +% \begin{macrocode} +\def\set@hetatom@methyli#1#2#3#4#5{% +\@forsemicol\member:=#1\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\twoch@r\@membera{}% +\ifnum#5 < 0\relax% +\@tmpaa=-\@tmpa\relax \advance\@tmpaa by#2\relax% +\else\@tmpaa=\@tmpa\relax \advance\@tmpaa by#2\relax \fi +\ifnum\@tmpaa >#3\relax% +\ifnum\@tmpaa <#4\relax% +\ifcase\@tmpaa% +\or%position 1 <-- \set@hetatom@sixv position 5 + \ifnum\test@termcnt=1\else%not terminal point (left) + \if\@tmpb h\relax + \@acliptrue% + \putlatom{0}{70}{\@memberb}% % right type + \else\if\@tmpb s\relax + \@aclipfalse% + \putlatom{0}{103}{\@memberb}% % right type + \else\if\@tmpb a\relax%omit fused position + \else + \@acliptrue% + \putlatom{36}{65}{\@memberb}% % left type + \fi\fi\fi + \fi +\or%position 2 <-- \set@hetatom@sixv position 4 + \if\@tmpb h\relax + \@bcliptrue% + \putratom{171}{50}{\@memberb}% % right type + \else\if\@tmpb s\relax + \@bclipfalse% + \putratom{171}{0}{\@memberb}% % right type + \else\if\@tmpb a\relax%omit fused position + \else + \@bcliptrue% +% \putratom{140}{-10}{\@memberb}% % right type + \putratom{140}{-23}{\@memberb}% % right type + \fi\fi\fi +\or%position 3 <-- \set@hetatom@sixv position 3 + \ifnum\test@termcnt=2\else%not terminal point (right) + \if\@tmpb h\relax + \@ccliptrue% + \putratom{342}{70}{\@memberb}% % right type + \else\if\@tmpb s\relax + \@cclipfalse% + \putratom{342}{103}{\@memberb}% % right type + \else\if\@tmpb a\relax%omit fused position + \else + \@ccliptrue% + \putratom{306}{65}{\@memberb}% % right type + \fi\fi\fi + \fi +\fi% end of ifcase +\fi\fi\fi}}% end of the macro \set@hetatom@methyli +% \end{macrocode} +% \end{macro} +% +% The macro |\trimethylenei| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% +% \begin{macro}{\trimethylenei} +% \begin{macro}{\@trimethylenei} +% +% \begin{verbatim} +% aaa ccc +% 1 3 +% a ` / b (or uppercase letters) +% ` / +% 2 +% bbb +% \end{verbatim} +% +% +% \begin{verbatim} +% \trimethylenei[BONDLIST]{ATOMLIST}{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one character a, A, b, or B +% each of which indicates the presence of an inner (endcyclic) double +% bond on the corresponding position. A lowercase letter is used +% to typeset a double bond at a upper-side of an outer skeletal bond, +% while a uppercase letter typesets a double bond at a lower-side of +% an outer skeletal bond. +% (Note that the option `A' represents an aromatic circle in +% commands |\sixheterov| etc. +% +% \begin{verbatim} +% BONDLIST = +% +% [] or none : no double bond +% a : 1,2-double bond +% A : 1,2-double bond in an opposite side +% b : 2,3-double bond +% B : 1,2-double bond in an opposite side +% \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 +% nW : terminal single bond (n=1 or 3) +% +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \trimethylenei{1==N}{1==Cl;2==F} +% \trimethylenei[b]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% +% The definition of |\trimethylene| uses a picture environment and +% consists of the following unit processes: +% \begin{enumerate} +% \item adjusting substitution site by +% |\yltrimethyleneiposition| +% \item treating atom list, +% placing outer skeletons, inner double bonds, +% setting hetero atoms, and +% placing substituents by |\@@trimethylenei|. +% \end{enumerate} +% +% \begin{macrocode} +\def\trimethylenei{% +\@ifnextchar[{\@trimethylenei[@}{\@trimethylenei[]}} +\def\@trimethylenei[#1]#2#3{% +\iniflag\iniatom% +\@reset@ylsw% +\reset@interchainsw% +\yltrimethyleneiposition{#2}{#3}{0}{0}% +\begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(450,480)(-50,-180){trimethylenei}%2002/4/30 by S. Fujita +(50,180)% +\reset@double% +%\@adoublebondfalse +%\@bdoublebondfalse +%\@Adoublebondfalse +%\@Bdoublebondfalse +\@tfor\member:=#1\do{% +\if\member a\relax +\@adoublebondtrue +\else\if\member b\relax +\@bdoublebondtrue +\else\if\member A\relax +\@Adoublebondtrue +\else\if\member B\relax +\@Bdoublebondtrue +%\else +% \expandafter\twoCH@@R\member//% +% \set@fusion@trimethi +\fi\fi\fi\fi}% +\@wrongbdWafalse +\@wrongbdWdtrue + \Put@Direct(0,0){\@@trimethylenei{#2}{#3}{0}{0}}% +% +%originally for fused rings +%shifted for coloring skeletal bond 2010/10/01 +% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member a\relax%dummy +\else\if\member b\relax%dummy +\else\if\member A\relax%dummy +\else\if\member B\relax%dummy +\else + \expandafter\twoCH@@R\member//% + \set@fusion@trimethi +\fi\fi\fi\fi}}% +\end{ShiftPicEnv}% +}% end of \trimethylenei +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The inner command |\set@fusion@trimethi| is used for typesetting +% a fused ring at each bond represented by |\@@tmpa|. Warnings +% concerning mismatched ring-fusions are based on the command +% |\FuseWarning|. +% +% \begin{macro}{\set@fusion@trimethi} +% \changes{v2.00}{1998/12/21}{New command: \cs{set@fusion@trimethi}} +% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring} +% \begin{macrocode} +\def\set@fusion@trimethi{% +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% +\if\@@tmpa a\relax% + \putlratom{0}{103}{\@@tmpb}% % bond fused + \FuseWarning{-171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}% + \else\if\@@tmpa A\relax% + \putlratom{171}{0}{\@@tmpb}% % bond fused + \FuseWarning{171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}% + \else\if\@@tmpa b\relax% + \putlratom{171}{0}{\@@tmpb}% % bond fused + \FuseWarning{-171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}% + \else\if\@@tmpa B\relax% + \putlratom{342}{103}{\@@tmpb}% % bond fused + \FuseWarning{171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}% + \fi\fi\fi\fi +\global\let\FuseWarning=\FuseW@rning%added 2010/10/01 +}% end of the macro \set@fusion@trimethi +% \end{macrocode} +% \end{macro} +% +% \section{Dimethylene} +% \subsection{Normal direction} +% +% A dimethylene (or ethane) and its hetera analogs can be typeset +% by the command |\dimethylene|, which is mainly based on +% two inner commands: |\yldimethyleneposition| for adjusting a +% substitution site and |\@@dimethylene| for +% placing hetero atoms, double bonds, and substituents. +% +% \begin{macro}{\@@dimethylene} +% \begin{verbatim} +% \@@dimethylene{ATOMLIST}{BONDLIST}{TERMswitch}{Adjust} +% +% <TERMswitch> +% 0: all positions +% 1: position bbb +% 2: position aaa +% +% bbb +% 2 +% a / +% 1 +% aaa +% +% <Adjust> +% a positive or negative integer to adjust locant numbers +% \end{verbatim} +% +% \changes{v5.00}{2010/10/01}{For bond coloring} +% \begin{macrocode} +\def\@@dimethylene#1#2#3#4{% +\leavevmode +\iniatom\iniflag%initialize +\test@vrtx@dimethy{#1}{#4}% +%\test@vertix@sixv{#1}{a}{b}{@}{@}{@}{@}% +\begin{sfpicture}(250,480)(0,0)% +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% + \Put@Direct(171,-303){\SKbondA}% bond between 1 and 2 +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\if@adoublebond + \Put@Direct(171,-303){\bondA}%upper side double bond +\else\if@Adoublebond + \Put@Direct(171,-303){\bondAA}%lower side double bond +\fi\fi% +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting hetero atoms % +% %%%%%%%%%%%%%%%%%%%%%%%% +\test@termcnt=#3\relax +%\set@hetatom@methyl{#1}{0}{0}{3}{0}% +\set@hetatom@methyl{#1}{#4}{0}{3}{0}% +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents % +% %%%%%%%%%%%%%%%%%%%%%%%% +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\@tmpaa=\@tmpa \advance\@tmpaa by#4\relax +\ifx\@memberb\@yl\else +\ifcase\@tmpaa%0 omit +\or + \ifcase#3 + \setBScolor{\if@aclip \@cliptrue \else \@clipfalse\fi + \Put@Direct(0,0){\@methsubstdL}}% + \or\relax + \or + \setBScolor{\if@aclip \@cliptrue \else \@clipfalse\fi + \Put@Direct(0,0){\@methsubstdL}}% + \fi +\or + \ifcase#3 + \setBScolor{\if@bclip \@acliptrue \else \@aclipfalse\fi + \Put@Direct(171,-303){\@methsubsta}}% + \or + \setBScolor{\if@bclip \@acliptrue \else \@aclipfalse\fi + \Put@Direct(171,-303){\@methsubsta}}% + \or\relax + \fi +\fi%end of ifcase +\fi\fi% +}% +\end{sfpicture}}% end of \@@dimethylene +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\test@vrtx@dimethy} +% \changes{v2.00}{1998/12/21}{New command: \cs{test@vrtx@dimethy}} +% \begin{macrocode} +\def\test@vrtx@dimethy#1#2{% +\@forsemicol\member:=#1\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\twoch@r\@membera{}% +\@tmpaa=\@tmpa \advance\@tmpaa by#2\relax +\ifcase\@tmpaa% + \or \if\@tmpb s\relax \xdef\aaa{}\else\if\@tmpb h\relax + \xdef\aaa{@}\else\xdef\aaa{@}\fi\fi + \or \if\@tmpb s\relax \xdef\bbb{}\else\if\@tmpb h\relax + \xdef\bbb{@}\else\xdef\bbb{@}\fi\fi +\fi\fi}} +% \end{macrocode} +% \end{macro} +% +% The |\yldimethyleneposition| is used to adjust +% substitution sites. +% \changes{v5.01}{2013/06/22}{bug fix} +% +% \begin{macro}{\yldimethyleneposition} +% \begin{verbatim} +% \yldimethylene{ATOMLIST}{BONDLIST}{TERMswitch}{Adjust} +% +% <TERMswitch> +% 0: all positions +% 1: position bbb +% 2: position aaa +% +% bbb +% 2 +% a / +% 1 +% aaa +% +% <Adjust> +% a positive or negative integer to adjust locant numbers +% \end{verbatim} +% +% \changes{v5.01}{2013/07/20}{Bug fix} +% +% \begin{macrocode}% +\def\yldimethyleneposition#1#2#3#4{% +\iniatom\iniflag%initialize2013/06/22 +\reset@@yl%%2013/07/20bug fix +\@forsemicol\member:=#1\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\twoch@r\@membera{}% +\@tmpaa=\@tmpa \advance\@tmpaa by#4\relax +\if\@tmpb s\else%2013/06/22added for bug fix +\ifcase\@tmpaa% + \or \def\aaa{@}%\def\aaa{\@memberb}%2013/06/22 + \or \def\bbb{@}%\def\bbb{\@memberb}%2013/06/22 +\fi\fi +\fi +}% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\@tmpaa=\@tmpa \advance\@tmpaa by#4\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpaa%0 omit +\or + \ifcase#3 + \ifx\aaa\empty +% \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% subst. on 1 + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% subst. on 1 + \else + \if@linterchainsw%interchain position + \gdef\@ylii{0}\gdef\@yli{40}\global\@ylswtrue% subst. on 1 + \else%terminal position + \gdef\@ylii{40}\gdef\@yli{-24}\global\@ylswtrue% subst. on 1 + \fi + \fi + \or\relax + \or + \ifx\aaa\empty + \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% subst. on 1 + \else + \if@linterchainsw%interchain position + \gdef\@ylii{0}\gdef\@yli{40}\global\@ylswtrue% subst. on 1 + \else%terminal position + \gdef\@ylii{40}\gdef\@yli{-24}\global\@ylswtrue% subst. on 1 + \fi + \fi + \fi +\or + \ifcase#3 + \ifx\bbb\empty + \gdef\@ylii{-171}\gdef\@yli{-103}\global\@ylswtrue% subst. on 2 + \else + \if@rinterchainsw%interchain position + \gdef\@ylii{-171}\gdef\@yli{-133}\global\@ylswtrue% subst. on 2 + \else%terminal position + \gdef\@ylii{-211}\gdef\@yli{-93}\global\@ylswtrue% subst. on 2 + \fi + \fi + \or + \ifx\bbb\empty + \gdef\@ylii{-171}\gdef\@yli{-103}\global\@ylswtrue% subst. on 2 + \else + \if@rinterchainsw%interchain position + \gdef\@ylii{-171}\gdef\@yli{-133}\global\@ylswtrue% subst. on 2 + \else%terminal position + \gdef\@ylii{-211}\gdef\@yli{-93}\global\@ylswtrue% subst. on 2 + \fi + \fi + \or \relax + \fi +\fi%end of ifcase +\fi\fi}}% end of \yldimethyleneposition +% \end{macrocode} +% \end{macro} +% +% +% The macro |\dimethylene| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% +% \begin{macro}{\dimethylene} +% \begin{macro}{\@dimethylene} +% \begin{verbatim} +% +% bbb +% 2 +% a / (or uppercase letters) +% / +% 1 +% aaa +% \end{verbatim} +% +% +% \begin{verbatim} +% \dimethylene[BONDLIST]{ATOMLIST}{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one character a or A, +% each of which indicates the presence of an inner (endcyclic) double +% bond on the corresponding position. A lowercase letter is used +% to typeset a double bond at a lower-side of an outer skeletal bond, +% while an uppercase letter typesets a double bond at a upper-side of +% an outer skeletal bond. +% (Note that the option `A' represents an aromatic circle in +% commands |\sixheterov| etc. ) +% +% \begin{verbatim} +% BONDLIST = +% +% [] or none : no double bond +% a : 1,2-double bond +% A : 1,2-double bond in an opposite side +% \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 2 atoms) +% +% for n = 1 and 2 +% +% 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 and 2 +% +% 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 +% nW : terminal single bond (n=1 or 2) +% +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \dimethylene{1==N}{1==Cl;2==F} +% \dimethylene[a]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% +% The definition of |\dimethylene| uses a picture environment and +% consists of the following unit processes: +% \begin{enumerate} +% \item adjusting substitution site by +% |\yldimethyleneposition| +% \item treating atom list, +% placing outer skeletons, inner double bonds, +% setting hetero atoms, and +% placing substituents by |\@@dimethylene|. +% \end{enumerate} +% +% \begin{macrocode} +\def\dimethylene{% +\@ifnextchar[{\@dimethylene[@}{\@dimethylene[]}} +\def\@dimethylene[#1]#2#3{% +\iniflag\iniatom% +\@reset@ylsw% +\reset@interchainsw% +\yldimethyleneposition{#2}{#3}{0}{0}% +\begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(250,480)(-50,-180){dimethylene}%2002/4/30 by S. Fujita +(50,180)% +\reset@double% +\@tfor\member:=#1\do{% +\if\member a\relax +\@adoublebondtrue +\else\if\member A\relax +\@Adoublebondtrue +%\else +% \expandafter\twoCH@@R\member//% +% \set@fusion@dimeth +\fi\fi}% +\@wrongbdWafalse +\@wrongbdWdfalse + \Put@Direct(0,0){\@@dimethylene{#2}{#3}{0}{0}}% +% +%originally for fused rings +%shifted for coloring skeletal bond 2010/10/01 +% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member a\relax%dummy +\else\if\member A\relax%dummy +\else + \expandafter\twoCH@@R\member//% + \set@fusion@dimeth +\fi\fi}}% +\end{ShiftPicEnv}% +}% end of \dimethylene +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The inner command |\set@fusion@dimeth| is used for typesetting +% a fused ring at each bond represented by |\@@tmpa|. Warnings +% concerning mismatched ring-fusions are based on the command +% |\FuseWarning|. +% +% \begin{macro}{\set@fusion@dimeth} +% \changes{v2.00}{1998/12/21}{New command: \cs{set@fusion@dimeth}} +% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring} +% \begin{macrocode} +\def\set@fusion@dimeth{% +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% +\if\@@tmpa a\relax% + \putlratom{0}{0}{\@@tmpb}% % bond fused + \FuseWarning{-171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}% + \else\if\@@tmpa A\relax% + \putlratom{171}{103}{\@@tmpb}% % bond fused + \FuseWarning{171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}% + \fi\fi +\global\let\FuseWarning=\FuseW@rning%added 2010/10/01 +}% end of the macro \set@fusion@dimeth +% \end{macrocode} +% \end{macro} +% +% \subsection{Inverse direction} +% +% A dimethylene (or ethane) and its hetera analogs (of inverse direction) +% can be typeset by the command |\dimethylenei|, which is mainly based on +% two inner commands: |\yldimethyleneiposition| for adjusting a +% substitution site and |\@@dimethylenei| for +% placing hetero atoms, double bonds, and substituents. +% +% \begin{macro}{\@@dimethylenei} +% \begin{verbatim} +% \@@dimethylenei{ATOMLIST}{BONDLIST}{TERMswitch}{Adjust} +% +% <TERMswitch> +% 0: all positions +% 1: position bbb +% 2: positions aaa +% +% aaa +% 1 +% a ` +% ` +% 2 +% bbb +% +% <Adjust> +% a positive or negative integer to adjust locant numbers +% \end{verbatim} +% +% \changes{v5.00}{2010/10/01}{For bond coloring} +% \begin{macrocode} +\def\@@dimethylenei#1#2#3#4{% +\leavevmode +\iniatom\iniflag%initialize +\test@vrtx@dimethy{#1}{#4}% +%\test@vertix@sixv{#1}{a}{b}{@}{@}{@}{@}% +\begin{sfpicture}(250,480)(0,0)% +% %%%%%%%%%%%%%%%%%% +% % outer skeleton % +% %%%%%%%%%%%%%%%%%% + \Put@Direct(171,0){\SKbondAi}% bond between 1 and 2 +% %%%%%%%%%%%%%%%%%%%%% +% % inner double bond % +% %%%%%%%%%%%%%%%%%%%%% +\if@adoublebond + \Put@Direct(171,0){\bondAi}%upper side double bond +\else\if@Adoublebond + \Put@Direct(171,0){\bondAAi}%lower side double bond +\fi\fi% +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting hetero atoms % +% %%%%%%%%%%%%%%%%%%%%%%%% +\test@termcnt=#3\relax +%\set@hetatom@methyli{#1}{0}{0}{3}{0}% +\set@hetatom@methyli{#1}{#4}{0}{3}{0}% +% %%%%%%%%%%%%%%%%%%%%%%%% +% % setting substituents % +% %%%%%%%%%%%%%%%%%%%%%%%% +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\@tmpaa=\@tmpa \advance\@tmpaa by#4\relax +\ifx\@memberb\@yl\else +\ifcase\@tmpaa%0 omit +\or + \ifcase#3 + \setBScolor{\Put@Direct(0,-303){\@methsubstaL}}% + \or\relax + \or + \setBScolor{\Put@Direct(0,-303){\@methsubstaL}}% + \fi +\or + \ifcase#3 + \setBScolor{\if@bclip \@cliptrue \else \@clipfalse\fi + \Put@Direct(171,0){\@methsubstd}}% + \or + \setBScolor{\if@bclip \@cliptrue \else \@clipfalse\fi + \Put@Direct(171,0){\@methsubstd}}% + \or\relax + \fi +\fi%end of ifcase +\fi\fi% +}% +\end{sfpicture}}% end of \@@dimethylenei +% \end{macrocode} +% \end{macro} +% +% The |\yldimethyleneiposition| is used to adjust +% substitution sites. +% \changes{v5.01}{2013/06/22}{bug fix} +% \changes{v5.01}{2013/07/20}{bug fix} +% +% \begin{macro}{\yldimethyleneiposition} +% \begin{verbatim} +% \yldimethylenei{ATOMLIST}{BONDLIST}{TERMswitch}{Adjust} +% +% <TERMswitch> +% 0: all positions +% 1: position bbb +% 2: position aaa +% +% aaa +% 1 +% a ` +% ` +% 2 +% bbb +% +% <Adjust> +% a positive or negative integer to adjust locant numbers +% \end{verbatim} +% +% \begin{macrocode}% +\def\yldimethyleneiposition#1#2#3#4{% +\iniatom\iniflag%initialize2013/06/22 +\reset@@yl%%2013/07/20bug fix +\@forsemicol\member:=#1\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\twoch@r\@membera{}% +\@tmpaa=\@tmpa \advance\@tmpaa by#4\relax +\if\@tmpb s\else%2013/06/22added for bug fix +\ifcase\@tmpaa% + \or \def\aaa{@}%\def\aaa{\@memberb}%2013/06/22 + \or \def\bbb{@}%\def\bbb{\@memberb}%2013/06/22 +\fi\fi +\fi +}% +\@@ylswfalse%%%\@reset@ylsw +\@forsemicol\member:=#2\do{\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\@tmpaa=\@tmpa \advance\@tmpaa by#4\relax +\ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi +\if@@ylsw +\ifcase\@tmpaa%0 omit +\or%%%%%%%%position 1 + \ifcase#3 + \ifx\aaa\empty +% \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% subst. on 1 + \gdef\@ylii{0}\gdef\@yli{-103}\global\@ylswtrue% subst. on 1 + \else + \if@linterchainsw%interchain position +% \gdef\@ylii{0}\gdef\@yli{40}\global\@ylswtrue% subst. on 1 + \gdef\@ylii{0}\gdef\@yli{-133}\global\@ylswtrue% subst. on 1 + \else%terminal position +% \gdef\@ylii{40}\gdef\@yli{-24}\global\@ylswtrue% subst. on 1 + \gdef\@ylii{40}\gdef\@yli{-79}\global\@ylswtrue% subst. on 1 + \fi + \fi + \or\relax + \or + \ifx\aaa\empty +% \gdef\@ylii{0}\gdef\@yli{0}\global\@ylswtrue% subst. on 1 + \gdef\@ylii{0}\gdef\@yli{-103}\global\@ylswtrue% subst. on 1 + \else + \if@linterchainsw%interchain position +% \gdef\@ylii{0}\gdef\@yli{40}\global\@ylswtrue% subst. on 1 + \gdef\@ylii{0}\gdef\@yli{-133}\global\@ylswtrue% subst. on 1 + \else%terminal position +% \gdef\@ylii{40}\gdef\@yli{-24}\global\@ylswtrue% subst. on 1 + \gdef\@ylii{40}\gdef\@yli{-79}\global\@ylswtrue% subst. on 1 + \fi + \fi + \fi +\or%%%%%%%%position 2 + \ifcase#3 + \ifx\bbb\empty +% \gdef\@ylii{-171}\gdef\@yli{-103}\global\@ylswtrue% subst. on 2 + \gdef\@ylii{-171}\gdef\@yli{0}\global\@ylswtrue% subst. on 2 + \else + \if@rinterchainsw%interchain position +% \gdef\@ylii{-171}\gdef\@yli{-133}\global\@ylswtrue% subst. on 2 + \gdef\@ylii{-171}\gdef\@yli{33}\global\@ylswtrue% subst. on 2 + \else%terminal position + % \gdef\@ylii{-211}\gdef\@yli{-93}\global\@ylswtrue% subst. on 2 + \gdef\@ylii{-211}\gdef\@yli{-10}\global\@ylswtrue% subst. on 2 + \fi + \fi + \or + \ifx\bbb\empty +% \gdef\@ylii{-171}\gdef\@yli{-103}\global\@ylswtrue% subst. on 2 + \gdef\@ylii{-171}\gdef\@yli{0}\global\@ylswtrue% subst. on 2 + \else + \if@rinterchainsw%interchain position +% \gdef\@ylii{-171}\gdef\@yli{-133}\global\@ylswtrue% subst. on 2 + \gdef\@ylii{-171}\gdef\@yli{33}\global\@ylswtrue% subst. on 2 + \else%terminal position +% \gdef\@ylii{-211}\gdef\@yli{-93}\global\@ylswtrue% subst. on 2 + \gdef\@ylii{-211}\gdef\@yli{-10}\global\@ylswtrue% subst. on 2 + \fi + \fi + \or \relax + \fi +\fi%end of ifcase +\fi}}% end of \yldimethyleneiposition +% \end{macrocode} +% \end{macro} +% +% The macro |\dimethylenei| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% +% \begin{macro}{\dimethylenei} +% \begin{macro}{\@dimethylenei} +% \begin{verbatim} +% +% aaa +% 1 +% a ` (or uppercase letter) +% ` +% 2 +% bbb +% \end{verbatim} +% +% \begin{verbatim} +% \dimethylenei[BONDLIST]{ATOMLIST}{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one character a or A, +% each of which indicates the presence of an inner (endcyclic) double +% bond on the corresponding position. A lowercase letter is used +% to typeset a double bond at a upper-side of an outer skeletal bond, +% while an uppercase letter typesets a double bond at a lower-side of +% an outer skeletal bond. +% (Note that the option `A' represents an aromatic circle in +% commands |\sixheterov| etc. ) +% +% \begin{verbatim} +% BONDLIST = +% +% [] or none : no double bond +% a : 1,2-double bond +% A : 1,2-double bond in an opposite side +% \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 2 atoms) +% +% for n = 1 and 2 +% +% 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 and 2 +% +% 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 +% nW : terminal single bond (n=1 or 2) +% +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \dimethylenei{1==N}{1==Cl;2==F} +% \dimethylenei[a]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% +% The definition of |\dimethylenei| uses a picture environment and +% consists of the following unit processes: +% \begin{enumerate} +% \item adjusting substitution site by +% |\yldimethyleneposition| +% \item treating atom list, +% placing outer skeletons, inner double bonds, +% setting hetero atoms, and +% placing substituents by |\@@dimethylene|. +% \end{enumerate} +% +% \begin{macrocode} +\def\dimethylenei{% +\@ifnextchar[{\@dimethylenei[@}{\@dimethylenei[]}} +\def\@dimethylenei[#1]#2#3{% +\iniflag\iniatom% +\@reset@ylsw% +\reset@interchainsw% +\yldimethyleneiposition{#2}{#3}{0}{0}% +\begin{ShiftPicEnv}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(250,480)(-50,-180){dimethylenei}%2002/4/30 by S. Fujita +(50,180)% +\reset@double% +\@tfor\member:=#1\do{% +\if\member a\relax +\@adoublebondtrue +\else\if\member A\relax +\@Adoublebondtrue +%\else +% \expandafter\twoCH@@R\member//% +% \set@fusion@dimethi +\fi\fi}% +\@wrongbdWafalse +\@wrongbdWdfalse + \Put@Direct(0,0){\@@dimethylenei{#2}{#3}{0}{0}}% +% +%originally for fused rings +%shifted for coloring skeletal bond 2010/10/01 +% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member a\relax%dummy +\else\if\member A\relax%dummy +\else + \expandafter\twoCH@@R\member//% + \set@fusion@dimethi +\fi\fi}}% +\end{ShiftPicEnv}% +}% end of \dimethylenei +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The inner command |\set@fusion@dimethi| is used for typesetting +% a fused ring at each bond represented by |\@@tmpa|. Warnings +% concerning mismatched ring-fusions are based on the command +% |\FuseWarning|. +% +% \begin{macro}{\set@fusion@dimethi} +% \changes{v2.00}{1998/12/21}{New command: \cs{set@fusion@dimethi}} +% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring} +% \begin{macrocode} +\def\set@fusion@dimethi{% +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% +\if\@@tmpa a\relax% + \putlratom{0}{103}{\@@tmpb}% % bond fused + \FuseWarning{-171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}% + \else\if\@@tmpa A\relax% + \putlratom{171}{0}{\@@tmpb}% % bond fused + \FuseWarning{171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}% +\fi\fi +\global\let\FuseWarning=\FuseW@rning%added 2010/10/01 +}% end of the macro \set@fusion@dimethi +% \end{macrocode} +% \end{macro} +% +% \section{Tetramethylenes} +% \subsection{Normal direction} +% +% The macro |\tetramethylene| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% +% \begin{macro}{\tetramethylene} +% \begin{macro}{\@tetramethylene} +% +% \begin{verbatim} +% +% bbb ddd +% 2 4 +% a / ` b / c (or uppercase letters) +% / ` / +% 1 3 +% aaa ccc +% \end{verbatim} +% +% \begin{verbatim} +% \tetramethylene[BONDLIST]{ATOMLIST}{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one character selected from +% a to c (or A to C), +% each of which indicates the presence of an inner (endcyclic) double +% bond on the corresponding position. A lowercase letter is used +% to typeset a double bond at a lower-side of an outer skeletal bond, +% while an uppercase letter typesets a double bond at a upper-side of +% an outer skeletal bond. +% (Note that the option `A' represents an aromatic circle in +% commands |\sixheterov| etc.) +% +% \begin{verbatim} +% BONDLIST = +% +% [] or none : no double bond +% a : 1,2-double bond +% A : 1,2-double bond in an opposite side +% b : 2,3-double bond +% B : 2,3-double bond in an opposite side +% c : 3,4-double bond +% C : 3,4-double bond in an opposite side +% \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 +% nW : terminal single bond (n=1 or 4) +% +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \tetramethylene{1==N}{1==Cl;2==F} +% \tetramethylene[b]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% +% The definition of |\tetramethylene| uses a picture environment and +% is based on |\@@trimethylene| and |\@@dimethylene|, each of which +% is consist of the following unit processes: +% \begin{enumerate} +% \item adjusting substitution site by +% |\yltrimethyleneposition| or +% |\yldimethyleneposition| +% \item treating atom list, +% placing outer skeletons, inner double bonds, +% setting hetero atoms, and +% placing substituents by |\@@trimethylene|or |\@@dimethylene|. +% \end{enumerate} +% +% \begin{macrocode} +\def\tetramethylene{% +\@ifnextchar[{\@tetramethylene[@}{\@tetramethylene[]}} +\def\@tetramethylene[#1]#2#3{% +\iniflag\iniatom% +\@reset@ylsw% +{\@linterchainswfalse% +\@rinterchainswtrue% +\yltrimethyleneposition{#2}{#3}{0}{0}}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +{\@rinterchainswfalse% +\@linterchainswtrue% +\yldimethyleneposition{#2}{#3}{1}{-2}}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-342}\def\@@yli{0}\fi\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(900,480)(-200,-180){tetramethylene}%2002/4/30 by S. Fujita +(200,180)% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member a\relax +\@adoublebondtrue +\else\if\member b\relax +\@bdoublebondtrue +\else\if\member A\relax +\@Adoublebondtrue +\else\if\member B\relax +\@Bdoublebondtrue +%\else\if\member c\relax%dummy +%\else\if\member C\relax%dummy +%\else +% \expandafter\twoCH@@R\member//% +% \set@fusion@tetrameth +%\fi\fi +\fi\fi\fi\fi}% +\@wrongbdWatrue +\@wrongbdWdtrue +\Put@Direct(0,0){\@@trimethylene{#2}{#3}{0}{0}}}% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member c\relax +\@adoublebondtrue +\else\if\member C\relax +\@Adoublebondtrue +\fi\fi}% +\@wrongbdWafalse +\@wrongbdWdtrue +\Put@Direct(342,0){\@@dimethylene{#2}{#3}{1}{-2}}}% +% +%originally for fused rings +%shifted for coloring skeletal bond 2010/10/01 +% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member a\relax%dummy +\else\if\member b\relax%dummy +\else\if\member A\relax%dummy +\else\if\member B\relax%dummy +\else\if\member c\relax%dummy +\else\if\member C\relax%dummy +\else + \expandafter\twoCH@@R\member//% + \set@fusion@tetrameth +\fi\fi +\fi\fi\fi\fi}}% +\end{ShiftPicEnvB}% +}% end of \tetramethylene +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The inner command |\set@fusion@tetrameth| is used for typesetting +% a fused ring at each bond represented by |\@@tmpa|. Warnings +% concerning mismatched ring-fusions are based on the command +% |\FuseWarning|. +% +% \begin{macro}{\set@fusion@tetrameth} +% \changes{v2.00}{1998/12/21}{New command: \cs{set@fusion@tetrameth}} +% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring} +% \begin{macrocode} +\def\set@fusion@tetrameth{% +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% +\if\@@tmpa a\relax% + \putlratom{0}{0}{\@@tmpb}% % bond fused + \FuseWarning{-171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}% + \else\if\@@tmpa A\relax% + \putlratom{171}{103}{\@@tmpb}% % bond fused + \FuseWarning{171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}% + \else\if\@@tmpa b\relax% + \putlratom{171}{103}{\@@tmpb}% % bond fused + \FuseWarning{-171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}% + \else\if\@@tmpa B\relax% + \putlratom{342}{0}{\@@tmpb}% % bond fused + \FuseWarning{171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}% + \else\if\@@tmpa c\relax% + \putlratom{342}{0}{\@@tmpb}% % bond fused + \FuseWarning{-171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c}% + \else\if\@@tmpa C\relax% + \putlratom{513}{103}{\@@tmpb}% % bond fused + \FuseWarning{171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C}% + \fi\fi + \fi\fi\fi\fi +\global\let\FuseWarning=\FuseW@rning%added 2010/10/01 +}% end of the macro \set@fusion@tetrameth +% \end{macrocode} +% \end{macro} +% +% \subsection{Inverse direction} +% +% The macro |\tetramethylenei| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% +% \begin{macro}{\tetramethylenei} +% \begin{macro}{\@tetramethylenei} +% +% \begin{verbatim} +% +% aaa ccc +% 1 3 +% a ` b / ` c (or uppercase letters) +% ` / ` +% 2 4 +% bbb ddd +% \end{verbatim} +% +% \begin{verbatim} +% \tetramethylenei[BONDLIST]{ATOMLIST}{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one character selected from +% a to c (or A to C), +% each of which indicates the presence of an inner (endcyclic) double +% bond on the corresponding position. A lowercase letter is used +% to typeset a double bond at a lower-side of an outer skeletal bond, +% while an uppercase letter typesets a double bond at a upper-side of +% an outer skeletal bond. +% (Note that the option `A' represents an aromatic circle in +% commands |\sixheterov| etc.) +% +% \begin{verbatim} +% BONDLIST = +% +% [] or none : no double bond +% a : 1,2-double bond +% A : 1,2-double bond in an opposite side +% b : 2,3-double bond +% B : 2,3-double bond in an opposite side +% c : 3,4-double bond +% C : 3,4-double bond in an opposite side +% \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 +% nW : terminal single bond (n=1 or 4) +% +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \tetramethylenei{1==N}{1==Cl;2==F} +% \tetramethylenei[b]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% +% The definition of |\tetramethylenei| uses a picture environment and +% is based on |\@@trimethylenei| and |\@@dimethylenei|, each of which +% is consist of the following unit processes: +% \begin{enumerate} +% \item adjusting substitution site by +% |\yltrimethylenieposition| or +% |\yldimethyleneiposition| +% \item treating atom list, +% placing outer skeletons, inner double bonds, +% setting hetero atoms, and +% placing substituents by |\@@trimethylenei| or |\@@dimethylenei|. +% \end{enumerate} +% +% \begin{macrocode} +\def\tetramethylenei{% +\@ifnextchar[{\@tetramethylenei[@}{\@tetramethylenei[]}} +\def\@tetramethylenei[#1]#2#3{% +\iniflag\iniatom% +\@reset@ylsw% +{\@linterchainswfalse% +\@rinterchainswtrue% +\yltrimethyleneiposition{#2}{#3}{0}{0}}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +{\@rinterchainswfalse% +\@linterchainswtrue% +\yldimethyleneiposition{#2}{#3}{1}{-2}}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-342}\def\@@yli{0}\fi\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(900,480)(-200,-180){tetramethylenei}%2002/4/30 by S. Fujita +(200,180)% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member a\relax +\@adoublebondtrue +\else\if\member b\relax +\@bdoublebondtrue +\else\if\member A\relax +\@Adoublebondtrue +\else\if\member B\relax +\@Bdoublebondtrue +%\else\if\member c\relax%dummy +%\else\if\member C\relax%dummy +%\else +% \expandafter\twoCH@@R\member//% +% \set@fusion@tetramethi +%\fi\fi +\fi\fi\fi\fi}% +\@wrongbdWatrue +\@wrongbdWdtrue +\Put@Direct(0,0){\@@trimethylenei{#2}{#3}{0}{0}}}% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member c\relax +\@adoublebondtrue +\else\if\member C\relax +\@Adoublebondtrue +\fi\fi}% +\@wrongbdWatrue +\@wrongbdWdfalse +\Put@Direct(342,0){\@@dimethylenei{#2}{#3}{1}{-2}}}% +% +%originally for fused rings +%shifted for coloring skeletal bond 2010/10/01 +% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member a\relax +\else\if\member b\relax +\else\if\member A\relax +\else\if\member B\relax +\else\if\member c\relax%dummy +\else\if\member C\relax%dummy +\else + \expandafter\twoCH@@R\member//% + \set@fusion@tetramethi +\fi\fi +\fi\fi\fi\fi}}% +\end{ShiftPicEnvB}% +}%end of \tetramethylenei +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The inner command |\set@fusion@tetramethi| is used for typesetting +% a fused ring at each bond represented by |\@@tmpa|. Warnings +% concerning mismatched ring-fusions are based on the command +% |\FuseWarning|. +% +% \begin{macro}{\set@fusion@tetramethi} +% \changes{v2.00}{1998/12/21}{New command: \cs{set@fusion@tetramethi}} +% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring} +% \begin{macrocode} +\def\set@fusion@tetramethi{% +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% +\if\@@tmpa a\relax% + \putlratom{0}{103}{\@@tmpb}% % bond fused + \FuseWarning{-171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}% + \else\if\@@tmpa A\relax% + \putlratom{171}{0}{\@@tmpb}% % bond fused + \FuseWarning{171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}% + \else\if\@@tmpa b\relax% + \putlratom{171}{0}{\@@tmpb}% % bond fused + \FuseWarning{-171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}% + \else\if\@@tmpa B\relax% + \putlratom{342}{103}{\@@tmpb}% % bond fused + \FuseWarning{171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}% + \else\if\@@tmpa c\relax% + \putlratom{342}{103}{\@@tmpb}% % bond fused + \FuseWarning{-171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c}% + \else\if\@@tmpa C\relax% + \putlratom{513}{0}{\@@tmpb}% % bond fused + \FuseWarning{171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C}% + \fi\fi + \fi\fi\fi\fi +\global\let\FuseWarning=\FuseW@rning%added 2010/10/01 +}% end of the macro \set@fusion@tetramethi +% \end{macrocode} +% \end{macro} +% +% \subsection{Cisoid types} +% +% The macros |\tetramethylenecup| and |\tetramethylenecap| are +% used to draw tetramethylenes of cisoid types. +% +% \begin{verbatim} +% Cup: +% aaa ddd +% 1 4 +% ` / +% a ` / c (or uppercase letters) +% 2------3 +% bbb b ccc +% +% Cap: +% bbb b ccc +% 2------3 +% a / ` c (or uppercase letters) +% / ` +% 1 4 +% aaa ddd +% \end{verbatim} +% +% The macros have two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% \begin{verbatim} +% \tetramethylenecup[BONDLIST]{ATOMLIST}{SUBSLIST} +% \tetramethylenecap[BONDLIST]{ATOMLIST}{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one character selected from +% a to c (or A to C), +% each of which indicates the presence of an inner (endcyclic) double +% bond on the corresponding position. A lowercase letter is used +% to typeset a double bond at a lower-side of an outer skeletal bond, +% while an uppercase letter typesets a double bond at a upper-side of +% an outer skeletal bond. +% (Note that the option `A' represents an aromatic circle in +% commands |\sixheterov| etc.) +% +% \begin{verbatim} +% BONDLIST = +% +% [] or none : no double bond +% a : 1,2-double bond +% A : 1,2-double bond in an opposite side +% b : 2,3-double bond +% B : 2,3-double bond in an opposite side +% c : 3,4-double bond +% C : 3,4-double bond in an opposite side +% \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 +% nW : terminal single bond (n=1 or 4) +% +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \tetramethylenecup{1==N}{1==Cl;2==F} +% \tetramethylenecap[b]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% +% \begin{macro}{\tetramethylenecup} +% \begin{macro}{\@tetramethylenecup} +% \begin{macrocode} +\def\tetramethylenecup{% +\@ifnextchar[{\@tetramethylenecup[@}{\@tetramethylenecup[]}} +\def\@tetramethylenecup[#1]#2#3{% +\iniflag\iniatom% +\@reset@ylsw% +{\@linterchainswfalse% +\@rinterchainswtrue% +\yldimethyleneiposition{#2}{#3}{0}{0}}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +{\@rinterchainswfalse% +\@linterchainswtrue% +\yldimethyleneposition{#2}{#3}{0}{-2}}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-371}\def\@@yli{0}\fi\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(900,480)(-200,-180){tetramethylenecup}%2002/4/30 by S. Fujita +(200,180)% +%bond a and atoms 1 and 2 +{\reset@double% +\@tfor\member:=#1\do{% +\if\member a\relax +\@adoublebondtrue +\else\if\member A\relax +\@Adoublebondtrue +%\else\if\member b\relax%dummy +%\else\if\member B\relax%dummy +%\else\if\member c\relax%dummy +%\else\if\member C\relax%dummy +%\else +% \expandafter\twoCH@@R\member//% +% \set@fusion@tetracup% for all bonds +%\fi\fi\fi\fi +\fi\fi}% +\@wrongbdWafalse +\@wrongbdWdtrue +\Put@Direct(0,0){\@@dimethylenei{#2}{#3}{0}{0}}}% +%bond b +{\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\twoch@r\@membera{}% +\ifcase\@tmpa% + \or \relax% + \or \if\@tmpb s\relax\else\if\@tmpb h\relax + \xdef\fff{@}\xdef\bbb{@}\else + \xdef\fff{@}\xdef\bbb{@}\fi\fi + \or \if\@tmpb s\relax\else\if\@tmpb h\relax + \xdef\eee{@}\xdef\ccc{@}\else + \xdef\eee{@}\xdef\ccc{@}\fi\fi +\fi\fi}% +\Put@Direct(68,171){\hskbonde}% +\reset@double% +\@tfor\member:=#1\do{% + \if\member b\relax + \@bdoublebondtrue + \Put@Direct(68,171){\hbonde}% + \else\if\member B\relax + \@bdoublebondtrue + \Put@Direct(68,-171){\hbondb}% + \fi\fi}}% +%bond c and atoms 3 and 4 +{\reset@double% +\@tfor\member:=#1\do{% +\if\member c\relax +\@adoublebondtrue +\else\if\member C\relax +\@Adoublebondtrue +\else\if\member d\relax +\@bdoublebondtrue +\else\if\member D\relax +\@Bdoublebondtrue +\fi\fi\fi\fi}% + \@wrongbdWafalse + \@wrongbdWdLtrue +\Put@Direct(371,0){\@@dimethylene{#2}{#3}{0}{-2}}}% +% +%originally for fused rings +%shifted for coloring skeletal bond 2010/10/01 +% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member a\relax%dummy +\else\if\member A\relax%dummy +\else\if\member b\relax%dummy +\else\if\member B\relax%dummy +\else\if\member c\relax%dummy +\else\if\member C\relax%dummy +\else + \expandafter\twoCH@@R\member//% + \set@fusion@tetracup% for all bonds +\fi\fi\fi\fi +\fi\fi}}% +\end{ShiftPicEnvB}% +}% end of \tetramethylenecup +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The inner command |\set@fusion@tetracup| is used for typesetting +% a fused ring at each bond represented by |\@@tmpa|. Warnings +% concerning mismatched ring-fusions are based on the command +% |\FuseWarning|. +% +% \begin{macro}{\set@fusion@tetracup} +% \changes{v2.00}{1998/12/21}{New command: \cs{set@fusion@tetracup}} +% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring} +% \begin{macrocode} +\def\set@fusion@tetracup{% +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% +\if\@@tmpa a\relax% + \putlratom{0}{103}{\@@tmpb}% % bond fused + \FuseWarning{-171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}% + \else\if\@@tmpa A\relax% + \putlratom{171}{0}{\@@tmpb}% % bond fused + \FuseWarning{171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}% + \else\if\@@tmpa b\relax% + \putlratom{171}{0}{\@@tmpb}% % bond fused + \FuseWarning{-200}{0}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}% + \else\if\@@tmpa B\relax% + \putlratom{371}{0}{\@@tmpb}% % bond fused + \FuseWarning{200}{0}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}% + \else\if\@@tmpa c\relax% + \putlratom{371}{0}{\@@tmpb}% % bond fused + \FuseWarning{-171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c}% + \else\if\@@tmpa C\relax% + \putlratom{542}{103}{\@@tmpb}% % bond fused + \FuseWarning{171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C}% + \fi\fi + \fi\fi\fi\fi +\global\let\FuseWarning=\FuseW@rning%added 2010/10/01 +}% end of the macro \set@fusion@tetracup +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\tetramethylenecap} +% \begin{macro}{\@tetramethylenecap} +% \begin{macrocode} +\def\tetramethylenecap{% +\@ifnextchar[{\@tetramethylenecap[@}{\@tetramethylenecap[]}} +\def\@tetramethylenecap[#1]#2#3{% +\iniflag\iniatom% +\@reset@ylsw% +{\@linterchainswfalse% +\@rinterchainswtrue% +\yldimethyleneposition{#2}{#3}{0}{0}}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +{\@rinterchainswfalse% +\@linterchainswtrue% +\yldimethyleneiposition{#2}{#3}{0}{-2}}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-371}\def\@@yli{0}\fi\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(900,480)(-200,-180){tetramethylenecap}%2002/4/30 by S. Fujita +(200,180)% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member a\relax +\@adoublebondtrue +\else\if\member A\relax +\@Adoublebondtrue +%\else\if\member b\relax%dummy +%\else\if\member B\relax%dummy +%\else\if\member c\relax%dummy +%\else\if\member C\relax%dummy +%\else +% \expandafter\twoCH@@R\member//% +% \set@fusion@tetracap% for all bonds +%\fi\fi\fi\fi +\fi\fi}% +\@wrongbdWatrue +\Put@Direct(0,0){\@@dimethylene{#2}{#3}{0}{0}}}% +{\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\twoch@r\@membera{}% +\ifcase\@tmpa% + \or \relax% + \or \if\@tmpb s\relax\else\if\@tmpb h\relax + \xdef\fff{@}\xdef\bbb{@}\else + \xdef\fff{@}\xdef\bbb{@}\fi\fi + \or \if\@tmpb s\relax\else\if\@tmpb h\relax + \xdef\eee{@}\xdef\ccc{@}\else + \xdef\eee{@}\xdef\ccc{@}\fi\fi +\fi\fi}% +\Put@Direct(68,-68){\hskbondb}% +\reset@double% +\@tfor\member:=#1\do{% + \if\member b\relax + \@bdoublebondtrue + \Put@Direct(68,-68){\hbondb}% + \else\if\member B\relax + \@bdoublebondtrue + \Put@Direct(68,274){\hbonde}% + \fi\fi}}% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member c\relax +\@adoublebondtrue +\else\if\member C\relax +\@Adoublebondtrue +\else\if\member d\relax +\@bdoublebondtrue +\else\if\member D\relax +\@Bdoublebondtrue +\fi\fi\fi\fi}% + \@wrongbdWaLtrue +\Put@Direct(371,0){\@@dimethylenei{#2}{#3}{0}{-2}}}% +% +%originally for fused rings +%shifted for coloring skeletal bond 2010/10/01 +% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member a\relax%dummy +\else\if\member A\relax%dummy +\else\if\member b\relax%dummy +\else\if\member B\relax%dummy +\else\if\member c\relax%dummy +\else\if\member C\relax%dummy +\else + \expandafter\twoCH@@R\member//% + \set@fusion@tetracap% for all bonds +\fi\fi\fi\fi +\fi\fi}}% +\end{ShiftPicEnvB}% +}% end of \tetramethylenecap +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The inner command |\set@fusion@tetracap| is used for typesetting +% a fused ring at each bond represented by |\@@tmpa|. Warnings +% concerning mismatched ring-fusions are based on the command +% |\FuseWarning|. +% +% \begin{macro}{\set@fusion@tetracap} +% \changes{v2.00}{1998/12/21}{New command: \cs{set@fusion@tetracap}} +% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring} +% \begin{macrocode} +\def\set@fusion@tetracap{% +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% +\if\@@tmpa a\relax% + \putlratom{0}{0}{\@@tmpb}% % bond fused + \FuseWarning{-171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}% + \else\if\@@tmpa A\relax% + \putlratom{171}{103}{\@@tmpb}% % bond fused + \FuseWarning{171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}% + \else\if\@@tmpa b\relax% + \putlratom{171}{103}{\@@tmpb}% % bond fused + \FuseWarning{-200}{0}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}% + \else\if\@@tmpa B\relax% + \putlratom{371}{103}{\@@tmpb}% % bond fused + \FuseWarning{200}{0}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}% + \else\if\@@tmpa c\relax% + \putlratom{371}{103}{\@@tmpb}% % bond fused + \FuseWarning{-171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c}% + \else\if\@@tmpa C\relax% + \putlratom{542}{0}{\@@tmpb}% % bond fused + \FuseWarning{171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C}% + \fi\fi + \fi\fi\fi\fi +\global\let\FuseWarning=\FuseW@rning%added 2010/10/01 +}% end of the macro \set@fusion@tetracap +% \end{macrocode} +% \end{macro} +% +% \section{Pentamethylene} +% \subsection{Normal direction} +% +% The macro |\pentamethylene| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% +% \begin{macro}{\pentamethylene} +% \begin{macro}{\@pentamethylene} +% +% \begin{verbatim} +% +% bbb ddd +% 2 4 +% a / ` b / c` d (or uppercase letters) +% / ` / ` +% 1 3 5 +% aaa ccc +% \end{verbatim} +% +% +% \begin{verbatim} +% \pentamethylene[BONDLIST]{ATOMLIST}{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one character selected from +% a to d (or A to D), +% each of which indicates the presence of an inner (endcyclic) double +% bond on the corresponding position. A lowercase letter is used +% to typeset a double bond at a lower-side of an outer skeletal bond, +% while an uppercase letter typesets a double bond at a upper-side of +% an outer skeletal bond. +% (Note that the option `A' represents an aromatic circle in +% commands |\sixheterov| etc.) +% +% \begin{verbatim} +% BONDLIST = +% +% [] or none : no double bond +% a : 1,2-double bond +% A : 1,2-double bond in an opposite side +% b : 2,3-double bond +% B : 2,3-double bond in an opposite side +% c : 3,4-double bond +% C : 3,4-double bond in an opposite side +% d : 4,5-double bond +% D : 4,5-double bond in an opposite side +% \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 +% nW : terminal single bond (n=1 or 5) +% +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \pentamethylene{1==N}{1==Cl;2==F} +% \pentamethylene[b]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% +% The definition of |\pentamethylene| uses a picture environment and +% is based on two |\@@trimethylene| commands, each of which +% is consist of the following unit processes: +% \begin{enumerate} +% \item adjusting substitution site by +% |\yltrimethyleneposition| +% \item treating atom list, +% placing outer skeletons, inner double bonds, +% setting hetero atoms, and +% placing substituents by |\@@trimethylene|. +% \end{enumerate} +% +% \begin{macrocode} +\def\pentamethylene{% +\@ifnextchar[{\@pentamethylene[@}{\@pentamethylene[]}} +\def\@pentamethylene[#1]#2#3{% +\iniflag\iniatom% +\@reset@ylsw% +{\@linterchainswfalse% +\@rinterchainswtrue% +\yltrimethyleneposition{#2}{#3}{0}{0}}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +{\@rinterchainswfalse% +\@linterchainswtrue% +\yltrimethyleneposition{#2}{#3}{1}{-2}}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-342}\def\@@yli{0}\fi\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(1100,480)(-200,-180){pentamethylene}%2002/4/30 by S. Fujita +(200,180)% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member a\relax +\@adoublebondtrue +\else\if\member b\relax +\@bdoublebondtrue +\else\if\member A\relax +\@Adoublebondtrue +\else\if\member B\relax +\@Bdoublebondtrue +%\else\if\member c\relax%dummy +%\else\if\member C\relax%dummy +%\else\if\member d\relax%dummy +%\else\if\member D\relax%dummy +%\else +% \expandafter\twoCH@@R\member//% +% \set@fusion@pentameth% for all bonds +%\fi\fi\fi\fi +\fi\fi\fi\fi}% +\@wrongbdWatrue +\@wrongbdWdtrue +\Put@Direct(0,0){\@@trimethylene{#2}{#3}{0}{0}}}% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member c\relax +\@adoublebondtrue +\else\if\member d\relax +\@bdoublebondtrue +\else\if\member C\relax +\@Adoublebondtrue +\else\if\member D\relax +\@Bdoublebondtrue +\fi\fi\fi\fi}% +\@wrongbdWatrue +\@wrongbdWdfalse +\Put@Direct(342,0){\@@trimethylene{#2}{#3}{1}{-2}}}% +% +%originally for fused rings +%shifted for coloring skeletal bond 2010/10/01 +% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member a\relax%dummy +\else\if\member b\relax%dummy +\else\if\member A\relax%dummy +\else\if\member B\relax%dummy +\else\if\member c\relax%dummy +\else\if\member C\relax%dummy +\else\if\member d\relax%dummy +\else\if\member D\relax%dummy +\else + \expandafter\twoCH@@R\member//% + \set@fusion@pentameth% for all bonds +\fi\fi\fi\fi +\fi\fi\fi\fi}}% +\end{ShiftPicEnvB}% +}% end of \pentamethylene +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The inner command |\set@fusion@pentameth| is used for typesetting +% a fused ring at each bond represented by |\@@tmpa|. Warnings +% concerning mismatched ring-fusions are based on the command +% |\FuseWarning|. +% +% \begin{macro}{\set@fusion@pentameth} +% \changes{v2.00}{1998/12/21}{New command: \cs{set@fusion@pentameth}} +% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring} +% \begin{macrocode} +\def\set@fusion@pentameth{% +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% +\if\@@tmpa a\relax% + \putlratom{0}{0}{\@@tmpb}% % bond fused + \FuseWarning{-171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}% + \else\if\@@tmpa A\relax% + \putlratom{171}{103}{\@@tmpb}% % bond fused + \FuseWarning{171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}% + \else\if\@@tmpa b\relax% + \putlratom{171}{103}{\@@tmpb}% % bond fused + \FuseWarning{-171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}% + \else\if\@@tmpa B\relax% + \putlratom{342}{0}{\@@tmpb}% % bond fused + \FuseWarning{171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}% + \else\if\@@tmpa c\relax% + \putlratom{342}{0}{\@@tmpb}% % bond fused + \FuseWarning{-171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c}% + \else\if\@@tmpa C\relax% + \putlratom{513}{103}{\@@tmpb}% % bond fused + \FuseWarning{171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C}% + \else\if\@@tmpa d\relax% + \putlratom{513}{103}{\@@tmpb}% % bond fused + \FuseWarning{-171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{d}% + \else\if\@@tmpa D\relax% + \putlratom{684}{0}{\@@tmpb}% % bond fused + \FuseWarning{171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{D}% + \fi\fi\fi\fi + \fi\fi\fi\fi +\global\let\FuseWarning=\FuseW@rning%added 2010/10/01 +}% end of the macro \set@fusion@pentameth +% \end{macrocode} +% \end{macro} +% +% \subsection{Inverse direction} +% +% The macro |\pentamethylenei| has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% +% \begin{macro}{\pentamethylenei} +% \begin{macro}{\@pentamethylenei} +% +% \begin{verbatim} +% +% (aaa) +% aaa ccc eee (ccc) +% 1 3 5 +% a ` b / ` c / d +% ` / ` / +% 2 4 +% bbb ddd (bbb) +% \end{verbatim} +% +% \begin{verbatim} +% \pentamethylenei[BONDLIST]{ATOMLIST}{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one character selected from +% a to d (or A to D), +% each of which indicates the presence of an inner (endcyclic) double +% bond on the corresponding position. A lowercase letter is used +% to typeset a double bond at the upper-side of an outer skeletal bond, +% while an uppercase letter typesets a double bond at the lower-side of +% an outer skeletal bond. +% (Note that the option `A' represents an aromatic circle in +% commands |\sixheterov| etc.) +% +% \begin{verbatim} +% BONDLIST = +% +% [] or none : no double bond +% a : 1,2-double bond +% A : 1,2-double bond in an opposite side +% b : 2,3-double bond +% B : 2,3-double bond in an opposite side +% c : 3,4-double bond +% C : 3,4-double bond in an opposite side +% d : 4,5-double bond +% D : 4,5-double bond in an opposite side +% \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 +% nW : terminal single bond (n=1 or 5) +% +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \pentamethylenei{1==N}{1==Cl;2==F} +% \pentamethylenei[b]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% +% The definition of |\pentamethylenei| uses a picture environment and +% is based on two |\@@trimethylenei| commands, each of which +% is consist of the following unit processes: +% \begin{enumerate} +% \item adjusting substitution site by +% |\yltrimethyleneiposition| +% \item treating atom list, +% placing outer skeletons, inner double bonds, +% setting hetero atoms, and +% placing substituents by |\@@trimethylenei|. +% \end{enumerate} +% +% \begin{macrocode} +\def\pentamethylenei{% +\@ifnextchar[{\@pentamethylenei[@}{\@pentamethylenei[]}} +\def\@pentamethylenei[#1]#2#3{% +\iniflag\iniatom% +\@reset@ylsw% +{\@linterchainswfalse% +\@rinterchainswtrue% +\yltrimethyleneiposition{#2}{#3}{0}{0}}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +{\@rinterchainswfalse% +\@linterchainswtrue% +\yltrimethyleneiposition{#2}{#3}{1}{-2}}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-342}\def\@@yli{0}\fi\fi +\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(1100,480)(-200,-180){pentamethylenei}%2002/4/30 by S. Fujita +(200,180)% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member a\relax +\@adoublebondtrue +\else\if\member b\relax +\@bdoublebondtrue +\else\if\member A\relax +\@Adoublebondtrue +\else\if\member B\relax +\@Bdoublebondtrue +%\else\if\member c\relax%dummy +%\else\if\member C\relax%dummy +%\else\if\member d\relax%dummy +%\else\if\member D\relax%dummy +%\else +% \expandafter\twoCH@@R\member//% +% \set@fusion@pentamethi% for all bonds +%\fi\fi\fi\fi +\fi\fi\fi\fi}% +\@wrongbdWatrue +\@wrongbdWdtrue +\Put@Direct(0,0){\@@trimethylenei{#2}{#3}{0}{0}}}% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member c\relax +\@adoublebondtrue +\else\if\member d\relax +\@bdoublebondtrue +\else\if\member C\relax +\@Adoublebondtrue +\else\if\member D\relax +\@Bdoublebondtrue +\fi\fi\fi\fi}% +\@wrongbdWafalse +\@wrongbdWdtrue +\Put@Direct(342,0){\@@trimethylenei{#2}{#3}{1}{-2}}}% +% +%originally for fused rings +%shifted for coloring skeletal bond 2010/10/01 +% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member a\relax%dummy +\else\if\member b\relax%dummy +\else\if\member A\relax%dummy +\else\if\member B\relax%dummy +\else\if\member c\relax%dummy +\else\if\member C\relax%dummy +\else\if\member d\relax%dummy +\else\if\member D\relax%dummy +\else + \expandafter\twoCH@@R\member//% + \set@fusion@pentamethi% for all bonds +\fi\fi\fi\fi +\fi\fi\fi\fi}}% +\end{ShiftPicEnvB}% +}% end of \pentamethylenei +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The inner command |\set@fusion@pentamethi| is used for typesetting +% a fused ring at each bond represented by |\@@tmpa|. Warnings +% concerning mismatched ring-fusions are based on the command +% |\FuseWarning|. +% +% \begin{macro}{\set@fusion@pentamethi} +% \changes{v2.00}{1998/12/21}{New command: \cs{set@fusion@pentamethi}} +% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring} +% \begin{macrocode} +\def\set@fusion@pentamethi{% +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% +\if\@@tmpa a\relax% + \putlratom{0}{103}{\@@tmpb}% % bond fused + \FuseWarning{-171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{a}% + \else\if\@@tmpa A\relax% + \putlratom{171}{0}{\@@tmpb}% % bond fused + \FuseWarning{171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{A}% + \else\if\@@tmpa b\relax% + \putlratom{171}{0}{\@@tmpb}% % bond fused + \FuseWarning{-171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{b}% + \else\if\@@tmpa B\relax% + \putlratom{342}{103}{\@@tmpb}% % bond fused + \FuseWarning{171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{B}% + \else\if\@@tmpa c\relax% + \putlratom{342}{103}{\@@tmpb}% % bond fused + \FuseWarning{-171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{c}% + \else\if\@@tmpa C\relax% + \putlratom{513}{0}{\@@tmpb}% % bond fused + \FuseWarning{171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{C}% + \else\if\@@tmpa d\relax% + \putlratom{513}{0}{\@@tmpb}% % bond fused + \FuseWarning{-171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{d}% + \else\if\@@tmpa D\relax% + \putlratom{684}{103}{\@@tmpb}% % bond fused + \FuseWarning{171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{D}% + \fi\fi\fi\fi + \fi\fi\fi\fi +\global\let\FuseWarning=\FuseW@rning%added 2010/10/01 +}% end of the macro \set@fusion@pentamethi +% \end{macrocode} +% \end{macro} +% +% \section{Switches for Selecting Normal and Inverse Directions} +% +% The switch |\@normorinvsw| is used to select normal or +% inverse direction in the definition of commands for drawing +% hexametylenes and higher homologs. The value of this switch is +% false for normal direction and true for inverse direction. +% +% \begin{macro}{\if@normorinvsw} +% \begin{macrocode} +\newif\if@normorinvsw \@normorinvswfalse +% \end{macrocode} +% \end{macro} +% +% The macro |\set@normaldirection| assigns active commands to +% temporary commands in the definition of a command for drawing +% hexametylenes or higher homologs of normal direction. +% \begin{macro}{\set@normaldirection} +% \begin{macrocode} +\def\set@normaldirection{% +\@normorinvswfalse +\let\@yltrinormorinv=\yltrimethyleneposition +\let\@yldinormorinv=\yldimethyleneposition +\let\@@trinormorinv=\@@trimethylene +\let\@@dinormorinv=\@@dimethylene} +% \end{macrocode} +% \end{macro} +% +% The macro |\set@inversedirection| assigns active commands to +% temporary commands in the definition of a command for drawing +% hexametylenes or higher homologs of inverse direction. +% \begin{macro}{\set@inversedirection} +% \begin{macrocode} +\def\set@inversedirection{% +\@normorinvswtrue +\let\@yltrinormorinv=\yltrimethyleneiposition +\let\@yldinormorinv=\yldimethyleneiposition +\let\@@trinormorinv=\@@trimethylenei +\let\@@dinormorinv=\@@dimethylenei} +% \end{macrocode} +% \end{macro} +% +% \section{Hexamethylenes of normal and inverse direction} +% +% Hexamethylene and hetera derivatives are typeset with the commands +% |\hexamethylene| and |\hexamethylenei|. The former macro +% is to draw hexamethylenes of normal direction, while the latter +% is to draw ones of inverse directions. +% +% \begin{verbatim} +% Normal direction: +% +% (bbb) ((bbb)) +% bbb ddd fff +% 2 4 6 +% a / ` b / c` d / e +% / ` / ` / +% 1 3 5 +% aaa ccc eee +% (aaa) (ccc) +% ((aaa)) +% +% Inverse direction: +% +% (aaa) +% aaa ccc eee (ccc) ((aaa)) +% 1 3 5 +% a ` b / ` c / d ` e +% ` / ` / ` +% 2 4 6 +% bbb ddd (bbb) fff((bbb)) +% \end{verbatim} +% +% The macros have two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% +% \begin{verbatim} +% \hexamethylene[BONDLIST]{ATOMLIST}{SUBSLIST} +% \hexamethylenei[BONDLIST]{ATOMLIST}{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one character selected from +% a to e (or A to E), +% each of which indicates the presence of an inner (endcyclic) double +% bond on the corresponding position. A lowercase letter is used +% to typeset a double bond at the upper-side of an outer skeletal bond, +% while an uppercase letter typesets a double bond at the lower-side of +% an outer skeletal bond. +% (Note that the option `A' represents an aromatic circle in +% commands |\sixheterov| etc.) +% +% \begin{verbatim} +% BONDLIST = +% +% [] or none : no double bond +% a : 1,2-double bond +% A : 1,2-double bond in an opposite side +% b : 2,3-double bond +% B : 2,3-double bond in an opposite side +% c : 3,4-double bond +% C : 3,4-double bond in an opposite side +% d : 4,5-double bond +% D : 4,5-double bond in an opposite side +% e : 5,6-double bond +% E : 5,6-double bond in an opposite side +% \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 +% nW : terminal single bond (n=1 or 6) +% +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \hexamethylene{1==N}{1==Cl;2==F} +% \hexamethylenei[b]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% +% The macros |\hexamethylene| and |\hexamethylenei| are +% based on a common inner macro |\@hexamethylene|, +% the definition of which uses a picture environment. +% +% \begin{macro}{\hexamethylene} +% \begin{macrocode} +\def\hexamethylene{% +\@ifnextchar[{\set@normaldirection\@hexamethylene[@}{% +\set@normaldirection\@hexamethylene[]}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\hexamethylenei} +% \begin{macrocode} +\def\hexamethylenei{% +\@ifnextchar[{\set@inversedirection\@hexamethylene[@}{% +\set@inversedirection\@hexamethylene[]}} +% \end{macrocode} +% \end{macro} +% +% Inner temporary commands such as |\@@trinormorinv| and +% |\@@dinormorinv| in the common |\@hexamethylene| macro +% are replaced by active commands such as |\@@trimethylene| and +% |\@@dimethylene|. They carry out the following unit processes. +% \begin{enumerate} +% \item Adjusting substitution site: +% |\yltrimethyleneposition| +% or |\yldimethyleneposition| for normal direction; +% |\yltrimethyleneiposition| +% or |\yldimethyleneiposition| for inverse direction. +% \item Treating atom list, +% placing outer skeletons, inner double bonds, +% setting hetero atoms, and +% placing substituents: +% |\@@trimethylene| +% or |\@@dimethylene| for normal direction; +% |\@@trimethylenei| +% or |\@@dimethylenei| for normal direction. +% \end{enumerate} +% +% \begin{macro}{\@hexamethylene} +% \begin{macrocode} +\def\@hexamethylene[#1]#2#3{% +\iniflag\iniatom% +\@reset@ylsw% +{\@linterchainswfalse% +\@rinterchainswtrue% +\@yltrinormorinv{#2}{#3}{0}{0}}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +{\@rinterchainswtrue% +\@linterchainswtrue% +\@yltrinormorinv{#2}{#3}{1}{-2}}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-342}\def\@@yli{0}\fi +\else +{\@rinterchainswfalse% +\@linterchainswtrue% +\@yldinormorinv{#2}{#3}{1}{-4}}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-684}\def\@@yli{0}\fi\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(1100,480)(-200,-180){hexamethylene}%2002/4/30 by S. Fujita +(200,180)% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member a\relax +\@adoublebondtrue +\else\if\member b\relax +\@bdoublebondtrue +\else\if\member A\relax +\@Adoublebondtrue +\else\if\member B\relax +\@Bdoublebondtrue +%\else\if\member c\relax%dummy +%\else\if\member C\relax%dummy +%\else\if\member d\relax%dummy +%\else\if\member D\relax%dummy +%\else\if\member e\relax%dummy +%\else\if\member E\relax%dummy +%\else +% \expandafter\twoCH@@R\member//% +% \set@fusion@hexameth% for all bonds +%\fi\fi\fi\fi\fi\fi +\fi\fi\fi\fi}% +\@wrongbdWatrue +\@wrongbdWdtrue +\Put@Direct(0,0){\@@trinormorinv{#2}{#3}{0}{0}}}% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member c\relax +\@adoublebondtrue +\else\if\member d\relax +\@bdoublebondtrue +\else\if\member C\relax +\@Adoublebondtrue +\else\if\member D\relax +\@Bdoublebondtrue +\fi\fi\fi\fi}% +\@wrongbdWatrue +\@wrongbdWdtrue +\Put@Direct(342,0){\@@trinormorinv{#2}{#3}{1}{-2}}}% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member e\relax +\@adoublebondtrue +\else\if\member E\relax +\@Adoublebondtrue +\fi\fi}% +\if@normorinvsw% inverse + \@wrongbdWatrue + \@wrongbdWdfalse +\else% normal + \@wrongbdWafalse + \@wrongbdWdtrue +\fi +\Put@Direct(684,0){\@@dinormorinv{#2}{#3}{1}{-4}}}% +% +%originally for fused rings +%shifted for coloring skeletal bond 2010/10/01 +% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member a\relax%dummy +\else\if\member b\relax%dummy +\else\if\member A\relax%dummy +\else\if\member B\relax%dummy +\else\if\member c\relax%dummy +\else\if\member C\relax%dummy +\else\if\member d\relax%dummy +\else\if\member D\relax%dummy +\else\if\member e\relax%dummy +\else\if\member E\relax%dummy +\else + \expandafter\twoCH@@R\member//% + \set@fusion@hexameth% for all bonds +\fi\fi\fi\fi\fi\fi +\fi\fi\fi\fi}}% +\end{ShiftPicEnvB}% +}% end of \@hexamethylene +% \end{macrocode} +% \end{macro} +% +% The inner command |\set@fusion@hexameth| is used for typesetting +% a fused ring at each bond represented by |\@@tmpa|. Warnings +% concerning mismatched ring-fusions are based on the command +% |\FuseWarning|. +% +% \begin{macro}{\set@fusion@hexameth} +% \changes{v2.00}{1998/12/21}{New command: \cs{set@fusion@hexameth}} +% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring} +% \begin{macrocode} +\def\set@fusion@hexameth{% +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% +\if@normorinvsw + \if\@@tmpa e\relax% + \putlratom{684}{103}{\@@tmpb}% % bond fused + \FuseWarning{-171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{e}% + \else\if\@@tmpa E\relax% + \putlratom{855}{0}{\@@tmpb}% % bond fused + \FuseWarning{171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{E}% + \else + \set@fusion@pentamethi + \fi\fi +\else + \if\@@tmpa e\relax% + \putlratom{684}{0}{\@@tmpb}% % bond fused + \FuseWarning{-171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{e}% + \else\if\@@tmpa E\relax% + \putlratom{855}{103}{\@@tmpb}% % bond fused + \FuseWarning{171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{E}% + \else + \set@fusion@pentameth + \fi\fi +\fi +\global\let\FuseWarning=\FuseW@rning%added 2010/10/01 +}% end of the macro \set@fusion@hexameth +% \end{macrocode} +% \end{macro} +% +% \section{Heptamethylenes of normal and inverse direction} +% +% Heptamethylene and hetera derivatives are typeset with the commands +% |\heptamethylene| and |\heptamethylenei|. The former macro +% is to draw heptamethylenes of normal direction, while the latter +% is to draw ones of inverse directions. +% +% \begin{verbatim} +% Normal direction: +% +% (bbb) ((bbb)) +% bbb ddd fff +% 2 4 6 +% a / ` b / c` d / e ` f +% / ` / ` / ` +% 1 3 5 7 +% aaa ccc eee gggg +% (aaa) (ccc) ((ccc)) +% ((aaa)) +% +% Inverse direction: +% +% (aaa) ((aaa)) ((ccc)) +% aaa ccc eee (ccc) ggg +% 1 3 5 7 +% a ` b / ` c / d ` e /f +% ` / ` / ` / +% 2 4 6 +% bbb ddd (bbb) fff((bbb)) +% (aaa) +% \end{verbatim} +% +% The macros have two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% \begin{verbatim} +% \heptamethylene[BONDLIST]{ATOMLIST}{SUBSLIST} +% \heptamethylenei[BONDLIST]{ATOMLIST}{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one character selected from +% a to f (or A to F), +% each of which indicates the presence of an inner (endcyclic) double +% bond on the corresponding position. A lowercase letter is used +% to typeset a double bond at the upper-side of an outer skeletal bond, +% while an uppercase letter typesets a double bond at the lower-side of +% an outer skeletal bond. +% (Note that the option `A' represents an aromatic circle in +% commands |\sixheterov| etc.) +% +% \begin{verbatim} +% BONDLIST = +% +% [] or none : no double bond +% a : 1,2-double bond +% A : 1,2-double bond in an opposite side +% b : 2,3-double bond +% B : 2,3-double bond in an opposite side +% c : 3,4-double bond +% C : 3,4-double bond in an opposite side +% d : 4,5-double bond +% D : 4,5-double bond in an opposite side +% e : 5,6-double bond +% E : 5,6-double bond in an opposite side +% f : 6,7-double bond +% F : 6,7-double bond in an opposite side +% \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 7 atoms) +% +% for n = 1 to 7 +% +% n==? : Hetero atom, e.g. N, O, etc. at n-position, +% e.g. 1==N for N at 1-position +% \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 7 +% +% 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 +% nW : terminal single bond (n=1 or 7) +% +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \heptamethylene{1==N}{1==Cl;2==F} +% \heptamethylenei[b]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% +% The macros |\heptamethylene| and |\heptamethylenei| are +% based on a common inner macro |\@heptamethylene|, +% the definition of which uses a picture environment. +% +% \begin{macro}{\heptamethylene} +% \begin{macrocode} +\def\heptamethylene{% +\@ifnextchar[{\set@normaldirection\@heptamethylene[@}{% +\set@normaldirection\@heptamethylene[]}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\heptamethylenei} +% \begin{macrocode} +\def\heptamethylenei{% +\@ifnextchar[{\set@inversedirection\@heptamethylene[@}{% +\set@inversedirection\@heptamethylene[]}} +% \end{macrocode} +% \end{macro} +% +% Inner temporary commands such as |\@@trinormorinv| and +% |\@@dinormorinv| in the common |\@heptamethylene| macro +% are replaced by active commands such as |\@@trimethylene| and +% |\@@dimethylene|. They carry out the following unit processes. +% \begin{enumerate} +% \item Adjusting substitution site: +% |\yltrimethyleneposition| +% or |\yldimethyleneposition| for normal direction; +% |\yltrimethyleneiposition| +% or |\yldimethyleneiposition| for inverse direction. +% \item Treating atom list, +% placing outer skeletons, inner double bonds, +% setting hetero atoms, and +% placing substituents: +% |\@@trimethylene| +% or |\@@dimethylene| for normal direction; +% |\@@trimethylenei| +% or |\@@dimethylenei| for normal direction. +% \end{enumerate} +% +% \begin{macro}{\@heptamethylene} +% \begin{macrocode} +\def\@heptamethylene[#1]#2#3{% +\iniflag\iniatom% +\@reset@ylsw% +{\@linterchainswfalse% +\@rinterchainswtrue% +\@yltrinormorinv{#2}{#3}{0}{0}}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +{\@rinterchainswtrue% +\@linterchainswtrue% +\@yltrinormorinv{#2}{#3}{1}{-2}}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-342}\def\@@yli{0}\fi +\else +{\@rinterchainswfalse% +\@linterchainswtrue% +\@yltrinormorinv{#2}{#3}{1}{-4}}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-684}\def\@@yli{0}\fi\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(1450,480)(-200,-180){heptamethylene}%2002/4/30 by S. Fujita +(200,180)% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member a\relax +\@adoublebondtrue +\else\if\member b\relax +\@bdoublebondtrue +\else\if\member A\relax +\@Adoublebondtrue +\else\if\member B\relax +\@Bdoublebondtrue +%\else\if\member c\relax%dummy +%\else\if\member C\relax%dummy +%\else\if\member d\relax%dummy +%\else\if\member D\relax%dummy +%\else\if\member e\relax%dummy +%\else\if\member E\relax%dummy +%\else\if\member f\relax%dummy +%\else\if\member F\relax%dummy +%\else +% \expandafter\twoCH@@R\member//% +% \set@fusion@heptameth% for all bonds +%\fi\fi\fi\fi\fi\fi\fi\fi +\fi\fi\fi\fi}% +\@wrongbdWatrue +\@wrongbdWdtrue +\Put@Direct(0,0){\@@trinormorinv{#2}{#3}{0}{0}}}% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member c\relax +\@adoublebondtrue +\else\if\member d\relax +\@bdoublebondtrue +\else\if\member C\relax +\@Adoublebondtrue +\else\if\member D\relax +\@Bdoublebondtrue +\fi\fi\fi\fi}% +\@wrongbdWatrue +\@wrongbdWdtrue +\Put@Direct(342,0){\@@trinormorinv{#2}{#3}{1}{-2}}}% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member e\relax +\@adoublebondtrue +\else\if\member E\relax +\@Adoublebondtrue +\else\if\member f\relax +\@bdoublebondtrue +\else\if\member F\relax +\@Bdoublebondtrue +\fi\fi\fi\fi}% +\if@normorinvsw% inverse +\@wrongbdWafalse +\@wrongbdWdtrue +\else%normal +\@wrongbdWatrue +\@wrongbdWdfalse +\fi +\Put@Direct(684,0){\@@trinormorinv{#2}{#3}{1}{-4}}}% +% +%originally for fused rings +%shifted for coloring skeletal bond 2010/10/01 +% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member a\relax%dummy +\else\if\member b\relax%dummy +\else\if\member A\relax%dummy +\else\if\member B\relax%dummy +\else\if\member c\relax%dummy +\else\if\member C\relax%dummy +\else\if\member d\relax%dummy +\else\if\member D\relax%dummy +\else\if\member e\relax%dummy +\else\if\member E\relax%dummy +\else\if\member f\relax%dummy +\else\if\member F\relax%dummy +\else + \expandafter\twoCH@@R\member//% + \set@fusion@heptameth% for all bonds +\fi\fi\fi\fi\fi\fi\fi\fi +\fi\fi\fi\fi}}% +\end{ShiftPicEnvB}% +}% end of \@heptamethylene +% \end{macrocode} +% \end{macro} +% +% The inner command |\set@fusion@heptameth| is used for typesetting +% a fused ring at each bond represented by |\@@tmpa|. Warnings +% concerning mismatched ring-fusions are based on the command +% |\FuseWarning|. +% +% \begin{macro}{\set@fusion@heptameth} +% \changes{v2.00}{1998/12/21}{New command: \cs{set@fusion@heptameth}} +% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring} +% \begin{macrocode} +\def\set@fusion@heptameth{% +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% +\if@normorinvsw + \if\@@tmpa e\relax% + \putlratom{684}{103}{\@@tmpb}% % bond fused + \FuseWarning{-171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{e}% + \else\if\@@tmpa E\relax% + \putlratom{855}{0}{\@@tmpb}% % bond fused + \FuseWarning{171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{E}% + \else\if\@@tmpa f\relax% + \putlratom{855}{0}{\@@tmpb}% % bond fused + \FuseWarning{-171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{f}% + \else\if\@@tmpa F\relax% + \putlratom{1027}{103}{\@@tmpb}% % bond fused + \FuseWarning{171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{F}% + \else + \set@fusion@pentamethi + \fi\fi\fi\fi +\else + \if\@@tmpa e\relax% + \putlratom{684}{0}{\@@tmpb}% % bond fused + \FuseWarning{-171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{e}% + \else\if\@@tmpa E\relax% + \putlratom{855}{103}{\@@tmpb}% % bond fused + \FuseWarning{171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{E}% + \else\if\@@tmpa f\relax% + \putlratom{855}{103}{\@@tmpb}% % bond fused + \FuseWarning{-171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{f}% + \else\if\@@tmpa F\relax% + \putlratom{1027}{0}{\@@tmpb}% % bond fused + \FuseWarning{171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{F}% + \else + \set@fusion@pentameth + \fi\fi\fi\fi +\fi +\global\let\FuseWarning=\FuseW@rning%added 2010/10/01 +}% end of the macro \set@fusion@heptameth +% \end{macrocode} +% \end{macro} +% +% \section{Octamethylenes of normal and inverse directions} +% +% Octamethylene and hetera derivatives are typeset with the commands +% |\octamethylene| and |\octamethylenei|. The former macro +% is to draw octamethylenes of normal direction, while the latter +% is to draw ones of inverse directions. +% +% \begin{verbatim} +% Normal direction: +% +% (bbb) ((bbb)) (((bbb))) +% bbb ddd fff hhh +% 2 4 6 8 +% a / ` b / c` d / e ` f /g +% / ` / ` / ` / +% 1 3 5 7 +% aaa ccc eee gggg +% (aaa) (ccc) ((ccc)) +% ((aaa)) (((aaa))) +% +% Inverse direction: +% (((aaa))) +% (aaa) ((aaa)) ((ccc)) +% aaa ccc eee (ccc) ggg +% 1 3 5 7 +% a ` b / ` c / d ` e /f ` g +% ` / ` / ` / ` +% 2 4 6 8 +% bbb ddd fff hhh +% (bbb) ((bbb)) (((bbb))) +% \end{verbatim} +% +% The macros has two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% \begin{verbatim} +% \octamethylene[BONDLIST]{ATOMLIST}{SUBSLIST} +% \octamethylenei[BONDLIST]{ATOMLIST}{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one character selected from +% a to g (or A to G), +% each of which indicates the presence of an inner (endcyclic) double +% bond on the corresponding position. A lowercase letter is used +% to typeset a double bond at the upper-side of an outer skeletal bond, +% while an uppercase letter typesets a double bond at the lower-side of +% an outer skeletal bond. +% (Note that the option `A' represents an aromatic circle in +% commands |\sixheterov| etc.) +% +% \begin{verbatim} +% BONDLIST = +% +% [] or none : no double bond +% a : 1,2-double bond +% A : 1,2-double bond in an opposite side +% b : 2,3-double bond +% B : 2,3-double bond in an opposite side +% c : 3,4-double bond +% C : 3,4-double bond in an opposite side +% d : 4,5-double bond +% D : 4,5-double bond in an opposite side +% e : 5,6-double bond +% E : 5,6-double bond in an opposite side +% f : 6,7-double bond +% F : 6,7-double bond in an opposite side +% g : 7,8-double bond +% G : 7,8-double bond in an opposite side +% \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 8 atoms) +% +% for n = 1 to 8 +% +% n==? : Hetero atom, e.g. N, O, etc. at n-position, +% e.g. 1==N for N at 1-position +% \end{verbatim} +% +% The |SUBSLIST| argument contains one or more substitution descriptors +% which are separated from each other by a semicolon. Each substitution +% descriptor has a locant number with a bond modifier and a substituent, +% where these are separated with a double equality symbol. +% \begin{verbatim} +% +% SUBSLIST: list of substituents +% +% for n = 1 to 8 +% +% nD : exocyclic double bond at n-atom +% n or nS : exocyclic single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% nSA : alpha single bond at n-atom (boldface) +% nSB : beta single bond at n-atom (dotted line) +% nSa : alpha (not specified) single bond at n-atom +% nSb : beta (not specified) single bond at n-atom +% nW : terminal single bond (n=1 or 8) +% +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \octamethylene{1==N}{1==Cl;2==F} +% \octamethylenei[b]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% +% The macros |\octamethylene| and |\octamethylenei| are +% based on a common inner macro |\@octamethylene|, +% the definition of which uses a picture environment. +% +% \begin{macro}{\octamethylene} +% \begin{macrocode} +\def\octamethylene{% +\@ifnextchar[{\set@normaldirection\@octamethylene[@}{% +\set@normaldirection\@octamethylene[]}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\octamethylenei} +% \begin{macrocode} +\def\octamethylenei{% +\@ifnextchar[{\set@inversedirection\@octamethylene[@}{% +\set@inversedirection\@octamethylene[]}} +% \end{macrocode} +% \end{macro} +% +% Inner temporary commands such as |\@@trinormorinv| and +% |\@@dinormorinv| in the common |\@octamethylene| macro +% are replaced by active commands such as |\@@trimethylene| and +% |\@@dimethylene|. They carry out the following unit processes. +% \begin{enumerate} +% \item Adjusting substitution site: +% |\yltrimethyleneposition| +% or |\yldimethyleneposition| for normal direction; +% |\yltrimethyleneiposition| +% or |\yldimethyleneiposition| for inverse direction. +% \item Treating atom list, +% placing outer skeletons, inner double bonds, +% setting hetero atoms, and +% placing substituents: +% |\@@trimethylene| +% or |\@@dimethylene| for normal direction; +% |\@@trimethylenei| +% or |\@@dimethylenei| for normal direction. +% \end{enumerate} +% +% \begin{macro}{\@octamethylene} +% \begin{macrocode} +\def\@octamethylene[#1]#2#3{% +\iniflag\iniatom% +\@reset@ylsw% +{\@linterchainswfalse% +\@rinterchainswtrue% +\@yltrinormorinv{#2}{#3}{0}{0}}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +{\@rinterchainswtrue% +\@linterchainswtrue% +\@yltrinormorinv{#2}{#3}{1}{-2}}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-342}\def\@@yli{0}\fi +\else +{\@rinterchainswtrue% +\@linterchainswtrue% +\@yltrinormorinv{#2}{#3}{1}{-4}}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-684}\def\@@yli{0}\fi +\else +{\@rinterchainswfalse% +\@linterchainswtrue% +\@yldinormorinv{#2}{#3}{1}{-6}}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-1026}\def\@@yli{0}\fi\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(1620,480)(-200,-180){octamethylene}%2002/4/30 by S. Fujita +(200,180)% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member a\relax +\@adoublebondtrue +\else\if\member b\relax +\@bdoublebondtrue +\else\if\member A\relax +\@Adoublebondtrue +\else\if\member B\relax +\@Bdoublebondtrue +%\else\if\member c\relax%dummy +%\else\if\member C\relax%dummy +%\else\if\member d\relax%dummy +%\else\if\member D\relax%dummy +%\else\if\member e\relax%dummy +%\else\if\member E\relax%dummy +%\else\if\member f\relax%dummy +%\else\if\member F\relax%dummy +%\else\if\member g\relax%dummy +%\else\if\member G\relax%dummy +%\else +% \expandafter\twoCH@@R\member//% +% \set@fusion@octameth% for all bonds +%\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi +\fi\fi\fi\fi}% +\@wrongbdWatrue +\@wrongbdWdtrue +\Put@Direct(0,0){\@@trinormorinv{#2}{#3}{0}{0}}}% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member c\relax +\@adoublebondtrue +\else\if\member d\relax +\@bdoublebondtrue +\else\if\member C\relax +\@Adoublebondtrue +\else\if\member D\relax +\@Bdoublebondtrue +\fi\fi\fi\fi}% +\@wrongbdWatrue +\@wrongbdWdtrue +\Put@Direct(342,0){\@@trinormorinv{#2}{#3}{1}{-2}}}% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member e\relax +\@adoublebondtrue +\else\if\member E\relax +\@Adoublebondtrue +\else\if\member f\relax +\@bdoublebondtrue +\else\if\member F\relax +\@Bdoublebondtrue +\fi\fi\fi\fi}% +\@wrongbdWatrue +\@wrongbdWdtrue +\Put@Direct(684,0){\@@trinormorinv{#2}{#3}{1}{-4}}}% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member g\relax +\@adoublebondtrue +\else\if\member G\relax +\@Adoublebondtrue +\fi\fi}% +\if@normorinvsw% inverse +\@wrongbdWatrue +\@wrongbdWdfalse +\else% normal +\@wrongbdWafalse +\@wrongbdWdtrue +\fi +\Put@Direct(1026,0){\@@dinormorinv{#2}{#3}{1}{-6}}}% +% +%originally for fused rings +%shifted for coloring skeletal bond 2010/10/01 +% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member a\relax%dummy +\else\if\member b\relax%dummy +\else\if\member A\relax%dummy +\else\if\member B\relax%dummy +\else\if\member c\relax%dummy +\else\if\member C\relax%dummy +\else\if\member d\relax%dummy +\else\if\member D\relax%dummy +\else\if\member e\relax%dummy +\else\if\member E\relax%dummy +\else\if\member f\relax%dummy +\else\if\member F\relax%dummy +\else\if\member g\relax%dummy +\else\if\member G\relax%dummy +\else + \expandafter\twoCH@@R\member//% + \set@fusion@octameth% for all bonds +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi +\fi\fi\fi\fi}}% +\end{ShiftPicEnvB}% +}% end of \@octamethylene +% \end{macrocode} +% \end{macro} +% +% The inner command |\set@fusion@octameth| is used for typesetting +% a fused ring at each bond represented by |\@@tmpa|. Warnings +% concerning mismatched ring-fusions are based on the command +% |\FuseWarning|. +% +% \begin{macro}{\set@fusion@octameth} +% \changes{v2.00}{1998/12/21}{New command: \cs{set@fusion@octameth}} +% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring} +% \begin{macrocode} +\def\set@fusion@octameth{% +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% +\if@normorinvsw + \if\@@tmpa e\relax% + \putlratom{684}{103}{\@@tmpb}% % bond fused + \FuseWarning{-171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{e}% + \else\if\@@tmpa E\relax% + \putlratom{855}{0}{\@@tmpb}% % bond fused + \FuseWarning{171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{E}% + \else\if\@@tmpa f\relax% + \putlratom{855}{0}{\@@tmpb}% % bond fused + \FuseWarning{-171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{f}% + \else\if\@@tmpa F\relax% + \putlratom{1027}{103}{\@@tmpb}% % bond fused + \FuseWarning{171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{F}% + \else\if\@@tmpa g\relax% + \putlratom{1027}{103}{\@@tmpb}% % bond fused + \FuseWarning{-171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{g}% + \else\if\@@tmpa G\relax% + \putlratom{1198}{0}{\@@tmpb}% % bond fused + \FuseWarning{171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{G}% + \else + \set@fusion@pentamethi + \fi\fi\fi\fi\fi\fi +\else + \if\@@tmpa e\relax% + \putlratom{684}{0}{\@@tmpb}% % bond fused + \FuseWarning{-171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{e}% + \else\if\@@tmpa E\relax% + \putlratom{855}{103}{\@@tmpb}% % bond fused + \FuseWarning{171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{E}% + \else\if\@@tmpa f\relax% + \putlratom{855}{103}{\@@tmpb}% % bond fused + \FuseWarning{-171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{f}% + \else\if\@@tmpa F\relax% + \putlratom{1027}{0}{\@@tmpb}% % bond fused + \FuseWarning{171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{F}% + \else\if\@@tmpa g\relax% + \putlratom{1027}{0}{\@@tmpb}% % bond fused + \FuseWarning{-171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{g}% + \else\if\@@tmpa G\relax% + \putlratom{1198}{103}{\@@tmpb}% % bond fused + \FuseWarning{171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{G}% + \else + \set@fusion@pentameth + \fi\fi\fi\fi\fi\fi +\fi +\global\let\FuseWarning=\FuseW@rning%added 2010/10/01 +}% end of the macro \set@fusion@octameth +% \end{macrocode} +% \end{macro} +% +% \section{Nonamethylenes of normal and inverse direction} +% +% Nonamethylene and hetera derivatives are typeset with the commands +% |\nonamethylene| and |\nonamethylenei|. The former macro +% is to draw nonamethylenes of normal direction, while the latter +% is to draw ones of inverse directions. +% +% \begin{verbatim} +% Normal direction: +% +% (bbb) ((bbb)) (((bbb))) +% bbb ddd fff hhh +% 2 4 6 8 +% a / ` b / c` d / e ` f /g` h +% / ` / ` / ` / ` +% 1 3 5 7 9 +% aaa ccc eee gggg (((ccc))) +% (aaa) (ccc) ((ccc)) +% ((aaa)) (((aaa))) +% +% Inverse direction: +% (((aaa))) +% (aaa) ((aaa)) ((ccc)) +% aaa ccc eee (ccc) ggg (((ccc))) +% 1 3 5 7 9 +% a ` b / ` c / d ` e /f ` g / h +% ` / ` / ` / ` / +% 2 4 6 8 +% bbb ddd fff hhh +% (bbb) ((bbb)) (((bbb))) +% (aaa) ((aaa)) ((ccc)) +% \end{verbatim} +% +% The macros have two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% +% \begin{verbatim} +% \nonamethylene[BONDLIST]{ATOMLIST}{SUBSLIST} +% \nonamethylenei[BONDLIST]{ATOMLIST}{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one character selected from +% a to h (or A to H), +% each of which indicates the presence of an inner (endcyclic) double +% bond on the corresponding position. A lowercase letter is used +% to typeset a double bond at the upper-side of an outer skeletal bond, +% while an uppercase letter typesets a double bond at the lower-side of +% an outer skeletal bond. +% (Note that the option `A' represents an aromatic circle in +% commands |\sixheterov| etc.) +% +% \begin{verbatim} +% BONDLIST = +% +% [] or none : no double bond +% a : 1,2-double bond +% A : 1,2-double bond in an opposite side +% b : 2,3-double bond +% B : 2,3-double bond in an opposite side +% c : 3,4-double bond +% C : 3,4-double bond in an opposite side +% d : 4,5-double bond +% D : 4,5-double bond in an opposite side +% e : 5,6-double bond +% E : 5,6-double bond in an opposite side +% f : 6,7-double bond +% F : 6,7-double bond in an opposite side +% g : 7,8-double bond +% G : 7,8-double bond in an opposite side +% h : 8,9-double bond +% H : 8,9-double bond in an opposite side +% \end{verbatim} +% +% The |ATOMLIST| argument contains one or more heteroatom descriptors +% which are separated from each other by a semicolon. Each heteroatom +% descriptor consists of a locant number and a heteroatom, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% +% ATOMLIST: list of heteroatoms (max 9 atoms) +% +% for n = 1 to 9 +% +% 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 9 +% +% 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 +% nW : terminal single bond (n=1 or 9) +% +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \nonamethylene{1==N}{1==Cl;2==F} +% \nonamethylenei[b]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% +% The macros |\nonamethylene| and |\nonamethylenei| are +% based on a common inner macro |\@nonamethylene|, +% the definition of which uses a picture environment. +% +% \begin{macro}{\nonamethylene} +% \begin{macrocode} +\def\nonamethylene{% +\@ifnextchar[{\set@normaldirection\@nonamethylene[@}{% +\set@normaldirection\@nonamethylene[]}} +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\nonamethylenei} +% \begin{macrocode} +\def\nonamethylenei{% +\@ifnextchar[{\set@inversedirection\@nonamethylene[@}{% +\set@inversedirection\@nonamethylene[]}} +% \end{macrocode} +% \end{macro} +% +% Inner temporary commands such as |\@@trinormorinv| and +% |\@@dinormorinv| in the common |\@nonamethylene| macro +% are replaced by active commands such as |\@@trimethylene| and +% |\@@dimethylene|. They carry out the following unit processes. +% \begin{enumerate} +% \item Adjusting substitution site: +% |\yltrimethyleneposition| +% or |\yldimethyleneposition| for normal direction; +% |\yltrimethyleneiposition| +% or |\yldimethyleneiposition| for inverse direction. +% \item Treating atom list, +% placing outer skeletons, inner double bonds, +% setting hetero atoms, and +% placing substituents: +% |\@@trimethylene| +% or |\@@dimethylene| for normal direction; +% |\@@trimethylenei| +% or |\@@dimethylenei| for normal direction. +% \end{enumerate} +% +% \begin{macro}{\@nonamethylene} +% \begin{macrocode} +\def\@nonamethylene[#1]#2#3{% +\iniflag\iniatom% +\@reset@ylsw% +{\@linterchainswfalse% +\@rinterchainswtrue% +\@yltrinormorinv{#2}{#3}{0}{0}}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +{\@rinterchainswtrue% +\@linterchainswtrue% +\@yltrinormorinv{#2}{#3}{1}{-2}}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-342}\def\@@yli{0}\fi +\else +{\@rinterchainswtrue% +\@linterchainswtrue% +\@yltrinormorinv{#2}{#3}{1}{-4}}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-684}\def\@@yli{0}\fi +\else +{\@rinterchainswfalse% +\@linterchainswtrue% +\@yltrinormorinv{#2}{#3}{1}{-6}}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-1026}\def\@@yli{0}\fi\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(1790,480)(-200,-180){nonamethylene}%2002/4/30 by S. Fujita +(200,180)% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member a\relax +\@adoublebondtrue +\else\if\member b\relax +\@bdoublebondtrue +\else\if\member A\relax +\@Adoublebondtrue +\else\if\member B\relax +\@Bdoublebondtrue +%\else\if\member c\relax%dummy +%\else\if\member C\relax%dummy +%\else\if\member d\relax%dummy +%\else\if\member D\relax%dummy +%\else\if\member e\relax%dummy +%\else\if\member E\relax%dummy +%\else\if\member f\relax%dummy +%\else\if\member F\relax%dummy +%\else\if\member g\relax%dummy +%\else\if\member G\relax%dummy +%\else\if\member h\relax%dummy +%\else\if\member H\relax%dummy +%\else +% \expandafter\twoCH@@R\member//% +% \set@fusion@nonameth% for all bonds +%\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi +\fi\fi\fi\fi}% +\@wrongbdWatrue +\@wrongbdWdtrue +\Put@Direct(0,0){\@@trinormorinv{#2}{#3}{0}{0}}}% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member c\relax +\@adoublebondtrue +\else\if\member d\relax +\@bdoublebondtrue +\else\if\member C\relax +\@Adoublebondtrue +\else\if\member D\relax +\@Bdoublebondtrue +\fi\fi\fi\fi}% +\@wrongbdWatrue +\@wrongbdWdtrue +\Put@Direct(342,0){\@@trinormorinv{#2}{#3}{1}{-2}}}% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member e\relax +\@adoublebondtrue +\else\if\member E\relax +\@Adoublebondtrue +\else\if\member f\relax +\@bdoublebondtrue +\else\if\member F\relax +\@Bdoublebondtrue +\fi\fi\fi\fi}% +\@wrongbdWatrue +\@wrongbdWdtrue +\Put@Direct(684,0){\@@trinormorinv{#2}{#3}{1}{-4}}}% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member g\relax +\@adoublebondtrue +\else\if\member G\relax +\@Adoublebondtrue +\else\if\member h\relax +\@bdoublebondtrue +\else\if\member H\relax +\@Bdoublebondtrue +\fi\fi\fi\fi}% +\if@normorinvsw% inverse +\@wrongbdWafalse +\@wrongbdWdtrue +\else% normal +\@wrongbdWatrue +\@wrongbdWdfalse +\fi +\Put@Direct(1026,0){\@@trinormorinv{#2}{#3}{1}{-6}}}% +% +%originally for fused rings +%shifted for coloring skeletal bond 2010/10/01 +% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member a\relax%dummy +\else\if\member b\relax%dummy +\else\if\member A\relax%dummy +\else\if\member B\relax%dummy +\else\if\member c\relax%dummy +\else\if\member C\relax%dummy +\else\if\member d\relax%dummy +\else\if\member D\relax%dummy +\else\if\member e\relax%dummy +\else\if\member E\relax%dummy +\else\if\member f\relax%dummy +\else\if\member F\relax%dummy +\else\if\member g\relax%dummy +\else\if\member G\relax%dummy +\else\if\member h\relax%dummy +\else\if\member H\relax%dummy +\else + \expandafter\twoCH@@R\member//% + \set@fusion@nonameth% for all bonds +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi +\fi\fi\fi\fi}}% +\end{ShiftPicEnvB}% +}% end of \@nonamethylene +% \end{macrocode} +% \end{macro} +% +% The inner command |\set@fusion@nonameth| is used for typesetting +% a fused ring at each bond represented by |\@@tmpa|. Warnings +% concerning mismatched ring-fusions are based on the command +% |\FuseWarning|. +% +% \begin{macro}{\set@fusion@nonameth} +% \changes{v2.00}{1998/12/21}{New command: \cs{set@fusion@nonameth}} +% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring} +% \begin{macrocode} +\def\set@fusion@nonameth{% +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% +\if@normorinvsw + \if\@@tmpa h\relax% + \putlratom{1198}{0}{\@@tmpb}% % bond fused + \FuseWarning{-171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{h}% + \else\if\@@tmpa H\relax% + \putlratom{1369}{103}{\@@tmpb}% % bond fused + \FuseWarning{171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{H}% + \else + \set@fusion@octameth + \fi\fi +\else + \if\@@tmpa h\relax% + \putlratom{1198}{103}{\@@tmpb}% % bond fused + \FuseWarning{-171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{h}% + \else\if\@@tmpa H\relax% + \putlratom{1369}{0}{\@@tmpb}% % bond fused + \FuseWarning{171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{H}% + \else + \set@fusion@octameth + \fi\fi +\fi +\global\let\FuseWarning=\FuseW@rning%added 2010/10/01 +}% end of the macro \set@fusion@nonameth +% \end{macrocode} +% \end{macro} +% +% \section{Decamethylenes of normal and inverse directions} +% +% Decamethylene and hetera derivatives are typeset with the commands +% |\decamethylene| and |\decamethylenei|. The former macro +% is to draw decamethylenes of normal direction, while the latter +% is to draw ones of inverse directions. +% +% \begin{verbatim} +% Normal direction: +% +% (bbb) ((bbb)) (((bbb))) +% bbb ddd fff hhh <bbb> +% 2 4 6 8 10 +% a / ` b / c` d / e ` f /g ` h / i +% / ` / ` / ` / ` / +% 1 3 5 7 9 +% aaa ccc eee gggg (((ccc))) +% (aaa) (ccc) ((ccc)) <aaa> +% ((aaa)) (((aaa))) +% +% Inverse direction: +% (((aaa))) +% (aaa) ((aaa)) ((ccc)) <aaa> +% aaa ccc eee (ccc) ggg (((ccc))) +% 1 3 5 7 9 +% a ` b / ` c / d ` e /f ` g / h ` i +% ` / ` / ` / ` / ` +% 2 4 6 8 10 +% bbb ddd fff hhh <bbb> +% (bbb) ((bbb)) (((bbb))) +% \end{verbatim} +% +% The macros have two arguments |ATOMLIST| and |SUBSLIST| +% as well as an optional argument |BONDLIST|. +% \begin{verbatim} +% \decamethylene[BONDLIST]{ATOMLIST}{SUBSLIST} +% \decamethylenei[BONDLIST]{ATOMLIST}{SUBSLIST} +% \end{verbatim} +% +% The |BONDLIST| argument contains one character selected from +% a to i (or A to I), +% each of which indicates the presence of an inner (endcyclic) double +% bond on the corresponding position. A lowercase letter is used +% to typeset a double bond at the upper-side of an outer skeletal bond, +% while an uppercase letter typesets a double bond at the lower-side of +% an outer skeletal bond. +% (Note that the option `A' represents an aromatic circle in +% commands |\sixheterov| etc.) +% +% \begin{verbatim} +% BONDLIST = +% +% [] or none : no double bond +% a : 1,2-double bond +% A : 1,2-double bond in an opposite side +% b : 2,3-double bond +% B : 2,3-double bond in an opposite side +% c : 3,4-double bond +% C : 3,4-double bond in an opposite side +% d : 4,5-double bond +% D : 4,5-double bond in an opposite side +% e : 5,6-double bond +% E : 5,6-double bond in an opposite side +% f : 6,7-double bond +% F : 6,7-double bond in an opposite side +% g : 7,8-double bond +% G : 7,8-double bond in an opposite side +% h : 8,9-double bond +% H : 8,9-double bond in an opposite side +% i : 9,10-double bond +% I : 9,10-double bond in an opposite side +% \end{verbatim} +% +% The |ATOMLIST| argument contains one or more heteroatom descriptors +% which are separated from each other by a semicolon. Each heteroatom +% descriptor consists of a locant number and a heteroatom, +% where these are separated with a double equality symbol. +% +% \begin{verbatim} +% +% ATOMLIST: list of heteroatoms (max 10 atoms) +% +% for n = 1 to 10 +% +% 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 10 +% +% 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 +% nW : terminal single bond (n=1 or 10) +% +% \end{verbatim} +% +% Several examples are shown as follows. +% \begin{verbatim} +% e.g. +% +% \decamethylene{1==N}{1==Cl;2==F} +% \decamethylenei[b]{1==N}{1==Cl;4==F;2==CH$_{3}$} +% \end{verbatim} +% +% The macros |\decamethylene| and |\decamethylenei| are +% based on a common inner macro |\@decamethylene|, +% the definition of which uses a picture environment. +% \begin{macro}{\decamethylene} +% \begin{macrocode} +\def\decamethylene{% +\@ifnextchar[{\set@normaldirection\@decamethylene[@}{% +\set@normaldirection\@decamethylene[]}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\decamethylenei} +% \begin{macrocode} +\def\decamethylenei{% +\@ifnextchar[{\set@inversedirection\@decamethylene[@}{% +\set@inversedirection\@decamethylene[]}} +% \end{macrocode} +% \end{macro} +% +% Inner temporary commands such as |\@@trinormorinv| and +% |\@@dinormorinv| in the common |\@decamethylene| macro +% are replaced by active commands such as |\@@trimethylene| and +% |\@@dimethylene|. They carry out the following unit processes. +% \begin{enumerate} +% \item Adjusting substitution site: +% |\yltrimethyleneposition| +% or |\yldimethyleneposition| for normal direction; +% |\yltrimethyleneiposition| +% or |\yldimethyleneiposition| for inverse direction. +% \item Treating atom list, +% placing outer skeletons, inner double bonds, +% setting hetero atoms, and +% placing substituents: +% |\@@trimethylene| +% or |\@@dimethylene| for normal direction; +% |\@@trimethylenei| +% or |\@@dimethylenei| for normal direction. +% \end{enumerate} +% +% \begin{macro}{\@decamethylene} +% \begin{macrocode} +\def\@decamethylene[#1]#2#3{% +\iniflag\iniatom% +\@reset@ylsw% +{\@linterchainswfalse% +\@rinterchainswtrue% +\@yltrinormorinv{#2}{#3}{0}{0}}% +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{0}\def\@@yli{0}\fi +\else +{\@rinterchainswtrue% +\@linterchainswtrue% +\@yltrinormorinv{#2}{#3}{1}{-2}}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-342}\def\@@yli{0}\fi +\else +{\@rinterchainswtrue% +\@linterchainswtrue% +\@yltrinormorinv{#2}{#3}{1}{-4}}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-684}\def\@@yli{0}\fi +\else +{\@rinterchainswtrue% +\@linterchainswtrue% +\@yltrinormorinv{#2}{#3}{1}{-6}}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-1026}\def\@@yli{0}\fi +\else +{\@rinterchainswfalse% +\@linterchainswtrue% +\@yldinormorinv{#2}{#3}{1}{-8}}% +\fi +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-1368}\def\@@yli{0}\fi\fi +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(1960,480)(-200,-180){decamethylene}%2002/4/30 by S. Fujita +(200,180)% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member a\relax +\@adoublebondtrue +\else\if\member b\relax +\@bdoublebondtrue +\else\if\member A\relax +\@Adoublebondtrue +\else\if\member B\relax +\@Bdoublebondtrue +%\else\if\member c\relax%dummy +%\else\if\member C\relax%dummy +%\else\if\member d\relax%dummy +%\else\if\member D\relax%dummy +%\else\if\member e\relax%dummy +%\else\if\member E\relax%dummy +%\else\if\member f\relax%dummy +%\else\if\member F\relax%dummy +%\else\if\member g\relax%dummy +%\else\if\member G\relax%dummy +%\else\if\member h\relax%dummy +%\else\if\member H\relax%dummy +%\else\if\member i\relax%dummy +%\else\if\member I\relax%dummy +%\else +% \expandafter\twoCH@@R\member//% +% \set@fusion@decameth% for all bonds +%\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi +\fi\fi\fi\fi}% +\@wrongbdWatrue +\@wrongbdWdtrue +\Put@Direct(0,0){\@@trinormorinv{#2}{#3}{0}{0}}}% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member c\relax +\@adoublebondtrue +\else\if\member d\relax +\@bdoublebondtrue +\else\if\member C\relax +\@Adoublebondtrue +\else\if\member D\relax +\@Bdoublebondtrue +\fi\fi\fi\fi}% +\@wrongbdWatrue +\@wrongbdWdtrue +\Put@Direct(342,0){\@@trinormorinv{#2}{#3}{1}{-2}}}% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member e\relax +\@adoublebondtrue +\else\if\member E\relax +\@Adoublebondtrue +\else\if\member f\relax +\@bdoublebondtrue +\else\if\member F\relax +\@Bdoublebondtrue +\fi\fi\fi\fi}% +\@wrongbdWatrue +\@wrongbdWdtrue +\Put@Direct(684,0){\@@trinormorinv{#2}{#3}{1}{-4}}}% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member g\relax +\@adoublebondtrue +\else\if\member G\relax +\@Adoublebondtrue +\else\if\member h\relax +\@bdoublebondtrue +\else\if\member H\relax +\@Bdoublebondtrue +\fi\fi\fi\fi}% +\@wrongbdWatrue +\@wrongbdWdtrue +\Put@Direct(1026,0){\@@trinormorinv{#2}{#3}{1}{-6}}}% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member i\relax +\@adoublebondtrue +\else\if\member I\relax +\@Adoublebondtrue +\fi\fi}% +\if@normorinvsw% inverse +\@wrongbdWatrue +\@wrongbdWdfalse +\else% normal +\@wrongbdWafalse +\@wrongbdWdtrue +\fi +\Put@Direct(1368,0){\@@dinormorinv{#2}{#3}{1}{-8}}}% +% +%originally for fused rings +%shifted for coloring skeletal bond 2010/10/01 +% +{\reset@double% +\@tfor\member:=#1\do{% +\if\member a\relax%dummy +\else\if\member b\relax%dummy +\else\if\member A\relax%dummy +\else\if\member B\relax%dummy +\else\if\member c\relax%dummy +\else\if\member C\relax%dummy +\else\if\member d\relax%dummy +\else\if\member D\relax%dummy +\else\if\member e\relax%dummy +\else\if\member E\relax%dummy +\else\if\member f\relax%dummy +\else\if\member F\relax%dummy +\else\if\member g\relax%dummy +\else\if\member G\relax%dummy +\else\if\member h\relax%dummy +\else\if\member H\relax%dummy +\else\if\member i\relax%dummy +\else\if\member I\relax%dummy +\else + \expandafter\twoCH@@R\member//% + \set@fusion@decameth% for all bonds +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi +\fi\fi\fi\fi}}% +\end{ShiftPicEnvB}% +}% end \@decamethylene +% \end{macrocode} +% \end{macro} +% +% The inner command |\set@fusion@decameth| is used for typesetting +% a fused ring at each bond represented by |\@@tmpa|. Warnings +% concerning mismatched ring-fusions are based on the command +% |\FuseWarning|. +% +% \begin{macro}{\set@fusion@decameth} +% \changes{v2.00}{1998/12/21}{New command: \cs{set@fusion@decameth}} +% \changes{v5.00}{2010/10/01}{\cs{FuseWarning} recovered for bond coloring} +% \begin{macrocode} +\def\set@fusion@decameth{% +% %%%%%%%%%%%%%%%%%%%%% +% % inner bond fusion % +% %%%%%%%%%%%%%%%%%%%%% +\if@normorinvsw + \if\@@tmpa h\relax% + \putlratom{1198}{0}{\@@tmpb}% % bond fused + \FuseWarning{-171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{h}% + \else\if\@@tmpa H\relax% + \putlratom{1369}{103}{\@@tmpb}% % bond fused + \FuseWarning{171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{H}% + \else\if\@@tmpa i\relax% + \putlratom{1369}{103}{\@@tmpb}% % bond fused + \FuseWarning{-171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{i}% + \else\if\@@tmpa I\relax% + \putlratom{1540}{0}{\@@tmpb}% % bond fused + \FuseWarning{171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{I}% + \else + \set@fusion@octameth + \fi\fi\fi\fi +\else + \if\@@tmpa h\relax% + \putlratom{1198}{103}{\@@tmpb}% % bond fused + \FuseWarning{-171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{h}% + \else\if\@@tmpa H\relax% + \putlratom{1369}{0}{\@@tmpb}% % bond fused + \FuseWarning{171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{H}% + \else\if\@@tmpa i\relax% + \putlratom{1369}{0}{\@@tmpb}% % bond fused + \FuseWarning{-171}{-103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{i}% + \else\if\@@tmpa I\relax% + \putlratom{1540}{103}{\@@tmpb}% % bond fused + \FuseWarning{171}{103}% + {\fuseAx}{\fuseAy}{\fuseBx}{\fuseBy}{I}% + \else + \set@fusion@octameth + \fi\fi\fi\fi +\fi% +\global\let\FuseWarning=\FuseW@rning%added 2010/10/01 +}% end of the macro \set@fusion@decameth +%</methylen> +% \end{macrocode} +% \end{macro} +% +% \Finale +% +\endinput diff --git a/Master/texmf-dist/source/latex/xymtex/base/methylen.ins b/Master/texmf-dist/source/latex/xymtex/base/methylen.ins new file mode 100644 index 00000000000..d1053e0933c --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/methylen.ins @@ -0,0 +1,57 @@ +\def\batchfile{methylen.ins} +\input docstrip.tex +\preamble + +This is a generated file. + +Copyright 1998, 2001,2002,2004,2005,2010,2013 by Shinsaku Fujita +all rights reserved. +This style file is created for drawing chemical structural formulas +This style file is to be contained in the ``xymtex'' directory which +is an input directory for TeX. + +This file is part of the XyMTeX system. +======================================= +Old Versions: +Version 1.02 Released on October 31, 1996 (private version) +Version 2.00 Released on December 25, 1998 +Version 2.01 Released on June 20, 2001 (private version) +Version 3.00 Released on April 30, 2002 +Version 4.00 Released on May 30, 2002 (private version) +Version 4.00 Released on August 30, 2004 +Version 4.03 Released on July 20, 2005 +Version 5.00 Released on October 01, 2010 +Version 5.01b Released on March 29, 2013 +Version 5.01bb Released on June 22, 2013 +Version 5.01bbb Released on June 27, 2013 + +The Present Version: +Version 5.01 Released on July 20, 2013 + +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 methylen.dtx and methylen.ins +and the derived file methylen.sty. + +======================================= + +\endpreamble + +\keepsilent + +\generateFile{methylen.drv}{t}{% + \from{methylen.dtx}{driver}} + +\generateFile{methylen.sty}{t}{% + \from{methylen.dtx}{methylen}} + +\endinput diff --git a/Master/texmf-dist/source/latex/xymtex/base/polymers.dtx b/Master/texmf-dist/source/latex/xymtex/base/polymers.dtx new file mode 100644 index 00000000000..728a4c4bace --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/polymers.dtx @@ -0,0 +1,750 @@ +% \iffalse meta-comment +%% File: polymers.dtx +% +% Copyright 1996, 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 polymers.dtx and polymers.ins +% and the derived file polymers.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{polymers} +% \def\versi@ndate{August 16, 1996} +% \def\versi@nno{ver1.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{polymers} +% \def\versi@ndate{October 31, 1998} +% \def\versi@nno{ver1.02} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{polymers} +% \def\versi@ndate{December 25, 1998} +% \def\versi@nno{ver2.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{polymers} +% \def\versi@ndate{June 20, 2001} +% \def\versi@nno{ver2.01} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{polymers} +% \def\versi@ndate{April 30, 2002} +% \def\versi@nno{ver3.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{polymers} +% \def\versi@ndate{May 30, 2002} +% \def\versi@nno{ver4.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{polymers} +% \def\versi@ndate{August 30, 2004} +% \def\versi@nno{ver4.01} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \fi +% +% \CheckSum{480} +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +% +% \setcounter{StandardModuleDepth}{1} +% +% \StopEventually{} +% \MakeShortVerb{\|} +% +% \iffalse +% \changes{v1.00}{1996/07/07}{first edition for LaTeX2e} +% \changes{v1.02}{1998/10/31}{revised edition for LaTeX2e} +% \changes{v2.00}{1998/12/25}{enhanced edition for LaTeX2e} +% \changes{v2.01}{2001/06/20}{Size reduction and Clip information} +% \changes{v3.00}{2002/04/30}{sfpicture environment, etc.} +% \changes{v4.00}{2002/05/30}{PostScript output and ShiftPicEnv} +% \changes{v4.01}{2004/08/30}{Minor additions} +% \changes{v5.00}{2010/10/01}{for bond coloring and the LaTeX Project Public License} +% \fi +% +% \iffalse +%<*driver> +\NeedsTeXFormat{pLaTeX2e} +% \fi +\ProvidesFile{polymers.dtx}[2010/10/01 v5.00 XyMTeX{} package file] +% \iffalse +\documentclass{ltxdoc} +\GetFileInfo{polymers.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{Polymers by {\sffamily polymers.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{polymers.dtx} +\end{document} +%</driver> +% \fi +% +% \section{Introduction}\label{polymers:intro} +% +% \subsection{Options for {\sffamily docstrip}} +% +% \DeleteShortVerb{\|} +% \begin{center} +% \begin{tabular}{|l|l|} +% \hline +% \emph{option} & \emph{function}\\ \hline +% polymers & polymers.sty \\ +% driver & driver for this dtx file \\ +% \hline +% \end{tabular} +% \end{center} +% \MakeShortVerb{\|} +% +% \subsection{Version Information} +% +% \begin{macrocode} +%<*polymers> +\typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 5.00} +\typeout{ -- Released October 01, 2010 by Shinsaku Fujita} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\j@urnalname{polymers} +\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 polymers.sty} +% +% \begin{verbatim} +% ********************************** +% * polymers.sty: list of commands * +% ********************************** +% +% <Delimeters for polymer units> +% +% \leftPMdelim \rightPMdelim +% \leftpmdelim \rightpmdelim +% +% \leftPolymer \leftpolymer +% \rightPolymer \rightpolymer +% +% \leftsqrPolymer \leftSqrpolymer +% \lsqrdelimiter \leftsqrpolymer +% +% \rightsqrPolymer \rightSqrpolymer +% \rsqrdelimiter \rightsqrpolymer +% +% \@sqrpolymer +% \sqrpolymer \Sqrpolymer +% \mpolymer +% +% <Bonds for polymers> +% +% \WestPbond \EastPbond +% \sbond +% +% <Polymers> +% +% \polyethylene \@polyethylene +% \polystyrene \@polystyrene +% +% \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{Westbond}{\input aliphat.sty\relax}{} +\@ifundefined{bzdrv}{\input carom.sty\relax}{} +\unitlength=0.1pt +% \end{macrocode} +% +% \begin{macrocode} +% **************************************************** +% * For separating an augument list to each argument * +% **************************************************** +% +\def\@forsemicol#1:=#2\do#3{% +%% \edef\@fortmp{#2}\ifx\@fortmp\@empty% + \expandafter\def\expandafter\@fortmp\expandafter{#2}% + \ifx\@fortmp\@empty% + \else% + \expandafter\@forl@@p#2;\@nil;\@nil\@@#1{#3}\fi} +% \end{macrocode} +% +% \section{Delimeters for polymer units} +% +% \subsection{Right and left delimeters} +% +% A polymer structure has a unit surrounded by +% parentheses or other delimeters. For drawing a +% parenthesis as the part of a substituent, +% the following commands are prepared. +% +% \subsubsection{Parentheses} +% +% \begin{macro}{\leftPMdelim} +% \begin{macro}{\leftpmdelim} +% \begin{macrocode} +% ******************************** +% * Delimeters for polymer units * +% ******************************** +\def\leftPMdelim#1{$\mathstrut #1$} +\def\leftpmdelim{\leftPMdelim{\biggm(}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\rightPMdelim} +% \begin{macro}{\rightpmdelim} +% \begin{macrocode} +\def\rightPMdelim#1#2{% + $\mathstrut #1_{\mkern-5mu #2}$} +\def\rightpmdelim#1{\rightPMdelim{\biggm)}{#1}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The command |\leftpolymer| typesets the left parenthesis of +% a polymer unit. +% The command |\leftPolymer| is the inner commend of |\leftpolymer|, +% where a delimeter can be selected as an argument. +% +% \begin{macro}{\leftPolymer} +% \begin{macro}{\leftpolymer} +% \begin{macrocode} +\def\leftPolymer#1#2{% +\begin{sfpicture}(0,0)(0,0) +\putlatom{0}{0}{#2} +\putlatom{120}{0}{$#1$} +\end{sfpicture}} +\def\leftpolymer#1{\leftPolymer{\biggm(}{#1}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The command |\rightpolymer| typesets the left parenthesis of +% a polymer unit along with a repeating number as a subscript. +% The command |\rightPolymer| is the inner commend of |\rightpolymer|, +% where a delimeter can be selected as an argument. +% +% \begin{macro}{\Rightpolymer} +% \begin{macro}{\rightpolymer} +% \begin{macrocode} +\def\rightPolymer#1#2#3{% +\begin{sfpicture}(0,0)(0,0) +\putratom{0}{0}{#2} +\putratom{-150}{0}{% +% $\mathstrut#1_{\mkern-3mu \mbox{\scriptsize\rm #3}}$} + $\mathstrut#1_{\mkern-2mu #3}$} +\end{sfpicture}} +\def\rightpolymer#1#2{\rightPolymer{\biggm)}{#1}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsubsection{Brackets} +% +% The command |\leftSqrpolymer| typesets the left bracket of +% a polymer unit. +% The command |\leftsqrPolymer| is the inner commend of |\leftSqrpolymer|, +% where a delimeter can be selected as an argument. +% The bracket selected by the command |\leftSqrpolymer| is +% a \TeX{} big mathematical symbol, +% the line of which is +% boldfaced. +% +% \begin{macro}{\leftsqrPolymer} +% \begin{macro}{\leftSqrpolymer} +% \begin{macrocode} +\def\leftsqrPolymer#1#2{% +\begin{sfpicture}(0,0)(0,0) +\putlatom{0}{0}{#2} +\putlatom{120}{0}{$#1$} +\end{sfpicture}} +\def\leftSqrpolymer#1{\leftsqrPolymer{\Biggm[}{#1}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The command |\rightSqrpolymer| typesets the right bracket of +% a polymer unit. +% The command |\rightsqrPolymer| is the inner commend of |\rightSqrpolymer|, +% where a delimeter can be selected as an argument. +% The bracket selected by the command |\rightSqrpolymer| is +% a \TeX{} big mathematical symbol, +% the line of which is boldfaced. +% +% \begin{macro}{\rightsqrPolymer} +% \begin{macro}{\rightSqrpolymer} +% \begin{macrocode} +\def\rightsqrPolymer#1#2#3{% +\begin{sfpicture}(0,0)(0,0) +\putratom{0}{0}{#2} +\putratom{-150}{0}{% +% $\mathstrut #1_{\mbox{\scriptsize\rm #3}}$} + $\mathstrut #1_{#3}$} +\end{sfpicture}} +\def\rightSqrpolymer#1#2{\rightsqrPolymer{\Biggm]}{#1}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% For drawing polymer brackets of thin line width, +% we prepare the command |\lsqrdelimiter|. The height of +% the bracket can be designated by the argument of this +% command. The command +% is used to define the command |\leftsqrpolymer|. +% This command typesets a left bracket of thin line width. +% +% \begin{macro}{\lsqrdelimiter} +% \begin{macro}{\leftsqrpolymer} +% \begin{macrocode} +\def\lsqrdelimiter#1{% +\hbox{\vrule \@width\fboxrule +$\vcenter to#1{% +\hrule \@height\fboxrule \@width\fboxsep +\vfill +\hrule \@height\fboxrule \@width\fboxsep}$}} +\def\leftsqrpolymer#1{% + \leftsqrPolymer{\lsqrdelimiter{300\unitlength}}{#1}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The command |\rsqrdelimiter| is +% used to define the command |\rightsqrpolymer|, which +% typesets a right bracket of thin line width. +% +% \begin{macro}{\rsqrdelimiter} +% \begin{macro}{\rightsqrpolymer} +% \begin{macrocode} +\def\rsqrdelimiter#1{% +\hbox{$\vcenter to#1{% +\hrule \@height\fboxrule \@width\fboxsep \vfill +\hrule \@height\fboxrule \@width\fboxsep}$\kern-\fboxrule +\vrule \@width\fboxrule\kern2pt}} +\def\rightsqrpolymer#1#2{% +\rightsqrPolymer{\rsqrdelimiter{300\unitlength}}{#1}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Pairs of delimeters} +% +% The command |\sqrpolymer| typesets a pair of thin-line brackets that +% surrounds a polymer unit after measuring the height of +% the unit. On the other hand, +% the command |\Sqrpolymer| typesets a pair of thick-line brackets. +% Both of the commands are based on the inner macro |\@sqrpolymer|, +% in which a line width is designated by means of an argument. +% +% \begin{macro}{\@sqrpolymer} +% \begin{macro}{\sqrpolymer} +% \begin{macro}{\Sqrpolymer} +% \begin{macrocode} +\long\def\@sqrpolymer#1#2#3{% +\begingroup \fboxrule=#1 + \leavevmode\setbox\@tempboxa\hbox{#2}\@tempdima\fboxrule + \advance\@tempdima \fboxsep \advance\@tempdima \dp\@tempboxa + \@tempdimb=\wd\@tempboxa + \advance\@tempdimb by \fboxsep + \advance\@tempdimb by \fboxsep + \advance\@tempdimb by \fboxrule + \advance\@tempdimb by \fboxrule + \hbox{\lower \@tempdima\hbox + {\vbox{ + \hbox to\@tempdimb{% + \vrule \@height \fboxrule \@width\fboxsep\hfill + \vrule \@height \fboxrule \@width\fboxsep} + \nointerlineskip + \hbox{\vrule \@width \fboxrule \hskip\fboxsep + \vbox{\vskip\fboxsep \copy\@tempboxa\vskip\fboxsep}\hskip + \fboxsep\vrule \@width \fboxrule} + \nointerlineskip + \hbox to\@tempdimb{% + \vrule \@height \fboxrule \@width\fboxsep\hfill + \vrule \@height \fboxrule \@width\fboxsep}}}}% +\kern2pt\lower\@tempdima\hbox{\scriptsize$#3$}\endgroup} +\long\def\sqrpolymer#1#2{\@sqrpolymer{0.4pt}{#1}{#2}} +\long\def\Sqrpolymer#1#2{\@sqrpolymer{1pt}{#1}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The command |\mpolymer| typesets a pair of parentheses that +% surrounds a polymer unit after measuring the height of +% the unit. +% +% \begin{macro}{\mpolymer} +% \begin{macrocode} +\long\def\mpolymer#1#2{% + \leavevmode\setbox\@tempboxa\hbox{#1}\@tempdima\fboxrule + \advance\@tempdima \fboxsep \advance\@tempdima \dp\@tempboxa + \hbox{\lower \@tempdima\hbox{\vbox{\hbox{\hskip\fboxsep% + $\left(\vcenter{\vskip\fboxsep \copy\@tempboxa\vskip\fboxsep}% + \right)_{#2}$}}}}} +% \end{macrocode} +% \end{macro} +% +% \section{Commands for drawing polymers} +% +% \subsection{Bonds for polymers} +% +% The original commands +% |\Westbond| and |\Eastbond| are changed into +% |\WestPbond| and |\EastPbond|, where each bond is lengthened +% for making a space for drawing delimiters. +% +% \begin{macro}{\WestPbond} +% \begin{macro}{\EastPbond} +% \begin{macro}{\sbond} +% \begin{macrocode} +% ********************** +% * Bonds for polymers * +% ********************** +\def\WestPbond{% +\begin{sfpicture}(100,100)(0,0)% +\Put@Direct(-100,0){\Westbond}% +\Put@Line(-60,0)(-1,0){90}% +\end{sfpicture}}% +\def\EastPbond{% +\begin{sfpicture}(100,100)(0,0)% +\Put@Direct(100,0){\Eastbond}% +\Put@Line(60,0)(1,0){90}% +\end{sfpicture}}% +\def\sbond{% +\begin{sfpicture}(160,0)(0,0)% +\Put@Line(0,33)(1,0){160}% +\end{sfpicture}}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Polyethylene unit} +% +% The command |\polyethylene| is used to draw polyethylene derivatives, +% in which each substituent is designated by the |SUBSLIST|. +% The following numbering is used in this macro. +% +% \begin{verbatim} +% ******************** +% * polyethylene unit* +% ******************** +% +% The following numbering is adopted in this macro. +% +% | 1 6 | +% | | +% | | | | +% 2 ---- (1) -- (2) ---- 5 +% | | (0) | | +% | | +% | 3 4 |0 +% \end{verbatim} +% +% The command |\polyethylene| has arguments, +% |CALIST| and |SUBSLIST|, as well as an optional argument |AUXLIST|. +% \begin{verbatim} +% \polyethylene[AUXLIST]{CALIST}{SUBSLIST} +% \end{verbatim} +% +% The optional argument |AUXLIST| is used for +% typesetting auxiliary symbols on central atoms. +% \begin{verbatim} +% AUXLIST = +% +% {n+} : + charge (or another one chararacter) on the center +% \end{verbatim} +% +% The argument |CALIST| is used for indicating center atoms. +% \begin{verbatim} +% CALIST: central atom list +% +% for 1 : cetral atom (e.g. 1==C) +% 2 : cetral atom (e.g. 2==C) +% 0 : cetral bond (e.g. 0D==) +% \end{verbatim} +% +% The argument |SUBSLIST| is used for indicating substituents. +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 4 +% +% nT : triple bond at n-atom +% nD : double bond at n-atom +% n or nS : single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% \end{verbatim} +% +% \begin{macro}{\if@centbondsw} +% \begin{macro}{\if@centatswi} +% \begin{macro}{\if@centatswii} +% \begin{macrocode} +\newif\if@centbondsw \@centbondswfalse +\newif\if@centatswi \@centatswifalse +\newif\if@centatswii \@centatswiifalse +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \changes{v5.00}{2010/10/01}{for bond coloring} +% \begin{macro}{\polyethylene} +% \begin{macro}{\@polyethylene} +% \begin{macrocode} +\def\polyethylene{\@ifnextchar[{\@polyethylene}{\@polyethylene[]}} +\def\@polyethylene[#1]#2#3{% + \begin{sfpicture}(1100,600)(-400,-300)% + \OrigptOutput(400,300){polyethylene}% +% \end{macrocode} +% +% \begin{macrocode} +% ************ +% * aux list * +% ************ +\def\@@@temp{#1}% +\ifx\@@@temp\empty\else +\@tfor\member:=#1\do{% + \expandafter\twoch@@r\member{}{}% + \ifcase\@@tmpa% + \or\relax\putratom{47}{50}{\scriptsize\@@tmpb}% + \or\relax\putratom{347}{50}{\scriptsize\@@tmpb}% +\fi}\fi% +% \end{macrocode} +% +% \begin{macrocode} +% ***************** +% * central atoms * +% ***************** +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else% +\expandafter\@m@mb@r\member;\relax% + \expandafter\threech@r\@membera{}{}% + \ifcase\@tmpa \global\@centbondswtrue\Put@Direct(20,0){\Eastbond}% + \or\global\@centatswitrue\putlratom{-40}{-33}{\@memberb}% + \or\global\@centatswiitrue\putlratom{260}{-33}{\@memberb}% +\fi\fi}% +\if@centatswi \else\putlratom{-40}{-33}{C}\fi% +\if@centatswii \else\putlratom{260}{-33}{C}\fi% +\if@centbondsw \else\Put@Line(70,0)(1,0){160}\fi% +\global\@centbondswfalse% +\global\@centatswifalse% +\global\@centatswiifalse% +% \end{macrocode} +% +% \begin{macrocode} +% **************** +% * Substituents * +% **************** +\gdef\numrepeated{x}% +\@forsemicol\member:=#3\do{% +\ifx\member\empty\else% +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifcase\@tmpa \gdef\numrepeated{\@memberb}% +\or\setBScolor{\Put@Direct(0,0){\Northbond}}% +\or\setBScolor{\Put@Direct(0,0){\WestPbond}}% +\or\setBScolor{\Put@Direct(0,0){\Southbond}}% +\or\setBScolor{\Put@Direct(300,0){\Southbond}}% +\or\setBScolor{\Put@Direct(300,0){\EastPbond}}% +\or\setBScolor{\Put@Direct(300,0){\Northbond}}% +\fi\fi}%end of ifcase +% \end{macrocode} +% +% \begin{macrocode} +% ************** +% * Delimeters * +% ************** +\Put@Direct(-200,-33){\leftpmdelim}% +\Put@Direct(400,-33){\rightpmdelim{\numrepeated}}% +\end{sfpicture}}%end of macro polyethylene +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Polyestyrene unit} +% +% The command |\polyestrene| is used to draw polystyrene derivatives, +% in which substituents on both the polymer chain and the phenyl group +% are designated by the |SUBSLIST| and |PHSUBSLIST|, respectively. +% The following numbering is adopted in this macro. +% \begin{verbatim} +% ******************** +% * polystyrene unit * +% ******************** +% +% | 1 6 | +% | | +% | | | | +% 2 ---- (1) -- (2) ---- 5 +% | | (0) | | +% | | | +% | 3 | |0 +% / ` +% 6 | | 2 +% | | +% 5 ` / 3 +% ` +% 4 +% \end{verbatim} +% +% The command |\polyethylene| has arguments, +% |CALIST|, |SUBSLIST| and |PHSUBSLIST|, +% as well as an optional argument |AUXLIST|. +% \begin{verbatim} +% \polystyrene[AUXLIST]{CALIST}{SUBSLIST}{PHSUBSLIST} +% \end{verbatim} +% +% The optional argument |AUXLIST| is used for +% typesetting auxiliary symbols on central atoms. +% \begin{verbatim} +% AUXLIST = +% +% {n+} : + charge (or another one chararacter) on the center +% \end{verbatim} +% +% The argument |CALIST| is used for indicating center atoms. +% \begin{verbatim} +% CALIST: central atom list +% +% for 1 : cetral atom (e.g. 1==C) +% 2 : cetral atom (e.g. 2==C) +% 0 : cetral bond (e.g. 0D==) +% \end{verbatim} +% +% The argument |SUBSLIST| is used for indicating substituents on +% the polymer chain. +% \begin{verbatim} +% SUBSLIST: list of substituents +% +% for n = 1 to 4 +% +% nT : triple bond at n-atom +% nD : double bond at n-atom +% n or nS : single bond at n-atom +% nA : alpha single bond at n-atom +% nB : beta single bond at n-atom +% \end{verbatim} +% +% The argument |PHSUBSLIST| is used for indicating substituents on +% the phenyl group. +% \begin{verbatim} +% PHSUBSLIST: list of phenyl substituents +% +% for n = 2 to 6 +% +% n or nS : single bond at n-atom +% \end{verbatim} +% +% \begin{macro}{\polyethylene} +% \begin{macro}{\@polyethylene} +% \begin{macrocode} +\def\polystyrene{\@ifnextchar[{\@polystyrene}{\@polystyrene[]}} +\def\@polystyrene[#1]#2#3#4{% +\begin{sfpicture}(1100,1200)(0,-640)% + \OrigptOutput(0,640){polystyrene}% +\begingroup \origptfalse +\Put@Direct(0,0){\polyethylene[#1]{#2}{#3}}% +\Put@Line(700,0)(0,1){240}% +\Put@Direct(300,-646){\bzdrv{#4}}% +\endgroup +\end{sfpicture}}%end of macro polystyrene +%</polymers> +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \Finale +% +\endinput diff --git a/Master/texmf-dist/source/latex/xymtex/base/polymers.ins b/Master/texmf-dist/source/latex/xymtex/base/polymers.ins new file mode 100644 index 00000000000..f0811a9020e --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/polymers.ins @@ -0,0 +1,53 @@ +\def\batchfile{polymers.ins} +\input docstrip.tex +\preamble + +This is a generated file. + +Copyright 1996,1998,2001,2002,2004,2010 by Shinsaku Fujita +all rights reserved. +This style file is created for drawing chemical structural formulas +This style file is to be contained in the ``xymtex'' directory which +is an input directory for TeX. + +This file is part of the XyMTeX system. +======================================= +Old Versions: +Version 1.01 Released on August 16, 1996 +Version 1.02 Released on October 31, 1996 (private version) +Version 2.00 Released on December 25, 1998 +Version 2.01 Released on June 20, 2001 (private version) +Version 3.00 Released on April 30, 2002 +Version 4.00 Released on May 30, 2002 (private version) +Version 4.00 Released on August 30, 2004 + +The Present Version: +Version 5.00 Released on October 01, 2010 + +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 polymers.dtx and polymers.ins +and the derived file polymers.sty. + +======================================= + +\endpreamble + +\keepsilent + +\generateFile{polymers.drv}{t}{% + \from{polymers.dtx}{driver}} + +\generateFile{polymers.sty}{t}{% + \from{polymers.dtx}{polymers}} + +\endinput diff --git a/Master/texmf-dist/source/latex/xymtex/base/putline.sed b/Master/texmf-dist/source/latex/xymtex/base/putline.sed new file mode 100644 index 00000000000..bb8c2dade07 --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/putline.sed @@ -0,0 +1,10 @@ +# +# putline.sed 2002/4/15/ +# +s/\\begin{picture}/\\begin{sfpicture}/g +s/\\end{picture}/\\end{sfpicture}/g +s/\\put(\(.*\)){\\line(\(.*\)){\(.*\)}}/\\Put@Line(\1)(\2){\3}/g +s/\\put(\(.*\)){\\circle\*{\(.*\)}}/\\Put@sCircle(\1){\2}/g +s/\\put(\(.*\)){\\circle{\(.*\)}}/\\Put@oCircle(\1){\2}/g +s/\\put(/\\Put@Direct(/g +s/\\multiput(/\\Multiput@Direct(/g diff --git a/Master/texmf-dist/source/latex/xymtex/base/putput.bat b/Master/texmf-dist/source/latex/xymtex/base/putput.bat new file mode 100755 index 00000000000..b8433d16f42 --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/putput.bat @@ -0,0 +1 @@ +sed -f putline.sed %1 > %2 diff --git a/Master/texmf-dist/source/latex/xymtex/base/sizeredc.dtx b/Master/texmf-dist/source/latex/xymtex/base/sizeredc.dtx new file mode 100644 index 00000000000..fd6bf49f35a --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/sizeredc.dtx @@ -0,0 +1,351 @@ +% \iffalse meta-comment +%% File: sizeredc.dtx +% +% Copyright 1996, 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 sizeredc.dtx and sizeredc.ins +% and the derived file sizeredc.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{sizeredc} +% \def\versi@ndate{June 12, 2001} +% \def\versi@nno{ver1.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{sizeredc} +% \def\versi@ndate{April 30, 2002} +% \def\versi@nno{ver1.01} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{sizeredc} +% \def\versi@ndate{August 30, 2004} +% \def\versi@nno{ver4.01} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \fi +% +% \CheckSum{428} +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +% +% \setcounter{StandardModuleDepth}{1} +% +% \StopEventually{} +% \MakeShortVerb{\|} +% +% \iffalse +% \changes{v1.00}{2001/06/12}{first edition for LaTeX2e} +% \changes{v1.01}{2002/04/30}{2nd edition for XyMTeX v3.00} +% \changes{v4.01}{2004/08/30}{Adjust XyMTeX v4.01} +% \changes{v5.00}{2010/10/01}{the LaTeX Project Public License} +% \fi +% +% \iffalse +%<*driver> +\NeedsTeXFormat{pLaTeX2e} +% \fi +\ProvidesFile{sizeredc.dtx}[2010/10/01 v5.00 XyMTeX{} package file] +% \iffalse +\documentclass{ltxdoc} +\GetFileInfo{sizeredc.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{Size Reduction of Structural Formulas +by {\sffamily sizeredc.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{sizeredc.dtx} +\end{document} +%</driver> +% \fi +% +% \section{Introduction}\label{sizeredc:intro} +% +% \subsection{Options for {\sffamily docstrip}} +% +% \DeleteShortVerb{\|} +% \begin{center} +% \begin{tabular}{|l|l|} +% \hline +% \emph{option} & \emph{function}\\ \hline +% sizeredc & sizeredc.sty \\ +% driver & driver for this dtx file \\ +% \hline +% \end{tabular} +% \end{center} +% \MakeShortVerb{\|} +% +% \subsection{Version Information} +% +% \begin{macrocode} +%<*sizeredc> +\typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 5.00} +\typeout{ -- Released October 01, 2010 by Shinsaku Fujita} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\j@urnalname{sizeredc} +\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{Macros for Size Reduction} +% \subsection{Division of Integers} +% +% \begin{macro}{\DIVIDE} +% The macro |\DIVIDE| is used to the devision of an integer +% by a divisor. The result (rounded to an integer) is stored +% in a control sequence such as |\Quatient|. +% \begin{verbatim} +% \DIVDE{integer}{divisor}\Quatient +% \end{verbatim} +% +% \begin{macrocode} +\newcount\@tempcntx \newcount\@tempcnty \newcount\@tempcntz +\newif\ifseifuflag \seifuflagfalse +\def\DIVIDE#1#2#3{% +\seifuflagfalse \@tempcntx=#1 +\ifnum\@tempcntx<0 \@tempcntx=-\@tempcntx\seifuflagtrue\fi +\divide\@tempcntx by#2\relax +\ifnum\@tempcntx<0 \@tempcntx=-\@tempcntx +\ifseifuflag \seifuflagfalse \else \seifuflagtrue\fi\fi +\@tempcntz=\@tempcntx%%store +\@tempcnty=\@tempcntx \multiply\@tempcnty by#2% +\ifnum\@tempcnty<0 \@tempcnty=-\@tempcnty\fi +\@tempcntx=#1% +\ifnum\@tempcntx<0 \@tempcntx=-\@tempcntx\fi +\advance\@tempcntx by-\@tempcnty% +\multiply\@tempcntx by10 \edef\s{\the\@tempcntx}% +\divide\@tempcntx by#2 +\ifnum\@tempcntx<0 \@tempcntx=-\@tempcntx\fi +\ifnum\@tempcntx>4\relax \advance\@tempcntz by1\fi +\ifseifuflag \xdef#3{-\the\@tempcntz}% +\else\xdef#3{\the\@tempcntz}\fi} +% \end{macrocode} +% \end{macro} +% +% \subsection{Size Reduction of Formulas} +% +% \begin{macro}{\LineTemp} +% The macro |\LineTemp| is used to redefine the |\line| commond of +% the \LaTeXe{} picture environment. Thereby, the macro +% |\LineTemp(a,b){c}| is transformed into the macro +% |\drawline(0,0)(c, ca/b)| for epic.sty, where |ca/b| is +% calculated by the macro |\DIVIDE| defined above. +% +% \begin{macrocode} +\newcount\@xArg \newcount\@yArg +\def\LineTemp(#1,#2)#3{\begingroup +\@xArg #1\relax \@yArg #2\relax +\ifnum\@xArg<0 \@tempcntx=-#3 \else +\ifnum\@xArg>0 \@tempcntx=#3 \else \@tempcntx=0 \fi\fi +\@tempcnty=#3 +\multiply\@tempcnty by\@yArg\relax +\ifnum\@tempcnty<0 \@tempcnty=-\@tempcnty\fi +\ifnum\@xArg<0 \@xArg=-\@xArg\fi +\ifnum\@xArg=0 \edef\RR{#3}\else +{\DIVIDE{\@tempcnty}{\@xArg}\RR}\fi +\@tempcnty=\RR% +\ifnum\@yArg<0 \ifnum\@tempcnty>0 \@tempcnty=-\@tempcnty\fi\fi +\drawline(0,0)(\the\@tempcntx,\the\@tempcnty)% +\endgroup} +% \end{macrocode} +% \end{macro} +% +% The if-phrase |\ifsizereduction| is to determine whether +% size-reduction is carried out or not. +% Then, |\LineTemp| is substituted for the original |\line| +% if |\sizereductiontrue| is declared and if |\unitlength| +% is smaller than 0.1pt. +% +% \begin{macro}{\line} +% \begin{macro}{\ifsizereduction} +% \begin{macrocode} +\RequirePackage{epic}% +\newif\ifsizereduction \sizereductionfalse +%\let\@ldline=\line +\def\reduced@line(#1,#2)#3{\ifsizereduction +\ifdim\unitlength<0.1pt \LineTemp(#1,#2){#3}\else +\@ldline(#1,#2){#3}\fi +\else\@ldline(#1,#2){#3}\fi} +\let\line=\reduced@line +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The command |\changeunitlength| is used to set |\unitlength| +% and to declare |\sizereductiontrue| +% if |\unitlength| is smaller than 0.1pt. +% The font size of substituents is changed by |\substfontsize| +% according to the size reduction. +% +% \changes{v4.00}{2002/5/30}{Added: \cs{substfontsize}} +% +% \begin{macro}{\@changeunitlength} +% \begin{macrocode} +\def\@changeunitlength#1{\unitlength=#1\relax +\ifdim\unitlength<0.1pt \sizereductiontrue +\ifdim\unitlength<0.062pt \let\substfontsize=\tiny \else +\ifdim\unitlength<0.072pt \let\substfontsize=\scriptsize \else +\ifdim\unitlength<0.082pt \let\substfontsize=\footnotesize +\fi\fi\fi +\else\let\substfontsize=\normalsize +\fi} +\let\changeunitlength=\@changeunitlength +% \end{macrocode} +% \end{macro} +% +% The reduced setting is the original LaTeX picture environment but +% include the size-reduction mechanism. +% To switch the size-reduction meachism and the pstricks mechanism, +% we can use a switching command such as |\originalpicture|. +% \changes{v3.00}{2002/4/30}{New environment: sfpicture} +% +% \begin{macro}{\reducedsizepicture} +% \begin{macrocode} +\def\reducedsizepicture{% +\@ifnextchar[{\reduced@picture}{\reduced@picture[0.1pt]}} +\def\reduced@picture[#1]{% +\sizereductiontrue +\let\sfpicture=\picture +\let\endsfpicture=\endpicture +\let\Put@Direct=\put +\let\Multiput@Direct=\multiput +\let\thicklines=\@ldthicklines +\let\thinlines=\@ldthinlines +\let\line=\reduced@line +\let\dotorline=\d@t@rline +\let\Put@Line=\Put@@Line +\let\Put@sCircle=\Put@@sCircle +\let\Put@oCircle=\Put@@oCircle +\xymtexpsswfalse +\let\changeunitlength=\@changeunitlength +\changeunitlength{#1}} +\reducedsizepicture%size-reduction setting +% \end{macrocode} +% \end{macro} +% +% +% The command |\lineslope| of epic.sty has been redefined +% to give a more precise result. +% +% \begin{macro}{\lineslope} +% \begin{macrocode} +\let\oldlineslope=\lineslope%used only in the manual +\def\lineslope(#1,#2){% +\begingroup +\ifdim #1 <0pt \@xdim= -#1 \else\@xdim=#1\fi +\ifdim #2 <0pt \@ydim= -#2 \else\@ydim=#2\fi +%\typeout{LLL= \the#1, \the#2} +\multiply\@xdim by10\relax%by S. Fujita 2001/6/20 +\multiply\@ydim by10\relax%by S. Fujita 2001/6/20 +%\typeout{xdim,ydim= \the\@xdim, \the\@ydim} +\ifdim\@xdim >\@ydim \@tempdima=\@xdim \@xdim=\@ydim \@ydim=\@tempdima +\@flippedargstrue\else\@flippedargsfalse\fi% x < y +\ifdim\@ydim >1pt \@tempcntx=\@ydim + \divide\@tempcntx by 65536% now \@tempcntx=integral part of #1. + \divide\@xdim \@tempcntx\fi +%\typeout{xdim: \the\@xdim}% +\ifdim\@xdim <.083333pt \@xarg=1 \@yarg=0 + \else\ifdim\@xdim <.183333pt \@xarg=6 \@yarg=1 + \else\ifdim\@xdim <.225pt \@xarg=5 \@yarg=1 + \else\ifdim\@xdim <.291666pt \@xarg=4 \@yarg=1 + \else\ifdim\@xdim <.366666pt \@xarg=3 \@yarg=1 + \else\ifdim\@xdim <.45pt \@xarg=5 \@yarg=2 + \else\ifdim\@xdim <.55pt \@xarg=2 \@yarg=1 + \else\ifdim\@xdim <.633333pt \@xarg=5 \@yarg=3 + \else\ifdim\@xdim <.708333pt \@xarg=3 \@yarg=2 + \else\ifdim\@xdim <.775pt \@xarg=4 \@yarg=3 + \else\ifdim\@xdim <.816666pt \@xarg=5 \@yarg=4 + \else\ifdim\@xdim <.916666pt \@xarg=6 \@yarg=5 + \else \@xarg=1 \@yarg=1% +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi +\if@flippedargs\relax\else\@tempcntx=\@xarg \@xarg=\@yarg + \@yarg=\@tempcntx\fi +\ifdim #1 <0pt \global\@xarg= -\@xarg\else\global\@xarg= \@xarg\fi +\ifdim #2 <0pt \global\@yarg= -\@yarg\else\global\@yarg= \@yarg\fi +%%\typeout{closest slope integers = \the\@xarg, \the\@yarg} +\endgroup} +%</sizeredc> +% \end{macrocode} +% \end{macro} +% +% \Finale +% +\endinput diff --git a/Master/texmf-dist/source/latex/xymtex/base/sizeredc.ins b/Master/texmf-dist/source/latex/xymtex/base/sizeredc.ins new file mode 100644 index 00000000000..8a24083df57 --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/sizeredc.ins @@ -0,0 +1,49 @@ +\def\batchfile{sizeredc.ins} +\input docstrip.tex +\preamble + +This is a generated file. + +Copyright 1996, 2001, 2002, 2004,2010 by Shinsaku Fujita +all rights reserved. +This style file is created for drawing chemical structural formulas +This style file is to be contained in the ``xymtex'' directory which +is an input directory for TeX. + +This file is part of the XyMTeX system. +======================================= +Old Versions: +Released on June 20, 2001 version 1.00 +Released on April 30, 2002 version 1.01 +Released on Auguts 30, 2004 version 4.01 (for XyMTeX 4.01) + +The Present Version: +Version 5.00 Released on October 01, 2010 + +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 sizeredc.dtx and sizeredc.ins +and the derived file sizeredc.sty. + +======================================= + +\endpreamble + +\keepsilent + +\generateFile{sizeredc.drv}{t}{% + \from{sizeredc.dtx}{driver}} + +\generateFile{sizeredc.sty}{t}{% + \from{sizeredc.dtx}{sizeredc}} + +\endinput diff --git a/Master/texmf-dist/source/latex/xymtex/base/steroid.dtx b/Master/texmf-dist/source/latex/xymtex/base/steroid.dtx new file mode 100644 index 00000000000..20f8f200ab6 --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/steroid.dtx @@ -0,0 +1,1317 @@ +% \iffalse meta-comment +%% File: steroid.dtx +% +% Copyright 2009, 2010 by Shinsaku Fujita +% Copyright for the XyMTeX system 1993,1996,1998,2001,2002,2004,2005,2009 by Shinsaku Fujita +% +% This file is part of XyMTeX system. +% ------------------------------------- +% +% This file is a successor to: +% +% steroid.sty +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 1.00} +% \typeout{ -- Released December 1, 1993 by Shinsaku Fujita} +% Copyright (C) 1993 by Shinsaku Fujita, all rights reserved. +% +% This file is a part of the macro package ``XyMTeX'' which has been +% designed for typesetting chemical structural formulas. +% +% This file is to be contained in the ``xymtex'' directory which is +% an input directory for TeX. It is a LaTeX optional style file and +% should be used only within LaTeX, because several macros of the file +% are based on LaTeX commands. +% +% For the review of XyMTeX, see +% (1) Shinsaku Fujita, ``Typesetting structural formulas with the text +% formatter TeX/LaTeX'', Computers and Chemistry, in press. +% The following book deals with an application of TeX/LaTeX to +% preparation of manuscripts of chemical fields: +% (2) Shinsaku Fujita, ``LaTeX for Chemists and Biochemists'' +% Tokyo Kagaku Dozin, Tokyo (1993) [in Japanese]. +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% The Current Maintainer of this work is Shinsaku Fujita. +% +% This work consists of the files steroid.dtx and steroid.ins +% and the derived file steroid.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 +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{steroid} +% \def\versi@ndate{June 15, 2009} +% \def\versi@nno{ver1.00} +% \def\copyrighth@lder{SF}% Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \fi +% +% \CheckSum{1778} +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +% +% \setcounter{StandardModuleDepth}{1} +% +% \StopEventually{} +% \MakeShortVerb{\|} +% +% \iffalse +% \changes{v1.00}{2009/06/15}{The first version} +% \changes{v5.00}{2010/10/01}{for bond coloring and the LaTeX Project Public License} +% \fi +% +% \iffalse +%<*driver> +\NeedsTeXFormat{pLaTeX2e} +% \fi +\ProvidesFile{steroid.dtx}[2010/10/01 v5.00 XyMTeX{} package file] +% \iffalse +\documentclass{ltxdoc} +\GetFileInfo{steroid.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{Steroid derivatives by {\sffamily steroid.sty} +of \XyMTeX{} (\fileversion) } +\author{Shinsaku Fujita \\ +Shonan Institute of Chemoinformatics and Mathematical Chemistry, \\ +Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun Kanagawa-ken, 258-0019, Japan. +} +\date{\filedate} +% +\begin{document} + \maketitle + \DocInput{steroid.dtx} +\end{document} +%</driver> +% \fi +% +% \section{Introduction}\label{steroid:intro} +% +% \subsection{Options for {\sffamily docstrip}} +% +% \DeleteShortVerb{\|} +% \begin{center} +% \begin{tabular}{|l|l|} +% \hline +% \emph{option} & \emph{function}\\ \hline +% steroid & steroid.sty \\ +% driver & driver for this dtx file \\ +% \hline +% \end{tabular} +% \end{center} +% \MakeShortVerb{\|} +% +% \subsection{Version Information} +% +% \begin{macrocode} +%<*steroid> +\typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 5.00} +\typeout{ -- Released October 01, 2010 by Shinsaku Fujita} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\j@urnalname{steroid} +\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 steroid.sty} +% +% \begin{verbatim} +% ********************************* +% * steroid.sty: list of commands * +% ********************************* +% +% <Macros for drawing basic steroids> +% +% \gonane +% \gonanealpha +% \gonanebeta +% +% \estrane +% \estranealpha +% \estranebeta +% +% \steroidnochainandrostane +% \androstane +% \androstanealpha +% \androstanebeta +% +% \steroidethylchain +% \steroidethylchainpregnane +% \pregnane +% \pregnanealpha +% \pregnanebeta +% +% <Macros for drawing steroids with chains (modern type)> +% C22-C23: transoid +% +% \steroidChain +% \steroidChaindiMe +% \cholestaneAlpha +% \cholestaneBeta +% \cholestane +% +% \ergostaneAlpha +% \ergostaneBeta +% \ergostane +% +% \campestaneAlpha +% \campestaneBeta +% \campestane +% +% \poriferastaneAlpha +% \poriferastaneBeta +% \poriferastane +% +% \stigmastaneAlpha +% \stigmastaneBeta +% \stigmastane +% +% <Macros for drawing steroids with short chains (modern type)> +% C22-C23: transoid +% +% \steroidShortChain +% \steroidShortChainMe +% \cholaneAlpha +% \cholaneBeta +% +% <Macros for drawing steroids with short chains (old type)> +% C22-C23: transoid +% +% \steroidshortchain +% \steroidshortchainMe +% \cholanealpha +% \cholanebeta +% \cholanE +% +% <Macros for drawing steroids with chains (old type)> +% C22-C23: cisoid +% +% \steroidchaindiMe +% \cholestanealpha +% \cholestanebeta +% \cholestanE +% +% \ergostanealpha +% \ergostanebeta +% \ergostanE +% +% \campestanealpha +% \campestanebeta +% \campestanE +% +% \poriferastanealpha +% \poriferastanebeta +% \poriferastanE +% +% \stigmastanealpha +% \stigmastanebeta +% \stigmastanE +% +% <Macros for drawing spirostans> +% +% \steroidspiro +% \steroidspirotriMe +% \spirostanalpha +% \spirostanbeta +% \spirostan +% \spirostannor +% +% <Macros for drawing furostans> +% +% \steroidfuros +% \steroidspirotriMe +% \furostanalpha +% \furostanbeta +% \furostan +% +% <Macros for drawing spiro pyranoses> +% +% \pyranoseChairi +% \pyranoseChairii +% +% \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 steroid.sty} for the present case). Hence, the combination +% of |\input| and |\@ifundefined| is used to crossload sty +% files ({\sf chemstr.sty} for the present case) in place of the +% |\RequirePackage| command of \LaTeXe{}. +% +% \begin{macrocode} +% ************************* +% * input of basic macros * +% ************************* +\@ifundefined{setsixringv}{\input chemstr.sty\relax}{} +\@ifundefined{steroidchain}{\input carom.sty\relax}{} +\@ifundefined{ylchairiposition}{\input ccycle.sty\relax}{} +\unitlength=0.1pt +% \end{macrocode} +% +% The commands |\steroid| and |\steroidchain| for drawing raw skeletons of +% steroid derivatives have been already defined in {\sf carom.sty}, which +% is loaded automatically as above. +% +% \section{Macros for Steroids with No Side Chains} +% +% By starting from the commands |\steroid| defined in the {\sf carom.sty}, +% several intermediate commands are defined to draw steroid derivatives +% without side chains. +% +% \begin{macro}{\gonane} +% \begin{macro}{\gonanealpha} +% \begin{macro}{\gonanebeta} +% \begin{macro}{\estrane} +% \begin{macro}{\estranealpha} +% \begin{macro}{\estranebeta} +% \begin{macrocode} +% *********************************************** +% * For drawing side chains of the common style * +% *********************************************** +% ******************* +% * gonane, estrane * +% ******************* +\def\gonanealpha{\@ifnextchar[{\@gonanealpha}{\@gonanealpha[]}} +\def\@gonanealpha[#1]#2{% +\steroid[#1]{#2;5A==H;8B==H;9A==H;{10}B==H;{13}B==H;{14}A==H}} +\def\gonanebeta{\@ifnextchar[{\@gonanebeta}{\@gonanebeta[]}} +\def\@gonanebeta[#1]#2{% +\steroid[#1]{#2;5B==H;8B==H;9A==H;{10}B==H;{13}B==H;{14}A==H}} +\def\gonane{\@ifnextchar[{\@gonane}{\@gonane[]}} +\def\@gonane[#1]#2{% +\steroid[#1]{#2;8B==H;9A==H;{10}B==H;{13}B==H;{14}A==H}} +\def\estranealpha{\@ifnextchar[{\@estranealpha}{\@estranealpha[]}} +\def\@estranealpha[#1]#2{% +\steroid[#1]{#2;5A==H;8B==H;9A==H;{10}B==H;{13}B==CH$_{3}$;{14}A==H}} +\def\estranebeta{\@ifnextchar[{\@estranebeta}{\@estranebeta[]}} +\def\@estranebeta[#1]#2{ +\steroid[#1]{#2;5B==H;8B==H;9A==H;{10}B==H;{13}B==CH$_{3}$;{14}A==H}} +\def\estrane{\@ifnextchar[{\@estrane}{\@estrane[]}} +\def\@estrane[#1]#2{ +\steroid[#1]{#2;8B==H;9A==H;{10}B==H;{13}B==CH$_{3}$;{14}A==H}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\steroidnochainandrostane} +% \begin{macro}{\androstane} +% \begin{macro}{\androstanealpha} +% \begin{macro}{\androstanebeta} +% \begin{macrocode} +% ************** +% * androstane * +% ************** +\def\steroidnochainandrostane[#1]#2{% +\steroid[#1]{#2;8B==H;9A==H;{10}B==CH$_{3}$;{13}B==CH$_{3}$;{14}A==H}} +\def\androstanealpha{\@ifnextchar[{\@androstanealpha}{\@androstanealpha[]}} +\def\@androstanealpha[#1]#2{\steroidnochainandrostane[#1]{#2;5A==H}} +\def\androstanebeta{\@ifnextchar[{\@androstanebeta}{\@androstanebeta[]}} +\def\@androstanebeta[#1]#2{\steroidnochainandrostane[#1]{#2;5B==H}} +\def\androstane{\@ifnextchar[{\@androstane}{\@androstane[]}} +\def\@androstane[#1]#2{\steroidnochainandrostane[#1]{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \section{Macros for Steroids with a Ethyl Chain} +% +% After the definition of the macro |\steroidethylchain| for +% drawing steroids with an ethyl chain, several commands for +% drawing pregnane derivative are defined. +% +% \begin{macro}{\steroidethylchain} +% \begin{macrocode} +\def\steroidethylchain{\@ifnextchar[{\@steroidethylchain[@}{\@steroidethylchain[Z]}} +\def\@steroidethylchain[#1]#2{% +\@reset@ylsw\reset@@yl +\yl@steroidposition{#2}% +\ylposition{#2}{-21}{0}{3}{0}%for 22 and 23 positions +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-1026}\def\@@yli{-606}\fi +\else +\ylposition{#2}{-14}{5}{7}{0}%for 20 position +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-1026}\def\@@yli{-606}\fi\else +\ylposition{#2}{-20}{3}{5}{0}%for 24 position +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-1397}\def\@@yli{-709}\fi\fi +\if@ylsw + \yl@shiftii=\@ylii + \ifx\@@ylii\empty\else + \advance\yl@shiftii\@@ylii\fi + \yl@shifti=\@yli + \ifx\@@yli\empty\else + \advance\yl@shifti\@@yli\fi + \advance\yl@shiftii\yl@xdiff + \advance\yl@shifti\yl@ydiff + \begin{sfpicture}(0,0)(-\yl@shiftii,-\yl@shifti)% + \reset@yl@xydiff%1999/1/6 by S. Fujita +\else + \begin{sfpicture}(1850,1500)(-\shiftii,-\shifti)% + \iforigpt \typeout{command `steroidethylchain' is based on `steroid'.}\fi% +\fi + \Put@Direct(0,0){\@steroidskeleton{#1}{#2}}% + \Put@Line(855,709)(0,1){200}% %bond 17-20 + \Put@Line(1026,1012)(-5,-3){171}% %bond 22-20 +\@tfor\member:=#1\do{% +\expandafter\twoCH@R\member//\relax% +\if\@tmpa Z\relax% + \ifx\@tmpb\empty%no action + \else\if\@tmpb a% + \Put@Line(888,735)(0,1){148}% %double bond 17-20 + \else\if\@tmpb b% + \Put@Line(1020,970)(-5,-3){126}% %double bond 22-20 + \fi\fi\fi\fi}% +\Put@Direct(1026,606){\setsixringv{#2}{-21}{0}{3}{0}}%for 22 and 23 positions +\Put@Direct(1026,606){\setsixringv{#2}{-14}{5}{7}{0}}%for 20 position +%\Put@Direct(1197,709){\setsixringv{#2}{-20}{3}{5}{0}}%for 24 position +%\Put@Direct(1397,709){\setatombond{#2}{-24}{4}}% % for 25 +\end{sfpicture}}% %end of \steroidethylchain macro% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\steroidethylchainpregnane} +% \begin{macro}{\pregnane} +% \begin{macro}{\pregnanealpha} +% \begin{macro}{\pregnanebeta} +% \begin{macrocode} +% ************ +% * pregnane * +% ************ +\def\steroidethylchainpregnane[#1]#2{% +\steroidethylchain[#1]{#2;8B==H;9A==H;{10}B==CH$_{3}$;{13}B==CH$_{3}$;{14}A==H;% +{17}SA==\raisebox{-4pt}{~H}}} +\def\pregnanealpha{\@ifnextchar[{\@pregnanealpha}{\@pregnanealpha[]}} +\def\@pregnanealpha[#1]#2{\steroidethylchainpregnane[#1]{#2;5A==H}} +\def\pregnanebeta{\@ifnextchar[{\@pregnanebeta}{\@pregnanebeta[]}} +\def\@pregnanebeta[#1]#2{\steroidethylchainpregnane[#1]{#2;5B==H}} +\def\pregnane{\@ifnextchar[{\@pregnane}{\@pregnane[]}} +\def\@pregnane[#1]#2{\steroidethylchainpregnane[#1]{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \section{Macros for Steroids with Chains (Modern Types)} +% +% For drawing steroids with side chains of modern expressions, the command |\steroidChain| +% is created in addition to the previous command |\steroidchain| for drawing a side chain +% of an old expression. +% +% \begin{macro}{\steroidChain} +% \begin{macrocode} +% ************************************************************ +% * Raw Skeleton for drawing side chains of the modern style * +% ************************************************************ +\def\steroidChain{\@ifnextchar[{\@steroidChain[@}{\@steroidChain[Z]}} +\def\@steroidChain[#1]#2{% +\@reset@ylsw\reset@@yl +\yl@steroidposition{#2}% +\ylposition{#2}{-21}{0}{3}{0}%for 22 and 23 positions +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-1026}\def\@@yli{-606}\fi +\else +\ylposition{#2}{-14}{5}{7}{0}%for 20 position +\fi +\if@ylsw +\ifx\@@ylii\empty +\def\@@ylii{-1026}\def\@@yli{-606}\fi%%set 20 position +\else +\ylposition{#2}{-23}{0}{2}{0}%for 24 position +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-1368}\def\@@yli{-606}\fi%%set 24 positions +\else +\ylatombondposition{#2}{-24}{4}% % for 25 +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-1539}\def\@@yli{-909}\fi%%set 25 positions +\else +\ylatombondposition{#2}{-25}{4}% % for 26 +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-1710}\def\@@yli{-1012}\fi%%set 26 positions +\else +\ylatombondposition{#2}{-26}{4}% % for 27 +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-1539}\def\@@yli{-709}\fi%%set 27 positions +\fi +\if@ylsw + \yl@shiftii=\@ylii + \ifx\@@ylii\empty\else + \advance\yl@shiftii\@@ylii\fi + \yl@shifti=\@yli + \ifx\@@yli\empty\else + \advance\yl@shifti\@@yli\fi + \advance\yl@shiftii\yl@xdiff + \advance\yl@shifti\yl@ydiff + \begin{sfpicture}(0,0)(-\yl@shiftii,-\yl@shifti)% + \reset@yl@xydiff%1999/1/6 by S. Fujita +\else + \begin{sfpicture}(2300,1500)(-\shiftii,-\shifti)% + \iforigpt \typeout{command `steroidChain' is based on `steroid'.}\fi% +\fi + \Put@Direct(0,0){\@steroidskeleton{#1}{#2}}% + \Put@Line(855,709)(0,1){200}% %bond 17-20 + \Put@Line(1026,1012)(-5,-3){171}% %bond 22-20 + \Put@Line(1026,1012)(5,-3){171}% %bond 22-23 + \Put@Line(1197,909)(5,3){171}% %bond 23-24 + \Put@Line(1368,1012)(5,-3){171}% %bond 24-25 + \Put@Line(1539,909)(5,3){171}% %bond 25-26 + \Put@Line(1539,909)(0,-1){200}% %bond 25-27 +\@tfor\member:=#1\do{% +\expandafter\twoCH@R\member//\relax% +\if\@tmpa Z\relax% + \ifx\@tmpb\empty%no action + \else\if\@tmpb a% + \Put@Line(888,735)(0,1){148}% %double bond 17-20 + \else\if\@tmpb b% + \Put@Line(1020,970)(-5,-3){126}% %double bond 22-20 + \else\if\@tmpb c% + \Put@Line(1032,970)(5,-3){126}% %double bond 22-23 + \else\if\@tmpb d% + \Put@Line(1203,952)(5,3){126}% %double bond 23-24 + \else\if\@tmpb e% + \Put@Line(1372,970)(5,-3){126}% %double bond 24-25 + \else\if\@tmpb f% + \Put@Line(1545,952)(5,3){126}% %double bond 25-26 + \else\if\@tmpb F% + \Put@Line(1580,890)(5,3){126}% %double bond 25-26(alternative) + \else\if\@tmpb g% + \Put@Line(1580,890)(0,-1){148}% %double bond 25-27 + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}% +\Put@Direct(1026,606){\setsixringv{#2}{-21}{0}{2}{0}}%for 22 position +\Put@Direct(1192,909){\setsixringv{#2}{-19}{3}{5}{0}}%for 23 position +\Put@Direct(1368,606){\setsixringv{#2}{-23}{0}{2}{0}}%for 24 position +\Put@Direct(1539,909){\setatombond{#2}{-24}{5}}% % for 25 +\Put@Direct(1026,606){\setsixringv{#2}{-14}{5}{7}{0}}%for 20 position +\end{sfpicture}}% %end of \steroidChain macro% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\steroidChaindiMe} +% \begin{macrocode} +\def\steroidChaindiMe[#1]#2{% +\steroidChain[#1]{#2;8B==H;9A==H;{10}B==CH$_{3}$;{13}B==CH$_{3}$;{14}A==H;% +{17}SA==\raisebox{-4pt}{~H};{20}SA==H$_{3}$C;{20}SB==H}} +% \end{macrocode} +% \end{macro} +% +% Sometimes, |\cholestane[{Z}{Zb}]{}| may be used in place of +% |\cholestane[{Zb}]{}| because the latter gives an erroneous +% result. +% +% +% \begin{macro}{\cholestaneAlpha} +% \begin{macro}{\cholestaneBeta} +% \begin{macro}{\cholestane} +% \begin{macro}{\ergostaneAlpha} +% \begin{macro}{\ergostaneBeta} +% \begin{macro}{\ergostane} +% \begin{macro}{\campestaneAlpha} +% \begin{macro}{\campestaneBeta} +% \begin{macro}{\campestane} +% \begin{macro}{\poriferastaneAlpha} +% \begin{macro}{\poriferastaneBeta} +% \begin{macro}{\poriferastane} +% \begin{macro}{\stigmastaneAlpha} +% \begin{macro}{\stigmastaneBeta} +% \begin{macro}{\stigmastane} +% \begin{macrocode} +% ***************************************************** +% * Intermediate skeletons for drawing * +% * cholestane, ergostane, campestane, poriferastane, * +% * and stigmastane (the modern type) * +% ***************************************************** +\def\cholestaneAlpha{\@ifnextchar[{\@cholestaneAlpha}{\@cholestaneAlpha[]}} +\def\@cholestaneAlpha[#1]#2{\steroidChaindiMe[#1]{#2;5A==H}} +\def\cholestaneBeta{\@ifnextchar[{\@cholestaneBeta}{\@cholestaneBeta[]}} +\def\@cholestaneBeta[#1]#2{\steroidChaindiMe[#1]{#2;5B==H}} +\def\cholestane{\@ifnextchar[{\@cholestane}{\@cholestane[]}} +\def\@cholestane[#1]#2{\steroidChaindiMe[#1]{#2}} +\def\ergostaneAlpha{\@ifnextchar[{\@ergostaneAlpha}{\@ergostaneAlpha[]}} +\def\@ergostaneAlpha[#1]#2{% +\@cholestaneAlpha[#1]{#2;{24}SA==CH$_{3}$;{24}SB==H}} +\def\ergostaneBeta{\@ifnextchar[{\@ergostaneBeta}{\@ergostaneBeta[]}} +\def\@ergostaneBeta[#1]#2{% +\@cholestaneBeta[#1]{#2;{24}SA==CH$_{3}$;{24}SB==H}} +\def\ergostane{\@ifnextchar[{\@ergostane}{\@ergostane[]}} +\def\@ergostane[#1]#2{% +\@cholestane[#1]{#2;{24}SA==CH$_{3}$;{24}SB==H}} +\def\campestaneAlpha{\@ifnextchar[{\@campestaneAlpha}{\@campestaneAlpha[]}} +\def\@campestaneAlpha[#1]#2{% +\@cholestaneAlpha[#1]{#2;{24}Su==\mbox{C\rlap{H$_{3}$}\kern20\unitlength};{24}Sd==~H}} +\def\campestaneBeta{\@ifnextchar[{\@campestaneBeta}{\@campestaneBeta[]}} +\def\@campestaneBeta[#1]#2{% +\@cholestaneBeta[#1]{#2;{24}Su==\mbox{C\rlap{H$_{3}$}\kern20\unitlength};{24}Sd==~H}} +\def\campestane{\@ifnextchar[{\@campestane}{\@campestane[]}} +\def\@campestane[#1]#2{% +\@cholestane[#1]{#2;{24}Su==\mbox{C\rlap{H$_{3}$}\kern20\unitlength};{24}Sd==~H}} +\def\poriferastaneAlpha{\@ifnextchar[{\@poriferastaneAlpha}{\@poriferastaneAlpha[]}} +\def\@poriferastaneAlpha[#1]#2{% +\@cholestaneAlpha[#1]{#2;{24}SA==\dimethylene{}{1==(yl)};{24}SB==H}} +\def\poriferastaneBeta{\@ifnextchar[{\@poriferastaneBeta}{\@poriferastaneBeta[]}} +\def\@poriferastaneBeta[#1]#2{% +\@cholestaneBeta[#1]{#2;{24}SA==\dimethylene{}{1==(yl)};{24}SB==H}} +\def\poriferastane{\@ifnextchar[{\@poriferastane}{\@poriferastane[]}} +\def\@poriferastane[#1]#2{% +\@cholestane[#1]{#2;{24}SA==\dimethylene{}{1==(yl)};{24}SB==H}} +\def\stigmastaneAlpha{\@ifnextchar[{\@stigmastaneAlpha}{\@stigmastaneAlpha[]}} +\def\@stigmastaneAlpha[#1]#2{% +\@cholestaneAlpha[#1]{#2;{24}Su==\dimethylene{}{1==(yl)};{24}Sd==H}} +\def\stigmastaneBeta{\@ifnextchar[{\@stigmastaneBeta}{\@stigmastaneBeta[]}} +\def\@stigmastaneBeta[#1]#2{% +\@cholestaneBeta[#1]{#2;{24}Su==\dimethylene{}{1==(yl)};{24}Sd==H}} +\def\stigmastane{\@ifnextchar[{\@stigmastane}{\@stigmastane[]}} +\def\@stigmastane[#1]#2{% +\@cholestane[#1]{#2;{24}Su==\dimethylene{}{1==(yl)};{24}Sd==H}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \section{Macros for Steroids with Short Chains (Modern Types)} +% +% +% \begin{macro}{\steroidShortChain} +% \begin{macrocode} +% ****************************************************************** +% * Raw Skeleton for drawing short side chains of the modern style * +% ****************************************************************** +\def\steroidShortChain{\@ifnextchar[{\@steroidShortChain[@}{\@steroidShortChain[Z]}} +\def\@steroidShortChain[#1]#2{% +\@reset@ylsw\reset@@yl +\yl@steroidposition{#2}% +\ylposition{#2}{-21}{0}{3}{0}%for 22 and 23 positions +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-1026}\def\@@yli{-606}\fi +\else +\ylposition{#2}{-14}{5}{7}{0}%for 20 position +\fi +\if@ylsw +\ifx\@@ylii\empty +\def\@@ylii{-1026}\def\@@yli{-606}\fi%%set 20 position +\else +\ylposition{#2}{-23}{0}{2}{0}%for 24 position +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-1368}\def\@@yli{-606}\fi%%set 24 positions +\fi +\if@ylsw + \yl@shiftii=\@ylii + \ifx\@@ylii\empty\else + \advance\yl@shiftii\@@ylii\fi + \yl@shifti=\@yli + \ifx\@@yli\empty\else + \advance\yl@shifti\@@yli\fi + \advance\yl@shiftii\yl@xdiff + \advance\yl@shifti\yl@ydiff + \begin{sfpicture}(0,0)(-\yl@shiftii,-\yl@shifti)% + \reset@yl@xydiff%1999/1/6 by S. Fujita +\else + \begin{sfpicture}(2000,1500)(-\shiftii,-\shifti)% + \iforigpt \typeout{command `steroidChain' is based on `steroid'.}\fi% +\fi + \Put@Direct(0,0){\@steroidskeleton{#1}{#2}}% + \Put@Line(855,709)(0,1){200}% %bond 17-20 + \Put@Line(1026,1012)(-5,-3){171}% %bond 22-20 + \Put@Line(1026,1012)(5,-3){171}% %bond 22-23 + \Put@Line(1197,909)(5,3){171}% %bond 23-24 +\@tfor\member:=#1\do{% +\expandafter\twoCH@R\member//\relax% +\if\@tmpa Z\relax% + \ifx\@tmpb\empty%no action + \else\if\@tmpb a% + \Put@Line(888,735)(0,1){148}% %double bond 17-20 + \else\if\@tmpb b% + \Put@Line(1020,970)(-5,-3){126}% %double bond 22-20 + \else\if\@tmpb c% + \Put@Line(1032,970)(5,-3){126}% %double bond 22-23 + \else\if\@tmpb d% + \Put@Line(1203,952)(5,3){126}% %double bond 23-24 + \fi\fi\fi\fi\fi\fi}% +\Put@Direct(1026,606){\setsixringv{#2}{-21}{0}{2}{0}}%for 22 position +\Put@Direct(1192,909){\setsixringv{#2}{-19}{3}{5}{0}}%for 23 position +\Put@Direct(1368,606){\setsixringv{#2}{-23}{0}{2}{0}}%for 24 position +%\Put@Direct(1539,909){\setatombond{#2}{-24}{5}}% % for 25 +\Put@Direct(1026,606){\setsixringv{#2}{-14}{5}{7}{0}}%for 20 position +\end{sfpicture}}% %end of \steroidShortChain macro% +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\steroidShortChainMe} +% \begin{macrocode} +\def\steroidShortChainMe[#1]#2{% +\steroidShortChain[#1]{#2;8B==H;9A==H;{10}B==CH$_{3}$;{13}B==CH$_{3}$;{14}A==H;% +{17}SA==\raisebox{-4pt}{~H};{20}SA==H$_{3}$C;{20}SB==H}} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\cholaneAlpha} +% \begin{macro}{\cholaneBeta} +% \begin{macro}{\cholane} +% \begin{macrocode} +% ***************************************************************** +% * Intermediate skeletons for drawing choranes (the modern type) * +% ***************************************************************** +\def\cholaneAlpha{\@ifnextchar[{\@cholaneAlpha}{\@cholaneAlpha[]}} +\def\@cholaneAlpha[#1]#2{\steroidShortChainMe[#1]{#2;5A==H}} +\def\cholaneBeta{\@ifnextchar[{\@cholaneBeta}{\@cholaneBeta[]}} +\def\@cholaneBeta[#1]#2{\steroidShortChainMe[#1]{#2;5B==H}} +\def\cholane{\@ifnextchar[{\@cholane}{\@cholane[]}} +\def\@cholane[#1]#2{\steroidShortChainMe[#1]{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \section{Macros for Steroids with Short Chains (Old Types)} +% +% \begin{macro}{\steroidshortchain} +% \begin{macrocode} +% ****************************************************** +% * Raw skeletons drawing side chains of the old style * +% ****************************************************** +\def\steroidshortchain{\@ifnextchar[{\@steroidshortchain[@}{\@steroidshortchain[Z]}} +\def\@steroidshortchain[#1]#2{% +\@reset@ylsw\reset@@yl +\yl@steroidposition{#2}% +\ylposition{#2}{-21}{0}{3}{0}%for 22 and 23 positions +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-1026}\def\@@yli{-606}\fi +\else +\ylposition{#2}{-14}{5}{7}{0}%for 20 position +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-1026}\def\@@yli{-606}\fi\else +\ylposition{#2}{-20}{3}{5}{0}%for 24 position +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-1397}\def\@@yli{-709}\fi\fi +\if@ylsw + \yl@shiftii=\@ylii + \ifx\@@ylii\empty\else + \advance\yl@shiftii\@@ylii\fi + \yl@shifti=\@yli + \ifx\@@yli\empty\else + \advance\yl@shifti\@@yli\fi + \advance\yl@shiftii\yl@xdiff + \advance\yl@shifti\yl@ydiff + \begin{sfpicture}(0,0)(-\yl@shiftii,-\yl@shifti)% + \reset@yl@xydiff%1999/1/6 by S. Fujita +\else + \begin{sfpicture}(1850,1500)(-\shiftii,-\shifti)% + \iforigpt \typeout{command `steroidshortchain' is based on `steroid'.}\fi% +\fi + \Put@Direct(0,0){\@steroidskeleton{#1}{#2}}% + \Put@Line(855,709)(0,1){200}% %bond 17-20 + \Put@Line(1026,1012)(-5,-3){171}% %bond 22-20 + \Put@Line(1026,1012)(5,-3){171}% %bond 22-23 + \Put@Line(1197,709)(0,1){200}% %bond 24-23 +\@tfor\member:=#1\do{% +\expandafter\twoCH@R\member//\relax% +\if\@tmpa Z\relax% + \ifx\@tmpb\empty%no action + \else\if\@tmpb a% + \Put@Line(888,735)(0,1){148}% %double bond 17-20 + \else\if\@tmpb b% + \Put@Line(1020,970)(-5,-3){126}% %double bond 22-20 + \else\if\@tmpb c% + \Put@Line(1032,970)(5,-3){126}% %double bond 22-23 + \else\if\@tmpb d% + \Put@Line(1164,735)(0,1){148}% %double bond 24-23 + \fi\fi\fi\fi\fi\fi}% +\Put@Direct(1026,606){\setsixringv{#2}{-21}{0}{3}{0}}%for 22 and 23 positions +\Put@Direct(1026,606){\setsixringv{#2}{-14}{5}{7}{0}}%for 20 position +\Put@Direct(1197,709){\setsixringv{#2}{-20}{3}{5}{0}}%for 24 position +\end{sfpicture}}% %end of \steroidshortchain macro% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\steroidshortchainMe} +% \begin{macro}{\cholanealpha} +% \begin{macro}{\cholanebeta} +% \begin{macro}{\cholanE} +% \begin{macrocode} +% *********** +% * cholane * +% *********** +\def\steroidshortchainMe[#1]#2{% +\steroidshortchain[#1]{#2;8B==H;9A==H;{10}B==CH$_{3}$;{13}B==CH$_{3}$;{14}A==H;% +{17}SA==\raisebox{-4pt}{~H};{20}SA==H$_{3}$C;{20}SB==H}} +\def\cholanealpha{\@ifnextchar[{\@cholanealpha}{\@cholanealpha[]}} +\def\@cholanealpha[#1]#2{\steroidshortchainMe[#1]{#2;5A==H}} +\def\cholanebeta{\@ifnextchar[{\@cholanebeta}{\@cholanebeta[]}} +\def\@cholanebeta[#1]#2{\steroidshortchainMe[#1]{#2;5B==H}} +\def\cholanE{\@ifnextchar[{\@cholanE}{\@cholanE[]}} +\def\@cholanE[#1]#2{\steroidshortchainMe[#1]{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \section{Macros for Steroids with Chains (Old Types)} +% +% For drawing steroids with side chains of old expressions, the command |\steroidchain| +% defined in {\sf carom.sty} is used. +% +% \begin{macro}{\steroidchaindiMe} +% \begin{macro}{\cholestanealpha} +% \begin{macro}{\cholestanebeta} +% \begin{macro}{\cholestanE} +% \begin{macro}{\ergostanealpha} +% \begin{macro}{\ergostanebeta} +% \begin{macro}{\ergostanE} +% \begin{macro}{\campestanealpha} +% \begin{macro}{\campestanebeta} +% \begin{macro}{\campestanE} +% \begin{macrocode} +% ************************************************ +% * cholestane, ergostane, campestane (old type) * +% ************************************************ +\def\steroidchaindiMe[#1]#2{% +\steroidchain[#1]{#2;8B==H;9A==H;{10}B==CH$_{3}$;{13}B==CH$_{3}$;{14}A==H;% +{17}SA==\raisebox{-4pt}{~H};{20}SA==H$_{3}$C;{20}SB==H}} +\def\cholestanealpha{\@ifnextchar[{\@cholestanealpha}{\@cholestanealpha[]}} +\def\@cholestanealpha[#1]#2{\steroidchaindiMe[#1]{#2;5A==H}} +\def\cholestanebeta{\@ifnextchar[{\@cholestanebeta}{\@cholestanebeta[]}} +\def\@cholestanebeta[#1]#2{\steroidchaindiMe[#1]{#2;5B==H}} +\def\cholestanE{\@ifnextchar[{\@cholestanE}{\@cholestanE[]}} +\def\@cholestanE[#1]#2{\steroidchaindiMe[#1]{#2}} +\def\ergostanealpha{\@ifnextchar[{\@ergostanealpha}{\@ergostanealpha[]}} +\def\@ergostanealpha[#1]#2{% +\@cholestanealpha[#1]{#2;{24}Su==CH$_{3}$;{24}Sd==H}} +\def\ergostanebeta{\@ifnextchar[{\@ergostanebeta}{\@ergostanebeta[]}} +\def\@ergostanebeta[#1]#2{% +\@cholestanebeta[#1]{#2;{24}Su==CH$_{3}$;{24}Sd==H}} +\def\ergostanE{\@ifnextchar[{\@ergostanE}{\@ergostanE[]}} +\def\@ergostanE[#1]#2{% +\@cholestanE[#1]{#2;{24}Su==CH$_{3}$;{24}Sd==H}} +\def\campestanealpha{\@ifnextchar[{\@campestanealpha}{\@campestanealpha[]}} +\def\@campestanealpha[#1]#2{% +\@cholestanealpha[#1]{#2;{24}Sd==\mbox{C\rlap{H$_{3}$}\kern20\unitlength};{24}Su==~H}} +\def\campestanebeta{\@ifnextchar[{\@campestanebeta}{\@campestanebeta[]}} +\def\@campestanebeta[#1]#2{% +\@cholestanebeta[#1]{#2;{24}Sd==\mbox{C\rlap{H$_{3}$}\kern20\unitlength};{24}Su==~H}} +\def\campestanE{\@ifnextchar[{\@campestanE}{\@campestanE[]}} +\def\@campestanE[#1]#2{% +\@cholestanE[#1]{#2;{24}Sd==\mbox{C\rlap{H$_{3}$}\kern20\unitlength};{24}Su==~H}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\poriferastanealpha} +% \begin{macro}{\poriferastanebeta} +% \begin{macro}{\poriferastanE} +% \begin{macro}{\stigmastanealpha} +% \begin{macro}{\stigmastanebeta} +% \begin{macro}{\stigmastanE} +% \begin{macrocode} +% ***************************************** +% * poriferastane, stigmastane (old type) * +% ***************************************** +\def\poriferastanealpha{\@ifnextchar[{\@poriferastanealpha}{\@poriferastanealpha[]}} +\def\@poriferastanealpha[#1]#2{% +\@cholestanealpha[#1]{#2;{24}Su==\dimethylenei{}{1==(yl)};{24}Sd==H}} +\def\poriferastanebeta{\@ifnextchar[{\@poriferastanebeta}{\@poriferastanebeta[]}} +\def\@poriferastanebeta[#1]#2{% +\@cholestanebeta[#1]{#2;{24}Su==\dimethylenei{}{1==(yl)};{24}Sd==H}} +\def\poriferastanE{\@ifnextchar[{\@poriferastanE}{\@poriferastanE[]}} +\def\@poriferastanE[#1]#2{% +\@cholestanE[#1]{#2;{24}Su==\dimethylenei{}{1==(yl)};{24}Sd==H}} +\def\stigmastanealpha{\@ifnextchar[{\@stigmastanealpha}{\@stigmastanealpha[]}} +\def\@stigmastanealpha[#1]#2{% +\@cholestanealpha[#1]{#2;{24}SA==\dimethylenei{}{1==(yl)};{24}SB==H}} +\def\stigmastanebeta{\@ifnextchar[{\@stigmastanebeta}{\@stigmastanebeta[]}} +\def\@stigmastanebeta[#1]#2{% +\@cholestanebeta[#1]{#2;{24}SA==\dimethylenei{}{1==(yl)};{24}SB==H}} +\def\stigmastanE{\@ifnextchar[{\@stigmastanE}{\@stigmastanE[]}} +\def\@stigmastanE[#1]#2{% +\@cholestanE[#1]{#2;{24}SA==\dimethylenei{}{1==(yl)};{24}SB==H}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \section{Macros for Spirostans} +% +% After the macro |\steroidspiro| is defined as a basic macro +% several macros for drawing spirostans are defined. +% +% \begin{macro}{\steroidspiro} +% \begin{macrocode} +% *************************************** +% * Raw skeleton for drawing spirostans * +% *************************************** +\def\steroidspiro{\@ifnextchar[{\@steroidspiro[@}{\@steroidspiro[Z]}} +\def\@steroidspiro[#1]#2{% +\@reset@ylsw\reset@@yl +\yl@steroidposition{#2}% +\ylposition{#2}{-20}{1}{3}{0}%for 22 position +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-1026}\def\@@yli{-606}\fi +\else +\ylposition{#2}{-14}{5}{7}{0}%for 20 position +\fi +\if@ylsw +\ifx\@@ylii\empty +\def\@@ylii{-1026}\def\@@yli{-606}\fi%%set 20 position +\else +\ylposition{#2}{-22}{0}{2}{0}%for 23 position +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-1368}\def\@@yli{-400}\fi%%set 23 position +\else +\ylatombondposition{#2}{-23}{4}% % for 24 +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-1539}\def\@@yli{-909}\fi%%set 24 position +\else +\ylatombondposition{#2}{-24}{4}% % for 25 +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-1539}\def\@@yli{-1109}\fi%%set 25 position +\else +\ylatombondposition{#2}{-25}{4}% % for 26 +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-1368}\def\@@yli{-1212}\fi%%set 26 position +\fi +\if@ylsw + \yl@shiftii=\@ylii + \ifx\@@ylii\empty\else + \advance\yl@shiftii\@@ylii\fi + \yl@shifti=\@yli + \ifx\@@yli\empty\else + \advance\yl@shifti\@@yli\fi + \advance\yl@shiftii\yl@xdiff + \advance\yl@shifti\yl@ydiff + \begin{sfpicture}(0,0)(-\yl@shiftii,-\yl@shifti)% + \reset@yl@xydiff%1999/1/6 by S. Fujita +\else + \begin{sfpicture}(2300,1500)(-\shiftii,-\shifti)% + \iforigpt \typeout{command `steroidspiro' is based on `steroid'.}\fi% +\fi + \Put@Direct(0,0){\@steroidskeleton{#1}{#2}}% + \Put@Line(855,709)(0,1){200}% %bond 17-20 + \Put@Line(855,909)(1,0){342}% %bond 20-22 + \Put@Line(1197,909)(0,-1){140}% %bond 22-O (down) + \Put@Line(1026,606)(5,3){120}% %bond 16-O + \Put@Direct(1197,709){\makebox(0,0){O}}% + \dotorline(1197,909)(0,1){140}/(1197,909)(1197,1049)% 22-O (up) + {\thicklines + \Put@Line(1197,909)(5,-3){171}% %bond 22-23 + }% + \Put@Line(1539,909)(-5,-3){171}% %bond 24-23 + \Put@Line(1539,909)(0,1){200}% %bond 24-25 + \Put@Line(1539,1109)(-5,3){171}% %bond 25-26 + \Put@Line(1368,1212)(-5,-3){120}% %bond 26-O (down) + \Put@Direct(1197,1109){\makebox(0,0){O}}% +\@tfor\member:=#1\do{% +\expandafter\twoCH@R\member//\relax% +\if\@tmpa Z\relax% + \ifx\@tmpb\empty%no action + \else\if\@tmpb a% + \Put@Line(888,735)(0,1){148}% %double bond 17-20 + \else\if\@tmpb b% + \Put@Line(888,880)(1,0){276}% %double bond 20-22 + \else\if\@tmpb c% + \Put@Line(1164,880)(0,-1){116}% %double bond 22-O + \else\if\@tmpb d% + \Put@Line(1039,650)(5,3){100}% %double bond 16-O + \else\if\@tmpb e% + \Put@Line(1240,930)(5,-3){126}% %double bond 22-23 + \else\if\@tmpb f% + \Put@Line(1366,848)(5,3){140}% %double bond 23-24 + \else\if\@tmpb g% + \Put@Line(1504,930)(0,1){148}% %double bond 24-25 + \else\if\@tmpb h% + \Put@Line(1366,1166)(5,-3){140}% %double bond 26-25 + \else\if\@tmpb i% + \Put@Line(1366,1166)(-5,-3){110}% %double bond 26-O + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}% +\Put@Direct(1026,606){\setsixringv{#2}{-14}{5}{7}{0}}%for 20 position +\Put@Direct(1026,606){\setsixringv{#2}{-112}{4}{6}{0}}%for 17 position (117 as Exception) +\Put@Direct(1368,806){\setsixringv{#2}{-25}{0}{2}{0}}%for 26 +\Put@Direct(1368,806){\setsixringv{#2}{-23}{1}{3}{0}}%for 25 +\Put@Direct(1368,806){\setsixringv{#2}{-21}{2}{4}{0}}%for 24 +\Put@Direct(1368,806){\setsixringv{#2}{-19}{3}{5}{0}}%for 23 +\end{sfpicture}}% %end of \steroidspiro macro% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\steroidspirotriMe} +% \begin{macro}{\spirostanalpha} +% \begin{macro}{\spirostanbeta} +% \begin{macro}{\spirostan} +% \begin{macro}{\spirostannor} +% \begin{macrocode} +% ************** +% * spirostans * +% ************** +\def\steroidspirotriMe[#1]#2{% +\steroidspiro[#1]{#2;8B==H;9A==H;{10}B==CH$_{3}$;{13}B==CH$_{3}$;{14}A==H;% +{117}FA==H;{20}A==H$_{3}$C;{16}FA==H}} +\def\spirostanalpha{\@ifnextchar[{\@spirostanalpha}{\@spirostanalpha[]}} +\def\@spirostanalpha[#1]#2{\steroidspirotriMe[#1]{#2;5A==H;{25}B==CH$_{3}$}} +\def\spirostanbeta{\@ifnextchar[{\@spirostanbeta}{\@spirostanbeta[]}} +\def\@spirostanbeta[#1]#2{\steroidspirotriMe[#1]{#2;5B==H;{25}B==CH$_{3}$}} +\def\spirostan{\@ifnextchar[{\@spirostan}{\@spirostan[]}} +\def\@spirostan[#1]#2{\steroidspirotriMe[#1]{#2;{{25}}==\null}} +\def\spirostannor{\@ifnextchar[{\@spirostannor}{\@spirostannor[]}} +\def\@spirostannor[#1]#2{\steroidspirotriMe[#1]{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \section{Macros for Furostans} +% +% After the macro |\steroidfuros| is defined as a basic macro, +% several macros for drawing furostans are defined. +% +% \begin{macro}{\steroidfuros} +% \begin{macrocode} +% ************************************** +% * Raw skeleton for drawing furostans * +% ************************************** +\def\steroidfuros{\@ifnextchar[{\@steroidfuros[@}{\@steroidfuros[Z]}} +\def\@steroidfuros[#1]#2{% +\@reset@ylsw\reset@@yl +\yl@steroidposition{#2}% +\ylposition{#2}{-20}{1}{3}{0}%for 22 position +\if@ylsw \ifx\@@ylii\empty +\def\@@ylii{-1026}\def\@@yli{-606}\fi +\else +\ylposition{#2}{-14}{5}{7}{0}%for 20 position +\fi +\if@ylsw +\ifx\@@ylii\empty +\def\@@ylii{-1026}\def\@@yli{-606}\fi%%set 20 position +\else +\ylposition{#2}{-22}{0}{2}{0}%for 23 position +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-1368}\def\@@yli{-606}\fi%%set 23 position +\else +\ylatombondposition{#2}{-23}{4}% % for 24 +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-1539}\def\@@yli{-909}\fi%%set 24 position +\else +\ylatombondposition{#2}{-24}{4}% % for 25 +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-1710}\def\@@yli{-1012}\fi%%set 25 position +\else +\ylatombondposition{#2}{-25}{4}% % for 26 +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-1710}\def\@@yli{-1212}\fi%%set 26 position +\else +\ylatombondposition{#2}{-26}{4}% % for 27 +\fi +\if@ylsw\ifx\@@ylii\empty +\def\@@ylii{-1881}\def\@@yli{-909}\fi%%set 27 position +\fi +\if@ylsw + \yl@shiftii=\@ylii + \ifx\@@ylii\empty\else + \advance\yl@shiftii\@@ylii\fi + \yl@shifti=\@yli + \ifx\@@yli\empty\else + \advance\yl@shifti\@@yli\fi + \advance\yl@shiftii\yl@xdiff + \advance\yl@shifti\yl@ydiff + \begin{sfpicture}(0,0)(-\yl@shiftii,-\yl@shifti)% + \reset@yl@xydiff%1999/1/6 by S. Fujita +\else + \begin{sfpicture}(2300,1500)(-\shiftii,-\shifti)% + \iforigpt \typeout{command `steroidfuros' is based on `steroid'.}\fi% +\fi + \Put@Direct(0,0){\@steroidskeleton{#1}{#2}}% + \Put@Line(855,709)(0,1){200}% %bond 17-20 + \Put@Line(855,909)(1,0){342}% %bond 20-22 + \Put@Line(1197,909)(0,-1){140}% %bond 22-O (down) + \Put@Line(1026,606)(5,3){120}% %bond 16-O + \Put@Direct(1197,709){\makebox(0,0){O}}% + \Put@Line(1197,909)(5,3){171}% %bond 22-23 + \Put@Line(1368,1012)(5,-3){171}% %bond 23-24 + \Put@Line(1539,909)(5,3){171}% %bond 24-25 + \Put@Line(1710,1012)(5,-3){171}% %bond 25-27 + \Put@Line(1710,1012)(0,1){200}% %bond 25-27 +\@tfor\member:=#1\do{% +\expandafter\twoCH@R\member//\relax% +\if\@tmpa Z\relax% + \ifx\@tmpb\empty%no action + \else\if\@tmpb a% + \Put@Line(888,735)(0,1){148}% %double bond 17-20 + \else\if\@tmpb b% + \Put@Line(888,880)(1,0){276}% %double bond 20-22 + \else\if\@tmpb c% + \Put@Line(1164,880)(0,-1){116}% %double bond 22-O + \else\if\@tmpb d% + \Put@Line(1039,650)(5,3){100}% %double bond 16-O + \else\if\@tmpb e% + \Put@Line(1240,900)(5,3){126}% %double bond 22-23 + \else\if\@tmpb f% + \Put@Line(1410,1022)(5,-3){126}% %double bond 23-24 + \else\if\@tmpb g% + \Put@Line(1582,900)(5,3){126}% %double bond 24-25 + \else\if\@tmpb h% + \Put@Line(1740,1035)(0,1){150}% %double bond 25-26 + \else\if\@tmpb i% + \Put@Line(1752,1022)(5,-3){126}% %double bond 25-27 + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}% +\Put@Direct(1026,606){\setsixringv{#2}{-14}{5}{7}{0}}%for 20 position +\Put@Direct(1026,606){\setsixringv{#2}{-112}{4}{6}{0}}%for 17 position (117 as Exception) +\Put@Direct(1197,503){\setsixringv{#2}{-21}{0}{2}{0}}%for 22 +\Put@Direct(1368,606){\setsixringv{#2}{-22}{0}{2}{0}}%for 23 +\Put@Direct(1539,909){\setsixringv{#2}{-20}{3}{5}{0}}%for 24 +\Put@Direct(1710,1012){\setatombond{#2}{-24}{3}}% % for 25 +\Put@Direct(1539,909){\setsixringv{#2}{-24}{1}{3}{0}}%for 26 +\Put@Direct(1710,606){\setsixringv{#2}{-25}{1}{3}{0}}%for 27 +\end{sfpicture}}% %end of \steroidfuros macro% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\steroidfurostriMe} +% \begin{macro}{\furostanalpha} +% \begin{macro}{\furostanbeta} +% \begin{macro}{\furostan} +% \begin{macrocode} +% ************* +% * furostans * +% ************* +\def\steroidfurostriMe[#1]#2{% +\steroidfuros[#1]{#2;8B==H;9A==H;{10}B==CH$_{3}$;{13}B==CH$_{3}$;{14}A==H;% +{117}FA==H;{20}A==H$_{3}$C;{16}FA==H}} +\def\furostanalpha{\@ifnextchar[{\@furostanalpha}{\@furostanalpha[]}} +\def\@furostanalpha[#1]#2{\steroidfurostriMe[#1]{#2;5A==H}} +\def\furostanbeta{\@ifnextchar[{\@furostanbeta}{\@furostanbeta[]}} +\def\@furostanbeta[#1]#2{\steroidfurostriMe[#1]{#2;5B==H}} +\def\furostan{\@ifnextchar[{\@furostan}{\@furostan[]}} +\def\@furostan[#1]#2{\steroidfurostriMe[#1]{#2}} +%</steroid> +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \section{Macros for Spiro Pyranoses} +% +% The macro |\pyranoseChairi| is defined to draw steroid with spiro pyranose rings +% The switch |\pyranoseChairalphatrue| is declared to draw an alpha bond (a dashed line). +% +% \changes{v5.00}{2010/10/01}{for bond coloring} +% \begin{macro}{\ifpyranoseChairalpha} +% \begin{macro}{\pyranoseChairi} +% \begin{macrocode} +\newif\ifpyranoseChairalpha +\pyranoseChairalphatrue +\def\pyranoseChairi{\@ifnextchar[{\@pyranoseChairi}{\@pyranoseChairi[r]}} +\def\@pyranoseChairi[#1]#2{% +\@reset@ylsw% +\ylchairiposition{#2}% +\def\@@ylii{0}\def\@@yli{0}% +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(1600,800)(-400,-319){chairi}% +(400,319)%2002/4/30 by S. Fujita +% skeletal bonds + \thinlines% +\ifpyranoseChairalpha + \dotorline(0,0)(3,4){140}/(0,0)(140,187)% bond 1 to 6 +\else + \Put@Line(0,0)(3,4){140}% % bond 1 to 6 +\fi + \Put@Line(573,91)(-3,1){360}% % 5 to 6 + \Put@Direct(130,190){O}% + \Put@Line(573,91)(3,1){270}% % 5 to 4 + {\thicklines% + \molfronttrue% + \Put@Line(843,181)(-3,-4){170}% % 4 to 3 + \Put@Line(673,-46)(-3,1){403}% % 3 to 2 + \Put@Line(0,0)(3,1){270}% % 1 to 2 + }% + \thinlines% +% inner double bonds +\@tfor\member:=#1\do{% +\if\member r%no endcyclic bonds +\else \if\member c%%%a% + \Put@Line(767,139)(-3,-4){110}% % double bond 3 to 4 +\else \if\member b%%%d%%%b% + \Put@Line(640,-5)(-3,1){343}% % 4 to 5 +\else \if\member a%%%e%%%%c% + \Put@Line(240,111)(-3,-1){190}% % 5 to 6 +\else \if\member f%%%d% + \Put@Line(63,40)(3,4){110}% % 6 to 7 +\else \if\member e%%%l% + \Put@Line(182,187)(3,-1){343}% % 7 to 10 +\else \if\member d%%%k%%%f% + \Put@Line(768,131)(-3,-1){170}% % 10 to 3 +\fi\fi\fi\fi\fi\fi\fi}% +% % +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa%0 omit + \or\setBScolor{\@chairia}% subst. on 1 + \or\setBScolor{\@chairib}% subst. on 2 + \or\setBScolor{\@chairic}% subst. on 3 + \or\setBScolor{\@chairid}% subst. on 4 + \or\setBScolor{\@chairie}% subst. on 5 + \or\setBScolor{\@chairif}% subst. on 6 +\fi %end of ifcase +\fi\fi% +}\end{ShiftPicEnvB}}% %end of \pyranoseChairi macro +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The macro |\pyranoseChairii| is defined to draw steroid with spiro pyranose rings +% +% \changes{v5.00}{2010/10/01}{for bond coloring} +% \begin{macro}{\pyranoseChairii} +% \begin{macrocode} +\def\pyranoseChairii{\@ifnextchar[{\@pyranoseChairii}{\@pyranoseChairii[r]}} +\def\@pyranoseChairii[#1]#2{% +\@reset@ylsw% +\ylchairiposition{#2}% +\def\@@ylii{0}\def\@@yli{0}% +\begin{ShiftPicEnvB}(0,0)(-\yl@shiftii,-\yl@shifti)/% +(1600,800)(-400,-319){chairi}% +(400,319)%2002/4/30 by S. Fujita +% skeletal bonds + \thinlines% +\ifpyranoseChairalpha + \dotorline(0,0)(3,4){170}/(0,0)(170,227)% bond 1 to 6 +\else + \Put@Line(0,0)(3,4){170}% % bond 1 to 6 +\fi + \Put@Line(170,226)(3,-1){403}% % 6 to 5 + \Put@Line(573,91)(3,1){270}% % 5 to 4 + \Put@Direct(230,50){O}% + {\thicklines% + \molfronttrue% + \Put@Line(843,181)(-3,-4){170}% % 4 to 3 + \Put@Line(673,-46)(-3,1){360}% % 3 to 2 + \Put@Line(0,0)(3,1){230}% % 1 to 2 + }% + \thinlines% +% inner double bonds +\@tfor\member:=#1\do{% +\if\member r%no endcyclic bonds +\else \if\member c%%%a% + \Put@Line(767,139)(-3,-4){110}% % double bond 3 to 4 +\else \if\member b%%%d%%%b% + \Put@Line(640,-5)(-3,1){343}% % 4 to 5 +\else \if\member a%%%e%%%%c% + \Put@Line(240,111)(-3,-1){190}% % 5 to 6 +\else \if\member f%%%d% + \Put@Line(63,40)(3,4){110}% % 6 to 7 +\else \if\member e%%%l% + \Put@Line(182,187)(3,-1){343}% % 7 to 10 +\else \if\member d%%%k%%%f% + \Put@Line(768,131)(-3,-1){170}% % 10 to 3 +\fi\fi\fi\fi\fi\fi\fi}% +% % +\@forsemicol\member:=#2\do{% +\ifx\member\empty\else +\expandafter\@m@mb@r\member;\relax% +\expandafter\threech@r\@membera{}{}% +\ifx\@memberb\@yl\else +\ifcase\@tmpa%0 omit + \or\setBScolor{\@chairia}% subst. on 1 + \or\setBScolor{\@chairib}% subst. on 2 + \or\setBScolor{\@chairic}% subst. on 3 + \or\setBScolor{\@chairid}% subst. on 4 + \or\setBScolor{\@chairie}% subst. on 5 + \or\setBScolor{\@chairif}% subst. on 6 +\fi %end of ifcase +\fi\fi% +}\end{ShiftPicEnvB}}% %end of \pyranoseChairii macro +% \end{macrocode} +% \end{macro} +% +% \changes{v1.00}{2009/6/15}{Creating \cs{cholestanealfa} etc.} +% +% \Finale +% +\endinput diff --git a/Master/texmf-dist/source/latex/xymtex/base/steroid.ins b/Master/texmf-dist/source/latex/xymtex/base/steroid.ins new file mode 100644 index 00000000000..7d76f014b60 --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/steroid.ins @@ -0,0 +1,47 @@ +\def\batchfile{steroid.ins} +\input docstrip.tex +\preamble + +This is a generated file. + +Copyright 2009, 2010 by Shinsaku Fujita +all rights reserved. +This style file is created for drawing chemical structural formulas +This style file is to be contained in the ``xymtex'' directory which +is an input directory for TeX. + +This file is part of the XyMTeX system. +======================================= +Old Versions: +Version 1.00 for XyMTeX version 4.04 Released on June 15, 2009 + +The Present Version: +Version 5.00 Released on October 01, 2010 + +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 steroid.dtx and steroid.ins +and the derived file steroid.sty. + +======================================= + +\endpreamble + +\keepsilent + +\generateFile{steroid.drv}{t}{% + \from{steroid.dtx}{driver}} + +\generateFile{steroid.sty}{t}{% + \from{steroid.dtx}{steroid}} + +\endinput diff --git a/Master/texmf-dist/source/latex/xymtex/base/xymtex.dtx b/Master/texmf-dist/source/latex/xymtex/base/xymtex.dtx new file mode 100644 index 00000000000..a38ccd0a2af --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/xymtex.dtx @@ -0,0 +1,308 @@ +% \iffalse +% +% xymtex.dtx +% +% Copyright (C) 1993-2004,2005,2009,2010,2011,2013 by Shinsaku Fujita All rights reserved. +% +% This file is part of the ChemSci system +% ======================================== +% +% This style file is created for submitting a manuscript to +% scientific journals. This style file is to be contained in the +% ``xymtex'' directory which is an input directory for TeX. +% +% 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 xymtex.dtx and xymtex.ins +% and the derived files: xymtex.sty, xymtexps.sty and xymtexpdf.sty. +% +%======================================= +% +% This file is a successor to: +% +% ********************************************************************* +% * Version 1.00 Released December 1, 1993 by Shinsaku Fujita % +% * Version 1.00a Released May 22, 1996 by Shinsaku Fujita % +% * Version 1.02 Released October 31, 1998 by Shinsaku Fujita % +% * Version 2.00 Released December 25, 1998 by Shinsaku Fujita % +% ********************************************************************* +% xymtex.sty +% +% Copyright (C) 1993, 1966, 1998, 2001,2004 by Shinsaku Fujita, all rights reserved. +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 1.00} +% \typeout{ -- Released December 1, 1993 by Shinsaku Fujita} +% \typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 1.00a} +% \typeout{ -- Released May 22, 1996 by Shinsaku Fujita} +% \typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 1.02} +% \typeout{ -- Released October 31, 1998 by Shinsaku Fujita} +% \typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 2.00} +% \typeout{ -- Released December 25, 1998 by Shinsaku Fujita} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{xymtex.sty} +% \def\versi@ndate{May 22, 1996} +% \def\versi@nno{ver1.00a} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{xymtex.sty} +% \def\versi@ndate{October 31, 1998} +% \def\versi@nno{ver1.02} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{xymtex.sty} +% \def\versi@ndate{December 25, 1998} +% \def\versi@nno{ver2.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{xymtex.sty} +% \def\versi@ndate{November 17, 2004} +% \def\versi@nno{ver4.01b} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \def\j@urnalname{xymtex.sty} +% \def\versi@ndate{December 25, 2004} +% \def\versi@nno{ver4.02} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% %<xymtex>\def\j@urnalname{xymtex} \def\journalID{xymtex} +% %<xymtexps>\def\j@urnalname{xymtexps} \def\journalID{xymtexps} +% \def\versi@ndate{July 20, 2005} +% \def\versi@nno{ver4.02} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% %<xymtex>\def\j@urnalname{xymtex} \def\journalID{xymtex} +% %<xymtexps>\def\j@urnalname{xymtexps} \def\journalID{xymtexps} +% \def\versi@ndate{June 15, 2009} +% \def\versi@nno{ver4.04} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% %<xymtex>\def\j@urnalname{xymtex} \def\journalID{xymtex} +% %<xymtexps>\def\j@urnalname{xymtexps} \def\journalID{xymtexps} +% \def\versi@ndate{November 25, 2009} +% \def\versi@nno{ver4.05} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% %<xymtex>\def\j@urnalname{xymtex} \def\journalID{xymtex} +% %<xymtexps>\def\j@urnalname{xymtexps} \def\journalID{xymtexps} +% \def\versi@ndate{December 01, 2009} +% \def\versi@nno{ver4.06} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% %<xymtex>\def\j@urnalname{xymtex} \def\journalID{xymtex} +% %<xymtexps>\def\j@urnalname{xymtexps} \def\journalID{xymtexps} +% %<xymtexpdf>\def\j@urnalname{xymtexpdf} \def\journalID{xymtexpdf} +% \def\versi@ndate{October 01, 2010} +% \def\versi@nno{ver5.00} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% %<xymtex>\def\j@urnalname{xymtex} \def\journalID{xymtex} +% %<xymtexps>\def\j@urnalname{xymtexps} \def\journalID{xymtexps} +% %<xymtexpdf>\def\j@urnalname{xymtexpdf} \def\journalID{xymtexpdf} +% \def\versi@ndate{February 24, 2011} +% \def\versi@nno{ver5.01beta} +% \def\copyrighth@lder{SF} % Shinsaku Fujita +% \typeout{Package `\j@urnalname' (\versi@nno) <\versi@ndate>\space +% [\copyrighth@lder]} +% %<xymtex> \typeout{xymtex.sty ver5.01beta (for LaTeX2e) 2011/02/24[SF]} +% %<xymtexps> \typeout{xymtexps.sty ver5.01beta (for LaTeX2e) 2011/02/24[SF]} +% %<xymtexpdf> \typeout{xymtexpdf.sty ver5.01beta (for LaTeX2e) 2011/02/24[SF]} +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% This file is a part of the macro package ``XyMTeX'' which has been +% designed for typesetting chemical structural formulas. +% +% For the review of XyMTeX, see +% (1) Shinsaku Fujita, ``Typesetting structural formulas with the text +% formatter TeX/LaTeX'', Computers and Chemistry, 18, 109--116 (1994). +% 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]. +% (3) Shinskau Fujita, ``XyMTeX for drwoing chemical structural +% formulas'', TUGboat, 16(1), 80--88 (1995). +% +% Please report any bugs, comments, suggestions, etc. to: +% Old old address: +% Shinsaku Fujita, +% Ashigara Research Laboratories, Fuji Photo Film Co., Ltd., +% Minami-Ashigara, Kanagawa-ken, 250-01, Japan. +% +% Old address: +% Shinsaku Fujita, +% Department of Chemistry and Materials Technology, +% Kyoto Institute of Technology, \\ +% Matsugasaki, Sakyoku, Kyoto, 606 Japan +% +% New address: +% Shinsaku Fujita, +% Shonan Institute of Chemoinformatics and Mathematical Chemistry +% Kanagawa, 258-0019 Japan +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \fi +% \CheckSum{70} +%% \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 \~} +% +% \iffalse +%% +%% `xymtex.dtx' ver5.01 (for LaTeX2e) 2013/03/10 +%% by Shinsaku Fujita +%% +% +% \section{Initial declaration} +% +% \changes{v4.01b}{2004/11/17}{Generaging xymtex.sty and xymtexps} +% \changes{v4.02}{2004/12/20}{Wedged bonds for xymtx-ps.sty} +% \changes{v4.03}{2005/07/20}{Wave bonds for xymtx-ps.sty} +% \changes{v4.04}{2009/06/15}{steoroid.sty added for drawing steroids} +% \changes{v4.05}{2009/11/25}{lewisstruc.sty added for drawing Lewis structures} +% \changes{v4.06}{2009/12/01}{harpoons added in the chmst-ps package} +% \changes{v5.00}{2010/10/01}{PDF mode, bond coloring} +% \changes{v5.01beta}{2011/02/24}{Added the chemist package and the xcolor package} +% \changes{v5.01}{2013/03/10}{Bug fix} +% +% \begin{macrocode} +% \NeedsTeXFormat{LaTeX2e} +% \end{macrocode} +% +% \begin{macrocode} +% <xymtex>\ProvidesFile{xymtex.sty} +% <xymtexps>\ProvidesFile{xymtexps.sty} +%<driver>\ProvidesFile{xymtex.drv} +%<driver> [2013/03/10 v5.01 +% <xymtex> ChemSci package ] +% <xymtexps> ChemSci package ] +% <xymtexpdf> ChemSci package ] +%<driver> ChemSci package driver (English) +% \end{macrocode} +% +%\setcounter{StandardModuleDepth}{1} +% +% \section{Driver file for this dtx file} +% +% \begin{macrocode} +%<*driver> +] +\documentclass{ltxdoc} +\GetFileInfo{xymtex.drv} +\title{XyMTeX Packages for Chemists \space\fileversion} +\author{Shinsaku Fujita \\ +Shonan Institute of Chemoinformatics and Mathematical Chemistry \\ +Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun, Kanagawa, +258-0019 Japan +%(old address) +%Department of Chemistry and Materials Technology \\ +%Kyoto Institute of Technology \\ +%Matsugasaki, Sakyoku, Kyoto, 606-8585 Japan +} +\date{\filedate} +\begin{document} +\maketitle +\tableofcontents +\DocInput{xymtex.dtx} +\end{document} +%</driver> +% \end{macrocode} +% +% \fi +% +% \StopEventually{} +% +% \section{{\sc docstrip} options} +% +% This dtx file provides the {\sffamily xymtex} package +% by docstrip processing. +% +% \DeleteShortVerb{\|} +% \begin{center} +% \begin{tabular}{|l|l|} +% \hline +% argument & package name \\ +% \hline +% xymtex & xymtex.sty \\ +% xymtexps & xymtexps.sty \\ +% xymtexpdf & xymtexpdf.sty \\ +% driver & a documentation driver file \\ +% \hline +% \end{tabular} +% \end{center} +% \MakeShortVerb{\|} +% +% \section{Version information} +% +% The old process for typing out version information remains active. +% \begin{macrocode} +%<xymtex>\def\j@urnalname{xymtex} \def\journalID{xymtex} +%<xymtexps>\def\j@urnalname{xymtexps} \def\journalID{xymtexps} +%<xymtexpdf>\def\j@urnalname{xymtexpdf} \def\journalID{xymtexpdf} +\def\versi@ndate{March 10, 2013} +\def\versi@nno{ver5.01} +\def\copyrighth@lder{SF} % Shinsaku Fujita +\typeout{Package `\j@urnalname' (\versi@nno) <\versi@ndate>\space +[\copyrighth@lder]} +%<xymtex> \typeout{xymtex.sty ver5.01 (for LaTeX2e) 2013/03/10[SF]} +%<xymtexps> \typeout{xymtexps.sty ver5.01 (for LaTeX2e) 2013/03/10[SF]} +%<xymtexpdf> \typeout{xymtexpdf.sty ver5.01 (for LaTeX2e) 2013/03/10[SF]} +% \end{macrocode} +% +% \begin{macrocode} +%<*xymtexpdf> +\DeclareOption{pdf}{\def\pgfsysdriver{pgfsys-common-pdf.def}} +\DeclareOption{dvipdfm}{\def\pgfsysdriver{pgfsys-dvipdfm.def}} +\DeclareOption{pdftex}{\def\pgfsysdriver{pgfsys-pdftex.def}} +\DeclareOption{ps}{\def\pgfsysdriver{pgfsys-common-postscript.def}} +\DeclareOption{dvips}{\def\pgfsysdriver{pgfsys-dvips.def}} +\ExecuteOptions{dvipdfm} +\InputIfFileExists{pict2e.cfg}{}{} +\ProcessOptions\relax +%</xymtexpdf> +\usepackage{epic} +\usepackage{chemstr} +\usepackage{carom} +\usepackage{hetarom} +\usepackage{hetaromh} +\usepackage{lowcycle} +\usepackage{ccycle} +\usepackage{hcycle} +\usepackage{aliphat} +\usepackage{locant} +\usepackage{polymers} +\usepackage{methylen} +\usepackage{fusering} +\usepackage{sizeredc} +\usepackage{steroid} +\usepackage{lewisstruc} +\usepackage{bondcolor} +\usepackage{assurelatexmode} +%<xymtexps>\usepackage{xymtx-ps} +%<xymtexpdf>\usepackage{xymtx-pdf} +%<xymtex>\usepackage{chemist} +%<xymtex>\usepackage{xcolor} +%<xymtexps>\usepackage{chmst-ps} +%<xymtexpdf>\usepackage{chmst-pdf} +% \end{macrocode} +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/xymtex/base/xymtex.ins b/Master/texmf-dist/source/latex/xymtex/base/xymtex.ins new file mode 100644 index 00000000000..a679b874673 --- /dev/null +++ b/Master/texmf-dist/source/latex/xymtex/base/xymtex.ins @@ -0,0 +1,72 @@ +\def\batchfile{xymtex.ins} +\input docstrip.tex +\preamble + +This is a generated file. + +Copyright 2004, 2005, 2009, 2010, 2011, 2013 by Shinsaku Fujita + +This file is part of the ChemSci system. +======================================= + +Old versions (.dtx and .ins files were not used): +Version 1.00 Released December 1, 1993 by Shinsaku Fujita +Version 1.00a Released May 22, 1996 by Shinsaku Fujita +Version 1.02 Released October 31, 1998 by Shinsaku Fujita +Version 2.00 Released December 25, 1998 by Shinsaku Fujita + +Old versions (.dtx and .ins files were used): +Version 4.01b Released Novermber 17, 2004 by Shinsaku Fujita +Version 4.02 Released December 20, 2004 by Shinsaku Fujita +Version 4.03 Released July 20, 2005 by Shinsaku Fujita +Version 4.04 Released June 15, 2009 by Shinsaku Fujita +Version 4.05 Released November 25, 2009 by Shinsaku Fujita +Version 4.06 Released December 01, 2009 by Shinsaku Fujita +Version 5.00 Released October 01, 2010 by Shinsaku Fujita +Version 5.01beta Released February 24, 2011 by Shinsaku Fujita + +Latest version (with .tex and .ins files) +Version 5.01 Released March 03, 2013 by Shinsaku Fujita + +Copyright (C) 1993--2013 by Shinsaku Fujita, all rights reserved. +This style file is created for submitting a manuscript to +scientific journals. This style file is to be contained in the +``chemist'' or ``xymtex'' directory which is an input directory for TeX. + +For using this file, see + Shinsaku Fujita, ``LaTeX for Chemists and Biochemists'' + Tokyo Kagaku Dojin, Tokyo (1993), Chapter 16. + +For PostScript output, use chmst-ps.sty together with chemist.sty. + +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 xymtex.dtx and xymtex.ins +and the derived files: xymtex.sty, xymtexps.sty and xymtexpdf.sty. + +\endpreamble + +\keepsilent + +\generateFile{xymtex.drv}{t}{% + \from{xymtex.dtx}{driver}} + +\generateFile{xymtex.sty}{t}{% + \from{xymtex.dtx}{xymtex}} + +\generateFile{xymtexps.sty}{t}{% + \from{xymtex.dtx}{xymtexps}} + +\generateFile{xymtexpdf.sty}{t}{% + \from{xymtex.dtx}{xymtexpdf}} + +\endinput |