8

I want to multiply a constant from a macro with a deimension using dimexpr. When using real numbers the decimal point and the decimal digits are typeset behind the result and the result is a mutliplication with the floor value of the constant used.

\documentclass{report}
\begin{document}
  \def\const{1.9}
  \noindent
  \the\dimexpr \linewidth*\const\relax \newline
  \the\dimexpr \linewidth*\numexpr\const\relax\relax \newline
  \the\linewidth
\end{document}

The second multiplication is an attempt to use the suggestion from here, to wrap the macro in a sub expression

ted
  • 3,377
  • I've answered, but the answer you link to does include more-or-less the same points. This question therefore might be marked as a duplicate. – Joseph Wright Aug 01 '13 at 13:07
  • @JosephWright: just mark it as a duplicate, I don't mind. I overlooked it since I skimmed the awnser and read the bottom part, starting Real numbers can be supported by ... thats why I wondered where I went wrong. I am propably used by pgfs math capabilities. – ted Aug 01 '13 at 13:12
  • Looking again I think probably not a dupe: the questions have a different focus (the other one on what to do to avoid repeated addition, here about the syntax of multiplication). – Joseph Wright Aug 01 '13 at 13:49

1 Answers1

11

\dimexpr doesn't allow arbitrary calculations: you need to have things in the correct form. In particular, if you want to multiply a dimension by a decimal then you need to use the form

<multiple><dimension>

So you example will work with

\the\dimexpr\const\linewidth\relax

while the format

\the\dimexpr\linewidth*\const\relax

can only be used if \const is an integer.

(The linked answer Multiplication with dimexpr? does mention this limitation.)

Joseph Wright
  • 259,911
  • 34
  • 706
  • 1,036