I have probably formulated the question wrong, as I don't know the Tex internals – but this is what I mean; consider this example:
\newcommand{\myNum}{2}
\newlength{\myLength}
\setlength{\myLength}{\myNum cm}
Here, I'd consider \myNum
to represent a 'numeric variable', and \myLength
a Tex length (i.e. a number and a unit); and so I'd consider the above example a "conversion" from numeric to length "variable".
Is it possible to do the other way around? I.e. if \myLength
is given to be 2 cm, is there a command that will "get"/"extract" the numeric value only? I'd imagine doing something like this (pseudocode):
\newcommand{\myNum}{\getlength{\myLength}}
… after which, \myNum
would have value "2" …
Does anything like this exist?
EDIT: I guess I need something similar to \the
which is for counters … ?!
Best Answer
You can remove the
pt
unit from the length using\strip@pt
as shown below. I you want the number in cm you would have to convert it by yourself.Another alternative which is more flexible and also allows you to store the resulting number in a macro is to use
pgfmath
(pgf
package). It also allows you to easily convert the number to cm:There is also the
round( )
function forpgfmath
which allows you to round the number, e.g. to two fractional digits. The trick is to multiple it with 100 before the rounding and divide it afterwards by 100.The fractional part (like
.0
) can be avoided by using\pgfmathtruncatemacro
instead of\pgfmathsetmacro
, but I don't think you need that.