[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: calculating with TeX/LaTeX



Martin F Krafft <madduck@madduck.net> writes:
MFK> how can you {add,multiply,negate,divide} two scalars in TeX/LaTeX?
MFK> 
MFK> in a new command that i am writing (it places a \picture), i want to
MFK> use one of the two arguments (width) and \linewidth or \textwidth to
MFK> calculate the remaining horizontal space i have (for another picture).
MFK> 
MFK> i know i can convert a #1 argument of a command into a \length with
MFK> \newlength\setlength, but how can i mathematically combine multiple
MFK> \lengths? i know it's possible, though maybe not on the LaTeX level.

(Looks through TeXbook)  It looks like you can only do this if one of
the things is a named length.  But in that case you can do things
like:

% Make \mylen be the width of the page less 5ex.
\setlength\mylen\textwidth
\addtolength\mylen{-5ex}
% Or, equivalently,
\advance\mylen by -5ex

% Make \mylen be 15ex.
\setlength\mylen{5ex}
\multiply\mylen by 3
% Doesn't look like there's a LaTeX equivalent for this one.

You also want to be slightly careful when dealing with lengths.  For
example:

\newcommand{\spacetext}[2]{\hskip#1#2}

will do the wrong thing if you try to do, say, \spacetext{10ex}{plus
3ex foo bar bax quux}, since TeX will read "10ex plus 3ex" as
stretchable length; you should put a \relax in between #1 and #2 in
this case for safety.

-- 
David Maze         dmaze@debian.org      http://people.debian.org/~dmaze/
"Theoretical politics is interesting.  Politicking should be illegal."
	-- Abra Mitchell



Reply to: