Siuntix \num 与 \input 结合使用时失败,并显示“\@iinput 的参数有一个额外的 }。”

Siuntix \num 与 \input 结合使用时失败,并显示“\@iinput 的参数有一个额外的 }。”

我正在尝试让 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}

在此处输入图片描述

相关内容