% \iffalse 
%
% chmst-ps.dtx
%
% Copyright (C) 2002, 2004, 2010 by Shinsaku Fujita  All rights reserved.
%
% ========================================
%
% Modified from the following previous package: 
% 
% chemist.dtx 
% Copyright (C) 1996, 1999, 2000 by Shinsaku Fujita  All rights reserved.
%
% in order to utilize pstricks. 
%
% This file is part of the ChemSci system
% ========================================
%
% This style file is created for submitting a manuscript to 
% scientific journals. This style file is to be contained in the 
% ``chemist'' directory which is an input directory for TeX. 
%
% For using this file, see 
%  Shinsaku Fujita, ``LaTeX for Chemists and Biochemists'' 
%  Tokyo Kagaku Dojin, Tokyo (1993), Chapter 16. 
%
% 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 chmst-ps.dtx and chmst-ps.ins
% and the derived file chmst-ps.sty.
%
% Please report any bugs, comments, suggestions, etc. to:
%   Shinsaku Fujita, 
%   Shonan Institute of Chemoinformatics and 
%   Mathematical Chemistry
%   fujita-sicimc@nifmail.jp
%
%=======================================
%
% This file is a successor to:
%
% *********************************************************************
% * chemist.sty <Sept 29 1991> by Shinsaku Fujita                     *
% *  counters and related matters for compounds.                      *
% *  ffboxit: November 2 1991 by S. Fujita                            *
% *  bslskipchange: November 6 1991 by S. Fujita (deleted)            *
% *  chapinitial: 1991 November 7 by S. Fujita                        *
% *  variable arrows: 1992 May 24 by S. Fujita                        *
% *  reaction and scheme arrows (revised): 1992 May 24  by S. Fujita  *
% *  changespace <=== bslskipchange: Dec 31 1992 by S. Fujita         *
% *  (g)rshfboxit and (g)lshfboxit: January 3, 1993 by S. Fujita      *
% *********************************************************************
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Released on January 3, 1993 
% Copyright (C) 1993 by Shinsaku Fujita, all rights reserved.
% This style file is created for making manuscripts of chemical fields.  
% This option style file is to be contained in the ``chemist'' directory 
% which is an input directory for TeX. 
%
%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \def\j@urnalname{chemist}
% \def\versi@ndate{January 03, 1993}
% \def\versi@nno{ver1.00}
%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Version 1.01 
%  --- added the end commands of the \verbatim environment and the 
%      \verb command contained in LaTeX 2.09
%  --- \LaTeX, \BibTeX logos etc improved
% \typeout{verbatim for LaTeX2.09 (and LaTeX2e) in chemist.sty}
% \typeout{logos for LaTeX2.09 (and LaTeX2e) in chemist.sty}
% \def\versi@ndate{April 20, 1996}
% \def\j@urnalname{chemist}
% \def\versi@ndate{April 20, 1996}
% \def\versi@nno{ver1.01}
% \def\copyrighth@lder{SF} % Shinsaku Fujita
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \def\j@urnalname{chemist} \def\journalID{chemist}
% \def\versi@ndate{June 15, 1996}
% \def\versi@nno{ver1.01a}
% \def\copyrighth@lder{SF} % Shinsaku Fujita
% \typeout{Package `\j@urnalname' (\versi@nno) <\versi@ndate>\space 
% [\copyrighth@lder]}
% \typeout{chemist.sty ver1.01a (for LaTeX2e) 1996/06/15[SF]}
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \def\j@urnalname{chemist} \def\journalID{chemist}
% \def\versi@ndate{March 16, 1999}
% \def\versi@nno{ver2.00}
% \def\copyrighth@lder{SF} % Shinsaku Fujita
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \def\j@urnalname{chemist} \def\journalID{chemist}
% \def\versi@ndate{November 3, 2000}
% \def\versi@nno{ver2.00a}
% \def\copyrighth@lder{SF} % Shinsaku Fujita
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \def\j@urnalname{chmst-ps} \def\journalID{chmst-ps}
% \def\versi@ndate{May 30, 2002}
% \def\versi@nno{ver1.00}
% \def\copyrighth@lder{SF} % Shinsaku Fujita
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \def\j@urnalname{chmst-ps} \def\journalID{chmst-ps}
% \def\versi@ndate{August 30, 2004}
% \def\versi@nno{ver1.01}
% \def\copyrighth@lder{SF} % Shinsaku Fujita
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \def\j@urnalname{chmst-ps} \def\journalID{chmst-ps}
% \def\versi@ndate{November 08, 2009}
% \def\versi@nno{ver1.02}
% \def\copyrighth@lder{SF} % Shinsaku Fujita
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \def\j@urnalname{chmst-ps} \def\journalID{chmst-ps}
% \def\versi@ndate{November 26, 2009}
% \def\versi@nno{ver1.03}
% \def\copyrighth@lder{SF} % Shinsaku Fujita
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% 
% \fi
% \CheckSum{1615}
%% \CharacterTable
%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%%   Digits        \0\1\2\3\4\5\6\7\8\9
%%   Exclamation   \!     Double quote  \"     Hash (number) \#
%%   Dollar        \$     Percent       \%     Ampersand     \&
%%   Acute accent  \'     Left paren    \(     Right paren   \)
%%   Asterisk      \*     Plus          \+     Comma         \,
%%   Minus         \-     Point         \.     Solidus       \/
%%   Colon         \:     Semicolon     \;     Less than     \<
%%   Equals        \=     Greater than  \>     Question mark \?
%%   Commercial at \@     Left bracket  \[     Backslash     \\
%%   Right bracket \]     Circumflex    \^     Underscore    \_
%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%%   Right brace   \}     Tilde         \~}
%
% \iffalse
%%
%% `chmst-ps.dtx' ver1.00 (for LaTeX2e) 2002/05/30
%% `chmst-ps.dtx' ver1.01 (for LaTeX2e) 2004/08/30
%% `chmst-ps.dtx' ver1.02 (for LaTeX2e) 2009/11/08
%% `chmst-ps.dtx' ver1.03 (for LaTeX2e) 2009/11/26
%% `chmst-ps.dtx' ver5.00 (for LaTeX2e) 2010/10/01
%%  by Shinsaku Fujita
%%
%
% \section{Initial declaration}
%
% \changes{v1.00}{2002/05/30}{First Version}
% \changes{v1.01}{2004/08/30}{2nd Version}
% \changes{v1.02}{2009/11/08}{3rd Version}
% \changes{v1.03}{2009/11/26}{4th Version, harpoons}
% \changes{v5.00}{2010/10/01}{For LaTeX Project Public License}
%
%    \begin{macrocode}
% \NeedsTeXFormat{LaTeX2e}
%    \end{macrocode}
%
%    \begin{macrocode}
%    <chmstps>\ProvidesFile{chmst-ps.sty}
%<driver>\ProvidesFile{chmst-ps.drv}
%<driver>         [2010/10/01 v5.00
%    <chmstps>     ChemSci package ]
%<driver>     ChemSci package driver (English)
%    \end{macrocode}
%
%\setcounter{StandardModuleDepth}{1}
%
% \section{Driver file for this dtx file}
%
%    \begin{macrocode}
%<*driver>
 ]
\documentclass{ltxdoc}
\GetFileInfo{chmst-ps.drv}
\title{The chmst-ps Package \space\fileversion \\
(Part of the XyMTeX/ChemSci package v5.00)}
\author{Shinsaku Fujita \\ 
Shonan Institute of Chemoinformatics and 
Mathematical Chemistry \\
Ashigara-Kami-Gun, Kanagawa, 258-0019 Japan 
%% Department of Chemistry and Materials Technology \\
%% Kyoto Institute of Technology \\
%% Matsugasaki, Sakyoku, Kyoto, 606-8585 Japan 
%% (old address)
%% Ashigara Research Laboratories \\
%% Fuji Photo Film Co. Ltd.
}
\date{\filedate}
\begin{document}
\maketitle
\tableofcontents
\DocInput{chmst-ps.dtx}
\end{document}
%</driver>
%    \end{macrocode}
%
% \fi
%
% \StopEventually{}
%
% \section{{\sc docstrip} options}
%
% This dtx file provides the {\sffamily chmst-ps} package 
% by docstrip processing. 
%
% \DeleteShortVerb{\|}
% \begin{center}
% \begin{tabular}{|l|l|}
%  \hline
%   argument & package name \\
%  \hline
%   chmstps   & chmst-ps.sty \\
%   driver  & a documentation driver file \\
%  \hline
% \end{tabular}
% \end{center}
% \MakeShortVerb{\|}
% 
% \section{Version information}
%
% The old process for typing out version information remains active. 
%    \begin{macrocode}
%<chmstps>\def\j@urnalname{chmst-ps} \def\journalID{chmst-ps}
\def\versi@ndate{October 01, 2010}
\def\versi@nno{ver5.00}
\def\copyrighth@lder{SF} % Shinsaku Fujita
%<*chmstps>
\typeout{Package `\j@urnalname' (\versi@nno) <\versi@ndate>\space 
[\copyrighth@lder]}
\typeout{chmst-ps.sty ver5.00 (for LaTeX2e) 2010/10/01[SF]}
%</chmstps>
%    \end{macrocode}
%
%    \begin{macrocode}
%<*chmstps>
\@ifundefined{if@@@chemtimes}{\newif\if@@@chemtimes}{}
\@ifundefined{if@@chemtimes}{\newif\if@@chemtimes}{}%from chemtimes
\DeclareOption{chemtimes}{\@@@chemtimestrue}
\@@@chemtimesfalse
\ProcessOptions
\if@@@chemtimes\if@@chemtimes\else
  \PackageError{chmst-ps}
    {The option ``chemtimes'' is not permitted}
    {You should use this option after the chemtimes package is loaded.}
\fi\fi
\if@@@chemtimes
\RequirePackage[chemtimes]{chemist}%
\else
\RequirePackage{chemist}%
\fi
\RequirePackage{xymtx-ps}%
%    \end{macrocode}
%
% \section{Cross-references of compounds}
%  (Deleted)
% \section{Boxes for placing compounds}
%  (Deleted)
% \section{Arrows}
% \subsection{Arrows with variable length}
%  (Deleted)
% \subsection{Reaction arrows with variable length}
%
% The {\sffamily chmst-ps} package defines arrows with variable length 
% for drawing chemical equations, where additional information 
% can be written on the upper and/or downward sides of each arrow.  
% \changes{v1.00}{2002/05/30}{First Version}
%
% Several elements for drawing horizontal reaction arrows within the scope of 
% pstricks package are defined first.  
%
%  \begin{macro}{\rArrow@Element}
%  \begin{macro}{\lArrow@Element}
%  \begin{macro}{\lrArrow@Element}
%  \begin{macro}{\eqArrow@Element}
%    \begin{macrocode}
\newdimen\@tempdimX
\newdimen\@tempdimY
\def\rArrow@Element#1{\begingroup\hbox to#1{\hss%
\begin{pspicture}(0,0)(#1,0.28em)%
\psline[linewidth=0.4pt,arrowsize=2pt 2,%
arrowlength=1.6,arrowinset=0.6]{->}(0pt,0.28em)(#1,0.28em)%
\end{pspicture}\hss}\endgroup}
\let\Arrow@Element=\rArrow@Element
\def\lArrow@Element#1{\hbox to#1{\hss%
\begin{pspicture}(0,0)(#1,0.28em)%
\psline[linewidth=0.4pt,arrowsize=2pt 2,%
arrowlength=1.6,arrowinset=0.6]{<-}(0pt,0.28em)(#1,0.28em)%
\end{pspicture}\hss}}
\def\lrArrow@Element#1{\hbox to#1{\hss%
\begin{pspicture}(0,0)(#1,0.28em)%
\psline[linewidth=0.4pt,arrowsize=2pt 2,%
arrowlength=1.6,arrowinset=0.6]{<->}(0pt,0.28em)(#1,0.28em)%
\end{pspicture}\hss}}
\def\eqArrow@Element#1{\hbox to#1{\hss%
\begin{pspicture}(0,0)(#1,0.43em)%
\psline[linewidth=0.4pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
{->}(0pt,0.43em)(#1,0.43em)%
\psline[linewidth=0.4pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
{<-}(0pt,0.13em)(#1,0.13em)%
\end{pspicture}\hss}}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
% Several harpoons are created by means of the mechanism of the \textsf{PStricks} 
% package. 
% \changes{v1.03}{2009/11/26}{Harpoons added as PostScript procedures}
%
%  \begin{macro}{\past@arrowtable}
% Arow types (Hru, Hrd, Hlu, and Hld) are added to the existing arrow table 
% for a right upward harpoon, a right downward harpoon, a left upward harpoon, 
% and a left downward harpoon. 
%    \begin{macrocode}
\RequirePackage{pstricks}%
\edef\past@arrowtable{\pst@arrowtable,Hru-Hru,Hrd-Hrd,Hlu-Hlu,Hld-Hld}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\tx@HarpoonrUp}
%  \begin{macro}{\psas@Hru}
% A right upward harpoon (arow type Hru) is typeset by \verb/\tx@HarpoonrUp/ 
% (/HarpoonrUp as a PostScript name), where its arrowhead is typeset by an 
% internal macro name (\verb/\psas@Hru/). The PostScript commands (/CLW, /ED, and /L) 
% are defined in pstricks.pro. 
%    \begin{macrocode}
%rightharpoonup
%\edef\past@arrowtable{\pst@arrowtable,Hru-Hru}
\def\tx@HarpoonrUp{ \tx@setStrokeTransparency HarpoonrUp }%
\@namedef{psas@Hru}{%
  /HarpoonrUp{%PostScript Procedure
  CLW mul add dup 
  2 div /w ED 
  mul dup /h ED 
  mul /a ED 
  CLW 2 div /Hwd ED
  h a sub /Hwh ED
  0 Hwh moveto
  Hwd neg Hwh L
  Hwd neg 0 L
  0 0 L
  w h L 
  0 Hwh L
  gsave fill grestore 
}def
\psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@HarpoonrUp
}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
%  \begin{macro}{\tx@HarpoonrDown}
%  \begin{macro}{\psas@Hrd}
% A right downward harpoon (arow type Hrd) is typeset by \verb/\tx@HarpoonrDown/ 
% (/HarpoonrDown as a PostScript name), where its arrowhead is typeset by an 
% internal macro name (\verb/\psas@Hrd/). 
%    \begin{macrocode}
%rightharpoondown
%\edef\past@arrowtable{\pst@arrowtable,Hrd-Hrd}
\def\tx@HarpoonrDown{ \tx@setStrokeTransparency HarpoonrDown }%
\@namedef{psas@Hrd}{%
  /HarpoonrDown {%PostScript Procedure
  CLW mul add dup 
  2 div /w ED 
  mul dup /h ED 
  mul /a ED 
  CLW 2 div /Hwd ED
  h a sub /Hwh ED
  0 Hwh moveto
  Hwd Hwh L
  Hwd 0 L
  0 0 L
  w neg h L 
  0 Hwh L
  gsave fill grestore 
}def
\psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@HarpoonrDown
}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
%  \begin{macro}{\tx@HarpoonlUp}
%  \begin{macro}{\psas@Hlu}
% A left upward harpoon (arow type Hlu) is typeset by \verb/\tx@HarpoonlUp/ 
% (/HarpoonlUp as a PostScript name), where its arrowhead is typeset by an 
% internal macro name (\verb/\psas@Hlu/). 
%    \begin{macrocode}
%leftharpoonup
%\edef\past@arrowtable{\pst@arrowtable,Hlu-Hlu}
\def\tx@HarpoonlUp{ \tx@setStrokeTransparency HarpoonlUp }%
\@namedef{psas@Hlu}{%
  /HarpoonlUp {%PostScript Procedure
  CLW mul add dup 
  2 div /w ED 
  mul dup /h ED 
  mul /a ED 
  CLW 2 div /Hwd ED
  h a sub /Hwh ED
  0 Hwh moveto
  Hwd Hwh L
  Hwd 0 L
  0 0 L
  w neg h L 
  0 Hwh L
  gsave fill grestore 
}def
\psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@HarpoonlUp
}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
%  \begin{macro}{\tx@HarpoonlDown}
%  \begin{macro}{\psas@Hld}
% A left downward harpoon (arow type Hld) is typeset by \verb/\tx@HarpoonlDown/ 
% (/HarpoonlDown as a PostScript name), where its arrowhead is typeset by an 
% internal macro name (\verb/\psas@Hld/). 
%    \begin{macrocode}
%leftharpoondown
%\edef\past@arrowtable{\pst@arrowtable,Hld-Hld}
\def\tx@HarpoonlDown{ \tx@setStrokeTransparency HarpoonlDown }%
\@namedef{psas@Hld}{%
  /HarpoonlDown {%PostScript Procedure
  CLW mul add dup 
  2 div /w ED 
  mul dup /h ED 
  mul /a ED 
  CLW 2 div /Hwd ED
  h a sub /Hwh ED
  0 Hwh moveto
  Hwd neg Hwh L
  Hwd neg 0 L
  0 0 L
  w h L 
  0 Hwh L
  gsave fill grestore 
}def
\psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@HarpoonlDown
}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
%  \begin{macro}{\eqHarpoon@Element}
% \changes{v1.03}{2009/11/26}{Harpoons added as PostScript procedures}
%    \begin{macrocode}
\def\eqHarpoon@Element#1{\hbox to#1{\hss%
\begin{pspicture}(0,0)(#1,0.43em)%
\psline[linewidth=0.4pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
{-Hru}(0pt,0.43em)(#1,0.43em)%
\psline[linewidth=0.4pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
{Hld-}(0pt,0.13em)(#1,0.13em)%
\end{pspicture}\hss}}
%
%\def\eqHarpoon@Element#1{\hbox to#1{\hss%
%\begin{pspicture}(0,0)(#1,0.43em)%
%\psline[linewidth=0.8pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
%{->}(0pt,0.43em)(#1,0.43em)%
%\psline[linewidth=0.8pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
%{<-}(0pt,0.13em)(#1,0.13em)%
%\psline[linewidth=0.277em,linecolor=white]{-}(0pt,0.29em)(#1,0.29em)%
%\end{pspicture}\hss}}
%    \end{macrocode}
%  \end{macro}
%
% Equilibirum arrows with uneven lengths are defined by using the \verb/\psline/ command 
% of the pstricks package.
% \changes{v1.02}{2009/11/08}{2nd Version}
%
%  \begin{macro}{\reqArrow@Element}
%  \begin{macro}{\leqArrow@Element}
%    \begin{macrocode}
\def\reqArrow@Element#1{\begingroup%
\dimen1=#1%
\dimen0=\eqlbarrowstretch\dimen1%
\dimen1=#1 \advance\dimen1 by-\dimen0 \divide\dimen1 by2\relax
\dimen2=\dimen1 \advance\dimen2 by\dimen0
\psline[linewidth=0.4pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
{->}(0pt,0.43em)(#1,0.43em)%
\psline[linewidth=0.4pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
{<-}(\dimen1,0.13em)(\dimen2,0.13em)\endgroup}
\def\leqArrow@Element#1{\begingroup%
\dimen1=#1%
\dimen0=\eqlbarrowstretch\dimen1%
\dimen1=#1 \advance\dimen1 by-\dimen0 \divide\dimen1 by2\relax
\dimen2=\dimen1 \advance\dimen2 by\dimen0
\psline[linewidth=0.4pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
{->}(\dimen1,0.43em)(\dimen2,0.43em)%
\psline[linewidth=0.4pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
{<-}(0pt,0.13em)(#1,0.13em)\endgroup}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
%  \begin{macro}{\reqHarpoon@Element}
%  \begin{macro}{\leqHarpoon@Element}
% \changes{v1.02}{2009/11/19}{Added}
% \changes{v1.03}{2009/11/26}{Harpoons added as PostScript procedures}
%    \begin{macrocode}
\def\reqHarpoon@Element#1{\begingroup%
\dimen1=#1%
\dimen0=\eqlbarrowstretch\dimen1%
\dimen1=#1 \advance\dimen1 by-\dimen0 \divide\dimen1 by2\relax
\dimen2=\dimen1 \advance\dimen2 by\dimen0
\psline[linewidth=0.4pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
{-Hru}(0pt,0.43em)(#1,0.43em)%
\psline[linewidth=0.4pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
{Hld-}(\dimen1,0.13em)(\dimen2,0.13em)%
\endgroup}
\def\leqHarpoon@Element#1{\begingroup%
\dimen1=#1%
\dimen0=\eqlbarrowstretch\dimen1%
\dimen1=#1 \advance\dimen1 by-\dimen0 \divide\dimen1 by2\relax
\dimen2=\dimen1 \advance\dimen2 by\dimen0
\psline[linewidth=0.4pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
{-Hru}(\dimen1,0.43em)(\dimen2,0.43em)%
\psline[linewidth=0.4pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
{Hld-}(0pt,0.13em)(#1,0.13em)%
\endgroup}
%
%\def\reqHarpoon@Element#1{\begingroup%
%\dimen1=#1%
%\dimen0=\eqlbarrowstretch\dimen1%
%\dimen1=#1 \advance\dimen1 by-\dimen0 \divide\dimen1 by2\relax
%\dimen2=\dimen1 \advance\dimen2 by\dimen0
%\psline[linewidth=0.8pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
%{->}(0pt,0.43em)(#1,0.43em)%
%\psline[linewidth=0.8pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
%{<-}(\dimen1,0.13em)(\dimen2,0.13em)%
%\psline[linewidth=0.277em,linecolor=white]{-}(0pt,0.29em)(#1,0.29em)%
%\endgroup}
%\def\leqHarpoon@Element#1{\begingroup%
%\dimen1=#1%
%\dimen0=\eqlbarrowstretch\dimen1%
%\dimen1=#1 \advance\dimen1 by-\dimen0 \divide\dimen1 by2\relax
%\dimen2=\dimen1 \advance\dimen2 by\dimen0
%\psline[linewidth=0.8pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
%\{->}(\dimen1,0.43em)(\dimen2,0.43em)%
%\psline[linewidth=0.8pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
%{<-}(0pt,0.13em)(#1,0.13em)%
%\psline[linewidth=0.277em,linecolor=white]{-}(0pt,0.287em)(#1,0.287em)%
%\endgroup}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
%
% Each arrow element is used in the following common command for drawing 
% horizontal reaction arrows. 
% \changes{v1.02}{2009/11/08}{changed definition; 
% added \cs{reactarrowsep} and \cs{reactarrowseprate}}
%
% \begin{verbatim}
%  \reactarrowsep (dimension) for adjusting the two vertical spaces (default value 0pt)
%  \reactarrowseprate (string) for adjusting the lower vertical space (default 1.0) 
% \end{verbatim}
%
%  \begin{macro}{\react@@rlarrow}
%    \begin{macrocode}
\def\react@@rlarrow[#1]#2#3#4#5{\ensuremath{\mathrel{%
\hskip#1\raisebox{#2}{\begingroup\@tempdimX=#3\relax%
  \parbox{#3}{\centering
    \baselineskip=.8\normalbaselineskip \ChemStrut{#4}\par%
    \vskip-0.2\normalbaselineskip\vskip\reactarrowsep%
    \begin{pspicture}(0,0)(\@tempdimX,0.6em)%
%    \Arrow@Element{\@tempdimX}%
    \put(0,0){\Arrow@Element{\@tempdimX}}%
    \end{pspicture}% 
    \par%
    \vskip\reactarrowseprate\reactarrowsep%
    \vskip-0.1\normalbaselineskip\ChemStrut{#5}}\endgroup}}}}
%(old definition)
%\def\react@@rlarrow[#1]#2#3#4#5{%
%\hskip#1\raisebox{#2}{\begingroup\@tempdimX=#3\relax%
% \begin{pspicture}(\@tempdimX,0)%
%  \rput[bl](0,0.86em){\hbox to\@tempdimX{\hss
%  \begin{tabular}{c}#4%
%  \end{tabular}\hss}}%
%  \Arrow@Element{\@tempdimX}%
%  \rput[tl](0,-0.3em){\hbox to\@tempdimX{\hss
%  \begin{tabular}{c}%
%  #5\end{tabular}\hss}}%
% \end{pspicture}\endgroup}}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\reactrarrow}
%  \begin{macro}{\reactlarrow}
%  \begin{macro}{\reactlrarrow}
%  \begin{macro}{\reactEqarrow}%2009/11/19 renamed from \verb/\reacteqarrow/
%  \begin{macro}{\reacteqarrow}%2009/11/19
%    \begin{macrocode}
% ******************* 1991 Oct 4 S. Fujita
% * reaction arrows * Revised 1992 May 24 S.Fujita%1999/02/02 SF
% ******************* Redifined 2002 May 30 S. Fujita for pstricks
% After Chapter 9 of ``LaTeX for (Bio)Chemists'' by Shinsaku Fujita
%
% #1 yoko #2 ue, #3 haba, #4 ya no ue, #5 ya no shita 
% 
\def\newreactrarrow{%
\@ifnextchar[{\newreact@rarrow}{\newreact@rarrow[0pt]}}
\def\newreact@rarrow[#1]#2#3#4#5{%
\let\Arrow@Element=\rArrow@Element%
\react@@rlarrow[#1]{#2}{#3}{#4}{#5}}
\def\newreactlarrow{%
\@ifnextchar[{\newreact@larrow}{\newreact@larrow[0pt]}}
\def\newreact@larrow[#1]#2#3#4#5{%
\let\Arrow@Element=\lArrow@Element%
\react@@rlarrow[#1]{#2}{#3}{#4}{#5}}
\def\newreactlrarrow{%
\@ifnextchar[{\newreact@lrarrow}{\newreact@lrarrow[0pt]}}
\def\newreact@lrarrow[#1]#2#3#4#5{%
\let\Arrow@Element=\lrArrow@Element%
\react@@rlarrow[#1]{#2}{#3}{#4}{#5}}
%%%%2009/11/19
\def\newreactEqarrow{%
\@ifnextchar[{\newreact@Eqarrow}{\newreact@Eqarrow[0pt]}}
\def\newreact@Eqarrow[#1]#2#3#4#5{%
\let\Arrow@Element=\eqArrow@Element%
\react@@rlarrow[#1]{#2}{#3}{#4}{#5}}
\def\newreacteqarrow{%
\@ifnextchar[{\newreact@eqarrow}{\newreact@eqarrow[0pt]}}
\def\newreact@eqarrow[#1]#2#3#4#5{%
\let\Arrow@Element=\eqHarpoon@Element%
\react@@rlarrow[#1]{#2}{#3}{#4}{#5}}
%%%%%2009/11/19
%\let\reactrarrow=\newreactrarrow
%\let\reactlarrow=\newreactlarrow
%\let\reactlrarrow=\newreactlrarrow
%\let\reactEqarrow=\newreactEqarrow
%\let\reacteqarrow=\newreacteqarrow
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
%  \begin{macro}{\reactREqarrow}%%renamed 2009/11/19
%  \begin{macro}{\reactLEqarrow}%%renamed 2009/11/19
%  \begin{macro}{\reactreqarrow}
%  \begin{macro}{\reactleqarrow}
%
% These commands have been added for the XyMTeX version 4.05. 
% The {\sffamily chemist} package additionally defines arrows with variable length 
% for drawing chemical equilibrium, where additional information 
% can be written on the upper and/or downward sides of each arrow.  
% The length of either one of arrows can be reduced by \verb/\eqlbarrowstretch/.
% 
% \changes{v4.05}{2009/11/08}{added \cs{reactreqarrow} and \cs{reactleqarrow}}
%
%    \begin{macrocode}
\def\newreactREqarrow{%
\@ifnextchar[{\newreact@REqarrow}{\newreact@REqarrow[0pt]}}
\def\newreact@REqarrow[#1]#2#3#4#5{%
\let\Arrow@Element=\reqArrow@Element
\react@@rlarrow[#1]{#2}{#3}{#4}{#5}}
\def\newreactLEqarrow{%
\@ifnextchar[{\newreact@LEqarrow}{\newreact@LEqarrow[0pt]}}
\def\newreact@LEqarrow[#1]#2#3#4#5{%
\let\Arrow@Element=\leqArrow@Element
\react@@rlarrow[#1]{#2}{#3}{#4}{#5}}
%%%%%2009/11/19
\def\newreactreqarrow{%
\@ifnextchar[{\newreact@reqarrow}{\newreact@reqarrow[0pt]}}
\def\newreact@reqarrow[#1]#2#3#4#5{%
\let\Arrow@Element=\reqHarpoon@Element
\react@@rlarrow[#1]{#2}{#3}{#4}{#5}}
\def\newreactleqarrow{%
\@ifnextchar[{\newreact@leqarrow}{\newreact@leqarrow[0pt]}}
\def\newreact@leqarrow[#1]#2#3#4#5{%
\let\Arrow@Element=\leqHarpoon@Element
\react@@rlarrow[#1]{#2}{#3}{#4}{#5}}
%%%%%2009/11/19
%\let\reactREqarrow=\newreactREqarrow
%\let\reactLEqarrow=\newreactLEqarrow
%\let\reactreqarrow=\newreactreqarrow
%\let\reactleqarrow=\newreactleqarrow
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
% Several elements for drawing vertical reaction arrows within the scope of 
% pstricks package are defined first.  
%
%  \begin{macro}{\dArrow@Element}
%  \begin{macro}{\uArrow@Element}
%  \begin{macro}{\veqArrow@Element}
%  \begin{macro}{\duArrow@Element}
%    \begin{macrocode}
\def\dArrow@Element#1{%
\psline[linewidth=0.4pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
{->}(0pt,#1)(0pt,0pt)}
\def\uArrow@Element#1{%
\psline[linewidth=0.4pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
{<-}(0pt,#1)(0pt,0pt)}
\def\veqArrow@Element#1{%
\psline[linewidth=0.4pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
{->}(-0.15em,#1)(-0.15em,0pt)%
\psline[linewidth=0.4pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
{<-}(0.15em,#1)(0.15em,0pt)}
\def\duArrow@Element#1{%
\psline[linewidth=0.4pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
{<->}(0pt,#1)(0pt,0pt)}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
%  \begin{macro}{\veqHarpoon@Element}
% \changes{v1.02}{2009/11/19}{Added}
% \changes{v1.03}{2009/11/26}{Harpoons added as PostScript procedures}
%    \begin{macrocode}
\def\veqHarpoon@Element#1{%
\psline[linewidth=0.4pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
{-Hrd}(-0.15em,#1)(-0.15em,0pt)%
\psline[linewidth=0.4pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
{Hlu-}(0.15em,#1)(0.15em,0pt)%
}
%
%\def\veqHarpoon@Element#1{%
%\psline[linewidth=0.8pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
%{->}(-0.15em,#1)(-0.15em,0pt)%
%\psline[linewidth=0.8pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
%{<-}(0.15em,#1)(0.15em,0pt)%
%\psline[linewidth=0.28em,linecolor=white]{-}(0pt,0em)(0,#1)%
%}
%    \end{macrocode}
%  \end{macro}
%
% Each arrow element is used in the following common command for drawing 
% vertical reaction arrows. 
%
%  \begin{macro}{\react@@duarrow}
%    \begin{macrocode}
\def\react@@duarrow[#1]#2#3#4#5{\hskip#1\raisebox{#2}{%
\@tempdimY=#3\def\arraystretch{0.8}%
\begin{tabular}{l}#4\end{tabular}%
{\tabcolsep=0pt\begin{tabular}{c}%
\begin{pspicture}(0,0)(0,\@tempdimY)%
\Arrow@Element{\@tempdimY}%
\end{pspicture}\end{tabular}}%
\begin{tabular}{l}#5\end{tabular}}}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\reactdarrow}
%  \begin{macro}{\reactuarrow}
%  \begin{macro}{\reactduarrow}
%  \begin{macro}{\reactVEqarrow}%%renamed 2009/11/19
%  \begin{macro}{\reactveqarrow}%%renamed 2009/11/19
% Vertical reaction arrows has been added. 
% \changes{v1.00}{2002/05/30}{First Version}
%    \begin{macrocode}
\def\newreactdarrow{%
\@ifnextchar[{\newreact@darrow}{\newreact@darrow[0pt]}}
\def\newreact@darrow[#1]#2#3#4#5{%
\let\Arrow@Element=\dArrow@Element
\react@@duarrow[#1]{#2}{#3}{#4}{#5}}
\def\newreactuarrow{%
\@ifnextchar[{\newreact@uarrow}{\newreact@uarrow[0pt]}}
\def\newreact@uarrow[#1]#2#3#4#5{%
\let\Arrow@Element=\uArrow@Element
\react@@duarrow[#1]{#2}{#3}{#4}{#5}}
\def\newreactduarrow{%
\@ifnextchar[{\newreact@duarrow}{\newreact@duarrow[0pt]}}
\def\newreact@duarrow[#1]#2#3#4#5{%
\let\Arrow@Element=\duArrow@Element
\react@@duarrow[#1]{#2}{#3}{#4}{#5}}
%%%%%2009/11/19
\def\newreactVEqarrow{%
\@ifnextchar[{\newreact@VEqarrow}{\newreact@VEqarrow[0pt]}}
\def\newreact@VEqarrow[#1]#2#3#4#5{%
\let\Arrow@Element=\veqArrow@Element
\react@@duarrow[#1]{#2}{#3}{#4}{#5}}
\def\newreactveqarrow{%
\@ifnextchar[{\newreact@veqarrow}{\newreact@veqarrow[0pt]}}
\def\newreact@veqarrow[#1]#2#3#4#5{%
\let\Arrow@Element=\veqHarpoon@Element
\react@@duarrow[#1]{#2}{#3}{#4}{#5}}
%%%%%2009/11/19
%\let\reactdarrow=\newreactdarrow
%\let\reactuarrow=\newreactuarrow
%\let\reactduarrow=\newreactduarrow
%\let\reactVEqarrow=\newreactVEqarrow
%\let\reactveqarrow=\newreactveqarrow
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
% Several elements for drawing down-sloped reaction arrows within the scope of 
% pstricks package are defined first.  
%
%  \begin{macro}{\seArrow@Element}
%    \begin{macrocode}
\def\seArrow@Element#1{%
\psline[linewidth=0.4pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
{->}(0pt,#1)(#1,0pt)}
\def\nwArrow@Element#1{%
\psline[linewidth=0.4pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
{<-}(0pt,#1)(#1,0pt)}
%    \end{macrocode}
%  \end{macro}
%
% Each arrow element is used in the following common command for drawing 
% down-sloped reaction arrows. 
%
%  \begin{macro}{\react@@decrarrow}
%    \begin{macrocode}
\def\react@@decrarrow[#1]#2#3#4#5{\hskip#1\raisebox{#2}{%
\@tempdimX=#3\divide\@tempdimX by2\relax
\@tempdimY=#3\relax\def\arraystretch{0.8}%
\begin{tabular}{l}#4\end{tabular}\kern1em%
{\tabcolsep=0pt\begin{tabular}{c}
\begin{pspicture}(\@tempdimX,0)(\@tempdimX,\@tempdimY)
\Arrow@Element{\@tempdimY}%
\end{pspicture}\end{tabular}}\kern1em%
\begin{tabular}{l}#5\end{tabular}}}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\reactsearrow}
%  \begin{macro}{\reactnwrarrow}
% Further reaction arrows have been added. 
% \changes{v1.00}{2002/05/30}{First Version}
%    \begin{macrocode}
\def\newreactsearrow{%
\@ifnextchar[{\newreact@searrow}{\newreact@searrow[0pt]}}
\def\newreact@searrow[#1]#2#3#4#5{%
\let\Arrow@Element=\seArrow@Element
\react@@decrarrow[#1]{#2}{#3}{#4}{#5}}
\def\newreactnwarrow{%
\@ifnextchar[{\newreact@nwarrow}{\newreact@nwarrow[0pt]}}
\def\newreact@nwarrow[#1]#2#3#4#5{%
\let\Arrow@Element=\nwArrow@Element
\react@@decrarrow[#1]{#2}{#3}{#4}{#5}}
%%%%%2009/11/19
%\let\reactsearrow=\newreactsearrow
%\let\reactnwarrow=\newreactnwarrow
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
% Several elements for drawing up-sloped reaction arrows within the scope of 
% pstricks package are defined first.  
%
%  \begin{macro}{\neArrow@Element}
%    \begin{macrocode}
\def\neArrow@Element#1{%
\psline[linewidth=0.4pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
{->}(0pt,0pt)(#1,#1)}
\def\swArrow@Element#1{%
\psline[linewidth=0.4pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
{<-}(0pt,0pt)(#1,#1)}
%    \end{macrocode}
%  \end{macro}
%
% Each arrow element is used in the following common command for drawing 
% up-sloped reaction arrows. 
%
%  \begin{macro}{\react@@incrarrow}
%    \begin{macrocode}
\def\react@@incrarrow[#1]#2#3#4#5{\hskip#1\raisebox{#2}{%
\@tempdimX=#3 \divide\@tempdimX by2
\@tempdimY=#3%
\def\arraystretch{0.8}%
\begin{tabular}{l}#4\end{tabular}\kern1em%
{\tabcolsep=0pt
\begin{tabular}{c}
\begin{pspicture}(\@tempdimX,0)(\@tempdimX,\@tempdimY)
\Arrow@Element{\@tempdimY}%
\end{pspicture}%
\end{tabular}}\kern1em%
\begin{tabular}{l}#5\end{tabular}}}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\reactnearrow}
%  \begin{macro}{\reactswarrow}
%    \begin{macrocode}
\def\newreactnearrow{%
\@ifnextchar[{\newreact@nearrow}{\newreact@nearrow[0pt]}}
\def\newreact@nearrow[#1]#2#3#4#5{%
\let\Arrow@Element=\neArrow@Element
\react@@incrarrow[#1]{#2}{#3}{#4}{#5}}
\def\newreactswarrow{%
\@ifnextchar[{\newreact@swarrow}{\newreact@swarrow[0pt]}}
\def\newreact@swarrow[#1]#2#3#4#5{%
\let\Arrow@Element=\swArrow@Element
\react@@incrarrow[#1]{#2}{#3}{#4}{#5}}
%%%%%2009/11/19
%\let\reactnearrow=\newreactnearrow
%\let\reactswarrow=\newreactswarrow
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
% Additional elements for drawing down- and up-sloped equilibrium arrows within the scope of 
% pstricks package are defined first.  
%
%  \begin{macro}{\deqArrow@Element}
%  \begin{macro}{\ueqArrow@Element}
%    \begin{macrocode}
\def\deqArrow@Element#1{%
\begingroup
\@tempdima=#1 \advance\@tempdima by1.2pt
\psline[linewidth=0.4pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
{->}(1.2pt,\@tempdima)(\@tempdima,1.2pt)%
\@tempdima=#1 \advance\@tempdima by-1.2pt
\psline[linewidth=0.4pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
{<-}(-1.2pt,\@tempdima)(\@tempdima,-1.2pt)\endgroup}
\def\ueqArrow@Element#1{%
\@tempdima=#1 \advance\@tempdima by-1.2pt
\@tempdimb=#1 \advance\@tempdimb by1.2pt
\psline[linewidth=0.4pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
{->}(-1.2pt,1.2pt)(\@tempdima,\@tempdimb)%
\psline[linewidth=0.4pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
{<-}(1.2pt,-1.2pt)(\@tempdimb,\@tempdima)}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
% Additional elements for drawing down- and up-sloped equilibrium harpoons within the scope of 
% pstricks package are defined.  
% \changes{v1.02}{2009/11/19}{Added}
%
%  \begin{macro}{\deqHarpoon@Element}
%  \begin{macro}{\ueqHarpoon@Element}
% \changes{v1.03}{2009/11/26}{Harpoons added as PostScript procedures}
%    \begin{macrocode}
\def\deqHarpoon@Element#1{%
\begingroup
\@tempdima=#1 \advance\@tempdima by1.2pt
\psline[linewidth=0.4pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
{-Hru}(1.2pt,\@tempdima)(\@tempdima,1.2pt)%
\@tempdimb=#1 \advance\@tempdimb by-1.2pt
\psline[linewidth=0.4pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
{Hld-}(-1.2pt,\@tempdimb)(\@tempdimb,-1.2pt)%
\endgroup}
\def\ueqHarpoon@Element#1{%
\begingroup
\@tempdima=#1 \advance\@tempdima by-1.2pt
\@tempdimb=#1 \advance\@tempdimb by1.2pt
\psline[linewidth=0.4pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
{-Hru}(-1.2pt,1.2pt)(\@tempdima,\@tempdimb)%
\psline[linewidth=0.4pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
{Hld-}(1.2pt,-1.2pt)(\@tempdimb,\@tempdima)%
\endgroup}
%
%\def\deqHarpoon@Element#1{%
%\begingroup
%\@tempdima=#1 \advance\@tempdima by1.2pt
%\psline[linewidth=0.8pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
%{->}(1.2pt,\@tempdima)(\@tempdima,1.2pt)%
%\@tempdimb=#1 \advance\@tempdimb by-1.2pt
%\psline[linewidth=0.8pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
%{<-}(-1.2pt,\@tempdimb)(\@tempdimb,-1.2pt)%
%\psline[linewidth=0.28em,linecolor=white]{-}(0pt,#1)(#1,0pt)%
%\endgroup}
%\def\ueqHarpoon@Element#1{%
%\begingroup
%\@tempdima=#1 \advance\@tempdima by-1.2pt
%\@tempdimb=#1 \advance\@tempdimb by1.2pt
%\psline[linewidth=0.8pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
%{->}(-1.2pt,1.2pt)(\@tempdima,\@tempdimb)%
%\psline[linewidth=0.8pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
%{<-}(1.2pt,-1.2pt)(\@tempdimb,\@tempdima)%
%\psline[linewidth=0.28em,linecolor=white]{-}(0pt,0pt)(#1,#1)%
%\endgroup}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
%  \begin{macro}{\reactDEqarrow}
%  \begin{macro}{\reactUEqarrow}
%  \begin{macro}{\reactdeqarrow}
%  \begin{macro}{\reactueqarrow}
% Further reaction arrows have been added. 
% \changes{v1.00}{2002/05/30}{First Version}
%    \begin{macrocode}
\def\newreactDEqarrow{\@ifnextchar[%]
{\newreact@DEqarrow}{\newreact@DEqarrow[0pt]}}
\def\newreact@DEqarrow[#1]#2#3#4#5{%
\let\Arrow@Element=\deqArrow@Element
\react@@decrarrow[#1]{#2}{#3}{#4}{#5}}
\def\newreactUEqarrow{\@ifnextchar[%]
{\newreact@UEqarrow}{\newreact@UEqarrow[0pt]}}
\def\newreact@UEqarrow[#1]#2#3#4#5{%
\let\Arrow@Element=\ueqArrow@Element
\react@@decrarrow[#1]{#2}{#3}{#4}{#5}}
%%%%2009/11/19
\def\newreactdeqarrow{\@ifnextchar[%]
{\newreact@deqarrow}{\newreact@deqarrow[0pt]}}
\def\newreact@deqarrow[#1]#2#3#4#5{%
\let\Arrow@Element=\deqHarpoon@Element
\react@@decrarrow[#1]{#2}{#3}{#4}{#5}}
\def\newreactueqarrow{\@ifnextchar[%]
{\newreact@ueqarrow}{\newreact@ueqarrow[0pt]}}
\def\newreact@ueqarrow[#1]#2#3#4#5{%
\let\Arrow@Element=\ueqHarpoon@Element
\react@@decrarrow[#1]{#2}{#3}{#4}{#5}}
%%%%2009/11/19
%\let\reactDEqarrow=\newreactDEqarrow
%\let\reactUEqarrow=\newreactUEqarrow
%\let\reactdeqarrow=\newreactdeqarrow
%\let\reactueqarrow=\newreactueqarrow
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
% Additional elements for drawing down- and up-sloped double-headed arrows 
% within the scope of pstricks package are defined first.  
%
%  \begin{macro}{\ulrArrow@Element}
%  \begin{macro}{\dlrArrow@Element}
%    \begin{macrocode}
\def\ulrArrow@Element#1{%
\psline[linewidth=0.4pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
{<->}(0pt,0pt)(#1,#1)}
\def\dlrArrow@Element#1{%
\psline[linewidth=0.4pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
{<->}(0pt,#1)(#1,0pt)}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
%  \begin{macro}{\reactulrarrow}
%  \begin{macro}{\reactdlrarrow}
%    \begin{macrocode}
\def\newreactulrarrow{\@ifnextchar[%]
{\newreact@ulrarrow}{\newreact@ulrarrow[0pt]}}
\def\newreact@ulrarrow[#1]#2#3#4#5{%
\let\Arrow@Element=\ulrArrow@Element
\react@@incrarrow[#1]{#2}{#3}{#4}{#5}}
\def\newreactdlrarrow{\@ifnextchar[%]
{\newreact@dlrarrow}{\newreact@dlrarrow[0pt]}}
\def\newreact@dlrarrow[#1]#2#3#4#5{
\let\Arrow@Element=\dlrArrow@Element
\react@@decrarrow[#1]{#2}{#3}{#4}{#5}}
%%%%2009/11/19
%\let\reactulrarrow=\newreactulrarrow
%\let\reactdlrarrow=\newreactdlrarrow
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
%
% A new command \verb/\electronshiftAH/ is added to defining bent (curved) arrows 
% and harpoons.  
% \changes{v1.03}{2009/12/01}{Added}
%
%  \begin{macro}{\electronshiftAH}
%    \begin{macrocode}
\def\electronshiftAH#1(#2,#3)(#4,#5)(#6,#7){%
\@ifnextchar(%
{\electr@nshiftAH{#1}(#2,#3)(#4,#5)(#6,#7)}%
{\electr@nshiftAH{#1}(#2,#3)(#4,#5)(#4,#5)(#6,#7)}}
\def\electr@nshiftAH#1(#2,#3)(#4,#5)(#6,#7)(#8,#9){%
\psbezier[unit=\unitlength,linewidth=0.4pt]{#1}%
(#2,#3)(#4,#5)(#6,#7)(#8,#9)%
}%
%\def\electronshiftAH#1{%
%\pscurve[unit=\unitlength,linewidth=0.4pt,arrowsize=2pt 2,%
%arrowlength=1.6,arrowinset=0.6]{#1}}
%    \end{macrocode}
%  \end{macro}
%
% Several commmands for drawing curved harpoons are defined as follows: 
%  \begin{macro}{\electronshiftHru}
%  \begin{macro}{\electronshiftHrd}
%  \begin{macro}{\electronshiftHlu}
%  \begin{macro}{\electronshiftHld}
%    \begin{macrocode}
\def\electronshiftHru{\electronshiftAH{-Hru}}
\def\electronshiftHrd{\electronshiftAH{-Hrd}}
\def\electronshiftHlu{\electronshiftAH{Hlu-}}
\def\electronshiftHld{\electronshiftAH{Hld-}}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
% Several commmands for drawing curved arrows are defined as follows: 
%  \begin{macro}{\electronshiftArrowr}
%  \begin{macro}{\electronshiftArrowl}
%    \begin{macrocode}
\def\electronshiftArrowr{\electronshiftAH{->}}
\def\electronshiftArrowl{\electronshiftAH{<-}}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
% The {\sffamily chmst-ps} package defines double-line arrows with variable 
% length for drawing reaction schemes, where additional information 
% can be written on the upper and/or downward sides of each arrow.  
% \changes{v1.00}{2002/05/30}{First Version}
%
% Several elements for drawing horizontal scheme arrows within the scope of 
% pstricks package are defined first.  
%
%  \begin{macro}{\lSchemeArrow@Element}
%    \begin{macrocode}
\def\lSchemeArrow@Element#1{\hbox to#1{\hss%
\begin{pspicture}(0,0)(#1,0.28em)%
\psline[linewidth=0.4pt,doubleline=true,doublesep=0.16em,%
arrowsize=2pt 2,arrowlength=1.2,arrowinset=0.7]{<-}(0pt,0.28em)(#1,0.28em)%
\end{pspicture}\hss}}
\def\rSchemeArrow@Element#1{\hbox to#1{\hss%
\begin{pspicture}(0,0)(#1,0.28em)%
\psline[linewidth=0.4pt,doubleline=true,doublesep=0.16em,%
arrowsize=2pt 2,arrowlength=1.2,arrowinset=0.7]{->}(0pt,0.28em)(#1,0.28em)%
\end{pspicture}\hss}}
\def\lrSchemeArrow@Element#1{\hbox to#1{\hss%
\begin{pspicture}(0,0)(#1,0.28em)%
\psline[linewidth=0.4pt,doubleline=true,doublesep=0.16em,%
arrowsize=2pt 2,arrowlength=1.2,arrowinset=0.7]{<->}(0pt,0.28em)(#1,0.28em)%
\end{pspicture}\hss}}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\schemelarrow}
%  \begin{macro}{\schemerarrow}
%  \begin{macro}{\schemelrarrow}
%
%    \begin{macrocode}
% ********************************
% * scheme arrows                *
% * 1991 OCT 4 S. Fujita         *
% * Revised 1992 May 24 S.Fujita * 1999/02/02 by S. Fujita
% ******************************** Redefined 2002/05/30 by SF
% After Chapter 9 of ``LaTeX for (Bio)Chemists'' by Shinsaku Fujita
\def\newschemelarrow#1#2#3#4{%
\let\Arrow@Element=\lSchemeArrow@Element
\react@@rlarrow[0pt]{#1}{#2}{#3}{#4}}
\def\newschemerarrow#1#2#3#4{%
\let\Arrow@Element=\rSchemeArrow@Element
\react@@rlarrow[0pt]{#1}{#2}{#3}{#4}}
\def\newschemelrarrow#1#2#3#4{%
\let\Arrow@Element=\lrSchemeArrow@Element
\react@@rlarrow[0pt]{#1}{#2}{#3}{#4}}
%%%%2009/11/19
%\let\schemelarrow=\newschemelarrow
%\let\schemerarrow=\newschemerarrow
%\let\schemelrarrow=\newschemelrarrow
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
% \section{Redefinition of verbatim}
% (Deleted)
%
% \section{Shadowed Boxes}
% (Deleted)
%
% \section{Further boxes}
% (Deleted)
%
% \section{Symbols for instant photography} 
% (Deleted)
%
% \section{Various arrows with fixed length}
%
% Because various arrows with a fixed length have been defined in the \textsf{chemist} package, 
% the corresponding codes for the \textsf{chmst-ps} package are described here. 
%
% \changes{v1.02}{2009/11/19}{Added}
% 
%  \begin{macro}{\llongrightarrow}
%  \begin{macro}{\llongleftarrow}
%  \begin{macro}{\Equilibarrow}
%
%    \begin{macrocode}
\def\newllongrightarrow{\ensuremath{\mathrel{%
\hbox to28pt{\hss\rArrow@Element{28pt}\hss}}}}
\def\newllongleftarrow{\ensuremath{\mathrel{%
\hbox to28pt{\hss\lArrow@Element{28pt}\hss}}}}
\def\newllongleftrightarrow{\ensuremath{\mathrel{%
\hbox to28pt{\hss\lrArrow@Element{28pt}\hss}}}}
\def\newEquilibarrow{\ensuremath{\mathrel{%
\hbox to28pt{\hss\eqArrow@Element{28pt}\hss}}}}
%\let\llongrightarrow=\newllongrightarrow
%\let\llongleftarrow=\newllongleftarrow
%\let\llongleftrightarrow=\newllongleftrightarrow
%\let\Equilibarrow=\newEquilibarrow
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
% \changes{v1.02}{2009/11/19}{Added}
%  \begin{macro}{\Llongrightarrow}
%  \begin{macro}{\Llongleftarrow}
%  \begin{macro}{\Llongleftrightarrow}
%
%    \begin{macrocode}
\def\newLlongrightarrow{\ensuremath{\mathrel{%
\hbox to28pt{\hss\rSchemeArrow@Element{28pt}\hss}}}}
\def\newLlongleftarrow{\ensuremath{\mathrel{%
\hbox to28pt{\hss\lSchemeArrow@Element{28pt}\hss}}}}
\def\newLlongleftrightarrow{\ensuremath{%
\mathrel{\hbox to28pt{\hss\lrSchemeArrow@Element{28pt}\hss}}}}
%\let\Llongrightarrow=\newLlongrightarrow
%\let\Llongleftarrow=\newLlongleftarrow
%\let\Llongleftrightarrow\newLlongleftrightarrow
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
% \changes{v1.02}{2009/11/19}{Added}
%  \begin{macro}{\lllongrightarrow}
%  \begin{macro}{\lllongleftarrow}
%  \begin{macro}{\lllongleftrightarrow}
%  \begin{macro}{\Equiliblongarrow}
%
%    \begin{macrocode}
\def\newlllongrightarrow{\ensuremath{\mathrel{%
\hbox to35pt{\hss\rArrow@Element{35pt}\hss}}}}
\def\newlllongleftarrow{\ensuremath{\mathrel{%
\hbox to35pt{\hss\lArrow@Element{35pt}\hss}}}}
\def\newlllongleftrightarrow{\ensuremath{\mathrel{%
\hbox to35pt{\hss\lrArrow@Element{35pt}\hss}}}}
\def\newEquiliblongarrow{\ensuremath{\mathrel{%
\hbox to35pt{\hss\eqArrow@Element{35pt}\hss}}}}
%\let\lllongrightarrow=\newlllongrightarrow
%\let\lllongleftarrow=\newlllongleftarrow
%\let\lllongleftrightarrow=\newlllongleftrightarrow
%\let\Equiliblongarrow=\newEquiliblongarrow
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
% \changes{v1.02}{2009/11/19}{Added}
%  \begin{macro}{\Lllongrightarrow}
%  \begin{macro}{\Lllongleftarrow}
%  \begin{macro}{\Lllongleftrightarrow}
%
%    \begin{macrocode}
\def\newLllongrightarrow{\ensuremath{\mathrel{%
\hbox to35pt{\hss\rSchemeArrow@Element{35pt}\hss}}}}
\def\newLllongleftarrow{\ensuremath{\mathrel{%
\hbox to35pt{\hss\lSchemeArrow@Element{35pt}\hss}}}}
\def\newLllongleftrightarrow{\ensuremath{%
\mathrel{\hbox to35pt{\hss\lrSchemeArrow@Element{35pt}\hss}}}}
%\let\Lllongrightarrow=\newLllongrightarrow
%\let\Lllongleftarrow=\newLllongleftarrow
%\let\Lllongleftrightarrow\newLllongleftrightarrow
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
%
% Several elements for drawing horizontal harpoons within the scope of 
% pstricks package are defined first.  
% \changes{v1.02}{2009/11/19}{Added}
%
%  \begin{macro}{\rightharpoonupElement}
% \changes{v1.02}{2009/11/19}{Added}
% \changes{v1.03}{2009/11/26}{Harpoons added as PostScript procedures}
%    \begin{macrocode}
\def\rightharpoonupElement#1{%
\lower0.2pt\hbox to#1{\hss%
\begin{pspicture}(0,0)(#1,0.28em)
\psline[linewidth=0.4pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
{-Hru}(0pt,0.28em)(#1,0.28em)
\end{pspicture}\hss}}
%
%\def\rightharpoonupElement#1{%
%\lower0.2pt\hbox to#1{\hss%
%\begin{pspicture}(0,0)(#1,0.28em)
%\psline[linewidth=0.8pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
%{->}(0pt,0.28em)(#1,0.28em)
%\psline[linewidth=0.36em,linecolor=white]{-}(0pt,0.1em)(#1,0.1em)
%\end{pspicture}\hss}}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\rightharpoondownElement}
% \changes{v1.02}{2009/11/19}{Added}
% \changes{v1.03}{2009/11/26}{Harpoons added as PostScript procedures}
%    \begin{macrocode}
\def\rightharpoondownElement#1{%
\raise0.2pt\hbox to#1{\hss%
\begin{pspicture}(0,0)(#1,0.28em)
\psline[linewidth=0.4pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
{-Hrd}(0pt,0.28em)(#1,0.28em)
\end{pspicture}\hss}}
%
%\def\rightharpoondownElement#1{%
%\raise0.2pt\hbox to#1{\hss%
%\begin{pspicture}(0,0)(#1,0.28em)
%\psline[linewidth=0.8pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
%{->}(0pt,0.28em)(#1,0.28em)
%\psline[linewidth=0.34em,linecolor=white]{-}(0pt,0.49em)(#1,0.49em)
%\end{pspicture}\hss}}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\leftharpoonupElement}
% \changes{v1.02}{2009/11/19}{Added}
% \changes{v1.03}{2009/11/26}{Harpoons added as PostScript procedures}
%    \begin{macrocode}
\def\leftharpoonupElement#1{%
\lower0.2pt\hbox to#1{\hss%
\begin{pspicture}(0,0)(#1,0.28em)
\psline[linewidth=0.4pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
{Hlu-}(0pt,0.28em)(#1,0.28em)
\end{pspicture}\hss}}
%
%\def\leftharpoonupElement#1{%
%\lower0.2pt\hbox to#1{\hss%
%\begin{pspicture}(0,0)(#1,0.28em)
%\psline[linewidth=0.8pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
%{<-}(0pt,0.28em)(#1,0.28em)
%\psline[linewidth=0.36em,linecolor=white]{-}(0pt,0.1em)(#1,0.1em)
%\end{pspicture}\hss}}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\leftharpoondownElement}
% \changes{v1.02}{2009/11/19}{Added}
% \changes{v1.03}{2009/11/26}{Harpoons added as PostScript procedures}
%    \begin{macrocode}
\def\leftharpoondownElement#1{%
\lower0.2pt\hbox to#1{\hss%
\begin{pspicture}(0,0)(#1,0.28em)
\psline[linewidth=0.4pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
{Hld-}(0pt,0.28em)(#1,0.28em)
\end{pspicture}\hss}}
%
%\def\leftharpoondownElement#1{%
%\lower0.2pt\hbox to#1{\hss%
%\begin{pspicture}(0,0)(#1,0.28em)
%\psline[linewidth=0.8pt,arrowsize=2pt 2,arrowlength=1.6,arrowinset=0.6]%
%{<-}(0pt,0.28em)(#1,0.28em)
%\psline[linewidth=0.34em,linecolor=white]{-}(0pt,0.49em)(#1,0.49em)
%\end{pspicture}\hss}}
%    \end{macrocode}
%  \end{macro}
%
%
% \changes{v1.02}{2009/11/19}{Added}
%  \begin{macro}{\llongrightharpoonup}
%  \begin{macro}{\llongrightharpoondown}
%  \begin{macro}{\llongleftharpoonup}
%  \begin{macro}{\llongleftharpoondown}
%    \begin{macrocode}
\def\newllongrightharpoonup{\ensuremath{\mathrel{\rightharpoonupElement{28pt}}}}
\def\newllongrightharpoondown{\ensuremath{\mathrel{\rightharpoondownElement{28pt}}}}
\def\newllongleftharpoonup{\ensuremath{\mathrel{\leftharpoonupElement{28pt}}}}
\def\newllongleftharpoondown{\ensuremath{\mathrel{\leftharpoondownElement{28pt}}}}
%\let\llongrightharpoonup=\newllongrightharpoonup
%\let\llongrightharpoondown=\newllongrightharpoondown
%\let\llongleftharpoonup=\newllongleftharpoonup
%\let\llongleftharpoondown=\newllongleftharpoondown
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
% \changes{v1.02}{2009/11/19}{Added}
%  \begin{macro}{\lllongrightharpoonup}
%  \begin{macro}{\lllongrightharpoondown}
%  \begin{macro}{\lllongleftharpoonup}
%  \begin{macro}{\lllongleftharpoondown}
%    \begin{macrocode}
\def\newlllongrightharpoonup{\ensuremath{\mathrel{\rightharpoonupElement{35pt}}}}
\def\newlllongrightharpoondown{\ensuremath{\mathrel{\rightharpoondownElement{35pt}}}}
\def\newlllongleftharpoonup{\ensuremath{\mathrel{\leftharpoonupElement{35pt}}}}
\def\newlllongleftharpoondown{\ensuremath{\mathrel{\leftharpoondownElement{35pt}}}}
%\let\lllongrightharpoonup=\newlllongrightharpoonup
%\let\lllongrightharpoondown=\newlllongrightharpoondown
%\let\lllongleftharpoonup=\newlllongleftharpoonup
%\let\lllongleftharpoondown\newlllongleftharpoondown
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%  \end{macro}
%
%
% \changes{v1.02}{2009/11/19}{Added}
%  \begin{macro}{\equilibarrow}
%  \begin{macro}{\equiliblongarrow}
%    \begin{macrocode}
\def\newequilibarrow{\ensuremath{\mathrel{%
\hbox to28pt{\hss\eqHarpoon@Element{28pt}\hss}}}}
\def\newequiliblongarrow{\ensuremath{\mathrel{%
\hbox to35pt{\hss\eqHarpoon@Element{35pt}\hss}}}}
%\let\equilibarrow=\newequilibarrow
%\let\equiliblongarrow=\newequiliblongarrow
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
% 
% \section{Chemical Corrections}
% (Deleted)
% 
%
% \section{XyMcompd and XyMtab Environments}
% (Deleted)
%
% \section{Useful commands}
% (Deleted)
%
% \section{Double and triple bonds}
% (Deleted)
%
% \section{Curved Arrows}
%
% To illustrate the mechanisms of organic reactions, 
% curved arrows are used to show an electron shift. 
% First, the macros for drawing them are 
% defined as follows. 
% \changes{v1.01}{2004/08/30}{Added at XyMTeX V4.01}
%
%  \begin{macro}{\electronAHshift}
% \changes{v5.00}{2010/10/01}{Redefined for compatibility to PDF mode}
%
% Arrows having a usual arrow head are defined as follows. 
% Keywords for differentiation are:  r (right) and l (left), 
% which are contained in the middle of each command name. 
%
% The |\pscurve| command of the \textsf{pstricks} package has been 
% replaced by |\psbezier|, where two control points are calculated 
% by means of |\calcontrolpoints| defined in the \textsf{chemist} package. 
%
%    \begin{macrocode}
\def\electronAHshift{%
\@ifnextchar[{\@electronAHshift}{\@electronAHshift[0]}}
\def\@electronAHshift[#1](#2,#3)(#4,#5)#6{%
\@tempcntXa=#2 \@tempcntYa=#3
\@tempcntXb=#4 \@tempcntYb=#5
\calcontrolpoints{#1}%defined in chemist package
%\pscurve[unit=\unitlength,linewidth=0.4pt]{#6}%
\psbezier[unit=\unitlength,linewidth=0.4pt]{#6}%
(#2,#3)(\@cnttempa,\@cnttempb)(\@tempcntXc,\@tempcntYc)(#4,#5)%
}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\electronrshiftarrow}
% \changes{v5.00}{2010/10/01}{Redefined using two control points}
%    \begin{macrocode}
\def\electronrshiftarrow{%
\@ifnextchar[{\@electronrshiftarrow}{\@electronrshiftarrow[0]}}
\def\@electronrshiftarrow[#1](#2,#3)(#4,#5){%
\ifnum#2<#4\relax
\electronAHshift[#1](#2,#3)(#4,#5){->}%
\else 
\ifcase#1\relax
\electronAHshift[1](#2,#3)(#4,#5){->}%
\or
\electronAHshift[0](#2,#3)(#4,#5){->}%
\fi\fi}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\electronlshiftarrow}
% \changes{v5.00}{2010/10/01}{Redefined using two control points}
%    \begin{macrocode}
\def\electronlshiftarrow{%
\@ifnextchar[{\@electronlshiftarrow}{\@electronlshiftarrow[0]}}
\def\@electronlshiftarrow[#1](#2,#3)(#4,#5){%
\ifnum#2<#4\relax
\electronAHshift[#1](#2,#3)(#4,#5){<-}%
\else 
\ifcase#1\relax
\electronAHshift[1](#2,#3)(#4,#5){<-}%
\or
\electronAHshift[0](#2,#3)(#4,#5){<-}%
\fi\fi}
\def\futuresubst#1{\kern140\unitlength #1}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\electronlshiftarrow}
% \changes{v5.00}{2010/10/01}{Redefined using two control points}
%    \begin{macrocode}
\def\electronlshiftarrow{%
\@ifnextchar[{\@electronlshiftarrow}{\@electronlshiftarrow[0]}}
\def\@electronlshiftarrow[#1](#2,#3)(#4,#5){%
\ifnum#2<#4\relax
\electronAHshift[#1](#2,#3)(#4,#5){<-}%
\else 
\ifcase#1\relax
\electronAHshift[1](#2,#3)(#4,#5){<-}%
\or
\electronAHshift[0](#2,#3)(#4,#5){<-}%
\fi\fi}
\def\futuresubst#1{\kern140\unitlength #1}
%    \end{macrocode}
%  \end{macro}
%
% Arrows having a harpoon-type head are defined as follows. 
% Keywords for differentiation are: 
% Hru (harpoon right upward), Hrd (harpoon right downward), 
% Hlu (harpoon left upward), and Hld (harpoon left downward).
%
%  \begin{macro}{\electronHrushiftarrow}
% \changes{v5.00}{2010/10/01}{Defined using two control points}
%    \begin{macrocode}
\def\electronHrushiftarrow{%
\@ifnextchar[{\@electronHrushiftarrow}{\@electronHrushiftarrow[0]}}
\def\@electronHrushiftarrow[#1](#2,#3)(#4,#5){%
\ifnum#2<#4\relax
\electronAHshift[#1](#2,#3)(#4,#5){-Hru}%
\else 
\ifcase#1\relax
\electronAHshift[1](#2,#3)(#4,#5){-Hru}%
\or
\electronAHshift[0](#2,#3)(#4,#5){-Hru}%
\fi\fi}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\electronHrdshiftarrow}
% \changes{v5.00}{2010/10/01}{Defined using two control points}
%    \begin{macrocode}
\def\electronHrdshiftarrow{%
\@ifnextchar[{\@electronHrdshiftarrow}{\@electronHrdshiftarrow[0]}}
\def\@electronHrdshiftarrow[#1](#2,#3)(#4,#5){%
\ifnum#2<#4\relax
\electronAHshift[#1](#2,#3)(#4,#5){-Hrd}%
\else 
\ifcase#1\relax
\electronAHshift[1](#2,#3)(#4,#5){-Hrd}%
\or
\electronAHshift[0](#2,#3)(#4,#5){-Hrd}%
\fi\fi}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\electronHlushiftarrow}
% \changes{v5.00}{2010/10/01}{Defined using two control points}
%    \begin{macrocode}
%
%    \begin{macrocode}
\def\electronHlushiftarrow{%
\@ifnextchar[{\@electronHlushiftarrow}{\@electronHlushiftarrow[0]}}
\def\@electronHlushiftarrow[#1](#2,#3)(#4,#5){%
\ifnum#2<#4\relax
\electronAHshift[#1](#2,#3)(#4,#5){Hlu-}%
\else 
\ifcase#1\relax
\electronAHshift[1](#2,#3)(#4,#5){Hlu-}%
\or
\electronAHshift[0](#2,#3)(#4,#5){Hlu-}%
\fi\fi}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\electronHrdshiftarrow}
% \changes{v5.00}{2010/10/01}{Defined using two control points}
%    \begin{macrocode}
%
%    \begin{macrocode}
\def\electronHldshiftarrow{%
\@ifnextchar[{\@electronHldshiftarrow}{\@electronHldshiftarrow[0]}}
\def\@electronHldshiftarrow[#1](#2,#3)(#4,#5){%
\ifnum#2<#4\relax
\electronAHshift[#1](#2,#3)(#4,#5){Hld-}%
\else 
\ifcase#1\relax
\electronAHshift[1](#2,#3)(#4,#5){Hld-}%
\or
\electronAHshift[0](#2,#3)(#4,#5){Hld-}%
\fi\fi}
%    \end{macrocode}
%  \end{macro}
%
% 
% \section{Initial Setting and Switch to PostScript Arrows}
%
%  \begin{macro}{\chmstpssw}
%    \begin{macrocode}
\def\chmstpssw{%setting of the chmst-ps package
\let\reactrarrow=\newreactrarrow%
\let\reactlarrow=\newreactlarrow
\let\reactlrarrow=\newreactlrarrow
\let\reactEqarrow=\newreactEqarrow
\let\reacteqarrow=\newreacteqarrow
%%%%
\let\reactREqarrow=\newreactREqarrow%
\let\reactLEqarrow=\newreactLEqarrow
\let\reactreqarrow=\newreactreqarrow
\let\reactleqarrow=\newreactleqarrow
%%%%
\let\reactdarrow=\newreactdarrow%
\let\reactuarrow=\newreactuarrow
\let\reactduarrow=\newreactduarrow
\let\reactVEqarrow=\newreactVEqarrow
\let\reactveqarrow=\newreactveqarrow
%%%%
\let\reactnearrow=\newreactnearrow%
\let\reactswarrow=\newreactswarrow
%%%%
\let\reactsearrow=\newreactsearrow%
\let\reactnwarrow=\newreactnwarrow
%%%%
\let\reactDEqarrow=\newreactDEqarrow%
\let\reactUEqarrow=\newreactUEqarrow
\let\reactdeqarrow=\newreactdeqarrow
\let\reactueqarrow=\newreactueqarrow
%%%%
\let\reactulrarrow=\newreactulrarrow%
\let\reactdlrarrow=\newreactdlrarrow
%%%%
\let\schemelarrow=\newschemelarrow%
\let\schemerarrow=\newschemerarrow
\let\schemelrarrow=\newschemelrarrow
%%%%
\let\llongrightarrow=\newllongrightarrow%
\let\llongleftarrow=\newllongleftarrow
\let\llongleftrightarrow=\newllongleftrightarrow
\let\Equilibarrow=\newEquilibarrow
%%%
\let\Llongrightarrow=\newLlongrightarrow%
\let\Llongleftarrow=\newLlongleftarrow
\let\Llongleftrightarrow\newLlongleftrightarrow
%%%
\let\lllongrightarrow=\newlllongrightarrow%
\let\lllongleftarrow=\newlllongleftarrow
\let\lllongleftrightarrow=\newlllongleftrightarrow
\let\Equiliblongarrow=\newEquiliblongarrow
%%%
\let\Lllongrightarrow=\newLllongrightarrow%
\let\Lllongleftarrow=\newLllongleftarrow
\let\Lllongleftrightarrow\newLllongleftrightarrow
%%%
\let\llongrightharpoonup=\newllongrightharpoonup%
\let\llongrightharpoondown=\newllongrightharpoondown
\let\llongleftharpoonup=\newllongleftharpoonup
\let\llongleftharpoondown=\newllongleftharpoondown
%%%
\let\lllongrightharpoonup=\newlllongrightharpoonup%
\let\lllongrightharpoondown=\newlllongrightharpoondown
\let\lllongleftharpoonup=\newlllongleftharpoonup
\let\lllongleftharpoondown\newlllongleftharpoondown
%%%
\let\equilibarrow=\newequilibarrow%
\let\equiliblongarrow=\newequiliblongarrow
%%%
}
\let\chmstpspdfsw=\chmstpssw%for compatibility to PDF mode
%    \end{macrocode}
%  \end{macro}
%
%    \begin{macrocode}
\chmstpssw%initial setting
%</chmstps>
%    \end{macrocode}
%
% \Finale
\endinput
