使用 pgfplotstable 对行进行后处理

使用 pgfplotstable 对行进行后处理

我尝试使用方括号将特定表行中的所有元素括postproc cell content起来pgfplotstable

如 MWE 所示,它可以很好地处理列,但不能处理行:

\documentclass{article}
\usepackage{pgfplotstable}
\begin{document}

\pgfplotstabletypeset[
    string type,
    every first row/.append style={postproc cell content/.append style={/pgfplots/table/@cell content/.add={[}{]}}},
    columns/B/.append style={postproc cell content/.append style={/pgfplots/table/@cell content/.add={[}{]}}},
]{
    A B C
    m s kg
    1 2 3
    4 5 6
    7 8 9
}
\end{document}

结果

我原本期望看到第二行(every first row)中的所有元素以及B用方括号括起来的列中的所有元素。

不能postproc cell content按行进行工作吗?

答案1

这个问题揭示了 中的定义不明确pgfplotstable。查看其源代码可以确认postproc cell content仅适用于评估列样式的上下文。

这要么是缺少的功能,要么至少是手册中需要澄清的内容。可能是第一个。

在此期间,您可以使用every row <index> column <name>使用支持 postproc cell content

\documentclass{standalone}
\usepackage{pgfplotstable}
\begin{document}

\pgfplotstabletypeset[
    string type,
    brackets/.style={
        postproc cell content/.append style={/pgfplots/table/@cell content/.add={\relax[}{]}},
    },
    every row 0 column A/.append style={brackets},
    %every row 0 column B/.append style={brackets},
    every row 0 column C/.append style={brackets},
    columns/B/.append style={brackets},
]{
    A B C
    m s kg
    1 2 3
    4 5 6
    7 8 9
}
\end{document}

在此处输入图片描述

我可以自由地为您的括号定义一种单独的样式。

注意\relax:事实证明,pgfplotstable没有它也能很好地工作,但tabular事实并非如此:它假定括号与前面的相关联\\。要查看这一点,请将其添加debug到您的选项并查看日志文件。

请注意,还有every row <index> column no <index>

相关内容