自訂指令中的浮點乘法

自訂指令中的浮點乘法

我想創建一個自訂命令來創建給定長度的下劃線。但是,該長度應該是指令的參數乘以浮點常數。

如何在指令的定義中乘以指令的參數?

沒有乘法的程式碼如下所示:

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

而不是\hspaceof#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}

在此輸入影像描述

相關內容