주어진 길이의 밑줄을 생성하는 사용자 정의 명령을 만들고 싶습니다. 그러나 이 길이는 명령의 인수에 부동 소수점 상수를 곱한 값이어야 합니다.
명령 정의 내에서 명령 인수를 어떻게 곱할 수 있습니까?
곱셈이 없는 코드는 다음과 같습니다.
\newcommand{\utext}[2]{$\underset{\mbox{\tiny #1}}{\underline{\hspace{#2cm}}}$}
대신에 다음 \hspace
과 #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}