Multiplicación de punto flotante en comandos personalizados

Multiplicación de punto flotante en comandos personalizados

Me gustaría crear un comando personalizado que cree un guión bajo de una longitud determinada. Sin embargo, esta longitud debe ser el argumento del comando multiplicado por una constante de punto flotante.

¿Cómo puedo multiplicar el argumento de un comando dentro de la definición del comando?

El código sin la multiplicación se ve así:

\newcommand{\utext}[2]{$\underset{\mbox{\tiny #1}}{\underline{\hspace{#2cm}}}$}

En lugar de \hspacedebería #2cmser algo como(0.75 * #2)cm

Respuesta1

Hay dos formas de resolver el problema.

Primero (y recomendado):

\newlength{\threequarters}
\setlength{\threequarters}{0.75cm}

\newcommand{\utext}[2]{%
  $\underset{\mbox{\tiny #1}}{\underline{\hspace{#2\threequarters}}}$%
}

De esta forma, #2puede ser cualquier número decimal.

Segundo, más complicado:

\newcommand{\utext}[2]{%
  $\underset{\mbox{\tiny #1}}{\underline{\hspace{0.75\dimexpr#2cm\relax}}}$%
}

¿Por qué recomiendo la primera forma? Puede usarlo \threequartersdonde quiera y cambiar su ancho actuando solo en un lugar, en lugar de buscar 0.75entre sus definiciones.

Sin embargo, también la segunda solución es "parametrizable", al hacer

\newcommand{\threequarterfactor}{0.75}

y usando \hspace{\threequarterfactor\dimexpr#2cm\relax}en la definición. Sigo prefiriendo reservar un largo.

Respuesta2

Dado que esto es para uso matemático, aquí hay un comando que puede realizar el cálculo con una precisión de 18 decimales.

\documentclass{article}
\usepackage{amsmath}
\usepackage{fp}

\begin{document}

\newcommand{\utext}[2]{
  \FPmul\result{.75000001}{#2}
  $\underset{\mbox{\tiny #1}}{\underline{\hspace{\result  cm}}}$}

\utext{test}{1.9809997889999999} \result

\utext{test}{1.9809997889999990} \result
\end{document}

ingrese la descripción de la imagen aquí

información relacionada