我正在写一篇论文,其中我展示了许多大表格,所有这些表格都应该以相同的方式格式化。在每个表格中,有些条目应该突出显示,例如排版为粗体。所以我想定义一个通用样式并在本地指定要突出显示哪些单元格。
我尝试过各种方法,但都以这样或那样的方式失败了:
\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}