Gostaria de criar um comando personalizado que crie um sublinhado de um determinado comprimento. No entanto, esse comprimento deve ser o argumento do comando multiplicado por uma constante de ponto flutuante.
Como posso multiplicar o argumento de um comando dentro da definição do comando?
O código sem a multiplicação fica assim:
\newcommand{\utext}[2]{$\underset{\mbox{\tiny #1}}{\underline{\hspace{#2cm}}}$}
Em vez disso \hspace
deveria #2cm
ser algo como(0.75 * #2)cm
Responder1
Existem duas maneiras de resolver o problema.
Primeiro (e recomendado):
\newlength{\threequarters}
\setlength{\threequarters}{0.75cm}
\newcommand{\utext}[2]{%
$\underset{\mbox{\tiny #1}}{\underline{\hspace{#2\threequarters}}}$%
}
Desta forma, #2
pode ser qualquer número decimal.
Em segundo lugar, mais complicado:
\newcommand{\utext}[2]{%
$\underset{\mbox{\tiny #1}}{\underline{\hspace{0.75\dimexpr#2cm\relax}}}$%
}
Por que recomendo a primeira forma? Você pode usar \threequarters
onde quiser e alterar sua largura agindo apenas em um só lugar, em vez de procurar 0.75
nas suas definições.
No entanto, também a segunda solução é "parametrizável", fazendo
\newcommand{\threequarterfactor}{0.75}
e usando \hspace{\threequarterfactor\dimexpr#2cm\relax}
na definição. Ainda prefiro reservar um comprimento.
Responder2
Como se trata de uso matemático, aqui está um comando que pode fazer o cálculo com precisão de 18 casas decimais.
\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}