我正在使用 pgfplotstable 包创建和排版几个大型表格。我的挑战是根据数据中变量的值将几行加粗。
经过搜索、阅读和测试,我设法使列加粗、单元格加粗和行加粗(第一行、最后一行和特定行),但不以变量的值为条件。
在下面的小例子中,我希望 ID = 1 的行显示为粗体:
\documentclass{article}
\usepackage{pgfplotstable, booktabs}
\pgfplotsset{compat=1.7}
\begin{document}
\pgfplotstabletypeset[
col sep= semicolon ,
sci zerofill
]{
A;B;C;ID
1;4;2;0
2;1;6;1
3;6;1;1
4;2;3;1
5;1;9;0
6;4;2;0
}
\end{document}
编辑:
我没有在上面的示例中添加任何格式。因此,我在下面的 MWE 中添加了更多细节。后续问题是,在将指定的行设为粗体之前,如何保持指定的格式?
\documentclass[]{report}
\usepackage{pgfplotstable,booktabs, ifthen}
\pgfplotsset{compat=1.14}
\begin{document}
\pgfplotstableread[col sep= semicolon]{
A;B;C;ID
C00;100;0.9;0
C01;31;16.9;1
C03;46;1;1
C04;62;0.3;2
C05;18;1.9;1
C06;69;2.0;1
}\mytable
\pgfkeys{/pgf/number format/.cd,
fixed,
fixed zerofill,
precision=0,
set thousands separator={}
}
\pgfplotstabletypeset[
col sep = semicolon,
columns = {A, B, C, ID },
columns/A/.style={ string type, column type = {l}},
columns/B/.style={ column type = {r}},
columns/C/.style={ column type = {r}, precision = 1},
columns/ID/.style={ column type = {r}, precision = 1},
every column/.style={
postproc cell content/.append code={
\pgfplotstablegetelem{\pgfplotstablerow}{ID}\of{\mytable}
\ifthenelse{ \pgfplotsretval < 2 }{
\pgfkeyssetvalue{/pgfplots/table/@cell content}{\bfseries##1}
}
{
\pgfkeyssetvalue{/pgfplots/table/@cell content}{##1}
}
}
}
]{\mytable}
\end{document}
答案1
这是一种可能性。
使用 将内联表读入宏
\pgfplotstableread
,以便能够使用 引用表中的元素\pgfplotstablegetelem
。\pgfplotstablegetelem{\pgfplotstablerow}{[index]3}\of{\mytable}
\pgfplotstablerow
返回宏中当前行(存储在)的第四列(= 索引为 3 的列)的值\pgfplotsretval
。
\documentclass{article}
\usepackage{pgfplotstable, booktabs,ifthen}
\pgfplotsset{compat=1.7}
\begin{document}
\pgfplotstableread[col sep= semicolon]{
A;B;C;ID
1;4;2;0
2;1;6;1
3;6;1;1
4;2;3;1
5;1;9;0
6;4;2;0
}\mytable
\pgfplotstabletypeset[
sci zerofill,
every column/.style=
{assign cell content/.code=
{\pgfplotstablegetelem{\pgfplotstablerow}{[index]3}\of{\mytable}%
\ifthenelse{\equal{\pgfplotsretval}{1}}%
{\pgfkeyssetvalue{/pgfplots/table/@cell content}{\bfseries##1}}%
{\pgfkeyssetvalue{/pgfplots/table/@cell content}{##1}}%
}
}
]{\mytable}
\end{document}