Multiplicação de ponto flutuante em comandos personalizados

Multiplicação de ponto flutuante em comandos personalizados

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 \hspacedeveria #2cmser 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, #2pode 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 \threequartersonde quiser e alterar sua largura agindo apenas em um só lugar, em vez de procurar 0.75nas 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}

insira a descrição da imagem aqui

informação relacionada