views:

37

answers:

2

I have the following piece of latex code:

\def\a{1}
\def\b{2}
\def\c{\a+\b}
\def\d{\c/2}

I expected \d to have the value 1.5. But it did not. However, adding parenthesis to the definition of \c like

\def\c{\a+\b}

Doesn't work either, because if I use \c somewhere, it complains about the parenthesis. Is there a way to evaluate \c before dividing it by 2 in the definition of \d? Like:

\def\d{\eval{\c}/2}

(I made that \eval up to show what I mean)

+2  A: 

You could use the calc package for arithmetic operations. The package fp works with real numbers.

For discussing LaTeX problems you're kindly invited to visit tex.stackexchange.com.

Stefan
A: 

You need to remember that \def is about creating replacement text. It will always give you back what you put in, quite apart from not knowing anything about maths. If we assume you are using e-TeX (likely), then for integer expressions you might do

\def\a{1}
\def\b{2}
\edef\c{\number\intexpr \a + \b \relax}
\edef\d{\number\intexpr \c / 2 \relax}

This uses the e-TeX primitive \intexpr, which does integer mathematics. For real numbers, Stefan is right that the fp package is the best approach.

Joseph Wright