指定された長さのアンダースコアを作成するカスタム コマンドを作成したいと思います。ただし、この長さはコマンドの引数に浮動小数点定数を掛けたものである必要があります。
コマンドの定義内でコマンドの引数を増やすにはどうすればよいですか?
乗算なしのコードは次のようになります。
\newcommand{\utext}[2]{$\underset{\mbox{\tiny #1}}{\underline{\hspace{#2cm}}}$}
\hspace
のの代わりに、#2cm
次のようになります。(0.75 * #2)cm
答え1
この問題を解決するには2つの方法があります。
まず(そして推奨):
\newlength{\threequarters}
\setlength{\threequarters}{0.75cm}
\newcommand{\utext}[2]{%
$\underset{\mbox{\tiny #1}}{\underline{\hspace{#2\threequarters}}}$%
}
この方法では、#2
任意の小数を指定できます。
2番目は、もっと難しいです:
\newcommand{\utext}[2]{%
$\underset{\mbox{\tiny #1}}{\underline{\hspace{0.75\dimexpr#2cm\relax}}}$%
}
なぜ最初の方法を推奨するのでしょうか?定義全体\threequarters
を探すのではなく、1 か所で操作するだけで、好きな場所で使用でき、幅を変更できます。0.75
しかし、2番目の解決策も「パラメータ化可能」であり、
\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}