% \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} % % \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} % % \end{macrocode} % \end{macro} % % \Finale % \endinput