Ich möchte einen benutzerdefinierten Befehl erstellen, der einen Unterstrich einer bestimmten Länge erzeugt. Diese Länge sollte jedoch das Argument des Befehls multipliziert mit einer Gleitkommakonstante sein.
Wie kann ich das Argument eines Befehls innerhalb der Befehlsdefinition multiplizieren?
Der Code ohne die Multiplikation sieht folgendermaßen aus:
\newcommand{\utext}[2]{$\underset{\mbox{\tiny #1}}{\underline{\hspace{#2cm}}}$}
Anstelle von \hspace
sollte #2cm
es etwas wie heißen(0.75 * #2)cm
Antwort1
Es gibt zwei Möglichkeiten, das Problem zu lösen.
Erstens (und empfohlen):
\newlength{\threequarters}
\setlength{\threequarters}{0.75cm}
\newcommand{\utext}[2]{%
$\underset{\mbox{\tiny #1}}{\underline{\hspace{#2\threequarters}}}$%
}
Auf diese Weise #2
kann es sich um eine beliebige Dezimalzahl handeln.
Zweitens, schwieriger:
\newcommand{\utext}[2]{%
$\underset{\mbox{\tiny #1}}{\underline{\hspace{0.75\dimexpr#2cm\relax}}}$%
}
Warum empfehle ich die erste Möglichkeit? Sie können es \threequarters
überall verwenden und die Breite ändern, indem Sie nur an einer Stelle agieren, anstatt 0.75
in Ihren Definitionen danach zu suchen.
Allerdings ist auch die zweite Lösung "parametrisierbar", indem
\newcommand{\threequarterfactor}{0.75}
und in der Definition verwenden \hspace{\threequarterfactor\dimexpr#2cm\relax}
. Ich bevorzuge immer noch die Reservierung einer Länge.
Antwort2
Da es sich um einen mathematischen Zweck handelt, gibt es hier einen Befehl, der die Berechnung mit einer Genauigkeit von 18 Dezimalstellen durchführen kann.
\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}