有没有办法在 Latex 中使用 printf 样式的数字格式字符串,如%.3f
、%d
等?我正在使用该包从 csv 文件加载一些数据datatool
,并希望它完全按照我的要求显示。
答案1
我不知道datatool
。siunitx
提供了一些函数来对数字进行舍入。请参阅手册siunitx
:5.4 解析数字、5.5 后处理数字
例如:
\documentclass{article}
\usepackage{siunitx}
\begin{document}
\begin{tabular}{S[round-mode=places,round-precision=2]}
10. \\
10.1 \\
10.12 \\
10.123 \\
10.1234 \\
\end{tabular}
\end{document}
它得到:
10.00
10.10
10.12
10.12
10.12
答案2
如果你愿意使用 LuaTeX
\directlua{tex.print(string.format("\string\%0.3f", 10.1234567))}
string.format
接受所有常见的 printf 样式参数。之所以\string\%
需要,是因为%
在 TeX 中具有特殊含义。
ConTeXt 提供了一些辅助函数,因此上面的代码可以写成
\ctxlua{context("\%0.3f", 10.12345)}
如果你愿意的话,你可以轻松地将上述内容包装在宏中:
\def\truncate#1#2%
{\directlua{tex.print(string.format("\string\%0.#1f", #2))}}
或者在 ConContext 中
\def\truncate#1#2{\ctxlua{context("\%0.#1f", #2)}}
然后使用
\truncate{3}{10.123456}