自定义命令中的浮点乘法

自定义命令中的浮点乘法

我想创建一个自定义命令,用于创建给定长度的下划线。但是,该长度应为命令的参数乘以浮点常数。

如何在命令的定义中增加命令的参数?

没有乘法的代码如下所示:

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

在此处输入图片描述

相关内容