我想創建一個自訂命令來創建給定長度的下劃線。但是,該長度應該是指令的參數乘以浮點常數。
如何在指令的定義中乘以指令的參數?
沒有乘法的程式碼如下所示:
\newcommand{\utext}[2]{$\underset{\mbox{\tiny #1}}{\underline{\hspace{#2cm}}}$}
而不是\hspace
of#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}