% \iffalse meta-comment %% File: aliphat.dtx % % Copyright 1993,1996,1998 by Shinsaku Fujita % % This file is part of XyMTeX system. % ------------------------------------- % % This file is a successor to: % % aliphat.sty % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 1.00} % \typeout{ -- Released December 1, 1993 by Shinsaku Fujita} % Copyright (C) 1993 by Shinsaku Fujita, all rights reserved. % % This file is a part of the macro package ``XyMTeX'' which has been % designed for typesetting chemical structural formulas. % % This file is to be contained in the ``xymtex'' directory which is % an input directory for TeX. It is a LaTeX optional style file and % should be used only within LaTeX, because several macros of the file % are based on LaTeX commands. % % For the review of XyMTeX, see % (1) Shinsaku Fujita, ``Typesetting structural formulas with the text % formatter TeX/LaTeX'', Computers and Chemistry, in press. % The following book deals with an application of TeX/LaTeX to % preparation of manuscripts of chemical fields: % (2) Shinsaku Fujita, ``LaTeX for Chemists and Biochemists'' % Tokyo Kagaku Dozin, Tokyo (1993) [in Japanese]. % % Copying of this file is authorized only if either % (1) you make absolutely no changes to your copy, including name and % directory name; or % (2) if you do make changes, % (a) you name it something other than the names included in the % ``xymtex'' directory and % (b) you are requested to leave this notice intact. % This restriction ensures that all standard styles are identical. % % Please report any bugs, comments, suggestions, etc. to: % Shinsaku Fujita, % Ashigara Research Laboratories, Fuji Photo Film Co., Ltd., % Minami-Ashigara, Kanagawa-ken, 250-01, Japan. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \def\j@urnalname{aliphat} % \def\versi@ndate{December 01, 1993} % \def\versi@nno{ver1.00} % \def\copyrighth@lder{SF}% Shinsaku Fujita % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \def\j@urnalname{aliphat} % \def\versi@ndate{August 16, 1996} % \def\versi@nno{ver1.01} % \def\copyrighth@lder{SF} % Shinsaku Fujita % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \def\j@urnalname{aliphat} % \def\versi@ndate{October 31, 1998} % \def\versi@nno{ver1.02} % \def\copyrighth@lder{SF} % Shinsaku Fujita % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % \fi % % \CheckSum{3929} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z %% Digits \0\1\2\3\4\5\6\7\8\9 %% Exclamation \! Double quote \" Hash (number) \# %% Dollar \$ Percent \% Ampersand \& %% Acute accent \' Left paren \( Right paren \) %% Asterisk \* Plus \+ Comma \, %% Minus \- Point \. Solidus \/ %% Colon \: Semicolon \; Less than \< %% Equals \= Greater than \> Question mark \? %% Commercial at \@ Left bracket \[ Backslash \\ %% Right bracket \] Circumflex \^ Underscore \_ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} % % \setcounter{StandardModuleDepth}{1} % % \StopEventually{} % \MakeShortVerb{\|} % % \iffalse % \changes{v1.01}{1996/06/26}{first edition for LaTeX2e} % \changes{v1.02}{1998/10/31}{revised edition for LaTeX2e} % \changes{v2.00}{1998/12/25}{enhanced edition for LaTeX2e} % \fi % % \iffalse %<*driver> \NeedsTeXFormat{pLaTeX2e} % \fi \ProvidesFile{aliphat.dtx}[1998/12/25 v2.00 XyMTeX{} package file] % \iffalse \documentclass{ltxdoc} \GetFileInfo{aliphat.dtx} % % %%XyMTeX Logo: Definition 2%%% \def\UPSILON{\char'7} \def\XyM{X\kern-.30em\smash{% \raise.50ex\hbox{\UPSILON}}\kern-.30em{M}} \def\XyMTeX{\XyM\kern-.1em\TeX} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \title{Aliphatic compounds by {\sffamily aliphat.sty} (\fileversion) of \XyMTeX{}} \author{Shinsaku Fujita \\ Department of Chemistry and Materials Technology, \\ Kyoto Institute of Technology, \\ Matsugasaki, Sakyoku, Kyoto, 606 Japan % % (old address) % % Ashigara Research Laboratories, % % Fuji Photo Film Co., Ltd., \\ % % Minami-Ashigara, Kanagawa, 250-01 Japan } \date{\filedate} % \begin{document} \maketitle \DocInput{aliphat.dtx} \end{document} % % \fi % % \section{Introduction}\label{aliphat:intro} % % \subsection{Options for {\sffamily docstrip}} % % \DeleteShortVerb{\|} % \begin{center} % \begin{tabular}{|l|l|} % \hline % \emph{option} & \emph{function}\\ \hline % aliphat & aliphat.sty \\ % driver & driver for this dtx file \\ % \hline % \end{tabular} % \end{center} % \MakeShortVerb{\|} % % \subsection{Version Information} % % \begin{macrocode} %<*aliphat> \typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 2.00} \typeout{ -- Released December 25, 1998 by Shinsaku Fujita} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\j@urnalname{aliphat} \def\versi@ndate{December 25, 1998} \def\versi@nno{ver2.00} \def\copyrighth@lder{SF} % Shinsaku Fujita % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \typeout{XyMTeX Macro File `\j@urnalname' (\versi@nno) <\versi@ndate>% \space[\copyrighth@lder]} % \end{macrocode} % % \section{List of commands for aliphat.sty} % % \begin{verbatim} % ********************************* % * aliphat.sty: list of commands * % ********************************* % % % % \Northbond % \Eastbond % \Southbond % \Westbond % \NEBond % \NEbond % \SEBond % \SEbond % \NWBond % \NWbond % \SWBond % \SWbond % % \NEBOND % \NWBOND % \SEBOND % \SWBOND % % % \ylrtrigonalposition % \ylRtrigonalposition % \ylltrigonalposition % \ylLtrigonalposition % \ylutrigonalposition % \ylUtrigonalposition % \yldtrigonalposition % \ylDtrigonalposition % % \yltethedralposition % \ylsquareposition % % \ylethylenepositiona % \ylethylenepositionb % \ylethylenevpositiona % \ylethylenevpositionb % % % % \tetrahedral \@tetrahedral % \square \@square % % % % \rtrigonal \@rtrigonal % \Rtrigonal \@Rtrigonal % \ltrigonal \@ltrigonal % \Ltrigonal \@Ltrigonal % \utrigonal \@utrigonal % \Utrigonal \@Utrigonal % \dtrigonal \@dtrigonal % \Dtrigonal \@Dtrigonal % % % % \ethylene \@ethylene % \Ethylene \@Ethylene % \ethylenev \@ethylenev % \Ethylenev \@Ethylenev % % % % \tetrastereo \@tetrastereo % \dtetrastereo \@dtetrastereo % \ethanestereo \@ethanestereo % \end{verbatim} % % \section{Input of basic macros} % % To assure the compatibility to \LaTeX{}2.09 (the native mode), % the commands added by \LaTeXe{} have not been used in the resulting sty % files ({\sf aliphat.sty} for the present case). Hence, the combination % of |\input| and |\@ifundefined| is used to crossload sty % files ({\sf chemstr.sty} for the present case) in place of the % |\RequirePackage| command of \LaTeXe{}. % % \begin{macrocode} % ************************* % * input of basic macros * % ************************* \@ifundefined{setsixringv}{\input chemstr.sty\relax}{} \unitlength=0.1pt % \end{macrocode} % % \section{Macros for bond-setting} % % Single, double and triple bonds of aliphatic compounds are represented % by horizontal, vertical or sloped lines, % which can be drawn by such commands as |\Eastbond|, % |\Northbond| and |\SEbond|. % \changes{v1.02}{1998/10/20}{Adding \cs{NEBOND}, \cs{SEBOND}, \cs{NWBOND}, % and \cs{SWBOND}} % % \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} % % \begin{macro}{\Northbond} % \begin{macrocode} % ******************************** % * Conventions for bond-setting * % ******************************** \def\Northbond{% \yl@xdiff=40 \yl@ydiff=-15 \begin{picture}(100,200)(0,0) \if\@tmpb D\relax% \multiput(-13,52)(26,0){2}{\line(0,1){100}}% double bond up \else\if\@tmpb T\relax% \multiput(-20,52)(20,0){3}{\line(0,1){100}}% triple bond up \else\if\@tmpb A%(A) alpha {\thicklines\put(-8,52){\line(0,1){100}}}% single bond (alpha) \else\if\@tmpb B%(B) beta \@ifundefined{dottedline}{\put(0,52){\line(0,1){100}}}% {{\thicklines \dottedline{20}(0,52)(0,152)}}% \else\if\@tmpb S% \put(0,52){\line(0,1){100}}% \else \put(0,52){\line(0,1){100}}% \fi\fi\fi\fi\fi% \putlratom{-40}{167}{\@memberb}%==1 upper substituent \end{picture}}% % \end{macrocode} % \end{macro} % % \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} % % \begin{macro}{\Eastbond} % \begin{macrocode} \def\Eastbond{% \yl@xdiff=-10 \yl@ydiff=33 \begin{picture}(200,200)(0,0) \if\@tmpb D\relax% \multiput(50,-13)(0,26){2}{\line(1,0){140}}% double bond right \else\if\@tmpb T\relax% \multiput(50,-20)(0,20){3}{\line(1,0){140}}% double bond right \else\if\@tmpb A%(A) alpha {\thicklines\put(50,0){\line(1,0){140}}}% single bond (alpha) \else\if\@tmpb B%(B) beta \@ifundefined{dottedline}{\put(50,0){\line(1,0){140}}}% {{\thicklines \dottedline{20}(50,0)(203,0)}}% \else\if\@tmpb S% \put(50,0){\line(1,0){140}}% \else \put(50,0){\line(1,0){140}}% \fi\fi\fi\fi\fi% \putratom{200}{-33}{\@memberb}%==2 right substituent \end{picture}}% % \end{macrocode} % \end{macro} % % \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} % % \begin{macro}{\Southbond} % \begin{macrocode} \def\Southbond{% \yl@xdiff=40 \yl@ydiff=95 \begin{picture}(100,300)(0,0) \if\@tmpb D\relax% \multiput(-13,-48)(26,0){2}{\line(0,-1){100}}% double bond down \else\if\@tmpb T\relax% \multiput(-20,-48)(20,0){3}{\line(0,-1){100}}% double bond down \else\if\@tmpb A%(A) alpha {\thicklines\put(-8,-48){\line(0,-1){100}}}% single bond (alpha) \else\if\@tmpb B%(B) beta \@ifundefined{dottedline}{\put(0,-48){\line(0,-1){100}}}% {{\thicklines \dottedline{20}(0,-48)(0,-148)}}% \else\if\@tmpb S% \put(0,-48){\line(0,-1){100}}% \else \put(0,-48){\line(0,-1){100}}% \fi\fi\fi\fi\fi% \putlratom{-40}{-243}{\@memberb}%==3 down substituent \end{picture}}% % \end{macrocode} % \end{macro} % % \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} % % \begin{macro}{\Westbond} % \begin{macrocode} \def\Westbond{% \yl@xdiff=10 \yl@ydiff=33 \begin{picture}(100,300)(0,0) \if\@tmpb D\relax% \multiput(-190,-13)(0,26){2}{\line(1,0){140}}% double bond left \else\if\@tmpb T\relax% \multiput(-190,-20)(0,20){3}{\line(1,0){140}}% double bond left \else\if\@tmpb A%(A) alpha {\thicklines\put(-190,0){\line(1,0){140}}}% single bond (alpha) \else\if\@tmpb B%(B) beta \@ifundefined{dottedline}{\put(-190,0){\line(1,0){140}}}% {{\thicklines \dottedline{20}(-190,0)(-40,0)}}% \else\if\@tmpb S% \put(-190,0){\line(1,0){140}}% \else \put(-190,0){\line(1,0){140}}% \fi\fi\fi\fi\fi% \putlatom{-200}{-33}{\@memberb}%==4 left substituent \end{picture}}% % \end{macrocode} % \end{macro} % % \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} % % \begin{macro}{\NEBond} % \begin{macrocode} \def\NEBond{%degree 120 \yl@xdiff=-9 \yl@ydiff=13 \begin{picture}(100,300)(0,0) \if\@tmpb D\relax% \put(33,48){\line(5,3){121}}% \put(47,26){\line(5,3){121}}%northeast double bond \else\if\@tmpb T\relax% \put(31,52){\line(5,3){121}}% \put(40,37){\line(5,3){121}}% \put(49,22){\line(5,3){121}}%northeast triple bond \else\if\@tmpb A%(A) alpha {\thicklines\put(40,47){\line(5,3){121}}}% single bond (alpha) \else\if\@tmpb B%(B) beta \@ifundefined{dottedline}{\put(40,47){\line(5,3){121}}}% {{\thicklines \dottedline{20}(40,47)(161,120)}}% \else\if\@tmpb S% \put(40,47){\line(5,3){121}}% \else \put(40,47){\line(5,3){121}}% \fi\fi\fi\fi\fi% \putratom{170}{107}{\@memberb}%==2 (northeast substituent) \end{picture}}% % \end{macrocode} % \end{macro} % % \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} % % \begin{macro}{\NEbond} % \begin{macrocode} \def\NEbond{%degree 90 \yl@xdiff=-5 \yl@ydiff=10 \begin{picture}(100,300)(0,0) \if\@tmpb D\relax% \put(31,46){\line(1,1){100}}% \put(49,28){\line(1,1){100}}%northeast double bond \else\if\@tmpb T\relax% \put(27,50){\line(1,1){100}}% \put(40,37){\line(1,1){100}}% \put(53,24){\line(1,1){100}}%northeast triple bond \else\if\@tmpb A%(A) alpha {\thicklines\put(40,47){\line(1,1){100}}}% single bond (alpha) \else\if\@tmpb B%(B) beta \@ifundefined{dottedline}{\put(40,47){\line(1,1){100}}}% {{\thicklines \dottedline{20}(40,47)(140,147)}}% \else\if\@tmpb S% \put(40,47){\line(1,1){100}}% \else \put(40,47){\line(1,1){100}}% \fi\fi\fi\fi\fi% \putratom{145}{137}{\@memberb}%==2 (northeast substituent) \end{picture}}% % \end{macrocode} % \end{macro} % % \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} % % \begin{macro}{\SEBond} % \begin{macrocode} \def\SEBond{%degree 120 \yl@xdiff=-9 \yl@ydiff=67 \begin{picture}(100,300)(0,0) \if\@tmpb D\relax% \put(33,-48){\line(5,-3){121}}% \put(47,-26){\line(5,-3){121}}%southeast double bond \else\if\@tmpb T\relax% \put(31,-52){\line(5,-3){121}}% \put(40,-37){\line(5,-3){121}}% \put(49,-22){\line(5,-3){121}}%southeast triple bond \else\if\@tmpb A%(A) alpha {\thicklines\put(40,-47){\line(5,-3){121}}}% single bond (alpha) \else\if\@tmpb B%(B) beta \@ifundefined{dottedline}{\put(40,-47){\line(5,-3){121}}}% {{\thicklines \dottedline{20}(40,-47)(161,-120)}}% \else\if\@tmpb S% \put(40,-47){\line(5,-3){121}}% \else \put(40,-47){\line(5,-3){121}}% \fi\fi\fi\fi\fi% \putratom{170}{-187}{\@memberb}%==2 (southeast substituent) \end{picture}}% % \end{macrocode} % \end{macro} % % \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} % % \begin{macro}{\SEbond} % \begin{macrocode} \def\SEbond{%degree 90 \yl@xdiff=-5 \yl@ydiff=56 \begin{picture}(100,300)(0,0) \if\@tmpb D\relax% \put(31,-46){\line(1,-1){100}}% \put(49,-28){\line(1,-1){100}}%southeast double bond \else\if\@tmpb T\relax% \put(27,-50){\line(1,-1){100}}% \put(40,-37){\line(1,-1){100}}% \put(53,-24){\line(1,-1){100}}%southeast triple bond \else\if\@tmpb A%(A) alpha {\thicklines\put(53,-47){\line(1,-1){100}}}% single bond (alpha) \else\if\@tmpb B%(B) beta \@ifundefined{dottedline}{\put(40,-47){\line(1,-1){100}}}% {{\thicklines \dottedline{20}(40,-47)(140,-147)}}% \else\if\@tmpb S% \put(40,-47){\line(1,-1){100}}% \else \put(40,-47){\line(1,-1){100}}% \fi\fi\fi\fi\fi% \putratom{145}{-203}{\@memberb}%==3 (southeast substituent) \end{picture}}% % \end{macrocode} % \end{macro} % % \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} % % \begin{macro}{\NWBbond} % \begin{macrocode} \def\NWBond{% \begin{picture}(100,300)(0,0) \yl@xdiff=9 \yl@ydiff=13 \if\@tmpb D\relax% \put(-59,48){\line(-5,3){121}}% \put(-73,26){\line(-5,3){121}}%northwest double bond \else\if\@tmpb T\relax% \put(-57,52){\line(-5,3){121}}% \put(-66,37){\line(-5,3){121}}% \put(-75,22){\line(-5,3){121}}%northwest triple bond \else\if\@tmpb A%(A) alpha {\thicklines\put(-66,47){\line(-5,3){121}}}% single bond (alpha) \else\if\@tmpb B%(B) beta \@ifundefined{dottedline}{\put(-66,47){\line(-5,3){121}}}% {{\thicklines \dottedline{20}(-66,47)(-187,120)}}% \else\if\@tmpb S% \put(-66,47){\line(-5,3){121}}% \else \put(-66,47){\line(-5,3){121}}% \fi\fi\fi\fi\fi% \putlatom{-196}{107}{\@memberb}%==2 (northwest substituent) \end{picture}}% % \end{macrocode} % \end{macro} % % \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} % % \begin{macro}{\NWbond} % \begin{macrocode} \def\NWbond{% \begin{picture}(100,300)(0,0) \yl@xdiff=13 \yl@ydiff=10 \if\@tmpb D\relax% \put(-41,46){\line(-1,1){100}}% \put(-59,28){\line(-1,1){100}}%northwest double bond \else\if\@tmpb T\relax% \put(-37,50){\line(-1,1){100}}% \put(-50,37){\line(-1,1){100}}% \put(-63,24){\line(-1,1){100}}%northwest triple bond \else\if\@tmpb A%(A) alpha {\thicklines\put(-50,47){\line(-1,1){100}}}% single bond (alpha) \else\if\@tmpb B%(B) beta \@ifundefined{dottedline}{\put(-50,47){\line(-1,1){100}}}% {{\thicklines \dottedline{20}(-50,47)(-137,147)}}% \else\if\@tmpb S% \put(-50,47){\line(-1,1){100}}% \else \put(-50,47){\line(-1,1){100}}% \fi\fi\fi\fi\fi% \putlatom{-163}{137}{\@memberb}%==2 (northwest substituent) \end{picture}}% % \end{macrocode} % \end{macro} % % \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} % % \begin{macro}{\SWBond} % \begin{macrocode} \def\SWBond{% \yl@xdiff=9 \yl@ydiff=67 \begin{picture}(100,300)(0,0) \if\@tmpb D\relax% \put(-59,-48){\line(-5,-3){121}}% \put(-73,-26){\line(-5,-3){121}}%southwest double bond \else\if\@tmpb T\relax% \put(-57,-52){\line(-5,-3){121}}% \put(-66,-37){\line(-5,-3){121}}% \put(-75,-22){\line(-5,-3){121}}%southwest triple bond \else\if\@tmpb A%(A) alpha {\thicklines\put(-66,-47){\line(-5,-3){121}}}% single bond (alpha) \else\if\@tmpb B%(B) beta \@ifundefined{dottedline}{\put(-66,-47){\line(-5,-3){121}}}% {{\thicklines \dottedline{20}(-66,-47)(-187,-120)}}% \else\if\@tmpb S% \put(-66,-47){\line(-5,-3){121}}% \else \put(-66,-47){\line(-5,-3){121}}% \fi\fi\fi\fi\fi% \putlatom{-196}{-187}{\@memberb}%==2 (southwest substituent) \end{picture}}% % \end{macrocode} % \end{macro} % % \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} % % \begin{macro}{\SWbond} % \begin{macrocode} \def\SWbond{% \yl@xdiff=13 \yl@ydiff=56 \begin{picture}(100,300)(0,0) \if\@tmpb D\relax% \put(-41,-46){\line(-1,-1){100}}% \put(-59,-28){\line(-1,-1){100}}%southwest double bond \else\if\@tmpb T\relax% \put(-37,-50){\line(-1,-1){100}}% \put(-50,-37){\line(-1,-1){100}}% \put(-63,-24){\line(-1,-1){100}}%southwest triple bond \else\if\@tmpb A%(A) alpha {\thicklines\put(-50,-47){\line(-1,-1){100}}}% single bond (alpha) \else\if\@tmpb B%(B) beta \@ifundefined{dottedline}{\put(-50,-47){\line(-1,-1){100}}}% {{\thicklines \dottedline{20}(-50,-47)(-137,-147)}}% \else\if\@tmpb S% \put(-50,-47){\line(-1,-1){100}}% \else \put(-50,-47){\line(-1,-1){100}}% \fi\fi\fi\fi\fi% \putlatom{-163}{-203}{\@memberb}%==3 (southwest substituent) \end{picture}}% % \end{macrocode} % \end{macro} % % \changes{v1.02}{1998/10/20}{New command: \cs{NEBOND}} % \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} % % \begin{macro}{\NEBOND} % \begin{macrocode} \def\NEBOND{%degree 120 \yl@xdiff=-1 \yl@ydiff=-10 \begin{picture}(100,300)(0,0) \if\@tmpb D\relax% \put(48,33){\line(3,5){72}}% \put(26,47){\line(3,5){72}}%northeast double bond \else\if\@tmpb T\relax% \put(52,31){\line(3,5){72}}% \put(37,40){\line(3,5){72}}% \put(22,49){\line(3,5){72}}%northeast triple bond \else\if\@tmpb A%(A) alpha {\thicklines\put(40,47){\line(3,5){72}}}% single bond (alpha) \else\if\@tmpb B%(B) beta \@ifundefined{dottedline}{\put(47,40){\line(3,5){72}}}% {{\thicklines \dottedline{20}(47,40)(120,161)}}% \else\if\@tmpb S% \put(47,40){\line(3,5){72}}% \else \put(47,40){\line(3,5){72}}% \fi\fi\fi\fi\fi% \putratom{120}{170}{\@memberb}%==2 (northeast substituent) \end{picture}}% % \end{macrocode} % \end{macro} % % \changes{v1.02}{1998/10/20}{New command: \cs{SEBOND}} % \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} % % \begin{macro}{\SEBOND} % \begin{macrocode} \def\SEBOND{%degree 120 \yl@xdiff=-1 \yl@ydiff=70 \begin{picture}(100,300)(0,0) \if\@tmpb D\relax% \put(48,-33){\line(3,-5){72}}% \put(26,-47){\line(3,-5){72}}%southeast double bond \else\if\@tmpb T\relax% \put(52,-31){\line(3,-5){72}}% \put(37,-40){\line(3,-5){72}}% \put(22,-49){\line(3,-5){72}}%southeast triple bond \else\if\@tmpb A%(A) alpha {\thicklines\put(47,-40){\line(3,-5){72}}}% single bond (alpha) \else\if\@tmpb B%(B) beta \@ifundefined{dottedline}{\put(47,-40){\line(3,-5){72}}}% {{\thicklines \dottedline{20}(47,-40)(120,-161)}}% \else\if\@tmpb S% \put(47,-40){\line(3,-5){72}}% \else \put(47,-40){\line(3,-5){72}}% \fi\fi\fi\fi\fi% \putratom{120}{-230}{\@memberb}%==2 (southeast substituent) \end{picture}}% % \end{macrocode} % \end{macro} % % \changes{v1.02}{1998/10/20}{New command: \cs{NWBOND}} % \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} % % \begin{macro}{\NWBOND} % \begin{macrocode} \def\NWBOND{% \yl@xdiff=1 \yl@ydiff=-10 \begin{picture}(100,300)(0,0) \if\@tmpb D\relax% \put(-48,33){\line(-3,5){72}}% \put(-26,47){\line(-3,5){72}}%northwest double bond \else\if\@tmpb T\relax% \put(-52,31){\line(-3,5){72}}% \put(-37,40){\line(-3,5){72}}% \put(-22,49){\line(-3,5){72}}%northwest triple bond \else\if\@tmpb A%(A) alpha {\thicklines\put(-40,47){\line(-3,5){72}}}% single bond (alpha) \else\if\@tmpb B%(B) beta \@ifundefined{dottedline}{\put(-47,40){\line(-3,5){72}}}% {{\thicklines \dottedline{20}(-47,40)(-120,161)}}% \else\if\@tmpb S% \put(-47,40){\line(-3,5){72}}% \else \put(-47,40){\line(-3,5){72}}% \fi\fi\fi\fi\fi% \putlatom{-120}{170}{\@memberb}%==2 (northwest substituent) %\yl@xdiff=11 %\yl@ydiff=-14 % \if\@tmpb D\relax% % \put(-48,59){\line(-3,5){72}}% % \put(-26,73){\line(-3,5){72}}%northwest double bond % \else\if\@tmpb T\relax% % \put(-52,57){\line(-3,5){72}}% % \put(-37,66){\line(-3,5){72}}% % \put(-22,75){\line(-3,5){72}}%northwest triple bond % \else\if\@tmpb A%(A) alpha % {\thicklines\put(-47,66){\line(-3,5){72}}}% single bond (alpha) % \else\if\@tmpb B%(B) beta % \@ifundefined{dottedline}{\put(-47,66){\line(-3,5){72}}}% % {{\thicklines \dottedline{20}(-47,66)(-120,187)}}% % \else\if\@tmpb S% % \put(-47,66){\line(-3,5){72}}% % \else \put(-47,66){\line(-3,5){72}}% % \fi\fi\fi\fi\fi% % \putlatom{-130}{200}{\@memberb}%==2 (northwest substituent) %% \putlatom{-120}{170}{\@memberb}%==2 (northwest substituent) \end{picture}}% % \end{macrocode} % \end{macro} % % \changes{v1.02}{1998/10/20}{New command: \cs{SWBOND}} % \changes{v1.02}{1998/10/20}{Adding \cs{yl@xdiff} and \cs{yl@ydiff}} % % \begin{macro}{\SWBOND} % \begin{macrocode} \def\SWBOND{% \yl@xdiff=1 \yl@ydiff=70 \begin{picture}(100,300)(0,0) \if\@tmpb D\relax% \put(-48,-33){\line(-3,-5){72}}% \put(-26,-47){\line(-3,-5){72}}%southwest double bond \else\if\@tmpb T\relax% \put(-52,-31){\line(-3,-5){72}}% \put(-37,-40){\line(-3,-5){72}}% \put(-22,-49){\line(-3,-5){72}}%southwest triple bond \else\if\@tmpb A%(A) alpha {\thicklines\put(-47,-40){\line(-3,-5){72}}}% single bond (alpha) \else\if\@tmpb B%(B) beta \@ifundefined{dottedline}{\put(-47,-40){\line(-3,-5){72}}}% {{\thicklines \dottedline{20}(-47,-40)(-120,-161)}}% \else\if\@tmpb S% \put(-47,-40){\line(-3,-5){72}}% \else \put(-47,-40){\line(-3,-5){72}}% \fi\fi\fi\fi\fi% \putlatom{-120}{-230}{\@memberb}%==2 (southwest substituent) \end{picture}}% % \end{macrocode} % \end{macro} % % \section{Tetrahedral unit} % % The macro |\tetrahedral| typesets a compound of tetravalency. % The following numbering is adopted in this macro. % % \begin{verbatim} % ******************** % * tetrahedral unit * % ******************** % % 1 % % | % 2 -- 0 -- 4 0 <== the original point % | % % 3 % \end{verbatim} % % This macro has an argument |SUBSLIST| as well as an optional % argument |AUXLIST|. % % \begin{verbatim} % \tetrahedral[AUXLIST]{SUBSLIST} % \end{verbatim} % % The arugument |AUXLIST| designates an character on the central % atom of the formula drawn by this macro. It can be used a plus % or minus charge on the center. % % \begin{verbatim} % AUXLIST = % % {0+} : + charge (or another one chararacter) on the center % \end{verbatim} % % The arugument |SUBLIST| designates a set of substitutients. % % \begin{verbatim} % SUBSLIST: list of substituents % % for n = 1 to 4 % % nT : triple bond at n-atom % nD : double bond at n-atom % n or nS : single bond at n-atom % nA : alpha single bond at n-atom % nB : beta single bond at n-atom % % for 0 : cetral atom (e.g. 0==C) % \end{verbatim} % % \begin{verbatim} % e.g. % % \tetrahedral{1==Cl;2==F} % \tetrahedral{1==Cl;4==F;2==CH$_{3}$} % \end{verbatim} % \changes{v1.02}{1998/10/31}{Adding \cs{yltetrahedralposition}, % \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, % \cs{yl@xdiff} and \cs{yl@ydiff}} % % \begin{macro}{\tetrahedral} % \begin{macro}{\@tetrahedral} % \begin{macrocode} \def\tetrahedral{\@ifnextchar[{\@tetrahedral[r}{\@tetrahedral[r]}} \def\@tetrahedral#1]#2{% %\def\tetrahedral{\@ifnextchar[{\@tetrahedral}{\@tetrahedral[]}} %\def\@tetrahedral[#1]#2{% \@reset@ylsw% \yltetrahedralposition{#2}% \if@ylsw \ifx\@@ylii\empty \def\@@ylii{0}\def\@@yli{0}\fi \fi \if@ylsw \yl@shiftii=\@ylii \yl@shifti=\@yli \advance\yl@shiftii\@@ylii \advance\yl@shifti\@@yli \advance\yl@shiftii\yl@xdiff \advance\yl@shifti\yl@ydiff \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti) \reset@yl@xydiff%1999/1/6 by S. Fujita \else \begin{picture}(600,600)(-300,-300)% \iforigpt \put(-300,-300){\circle*{50}}% \put(-\noshift,-\noshift){\circle{50}}% \typeout{command `tetrahedral' origin: % (\the\noshift,\the\noshift) ---> (300,300)}\fi% \fi \@tfor\member:=#1\do{% \expandafter\twoch@@r\member{}{}% \if\@@tmpa 0\relax {\putratom{47}{50}{\scriptsize\@@tmpb}}\fi}% \@forsemicol\member:=#2\do{ \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax% \expandafter\threech@r\@membera{}{}% \ifx\@memberb\@yl\else \ifcase\@tmpa {\putlratom{-40}{-33}{\hbox to.72em{\hss\@memberb\hss}}}%central atom \or\put(0,0){\Northbond}% \or\put(0,0){\Westbond}% \or\put(0,0){\Southbond}% \or\put(0,0){\Eastbond}\fi%end of ifcase \fi\fi}% \end{picture}}%end of macro tetrahedral % \end{macrocode} % \end{macro} % \end{macro} % % The command |\yltetrahedralposition| is used in % |\tetrahedral| to adjust a substitution position. % \changes{v1.02}{1998/10/20}{Newly added command: % \cs{yltetrahedralposition}} % % \begin{macro}{\yltetrahedralposition} % \begin{macrocode} \def\yltetrahedralposition#1{% \@@ylswfalse%%%\@reset@ylsw \@forsemicol\member:=#1\do{% \if@@ylsw\else \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax \expandafter\threech@r\@membera{}{}\relax \ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi \if@@ylsw \ifcase\@tmpa \or \gdef\@ylii{0}\gdef\@yli{-52}\global\@ylswtrue%N subst. on 1 \or \gdef\@ylii{52}\gdef\@yli{0}\global\@ylswtrue%W subst. on 1 \or \gdef\@ylii{0}\gdef\@yli{52}\global\@ylswtrue%S subst. on 1 \or \gdef\@ylii{-52}\gdef\@yli{0}\global\@ylswtrue%E subst. on 1 \fi%end of ifcase \fi\fi\fi}}% % \end{macrocode} % \end{macro} % \section{Divalenth unit} % % The command |\divalenth| produces a length-variable divalent unit. % \changes{v2.00}{1998/12/14}{New command: \cs{divalenth}} % % \begin{verbatim} % ****************** % * Divalenth unit * % ****************** % % % % 1 -- (group) -- 2 0 <== the original point % % \end{verbatim} % % This macro has an argument |SUBSLIST| as well as an optional % argument |GROUP|. % % \begin{verbatim} % \divalenth{GROUP}{SUBSLIST} % \end{verbatim} % % The arugument |GROUP| designates a character strings representing % a divalent group. The locant number is fixed to be zero. % % The arugument |SUBLIST| designates a set of substitutients. % % \begin{verbatim} % SUBSLIST: list of substituents % % for n = 1 to 4 % % nT : triple bond at n-atom % nD : double bond at n-atom % n or nS : single bond at n-atom % nA : alpha single bond at n-atom % nB : beta single bond at n-atom % % for 0 : cetral atom (e.g. 0==C) % \end{verbatim} % % % \begin{macro}{\divalenth} % \begin{macrocode} \def\divalenth#1#2{% \@reset@ylsw% \yldivalenthposition{#1}{#2}% \if@ylsw \ifx\@@ylii\empty \def\@@ylii{0}\def\@@yli{0}\fi \fi \if@ylsw \yl@shiftii=\@ylii \yl@shifti=\@yli \advance\yl@shiftii\@@ylii \advance\yl@shifti\@@yli \advance\yl@shiftii\yl@xdiff \advance\yl@shifti\yl@ydiff \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti) \reset@yl@xydiff%1999/1/6 by S. Fujita \else \begin{picture}(600,400)(-300,-200)% \iforigpt \put(-300,-200){\circle*{50}}% \put(-\noshift,-\noshift){\circle{50}}% \typeout{command `tetrahedral' origin: % (\the\noshift,\the\noshift) ---> (300,200)}\fi% \fi {\expandafter\@m@mb@r#1;\relax \putratom{-30}{-33}{\@memberb}}% \@forsemicol\member:=#2\do{% \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax% \expandafter\threech@r\@membera{}{}% \ifx\@memberb\@yl\else \ifcase\@tmpa \or\put(0,0){\Westbond}% \or\put(\the\@tempcnta,0){\Eastbond}\fi%end of ifcase \fi\fi}% \end{picture}}%end of macro tetrahedral % \end{macrocode} % \end{macro} % % The command |\yldivalenthposition| is used in % |\tetrahedral| to adjust a substitution position. % \changes{v2.00}{1998/12/14}{Newly added command: % \cs{yldivalenthposition}} % % \begin{macro}{\yldivalenthposition} % \begin{macrocode} \def\yldivalenthposition#1#2{% {\expandafter\@m@mb@r#1;\relax \setbox0=\hbox{\@memberb}% \@tempcnta=\wd0 \@tempcntb=\unitlength \divide\@tempcnta by\@tempcntb \global\advance\@tempcnta by-62% \@tempcntb=\@tempcnta \global\advance\@tempcntb by50\relax }% \@@ylswfalse% \@forsemicol\member:=#2\do{% \if@@ylsw\else \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax \expandafter\threech@r\@membera{}{}\relax \ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi \if@@ylsw \ifcase\@tmpa \or \gdef\@ylii{50}\gdef\@yli{0}\global\@ylswtrue%W subst. on 1 \or \edef\@ylii{-\the\@tempcntb}\gdef\@yli{0}\global\@ylswtrue%E subst. on 1 \fi%end of ifcase \fi\fi\fi}}% % \end{macrocode} % \end{macro} % % \section{Trigonal unit} % \subsection{Right-hand trigonal unit (narrow type)} % % The macro |\rtrigonal| typesets a compound of trivalency. % The following numbering is adopted in this macro. % The two right-hand bonds form an angle of 90$^{\circ}$ (narrow type), % while the left-hand bond is typeset horizontally. % % \begin{verbatim} % ************************* % * trigonal unit (right) * % ************************* % % 3 % / % / % 1 --- 0 90 0 <== the original point % ` % ` % 2 % \end{verbatim} % % This macro has an argument |SUBSLIST| as well as an optional % argument |AUXLIST|. % % \begin{verbatim} % \rtrigonal[AUXLIST]{SUBSLIST} % \end{verbatim} % % The arugument |AUXLIST| designates an character on the central % atom of the formula drawn by this macro. It can be used a plus % or minus charge on the center. % % \begin{verbatim} % AUXLIST = % % {0+}: + charge (or another one chararacter) on the center % \end{verbatim} % % The arugument |SUBLIST| designates a set of substitutients. % % \begin{verbatim} % SUBSLIST: list of substituents % % for n = 1 to 3 % % nT : triple bond at n-atom % nD : double bond at n-atom % n or nS : single bond at n-atom % nA : alpha single bond at n-atom % nB : beta single bond at n-atom % % for 0 : cetral atom (e.g. 0==C) % \end{verbatim} % % \begin{verbatim} % e.g. % % \rtrigonal{1==Cl;2==F} % \rtrigonal{1==Cl;4==F;2==CH$_{3}$} % \end{verbatim} % % \changes{v1.02}{1998/10/31}{Adding \cs{ylrtrigonalposition}, % \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, % \cs{yl@xdiff} and \cs{yl@ydiff}} % % \begin{macro}{\rtrigonal} % \begin{macro}{\@rtrigonal} % \begin{macrocode} \def\rtrigonal{\@ifnextchar[{\@rtrigonal[r}{\@rtrigonal[r]}} \def\@rtrigonal#1]#2{% \@reset@ylsw% \ylrtrigonalposition{#2}% \if@ylsw \ifx\@@ylii\empty \def\@@ylii{0}\def\@@yli{0}\fi \fi \if@ylsw \yl@shiftii=\@ylii \yl@shifti=\@yli \advance\yl@shiftii\@@ylii \advance\yl@shifti\@@yli \advance\yl@shiftii\yl@xdiff \advance\yl@shifti\yl@ydiff \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti) \reset@yl@xydiff%1999/1/6 by S. Fujita \else \begin{picture}(600,600)(-300,-300)% \iforigpt \put(-300,-300){\circle*{50}}% \put(-\noshift,-\noshift){\circle{50}}% \typeout{command `rtrigonal' origin: % (\the\noshift,\the\noshift) ---> (300,300)}\fi% \fi \@tfor\member:=#1\do{% \expandafter\twoch@@r\member{}{}% \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}% \@forsemicol\member:=#2\do{% \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax% \expandafter\threech@r\@membera{}{}% \ifx\@memberb\@yl\else \ifcase\@tmpa {\putlratom{-40}{-33}{\@memberb}}%central atom \or\put(0,0){\Westbond}% \or\put(0,0){\SEbond}% \or\put(0,0){\NEbond}% \fi%end of ifcase \fi\fi}% \end{picture}}%end of macro rtrigonal % \end{macrocode} % \end{macro} % \end{macro} % % The command |\ylrtrigonalposition| is used in % |\rtrigonal| to adjust a substitution position. % \changes{v1.02}{1998/10/20}{Newly added command: % \cs{ylrtrigonalposition}} % % \begin{macro}{\ylrtrigonalposition} % \begin{macrocode} \def\ylrtrigonalposition#1{% \@@ylswfalse%%%\@reset@ylsw \@forsemicol\member:=#1\do{% \if@@ylsw\else \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax \expandafter\threech@r\@membera{}{}\relax \ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi \if@@ylsw \ifcase\@tmpa \or \gdef\@ylii{52}\gdef\@yli{0}\global\@ylswtrue% W subst. on 1 \or \gdef\@ylii{-40}\gdef\@yli{47}\global\@ylswtrue% SE subst. on 1 \or \gdef\@ylii{-40}\gdef\@yli{-47}\global\@ylswtrue% NE subst. on 1 \fi%end of ifcase \fi\fi\fi}}% % \end{macrocode} % \end{macro} % % \subsection{Right-hand trigonal unit (broad type)} % % The macro |\Rtrigonal| typesets a compound of trivalency. % The following numbering is adopted in this macro. % The two right-hand bonds form an angle of 120$^{\circ}$ (broad type), % while the left-hand bond is typeset horizontally. % \changes{v1.02}{1998/10/20}{New command: \cs{Rtrigonal}} % % \begin{verbatim} % ************************* % * trigonal unit (right) * % ************************* % % 3 % / % / % 1 --- 0 120 0 <== the original point % ` % ` % 2 % \end{verbatim} % % This macro has an argument |SUBSLIST| as well as an optional % argument |AUXLIST|. % % \begin{verbatim} % \rtrigonal[AUXLIST]{SUBSLIST} % \end{verbatim} % % The arugument |AUXLIST| designates an character on the central % atom of the formula drawn by this macro. It can be used a plus % or minus charge on the center. % % \begin{verbatim} % AUXLIST = % % {0+}: + charge (or another one chararacter) on the center % \end{verbatim} % % The arugument |SUBLIST| designates a set of substitutients. % % \begin{verbatim} % SUBSLIST: list of substituents % % for n = 1 to 3 % % nT : triple bond at n-atom % nD : double bond at n-atom % n or nS : single bond at n-atom % nA : alpha single bond at n-atom % nB : beta single bond at n-atom % % for 0 : cetral atom (e.g. 0==C) % \end{verbatim} % % \begin{verbatim} % e.g. % % \rtrigonal{1==Cl;2==F} % \rtrigonal{1==Cl;4==F;2==CH$_{3}$} % \end{verbatim} % % \changes{v1.02}{1998/10/31}{Adding \cs{ylRtrigonalposition}, % \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, % \cs{yl@xdiff} and \cs{yl@ydiff}} % % \begin{macro}{\Rtrigonal} % \begin{macro}{\@Rtrigonal} % \begin{macrocode} \def\Rtrigonal{\@ifnextchar[{\@Rtrigonal[r}{\@Rtrigonal[r]}} \def\@Rtrigonal#1]#2{% \@reset@ylsw% \ylRtrigonalposition{#2}% \if@ylsw \ifx\@@ylii\empty \def\@@ylii{0}\def\@@yli{0}\fi \fi \if@ylsw \yl@shiftii=\@ylii \yl@shifti=\@yli \advance\yl@shiftii\@@ylii \advance\yl@shifti\@@yli \advance\yl@shiftii\yl@xdiff \advance\yl@shifti\yl@ydiff \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti) \reset@yl@xydiff%1999/1/6 by S. Fujita \else \begin{picture}(600,600)(-300,-300)% \iforigpt \put(-300,-300){\circle*{50}}% \put(-\noshift,-\noshift){\circle{50}}% \typeout{command `Rtrigonal' origin: % (\the\noshift,\the\noshift) ---> (300,300)}\fi% \fi \@tfor\member:=#1\do{% \expandafter\twoch@@r\member{}{}% \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}% \@forsemicol\member:=#2\do{% \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax% \expandafter\threech@r\@membera{}{}% \ifx\@memberb\@yl\else \ifcase\@tmpa {\putlratom{-40}{-33}{\@memberb}}%central atom \or\put(0,0){\Westbond}% \or\put(0,0){\SEBOND}% \or\put(0,0){\NEBOND}% \fi%end of ifcase \fi\fi}% \end{picture}}%end of macro Rtrigonal % \end{macrocode} % \end{macro} % \end{macro} % % The command |\ylRtrigonalposition| is used in % |\Rtrigonal| to adjust a substitution position. % \changes{v1.02}{1998/10/20}{Newly added command: % \cs{ylRtrigonalposition}} % % \begin{macro}{\ylRtrigonalposition} % \begin{macrocode} \def\ylRtrigonalposition#1{% \@@ylswfalse%%%\@reset@ylsw \@forsemicol\member:=#1\do{% \if@@ylsw\else \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax \expandafter\threech@r\@membera{}{}\relax \ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi \if@@ylsw \ifcase\@tmpa \or \gdef\@ylii{52}\gdef\@yli{0}\global\@ylswtrue% W subst. on 1 \or \gdef\@ylii{-47}\gdef\@yli{40}\global\@ylswtrue% SE subst. on 1 \or \gdef\@ylii{-47}\gdef\@yli{-40}\global\@ylswtrue% NE subst. on 1 \fi%end of ifcase \fi\fi\fi}}% % \end{macrocode} % \end{macro} % % \subsection{Left-hand trigonal unit (narrow type)} % % The macro |\ltrigonal| typesets a compound of trivalency. % The following numbering is adopted in this macro. % The two left-hand bonds form an angle of 90$^{\circ}$ (narrow type), % while the right-hand bond is typeset horizontally. % % \begin{verbatim} % ************************ % * trigonal unit (left) * % ************************ % % 2 % ` % ` % 90 0 --- 1 0 <== the original point % / % / % 3 % \end{verbatim} % % This macro has an argument |SUBSLIST| as well as an optional % argument |AUXLIST|. % % \begin{verbatim} % \ltrigonal[AUXLIST]{SUBSLIST} % \end{verbatim} % % The arugument |AUXLIST| designates an character on the central % atom of the formula drawn by this macro. It can be used a plus % or minus charge on the center. % % \begin{verbatim} % AUXLIST = % % {0+} : + charge (or another one chararacter) on the center % \end{verbatim} % % The arugument |SUBLIST| designates a set of substitutients. % % \begin{verbatim} % SUBSLIST: list of substituents % % for n = 1 to 3 % % nT : triple bond at n-atom % nD : double bond at n-atom % n or nS : single bond at n-atom % nA : alpha single bond at n-atom % nB : beta single bond at n-atom % % for 0 : cetral atom (e.g. 0==C) % \end{verbatim} % % \begin{verbatim} % e.g. % % \ltrigonal{1==Cl;2==F} % \ltrigonal{1==Cl;4==F;2==CH$_{3}$} % \end{verbatim} % \changes{v1.02}{1998/10/31}{Adding \cs{ylltrigonalposition}, % \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, % \cs{yl@xdiff} and \cs{yl@ydiff}} % % \begin{macro}{\ltrigonal} % \begin{macro}{\@ltrigonal} % \begin{macrocode} \def\ltrigonal{\@ifnextchar[{\@ltrigonal[r}{\@ltrigonal[r]}} \def\@ltrigonal#1]#2{% \@reset@ylsw% \ylltrigonalposition{#2}% \if@ylsw \ifx\@@ylii\empty \def\@@ylii{0}\def\@@yli{0}\fi \fi \if@ylsw \yl@shiftii=\@ylii \yl@shifti=\@yli \advance\yl@shiftii\@@ylii \advance\yl@shifti\@@yli \advance\yl@shiftii\yl@xdiff \advance\yl@shifti\yl@ydiff \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti) \reset@yl@xydiff%1999/1/6 by S. Fujita \else \begin{picture}(600,600)(-300,-300)% \iforigpt \put(-300,-300){\circle*{50}}% \put(-\noshift,-\noshift){\circle{50}}% \typeout{command `ltrigonal' origin: % (\the\noshift,\the\noshift) ---> (300,300)}\fi% \fi \@tfor\member:=#1\do{% \expandafter\twoch@@r\member{}{}% \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}% \@forsemicol\member:=#2\do{% \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax% \expandafter\threech@r\@membera{}{}% \ifx\@memberb\@yl\else \ifcase\@tmpa {\putlratom{-40}{-33}{\@memberb}}%central atom \or\put(0,0){\Eastbond}% \or\put(0,0){\NWbond}% \or\put(0,0){\SWbond}% \fi%end of ifcase \fi\fi}% \end{picture}}%end of macro ltrigonal % \end{macrocode} % \end{macro} % \end{macro} % % The command |\ylltrigonalposition| is used in % |\ltrigonal| to adjust a substitution position. % \changes{v1.02}{1998/10/20}{Newly added command: % \cs{ylltrigonalposition}} % % \begin{macro}{\ylltrigonalposition} % \begin{macrocode} \def\ylltrigonalposition#1{% \@@ylswfalse%%%\@reset@ylsw \@forsemicol\member:=#1\do{% \if@@ylsw\else \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax \expandafter\threech@r\@membera{}{}\relax \ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi \if@@ylsw \ifcase\@tmpa \or \gdef\@ylii{-52}\gdef\@yli{0}\global\@ylswtrue% W subst. on 1 \or \gdef\@ylii{50}\gdef\@yli{-47}\global\@ylswtrue% NW subst. on 1 \or \gdef\@ylii{50}\gdef\@yli{47}\global\@ylswtrue% SW subst. on 1 \fi%end of ifcase \fi\fi\fi}}% % \end{macrocode} % \end{macro} % % \subsection{Left-hand trigonal unit (broad type)} % % The macro |\Ltrigonal| typesets a compound of trivalency. % The following numbering is adopted in this macro. % The two left-hand bonds form an angle of 120$^{\circ}$ (broad type), % while the right-hand bond is typeset horizontally. % \changes{v1.02}{1998/10/20}{New command: \cs{Ltrigonal}} % % \begin{verbatim} % ************************ % * trigonal unit (left) * % ************************ % % 2 % ` % ` % 120 0 --- 1 0 <== the original point % / % / % 3 % \end{verbatim} % % This macro has an argument |SUBSLIST| as well as an optional % argument |AUXLIST|. % % \begin{verbatim} % \ltrigonal[AUXLIST]{SUBSLIST} % \end{verbatim} % % The arugument |AUXLIST| designates an character on the central % atom of the formula drawn by this macro. It can be used a plus % or minus charge on the center. % % \begin{verbatim} % AUXLIST = % % {0+} : + charge (or another one chararacter) on the center % \end{verbatim} % % The arugument |SUBLIST| designates a set of substitutients. % % \begin{verbatim} % SUBSLIST: list of substituents % % for n = 1 to 3 % % nT : triple bond at n-atom % nD : double bond at n-atom % n or nS : single bond at n-atom % nA : alpha single bond at n-atom % nB : beta single bond at n-atom % % for 0 : cetral atom (e.g. 0==C) % \end{verbatim} % % \begin{verbatim} % e.g. % % \Ltrigonal{1==Cl;2==F} % \Ltrigonal{1==Cl;4==F;2==CH$_{3}$} % \end{verbatim} % \changes{v1.02}{1998/10/31}{Adding \cs{ylLtrigonalposition}, % \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, % \cs{yl@xdiff} and \cs{yl@ydiff}} % % \begin{macro}{\Ltrigonal} % \begin{macro}{\@Ltrigonal} % \begin{macrocode} \def\Ltrigonal{\@ifnextchar[{\@Ltrigonal[r}{\@Ltrigonal[r]}} \def\@Ltrigonal#1]#2{% \@reset@ylsw% \ylLtrigonalposition{#2}% \if@ylsw \ifx\@@ylii\empty \def\@@ylii{0}\def\@@yli{0}\fi \fi \if@ylsw \yl@shiftii=\@ylii \yl@shifti=\@yli \advance\yl@shiftii\@@ylii \advance\yl@shifti\@@yli \advance\yl@shiftii\yl@xdiff \advance\yl@shifti\yl@ydiff \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti) \reset@yl@xydiff%1999/1/6 by S. Fujita \else \begin{picture}(600,600)(-300,-300)% \iforigpt \put(-300,-300){\circle*{50}}% \put(-\noshift,-\noshift){\circle{50}}% \typeout{command `Ltrigonal' origin: % (\the\noshift,\the\noshift) ---> (300,300)}\fi% \fi \@tfor\member:=#1\do{% \expandafter\twoch@@r\member{}{}% \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}% \@forsemicol\member:=#2\do{% \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax% \expandafter\threech@r\@membera{}{}% \ifx\@memberb\@yl\else \ifcase\@tmpa {\putlratom{-40}{-33}{\@memberb}}%central atom \or\put(0,0){\Eastbond}% \or\put(0,0){\NWBOND}% \or\put(0,0){\SWBOND}% \fi%end of ifcase \fi\fi}% \end{picture}}%end of macro Ltrigonal % \end{macrocode} % \end{macro} % \end{macro} % % The command |\ylLtrigonalposition| is used in % |\Ltrigonal| to adjust a substitution position. % \changes{v1.02}{1998/10/20}{Newly added command: % \cs{ylLtrigonalposition}} % % \begin{macro}{\ylLtrigonalposition} % \begin{macrocode} \def\ylLtrigonalposition#1{% \@@ylswfalse%%%\@reset@ylsw \@forsemicol\member:=#1\do{% \if@@ylsw\else \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax \expandafter\threech@r\@membera{}{}\relax \ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi \if@@ylsw \ifcase\@tmpa \or \gdef\@ylii{-52}\gdef\@yli{0}\global\@ylswtrue% W subst. on 1 \or \gdef\@ylii{47}\gdef\@yli{-40}\global\@ylswtrue% NWB subst. on 1 % \or \gdef\@ylii{47}\gdef\@yli{-66}\global\@ylswtrue% NWB subst. on 1 \or \gdef\@ylii{47}\gdef\@yli{40}\global\@ylswtrue% SWB subst. on 1 % \or \gdef\@ylii{47}\gdef\@yli{66}\global\@ylswtrue% SWB subst. on 1 \fi%end of ifcase \fi\fi\fi}}% % \end{macrocode} % \end{macro} % % \subsection{Upward trigonal unit (narrow type)} % % The macro |\utrigonal| typesets a compound of trivalency. % The two upward bonds form an angle of 90$^{\circ}$ (narrow type), % while the downward bond is typeset vertically. % The following numbering is adopted in this macro. % % \begin{verbatim} % ********************** % * trigonal unit (up) * % ********************** % % The following numbering is adopted in this macro. % % 3 . 2 % ` 90 / % ` / % 0 0 <== the original point % | % | % 1 % % \end{verbatim} % % This macro has an argument |SUBSLIST| as well as an optional % argument |AUXLIST|. % % \begin{verbatim} % \utrigonal[AUXLIST]{SUBSLIST} % \end{verbatim} % % The arugument |AUXLIST| designates an character on the central % atom of the formula drawn by this macro. It can be used a plus % or minus charge on the center. % % \begin{verbatim} % AUXLIST = % % {0+}: + charge (or another one chararacter) on the center % \end{verbatim} % % The arugument |SUBLIST| designates a set of substitutients. % % \begin{verbatim} % SUBSLIST: list of substituents % % for n = 1 to 3 % % nT : triple bond at n-atom % nD : double bond at n-atom % n or nS : single bond at n-atom % nA : alpha single bond at n-atom % nB : beta single bond at n-atom % % for 0 : cetral atom (e.g. 0==C) % \end{verbatim} % % \begin{verbatim} % e.g. % % \utrigonal{1==Cl;2==F} % \utrigonal{1==Cl;4==F;2==CH$_{3}$} % \end{verbatim} % \changes{v1.02}{1998/10/31}{Adding \cs{ylutrigonalposition}, % \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, % \cs{yl@xdiff} and \cs{yl@ydiff}} % % \begin{macro}{\utrigonal} % \begin{macro}{\@utrigonal} % \begin{macrocode} \def\utrigonal{\@ifnextchar[{\@utrigonal[r}{\@utrigonal[r]}} \def\@utrigonal#1]#2{% \@reset@ylsw% \ylutrigonalposition{#2}% \if@ylsw \ifx\@@ylii\empty \def\@@ylii{0}\def\@@yli{0}\fi \fi \if@ylsw \yl@shiftii=\@ylii \yl@shifti=\@yli \advance\yl@shiftii\@@ylii \advance\yl@shifti\@@yli \advance\yl@shiftii\yl@xdiff \advance\yl@shifti\yl@ydiff \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti) \reset@yl@xydiff%1999/1/6 by S. Fujita \else \begin{picture}(600,600)(-300,-300)% \iforigpt \put(-300,-300){\circle*{50}}% \put(-\noshift,-\noshift){\circle{50}}% \typeout{command `utrigonal' origin: % (\the\noshift,\the\noshift) ---> (300,300)}\fi% \fi \@tfor\member:=#1\do{% \expandafter\twoch@@r\member{}{}% \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}% \@forsemicol\member:=#2\do{% \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax% \expandafter\threech@r\@membera{}{}% \ifx\@memberb\@yl\else \ifcase\@tmpa {\putlratom{-40}{-33}{\@memberb}}%central atom \or\put(0,0){\Southbond}% \or\put(0,0){\NEbond}% \or\put(0,0){\NWbond}% \fi%end of ifcase \fi\fi}% \end{picture}}%end of macro utrigonal % \end{macrocode} % \end{macro} % \end{macro} % % The command |\ylutrigonalposition| is used in % |\utrigonal| to adjust a substitution position. % \changes{v1.02}{1998/10/20}{Newly added command: % \cs{ylutrigonalposition}} % % \begin{macro}{\ylutrigonalposition} % \begin{macrocode} \def\ylutrigonalposition#1{% \@@ylswfalse%%%\@reset@ylsw \@forsemicol\member:=#1\do{% \if@@ylsw\else \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax \expandafter\threech@r\@membera{}{}\relax \ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi \if@@ylsw \ifcase\@tmpa \or \gdef\@ylii{0}\gdef\@yli{52}\global\@ylswtrue%S subst. on 1 \or \gdef\@ylii{-40}\gdef\@yli{-47}\global\@ylswtrue% NE subst. on 1 \or \gdef\@ylii{50}\gdef\@yli{-47}\global\@ylswtrue% NW subst. on 1 \fi%end of ifcase \fi\fi\fi}}% % \end{macrocode} % \end{macro} % % \subsection{Upward trigonal unit (broad type)} % % The macro |\Utrigonal| typesets a compound of trivalency. % The two upward bonds form an angle of 120$^{\circ}$ (broad type), % while the downward bond is typeset vertically. % The following numbering is adopted in this macro. % % \begin{verbatim} % ********************** % * trigonal unit (up) * % ********************** % % 3 2 % ` 120 / % ` / % 0 0 <== the original point % | % | % 1 % % \end{verbatim} % % This macro has an argument |SUBSLIST| as well as an optional % argument |AUXLIST|. % % \begin{verbatim} % \Utrigonal[AUXLIST]{SUBSLIST} % \end{verbatim} % % The arugument |AUXLIST| designates an character on the central % atom of the formula drawn by this macro. It can be used a plus % or minus charge on the center. % % \begin{verbatim} % AUXLIST = % % {0+}: + charge (or another one chararacter) on the center % \end{verbatim} % % The arugument |SUBLIST| designates a set of substitutients. % % \begin{verbatim} % SUBSLIST: list of substituents % % for n = 1 to 3 % % nT : triple bond at n-atom % nD : double bond at n-atom % n or nS : single bond at n-atom % nA : alpha single bond at n-atom % nB : beta single bond at n-atom % % for 0 : cetral atom (e.g. 0==C) % \end{verbatim} % % \begin{verbatim} % e.g. % % \Utrigonal{1==Cl;2==F} % \Utrigonal{1==Cl;4==F;2==CH$_{3}$} % \end{verbatim} % \changes{v1.02}{1998/10/31}{Adding \cs{ylutrigonalposition}, % \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, % \cs{yl@xdiff} and \cs{yl@ydiff}} % % \begin{macro}{\Utrigonal} % \begin{macro}{\@Utrigonal} % \begin{macrocode} \def\Utrigonal{\@ifnextchar[{\@Utrigonal[r}{\@Utrigonal[r]}} \def\@Utrigonal#1]#2{% \@reset@ylsw% \ylUtrigonalposition{#2}% \if@ylsw \ifx\@@ylii\empty \def\@@ylii{0}\def\@@yli{0}\fi \fi \if@ylsw \yl@shiftii=\@ylii \yl@shifti=\@yli \advance\yl@shiftii\@@ylii \advance\yl@shifti\@@yli \advance\yl@shiftii\yl@xdiff \advance\yl@shifti\yl@ydiff \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti) \reset@yl@xydiff%1999/1/6 by S. Fujita \else \begin{picture}(600,600)(-300,-300)% \iforigpt \put(-300,-300){\circle*{50}}% \put(-\noshift,-\noshift){\circle{50}}% \typeout{command `Utrigonal' origin: % (\the\noshift,\the\noshift) ---> (300,300)}\fi% \fi \@tfor\member:=#1\do{% \expandafter\twoch@@r\member{}{}% \if\@@tmpa 0\relax {\putratom{-27}{50}{\scriptsize\@@tmpb}}\fi}% \@forsemicol\member:=#2\do{% \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax% \expandafter\threech@r\@membera{}{}% \ifx\@memberb\@yl\else \ifcase\@tmpa {\putlratom{-40}{-33}{\@memberb}}%central atom \or\put(0,0){\Southbond}% \or\put(0,0){\NEBond}% \or\put(0,0){\NWBond}% \fi%end of ifcase \fi\fi}% \end{picture}}%end of macro Utrigonal % \end{macrocode} % \end{macro} % \end{macro} % % The command |\ylUtrigonalposition| is used in % |\Utrigonal| to adjust a substitution position. % \changes{v1.02}{1998/10/20}{Newly added command: % \cs{ylUtrigonalposition}} % % \begin{macro}{\ylUtrigonalposition} % \begin{macrocode} \def\ylUtrigonalposition#1{% \@@ylswfalse%%%\@reset@ylsw \@forsemicol\member:=#1\do{% \if@@ylsw\else \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax \expandafter\threech@r\@membera{}{}\relax \ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi \if@@ylsw \ifcase\@tmpa \or \gdef\@ylii{0}\gdef\@yli{52}\global\@ylswtrue%S subst. on 1 \or \gdef\@ylii{-40}\gdef\@yli{-47}\global\@ylswtrue% NEB subst. on 1 \or \gdef\@ylii{66}\gdef\@yli{-47}\global\@ylswtrue% NWB subst. on 1 \fi%end of ifcase \fi\fi\fi}}% % \end{macrocode} % \end{macro} % % \subsection{Downward trigonal unit (narrow type)} % % The macro |\dtrigonal| typesets a compound of trivalency. % The upward bond is typeset vertically. % The following numbering is adopted in this macro. % % \begin{verbatim} % ************************ % * trigonal unit (down) * % ************************ % % The following numbering is adopted in this macro. % % 1 % | % | % 0 0 <== the original point % / ` % / 90 ` % 2 3 % % \end{verbatim} % % This macro has an argument |SUBSLIST| as well as an optional % argument |AUXLIST|. % % \begin{verbatim} % \dtrigonal[AUXLIST]{SUBSLIST} % \end{verbatim} % % The arugument |AUXLIST| designates an character on the central % atom of the formula drawn by this macro. It can be used a plus % or minus charge on the center. % % \begin{verbatim} % AUXLIST = % % {0+} : + charge (or another one chararacter) on the center % \end{verbatim} % % The arugument |SUBLIST| designates a set of substitutients. % % \begin{verbatim} % SUBSLIST: list of substituents % % for n = 1 to 3 % % nT : triple bond at n-atom % nD : double bond at n-atom % n or nS : single bond at n-atom % nA : alpha single bond at n-atom % nB : beta single bond at n-atom % % for 0 : cetral atom (e.g. 0==C) % \end{verbatim} % % \begin{verbatim} % e.g. % % \dtrigonal{1==Cl;2==F} % \dtrigonal{1==Cl;4==F;2==CH$_{3}$} % \end{verbatim} % \changes{v1.02}{1998/10/31}{Adding \cs{yldtrigonalposition}, % \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, % \cs{yl@xdiff} and \cs{yl@ydiff}} % % \begin{macro}{\dtrigonal} % \begin{macro}{\@dtrigonal} % \begin{macrocode} \def\dtrigonal{\@ifnextchar[{\@dtrigonal[r}{\@dtrigonal[r]}} \def\@dtrigonal#1]#2{% \@reset@ylsw% \yldtrigonalposition{#2}% \if@ylsw \ifx\@@ylii\empty \def\@@ylii{0}\def\@@yli{0}\fi \fi \if@ylsw \yl@shiftii=\@ylii \yl@shifti=\@yli \advance\yl@shiftii\@@ylii \advance\yl@shifti\@@yli \advance\yl@shiftii\yl@xdiff \advance\yl@shifti\yl@ydiff \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti) \reset@yl@xydiff%1999/1/6 by S. Fujita \else \begin{picture}(600,600)(-300,-300) \iforigpt \put(-300,-300){\circle*{50}}% \put(-\noshift,-\noshift){\circle{50}}% \typeout{command `dtrigonal' origin: % (\the\noshift,\the\noshift) ---> (300,300)}\fi% \fi \@tfor\member:=#1\do{% \expandafter\twoch@@r\member{}{}% \if\@@tmpa 0\relax {\putratom{37}{50}{\scriptsize\@@tmpb}}\fi}% \@forsemicol\member:=#2\do{% \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax% \expandafter\threech@r\@membera{}{}% \ifx\@memberb\@yl\else \ifcase\@tmpa {\putlratom{-40}{-33}{\@memberb}}%central atom \or\put(0,0){\Northbond}% \or\put(0,0){\SEbond}% \or\put(0,0){\SWbond}% \fi%end of ifcase \fi\fi}% \end{picture}}%end of macro dtrigonal % \end{macrocode} % \end{macro} % \end{macro} % % The command |\yldtrigonalposition| is used in % |\dtrigonal| to adjust a substitution position. % \changes{v1.02}{1998/10/20}{Newly added command: % \cs{yldtrigonalposition}} % % \begin{macro}{\yldtrigonalposition} % \begin{macrocode} \def\yldtrigonalposition#1{% \@@ylswfalse%%%\@reset@ylsw \@forsemicol\member:=#1\do{% \if@@ylsw\else \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax \expandafter\threech@r\@membera{}{}\relax \ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi \if@@ylsw \ifcase\@tmpa \or \gdef\@ylii{0}\gdef\@yli{-52}\global\@ylswtrue%N subst. on 1 \or \gdef\@ylii{-40}\gdef\@yli{47}\global\@ylswtrue% SE subst. on 1 \or \gdef\@ylii{50}\gdef\@yli{47}\global\@ylswtrue% SW subst. on 1 \fi%end of ifcase \fi\fi\fi}}% % \end{macrocode} % \end{macro} % % \subsection{Downward trigonal unit (broad type)} % % The macro |\Dtrigonal| typesets a compound of trivalency. % The upward bond is typeset vertically. % The following numbering is adopted in this macro. % % \begin{verbatim} % ************************ % * trigonal unit (down) * % ************************ % % The following numbering is adopted in this macro. % % 1 % | % | % 0 0 <== the original point % / ` % / 120 ` % 2 3 % % \end{verbatim} % % This macro has an argument |SUBSLIST| as well as an optional % argument |AUXLIST|. % % \begin{verbatim} % \Dtrigonal[AUXLIST]{SUBSLIST} % \end{verbatim} % % The arugument |AUXLIST| designates an character on the central % atom of the formula drawn by this macro. It can be used a plus % or minus charge on the center. % % \begin{verbatim} % AUXLIST = % % {0+}: + charge (or another one chararacter) on the center % \end{verbatim} % % The arugument |SUBLIST| designates a set of substitutients. % % \begin{verbatim} % SUBSLIST: list of substituents % % for n = 1 to 3 % % nT : triple bond at n-atom % nD : double bond at n-atom % n or nS : single bond at n-atom % nA : alpha single bond at n-atom % nB : beta single bond at n-atom % % for 0 : cetral atom (e.g. 0==C) % \end{verbatim} % % \begin{verbatim} % e.g. % % \Dtrigonal{1==Cl;2==F} % \Dtrigonal{1==Cl;4==F;2==CH$_{3}$} % \end{verbatim} % \changes{v1.02}{1998/10/31}{Adding \cs{ylDtrigonalposition}, % \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, % \cs{yl@xdiff} and \cs{yl@ydiff}} % % \begin{macro}{\Dtrigonal} % \begin{macro}{\@Dtrigonal} % \begin{macrocode} \def\Dtrigonal{\@ifnextchar[{\@Dtrigonal[r}{\@Dtrigonal[r]}} \def\@Dtrigonal#1]#2{% \@reset@ylsw% \ylDtrigonalposition{#2}% \if@ylsw \ifx\@@ylii\empty \def\@@ylii{0}\def\@@yli{0}\fi \fi \if@ylsw \yl@shiftii=\@ylii \yl@shifti=\@yli \advance\yl@shiftii\@@ylii \advance\yl@shifti\@@yli \advance\yl@shiftii\yl@xdiff \advance\yl@shifti\yl@ydiff \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti) \reset@yl@xydiff%1999/1/6 by S. Fujita \else \begin{picture}(600,600)(-300,-300) \iforigpt \put(-300,-300){\circle*{50}}% \put(-\noshift,-\noshift){\circle{50}}% \typeout{command `Dtrigonal' origin: % (\the\noshift,\the\noshift) ---> (300,300)}\fi% \fi \@tfor\member:=#1\do{% \expandafter\twoch@@r\member{}{}% \if\@@tmpa 0\relax {\putratom{37}{50}{\scriptsize\@@tmpb}}\fi}% \@forsemicol\member:=#2\do{% \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax% \expandafter\threech@r\@membera{}{}% \ifx\@memberb\@yl\else \ifcase\@tmpa {\putlratom{-40}{-33}{\@memberb}}%central atom \or\put(0,0){\Northbond}% \or\put(0,0){\SEBond}% \or\put(0,0){\SWBond}% \fi%end of ifcase \fi\fi}% \end{picture}}%end of macro Dtrigonal % \end{macrocode} % \end{macro} % \end{macro} % % The command |\ylDtrigonalposition| is used in % |\Dtrigonal| to adjust a substitution position. % \changes{v1.02}{1998/10/20}{Newly added command: % \cs{ylDtrigonalposition}} % % \begin{macro}{\ylDtrigonalposition} % \begin{macrocode} \def\ylDtrigonalposition#1{% \@@ylswfalse%%%\@reset@ylsw \@forsemicol\member:=#1\do{% \if@@ylsw\else \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax \expandafter\threech@r\@membera{}{}\relax \ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi \if@@ylsw \ifcase\@tmpa \or \gdef\@ylii{0}\gdef\@yli{-52}\global\@ylswtrue%N subst. on 1 \or \gdef\@ylii{-40}\gdef\@yli{47}\global\@ylswtrue% SEB subst. on 1 \or \gdef\@ylii{66}\gdef\@yli{47}\global\@ylswtrue% SWB subst. on 1 \fi%end of ifcase \fi\fi\fi}}% % \end{macrocode} % \end{macro} % % \section{Ethylene derivative} % \subsection{Horizontal ethylene unit (narrow type)} % % The macro |\ethylene| typesets ethylene derivatives. % The following numbering is adopted in this macro. % % \begin{verbatim} % ***************** % * ethylene unit * % ***************** % % 1 4 % ` / % ` / % 90 (1)===(2) 90 (1) <== the original point % / ` % / ` % 2 3 % \end{verbatim} % % \begin{verbatim} % \ethylene[BONDLIST]{ATOMLIST}{SUBSLIST} % \end{verbatim} % % The arugument |BONDLIST| designates the bond between atom (1) and % atom (2) as well as charges on these centeral atoms. % % \begin{verbatim} % BONDLIST: list of inner bonds and charges % % {n+} : + charge (or another one chararacter) on n-atom % d : inner double bond (between (1) and (2)) % t : inner triple bond (between (1) and (2)) % \end{verbatim} % % The arugument |SUBLIST| designates a set of substitutients. % % \begin{verbatim} % SUBSLIST: list of substituents % % for n = 1 to 4 % % nT : triple bond at n-atom % nD : double bond at n-atom % n or nS : single bond at n-atom % nA : alpha single bond at n-atom % nB : beta single bond at n-atom % \end{verbatim} % % The arugument |ATOMLIST| designates the list of central atoms. % % \begin{verbatim} % ATOMLIST: list of central atoms % n : atom for n-position (e.g. 1==C) % \end{verbatim} % % \begin{verbatim} % e.g. % % \ethylene{}{1==Cl;2==F} % \ethylene{}{1==Cl;4==F;2==CH$_{3}$} % \end{verbatim} % \changes{v1.02}{1998/10/31}{Adding \cs{ylethylenepositiona}, % \cs{ylethylenepositionb}, % \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, % \cs{yl@xdiff} and \cs{yl@ydiff}} % % \begin{macro}{\ethylene} % \begin{macro}{\@ethylene} % \begin{macrocode} \def\ethylene{\@ifnextchar[{\@ethylene}{\@ethylene[]}} \def\@ethylene[#1]#2#3{% \@reset@ylsw% \ylethylenepositiona{#3}% \if@ylsw \ifx\@@ylii\empty \def\@@ylii{0}\def\@@yli{0}\fi \else \ylethylenepositionb{#3}% \fi \if@ylsw \ifx\@@ylii\empty \def\@@ylii{-230}\def\@@yli{0}\fi \fi \if@ylsw \yl@shiftii=\@ylii \yl@shifti=\@yli \advance\yl@shiftii\@@ylii \advance\yl@shifti\@@yli \advance\yl@shiftii\yl@xdiff \advance\yl@shifti\yl@ydiff \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti) \reset@yl@xydiff%1999/1/6 by S. Fujita \else \begin{picture}(800,600)(-300,-300) \iforigpt \put(-300,-300){\circle*{50}}% \put(-\noshift,-\noshift){\circle{50}}% \typeout{command `ethylene' origin: % (\the\noshift,\the\noshift) ---> (300,300)}\fi% \fi {\def\aaa{#1}\ifx\aaa\empty% \multiput(42,-13)(0,25){2}{\line(1,0){140}}\fi% double bond }% \@tfor\member:=#1\do{% \expandafter\twoch@@r\member{}{}% \if\@@tmpa 1\relax {\putratom{-27}{60}{\scriptsize\@@tmpb}}% \else\if\@@tmpa 2\relax {\putratom{203}{60}{\scriptsize\@@tmpb}}% \else\if\@@tmpa d\relax% {\multiput(42,-13)(0,25){2}{\line(1,0){140}}}% double bond \else\if\@@tmpa t\relax% {\multiput(42,-20)(0,20){3}{\line(1,0){140}}}% triple bond right \fi\fi\fi\fi}% {\def\aaa{#2}% \ifx\aaa\empty% \putratom{-40}{-33}{C}%central atom \putratom{190}{-33}{C}%central atom \else% \@forsemicol\member:=#2\do{% \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax% \expandafter\threech@r\@membera{}{}% \ifcase\@tmpa% \or\putratom{-40}{-33}{\@memberb}%central atom \or\putratom{190}{-33}{\@memberb}%central atom \fi\fi}%end of ifcase \fi% }% \@forsemicol\member:=#3\do{% \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax% \expandafter\threech@r\@membera{}{}% \ifx\@memberb\@yl\else \ifcase\@tmpa% \or\put(0,0){\NWbond}% \or\put(0,0){\SWbond}% \or\put(230,0){\SEbond}% \or\put(230,0){\NEbond}% \fi%end of ifcase \fi\fi}% \end{picture}}%end of macro ethylene % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\ethyleneh} % \begin{macrocode} \let\ethyleneh=\ethylene % \end{macrocode} % \end{macro} % % The commands |\ylethylenepositiona| and |\ylethylenepositiona| % are used in |\ethylene| to adjust a substitution position. % \changes{v1.02}{1998/10/20}{Newly added command: % \cs{ylethylenepositiona} and \cs{ylethylenepositionb}} % % \begin{macro}{\ylethylenepositiona} % \begin{macro}{\ylethylenepositionb} % \begin{macrocode} \def\ylethylenepositiona#1{% \@@ylswfalse%%%\@reset@ylsw \@forsemicol\member:=#1\do{% \if@@ylsw\else \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax \expandafter\threech@r\@membera{}{}\relax \ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi \if@@ylsw \ifcase\@tmpa \or \gdef\@ylii{50}\gdef\@yli{-47}\global\@ylswtrue% NW subst. on 1 \or \gdef\@ylii{50}\gdef\@yli{47}\global\@ylswtrue% SW subst. on 1 \fi%end of ifcase \fi\fi\fi}}% \def\ylethylenepositionb#1{% \@@ylswfalse%%%\@reset@ylsw \@forsemicol\member:=#1\do{% \if@@ylsw\else \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax \expandafter\threech@r\@membera{}{}\relax \ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi \if@@ylsw \ifcase\@tmpa \or%omit \or%omit \or \gdef\@ylii{-40}\gdef\@yli{47}\global\@ylswtrue% SE subst. on 1 \or \gdef\@ylii{-40}\gdef\@yli{-47}\global\@ylswtrue% NE subst. on 1 \fi%end of ifcase \fi\fi\fi}}% % \end{macrocode} % \end{macro} % \end{macro} % % \subsection{Horizontal ethylene unit (broad type)} % % The macro |\Ethylene| typesets ethylene derivatives. % The following numbering is adopted in this macro. % \changes{v1.02}{1998/10/20}{New command: \cs{Ethylene}} % % \begin{verbatim} % ***************** % * ethylene unit * % ***************** % % 1 4 % ` / % ` / % 120 (1)===(2) 120 (1) <== the original point % / ` % / ` % 2 3 % \end{verbatim} % % \begin{verbatim} % \Ethylene[BONDLIST]{ATOMLIST}{SUBSLIST} % \end{verbatim} % % The arugument |BONDLIST| designates the bond between atom (1) and % atom (2) as well as charges on these centeral atoms. % % \begin{verbatim} % BONDLIST: list of inner bonds and charges % % {n+} : + charge (or another one chararacter) on n-atom % d : inner double bond (between (1) and (2)) % t : inner triple bond (between (1) and (2)) % \end{verbatim} % % The arugument |SUBLIST| designates a set of substitutients. % % \begin{verbatim} % SUBSLIST: list of substituents % % for n = 1 to 4 % % nT : triple bond at n-atom % nD : double bond at n-atom % n or nS : single bond at n-atom % nA : alpha single bond at n-atom % nB : beta single bond at n-atom % \end{verbatim} % % The arugument |ATOMLIST| designates the list of central atoms. % % \begin{verbatim} % ATOMLIST: list of central atoms % n : atom for n-position (e.g. 1==C) % \end{verbatim} % % \begin{verbatim} % e.g. % % \Ethylene{}{1==Cl;2==F} % \Ethylene{}{1==Cl;4==F;2==CH$_{3}$} % \end{verbatim} % \changes{v1.02}{1998/10/31}{Adding \cs{ylethylenepositiona}, % \cs{ylethylenepositionb}, % \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, % \cs{yl@xdiff} and \cs{yl@ydiff}} % % \begin{macro}{\Ethylene} % \begin{macro}{\@Ethylene} % \begin{macrocode} \def\Ethylene{\@ifnextchar[{\@ethylene}{\@ethylene[]}} \def\@ethylene[#1]#2#3{% \@reset@ylsw% \ylethylenepositiona{#3}% \if@ylsw \ifx\@@ylii\empty \def\@@ylii{0}\def\@@yli{0}\fi \else \ylethylenepositionb{#3}% \fi \if@ylsw \ifx\@@ylii\empty \def\@@ylii{-230}\def\@@yli{0}\fi \fi \if@ylsw \yl@shiftii=\@ylii \yl@shifti=\@yli \advance\yl@shiftii\@@ylii \advance\yl@shifti\@@yli \advance\yl@shiftii\yl@xdiff \advance\yl@shifti\yl@ydiff \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti) \reset@yl@xydiff%1999/1/6 by S. Fujita \else \begin{picture}(800,600)(-300,-300) \iforigpt \put(-300,-300){\circle*{50}}% \put(-\noshift,-\noshift){\circle{50}}% \typeout{command `ethylene' origin: % (\the\noshift,\the\noshift) ---> (300,300)}\fi% \fi {\def\aaa{#1}\ifx\aaa\empty% \multiput(42,-13)(0,25){2}{\line(1,0){140}}\fi% double bond }% \@tfor\member:=#1\do{% \expandafter\twoch@@r\member{}{}% \if\@@tmpa 1\relax {\putratom{-27}{60}{\scriptsize\@@tmpb}}% \else\if\@@tmpa 2\relax {\putratom{203}{60}{\scriptsize\@@tmpb}}% \else\if\@@tmpa d\relax% {\multiput(42,-13)(0,25){2}{\line(1,0){140}}}% double bond \else\if\@@tmpa t\relax% {\multiput(42,-20)(0,20){3}{\line(1,0){140}}}% triple bond right \fi\fi\fi\fi}% {\def\aaa{#2}% \ifx\aaa\empty% \putratom{-40}{-33}{C}%central atom \putratom{190}{-33}{C}%central atom \else% \@forsemicol\member:=#2\do{% \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax% \expandafter\threech@r\@membera{}{}% \ifcase\@tmpa% \or\putratom{-40}{-33}{\@memberb}%central atom \or\putratom{190}{-33}{\@memberb}%central atom \fi\fi}%end of ifcase \fi% }% \@forsemicol\member:=#3\do{% \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax% \expandafter\threech@r\@membera{}{}% \ifx\@memberb\@yl\else \ifcase\@tmpa% \or\put(0,0){\NWBOND}% \or\put(0,0){\SWBOND}% \or\put(230,0){\SEBOND}% \or\put(230,0){\NEBOND}% \fi%end of ifcase \fi\fi}% \end{picture}}%end of macro Ethylene % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\Ethyleneh} % \begin{macrocode} \let\Ethyleneh=\Ethylene % \end{macrocode} % \end{macro} % % \subsection{Vertical ethylene unit (narrow type)} % % The macro |\ethylenev| typesets ethylene derivatives in a % vatical manner. % The following numbering is adopted in this macro. % % \begin{verbatim} % **************************** % * ethylene unit (vertical) * % **************************** % % The following numbering is adopted in this macro. % % 4 3 % ` 90 / % ` / % (2) % || % || % (1) <== the original point % / ` % / 90 ` % 1 2 % % \end{verbatim} % % \begin{verbatim} % \ethylenev[BONDLIST]{ATOMLIST}{SUBSLIST} % \end{verbatim} % % \begin{verbatim} % BONDLIST: list of inner bonds and charges % % {n+} : + charge (or another one chararacter) on n-atom % d : inner double bond (between (1) and (2)) % t : inner triple bond (between (1) and (2)) % \end{verbatim} % % \begin{verbatim} % SUBSLIST: list of substituents % % for n = 1 to 4 % % nT : triple bond at n-atom % nD : double bond at n-atom % n or nS : single bond at n-atom % nA : alpha single bond at n-atom % nB : beta single bond at n-atom % \end{verbatim} % % \begin{verbatim} % ATOMLIST: list of central atoms % n : atom for n-position (e.g. 1==C) % \end{verbatim} % % \begin{verbatim} % e.g. % % \ethylenev{1==Cl;2==F} % \ethylenev{1==Cl;4==F;2==CH$_{3}$} % \end{verbatim} % \changes{v1.02}{1998/10/31}{Adding \cs{ylethylenevpositiona}, % \cs{ylethylenevpositionb}, % \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, % \cs{yl@xdiff} and \cs{yl@ydiff}} % % \begin{macro}{\ethylenev} % \begin{macro}{\@ethylenev} % \begin{macrocode} \def\ethylenev{\@ifnextchar[{\@ethylenev}{\@ethylenev[]}} \def\@ethylenev[#1]#2#3{% \@reset@ylsw% \ylethylenevpositiona{#3}% \if@ylsw \ifx\@@ylii\empty \def\@@ylii{0}\def\@@yli{0}\fi \else \ylethylenevpositionb{#3}% \fi \if@ylsw \ifx\@@ylii\empty \def\@@ylii{0}\def\@@yli{-230}\fi \fi \if@ylsw \yl@shiftii=\@ylii \yl@shifti=\@yli \advance\yl@shiftii\@@ylii \advance\yl@shifti\@@yli \advance\yl@shiftii\yl@xdiff \advance\yl@shifti\yl@ydiff \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti) \reset@yl@xydiff%1999/1/6 by S. Fujita \else \begin{picture}(600,800)(-300,-300) \iforigpt \put(-300,-300){\circle*{50}}% \put(-\noshift,-\noshift){\circle{50}}% \typeout{command `ethylenev' origin: % (\the\noshift,\the\noshift) ---> (300,300)}\fi% \fi \def\aaa{#1}\ifx\aaa\empty% \put(-20,47){\line(0,1){140}}% vertical \put(6,47){\line(0,1){140}}\fi% double bond \@tfor\member:=#1\do{% \expandafter\twoch@@r\member{}{}% \if\@@tmpa 1\relax \putratom{37}{0}{\scriptsize\@@tmpb} \else\if\@@tmpa 2\relax \putratom{37}{216}{\scriptsize\@@tmpb} \else\if\@@tmpa d\relax% \put(-13,47){\line(0,1){140}}% vertical \put(13,47){\line(0,1){140}}% double bond \else\if\@@tmpa t\relax% \put(-20,47){\line(0,1){140}}% vertical \put(-0,47){\line(0,1){140}}% triple bond \put(20,47){\line(0,1){140}}% \fi\fi\fi\fi}% \def\aaa{#2}% \ifx\aaa\empty% \putratom{-40}{-33}{C}%central atom \putratom{-40}{197}{C}%central atom \else% \@forsemicol\member:=#2\do{% \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax% \expandafter\threech@r\@membera{}{}% \ifcase\@tmpa% \or\putratom{-40}{-33}{\@memberb}%central atom \or\putratom{-40}{197}{\@memberb}%central atom \fi\fi}%end of ifcase \fi% \@forsemicol\member:=#3\do{% \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax% \expandafter\threech@r\@membera{}{}% \ifx\@memberb\@yl\else \ifcase\@tmpa% \or\put(0,0){\SWbond}% \or\put(0,0){\SEbond}% \or\put(0,230){\NEbond}% \or\put(0,230){\NWbond}% \fi%end of ifcase \fi\fi}% \end{picture}}%end of macro ethylenev % \end{macrocode} % \end{macro} % \end{macro} % % The commands |\ylethylenevpositiona| and |\ylethylenevpositiona| % are used in |\ethylenev| to adjust a substitution position. % \changes{v1.02}{1998/10/20}{Newly added command: % \cs{ylethylenevpositiona} and \cs{ylethylenevpositionb}} % % \begin{macro}{\ylethylenepositiona} % \begin{macro}{\ylethylenepositionb} % \begin{macrocode} \def\ylethylenevpositiona#1{% \@@ylswfalse%%%\@reset@ylsw \@forsemicol\member:=#1\do{% \if@@ylsw\else \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax \expandafter\threech@r\@membera{}{}\relax \ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi \if@@ylsw \ifcase\@tmpa \or \gdef\@ylii{50}\gdef\@yli{47}\global\@ylswtrue% SW subst. on 1 \or \gdef\@ylii{-40}\gdef\@yli{47}\global\@ylswtrue% SE subst. on 1 \fi%end of ifcase \fi\fi\fi}}% \def\ylethylenevpositionb#1{% \@@ylswfalse%%%\@reset@ylsw \@forsemicol\member:=#1\do{% \if@@ylsw\else \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax \expandafter\threech@r\@membera{}{}\relax \ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi \if@@ylsw \ifcase\@tmpa \or%omit \or%omit \or \gdef\@ylii{-40}\gdef\@yli{-47}\global\@ylswtrue% NE subst. on 1 \or \gdef\@ylii{50}\gdef\@yli{-47}\global\@ylswtrue% NW subst. on 1 \fi%end of ifcase \fi\fi\fi}}% % \end{macrocode} % \end{macro} % \end{macro} % % \subsection{Vertical ethylene unit (broad type)} % % The macro |\Ethylenev| typesets ethylene derivatives in a % vatical manner. % The following numbering is adopted in this macro. % % \begin{verbatim} % **************************** % * ethylene unit (vertical) * % **************************** % % 4 3 % ` 120 / % ` / % (2) % || % || % (1) <== the original point % / ` % / 120 ` % 1 2 % \end{verbatim} % % \begin{verbatim} % \Ethylenev[BONDLIST]{ATOMLIST}{SUBSLIST} % \end{verbatim} % % \begin{verbatim} % BONDLIST: list of inner bonds and charges % % {n+} : + charge (or another one chararacter) on n-atom % d : inner double bond (between (1) and (2)) % t : inner triple bond (between (1) and (2)) % \end{verbatim} % % \begin{verbatim} % SUBSLIST: list of substituents % % for n = 1 to 4 % % nT : triple bond at n-atom % nD : double bond at n-atom % n or nS : single bond at n-atom % nA : alpha single bond at n-atom % nB : beta single bond at n-atom % \end{verbatim} % % \begin{verbatim} % ATOMLIST: list of central atoms % n : atom for n-position (e.g. 1==C) % \end{verbatim} % % \begin{verbatim} % e.g. % % \Ethylenev{1==Cl;2==F} % \Ethylenev{1==Cl;4==F;2==CH$_{3}$} % \end{verbatim} % \changes{v1.02}{1998/10/31}{Adding \cs{ylethylenevpositiona}, % \cs{ylethylenevpositionb}, % \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, % \cs{yl@xdiff} and \cs{yl@ydiff}} % % \begin{macro}{\Ethylenev} % \begin{macro}{\@Ethylenev} % \begin{macrocode} \def\Ethylenev{\@ifnextchar[{\@Ethylenev}{\@Ethylenev[]}} \def\@Ethylenev[#1]#2#3{% \@reset@ylsw% \ylethylenevpositiona{#3}% \if@ylsw \ifx\@@ylii\empty \def\@@ylii{0}\def\@@yli{0}\fi \else \ylethylenevpositionb{#3}% \fi \if@ylsw \ifx\@@ylii\empty \def\@@ylii{0}\def\@@yli{-230}\fi \fi \if@ylsw \yl@shiftii=\@ylii \yl@shifti=\@yli \advance\yl@shiftii\@@ylii \advance\yl@shifti\@@yli \advance\yl@shiftii\yl@xdiff \advance\yl@shifti\yl@ydiff \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti) \reset@yl@xydiff%1999/1/6 by S. Fujita \else \begin{picture}(600,800)(-300,-300) \iforigpt \put(-300,-300){\circle*{50}}% \put(-\noshift,-\noshift){\circle{50}}% \typeout{command `Ethylenev' origin: % (\the\noshift,\the\noshift) ---> (300,300)}\fi% \fi \def\aaa{#1}\ifx\aaa\empty% \put(-20,47){\line(0,1){140}}% vertical \put(6,47){\line(0,1){140}}\fi% double bond \@tfor\member:=#1\do{% \expandafter\twoch@@r\member{}{}% \if\@@tmpa 1\relax \putratom{37}{0}{\scriptsize\@@tmpb} \else\if\@@tmpa 2\relax \putratom{37}{216}{\scriptsize\@@tmpb} \else\if\@@tmpa d\relax% \put(-13,47){\line(0,1){140}}% vertical \put(13,47){\line(0,1){140}}% double bond \else\if\@@tmpa t\relax% \put(-20,47){\line(0,1){140}}% vertical \put(-0,47){\line(0,1){140}}% triple bond \put(20,47){\line(0,1){140}}% \fi\fi\fi\fi}% \def\aaa{#2}% \ifx\aaa\empty% \putratom{-40}{-33}{C}%central atom \putratom{-40}{197}{C}%central atom \else% \@forsemicol\member:=#2\do{% \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax% \expandafter\threech@r\@membera{}{}% \ifcase\@tmpa% \or\putratom{-40}{-33}{\@memberb}%central atom \or\putratom{-40}{197}{\@memberb}%central atom \fi\fi}%end of ifcase \fi% \@forsemicol\member:=#3\do{% \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax% \expandafter\threech@r\@membera{}{}% \ifx\@memberb\@yl\else \ifcase\@tmpa% \or\put(0,0){\SWBond}% \or\put(0,0){\SEBond}% \or\put(0,230){\NEBond}% \or\put(0,230){\NWBond}% \fi%end of ifcase \fi\fi}% \end{picture}}%end of macro Ethylenev % \end{macrocode} % \end{macro} % \end{macro} % % \section{Square unit} % % The macro |\square| typesets a compound of tetravalency. % The following numbering is adopted in this macro. % % \begin{verbatim} % *************** % * square unit * % *************** % % The following numbering is adopted in this macro. % % 4 1 % ` / % ` / % (0) <== the original point % / ` % / ` % 3 2 % % \end{verbatim} % % This macro has an argument |SUBSLIST| as well as an optional % argument |AUXLIST|. % % \begin{verbatim} % \square[AUXLIST]{SUBSLIST} % \end{verbatim} % % The arugument |AUXLIST| designates an character on the central % atom of the formula drawn by this macro. It can be used a plus % or minus charge on the center. % % \begin{verbatim} % AUXLIST = % % {0+}: + charge (or another one chararacter) on the center % \end{verbatim} % % \begin{verbatim} % SUBSLIST: list of substituents % % for n = 1 to 4 % % nT : triple bond at n-atom % nD : double bond at n-atom % n or nS : single bond at n-atom % nA : alpha single bond at n-atom % nB : beta single bond at n-atom % % for 0 : cetral atom (e.g. 0==C) % \end{verbatim} % % \begin{verbatim} % e.g. % % \square{0==C;1==Cl;2==F} % \square{0==C;1==Cl;4==F;2==CH$_{3}$} % \end{verbatim} % \changes{v1.02}{1998/10/31}{Adding \cs{ylsquareposition}, % \cs{if@ylsw}, \cs{yl@shifti}, \cs{@ylii}, \cs{yl@shiftii}, \cs{@ylii}, % \cs{yl@xdiff} and \cs{yl@ydiff}} % % \begin{macro}{\square} % \begin{macro}{\@square} % \begin{macrocode} \def\square{\@ifnextchar[{\@square[r}{\@square[r]}} \def\@square#1]#2{% \@reset@ylsw% \ylsquareposition{#2}% \if@ylsw \ifx\@@ylii\empty \def\@@ylii{0}\def\@@yli{0}\fi \fi \if@ylsw \yl@shiftii=\@ylii \yl@shifti=\@yli \advance\yl@shiftii\@@ylii \advance\yl@shifti\@@yli \advance\yl@shiftii\yl@xdiff \advance\yl@shifti\yl@ydiff \begin{picture}(0,0)(-\yl@shiftii,-\yl@shifti) \reset@yl@xydiff%1999/1/6 by S. Fujita \else \begin{picture}(600,600)(-300,-300) \iforigpt \put(-300,-300){\circle*{50}}% \put(-\noshift,-\noshift){\circle{50}}% \typeout{command `square' origin: % (\the\noshift,\the\noshift) ---> (300,300)}\fi% \fi \@tfor\member:=#1\do{% \expandafter\twoch@@r\member{}{}% \if\@@tmpa 0\relax {\putratom{37}{0}{\scriptsize\@@tmpb}}\fi}% \@forsemicol\member:=#2\do{% \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax% \expandafter\threech@r\@membera{}{}% \ifx\@memberb\@yl\else \ifcase\@tmpa {\putlratom{-40}{-33}{\@memberb}}%central atom \or\put(0,0){\NEbond}% \or\put(0,0){\SEbond}% \or\put(0,0){\SWbond}% \or\put(0,0){\NWbond}% \fi%end of ifcase \fi\fi}% \end{picture}}%end of macro square % \end{macrocode} % \end{macro} % \end{macro} % % The commands |\ylsquarepositiona| and |\ylsquarepositiona| % are used in |\square| to adjust a substitution position. % \changes{v1.02}{1998/10/20}{Newly added command: \cs{ylsquareposition}} % % \begin{macro}{\ylsquareposition} % \begin{macrocode} \def\ylsquareposition#1{% \@@ylswfalse%%%\@reset@ylsw \@forsemicol\member:=#1\do{% \if@@ylsw\else \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax \expandafter\threech@r\@membera{}{}\relax \ifx\@memberb\@yl\relax\@@ylswtrue\else\@@ylswfalse\fi \if@@ylsw \ifcase\@tmpa \or \gdef\@ylii{-40}\gdef\@yli{-47}\global\@ylswtrue% NE subst. on 1 \or \gdef\@ylii{-40}\gdef\@yli{47}\global\@ylswtrue% SE subst. on 1 \or \gdef\@ylii{50}\gdef\@yli{47}\global\@ylswtrue% SW subst. on 1 \or \gdef\@ylii{50}\gdef\@yli{-47}\global\@ylswtrue% NW subst. on 1 \fi%end of ifcase \fi\fi\fi}}% % \end{macrocode} % \end{macro} % % \section{Ball-stick models} % \subsection{Tetrahedral unit of stereo type} % % The macro |\tetrastereo| typesets a tetrahedral unit in a % ball-stick fashion. % The following numbering is adopted in this macro. % % \begin{verbatim} % ***************************** % * tetrahedral unit (stereo) * % ***************************** % % The following numbering is adopted in this macro. % % 1 % % | % 2 -- 0 -- 4 0 <== the original point % | % % 3 % \end{verbatim} % % This macro has an argument |SUBSLIST| as well as an optional % argument |AUXLIST|. % % \begin{verbatim} % \tetrastereo[AUXLIST]{SUBSLIST} % \end{verbatim} % % The arugument |AUXLIST| designates an character on the central % atom of the formula drawn by this macro. It can be used a plus % or minus charge on the center. % % \begin{verbatim} % AUXLIST = % % {0+} : + charge (or another one chararacter) on the center % \end{verbatim} % % \begin{verbatim} % SUBSLIST: list of substituents % % for n = 1 to 4 % % n : single bond at n-atom % % for 0 : cetral atom (e.g. 0==C) % \end{verbatim} % % \begin{verbatim} % e.g. % % \tetrastereo{1==Cl;2==F} % \tetrastereo{1==Cl;4==F;2==CH$_{3}$} % \end{verbatim} % % \begin{macro}{\tetrastereo} % \begin{macro}{\@tetrastero} % \begin{macrocode} \def\tetrastereo{\@ifnextchar[{\@tetrastereo[r}{\@tetrastereo[r]}} \def\@tetrastereo#1]#2{% \begin{picture}(600,600)(-300,-300) \iforigpt \put(-300,-300){\circle*{50}}% \put(-\noshift,-\noshift){\circle{50}}% \typeout{command `tetrastero' origin: % (\the\noshift,\the\noshift) ---> (300,300)}\fi% \put(0,0){\circle{200}}% \@tfor\member:=#1\do{% \expandafter\twoch@@r\member{}{}% \if\@@tmpa 0\relax \putratom{87}{90}{\scriptsize\@@tmpb}\fi}% \@forsemicol\member:=#2\do{% \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax% \expandafter\threech@r\@membera{}{}% \ifcase\@tmpa \putlratom{-40}{-33}{\@memberb}%central atom \or% \put(0,100){\line(0,1){70}}% behind \putlratom{-30}{180}{\@memberb}% and up \or% {\thicklines% \put(-60,10){\line(-5,2){140}}% in front \putlatom{-205}{30}{\@memberb}}% and left \or% \put(0,-100){\line(0,-1){90}}% behind and \putlratom{-30}{-260}{\@memberb}% down \or% {\thicklines% \put(60,10){\line(5,2){140}}% in front \putratom{210}{30}{\@memberb}}% and right \fi\fi}%end of ifcase \end{picture}}%end of macro tetrastereo % \end{macrocode} % \end{macro} % \end{macro} % % \subsection{Tetrahedral unit of inverse stereo type} % % The macro |\dtetrastereo| typesets another tetrahedral unit in a % ball-stick fashion. % The following numbering is adopted in this macro. % % \begin{verbatim} % ***************************** % * tetrahedral unit (stereo) * % ***************************** % % The following numbering is adopted in this macro. % % 1 % % | % 2 -- 0 -- 4 0 <== the original point % | % % 3 % \end{verbatim} % % This macro has an argument |SUBSLIST| as well as an optional % argument |AUXLIST|. % % \begin{verbatim} % \dtetrastereo[AUXLIST]{SUBSLIST} % \end{verbatim} % % The arugument |AUXLIST| designates an character on the central % atom of the formula drawn by this macro. It can be used a plus % or minus charge on the center. % % \begin{verbatim} % AUXLIST = % % {0+} : + charge (or another one chararacter) on the center % \end{verbatim} % % \begin{verbatim} % SUBSLIST: list of substituents % % for n = 1 to 4 % % n : single bond at n-atom % % for 0 : cetral atom (e.g. 0==C) % \end{verbatim} % % \begin{verbatim} % e.g. % % \dtetrastereo{1==Cl;2==F} % \dtetrastereo{1==Cl;4==F;2==CH$_{3}$} % \end{verbatim} % % \begin{macro}{\dtetrastereo} % \begin{macro}{\@dtetrastereo} % \begin{macrocode} \def\dtetrastereo{\@ifnextchar[{\@dtetrastereo[r}{\@dtetrastereo[r]}} \def\@dtetrastereo#1]#2{% \begin{picture}(600,600)(-300,-300) \iforigpt \put(-300,-300){\circle*{50}}% \put(-\noshift,-\noshift){\circle{50}}% \typeout{command `dtetrastero' origin: % (\the\noshift,\the\noshift) ---> (300,300)}\fi% \put(0,0){\circle{200}}% \@tfor\member:=#1\do{% \expandafter\twoch@@r\member{}{}% \if\@@tmpa 0\relax \putratom{87}{90}{\scriptsize\@@tmpb}\fi}% \@forsemicol\member:=#2\do{% \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax% \expandafter\threech@r\@membera{}{}% \ifcase\@tmpa \putlratom{-40}{-33}{\@memberb}%central atom \or% \put(0,100){\line(0,1){70}}% behind \putlratom{-30}{180}{\@memberb}% and up \or% \put(-94,-10){\line(-5,-2){108}}% in back \putlatom{-205}{-110}{\@memberb}% and left \or% {\thicklines% \put(0,-50){\line(0,-1){150}}% behind and \putlratom{-30}{-260}{\@memberb}}% down \or% \put(94,-10){\line(5,-2){108}}% in back \putratom{210}{-110}{\@memberb}% and right \fi\fi}%end of ifcase \end{picture}}%end of macro dtetrastereo % \end{macrocode} % \end{macro} % \end{macro} % % \subsection{Ethane unit of stereo type} % % The macro |\ethanestereo| typesets an ethane molecule in a % ball-stick fashion. % The following numbering is adopted in this macro. % % \begin{verbatim} % ************************** % * ethane unit (vertical) * % ************************** % % 5 % | % 6 -- (2) -- 4 % | % | % 1 -- (1) -- 3 <== the original point % | % 2 % \end{verbatim} % % This macro has an argument |SUBSLIST| as well as an optional % argument |AUXLIST|. % % \begin{verbatim} % \ethanestereo[AUXLIST]{ATOMLIST}{SUBSLIST} % \end{verbatim} % % \begin{verbatim} % AUXLIST: list of charges % % {n+} : + charge (or another one chararacter) on n-atom % \end{verbatim} % % \begin{verbatim} % SUBSLIST: list of substituents % % for n = 1 to 6 % % n : single bond at n-atom % % \end{verbatim} % % \begin{verbatim} % ATOMLIST: list of central atoms % % n : atom for n-position (e.g. 1==C) % % \end{verbatim} % % \begin{verbatim} % e.g. % % \ethanestereo{1==Cl;2==F} % \ethanestereo{1==C;2==C}{1==Cl;4==F;2==CH$_{3}$} % \end{verbatim} % % \begin{macro}{\ethanestereo} % \begin{macro}{\@ethanestereo} % \begin{macrocode} \def\ethanestereo{\@ifnextchar[{\@ethanestereo}{\@ethanestereo[]}} \def\@ethanestereo[#1]#2#3{% \begin{picture}(600,800)(-300,-300) \iforigpt \put(-300,-300){\circle*{50}}% \put(-\noshift,-\noshift){\circle{50}}% \typeout{command `ethanestereo' origin: % (\the\noshift,\the\noshift) ---> (300,300)}\fi% \put(0,0){\circle{200}}% \put(0,270){\circle{200}}% \put(0,100){\line(0,1){70}}% central bond \@tfor\member:=#1\do{% \expandafter\twoch@@r\member{}{}% \if\@@tmpa 1\relax \putratom{87}{90}{\scriptsize\@@tmpb} \else\if\@@tmpa 2\relax \putratom{87}{360}{\scriptsize\@@tmpb} \fi\fi}% \def\aaa{#2}% \ifx\aaa\empty\else% \@forsemicol\member:=#2\do{% \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax% \expandafter\threech@r\@membera{}{}% \ifcase\@tmpa% \or\putratom{-40}{-33}{\@memberb}%central atom \or\putratom{-40}{237}{\@memberb}%central atom \fi\fi}%end of ifcase \fi% \@forsemicol\member:=#3\do{% \ifx\member\empty\else \expandafter\@m@mb@r\member;\relax% \expandafter\threech@r\@membera{}{}% \ifcase\@tmpa \putlratom{-40}{-33}{\@memberb}%central atom \or% \put(-94,-10){\line(-5,-2){108}}% in back \putlatom{-205}{-110}{\@memberb}% and left \or% {\thicklines% \put(0,-50){\line(0,-1){150}}% behind and \putlratom{-30}{-260}{\@memberb}}% down \or% \put(94,-10){\line(5,-2){108}}% in back \putratom{210}{-110}{\@memberb}% and right % %%%%%%%% \or% {\thicklines% \put(60,280){\line(5,2){140}}% in front \putratom{210}{300}{\@memberb}}% and right \or% \put(0,370){\line(0,1){70}}% behind \putlratom{-30}{450}{\@memberb}% and up \or% {\thicklines% \put(-60,280){\line(-5,2){140}}% in front \putlatom{-205}{300}{\@memberb}}% and left \fi\fi}%end of ifcase \end{picture}}%end of macro ethanestereo % % \end{macrocode} % \end{macro} % \end{macro} % % \Finale % \endinput