我正在尝试使用从文件中读取的值来制作一个非常基本的表格pgfplotstablestyleset
。但是,这个表格的放置似乎完全不对。如果我使用\centering
它,它会粘在右侧并与文本重叠,而不是放在文本之前/之后。
这里是 MWE:
\documentclass[]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{mathtools}
\usepackage{braket}
\usepackage{booktabs}
\usepackage{pgfplots,pgfplotstable,tikz}
\pgfplotsset{compat=newest}
\usepgfplotslibrary{units}
\usepackage{siunitx}
\SendSettingsToPgf %SiUnitX sends settings to PGF
\begin{filecontents}{testdata.csv}
sigmax sigmay sigmaz
5.1410904452209305e-6 -3.243020222068572e-15 0.002626858897632589
5.14109044497113e-6 -3.0442457297958973e-15 0.002626858897631923
5.141090445470731e-6 -2.8261981713164487e-15 0.002626858897632367
3.814673579619215e-16 1.2769541625971185e-15 0.009197421272315402
\end{filecontents}
\begin{document}
A little bit of text.
\begin{table}[tbch]
\centering
\begin{tikzpicture}
\pgfplotstableread{testdata.csv}{\table} %
\pgfplotstabletypeset[
dec sep align=S,
fixed zerofill,
precision=4,
display columns/0/.style={column name=$\braket{S_x}$},
display columns/1/.style={column name=$\braket{S_y}$},
display columns/2/.style={column name=$\braket{S_z}$},
every head row/.style={before row=\toprule, after row=\midrule},
every last row/.style={after row=\bottomrule},
] {\table}
\end{tikzpicture}
\caption{This table shows some data}
\label{tab:myfirsttable}
\end{table}
\end{document}
答案1
旨在pgfplotstable
提供创建表格材料的自动化框架。因此,您无需将其与 TikZ 图片封装在一起即可使其工作(如果您将其放置在节点中或\pgftext
尽管它们提供了与表格兼容的框或小页面,它也可以工作)。
fixed zerofill
此外,由于您使用的是科学计数法,但使用的是指令,因此列的对齐方式也不正确sci zerofill
。应改为使用。
\documentclass[]{scrartcl}
\usepackage{mathtools,braket,lipsum}
\usepackage{pgfplotstable,siunitx,booktabs}
\pgfplotsset{compat=1.12}
\usepgfplotslibrary{units}
\SendSettingsToPgf
\begin{document}
\lipsum[1]
\begin{table}[h]
\centering
\pgfplotstabletypeset[
dec sep align=S,sci zerofill,precision=4,
display columns/0/.style={column name=$\braket{S_x}$},
display columns/1/.style={column name=$\braket{S_y}$},
display columns/2/.style={column name=$\braket{S_z}$},
every head row/.style={before row=\toprule, after row=\midrule},
every last row/.style={after row=\bottomrule},
] {
sigmax sigmay sigmaz
5.1410904452209305e-6 -3.243020222068572e-15 0.002626858897632589
5.14109044497113e-6 -3.0442457297958973e-15 0.002626858897631923
5.141090445470731e-6 -2.8261981713164487e-15 0.002626858897632367
3.814673579619215e-16 1.2769541625971185e-15 0.009197421272315402
}
\caption{This table shows some data}
\label{tab:myfirsttable}
\end{table}
\end{document}