LaTeX 中的 printf 样式数字格式

LaTeX 中的 printf 样式数字格式

有没有办法在 Latex 中使用 printf 样式的数字格式字符串,如%.3f%d等?我正在使用该包从 csv 文件加载一些数据datatool,并希望它完全按照我的要求显示。

答案1

我不知道datatoolsiunitx提供了一些函数来对数字进行舍入。请参阅手册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}

相关内容