# \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