我一直在尝试找到正确的方法,使用 加载 CSV 文件中的角度,使用的命令pgfplotstable
格式化它们,然后使用 显示它们。我的想法是将后处理阶段的数据传递给命令,但我收到以下错误:siunitx
\ang{}
pgfplotstable
\ang
失控参数?\l__siunitx_number_arg_tl \tl_map_function:NN \l__siunitx_number_arg_tl \ETC。!扫描 __siunitx_number_in_parse_relation:w 的使用时文件结束。
如果我删除该\ang
命令,所有内容都会编译,因此我推测我对数字的格式化不正确。有没有正确的方法可以使用 加载 .csv 中的角度数据pgfplotstable
?
我的 MWE 如下:
\documentclass[margin=5mm,preview]{standalone}
\usepackage{siunitx}
\usepackage{booktabs}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.13}
\usepackage{filecontents}
\begin{filecontents*}{mytable.csv}
angle, magnitude
0,1
5;15;0,2
10;5;5,4
\end{filecontents*}
\begin{document}
\pgfplotstabletypeset[
col sep=comma,
string type,
header=true,
every head row/.style={before row=\toprule,after row=\midrule},
every last row/.style={after row=\bottomrule},
display columns/angle/.style={string type,postproc cell content/.code={\ang{#1}}},
display columns/magnitude/.style={column name={$a$}},
]{mytable.csv}
\end{document}
结果如下:
编辑1:我在行中使用了列名display columns/../.style
,错误消失了,但是数据根本没有被处理。
编辑2:我添加了上次编辑的结果。
答案1
要使其发挥作用,有几个注意点。
display columns
与列一起使用指数。当列名很奇怪或者你不想记住时,它很有用。因此你需要编号。它从 0 开始。当你在彼此内部实现嵌套样式或代码参数时,你需要将
#
字符加倍以表示输出的内容。如果你有a/.style={b/.style={c=#1}}
并且您提供,
a=red
那么您的意思是,b/.style={c=red}
因为这是的输入a
。相反,如果您想b/.style={c=#1}
在的样式定义中定义,a
那么您需要a/.style={b/.style={c=##1}}
- 后处理执行的代码不会替换单元格内容。您需要执行一些代码来更改单元格内容。
所以它就变成了;
\pgfplotstabletypeset[
col sep=comma,
string type,
header=true,
every head row/.style={before row=\toprule,after row=\midrule},
every last row/.style={after row=\bottomrule},
display columns/0/.style={string type,
postproc cell content/.code={%
\pgfkeyssetvalue{/pgfplots/table/@cell content}{\ang{##1}}%
}
},
display columns/1/.style={column name={$a$}},
]{angle, magnitude
0,1
5;15;0,2
10;5;5,4
}