Gleitkommamultiplikation in benutzerdefinierten Befehlen

Gleitkommamultiplikation in benutzerdefinierten Befehlen

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 \hspacesollte #2cmes 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 #2kann 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.75in 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}

Bildbeschreibung hier eingeben

verwandte Informationen