summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/xymtex/base/bondcolor.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/xymtex/base/bondcolor.dtx')
-rw-r--r--macros/latex/contrib/xymtex/base/bondcolor.dtx738
1 files changed, 738 insertions, 0 deletions
diff --git a/macros/latex/contrib/xymtex/base/bondcolor.dtx b/macros/latex/contrib/xymtex/base/bondcolor.dtx
new file mode 100644
index 0000000000..fc86de1cec
--- /dev/null
+++ b/macros/latex/contrib/xymtex/base/bondcolor.dtx
@@ -0,0 +1,738 @@
+% \iffalse meta-comment
+%% File: bondcolor.dtx
+%
+% Copyright 2010 by Shinsaku Fujita
+%
+% This file is part of XyMTeX system.
+% -------------------------------------
+%
+% This file (bondcolor.sty) is a successor to:
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 1.00}
+% \typeout{ -- Released December 1, 1993 by Shinsaku Fujita}
+% Copyright (C) 1993 by Shinsaku Fujita, all rights reserved.
+%
+% This file is a part of the macro package ``XyMTeX'' which has been
+% designed for typesetting chemical structural formulas.
+%
+% This file is to be contained in the ``xymtex'' directory which is
+% an input directory for TeX. It is a LaTeX optional style file and
+% should be used only within LaTeX, because several macros of the file
+% are based on LaTeX commands.
+%
+% For the review of XyMTeX, see
+% (1) Shinsaku Fujita, ``Typesetting structural formulas with the text
+% formatter TeX/LaTeX'', Computers and Chemistry, in press.
+% The following book deals with an application of TeX/LaTeX to
+% preparation of manuscripts of chemical fields:
+% (2) Shinsaku Fujita, ``LaTeX for Chemists and Biochemists''
+% Tokyo Kagaku Dozin, Tokyo (1993) [in Japanese].
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+% The Current Maintainer of this work is Shinsaku Fujita.
+%
+% This work consists of the files bondcolor.dtx and bondcolor.ins
+% and the derived file lewisstruc.sty.
+%
+% Please report any bugs, comments, suggestions, etc. to:
+% Shinsaku Fujita,
+% Shonan Institute of Chemoinformatics and Mathematical Chemistry
+% Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun, Kanagawa 250-0019 Japan
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{bondcolor}
+% \def\versi@ndate{October 01, 2010}
+% \def\versi@nno{ver5.00}
+% \def\copyrighth@lder{SF}% Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \fi
+%
+% \CheckSum{960}
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%
+% \setcounter{StandardModuleDepth}{1}
+%
+% \StopEventually{}
+% \MakeShortVerb{\|}
+%
+% \iffalse
+% \changes{v5.00}{2010/10/01}{First release for XyMTeX5.00}
+% \fi
+%
+% \iffalse
+%<*driver>
+\NeedsTeXFormat{pLaTeX2e}
+% \fi
+\ProvidesFile{bondcolor.dtx}[2010/10/01 v5.00 bondcolor package file]
+% \iffalse
+\documentclass{ltxdoc}
+\GetFileInfo{lewisstruc.dtx}
+%
+% %%XyMTeX Logo: Definition 2%%%
+\def\UPSILON{\char'7}
+\def\XyM{X\kern-.30em\smash{%
+\raise.50ex\hbox{\UPSILON}}\kern-.30em{M}}
+\def\XyMTeX{\XyM\kern-.1em\TeX}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\title{Bond Coloring by {\sffamily bondcolor.sty}
+(\fileversion) of \XyMTeX{}}
+\author{Shinsaku Fujita \\
+Shonan Institute of Chemoinformatics and
+Mathematical Chemistry \\
+Kanagawa, 258-0019 Japan
+}
+\date{\filedate}
+%
+\begin{document}
+ \maketitle
+ \DocInput{bondcolor.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \section{Introduction}\label{bondcolor:intro}
+%
+% \subsection{Options for {\sffamily docstrip}}
+%
+% \DeleteShortVerb{\|}
+% \begin{center}
+% \begin{tabular}{|l|l|}
+% \hline
+% \emph{option} & \emph{function}\\ \hline
+% bondcolor & bondcolor.sty \\
+% driver & driver for this dtx file \\
+% \hline
+% \end{tabular}
+% \end{center}
+% \MakeShortVerb{\|}
+%
+% \subsection{Version Information}
+%
+% \begin{macrocode}
+%<*bondcolor>
+\typeout{Part of XyMTeX for Drawing Chemical Structural Formulas. Version 5.00}
+\typeout{ -- Released October 01, 2010 by Shinsaku Fujita}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\j@urnalname{bondcolor}
+\def\versi@ndate{October 01, 2010}
+\def\versi@nno{ver5.00}
+\def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\typeout{XyMTeX Macro File `\j@urnalname' (\versi@nno) <\versi@ndate>%
+\space[\copyrighth@lder]}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\RequirePackage{chemstr}
+\RequirePackage{hetarom}
+\RequirePackage{hetaromh}
+\RequirePackage{methylen}
+% \end{macrocode}
+%
+% \section{Substitution Bond Coloring}
+%
+% \begin{macro}{\ifcolorBLsw}
+% A switch |\ifcolorBLsw| is introduced to judging whether the present process
+% is in BONDLIST or in ATOMLIST.
+%
+% \begin{macrocode}
+\newif\ifcolorBLsw \colorBLswfalse
+% \end{macrocode}
+% \end{macro}
+%
+% The macro |\RightAtomBond| is defined to color substitution bonds (and substituents),
+% when it is to be designated in ATOMLIST or in BONDLIST of a command for drawing
+% a structural formula.
+%
+% \begin{verbatim}
+% \RightAtomBond(x,y)[COLOR]<CLIPPING>{SUBSTLIST}
+% \end{verbatim}
+%
+% The first optional argument (x,y) represents increments of x-, and y-coordinates,
+% which may be added if adjustment is necessary. The default value is (0,0).
+% The second optional argument [COLOR] is a command of coloring (e.g., |\red|).
+% The default value is |\black|.
+% The third optional argument <CLIPPING> accomodates \verb/<s>/ for non-clipping and
+% a vacant or omitted argument represents a clipping of a corner.
+% The defalt value is a vacant value.
+% The fourth argument is a SUBSLIST, in which a substitution number 1--8 represents
+% a bond slope to be drawn. Slopes to cover a right-handed half circle are numbered
+% on a similar line to those of the |\ryl| macro, as follows:
+% \begin{verbatim}
+% SLOPE
+%
+% 1 : (0,1)
+% 2 : (3,5)
+% 3 : (1,1)
+% 4 : (1,0)
+% 5 : (5,-3)
+% 6 : (1,-1)
+% 7 : (3,-5)
+% 8 : (0,-1)
+% \end{verbatim}
+% As for the format of the SUBSLIST, see the specification of the |\ryl| command.
+%
+% \begin{macro}{\RightAtomBond}
+% \begin{macro}{\Right@tomBond}
+% \begin{macro}{\Right@tomB@nd}
+% \begin{macro}{\Right@t@mB@nd}
+% \begin{macrocode}
+\def\RightAtomBond{%
+\@ifnextchar({\Right@tomBond}{\Right@tomBond(0,0)}}
+\def\Right@tomBond(#1,#2){%
+\@ifnextchar[{\Right@tomB@nd(#1,#2)}{\Right@tomB@nd(#1,#2)[\black]}}
+\def\Right@tomB@nd(#1,#2)[#3]{%
+\@ifnextchar<{\Right@t@mB@nd(#1,#2)[#3]}{\Right@t@mB@nd(#1,#2)[#3]<>}}
+\def\Right@t@mB@nd(#1,#2)[#3]<#4>#5{%
+\begingroup
+\global\let\FuseWarning=\futileFuseWarning
+\let\setbscolor=#3\relax
+\@ifundefined{@tmpb}{\edef\@tmpb{0}}{}%dummy
+\@ifundefined{@@tmpa}{\colorBLswfalse}{\if\@@tmpa @\relax\else
+\edef\@@tmpa{a}\colorBLswtrue\fi}%enforced setting
+%\@tempcntXa=\z@ \@tempcntYa=\z@
+\@tempcntXa=#1\relax \@tempcntYa=#2\relax
+\if\@tmpb s\relax
+ \@clipfusefalse
+\else
+ \if#4s\relax
+ \@clipfusefalse
+ \else
+ \ifcolorBLsw
+ \@clipfusetrue
+ \advance\@tempcntXa by5\relax%tentative value
+ \advance\@tempcntYa by-15\relax%tentative value
+ \colorBLswfalse
+ \else
+ \@clipfusetrue
+ \advance\@tempcntXa by40\relax%tentative value
+ \advance\@tempcntYa by38\relax%tentative value
+\fi\fi\fi
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\@forsemicol\member:=#5\do{%
+\ifx\member\empty\else%
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\let\local@tmpa=\@tmpa%global to local 2002/5/30 by SF
+\ifcase\local@tmpa%
+\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)%
+{{\setbscolor\setatombonda}\addbscolor{}{}}%2010/10/01% 0 (upward) (0,1)
+\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)%
+{\setatombondF}\addbscolor{}{}}%2010/10/01%%1 (3,5)
+\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)%
+{\setatombondA}\addbscolor{}{}}%2010/10/01%%2 (1,1)
+\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)%
+{\setatombondf}\addbscolor{}{}}%2010/10/01%%3 (5,3)
+\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)%
+{\setatombondb}\addbscolor{}{}}%2010/10/01%%4 (1,0)
+\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)%
+{\setatombonde}\addbscolor{}{}}%2010/10/01%%5 (5,-3)
+\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)%
+{\setatombondB}\addbscolor{}{}}%2010/10/01%\or%6 (1,-1)
+\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)%
+{\setatombondE}\addbscolor{}{}}%2010/10/01%%7 (3,-5)
+\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)%
+{\setatombondc}\addbscolor{}{}}%2010/10/01%%8 (0,-1)
+\fi%end of ifcase
+\fi}\endgroup}%end of definition of \RightAtomBond
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The macro |\LeftAtomBond| is defined to color substitution bonds (and substituents),
+% when it is to be designated in ATOMLIST or in BONDLIST of a command for drawing
+% a structural formula.
+%
+% \begin{verbatim}
+% \LeftAtomBond(x,y)[COLOR]<CLIPPING>{SUBSTLIST}
+% \end{verbatim}
+%
+% The first optional argument (x,y) represents increments of x-, and y-coordinates,
+% which may be added if adjustment is necessary. The default value is (0,0).
+% The second optional argument [COLOR] is a command of coloring (e.g., |\red|).
+% The default value is |\black|.
+% The third optional argument <CLIPPING> accomodates \verb/<s>/ for non-clipping and
+% a vacant or omitted argument represents a clipping of a corner.
+% The defalt value is a vacant value.
+% The fourth argument is a SUBSLIST, in which a substitution number 1--8 represents
+% a bond slope to be drawn. Slopes to cover a left-handed half circle are numbered
+% on a similar line to those of the |\lyl| macro, as follows:
+%
+% \begin{verbatim}
+% SLOPE
+% 1 : (0,1)
+% 2 : (-3,5)
+% 3 : (-1,1)
+% 4 : (-1,0)
+% 5 : (-5,-3)
+% 6 : (-1,-1)
+% 7 : (-3,-5)
+% 8 : (0,-1)
+% \end{verbatim}
+% As for the format of the SUBSLIST, see the specification of the |\lyl| command.
+%
+% \begin{macro}{\LeftAtomBond}
+% \begin{macro}{\Left@tomBond}
+% \begin{macro}{\Left@tomB@nd}
+% \begin{macro}{\Left@t@mB@nd}
+% \begin{macrocode}
+\def\LeftAtomBond{%
+\@ifnextchar({\Left@tomBond}{\Left@tomBond(0,0)}}
+\def\Left@tomBond(#1,#2){%
+\@ifnextchar[{\Left@tomB@nd(#1,#2)}{\Left@tomB@nd(#1,#2)[\black]}}
+\def\Left@tomB@nd(#1,#2)[#3]{%
+\@ifnextchar<{\Left@t@mB@nd(#1,#2)[#3]}{\Left@t@mB@nd(#1,#2)[#3]<>}}
+\def\Left@t@mB@nd(#1,#2)[#3]<#4>#5{%
+\begingroup
+\global\let\FuseWarning=\futileFuseWarning
+\let\setbscolor=#3\relax
+\@ifundefined{@tmpb}{\edef\@tmpb{0}}{}%dummy
+\@ifundefined{@@tmpa}{\colorBLswfalse}{\if\@@tmpa @\relax\else
+\edef\@@tmpa{a}\colorBLswtrue\fi}%enforced setting
+%\@tempcntXa=\z@ \@tempcntYa=\z@
+\@tempcntXa=#1\relax \@tempcntYa=#2\relax
+\if\@tmpb s\relax
+ \@clipfusefalse
+\else
+ \if#4s\relax
+ \@clipfusefalse
+ \else
+ \ifcolorBLsw
+ \@clipfusetrue
+ \advance\@tempcntXa by5\relax%tentative value
+ \advance\@tempcntYa by-15\relax%tentative value
+ \colorBLswfalse
+ \else
+ \@clipfusetrue
+ \advance\@tempcntXa by40\relax%tentative value
+ \advance\@tempcntYa by38\relax%tentative value
+\fi\fi\fi
+% %%%%%%%%%%%%%%%%%%%%%%%%
+% % setting substituents %
+% %%%%%%%%%%%%%%%%%%%%%%%%
+\@forsemicol\member:=#5\do{%
+\ifx\member\empty\else%
+\expandafter\@m@mb@r\member;\relax%
+\expandafter\threech@r\@membera{}{}%
+\let\local@tmpa=\@tmpa%global to local 2002/5/30 by SF
+\ifcase\local@tmpa%
+\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)%
+{{\setbscolor\setatombonda}\addbscolor{}{}}%2010/10/01% 0 (upward) (0,1)
+\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)%
+{\setatombondD}\addbscolor{}{}}%2010/10/01%%1 (-3,5)
+\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)%
+{\setatombondH}\addbscolor{}{}}%2010/10/01%%2 (-1,1)
+\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)%
+{\setatombondd}\addbscolor{}{}}%2010/10/01%%3 (-5,3)
+\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)%
+{\setatombondh}\addbscolor{}{}}%2010/10/01%%4 (-1,0)
+\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)%
+{\setatombondg}\addbscolor{}{}}%2010/10/01%%5 (-5,-3)
+\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)%
+{\setatombondC}\addbscolor{}{}}%2010/10/01%%6 (-1,-1)
+\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)%
+{\setatombondG}\addbscolor{}{}}%2010/10/01%%7 (-3,-5)
+\or{\setbscolor\Put@Direct(\the\@tempcntXa,\the\@tempcntYa)%
+{\setatombondc}\addbscolor{}{}}%2010/10/01%%8 (0,-1)
+\fi%end of ifcase
+\fi}\endgroup}%end of definition of \LeftAtomBond
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \section{Double Bond Coloring}
+%
+% \begin{macro}{\addvbonda etc.}
+% Basic commands \verb/\addvbonda/ etc. are used to add
+% colored double bonds in commands of
+% drawing six-membered vertical-type structural formulas, where
+% the letter \texttt{v} of \texttt{add--v--bond--a} means a vertical type.
+% The suffix \texttt{a} is a bond specifier.
+% \begin{macrocode}
+\def\addvbonda{\put(0,-406){\bonda}}
+\def\addvbondb{\put(-171,-303){\bondb}}
+\def\addvbondc{\put(-171,-103){\bondc}}
+\def\addvbondd{\put(0,0){\bondd}}
+\def\addvbonde{\put(171,-103){\bonde}}
+\def\addvbondf{\put(171,-303){\bondf}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\addvibonda etc.}
+% Basic commands \verb/\addvibonda/ etc. are used to add
+% colored double bonds in commands of
+% drawing six-membered inverse-vertical-type structural formulas,
+% where the letter \texttt{vi}
+% of \texttt{add--vi--bond--a} means an inverse vertical type.
+% The suffix \texttt{a} is a bond specifier.
+% \begin{macrocode}
+\def\addvibonda{\put(0,0){\bondc}}
+\def\addvibondb{\put(-171,-103){\bondb}}
+\def\addvibondc{\put(-171,-303){\bonda}}
+\def\addvibondd{\put(0,-406){\bondf}}
+\def\addvibonde{\put(171,-303){\bonde}}
+\def\addvibondf{\put(171,-103){\bondd}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\addhbonda etc.}
+% Basic commands \verb/\addhbonda/ etc. are used to add
+% colored double bonds in commands of
+% drawing six-membered horizontal-type structural formulas,
+% where the letter \texttt{h}
+% of \texttt{add--h--bond--a} means a horizontal type.
+% The suffix \texttt{a} is a bond specifier.
+% \begin{macrocode}
+\def\addhbonda{\put(0,0){\hbonda}}
+\def\addhbondb{\put(-103,-171){\hbondb}}
+\def\addhbondc{\put(-303,-171){\hbondc}}
+\def\addhbondd{\put(-406,0){\hbondd}}
+\def\addhbonde{\put(-303,171){\hbonde}}
+\def\addhbondf{\put(-103,171){\hbondf}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\addhibonda etc.}
+% Basic commands \verb/\addhibonda/ etc. are used to add
+% colored double bonds in commands of
+% drawing six-membered inverse horizontal-type structural formulas,
+% where the letter \texttt{hi}
+% of \texttt{add--hi--bond--a} means an inverse horizontal type.
+% The suffix \texttt{a} is a bond specifier.
+% \begin{macrocode}
+\def\addhibonda{\put(-403,0){\hbondc}}
+\def\addhibondb{\put(-303,-171){\hbondb}}
+\def\addhibondc{\put(-103,-171){\hbonda}}
+\def\addhibondd{\put(0,0){\hbondf}}
+\def\addhibonde{\put(-103,171){\hbonde}}
+\def\addhibondf{\put(-303,171){\hbondd}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\addvvbonda etc.}
+% Basic commands \verb/\addvvbonda/ etc. are used to add
+% colored double bonds in commands of
+% drawing five-membered vertical-type structural formulas, where
+% the first letter \texttt{v} of \texttt{add--v--v--bond--a} means
+% a five-membered ring (roman numeral) and the latter \texttt{v}
+% means a vertical type.
+% The suffix \texttt{a} is a bond specifier.
+% \begin{macrocode}
+\def\addvvbonda{\put(0,0){\bondc}}
+\def\addvvbondb{\put(-171,-103){\bondb}}
+\def\addvvbondc{\put(-171,-103){\bondhoriz}}
+\def\addvvbondd{\put(171,-303){\bonde}}
+\def\addvvbonde{\put(171,-103){\bondd}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\addvvibonda etc.}
+% Basic commands \verb/\addvvibonda/ etc. are used to add
+% colored double bonds in commands of
+% drawing five-membered inverse vertical-type structural formulas, where
+% the first letter \texttt{v} of \texttt{add--v--vi--bond--a} means
+% a five-membered ring (roman numeral) and the latter \texttt{vi}
+% means an inverse vertical type. The suffix \texttt{a} is a bond specifier.
+% \begin{macrocode}
+\def\addvvibonda{\put(0,-406){\bonda}}
+\def\addvvibondb{\put(-171,-303){\bondb}}
+\def\addvvibondc{\put(-171,-103){\bondhorizi}}
+\def\addvvibondd{\put(171,-103){\bonde}}
+\def\addvvibonde{\put(171,-303){\bondf}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\addvhbonda etc.}
+% Basic commands \verb/\addvhbonda/ etc. are used to add
+% colored double bonds in commands of
+% drawing five-membered horizontal-type structural formulas, where
+% the first letter \texttt{v} of \texttt{add--v--h--bond--a} means
+% a five-membered ring (roman numeral) and the latter \texttt{h}
+% means a horizontal type.
+% The suffix \texttt{a} is a bond specifier.
+% \begin{macrocode}
+\def\addvhbonda{\put(-403,0){\hbondc}}
+\def\addvhbondb{\put(-303,-171){\hbondb}}
+\def\addvhbondc{\put(-303,-171){\hbondvert}}
+%\def\addvhbondd{\put(0,0){\hbondf}}
+\def\addvhbondd{\put(-103,171){\hbonde}}
+\def\addvhbonde{\put(-303,171){\hbondd}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\addvhibonda etc.}
+% Basic commands \verb/\addvhibonda/ etc. are used to add
+% colored double bonds in commands of
+% drawing five-membered inverse horizontal-type structural formulas, where
+% the first letter \texttt{v} of \texttt{add--v--hi--bond--a} means
+% a five-membered ring (roman numeral) and the latter \texttt{hi}
+% means an inverse horizontal type. The suffix \texttt{a} is a bond specifier.
+% \begin{macrocode}
+\def\addvhibonda{\put(0,0){\hbonda}}
+\def\addvhibondb{\put(-103,-171){\hbondb}}
+\def\addvhibondc{\put(-303,-171){\hbondverti}}
+%\def\addvhibondd{\put(-406,0){\hbondd}}
+\def\addvhibondd{\put(-303,171){\hbonde}}
+\def\addvhibonde{\put(-103,171){\hbondf}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\MethyleneBonda etc.}
+% Basic commands \verb/\MethyleneBonda/ etc. are used to add
+% colored double bonds in commands of drawing dimethylene to decamethylene units
+% of normal type, where the suffix \texttt{a}, etc. are bond specifiers.
+% \begin{macrocode}
+\def\MethyleneBonda{\Put@Direct(171,-303){\bondA}}
+\def\MethyleneBondb{\Put@Direct(0,-406){\bondB}}
+\def\MethyleneBondc{\Put@Direct(171,-303){\bondA}}
+\def\MethyleneBondd{\Put@Direct(0,-406){\bondB}}
+\def\MethyleneBonde{\Put@Direct(171,-303){\bondA}}
+\def\MethyleneBondf{\Put@Direct(0,-406){\bondB}}
+\def\MethyleneBondg{\Put@Direct(171,-303){\bondA}}
+\def\MethyleneBondh{\Put@Direct(0,-406){\bondB}}
+\def\MethyleneBondi{\Put@Direct(171,-303){\bondA}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\MethyleneBondA etc.}
+% Basic commands \verb/\MethyleneBondA/ etc. are used to add
+% colored double bonds in commands of drawing dimethylene to decamethylene units
+% of normal type, where the suffix \texttt{A}, etc. are bond specifiers.
+% A double bond corresponding to the suffix \texttt{A} appears an alternate side
+% the counterpart due to the suffix \texttt{a}.
+% \begin{macrocode}
+\def\MethyleneBondA{\Put@Direct(0,-406){\bondAA}}
+\def\MethyleneBondB{\Put@Direct(-171,-303){\bondBB}}
+\def\MethyleneBondC{\Put@Direct(0,-406){\bondAA}}
+\def\MethyleneBondD{\Put@Direct(-171,-303){\bondBB}}
+\def\MethyleneBondE{\Put@Direct(0,-406){\bondAA}}
+\def\MethyleneBondF{\Put@Direct(-171,-303){\bondBB}}
+\def\MethyleneBondG{\Put@Direct(0,-406){\bondAA}}
+\def\MethyleneBondH{\Put@Direct(-171,-303){\bondBB}}
+\def\MethyleneBondI{\Put@Direct(0,-406){\bondAA}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\MethyleneiBonda etc.}
+% Basic commands \verb/\MethyleneiBonda/ etc. are used to add
+% colored double bonds in commands of drawing dimethylene to decamethylene units
+% of inverse type, where the suffix \texttt{a}, etc. are bond specifiers.
+% \begin{macrocode}
+\def\MethyleneiBonda{\Put@Direct(171,-103){\bondAi}}
+\def\MethyleneiBondb{\Put@Direct(0,0){\bondBi}}
+\def\MethyleneiBondc{\Put@Direct(171,-103){\bondAi}}
+\def\MethyleneiBondd{\Put@Direct(0,0){\bondBi}}
+\def\MethyleneiBonde{\Put@Direct(171,-103){\bondAi}}
+\def\MethyleneiBondf{\Put@Direct(0,0){\bondBi}}
+\def\MethyleneiBondg{\Put@Direct(171,-103){\bondAi}}
+\def\MethyleneiBondh{\Put@Direct(0,0){\bondBi}}
+\def\MethyleneiBondi{\Put@Direct(171,-103){\bondAi}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\MethyleneiBondA etc.}
+% Basic commands \verb/\MethyleneiBondA/ etc. are used to add
+% colored double bonds in commands of drawing dimethylene to decamethylene units
+% of inverse type, where the suffix \texttt{A}, etc. are bond specifiers.
+% A double bond corresponding to the suffix \texttt{A} appears an alternate side
+% the counterpart due to the suffix \texttt{a}.
+% \begin{macrocode}
+\def\MethyleneiBondA{\Put@Direct(0,0){\bondAAi}}
+\def\MethyleneiBondB{\Put@Direct(-171,-103){\bondBBi}}
+\def\MethyleneiBondC{\Put@Direct(0,0){\bondAAi}}
+\def\MethyleneiBondD{\Put@Direct(-171,-103){\bondBBi}}
+\def\MethyleneiBondE{\Put@Direct(0,0){\bondAAi}}
+\def\MethyleneiBondF{\Put@Direct(-171,-103){\bondBBi}}
+\def\MethyleneiBondG{\Put@Direct(0,0){\bondAAi}}
+\def\MethyleneiBondH{\Put@Direct(-171,-103){\bondBBi}}
+\def\MethyleneiBondI{\Put@Direct(0,0){\bondAAi}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\adddbcolor}
+% The user command \verb/\adddbcolor/ is used to specify a color of
+% a double bond to be changed. The first argument specifies types of
+% structures to be drawn by designating \texttt{v}, \texttt{vi}, etc.
+% The vacant argument and \texttt{i} correspond to polymethylene units
+% defined in \textsf{methylen} package.
+% The second argument specifies a color to be changed.
+% The command \verb/\adddbcolor/ is placed in a bond list.
+% \begin{macrocode}
+\def\adddbcolor#1#2{%
+\global\let\FuseWarning=\futileFuseWarning
+\global\@dbondcolortrue
+\edef\@@tmpBondSp{#1}%
+\edef\@@tmpBondSpi{i}%
+\ifx\@@tmpBondSp\empty\relax%\tetrahemethylene etc.
+{\Put@Direct(0,0){#2\expandafter\csname MethyleneBond\@@tmpa\endcsname}}%
+\else\ifx\@@tmpBondSp\@@tmpBondSpi\relax%\tetramethyleni etc.
+{\Put@Direct(0,0){#2\csname MethyleneiBond\@@tmpa\endcsname}}%
+\else
+{\Put@Direct(0,0){#2\csname add#1bond\@@tmpa\endcsname}}%
+\fi\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Skeletal Bond Coloring}
+%
+% \begin{macro}{\addskbcolor}
+% The user command \verb/\addskbcolor/ is used to specify a color of
+% a skeletal bond to be changed. The first argument specifies types of
+% structures to be drawn by designating \texttt{v}, \texttt{h}, etc.
+% The second argument specifies a color to be changed.
+% The command \verb/\addskbcolor/ is placed in a skeletal bond list.
+% \begin{macrocode}
+\def\addskbcolor#1#2{%
+\iflongskbond
+{#2\expandafter\csname\skbondreplace\endcsname}%
+\else
+\if#1\empty\relax
+{#2\expandafter\csname skbond\skbondreplace\endcsname}%
+\else\if#1v\relax
+{#2\expandafter\csname skbond\skbondreplace\endcsname}%
+\else
+{#2\expandafter\csname #1skbond\skbondreplace\endcsname}%
+\fi\fi\fi%
+\global\let\FuseWarning=\futileFuseWarning%for methylen package
+\global\@dbondcolortrue%for heterarom and heteraromh packages
+}
+%
+%\def\addskbcolor#1#2{%
+% \edef\@@tmpsBondSp{#1}%
+% \edef\@@tmpsBondSpv{v}%
+%\iflongskbond
+%{#2\expandafter\csname\skbondreplace\endcsname}%
+%\else
+%\ifx\@@tmpsBondSp\empty\relax
+%{#2\expandafter\csname skbond\skbondreplace\endcsname}%
+%\else\ifx\@@tmpsBondSp\@@tmpsBondSpv\relax
+%{#2\expandafter\csname skbond\skbondreplace\endcsname}%
+%\else
+%{#2\expandafter\csname #1skbond\skbondreplace\endcsname}%
+%\fi\fi\fi%
+%\global\let\FuseWarning=\futileFuseWarning%for methylen package
+%\global\@dbondcolortrue%for heterarom and heteraromh packages
+%}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\red etc.}
+% \changes{v5.00}{2010/10/01}{Colors for TeX/LaTeX mode}
+% \begin{macrocode}
+\def\red{\color{red}}
+\def\blue{\color{blue}}
+\def\green{\color{green}}
+\def\black{\color{black}}
+\def\cyan{\color{cyan}}
+\def\yellow{\color{yellow}}
+\def\magenta{\color{magenta}}
+\def\white{\color{white}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\xymcolor}
+% \begin{macro}{\red etc.}
+% These macros are defined to avoid \texttt{**Warning** color stack underflow}
+% during processing by the dvipdfmx converter.
+% \changes{v5.00}{2010/10/01}{Added: Colors for TeX/LaTeX mode}
+% \begin{macrocode}
+\def\xymcolor#1#2{\mbox{\color{#1}#2}}
+\def\redx#1{\xymcolor{red}{#1}}
+\def\bluex#1{\xymcolor{blue}{#1}}
+\def\greenx#1{\xymcolor{green}{#1}}
+\def\blackx#1{\xymcolor{black}{#1}}
+\def\cyanx#1{\xymcolor{cyan}{#1}}
+\def\yellowx#1{\xymcolor{yellow}{#1}}
+\def\magentax#1{\xymcolor{magenta}{#1}}
+\def\whitex#1{\xymcolor{white}{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\Color@@Line}
+% \begin{macro}{\Color@Line}
+% \changes{v5.00}{2010/10/01}{Colors for TeX/LaTeX mode}
+% The |\Color@Line| macro is used to erase an old line by setting color to be white.
+% \begin{macrocode}
+\def\Color@@Line{%
+\@ifnextchar[{\C@lor@@Line}{\C@lor@@Line[0.4pt]}}
+\def\C@lor@@Line[#1](#2,#3)(#4,#5)#6#7{%
+\begingroup
+\@tempdima=#1\relax
+\ifdim\@tempdima=0.4pt\else
+\XyMTeXWarning{The line width is ineffective for TeX/LaTeX mode}%
+\fi
+\put(0,0){\csname #7\endcsname \Put@Line(#2,#3)(#4,#5){#6}}%
+\endgroup}%end of \Color@@Line
+\let\Color@Line=\Color@@Line%for TeX/LaTeX mode
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\replaceSKbond}
+% The user command \verb/\replaceSKbond/ is used to specify a color of
+% a skeletal bond to be changed. The first optional argument specifies
+% the bond width to be changed if necessary.
+% The arguments in the first pair of parentheses specify the original point.
+% The arguments in the second pair of parentheses specify the slope e.g., (5,3).
+% The next argument indicates the projection length to the x-axis.
+% The last argument indicates a color to be applied.
+% The command \verb/\replaceSKbond/ is placed in a bond list.
+% \begin{macrocode}
+\def\replaceSKbond{%
+\@ifnextchar[{\repl@ceSKbond}{\repl@ceSKbond[0.4pt]}}
+\def\repl@ceSKbond[#1](#2,#3)(#4,#5)#6#7{\begingroup%
+\global\let\FuseWarning=\futileFuseWarning
+\global\@dbondcolortrue
+\def\thinLineWidth{#1}%
+\@tempdima=#1 \advance\@tempdima by1.2pt
+\put(0,0){\Color@Line[\the\@tempdima](#2,#3)(#4,#5){#6}{white}}%
+\put(0,0){#7\Put@Line(#2,#3)(#4,#5){#6}}\endgroup}%
+%
+%\def\replaceSKbond{%
+%\@ifnextchar[{\repl@ceSKbond}{\repl@ceSKbond[0.4pt]}}
+%\def\repl@ceSKbond[#1](#2,#3)(#4,#5)#6#7{\begingroup%
+%\global\let\FuseWarning=\futileFuseWarning
+%\global\@dbondcolortrue
+%\def\thinLineWidth{#1}%
+%\@tempdima=#1 \advance\@tempdima by1.2pt
+%\put(0,0){\edef\thinLineWidth{\the\@tempdima}\white\Put@Line(#2,#3)(#4,#5){#6}}%
+%\put(0,0){#7\Put@Line(#2,#3)(#4,#5){#6}}\endgroup}%
+%
+\endinput
+%</bondcolor>
+% \end{macrocode}
+% \end{macro}
+%
+% \Finale
+%
+\endinput