%% %% This is file `basicarith.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% basicarith.dtx (with options: `package') %% This is a generated file. %% %% This document is copyright 2014 by Donald P. Goodman, and is %% released publicly under the LaTeX Project Public License. The %% distribution and modification of this work is constrained by the %% conditions of that license. See %% http://www.latex-project.org/lppl.txt %% for the text of the license. This document is released %% under version 1.3 of that license, and this work may be distributed %% or modified under the terms of that license or, at your option, any %% later version. %% %% This work has the LPPL maintenance status 'maintained'. %% %% The Current Maintainer of this work is Donald P. Goodman %% (dgoodmaniii@gmail.com). %% %% This work consists of basicarith.dtx, basicarith.ins, and %% derived files basicarith.sty and basicarith.pdf. \NeedsTeXFormat{LaTeX2e}[1999/12/01] \ProvidesPackage{basicarith}[2015/01/01 v1.1 support for typesetting basic arithmetic in the American fashion] \newif\ifshowdivisionwork % switch for drop arrows \showdivisionworktrue \DeclareOption{noshowdivwork}{\showdivisionworkfalse} \DeclareOption{showdivwork}{\showdivisionworktrue} \ProcessOptions \newdimen\b@solverulewidth % rule under the operator line \b@solverulewidth=0.4pt \newcount\b@maxcols % maximum length of a problem \b@maxcols=20 \newcount\b@maxrows % maximum lines of a problem \b@maxrows=20 \newdimen\b@longdivlinewidth % width of above \def\fractionsymbol{;} \newdimen\b@topdivline % length of the above \newdimen\b@totalprobwid % width of widest line of problem \newdimen\b@digitwid % width of a digit \def\b@widthofdigit{2ex} \newcount\b@colnum % row number of problem \b@colnum=0% \def\specialdigitstyle{} % style for a given digit \def\speciallinestyle{} % style for a given digit \b@longdivlinewidth=0.4pt \newdimen\b@parenfontsize % size of parenthesis in longdiv \newcount\b@linenum % row number of problem \newdimen\b@divisorlen % length of divisor \newdimen\b@divparenlen % width of the paren in ld \newdimen\b@ldrowlen % length to add to b@divisorlen \newdimen\b@fulldivlen % length of divisor + dividend \b@fulldivlen=0pt \newcount\b@charcount % number of chars in an argument \b@charcount=0 \newcount\b@loopi % generic loop counter \b@loopi=0 \def\b@remaindertext{R} % text for the remainder \newdimen\b@droparrowlen % drop arrow length \b@droparrowlen=0pt \def\gobblechar{\let\char= } \def\assignthencheck{\afterassignment\checknil\gobblechar} \def\countunlessnil{% \ifx\char\nil \let\next=\relax% \else% \let\next=\auxcountchar% \advance\b@charcount by1% \fi% \ifx\char;\advance\b@charcount by-1\fi% \next% }% \def\auxcountchar{% \afterassignment\countunlessnil\gobblechar% }% \def\countchar#1{\def\xx{#1}\b@charcount=0 \expandafter\auxcountchar\xx\nil} \def\b@expandloop#1{% \hbox{% \b@xloop#1\relax }% } \def\b@xloop#1{% \if#1\fractionsymbol\else\advance\b@colnum by-1\fi% \ifx\relax#1% \else% \if#1\fractionsymbol% \rlap{\hbox to0pt{\hss#1\hss}}% \else% \hbox to\b@digitwid{\hfil{% \csname speciallinestyle\romannumeral\b@linenum\endcsname% \csname specialdigitstyle\romannumeral\b@colnum\endcsname% #1% }\hfil}% \fi% \expandafter\b@xloop% \fi% } \def\b@spaceout#1{% \countchar{#1}% \b@colnum=\b@charcount% \advance\b@colnum by1% \b@expandloop{#1}% }% \def\probline#1#2{% \advance\b@linenum by1% \b@digitwid=\b@widthofdigit% \b@totalprobwid=\b@digitwid% \multiply\b@totalprobwid by#1% \hbox to\b@totalprobwid{% \hfil\b@spaceout{#2}% }% }% \def\opline#1#2{% \advance\b@linenum by1% \hbox{% \hbox to\b@digitwid{\hfil#1}% \advance\b@totalprobwid by-\b@digitwid% \hbox to\b@totalprobwid{% \hfil\b@spaceout{#2}% }% }% \vskip0.5ex% \hrule width\b@totalprobwid height\b@solverulewidth% \vskip0.5ex% }% \def\noopline#1{% \opline{}{#1}% }% \def\nextpline#1{% \advance\b@linenum by1% \hbox{% \hbox to\b@totalprobwid{% \hfil\b@spaceout{#1}% }% }% }% \def\soluline#1{% \advance\b@linenum by1% \hbox{% \hbox to\b@totalprobwid{% \hfil\b@spaceout{#1}% }% }% \b@linenum=0% }% \def\carryline#1#2{% {% \advance\b@linenum by1% \b@digitwid=\b@widthofdigit% \b@totalprobwid=\b@digitwid% \multiply\b@totalprobwid by#1% \footnotesize% \hbox to\b@totalprobwid{% \hfil\b@spaceout{#2}% }% \hrule width\b@totalprobwid height0pt% \vskip0.4em% }% } \def\longdiv#1#2#3{% \advance\b@linenum by1% \vskip\baselineskip% \b@digitwid=\b@widthofdigit% \b@topdivline=\b@digitwid% \settowidth{\b@divisorlen}{\b@spaceout{#3}} \b@parenfontsize=\f@size pt% \multiply\b@parenfontsize by12% \divide\b@parenfontsize by10% \settowidth{\b@divparenlen}{% \fontsize{\b@parenfontsize}{\b@parenfontsize}\selectfont)}% \multiply\b@topdivline by#1% \advance\b@topdivline by0.5\b@digitwid% \vskip0.5ex% \vbox{% \hbox{% \hskip\b@divisorlen% \vrule width\b@topdivline height\b@longdivlinewidth% }% \nointerlineskip% \hbox{% \b@spaceout{#3}% \hfil{\fontsize{\b@parenfontsize}{\b@parenfontsize}\selectfont)}% \b@spaceout{#2}% }% }% \advance\b@divisorlen by\b@divparenlen% }% \def\ldsoluline#1#2{% \advance\b@fulldivlen by\b@divisorlen% \advance\b@fulldivlen by\b@topdivline% \advance\b@fulldivlen by-\b@digitwid% \advance\b@fulldivlen by\b@divparenlen% \vskip-2\baselineskip% \hbox to\b@fulldivlen{% \hfil% \b@spaceout{#1}% \if#2\relax\else\rlap{\hskip1em \b@remaindertext{ }#2}\fi% }% \vskip\baselineskip% }% \newdimen\b@droparrowwidth \def\getdroparrowwidth{% \setbox\@tempboxa\hbox{$\downarrow$}% \b@droparrowwidth=\wd\@tempboxa% }% \def\nextldline#1#2{% \advance\b@linenum by1% \b@ldrowlen=\b@digitwid% \multiply\b@ldrowlen by#1% \hbox{% \hskip\b@divisorlen% \hskip\b@ldrowlen% \b@spaceout{#2}% \b@droparrowlen=\baselineskip% \ifshowdivisionwork% \ifnum\b@linenum>2% \getdroparrowwidth% \multiply\b@droparrowlen by\b@linenum% \advance\b@droparrowlen by-2\baselineskip% \hskip-0.5\b@digitwid% \vtop{\vskip-\baselineskip\vskip-\b@droparrowlen% \rlap{% \vrule width0.4pt height\b@droparrowlen% \hskip-0.5\b@droparrowwidth{$\downarrow$}% } }% \fi% \fi% }% }% \def\linestyle#1#2{% \b@loopi=0% \loop\ifnum\the\b@loopi<\the\b@maxrows% \advance\b@loopi by1% \ifnum#1=\the\b@loopi \expandafter\def\csname speciallinestyle\romannumeral\b@loopi\endcsname{#2}% \fi \repeat }% \def\digstyle#1#2{% \b@loopi=0% \loop\ifnum\the\b@loopi<\the\b@maxcols% \advance\b@loopi by1% \ifnum#1=\the\b@loopi \expandafter\def\csname specialdigitstyle\romannumeral\b@loopi\endcsname{#2}% \fi \repeat }% \def\clearlinestyles{% \b@loopi=0% \loop\ifnum\the\b@loopi<\the\b@maxrows% \advance\b@loopi by1% \expandafter\def\csname speciallinestyle\romannumeral\b@loopi\endcsname{}% \repeat }% \def\cleardigitstyles{% \b@loopi=0% \loop\ifnum\the\b@loopi<\the\b@maxcols% \advance\b@loopi by1% \expandafter\def\csname specialdigitstyle\romannumeral\b@loopi\endcsname{}% \repeat }% \def\problembox#1{% \leavevmode\vbox{#1}% }% \def\strike#1{% {\rlap{\bf---}#1}% } \def\showdivwork{% \showdivisionworktrue% } \def\noshowdivwork{% \showdivisionworkfalse% } \cleardigitstyles \endinput %% %% End of file `basicarith.sty'.