2010-08-19 71 views
2

我有以下的一段代碼膠乳:變量評價膠乳

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

我預期\ d可具有值1.5。但事實並非如此。然而,增加圓括號\ C的定義,就像

\def\c{\a+\b} 

也不管用,因爲如果我用\ C的地方,它抱怨括號。在\ d的定義中除以2之前是否有評估\ c的方法?像:

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

(我做了\ EVAL高達說明我的意思)

回答

2

你需要記住\def是關於創建替換文本。它會一直讓你回到你放入的東西,除了不瞭解數學的任何事情。如果我們假設您正在使用e-TEX(可能),那麼對於整數表達式,你可能會做

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

它使用電子-TEX原始\intexpr,這確實整數數學。對於實際數字,斯蒂芬是正確的,fp包是最好的方法。