% \iffalse meta-comment
%% File: xymtx-pdf.dtx
%
%  Copyright 2002,2004,2005,2009,2010,2013 by Shinsaku Fujita
%
%  This file is part of XyMTeX system.
%  -------------------------------------
%
% This file is a part of the macro package ``XyMTeX'' which has been 
% designed for typesetting chemical structural formulas.
%
% This file is to be contained in the ``xymtex'' directory which is 
% an input directory for TeX. It is a LaTeX optional style file and 
% should be used only within LaTeX, because several macros of the file 
% are based on LaTeX commands. 
%
% The following book deals with an application of TeX/LaTeX to 
% preparation of manuscripts of chemical fields:
%  (1)  Shinsaku Fujita, ``LaTeX for Chemists and Biochemists'' 
%    Tokyo Kagaku Dozin, Tokyo (1993) [in Japanese]. 
%  (2)  Shinsaku Fujita, ``XyMTeX. Typesetting Chemical Structural
%    Formulas'' Addison-Wesley, New York (1997).  
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% of this license or (at your option) any later version.
% The latest version of this license is in
%   http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status `maintained'. 
% The Current Maintainer of this work is Shinsaku Fujita.
%
% This work consists of the files xymtx-pdf.dtx and xymtx-pdf.ins
% and the derived file xymtx-pdf.sty.
%
% Please report any bugs, comments, suggestions, etc. to:
%   Shinsaku Fujita, 
%   Shonan Institute of Chemoinformatics and 
%   Mathematical Chemistry
%   shinsaku_fujita@nifty.com
%
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \def\j@urnalname{xymtx-ps}
% \def\versi@ndate{May 30, 2002}
% \def\versi@nno{ver1.00}
% \def\copyrighth@lder{SF} % Shinsaku Fujita
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \def\j@urnalname{xymtx-ps}
% \def\versi@ndate{May 30, 2002}
% \def\versi@nno{ver1.00}
% \def\copyrighth@lder{SF} % Shinsaku Fujita
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \def\j@urnalname{xymtx-ps}
% \def\versi@ndate{August 30, 2004}
% \def\versi@nno{ver4.01}
% \def\copyrighth@lder{SF} % Shinsaku Fujita
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \def\j@urnalname{xymtx-ps}
% \def\versi@ndate{December 20, 2004}
% \def\versi@nno{ver4.02}
% \def\copyrighth@lder{SF} % Shinsaku Fujita
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \def\j@urnalname{xymtx-ps}
% \def\versi@ndate{June 20, 2005}
% \def\versi@nno{ver4.03}
% \def\copyrighth@lder{SF} % Shinsaku Fujita
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \def\j@urnalname{xymtx-ps}
% \def\versi@ndate{August 02, 2005}
% \def\versi@nno{ver4.03a}
% \def\copyrighth@lder{SF} % Shinsaku Fujita
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \def\j@urnalname{xymtx-ps}
% \def\versi@ndate{June 15, 2009}
% \def\versi@nno{ver4.04a}
% \def\copyrighth@lder{SF} % Shinsaku Fujita
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \def\j@urnalname{xymtx-ps}
% \def\versi@ndate{November 05, 2009}
% \def\versi@nno{ver4.05}
% \def\copyrighth@lder{SF} % Shinsaku Fujita
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \def\j@urnalname{xymtx-pdf}
% \def\versi@ndate{October 01, 2010}
% \def\versi@nno{ver5.00}
% \def\copyrighth@lder{SF} % Shinsaku Fujita
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \def\j@urnalname{xymtx-pdf}
% \def\versi@ndate{November 23, 2010}
% \def\versi@nno{ver5.00b}
% \def\copyrighth@lder{SF} % Shinsaku Fujita
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \def\j@urnalname{xymtx-pdf}
% \def\versi@ndate{March 10, 2013}
% \def\versi@nno{ver5.01b}
% \def\copyrighth@lder{SF} % Shinsaku Fujita
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \def\j@urnalname{xymtx-pdf}
% \def\versi@ndate{May 27, 2013}
% \def\versi@nno{ver5.01bb}
% \def\copyrighth@lder{SF} % Shinsaku Fujita
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% \fi
%
% \CheckSum{1761}
%% \CharacterTable
%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%%   Digits        \0\1\2\3\4\5\6\7\8\9
%%   Exclamation   \!     Double quote  \"     Hash (number) \#
%%   Dollar        \$     Percent       \%     Ampersand     \&
%%   Acute accent  \'     Left paren    \(     Right paren   \)
%%   Asterisk      \*     Plus          \+     Comma         \,
%%   Minus         \-     Point         \.     Solidus       \/
%%   Colon         \:     Semicolon     \;     Less than     \<
%%   Equals        \=     Greater than  \>     Question mark \?
%%   Commercial at \@     Left bracket  \[     Backslash     \\
%%   Right bracket \]     Circumflex    \^     Underscore    \_
%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%%   Right brace   \}     Tilde         \~}
%
% \setcounter{StandardModuleDepth}{1}
%
% \StopEventually{}
% \MakeShortVerb{\|}
%
% \iffalse
% \changes{v1.00}{2002/05/30}{first edition for LaTeX2e}
% \changes{v4.01}{2004/08/30}{Adjust for XyMTeX version 4.01}
% \changes{v4.02}{2004/12/20}{Wedged bonds for stereochemistry}
% \changes{v4.03}{2005/06/20}{Wave bonds for stereochemistry}
% \changes{v4.03a}{2005/08/02}{Bug fix for the compatibility with 
% \changes{v4.04a}{2009/06/15}{Bug fix for \cs{\Put@@@@Direct}} 
% \changes{v4.05}{2009/11/05}{Bug fix for \cs{\Put@@@@Direct}; pLaTeXe vs. LaTeXe} 
% \changes{v5.00}{2010/10/01}{Change the PostScript mode into the PDF mode} 
% \changes{v5.00b}{2010/11/23}{added the pgfcore package for pdflatex}
% \changes{v5.01b}{2013/03/10}{Bug fix for \cs{zahyozobun}}
% \changes{v5.01bb}{2013/05/27}{\cs{WedgeAsSubstX} etc.}
% \changes{v5.01}{2013/06/21}{\cs{WavyAsSubst} etc.}
% \fi
%
% \iffalse
%<*driver>
\NeedsTeXFormat{pLaTeX2e}
% \fi
\ProvidesFile{xymtx-pdf.dtx}[2013/06/21 v5.01 xymtx-pdf package file]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{xymtx-pdf.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{Chemistry Conventions by {\sffamily xymtx-pdf.sty} 
(\fileversion) of \XyMTeX{}}
\author{Shinsaku Fujita \\ 
Shonan Institute of Chemoinformatics Mathematical Chemistry, \\
Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun, 
Kanagawa-Ken, 258-0019 Japan 
}
\date{\filedate}
%
\begin{document}
   \maketitle
   \DocInput{xymtx-pdf.dtx}
\end{document}
%</driver>
% \fi
%
% \section{Introduction}\label{xymtx-pdf:intro}
%
% This package aims at converting XyMTeX documents into PDF by 
% using the dvipdfm(x) converter or its equivalent. The codes 
% contained in xymtx-ps.dtx for the PostScript mode of XyMTeX 
% have been changed and extended to match direct conversion 
% into PDF files. 
%
% \subsection{Options for {\sffamily docstrip}}
%
% \DeleteShortVerb{\|}
% \begin{center}
% \begin{tabular}{|l|l|}
% \hline
% \emph{option} & \emph{function}\\ \hline
% xymtxpdf & xymtx-pdf.sty \\
% driver & driver for this dtx file \\
% \hline
% \end{tabular}
% \end{center}
% \MakeShortVerb{\|}
%
% \subsection{Version Information}
%
%    \begin{macrocode}
%<*xymtxpdf>
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\j@urnalname{xymtx-pdf}
\def\versi@ndate{June 21, 2013}
\def\versi@nno{ver5.01}
\def\copyrighth@lder{SF} % Shinsaku Fujita
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\typeout{XyMTeX Macro File `\j@urnalname' (\versi@nno) <\versi@ndate>%
\space[\copyrighth@lder]}
%    \end{macrocode}
%
% \section{Input of basic macros}
%
% To assure the compatibility to \LaTeX{}2.09 (the native mode), 
% the commands added by \LaTeXe{} have not been used in the resulting sty 
% files ({\sf ccycle.sty} for the present case).  Hence, the combination 
% of |\input| and |\@ifundefined| is used to crossload sty 
% files ({\sf chemstr.sty} for the present case) in place of the 
% |\RequirePackage| command of \LaTeXe{}. 
% The global setting of unit by |\psset| has caused imcompatibility 
% with the prosper package and so has been changed into a local setting. 
% \changes{v4.03a}{2005/08/02}{Bug fix for the compatibility with 
%  the prosper package}
% \changes{v5.00b}{2010/11/23}{added the pgfcore package for pdflatex}
%
%    \begin{macrocode}
% *************************
% * input of basic macros *
% *************************
\@ifundefined{setsixringv}{\input chemstr.sty\relax}{}
\RequirePackage{tikz}
\RequirePackage{pgfcore}%%%added 2010/11/23 by S. Fujita
\RequirePackage{xcolor}
\usetikzlibrary{arrows,decorations.pathmorphing,backgrounds,fit,calc}
\unitlength=0.1pt
\def\white{\color{white}}
%    \end{macrocode}
%
%    \begin{macrocode}
\newif\if@thicklinesw \@thicklineswfalse
\def\Thick@Lines{\@thicklineswtrue}%redefinition
\def\Thin@Lines{\@thicklineswfalse}%redefinition
\def\thickLineWidth{1.6pt}
\def\thinLineWidth{0.4pt}
%    \end{macrocode}
%
% Temporary count registers: 
%    \begin{macrocode}
\newcount\XyMTeXnuma
\newcount\XyMTeXnumb
\newcount\XyMTeXnumc
\newcount\XyMTeXnumd
\newcount\XyMTeXnume
\newcount\XyMTeXnumf
\newcount\XyMTeXnumg
\newcount\XyMTeXnumh
\newcount\XyMTeXnumi
\newcount\XyMTeXcnta
\newcount\XyMTeXcntb
%    \end{macrocode}
% 
% Temporary dimension registers: 
%    \begin{macrocode}
\newdimen\XyMTeXdima
\newdimen\XyMTeXdimb
\newdimen\XyMTeXdimc
\newdimen\XyMTeXdimd
\newdimen\XyMTeXdime
%    \end{macrocode}
%
% Temporary box registers:
%    \begin{macrocode}
\newbox\BondBox
%    \end{macrocode}
%
%
% The macro |\Put@@@@Line| can draw dashed bonds or wedged bonds for supporting 
% stereochemistry. Two switches are available as follows: 
%
% \begin{macro}{changedashtowedge}
% \begin{macro}{changewedgetodash}
% \changes{v4.02}{2004/12/20}{For PS mode: Switch for wedged bonds}
%    \begin{macrocode}
\newif\if@wedgesw \@wedgeswtrue
\newif\if@hasheddashsw \@hasheddashswtrue
\def\wedgehasheddash{\@wedgeswtrue\@hasheddashswtrue}
\def\wedgehashedwedge{\@wedgeswtrue\@hasheddashswfalse}
\def\dashhasheddash{\@wedgeswfalse\@hasheddashswtrue}
\@ifundefined{ifmolfront}{\newif\ifmolfront \molfrontfalse}{}
\@ifundefined{if@skbondlist}{\newif\if@skbondlist \@skbondlistfalse}{}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\setUnitHalfScale}
%
% The macro |\setUnitHalfScale| calculates the half of a line width 
% (such as |\thinLineWidth| and |\thickLineWidth|), which is used 
% to adjust the staring point of a bond line.  This macro is used 
% in |\PUT@@@@bondLINE|. 
%
% \begin{macro}{\NumRound}
% \begin{macro}{\UHalfScaleGain}
% These macros result in, e.g., 
% 0.4pt $\rightarrow$ 0.4/0.1 (/2) $\rightarrow$ 1.999 $\rightarrow$ 2. 
% (Not used)
%
%    \begin{macrocode}
\def\NumRound#1.#2#3\@nil{%shishagonyu
\begingroup
\XyMTeXcnta=0 \XyMTeXcntb=0
\XyMTeXcnta=#1 %%\typeout{A:\the\XyMTeXcnta;}
\XyMTeXcntb=#2 %%\typeout{B:\the\XyMTeXcntb;}
\ifnum\XyMTeXcntb<5 \else
\advance\XyMTeXcnta by1 %%\typeout{C:\the\XyMTeXcnta;}
\fi\xdef\@UHalfScale{\the\XyMTeXcnta}\endgroup}
{\catcode`\p=12 \catcode`\t=12 
\gdef\UHalfScaleGain#1pt{\gdef\@@UHalfScale{#1}}}
\def\setUnitHalfScale#1{%
\@tempdima=#1 \dimen0=0.1pt
\@tempcnta=\@tempdima
\@tempcntb=\dimen0
\multiply\@tempcntb by10
\divide\@tempcntb by65536%
\divide\@tempdima by \@tempcntb
\multiply\@tempdima by5 %%\typeout{D:\the\@tempdima}
\expandafter\UHalfScaleGain\the\@tempdima%
\expandafter\NumRound\@@UHalfScale\@nil
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\PutSimpleBondBox}
% \changes{v5.00}{2010/10/01}{For PDF mode: macro for adjusting the position of
% a simple bond (straight line, dashed line, etc.)}
% The macro |\PutSimpleBondBox| is used to adjust the coordinates of joint positions 
% by using the macros |\PUT@@@@bondLINE| and |h@shedd@shbond|, which draw simple bonds 
% such as straight lines and dashed lines. 
%
%    \begin{macrocode}
%\newbox\BondBox
\def\PutSimpleBondBox(#1,#2)(#3,#4)#5{%for simple bonds
\setbox\BondBox=\hbox{#5}%
\XyMTeXdima=#1\unitlength
\XyMTeXdimb=#3\unitlength
\XyMTeXdimc=\thickLineWidth
\divide\XyMTeXdimc by2%adjustment by the half of a line width
\ifdim \XyMTeXdima>\XyMTeXdimb\relax 
\XyMTeXdimd=\XyMTeXdima
\XyMTeXdime=\XyMTeXdimb
\advance\XyMTeXdime by -\XyMTeXdimd
\advance\XyMTeXdime by -\XyMTeXdimc
\put(#1,#2){\kern\XyMTeXdime\box\BondBox}%
\else
\ifdim \XyMTeXdima=\XyMTeXdimb\relax 
\XyMTeXdimd=-\XyMTeXdimc
%%%\put(#1,#2){\kern\XyMTeXdimd\raise\XyMTeXdimd\hbox{\box\BondBox}}%
\put(#1,#2){\kern\XyMTeXdimd\box\BondBox}%
\else
\XyMTeXdimd=-\XyMTeXdimc
\put(#1,#2){\kern\XyMTeXdimd\box\BondBox}%
\fi\fi%
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\tikznodimension}
% \changes{v5.00}{2010/10/01}{For PDF mode: macro for typesetting an object 
% as having no dimensions. }
% The macro |\tikznodimension| is used in place of the macro |\PutSimpleBondBox|, which 
% is originally used to adjust the coordinates of joint positions. 
% Thereby, the macros |\PUT@@@@bondLINE| and |h@shedd@shbond| have a more rigorous basis 
% in putting such simple bonds as straight lines and dashed lines. 
%
%    \begin{macrocode}
\def\tikznodimension#1{\tikz{%
\pgfpathrectangle{\pgfpointorigin}{\pgfpointorigin}
\pgfusepath{use as bounding box} % draws nothing
#1}}
%    \end{macrocode}
% \end{macro}
%
% The macro |\PUT@@@@bondLINE| is used in the macro |\Put@@@@Line|, 
% which draws a bond line. This macro relies on the |\tikz| graphic 
% enviroment. 
%
% \begin{macro}{\PUT@@@@bondLINE}
% \begin{macro}{\PutPDFLine}
% \changes{v5.00}{2010/10/01}{For PDF mode: macro for 
% drawing a straight-line bond after adjusting its joint position}
%    \begin{macrocode}
\def\PUT@@@@bondLINE(#1,#2)(#3,#4)#5{%
\begingroup
%\setbox0=\hbox{%
%\tikz[baseline=(X.base)]{%
%\draw[line width=#5,line cap=round]%
%(#1\unitlength,#2\unitlength) coordinate (X) -- (#3\unitlength,#4\unitlength);}}%
%\PutSimpleBondBox(#1,#2)(#3,#4){\box0}%
\tikznodimension{%
\draw[line width=#5]%
(#1\unitlength,#2\unitlength) -- (#3\unitlength,#4\unitlength);}%
\endgroup
}
\let\PutPDFLine=\PUT@@@@bondLINE%for user's use
\let\PutBondLine=\PUT@@@@bondLINE%for user's use
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\PutBondBox}
% \changes{v5.00}{2010/10/01}{For PDF mode: a macro for putting a bond box 
% after adjusting coordinates. }
% The macro |\PutBondBox| put a bond box at an adjusted point, 
% where the bond box contain a wadge or wavy bond drawn by using 
% the pgf package (\verb/\tikz/). The macro is used in the 
% macros |\PUT@@@@wedgeLINE| and |\PUT@@@@wavyLINE|. 
%    \begin{macrocode}
%\newbox\BondBox
\def\PutBondBox(#1,#2)(#3,#4)#5{%for wedge and wavy bonds
\setbox\BondBox=\hbox{#5}%
\XyMTeXdima=#1\unitlength
\XyMTeXdimb=#3\unitlength
\XyMTeXdimc=4pt%
\divide\XyMTeXdimc by2%adjustment by the half of a line width
\if@vertbond
\XyMTeXdimd=\wd\BondBox
\divide\XyMTeXdimd by2\relax
\put(#1,#2){\kern-1.2\XyMTeXdimd\box\BondBox}%%tentative factor 1.2
\else
\if@horizbond
\ifdim \XyMTeXdima>\XyMTeXdimb\relax 
\XyMTeXdimd=\XyMTeXdima
\XyMTeXdime=\XyMTeXdimb
\advance\XyMTeXdime by -\XyMTeXdimd
\put(#1,#2){\kern-5\unitlength\kern\XyMTeXdime\box\BondBox}%tentative factor 5 %%%
\else
\put(#1,#2){\kern-1.2\unitlength\box\BondBox}%tentative factor 1.2
\fi
\else
%%
\ifdim \XyMTeXdima>\XyMTeXdimb\relax 
\XyMTeXdime=-\wd\BondBox
\put(#1,#2){\kern0.2\unitlength\kern\XyMTeXdime\box\BondBox}%tentative shift factor
\else
\ifdim \wd\BondBox<4.3pt\relax
\XyMTeXdimd=\wd\BondBox
\divide\XyMTeXdimd by2\relax
\put(#1,#2){\kern-1.3\XyMTeXdimd\box\BondBox}%tentative shift factor 1.3
%
\else
\put(#1,#2){\kern-3\unitlength\box\BondBox}%tentative shift factor 3
\fi\fi
\fi\fi}
%    \end{macrocode}
% \end{macro}
%
% The macro |\PUT@@@@wedgeLINE| is used in the macro |\Put@@@@Line|, 
% which draws a bond wedge. This macro relies on the |\tikz| graphic 
% enviroment. 
%
% \begin{macro}{\PUT@@@@wedgeLINE}
% \changes{v5.00}{2010/10/01}{For PDF mode: a macro for putting a wedge bond. }
%    \begin{macrocode}
\newif\if@vertbond \@vertbondfalse
\newif\if@horizbond \@horizbondfalse
\def\PUT@@@@wedgeLINE(#1,#2)(#3,#4)(#5,#6){%
\begingroup
%\setbox0=\hbox{%
%\tikz[baseline=(X.base)]{%
%\filldraw[black,line cap=round]%
%(#1\unitlength,#2\unitlength) coordinate (X) -- (#3\unitlength,#4\unitlength)%
%-- (#5\unitlength,#6\unitlength) -- (#1\unitlength,#2\unitlength);}}%
%\PutBondBox(#1,#2)(#3,#4){\box0}%adjustment
\tikznodimension{%
\filldraw%
(#1\unitlength,#2\unitlength) -- (#3\unitlength,#4\unitlength)%
-- (#5\unitlength,#6\unitlength) -- (#1\unitlength,#2\unitlength);}%
\endgroup
}
%    \end{macrocode}
% \end{macro}
%
% The macro |\PUT@@@@wavyLINE| is used in the macro |\Put@@@@Line|, 
% which draws a wavy bond. This macro relies on the |\tikz| graphic 
% enviroment. 
%
% \begin{macro}{\PUT@@@@wavyLINE}
% \changes{v5.00}{2010/10/01}{For PDF mode: a macro for putting a wavy bond. }
%    \begin{macrocode}
\def\PUT@@@@wavyLINE(#1,#2)(#3,#4){%
\begingroup
%\setbox0=\hbox{%
%\tikz[baseline=(X.base)]{%
%\draw[line cap=round,decorate,
%decoration={coil,aspect=0,segment length=2pt,amplitude=1pt}]%
%(#1\unitlength,#2\unitlength) coordinate (X) -- (#3\unitlength,#4\unitlength);}}%
%\PutBondBox(#1,#2)(#3,#4){\box0}%adjustment
\tikznodimension{%
\draw[decorate,
decoration={coil,aspect=0,segment length=2pt,amplitude=1pt}]%
(#1\unitlength,#2\unitlength) coordinate (X) -- (#3\unitlength,#4\unitlength);}%
\endgroup
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Put@@@@Line}
% \changes{v4.02}{2004/12/20}{For PS modes: Wedged bonds for stereochemistry}
% \changes{v4.03}{2005/07/20}{For PS modes: Switch for wave bonds}
% \changes{v5.00}{2010/10/01}{For PDF mode: a macro for putting a bond line. }
%
% Temporary count registers: 
%    \begin{macrocode}
\newcount\@tempcntXa \newcount\@tempcntYa \newcount\@tempcntz
\newcount\@tempcntXb \newcount\@tempcntYb \newcount\@tempcntzz
\newcount\@tempcntXc \newcount\@tempcntYc \newcount\@tempcntzzz
%    \end{macrocode}
%
%    \begin{macrocode}
\long\gdef\Put@@@@Line(#1,#2)(#3,#4)#5{%
\begingroup
%%x-coordinate
\@tempcntXa=0\relax
\ifnum#3>0\relax \@tempcntXa=#5\relax
\else\ifnum#3<0\relax\@tempcntXa=-#5\relax\fi\fi
\advance\@tempcntXa by#1\relax
%%y-coordinate
\@tempcntYa=#5\relax
\ifnum#3=0\relax\else
\multiply\@tempcntYa by#4\relax\multiply\@tempcntYa by10\relax
\divide\@tempcntYa by#3\relax\divide\@tempcntYa by10\relax\fi
\ifnum\@tempcntYa<0\relax
\ifnum#4>0\relax\@tempcntYa=-\@tempcntYa\fi
\else
\ifnum\@tempcntYa>0\relax
\ifnum#4<0\relax\@tempcntYa=-\@tempcntYa\fi\fi
\fi
\advance\@tempcntYa by#2\relax
%
\if@thicklinesw
\if@wedgesw
\ifmolfront%bold dash bond for skeletal bond for pyranose etc.
\PUT@@@@bondLINE(#1,#2)(\the\@tempcntXa,\the\@tempcntYa){\thickLineWidth}%
\else
\if@skbondlist%bold dash bond skeletal bond for general cases
\PUT@@@@bondLINE(#1,#2)(\the\@tempcntXa,\the\@tempcntYa){\thickLineWidth}%
\else%wedged bond
\ifnum#1=#3
\@vertbondtrue\@horizbondfalse
\else
\ifnum#2=#4
\@vertbondfalse\@horizbondtrue
\else
\@vertbondfalse\@horizbondfalse
\fi\fi
\stereo@wedgedimension(#3,#4){10}%
\PUT@@@@wedgeLINE(#1,#2)(\the\@tempcntXb,\the\@tempcntYb)(\the\@tempcntXc,\the\@tempcntYc)%
\fi\fi
\else
\PUT@@@@bondLINE(#1,#2)(\the\@tempcntXa,\the\@tempcntYa){\thickLineWidth}%
\fi
\else
\ifwavebond
\ifnum#1=#3
\@vertbondtrue\@horizbondfalse
\else
\ifnum#2=#4
\@vertbondfalse\@horizbondtrue
\else
\@vertbondfalse\@horizbondfalse
\fi\fi
\PUT@@@@wavyLINE(#1,#2)(\the\@tempcntXa,\the\@tempcntYa)%
\else
\PUT@@@@bondLINE(#1,#2)(\the\@tempcntXa,\the\@tempcntYa){\thinLineWidth}%
\fi
\fi
\@tempcntXa=0\relax \@tempcntYa=0\relax
\endgroup}%end of Put@@@@Line
%    \end{macrocode}
% \end{macro}
%
% The macro |\stereo@wedgedimension| calculates the coordinates of three positions 
% for drawing a wedged bond, which is drawn by the |\pspolygon| command of the PSTricks package. 
%
% \begin{macro}{stereo@wedgedimension}
% \changes{v4.02}{2004/12/20}{For PS mode: Wedged bonds for stereochemistry}
%    \begin{macrocode}
\newif\if@wedgeadjust
\def\stereo@wedgedimension(#1,#2)#3{%
\@tempcntXb=0\relax
\@tempcntYb=0\relax
\@tempcntXc=0\relax
\@tempcntYc=0\relax
%%
\@wedgeadjustfalse
\ifnum#1<0 \@tempcntzz=-#1\else\@tempcntzz=#1\fi
\ifnum#2<0 \@tempcntzzz=-#2\else\@tempcntzzz=#2\fi
\ifnum#1=0\else 
\multiply\@tempcntzzz by10\relax \divide\@tempcntzzz by\@tempcntzz\fi%% (3/5)x10=6
\ifnum\@tempcntzzz>7\relax\else\@wedgeadjusttrue\fi  
%%one point of wedge
\ifnum#1=0\relax
\@tempcntXb=#3 \advance\@tempcntXb by8\relax
\@tempcntYb=0\relax
\else
\ifnum#2=0\relax
\@tempcntXb=0\relax
\@tempcntYb=#3 \advance\@tempcntYb by8\relax
\else
\@tempcntXb=#3\relax
\@tempcntYb=-#3\relax
\if@wedgeadjust
\advance\@tempcntXb by8\relax
\advance\@tempcntYb by-8\relax
\fi
\multiply\@tempcntXb by#2\relax\multiply\@tempcntXb by10\relax
\divide\@tempcntXb by#1\relax\divide\@tempcntXb by10\relax\fi\fi
\advance\@tempcntXb by\@tempcntXa\relax
\advance\@tempcntYb by\@tempcntYa\relax
%%other point of wedge
\ifnum#1=0\relax
\@tempcntXc=-#3 \advance\@tempcntXc by-8\relax
\@tempcntYc=0\relax
\else
\ifnum#2=0\relax
\@tempcntXc=0\relax
\@tempcntYc=-#3 \advance\@tempcntYc by-8\relax
\else
\@tempcntXc=-#3\relax
\@tempcntYc=#3\relax
\if@wedgeadjust
\advance\@tempcntXc by-6\relax
\advance\@tempcntYc by6\relax
\fi
\multiply\@tempcntXc by#2\relax\multiply\@tempcntXc by10\relax
\divide\@tempcntXc by#1\relax\divide\@tempcntXc by10\relax\fi\fi
\advance\@tempcntXc by\@tempcntXa\relax
\advance\@tempcntYc by\@tempcntYa\relax
}%%end of \stereo@wedgedimension
%    \end{macrocode}
% \end{macro}
% 
% The |Put@@@@Direct| macro is the same as the original command 
% |\put| for the LaTeX picture environment. 
%
% \begin{macro}{Put@@@@Direct}
% \changes{v5.00}{2010/10/01}{For PDF mode: a macro for putting an object. }
%    \begin{macrocode}
\let\Put@@@@Direct=\put
%    \end{macrocode}
% \end{macro}
%
% The macros |\Put@@@@oCircle| and |\Put@@@@sCircle| draw 
% small circles for designating original points. 
%
% \begin{macro}{\Put@@@@oCircle}
%    \begin{macrocode}
\def\Put@@@@oCircle(#1,#2)#3{\begingroup%
   \@tempcntz=#3 \divide\@tempcntz by2\relax
%dimension \pgf@xx or \pgf@yy overflow
%\setbox0=\hbox{%
%{\tikz[baseline=(X.base)]{%
%\draw[scale=\@UScale,line width=0.4pt]%
%(#1,#2) coordinate (X) circle (\@tempcntz);}}}%
\setbox0=\hbox{%
{\tikz[baseline=(X.base)]{%
\draw[line width=0.4pt]%
(#1\unitlength,#2\unitlength) coordinate (X) circle (\@tempcntz\unitlength);}}}%
\put(#1,#2){\kern-0.5\wd0\hbox{\box0}}%
\endgroup}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Put@@@@sCircle}
%    \begin{macrocode}
\def\Put@@@@sCircle(#1,#2)#3{\begingroup%
   \@tempcntz=#3 \divide\@tempcntz by2\relax
%dimension pgf@xx or pgf@yy overflow
%\setbox0=\hbox{%
%{\tikz[baseline=(X.base)]{%
%\draw[scale=\@UScale,line width=2pt]%
%(#1,#2) coordinate (X) circle (\@tempcntz);}}}%
\setbox0=\hbox{%
{\tikz[baseline=(X.base)]{%
\draw[line width=2pt]%
(#1\unitlength,#2\unitlength) coordinate (X) circle (\@tempcntz\unitlength);}}}%
\put(#1,#2){\kern-0.5\wd0\hbox{\box0}}%
\endgroup}
%    \end{macrocode}
% \end{macro}
%
% Dotted lines by the old macro |\d@@t@rline| are changed into hashed dash bonds 
% in the new macro |\d@@t@@rline| (|\@wedgeswfalse|). If |\@wedgeswtrue| is 
% declared (default), the new macro draws a hashed wedged bonds.  
% 
% \begin{macro}{d@@t@@rline}
% \changes{v4.02}{2004/12/20}{Hashed wedged bonds for stereochemistry}
% \changes{v5.00}{2010/10/01}{Renamed for PDF mode}
%    \begin{macrocode}
\def\d@@t@@rline(#1,#2)(#3,#4)#5/(#6,#7)(#8,#9){%
\if@hasheddashsw
  \@ifundefined{tikz}{%
   \XyMTeXWarning{A dottedline is replaced by a solid line.}%
    \Put@Line(#1,#2)(#3,#4){#5}%
     }{{\thicklines%
        \h@shedd@shbond(#1,#2)(#3,#4){#5}/(#6,#7)(#8,#9)}}%
\else
\if@skbondlist%hashed dash bond skeletal bond for general cases
  \@ifundefined{tikz}{%
   \XyMTeXWarning{A dottedline is replaced by a solid line.}%
    \Put@Line(#1,#2)(#3,#4){#5}%
     }{{\thicklines%
        \h@shedd@shbond(#1,#2)(#3,#4){#5}/(#6,#7)(#8,#9)}}%
\else
  \h@shedw@dgebond(#1,#2)(#3,#4){#5}/(#6,#7)(#8,#9)%
\fi\fi
}%end of \d@@t@@rline
%    \end{macrocode}
% \end{macro}
%
% The inner macro |\h@shedd@shbond| works in the macro |\d@@t@@rline| for 
% drawing a hased dash bond. 
%
% \begin{macro}{h@shedd@shbond}
% \changes{v4.02}{2004/12/20}{For PS mode: Hashed dash bonds for stereochemistry}
% \changes{v5.00}{2010/10/01}{Renamed for PDF mode: macro for 
% drawing a hashed dash bond after adjusting its joint position}
%    \begin{macrocode}
\def\h@shedd@shbond(#1,#2)(#3,#4)#5/(#6,#7)(#8,#9){%
\begingroup
\@tempcntzz=12\relax
\@tempcntzzz=-30\relax%almost no shortening
\bond@shorten(#1,#2)(#3,#4){#5}/(#6,#7)(#8,#9)%
%\ifdim\unitlength>0.08pt
%\setbox0=\hbox{%
%\tikz[baseline=(X.base)]{%
%\draw[dashed,line width=\thickLineWidth,dash pattern=on 1pt off 1.2pt]%
%(\@tempcntXb\unitlength,\@tempcntYb\unitlength) coordinate (X) --%
%(\@tempcntXc\unitlength,\@tempcntYc\unitlength);}}%
%\else
%\setbox0=\hbox{%
%\tikz[baseline=(X.base)]{%
%\draw[dashed,line width=\thickLineWidth,dash pattern=on 0.8pt off 1pt]%
%(\@tempcntXb\unitlength,\@tempcntYb\unitlength) coordinate (X) --%
%(\@tempcntXc\unitlength,\@tempcntYc\unitlength);}}%
%\fi
%\PutSimpleBondBox(\the\@tempcntXb,\the\@tempcntYb)(\the\@tempcntXc,\the\@tempcntYc){\box0}%
\ifdim\unitlength>0.08pt
\tikznodimension{%
\draw[dashed,line width=\thickLineWidth,dash pattern=on 1pt off 1.2pt]%
(\@tempcntXb\unitlength,\@tempcntYb\unitlength) coordinate (X) --%
(\@tempcntXc\unitlength,\@tempcntYc\unitlength);}%
\else
\tikznodimension{%
\draw[dashed,line width=\thickLineWidth,dash pattern=on 0.8pt off 1pt]%
(\@tempcntXb\unitlength,\@tempcntYb\unitlength) coordinate (X) --%
(\@tempcntXc\unitlength,\@tempcntYc\unitlength);}%
\fi
\endgroup}
%    \end{macrocode}
% \end{macro}
%
% The inner macro |\h@shedw@dgebond| works in the macro |\d@@t@@rline| for 
% drawing a hashed wedged bond. 
%
%
% \begin{macro}{h@shedw@dgebond}
% \changes{v4.02}{2004/12/20}{For PS mode: Hashed wedged bonds for stereochemistry}
% \changes{v5.00}{2010/10/01}{For PDF mode: Hashed wedged bonds for stereochemistry}
%    \begin{macrocode}
\def\h@shedw@dgebond(#1,#2)(#3,#4)#5/(#6,#7)(#8,#9){%
\begingroup
\@tempcntXa=#8\relax
\@tempcntYa=#9\relax
\stereo@wedgedimension(#3,#4){10}%
\XyMTeXnumf=\@tempcntXb
\XyMTeXnumg=\@tempcntYb
\XyMTeXnumh=\@tempcntXc
\XyMTeXnumi=\@tempcntYc
\@tempcntzz=5\relax
\@tempcntzzz=-12\relax
\bond@shorten(#1,#2)(#3,#4){#5}/(#6,#7)(#8,#9)%
%\setbox0=\hbox{%
%\tikz[baseline=(X.base)]{%
%\filldraw[black,line cap=round]%
%(#1\unitlength,#2\unitlength) coordinate (X) --% 
%(\XyMTeXnumf\unitlength,\XyMTeXnumg\unitlength) --% 
%(\XyMTeXnumh\unitlength,\XyMTeXnumi\unitlength) -- (#1\unitlength,#2\unitlength);%
%\draw[dashed,line width=4pt,dash pattern=on 1pt off 1.2pt,color=white]%
%(\@tempcntXb\unitlength,\@tempcntYb\unitlength) --% 
%(\@tempcntXc\unitlength,\@tempcntYc\unitlength);%
%}}%
%\PutBondBox(#1,#2)(\the\@tempcntXc,\the\@tempcntYc){\box0}%
\tikznodimension{%
\filldraw%
(#1\unitlength,#2\unitlength) --% 
(\XyMTeXnumf\unitlength,\XyMTeXnumg\unitlength) --% 
(\XyMTeXnumh\unitlength,\XyMTeXnumi\unitlength) -- (#1\unitlength,#2\unitlength);%
\draw[dashed,line width=4pt,dash pattern=on 1pt off 1.2pt,color=white]%
(\@tempcntXb\unitlength,\@tempcntYb\unitlength) --% 
(\@tempcntXc\unitlength,\@tempcntYc\unitlength);}%
\endgroup
}%%end of \h@shedw@dgebond
%    \end{macrocode}
% \end{macro}
%
% The inner macro |\bond@shorten| works in the macros |\h@shedd@shbond| and |\h@shedw@dgebond| for 
% shortening the resulting hashed bonds. This macro calculates the coordinates of the staring 
% point and the end point. 
%
% \begin{macro}{bond@shorten}
% \changes{v4.02}{2004/12/20}{Hashed forms for dash and wedged bonds}
%    \begin{macrocode}
\def\bond@shorten(#1,#2)(#3,#4)#5/(#6,#7)(#8,#9){%
\@tempcntXb=#8\relax
\@tempcntYb=#9\relax
\advance\@tempcntXb by-#6\relax \divide\@tempcntXb by\@tempcntzz\relax
\advance\@tempcntYb by-#7\relax \divide\@tempcntYb by\@tempcntzz\relax
\advance\@tempcntXb by#6\relax
\advance\@tempcntYb by#7\relax
\@tempcntXc=#8\relax
\@tempcntYc=#9\relax
\advance\@tempcntXc by-#6\relax \divide\@tempcntXc by\@tempcntzzz\relax
\advance\@tempcntYc by-#7\relax \divide\@tempcntYc by\@tempcntzzz\relax
\advance\@tempcntXc by#8\relax
\advance\@tempcntYc by#9\relax
}%%end of \bondshorten
%    \end{macrocode}
% \end{macro}
%
% Skeletal bold bonds can be changed into wedges, where 
% |\WedgeAsSubst| is described in an ATOMLIST as a kind of 
% spiro substituent. 
% 
% \begin{macro}{WedgeAsSubst}
% \changes{v4.02}{2004/12/20}{For PS mode: Wedged skeletal bonds}
% \changes{v5.00}{2010/10/01}{For PDF mode: Checked OK}
%    \begin{macrocode}
\def\WedgeAsSubstPDF(#1,#2)(#3,#4)#5{%
\begingroup
\@thicklineswtrue \@wedgeswtrue
\molfrontfalse \@skbondlistfalse
\Put@@@@Line(#1,#2)(#3,#4){#5}%
\endgroup}
\let\WedgeAsSubst=\WedgeAsSubstPDF%for compatibility to PS mode
%    \end{macrocode}
% \end{macro}
%
% The macro |\stereo@wedgedimensionX| has a starting point, 
% an endpoint, and the width of a wedge as its arguments. 
% Compare this command with |\stereo@wedgedimension|, which has 
% a starting point, a slope, and the width of a wedge 
% as its arguments. 
%
% \begin{macro}{stereo@wedgedimensionX}
% \changes{v5.01}{2013/05/27}{dimension of wedge}
%    \begin{macrocode}
\def\stereo@wedgedimensionX(#1,#2)(#3,#4){%
\@ifnextchar[{\stereo@@wedgedimensionX(#1,#2)(#3,#4)}%
{\stereo@@wedgedimensionX(#1,#2)(#3,#4)[10]}}
\def\stereo@@wedgedimensionX(#1,#2)(#3,#4)[#5]{%
\@tempcnta=-#1\relax
\advance\@tempcnta by#3\relax
%%\typeout{KKK:\the\@tempcnta}%
\@tempcntb=-#2\relax
\advance\@tempcntb by#4\relax
%%%\typeout{LLL:\the\@tempcntb}%
\stereo@wedgedimension(\the\@tempcnta,\the\@tempcntb){#5}%
%%%\typeout{MMM; (\the\@tempcntXb,\the\@tempcntYb)(\the\@tempcntXc,\the\@tempcntYc)}
\advance\@tempcntXb by#3\relax
\advance\@tempcntYb by#4\relax
\advance\@tempcntXc by#3\relax
\advance\@tempcntYc by#4\relax}
%    \end{macrocode}
% \end{macro}
%
% The macro |\WedgeAsSubstX| has a starting point, 
% an endpoint, and the width of a wedge as its arguments. 
% Compare this command with |\WedgeAsSubst|, which has 
% a starting point, a slope, and the width of a wedge 
% as its arguments. 
%
% \begin{macro}{WedgeAsSubstX}
% \changes{v5.01}{2013/05/27}{For PDF mode: Checked OK}
%    \begin{macrocode}
\def\WedgeAsSubstXPDF(#1,#2)(#3,#4){%
\@ifnextchar[{\Wedge@AsSubstXPDF(#1,#2)(#3,#4)}%
{\Wedge@AsSubstXPDF(#1,#2)(#3,#4)[10]}}
\def\Wedge@AsSubstXPDF(#1,#2)(#3,#4)[#5]{%
\begingroup
\stereo@wedgedimensionX(#1,#2)(#3,#4)[#5]%
\PUT@@@@wedgeLINE(#1,#2)(\the\@tempcntXb,\the\@tempcntYb)(\the\@tempcntXc,\the\@tempcntYc)%
\endgroup}
\let\WedgeAsSubstX=\WedgeAsSubstXPDF%for compatibility to PDF mode
%    \end{macrocode}
% \end{macro}
%
% The macro |\NumR@und| gives a round integer. 
% For example 1.99996 is transformed into 2. A negative 
% value is permitted. 
%
% \begin{macro}{\NumR@und}
% \changes{v5.00}{2010/10/01}{For PDF mode}
%    \begin{macrocode}
\def\NumR@und#1.#2#3\@nil{%shishagonyu
\begingroup
\XyMTeXcnta=0 \XyMTeXcntb=0\relax
\XyMTeXcnta=#1 %%\typeout{A:\the\XyMTeXcnta;}
\XyMTeXcntb=#2 %%\typeout{B:\the\XyMTeXcntb;}
\ifnum\XyMTeXcnta>0\relax
\ifnum\XyMTeXcntb<5 \else
\advance\XyMTeXcnta by1 %%\typeout{C:\the\XyMTeXcnta;}
\fi
\else
\ifnum\XyMTeXcntb<5 \else
\advance\XyMTeXcnta by-1 %%\typeout{C:\the\XyMTeXcnta;}
\fi\fi\xdef\@yzobun{\the\XyMTeXcnta}\endgroup}
%    \end{macrocode}
% \end{macro}
%
% The macro |\zahyozobun| calculates the increments of x- and y-coordinates 
% by starting from a slope of the LaTeX picture environment. 
% For example, the slope (5,3) (for the argument \verb/(#3,#4)/ and the x-increment \verb/#5/=171) 
% is transformed to give an x-increment (\verb/\@xzobun/ = 171) and 
% an y-increment (\verb/\@yzobun/ = 103). When the slope is (0,1) etc., we put the 
% x-increment (\verb/\@xzobun/ = 0) and y-increment (\verb/\@yzobun/ = \verb/#5/). 
%
% \begin{macro}{\zahyozobun}
% \changes{v5.00}{2010/10/01}{For PDF mode}
% \changes{v5.01}{2013/03/10}{Bug fix for the slope (0,1) etc.}
%    \begin{macrocode}
{\catcode`\p=12 \catcode`\t=12 
\gdef\zobunGain#1pt{\gdef\@zobun{#1}}}

\def\zahyozobun(#1,#2)(#3,#4)#5{%
\@tempdima=#5\unitlength
\@tempdimb=#3\unitlength
\@tempcnta=\@tempdima
\ifdim\@tempdimb<0pt
\@tempcntb=-\@tempdimb
\else
\@tempcntb=\@tempdimb
\fi
%%
\ifdim\@tempdimb=0pt%bugfix 2013/02/06
\else
%%
\multiply\@tempcntb by10\relax
\divide\@tempcntb by65536%
\divide\@tempdima by \@tempcntb
\multiply\@tempdima by#4\relax
\multiply\@tempdima by10 %%\typeout{D:\the\@tempdima}
\expandafter\zobunGain\the\@tempdima%
\expandafter\NumR@und\@zobun\@nil
\fi%%%
\ifnum#3<0
\xdef\@xzobun{-#5}%
\else
\ifnum#3=0%bugfix 2013/02/06
\xdef\@xzobun{#3}%
\ifnum#4<0
\xdef\@yzobun{-#5}%
\else
\xdef\@yzobun{#5}%
\fi%bugfix 2013/02/06
\else
\xdef\@xzobun{#5}%
\fi
\fi
}
%    \end{macrocode}
% \end{macro}
%
% The inner macro |\bond@sh@rten| works in a similar way to |\bond@shorten| for 
% shortening the resulting hashed bonds. This macro calculates the coordinates of the starting 
% point and the end point. 
%
% \begin{macro}{\bond@sh@rten}
% \changes{v5.00}{2010/10/01}{For PDF mode: Hashed forms for dash and wedged bonds}
%    \begin{macrocode}
\def\bond@sh@rten(#1,#2)(#3,#4)#5{%%%%%%%/(#6,#7)(#8,#9){%
\zahyozobun(#1,#2)(#3,#4){#5}%
\@tempcntXb=\@xzobun\relax%%\typeout{SSS:\@xzobun}
\@tempcntYb=\@yzobun\relax%%\typeout{TTT:\@yzobun}
\divide\@tempcntXb by\@tempcntzz\relax
\divide\@tempcntYb by\@tempcntzz\relax
\advance\@tempcntXb by#1\relax
\advance\@tempcntYb by#2\relax
\@tempcntXc=\@xzobun\relax%%\typeout{KKKK:\@xzobun}
\@tempcntYc=\@yzobun\relax%%\typeout{LLLL:\@yzobun}
\divide\@tempcntXc by\@tempcntzzz\relax
\divide\@tempcntYc by\@tempcntzzz\relax
\advance\@tempcntXc by#1\relax
\advance\@tempcntXc by\@xzobun\relax%%\typeout{AAAA:\the\@tempcntXc}
\advance\@tempcntYc by#2\relax
\advance\@tempcntYc by\@yzobun\relax%%\typeout{BBBB:\the\@tempcntYc}
}%%end of \bondshorten
%    \end{macrocode}
% \end{macro}

% Skeletal hashed dash bonds can be changed into hashed wedges, where 
% |\HashWedgeAsSubst| is described in an ATOMLIST as a kind of 
% spiro substituent. This macro is essentially equivalent to 
% the macro |h@shedw@dgebond|, whose last four arguments are omitted. 
%
% \begin{macro}{HashWedgeAsSubst}
% \changes{v4.02}{2004/12/20}{For PS mode: Hashed wedged bonds for stereochemistry}
% \changes{v5.00}{2010/10/01}{For PDF mode: Hashed wedged bonds for stereochemistry}
%    \begin{macrocode}
\def\HashWedgeAsSubstPDF(#1,#2)(#3,#4)#5{%
\begingroup
\zahyozobun(#1,#2)(#3,#4){#5}%
\@tempcntXa=\@xzobun\relax
\advance\@tempcntXa by#1\relax
\@tempcntYa=\@yzobun\relax
\advance\@tempcntYa by#2\relax
\stereo@wedgedimension(#3,#4){10}%
\XyMTeXnumf=\@tempcntXb%%\typeout{CCCCF:\the\XyMTeXnumf}
\XyMTeXnumg=\@tempcntYb%%\typeout{CCCCG:\the\XyMTeXnumg}
\XyMTeXnumh=\@tempcntXc%%\typeout{CCCCH:\the\XyMTeXnumh}
\XyMTeXnumi=\@tempcntYc%%\typeout{CCCCI:\the\XyMTeXnumi}
\@tempcntzz=5\relax
\@tempcntzzz=-12\relax
\bond@sh@rten(#1,#2)(#3,#4){#5}%
%\setbox0=\hbox{%
%\tikz[baseline=(X.base)]{%
%\filldraw[black,line cap=round]%
%(#1\unitlength,#2\unitlength) coordinate (X) --%
%(\XyMTeXnumf\unitlength,\XyMTeXnumg\unitlength) --% 
%(\XyMTeXnumh\unitlength,\XyMTeXnumi\unitlength) -- (#1\unitlength,#2\unitlength);%
%\draw[dashed,line width=4pt,dash pattern=on 1pt off 1.2pt,color=white]%
%(\@tempcntXb\unitlength,\@tempcntYb\unitlength) --% 
%(\@tempcntXc\unitlength,\@tempcntYc\unitlength);%
%}}%
%\PutBondBox(#1,#2)(\the\@tempcntXc,\the\@tempcntYc){\box0}%
\tikznodimension{%
\filldraw%
(#1\unitlength,#2\unitlength) coordinate (X) --%
(\XyMTeXnumf\unitlength,\XyMTeXnumg\unitlength) --% 
(\XyMTeXnumh\unitlength,\XyMTeXnumi\unitlength) -- (#1\unitlength,#2\unitlength);%
\draw[dashed,line width=4pt,dash pattern=on 1pt off 1.2pt,color=white]%
(\@tempcntXb\unitlength,\@tempcntYb\unitlength) --% 
(\@tempcntXc\unitlength,\@tempcntYc\unitlength);}%
\endgroup
}%%end of \HashWedgeAsSubstPDF
\let\HashWedgeAsSubst=\HashWedgeAsSubstPDF%For compatibility to PS mode
%    \end{macrocode}
% \end{macro}
%
% The macro |\HashWedgeAsSubstX| has a starting point, 
% an endpoint, and the width of a wedge as its arguments. 
% Compare this command with |\HashWedgeAsSubst|, which has 
% a starting point, a slope, and the width of a wedge 
% as its arguments. 
%
% \begin{macro}{HashWedgeAsSubstX}
% \changes{v5.01}{2013/05/27}{For PDF mode: Hashed wedged bonds for stereochemistry}
%    \begin{macrocode}
\def\HashWedgeAsSubstXPDF(#1,#2)(#3,#4){%
\@ifnextchar[{\HashWedge@AsSubstXPDF(#1,#2)(#3,#4)}%
{\HashWedge@AsSubstXPDF(#1,#2)(#3,#4)[10]}}
\def\HashWedge@AsSubstXPDF(#1,#2)(#3,#4)[#5]{%
\begingroup
\WedgeAsSubstXPDF(#1,#2)(#3,#4)[#5]%
\@tempdima=#5\unitlength \multiply\@tempdima by3\relax
\advance\@tempdima by1pt%adjustment
\tikznodimension{%
\draw[dashed,line width=\@tempdima,
dash pattern=on 1pt off 1.2pt,color=white]%
(#1\unitlength,#2\unitlength) --% 
(#3\unitlength,#4\unitlength);}%
\endgroup
}%%end of \HashWedgeAsSubstXPDF
\let\HashWedgeAsSubstX=\HashWedgeAsSubstXPDF%For compatibility to PDF mode
%    \end{macrocode}
% \end{macro}
%
% Skeletal bold bonds can be changed into wavy bonds, where 
% |\WavyAsSubst| is described in an ATOMLIST as a kind of 
% spiro substituent. 
% 
% \begin{macro}{\WavyAsSubst}
% \changes{v5.01}{2004/06/21}{For PDF mode: Wavy skeletal bonds}
%    \begin{macrocode}
\def\WavyAsSubstPDF(#1,#2)(#3,#4)#5{%
\begingroup
\wavebondtrue
\Put@@@@Line(#1,#2)(#3,#4){#5}%
\endgroup}
\let\WavyAsSubst=\WavyAsSubstPDF%for compatibility to PS mode
%    \end{macrocode}
% \end{macro}
%
% The macro |\WavyAsSubstX| has a starting point, 
% an endpoint, and the width of a wedge as its arguments. 
% Compare this command with |\WavyAsSubst|, which has 
% a starting point, a slope, and the width of a wedge 
% as its arguments. 
%
% \begin{macro}{WedgeAsSubstX}
% \changes{v5.01}{2013/06/21}{For PDF mode: Checked OK}
%    \begin{macrocode}
\let\WavyAsSubstXPDF=\PUT@@@@wavyLINE
\let\WavyAsSubstX=\WavyAsSubstXPDF%for compatibility to PS mode
%    \end{macrocode}
% \end{macro}
%
% The command \cs{downnobond} is redefined for pstricks.
% \begin{macro}{\upnobond}
% \begin{macro}{\downnobond}
%    \begin{macrocode}
%\def\upnobond#1#2{%nochange
%\hbox{\hbox to0.72em{\hss#1\hss}\kern-0.72em\raise2.2ex\hbox{#2}}}
\def\downnobond#1#2{%
\hbox{\smash{\hbox to0.72em{\hss#1\hss}\kern-0.72em\lower2.2ex\hbox{#2}}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% The macro |\PUT@@@@dashedLINE| is used to draw a dashed bond line, 
% which usually links two non-adjacent atoms of a cyclic compound. 
% This macro relies on the |\tikz| graphic enviroment. 
%
% \begin{macro}{\PUT@@@@dashedLINE}
% \begin{macro}{\PutPDFdashed}
% \begin{macro}{\PutDashedBond}
% \changes{v5.00}{2010/10/01}{For PDF mode}
%    \begin{macrocode}
\def\PUT@@@@dashedLINE(#1,#2)(#3,#4)#5{%
\begingroup
%\ifdim\unitlength>0.08pt
%\setbox0=\hbox{%
%\tikz[baseline=(X.base)]{%
%\draw[dashed,line width=#5,dash pattern=on 1pt off 1.2pt]%
%(#1\unitlength,#2\unitlength) -- (#3\unitlength,#4\unitlength);}}%
%\else
%\setbox0=\hbox{%
%\tikz[baseline=(X.base)]{%
%\draw[dashed,line width=#5,dash pattern=on 0.8pt off 1pt]%
%(#1\unitlength,#2\unitlength) -- (#3\unitlength,#4\unitlength);}}%
%\fi
%\PutSimpleBondBox(#1,#2)(#3,#4){\box0}%
\ifdim\unitlength>0.08pt
\tikznodimension{%
\draw[dashed,line width=#5,dash pattern=on 1pt off 1.2pt]%
(#1\unitlength,#2\unitlength) -- (#3\unitlength,#4\unitlength);}%
\else
\tikznodimension{%
\draw[dashed,line width=#5,dash pattern=on 0.8pt off 1pt]%
(#1\unitlength,#2\unitlength) -- (#3\unitlength,#4\unitlength);}%
\fi
\endgroup
}
\let\PutPDFdashed=\PUT@@@@dashedLINE%for user's use
\let\PutDashedBond=\PUT@@@@dashedLINE%for compatibility to PS mode
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% The macro |\set@xy@PDFcoords| is used in the macro |\putRoundArrowPDF|
% for drawing round arrows. This command supports a format-changing 
% mechanism to assure the compatibility to the PostScript mode. 
%
% \begin{macro}{\Temp@ArCords}
% \begin{macro}{\set@xy@PDFcoords}
% \changes{v5.00}{2010/10/01}{For PDF mode}
%    \begin{macrocode}
\newtoks\Temp@ArCords \Temp@ArCords={}
\def\set@xy@PDFcoords(#1,#2){%
\ifnum\@tempcnta=1\relax
\Temp@ArCords={(#1\unitlength,#2\unitlength) }\else
\expandafter\Temp@ArCords\expandafter{\the\Temp@ArCords -- %
(#1\unitlength,#2\unitlength)}\fi}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% The macro |\setRoundArrPDF| is used in the macro |\putRoundArrowPDF|
% for drawing round arrows. This command is based on |\tikznodimension| 
% to draw round arrows. The letter string |\RoundedCornersWidth| stores 
% the standard roundness st a corner point. 
%
% \begin{macro}{\RoundedCornersWidth}
% \begin{macro}{\setRoundArrPDF}
% \changes{v5.00}{2010/10/01}{For PDF mode}
%    \begin{macrocode}
\def\RoundedCornersWidth{4pt}
\def\setRoundArrPDF#1{%
\ifnum\@tempcnta>5\relax
\def\RoundedCornersWidth{4pt}%
\else
\def\RoundedCornersWidth{8pt}\fi
\tikznodimension{%
\draw[\RoundArrowHead,line width=0.4pt,%
rounded corners=\RoundedCornersWidth]#1;}}%
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% The macro |\putRoundArrowPDF| throws its main task to its inner 
% macro |\putRound@rrowPDF|, which treats an optional argument 
% for specifying the direction of an arrow head and reads coordinates 
% repeatedly by using |\@forendparenthesis|. The |\@forendparenthesis| 
% command is defined in the \textsf{chemstr} package. 
% The macro |\putRoundArrow| is defined as a user command to
% assure the compatibility to the PostScriot mode. 
%
% \begin{macro}{\putRoundArrowPDF}
% \begin{macro}{\putRound@rrowPDF}
% \begin{macro}{\putRoundArrow}
% \changes{v5.00}{2010/10/01}{For PDF mode}
%    \begin{macrocode}
\def\putRoundArrowPDF{%
\@ifnextchar[{\putRound@rrowPDF}{\putRound@rrowPDF[->]}}
\def\putRound@rrowPDF[#1]#2{%
\edef\RoundArrowHead{#1}%
\Temp@ArCords={}\@tempcnta=\@ne\relax
\@forendparenthesis\member:=#2\do{%
\ifx\member\empty\else
\expandafter\set@xy@PDFcoords\member)\fi
\advance\@tempcnta\@ne}%
\expandafter\setRoundArrPDF\expandafter{\the\Temp@ArCords}%
}
\let\putRoundArrow=\putRoundArrowPDF
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% The command |\changeunitlength| is redefined for using the pgf (tikz) package.
% The pgf package uses ``scale'' in optional designations in place of 
% the setting by \verb/\unitlength/. The setting of \verb/\unitlength=0.1pt/ is 
% regarded as corresponding to \verb/scale=0.00357/, which is stored in 
% \verb/\@UScale/ after it is obtained by the \verb/\setUnitScale/ command. 
% \begin{macro}{\changeunitlength}
% \begin{macro}{\UScaleGain}
% \begin{macro}{\setUnitScale}
%    \begin{macrocode}
%%added 2010/08/17
{\catcode`\p=12 \catcode`\t=12 
\gdef\UScaleGain#1pt{\gdef\@UScale{#1}}}
\def\setUnitScale#1{%
\@tempdima=#1 \dimen0=1cm
\@tempcnta=\@tempdima
\@tempcntb=\dimen0
\divide\@tempcntb by65536%
\divide\@tempdima by \@tempcntb
\expandafter\UScaleGain\the\@tempdima}
\setUnitScale{0.1pt}%standard setting
%%%
\newif\ifsizereduction\sizereductionfalse
\def\@@@changeunitlength#1{\unitlength=#1\relax
\setUnitScale{#1}%%% scale=\@UScale
\ifdim\unitlength<0.1pt \sizereductiontrue
\ifdim\unitlength<0.062pt \let\substfontsize=\tiny \else
\ifdim\unitlength<0.072pt \let\substfontsize=\scriptsize \else
\ifdim\unitlength<0.082pt \let\substfontsize=\footnotesize
\fi\fi\fi
\else \let\substfontsize=\normalsize\fi}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\red etc.}
% \changes{v5.00}{2010/10/01}{bond coloring for PDF mode}
%    \begin{macrocode}
\def\red{\color{red}}
\def\green{\color{green}}
\def\blue{\color{blue}}
\def\cyan{\color{cyan}}
\def\magenta{\color{magenta}}
\def\yellow{\color{yellow}}
\def\black{\color{black}}
\def\white{\color{white}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\xymcolor}
% \begin{macro}{\redx 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}}
%defined in the bondcolor packag
%\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}
% \changes{v5.00}{2010/10/01}{For coloring skeletal bond in PDF mode}
% The last argument (\#7) specifies a line color. 
% This command is used in the definition of |\replaceSKbond| 
% of the \textsf{bondcolor} package by putting \verb/#7=white/. 
% \begin{macro}{\Color@Line}
%    \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
\SlopetoXY(#2,#3)(#4,#5){#6}%%
\@tempdime=\unitlength \multiply\@tempdime by#2\relax
\@tempdimb=\unitlength \multiply\@tempdimb by#3\relax
\@tempdimc=\unitlength \multiply\@tempdimc by\@tempcntXa\relax
\@tempdimd=\unitlength \multiply\@tempdimd by\@tempcntYa\relax
\tikznodimension{%
\draw[line width=#1,color=#7]%
(\@tempdime,\@tempdimb) --(\@tempdimc,\@tempdimd);}%
\endgroup}%end of \Color@@@@Line
\let\Color@Line=\Color@@@@Line%for PDF mode
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{setxymtxpdf}
% \changes{v5.00}{2010/10/01}{For PDF mode}
%    \begin{macrocode}
\def\setxymtxpdf{%
\@ifnextchar[{\@setxymtxpdf}{\@setxymtxpdf[0.1pt]}}
\def\@setxymtxpdf[#1]{%
\PDFmodetrue
\let\sfpicture=\picture
\let\endsfpicture=\endpicture
\let\thicklines=\Thick@Lines
\let\thinlines=\Thin@Lines
\let\Put@Line=\Put@@@@Line
\let\Color@Line=\Color@@@@Line%for PDF mode
\let\Put@Direct=\Put@@@@Direct
\let\Put@oCircle=\Put@@@@oCircle
\let\Put@sCircle=\Put@@@@sCircle
\let\dotorline=\d@@t@@rline
\let\WedgeAsSubst=\WedgeAsSubstPDF%for compatibility to PS mode
\let\HashWedgeAsSubst=\HashWedgeAsSubstPDF%For compatibility to PS mode
\let\WedgeAsSubstX=\WedgeAsSubstXPDF%for compatibility to PDF mode
\let\HashWedgeAsSubstX=\HashWedgeAsSubstXPDF%For compatibility to PDF mode
\let\PutBondLine=\PUT@@@@bondLINE%for user's use
\let\PutDashedBond=\PUT@@@@dashedLINE%for compatibility to PS mode
\let\putRoundArrow=\putRoundArrowPDF%for compatibility to PS mode
\let\changeunitlength=\@@@changeunitlength
\changeunitlength{#1}%
\wedgehasheddash%
}
\setxymtxpdf
%</xymtxpdf>
%    \end{macrocode}
% \end{macro}
%
% \Finale
%
\endinput
