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 \hspace
debería #2cm
ser 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, #2
puede 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 \threequarters
donde quiera y cambiar su ancho actuando solo en un lugar, en lugar de buscar 0.75
entre 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}