我想创建一个自定义命令,用于创建给定长度的下划线。但是,该长度应为命令的参数乘以浮点常数。
如何在命令的定义中增加命令的参数?
没有乘法的代码如下所示:
\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}