pgfplotstable 多列相同标题名称

pgfplotstable 多列相同标题名称

我有一些希望用来排版的 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 columnevery 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}

相关内容