我正在尝试让 siunitx 解释存储在磁盘上单独文件中的数字,但\num{\input{number.txt}}
失败并显示以下错误消息:Argument of \@iinput has an extra }.
还有其他方法可以做到这一点吗?
MWE(假设磁盘上存在一个名为“number.txt”的文件,其内容是一个数字,比如在我的情况下是 1):
\documentclass{article}
\usepackage{siunitx}
\begin{document}
\num{\input{number.txt}}
\end{document}
答案1
您可以将文件内容读入宏(\tmp
在上面的示例中),然后将其用作宏参数(但\tmp
必须通过进行扩展\expandafter
)。
\documentclass{article}
\usepackage{siunitx}
{\catcode`\@=11
\gdef\readfile#1{{\endlinechar=-1 \everyeof={\end}\expandafter\readfileA\@@input{#1}}}
\gdef\readfileA#1\end{\gdef\tmp{#1}}
}
\begin{document}
\readfile{number.txt}\expandafter\num\expandafter{\tmp}
\end{document}
答案2
有一个简单的例子。你应该阅读tabularray
和的文档siunitx
。
num.txt
:
6.618 & 287.1854 & 998.7116 & 163.1364 & 512.8064 & 291.2459 \\
518.5163 & 853.7523 & 80.038 & 94.076 & 271.9311 & 268.8729 \\
563.1559 & 20.6741 & 491.2001 & 665.8677 & 386.862 & 2.2473 \\
316.0299 & 614.1185 & 23.327 & 964.3642 & 238.9255 & 65.4116 \\
923.5761 & 944.643 & 155.7276 & 973.4626 & 951.6755 & 891.3304 \\
\documentclass{article}
\usepackage{tabularray}
\UseTblrLibrary{siunitx}
\UseTblrLibrary{functional}
\begin{document}
\begin{tblr}
[evaluate=\fileInput]
{
colspec={*{6}{Q[si={table-format=3.4},c,m]}},
hlines,vlines,
}
\fileInput{num.txt}
\end{tblr}
\end{document}