[Tex/LaTex] Simple way to multiply two values

calculations

I have a macro to define the scale of my figures:

\newcommand{\myscale}{0.35}

Now I have a figure that needs to be scaled twice as big, so I tried to use something like this:

\begin{figure}[hbt]
  \includegraphics[scale=2\myscale]{my-image}
  \caption{My Caption}
  \label{fig:my-label}
\end{figure}

This results a very big image, as 2\scale expands to 20.35

I tried/found:

  • Using scale=2*\myscale, but still get errors
  • Some more things using calc, again did not work
  • \real{}, but it does not seem to work also
  • intcalc, but this only seems to work for integers, which is not always the case for \myscale.
  • pgf package, but it seems a complex for a simple multiplication
  • fp package works, but still somewhat complex

The easiest way (that works for me), is this fp-based implementation:

\begin{figure}[hbt]
  \FPeval\calculatedScale{2*\myscale}
  \includegraphics[scale=\calculatedScale]{my-image}
  \caption{My Caption}
  \label{fig:my-label}
\end{figure}

Am I missing something? Is there a more simple/elegant solution? Preferably directly usable with the \includegraphics command without creating the additional \calculatedScale.

Best Answer

The l3fp package allows expandable calculations with floating point numbers. Expandability means that you don't need to store the result in a temporary variable.

\documentclass{article}
\usepackage{graphicx} % 

%%%%
% Provide the command \fpeval as a copy of the code-level \fp_eval:n.
\usepackage{expl3}[2012-07-08]
\ExplSyntaxOn
\cs_new_eq:NN \fpeval \fp_eval:n
\ExplSyntaxOff
%%%%

\begin{document}
\newcommand{\myscale}{0.53}
\includegraphics[scale=\fpeval{2*\myscale}]{your-image}
\end{document}