From 8317c14a3982d615f40eba6278e7c0b9cc791e9b Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 13 Jan 2006 00:09:38 +0000 Subject: tools git-svn-id: svn://tug.org/texlive/trunk@1402 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/tools/calc.sty | 189 +++++++++++++++++++++++++++++ 1 file changed, 189 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/tools/calc.sty (limited to 'Master/texmf-dist/tex/latex/tools/calc.sty') diff --git a/Master/texmf-dist/tex/latex/tools/calc.sty b/Master/texmf-dist/tex/latex/tools/calc.sty new file mode 100644 index 00000000000..d0b1a78fed9 --- /dev/null +++ b/Master/texmf-dist/tex/latex/tools/calc.sty @@ -0,0 +1,189 @@ +%% +%% This is file `calc.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% calc.dtx (with options: `package') +%% +%% This is a generated file. +%% +%% Copyright 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 +%% The LaTeX3 Project and any individual authors listed elsewhere +%% in this file. +%% +%% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'. +%% -------------------------------------------------------------------------- +%% +%% It 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 2003/12/01 or later. +%% +%% This file may only be distributed together with a copy of the LaTeX +%% `Tools Bundle'. You may however distribute the LaTeX `Tools Bundle' +%% without such generated files. +%% +%% The list of all files belonging to the LaTeX `Tools Bundle' is +%% given in the file `manifest.txt'. +%% +%% File `calc.dtx'. +%% Copyright (C) 1992--1995 +%% Kresten Krab Thorup and Frank Jensen. +%% Copyright (C) 1997--1998 +%% Kresten Krab Thorup, Frank Jensen and the LaTeX3 Project. +%% +%% The original authors (fj@hugin.dk and krab@daimi.aau.dk) have +%% contributed this package to the LaTeX distribution. +%% Problems with this package should now be sent using latexbug.tex to +%% the normal LaTeX bug report address. +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{calc} + [1998/07/07 v4.1b Infix arithmetic (KKT,FJ)] +\def\calc@assign@generic#1#2#3#4{\let\calc@A#1\let\calc@B#2% + \expandafter\calc@open\expandafter(#4!% + \global\calc@A\calc@B\endgroup#3\calc@B} +\def\calc@assign@count{\calc@assign@generic\calc@Acount\calc@Bcount} +\def\calc@assign@dimen{\calc@assign@generic\calc@Adimen\calc@Bdimen} +\def\calc@assign@skip{\calc@assign@generic\calc@Askip\calc@Bskip} +\newcount\calc@Acount \newcount\calc@Bcount +\newdimen\calc@Adimen \newdimen\calc@Bdimen +\newskip\calc@Askip \newskip\calc@Bskip +\def\setcounter#1#2{\@ifundefined{c@#1}{\@nocounterr{#1}}% + {\calc@assign@count{\global\csname c@#1\endcsname}{#2}}} +\def\addtocounter#1#2{\@ifundefined{c@#1}{\@nocounterr{#1}}% + {\calc@assign@count{\global\advance\csname c@#1\endcsname}{#2}}} +\DeclareRobustCommand\setlength{\calc@assign@skip} +\DeclareRobustCommand\addtolength[1]{\calc@assign@skip{\advance#1}} +\def\calc@pre@scan#1{% + \ifx(#1% + \expandafter\calc@open + \else + \ifx\widthof#1% + \expandafter\expandafter\expandafter\calc@textsize + \else + \calc@numeric% no \expandafter needed for this one. + \fi + \fi + #1} +\def\calc@open({\begingroup\aftergroup\calc@initB + \begingroup\aftergroup\calc@initB + \calc@pre@scan} +\def\calc@initB{\calc@B\calc@A} +\def\calc@numeric{\afterassignment\calc@post@scan \global\calc@A} +\newcommand\widthof{} +\let\widthof\ignorespaces +\newcommand\heightof{} +\let\heightof\ignorespaces +\newcommand\depthof{} +\let\depthof\ignorespaces +\def\calc@textsize #1#2{% + \begingroup + \let\widthof\wd + \let\heightof\ht + \let\depthof\dp + \@settodim #1% + {\global\calc@A}% + {% + \let\widthof\ignorespaces + \let\heightof\ignorespaces + \let\depthof\ignorespaces + #2}% + \endgroup + \calc@post@scan} +\def\calc@post@scan#1{% + \ifx#1!\let\calc@next\endgroup \else + \ifx#1+\let\calc@next\calc@add \else + \ifx#1-\let\calc@next\calc@subtract \else + \ifx#1*\let\calc@next\calc@multiplyx \else + \ifx#1/\let\calc@next\calc@dividex \else + \ifx#1)\let\calc@next\calc@close \else \calc@error#1% + \fi + \fi + \fi + \fi + \fi + \fi + \calc@next} +\def\calc@add{\calc@generic@add\calc@addAtoB} +\def\calc@subtract{\calc@generic@add\calc@subtractAfromB} +\def\calc@generic@add#1{\endgroup\global\calc@A\calc@B\endgroup + \begingroup\aftergroup#1\begingroup\aftergroup\calc@initB + \calc@pre@scan} +\def\calc@addAtoB{\advance\calc@B\calc@A} +\def\calc@subtractAfromB{\advance\calc@B-\calc@A} +\ifx\real\@undefined\let\real\relax\fi +\ifx\ratio\@undefined\let\ratio\relax\fi +\def\calc@ratio@x{\ratio} +\def\calc@real@x{\real} +\def\calc@multiplyx#1{\def\calc@tmp{#1}% + \ifx\calc@tmp\calc@ratio@x \let\calc@next\calc@ratio@multiply \else + \ifx\calc@tmp\calc@real@x \let\calc@next\calc@real@multiply \else + \let\calc@next\calc@multiply + \fi + \fi + \calc@next#1} +\def\calc@dividex#1{\def\calc@tmp{#1}% + \ifx\calc@tmp\calc@ratio@x \let\calc@next\calc@ratio@divide \else + \ifx\calc@tmp\calc@real@x \let\calc@next\calc@real@divide \else + \let\calc@next\calc@divide + \fi + \fi + \calc@next#1} +\def\calc@multiply{\calc@generic@multiply\calc@multiplyBbyA} +\def\calc@divide{\calc@generic@multiply\calc@divideBbyA} +\def\calc@generic@multiply#1{\endgroup\begingroup + \let\calc@A\calc@Acount \let\calc@B\calc@Bcount + \aftergroup#1\calc@pre@scan} +\def\calc@multiplyBbyA{\multiply\calc@B\calc@Acount} +\def\calc@divideBbyA{\divide\calc@B\calc@Acount} +\def\calc@close + {\endgroup\global\calc@A\calc@B + \endgroup\global\calc@A\calc@B + \calc@post@scan} +\def\calc@ratio@multiply\ratio{\calc@ratio@evaluate} +\def\calc@ratio@divide\ratio#1#2{\calc@ratio@evaluate{#2}{#1}} +\let\calc@numerator=\calc@Bcount +\newcount\calc@denominator +\def\calc@ratio@evaluate#1#2{% + \endgroup\begingroup + \calc@assign@dimen\calc@numerator{#1}% + \calc@assign@dimen\calc@denominator{#2}% + \gdef\calc@the@ratio{}% + \ifnum\calc@numerator<0 \calc@numerator-\calc@numerator + \gdef\calc@the@ratio{-}% + \fi + \ifnum\calc@denominator<0 \calc@denominator-\calc@denominator + \xdef\calc@the@ratio{\calc@the@ratio-}% + \fi + \calc@Acount\calc@numerator + \divide\calc@Acount\calc@denominator + \xdef\calc@the@ratio{\calc@the@ratio\number\calc@Acount.}% + \calc@next@digit \calc@next@digit \calc@next@digit + \calc@next@digit \calc@next@digit \calc@next@digit + \endgroup + \calc@multiply@by@real\calc@the@ratio + \begingroup + \calc@post@scan} +\def\calc@next@digit{% + \multiply\calc@Acount\calc@denominator + \advance\calc@numerator -\calc@Acount + \multiply\calc@numerator 10 + \calc@Acount\calc@numerator + \divide\calc@Acount\calc@denominator + \xdef\calc@the@ratio{\calc@the@ratio\number\calc@Acount}} +\def\calc@multiply@by@real#1{\calc@Bdimen #1\calc@B \calc@B\calc@Bdimen} +\def\calc@real@multiply\real#1{\endgroup + \calc@multiply@by@real{#1}\begingroup + \calc@post@scan} +\def\calc@real@divide\real#1{\calc@ratio@evaluate{1pt}{#1pt}} +\def\calc@error#1{% + \PackageError{calc}% + {`#1' invalid at this point}% + {I expected to see one of: + - * / )}} +\endinput +%% +%% End of file `calc.sty'. -- cgit v1.2.3