Умножение чисел с плавающей точкой в ​​пользовательских командах

Умножение чисел с плавающей точкой в ​​пользовательских командах

Я хотел бы создать пользовательскую команду, которая создает подчеркивание заданной длины. Однако эта длина должна быть аргументом команды, умноженным на константу с плавающей точкой.

Как можно умножить аргумент команды в определении команды?

Код без умножения выглядит так:

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

Вместо этого \hspaceдолжно #2cmбыть что-то вроде(0.75 * #2)cm

решение1

Есть два способа решения этой проблемы.

Первое (и рекомендуемое):

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

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

Таким образом, #2может быть любое десятичное число.

Во-вторых, посложнее:

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

Почему я рекомендую первый способ? Вы можете использовать его \threequartersгде угодно и менять его ширину, действуя только в одном месте, вместо того, чтобы искать 0.75по всем определениям.

Однако второе решение также является «параметризуемым», если выполнить

\newcommand{\threequarterfactor}{0.75}

и использование \hspace{\threequarterfactor\dimexpr#2cm\relax}в определении. Я все же предпочитаю оставлять длину.

решение2

Поскольку это предназначено для математического использования, вот команда, которая может выполнить расчет с точностью до 18 знаков после запятой.

\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}

введите описание изображения здесь

Связанный контент