将风格与个性化后期处理相结合

将风格与个性化后期处理相结合

我正在写一篇论文,其中我展示了许多大表格,所有这些表格都应该以相同的方式格式化。在每个表格中,有些条目应该突出显示,例如排版为粗体。所以我想定义一个通用样式并在本地指定要突出显示哪些单元格。

我尝试过各种方法,但都以这样或那样的方式失败了:

\documentclass{article}

\usepackage{pgfplotstable}
\pgfplotsset{compat=newest}

% common style
\pgfplotstableset{mystyle/.style={
    columns/rownb/.style = {
        column name = {{\#}},
        dec sep align,
        fixed
    }
}}

% common style
\pgfplotstableset{myotherstyle/.style={
    columns/rownb/.style = {
        column name = {{\#}},
        dec sep align,
        fixed
    },
    otherhighlight/.style = {
        postproc cell content/.append code=\pgfkeysalso{@cell content=\emph{##1}}
    },
    every row 1 column rownb/.append style={otherhighlight},
    every row 4 column rownb/.append style={otherhighlight}
}}

\begin{document}

% This is how I would like to do it, i.e. local specification of the 
% cells to be highlighted
\pgfplotstabletypeset[mystyle,
    highlight/.style = {
        postproc cell content/.append code=\pgfkeysalso{@cell content=\textbf{##1}}
    },
    every row 1 column rownb/.append style={highlight},
    every row 4 column rownb/.append style={highlight}]{
rownb xs
1 11
2 22
3 33
4 44
5 55
6 66
}

\pgfplotstabletypeset[myotherstyle]{
rownb xs
1 11
2 22
3 33
4 44
5 55
6 66
}

\end{document}

这将产生两个表:

#       xs
1       11
**22**  22
3       33
4       44
**55**  55
6       66

#       xs
1       11
        22
3       33
4       44
        55
6       66

这里的**55**意思是粗体。在第一个表格中,要突出显示的单元格的内容会重复。在第二个表格中,内容会消失。

编辑1:如果列有,则第一种方法有效string type。我隐约记得,对于数字类型的每列,pgfplotstable 都会创建一个额外的列来正确对齐数字。因此,显然这会导致后处理重复单元格内容。不过,我还是想在我的案例中使用它。

答案1

事实证明我记得没错。我发现Pgfplotstable:我如何添加百分号(并尊重十进制九进制对齐)?,其中描述了类似的问题。以下内容按预期工作:

\pgfplotstabletypeset[mystyle,
    highlight/.style = {
        postproc cell content/.append code={
            \ifnum0=\pgfplotstablepartno
                \pgfkeysalso{@cell content=\textbf{##1}}%
            \fi
        }
    },
    every row 1 column rownb/.append style={highlight},
    every row 4 column rownb/.append style={highlight}]{
rownb xs
1 11
2 22
3 33
4 44
5 55
6 66
}

由于我不想将highlight样式复制并粘贴到每个表中,因此我可以将其分解出来并得到:

\documentclass{article}

\usepackage{pgfplotstable}
\pgfplotsset{compat=newest}

% commonly used to style tables
\pgfplotstableset{mystyle/.style={
    columns/rownb/.style = {
        column name = {{\#}}
    }
}}

% commonly used to highlight cells
\pgfplotstableset{highlight/.append style={
    postproc cell content/.append code={
        \ifnum0=\pgfplotstablepartno
            \pgfkeysalso{@cell content=\textbf{##1}}%
        \fi
    }
}}

\begin{document}

\pgfplotstabletypeset[mystyle,
    every row 1 column rownb/.append style={highlight},
    every row 4 column rownb/.append style={highlight}]{
rownb xs
1 11
2 22
3 33
4 44
5 55
6 66
}

\end{document}

相关内容