# \newcommand resulting in Illegal unit of measure (pt inserted)

I am defining macros for width and height to be used by several plots in my document, as follows:

\newcommand{\tikzwidth}{.4\columnwidth}
\newcommand{\tikzheight}{.8\tikzwidth}


I think pdflatex just replaces the whole sequence of commands for \tikzheight, resulting in .8.4\columnwidth.

Is there a way to tell pdflatex to process \tikzwidth before "shrinking" it again?

-

If you use length or dimen registers, then you can use real numbers as factors:

\newdimen\tikzwidth
\setlength{\tikzwidth}{.4\columnwidth}
\newdimen\tikzheight
\setlength{\tikzheight}{.8\tikzwidth}


Or e-TeX's \dimexpr can be used:

\newcommand*{\tikzheight}{.8\dimexpr\tikzwidth\relax}

-
Maybe you mean \dimexpr.8\tikzwidth\relax? – Leo Liu Aug 17 '12 at 0:32
That cannot be used if \tikzwidth is a macro. But a real number can be used as factor for \dimexpr. – Heiko Oberdiek Aug 17 '12 at 6:51
@HeikoOberdiek the combination \newdimen and \setlength{}{} is exactly what I was looking for. Thanks! – freitass Aug 17 '12 at 19:08