有没有办法截断美元符号内的数字?我找到了一个使用siunitx
和 的解决方案\num{somenumber}
,但我有一个非常大的带有美元符号的输出。更糟糕的是,一些数字的格式如下:$\phantom{000}0.024$
所以我甚至不能用 \num 替换美元符号(我认为 phantom 不能很好地与 \num 配合使用)。那么有没有解决办法,比如截断美元符号内显示的数字,保留小数点后 2 位?例如:2.5678 -> 2.56
答案1
只要\phantom
s 位于小数点左边......
\documentclass{article}
\newenvironment{specialmath}{\catcode`$=\active}{}
{\catcode`$=\active
\gdef$#1${\dollar#1.000\enddollar}
\gdef\dollar#1.#2#3#4\enddollar{\ensuremath{#1.\ifx.#200\else#2\ifx.#30\else#3\fi\fi}}
}
\begin{document}
\begin{specialmath}
$2$\par
$2.$\par
$2.3$\par
$2.35$\par
$2.357$\par
$2.3578$\par
$52.3578$\par
$\phantom{000}52.3578$
\end{specialmath}
The dollar is restored $x^2$
\end{document}
应 OP 的要求,这里有一个版本,如果最初呈现的数字中没有小数,则不会添加小数:
\documentclass{article}
\newenvironment{specialmath}{\catcode`$=\active}{}
{\catcode`$=\active
\gdef$#1${\dollar#1.\relax\relax\enddollar}
\gdef\dollar#1.#2#3#4\enddollar{\ensuremath{%
#1\ifx\relax#2\else%
\ifx.#2.00\else.#2\ifx.#30\else#3\fi\fi%
\fi%
}}
}
\begin{document}
\begin{specialmath}
$2$\par
$2.$\par
$2.3$\par
$2.35$\par
$2.357$\par
$2.3578$\par
$52.3578$\par
$\phantom{000}52.3578$
\end{specialmath}
The dollar is restored $x^2$
\end{document}