Christian
Christian

Reputation: 2282

Variable evaluation in LateX

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)

Upvotes: 3

Views: 16362

Answers (2)

Joseph Wright
Joseph Wright

Reputation: 2927

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.

Upvotes: 2

Stefan
Stefan

Reputation: 3620

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.

Upvotes: 4

Related Questions