diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/xymtex/base/methylen.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/xymtex/base/methylen.dtx | 6419 |
1 files changed, 6419 insertions, 0 deletions
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 |