Я хотел бы создать пользовательскую команду, которая создает подчеркивание заданной длины. Однако эта длина должна быть аргументом команды, умноженным на константу с плавающей точкой.
Как можно умножить аргумент команды в определении команды?
Код без умножения выглядит так:
\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}