我想将表格中的 p 值四舍五入为小数点后两位(例如 0.05),将小于 0.05 的值以粗体显示,将小于 0.01 的值以粗体显示为“<0.01”。像这样(示例在 Excel 中制作):
问题:我如何使用pgfplotstable
包来做到这一点?
例子:
\documentclass{article}
\usepackage{pgfplotstable,tabularx,booktabs}
\begin{document}
\noindent%
\pgfplotstabletypeset[columns={var,p},
every head row/.style={before row=\toprule,after row=\midrule},
every last row/.style={after row=[0.5ex]\bottomrule},
columns/var/.style={string type,column name=Variable},
columns/p/.style={column name=$p$,fixed,fixed zerofill,precision=2,dec sep align},
]{
var p
A 0.0445
B 0.5343
C 0.0000
D 0.0254
E 0.9843
}
\end{document}
给出正确舍入的下表:
我设法让小于 0.05 的值以粗体显示,但出于某种原因,我无法对这些值进行舍入。舍入适用于大于 0.05 的值(即可以\pgfmathprintnumber{##1}
舍入,但\textbf{\pgfmathprintnumber{##1}}
会产生不带粗体字体的科学计数法)。
\documentclass{article}
\usepackage{pgfplotstable,tabularx,booktabs}
\begin{document}
\noindent%
\pgfplotstabletypeset[columns={var,p},
every head row/.style={before row=\toprule,after row=\midrule},
every last row/.style={after row=[0.5ex]\bottomrule},
columns/var/.style={string type,column name=Variable},
columns/p/.style={column name=$p$,fixed,fixed zerofill,precision=2,
postproc cell content/.style={
/pgfplots/table/@cell content/.initial={}{%
\pgfmathparse{int(less(##1,0.05))}
\ifnum\pgfmathresult=1
\textbf{##1}
\else
\pgfmathprintnumber{##1}
\fi
},
},
},
]{
var p
A 0.0445
B 0.5343
C 0.0000
D 0.0254
E 0.9843
}
\end{document}
我也未能将粗体和 合并<0.01
到脚本中。如果我在有条件的情况下运行脚本<0.01
,我会得到介于 0.01 和 0.05 之间的值的科学计数法,以及 >0.05 的值的正确舍入。
\documentclass{article}
\usepackage{pgfplotstable,tabularx,booktabs}
\begin{document}
\noindent%
\pgfplotstabletypeset[columns={var,p},
every head row/.style={before row=\toprule,after row=\midrule},
every last row/.style={after row=[0.5ex]\bottomrule},
columns/var/.style={string type,column name=Variable},
columns/p/.style={column name=$p$,fixed,fixed zerofill,precision=2,
postproc cell content/.style={
/pgfplots/table/@cell content/.initial={}{%
\pgfmathparse{int(less(##1,0.01))}
\ifnum\pgfmathresult=1
\textbf{$<$0.01}
\else
\pgfmathprintnumber{##1}
\fi
},
},
},
]{
var p
A 0.0445
B 0.5343
C 0.0000
D 0.0254
E 0.9843
}
\end{document}
额外福利:让数值以小数点为中心会很酷,但我想这是不可能的,因为<0.01
可能要以字符串的形式出来?
答案1
根据您的一次尝试,并添加以下内容:
bm
包装采用更大胆的<
符号- p<0.01 和 p<0.05 的条件
给出最终文件:
\documentclass{article}
\usepackage{pgfplotstable,tabularx,booktabs,bm}
\begin{document}
\noindent%
\pgfplotstabletypeset[columns={var,p},
every head row/.style={before row=\toprule,after row=\midrule},
every last row/.style={after row=[0.5ex]\bottomrule},
columns/var/.style={string type,column name=Variable},
columns/p/.style={column name=$p$,fixed,fixed zerofill,precision=2,
postproc cell content/.style={
/pgfplots/table/@cell content/.initial={}{%
\pgfmathparse{int(less(##1,0.01))}
\ifnum\pgfmathresult=1
$\bm{<0.01}$
\else
\pgfmathparse{int(less(##1,0.05))}
\ifnum\pgfmathresult=1
$\mathbf{\pgfmathprintnumber[assume math mode=true, fixed, fixed zerofill, precision=2]{##1}}$
\else
\pgfmathprintnumber{##1}
\fi
\fi
},
},
},
]{
var p
A 0.0445
B 0.5343
C 0.0000
D 0.0254
E 0.9843
}
\end{document}
我不确定粗体数字与正常数字略微错位是否有问题。