summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/xymtex/base/sizeredc.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/xymtex/base/sizeredc.dtx')
-rw-r--r--macros/latex/contrib/xymtex/base/sizeredc.dtx351
1 files changed, 351 insertions, 0 deletions
diff --git a/macros/latex/contrib/xymtex/base/sizeredc.dtx b/macros/latex/contrib/xymtex/base/sizeredc.dtx
new file mode 100644
index 0000000000..fd6bf49f35
--- /dev/null
+++ b/macros/latex/contrib/xymtex/base/sizeredc.dtx
@@ -0,0 +1,351 @@
+% \iffalse meta-comment
+%% File: sizeredc.dtx
+%
+% Copyright 1996, 2001, 2002, 2004, 2010 by Shinsaku Fujita
+%
+% This file is part of XyMTeX system.
+% -------------------------------------
+%
+% This file is a part of the macro package ``XyMTeX'' which has been
+% designed for typesetting chemical structural formulas.
+%
+% This file is to be contained in the ``xymtex'' directory which is
+% an input directory for TeX. It is a LaTeX optional style file and
+% should be used only within LaTeX, because several macros of the file
+% are based on LaTeX commands.
+%
+% For the review of XyMTeX, see
+% (1) Shinsaku Fujita, ``Typesetting structural formulas with the text
+% formatter TeX/LaTeX'', Computers and Chemistry, in press.
+% The following book deals with an application of TeX/LaTeX to
+% preparation of manuscripts of chemical fields:
+% (2) Shinsaku Fujita, ``LaTeX for Chemists and Biochemists''
+% Tokyo Kagaku Dozin, Tokyo (1993) [in Japanese].
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+% The Current Maintainer of this work is Shinsaku Fujita.
+%
+% This work consists of the files sizeredc.dtx and sizeredc.ins
+% and the derived file sizeredc.sty.
+%
+% Please report any bugs, comments, suggestions, etc. to:
+% Shinsaku Fujita,
+% Shonan Institute of Chemoinformatics and Mathematical Chemistry
+% Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun, Kanagawa 250-0019 Japan
+% (old address)
+% Ashigara Research Laboratories, Fuji Photo Film Co., Ltd.,
+% Minami-Ashigara, Kanagawa-ken, 250-01, Japan.
+% (old address)
+% Department of Chemistry and Materials Technology,
+% Kyoto Institute of Technology, \\
+% Matsugasaki, Sakyoku, Kyoto, 606 Japan
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{sizeredc}
+% \def\versi@ndate{June 12, 2001}
+% \def\versi@nno{ver1.00}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{sizeredc}
+% \def\versi@ndate{April 30, 2002}
+% \def\versi@nno{ver1.01}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \def\j@urnalname{sizeredc}
+% \def\versi@ndate{August 30, 2004}
+% \def\versi@nno{ver4.01}
+% \def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \fi
+%
+% \CheckSum{428}
+%% \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}{2001/06/12}{first edition for LaTeX2e}
+% \changes{v1.01}{2002/04/30}{2nd edition for XyMTeX v3.00}
+% \changes{v4.01}{2004/08/30}{Adjust XyMTeX v4.01}
+% \changes{v5.00}{2010/10/01}{the LaTeX Project Public License}
+% \fi
+%
+% \iffalse
+%<*driver>
+\NeedsTeXFormat{pLaTeX2e}
+% \fi
+\ProvidesFile{sizeredc.dtx}[2010/10/01 v5.00 XyMTeX{} package file]
+% \iffalse
+\documentclass{ltxdoc}
+\GetFileInfo{sizeredc.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{Size Reduction of Structural Formulas
+by {\sffamily sizeredc.sty} (\fileversion) of \XyMTeX{}}
+\author{Shinsaku Fujita \\
+Shonan Institute of Chemoinformatics and Mathematical Chemistry, \\
+Kaneko 479-7 Ooimachi, Ashigara-Kami-Gun, Kanagawa 250-0019 Japan
+% % (old address)
+% %Department of Chemistry and Materials Technology, \\
+% %Kyoto Institute of Technology, \\
+% %Matsugasaki, Sakyoku, Kyoto, 606-8585 Japan
+% %% (old address)
+% %% Ashigara Research Laboratories,
+% %% Fuji Photo Film Co., Ltd., \\
+% %% Minami-Ashigara, Kanagawa, 250-01 Japan
+}
+\date{\filedate}
+%
+\begin{document}
+ \maketitle
+ \DocInput{sizeredc.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \section{Introduction}\label{sizeredc:intro}
+%
+% \subsection{Options for {\sffamily docstrip}}
+%
+% \DeleteShortVerb{\|}
+% \begin{center}
+% \begin{tabular}{|l|l|}
+% \hline
+% \emph{option} & \emph{function}\\ \hline
+% sizeredc & sizeredc.sty \\
+% driver & driver for this dtx file \\
+% \hline
+% \end{tabular}
+% \end{center}
+% \MakeShortVerb{\|}
+%
+% \subsection{Version Information}
+%
+% \begin{macrocode}
+%<*sizeredc>
+\typeout{XyMTeX for Drawing Chemical Structural Formulas. Version 5.00}
+\typeout{ -- Released October 01, 2010 by Shinsaku Fujita}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\j@urnalname{sizeredc}
+\def\versi@ndate{October 01, 2010}
+\def\versi@nno{ver5.00}
+\def\copyrighth@lder{SF} % Shinsaku Fujita
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\typeout{XyMTeX Macro File `\j@urnalname' (\versi@nno) <\versi@ndate>%
+\space[\copyrighth@lder]}
+% \end{macrocode}
+%
+% \section{Macros for Size Reduction}
+% \subsection{Division of Integers}
+%
+% \begin{macro}{\DIVIDE}
+% The macro |\DIVIDE| is used to the devision of an integer
+% by a divisor. The result (rounded to an integer) is stored
+% in a control sequence such as |\Quatient|.
+% \begin{verbatim}
+% \DIVDE{integer}{divisor}\Quatient
+% \end{verbatim}
+%
+% \begin{macrocode}
+\newcount\@tempcntx \newcount\@tempcnty \newcount\@tempcntz
+\newif\ifseifuflag \seifuflagfalse
+\def\DIVIDE#1#2#3{%
+\seifuflagfalse \@tempcntx=#1
+\ifnum\@tempcntx<0 \@tempcntx=-\@tempcntx\seifuflagtrue\fi
+\divide\@tempcntx by#2\relax
+\ifnum\@tempcntx<0 \@tempcntx=-\@tempcntx
+\ifseifuflag \seifuflagfalse \else \seifuflagtrue\fi\fi
+\@tempcntz=\@tempcntx%%store
+\@tempcnty=\@tempcntx \multiply\@tempcnty by#2%
+\ifnum\@tempcnty<0 \@tempcnty=-\@tempcnty\fi
+\@tempcntx=#1%
+\ifnum\@tempcntx<0 \@tempcntx=-\@tempcntx\fi
+\advance\@tempcntx by-\@tempcnty%
+\multiply\@tempcntx by10 \edef\s{\the\@tempcntx}%
+\divide\@tempcntx by#2
+\ifnum\@tempcntx<0 \@tempcntx=-\@tempcntx\fi
+\ifnum\@tempcntx>4\relax \advance\@tempcntz by1\fi
+\ifseifuflag \xdef#3{-\the\@tempcntz}%
+\else\xdef#3{\the\@tempcntz}\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Size Reduction of Formulas}
+%
+% \begin{macro}{\LineTemp}
+% The macro |\LineTemp| is used to redefine the |\line| commond of
+% the \LaTeXe{} picture environment. Thereby, the macro
+% |\LineTemp(a,b){c}| is transformed into the macro
+% |\drawline(0,0)(c, ca/b)| for epic.sty, where |ca/b| is
+% calculated by the macro |\DIVIDE| defined above.
+%
+% \begin{macrocode}
+\newcount\@xArg \newcount\@yArg
+\def\LineTemp(#1,#2)#3{\begingroup
+\@xArg #1\relax \@yArg #2\relax
+\ifnum\@xArg<0 \@tempcntx=-#3 \else
+\ifnum\@xArg>0 \@tempcntx=#3 \else \@tempcntx=0 \fi\fi
+\@tempcnty=#3
+\multiply\@tempcnty by\@yArg\relax
+\ifnum\@tempcnty<0 \@tempcnty=-\@tempcnty\fi
+\ifnum\@xArg<0 \@xArg=-\@xArg\fi
+\ifnum\@xArg=0 \edef\RR{#3}\else
+{\DIVIDE{\@tempcnty}{\@xArg}\RR}\fi
+\@tempcnty=\RR%
+\ifnum\@yArg<0 \ifnum\@tempcnty>0 \@tempcnty=-\@tempcnty\fi\fi
+\drawline(0,0)(\the\@tempcntx,\the\@tempcnty)%
+\endgroup}
+% \end{macrocode}
+% \end{macro}
+%
+% The if-phrase |\ifsizereduction| is to determine whether
+% size-reduction is carried out or not.
+% Then, |\LineTemp| is substituted for the original |\line|
+% if |\sizereductiontrue| is declared and if |\unitlength|
+% is smaller than 0.1pt.
+%
+% \begin{macro}{\line}
+% \begin{macro}{\ifsizereduction}
+% \begin{macrocode}
+\RequirePackage{epic}%
+\newif\ifsizereduction \sizereductionfalse
+%\let\@ldline=\line
+\def\reduced@line(#1,#2)#3{\ifsizereduction
+\ifdim\unitlength<0.1pt \LineTemp(#1,#2){#3}\else
+\@ldline(#1,#2){#3}\fi
+\else\@ldline(#1,#2){#3}\fi}
+\let\line=\reduced@line
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The command |\changeunitlength| is used to set |\unitlength|
+% and to declare |\sizereductiontrue|
+% if |\unitlength| is smaller than 0.1pt.
+% The font size of substituents is changed by |\substfontsize|
+% according to the size reduction.
+%
+% \changes{v4.00}{2002/5/30}{Added: \cs{substfontsize}}
+%
+% \begin{macro}{\@changeunitlength}
+% \begin{macrocode}
+\def\@changeunitlength#1{\unitlength=#1\relax
+\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}
+\let\changeunitlength=\@changeunitlength
+% \end{macrocode}
+% \end{macro}
+%
+% The reduced setting is the original LaTeX picture environment but
+% include the size-reduction mechanism.
+% To switch the size-reduction meachism and the pstricks mechanism,
+% we can use a switching command such as |\originalpicture|.
+% \changes{v3.00}{2002/4/30}{New environment: sfpicture}
+%
+% \begin{macro}{\reducedsizepicture}
+% \begin{macrocode}
+\def\reducedsizepicture{%
+\@ifnextchar[{\reduced@picture}{\reduced@picture[0.1pt]}}
+\def\reduced@picture[#1]{%
+\sizereductiontrue
+\let\sfpicture=\picture
+\let\endsfpicture=\endpicture
+\let\Put@Direct=\put
+\let\Multiput@Direct=\multiput
+\let\thicklines=\@ldthicklines
+\let\thinlines=\@ldthinlines
+\let\line=\reduced@line
+\let\dotorline=\d@t@rline
+\let\Put@Line=\Put@@Line
+\let\Put@sCircle=\Put@@sCircle
+\let\Put@oCircle=\Put@@oCircle
+\xymtexpsswfalse
+\let\changeunitlength=\@changeunitlength
+\changeunitlength{#1}}
+\reducedsizepicture%size-reduction setting
+% \end{macrocode}
+% \end{macro}
+%
+%
+% The command |\lineslope| of epic.sty has been redefined
+% to give a more precise result.
+%
+% \begin{macro}{\lineslope}
+% \begin{macrocode}
+\let\oldlineslope=\lineslope%used only in the manual
+\def\lineslope(#1,#2){%
+\begingroup
+\ifdim #1 <0pt \@xdim= -#1 \else\@xdim=#1\fi
+\ifdim #2 <0pt \@ydim= -#2 \else\@ydim=#2\fi
+%\typeout{LLL= \the#1, \the#2}
+\multiply\@xdim by10\relax%by S. Fujita 2001/6/20
+\multiply\@ydim by10\relax%by S. Fujita 2001/6/20
+%\typeout{xdim,ydim= \the\@xdim, \the\@ydim}
+\ifdim\@xdim >\@ydim \@tempdima=\@xdim \@xdim=\@ydim \@ydim=\@tempdima
+\@flippedargstrue\else\@flippedargsfalse\fi% x < y
+\ifdim\@ydim >1pt \@tempcntx=\@ydim
+ \divide\@tempcntx by 65536% now \@tempcntx=integral part of #1.
+ \divide\@xdim \@tempcntx\fi
+%\typeout{xdim: \the\@xdim}%
+\ifdim\@xdim <.083333pt \@xarg=1 \@yarg=0
+ \else\ifdim\@xdim <.183333pt \@xarg=6 \@yarg=1
+ \else\ifdim\@xdim <.225pt \@xarg=5 \@yarg=1
+ \else\ifdim\@xdim <.291666pt \@xarg=4 \@yarg=1
+ \else\ifdim\@xdim <.366666pt \@xarg=3 \@yarg=1
+ \else\ifdim\@xdim <.45pt \@xarg=5 \@yarg=2
+ \else\ifdim\@xdim <.55pt \@xarg=2 \@yarg=1
+ \else\ifdim\@xdim <.633333pt \@xarg=5 \@yarg=3
+ \else\ifdim\@xdim <.708333pt \@xarg=3 \@yarg=2
+ \else\ifdim\@xdim <.775pt \@xarg=4 \@yarg=3
+ \else\ifdim\@xdim <.816666pt \@xarg=5 \@yarg=4
+ \else\ifdim\@xdim <.916666pt \@xarg=6 \@yarg=5
+ \else \@xarg=1 \@yarg=1%
+\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+\if@flippedargs\relax\else\@tempcntx=\@xarg \@xarg=\@yarg
+ \@yarg=\@tempcntx\fi
+\ifdim #1 <0pt \global\@xarg= -\@xarg\else\global\@xarg= \@xarg\fi
+\ifdim #2 <0pt \global\@yarg= -\@yarg\else\global\@yarg= \@yarg\fi
+%%\typeout{closest slope integers = \the\@xarg, \the\@yarg}
+\endgroup}
+%</sizeredc>
+% \end{macrocode}
+% \end{macro}
+%
+% \Finale
+%
+\endinput