我正在尝试使用 csvreader 定义一个可用于多个表的 csvstyle,但是在尝试单独格式化“S”列时遇到错误。每个表都有相同的列名和数据类型;它们只是不同实验场景的结果。
对于以下数据:
数据集1.csv
Name,ValueA,ValueB,ValueC
John,623.95, 8.954847, 0.000772
Anna,602.40,8.93469, 0.000772
Jacob,1987.17,8.796296, 0.000926
这是我能达到的最大程度:
\documentclass{article}
\usepackage{csvsimple}
\usepackage{filecontents}
\usepackage{siunitx}
\begin{filecontents*}{Dataset1.csv}
Name,ValueA,ValueB,ValueC
John,623.95, 8.954847, 0.000772
Anna,602.40,8.93469, 0.000772
Jacob,1987.17,8.796296, 0.000926
\end{filecontents*}
\begin{document}
\csvstyle{MyStyle}{
head to column names,
before reading=\centering\sisetup{table-number-alignment=center,table-format=4.4,table-auto-round},
tabular=|c|S|S|S|,
table head =\hline {Name} & {ValueA} & {ValueB} & {ValueC} \\\hline,
table foot=\hline
}
\csvreader[MyStyle]{Dataset1.csv}{}{\Name & \ValueA & \ValueB & \ValueC}
\end{document}
%\csvreader[MyStyle]{Dataset2.csv}{}{\Name & \ValueA & \ValueB & \ValueC}
\end{document}
S
任何试图将改为S[table-format=4.2]
(并将其从 中删除before reading
)以便逐列调整小数位数的尝试都会产生
Paragraph ended before \\NC@rewrite@S was complete. ...sv}{}{\Name & \ValueA & \ValueB & \ValueC}
错误。如能得到任何帮助,我们将不胜感激。
答案1
您可以将所需的格式定义为新的列类型:
\newcolumntype{H}{S[table-format=4.2]}
然后,您可以在需要时使用H
而不是S
,并从宏中删除格式命令before reading
。
我已经创建了一个例子背页。