我有一些希望用来排版的 xy 数据pgfplotstable
,而不是说有 9 行 2 列,我希望有 3 行,有 3 组 xy 对。
考虑以下:
\documentclass{article}
\usepackage{pgfplotstable,filecontents}
\begin{filecontents}{mydata.dat}
x y x y x y
0 0 3 3 6 6
1 1 4 4 7 7
2 2 5 5 8 8
\end{filecontents}
\begin{document}
\pgfplotstableset{
columns/x/.style={
column name={$X$},
},
columns/y/.style={
column name={$Y$},
column type/.add={}{|}
},
}
\pgfplotstableread{mydata.dat}\loadedtable
\pgfplotstabletypeset{\loadedtable}
\end{document}
输出结果如下:
显然,此 MWE 中的第 2 至第 6 列未按预期排版。我知道可以通过为每列声明唯一的列样式来解决此问题,如下所示:
\pgfplotstableset{
columns/A/.style={
column name={$X$},
},
columns/B/.style={
column name={$Y$},
column type/.add={}{|}
},
columns/C/.style={
column name={$X$},
},
columns/D/.style={
column name={$Y$},
column type/.add={}{|}
},
columns/E/.style={
column name={$X$},
},
columns/F/.style={
column name={$Y$},
column type/.add={}{|}
},
}
还稍微修改了输入数据结构:
\begin{filecontents}{mydata.dat}
A B C D E F
0 0 3 3 6 6
1 1 4 4 7 7
2 2 5 5 8 8
\end{filecontents}
生成所需的格式,列名为 [XYXYXY]:
但我试图避免反复重复输入相同的代码。如何才能pgfplotstableset
对同一张表中的多个列使用相同的列样式?
答案1
您可以为此使用every odd column
和every even column
样式(注意列编号从零开始):
\documentclass{article}
\usepackage{pgfplotstable,filecontents}
\begin{filecontents}{mydata.dat}
x y x y x y
0 0 3 3 6 6
1 1 4 4 7 7
2 2 5 5 8 8
\end{filecontents}
\begin{document}
\pgfplotstableset{
every even column/.style={
column name={$X$}
},
every odd column/.style={
column name={$Y$},
column type/.add={}{|}
}
}
\pgfplotstableread{mydata.dat}\loadedtable
\pgfplotstabletypeset{\loadedtable}
\end{document}