根据多个条件修改 LaTeX 表 p 值

根据多个条件修改 LaTeX 表 p 值

我有通过 R(Brew、Knitr)自动生成(填充)的 LaTeX 表,并使用 PdfLaTeX(MiKTeX)进行编译。每个统计测试都有几行 p 值。我希望 LaTeX 自动根据以下两种情况格式化它们:

  1. 如果 p 值 <= 0.05 且 >= 0.01,则用尾随星号将该值加粗;
  2. 如果 p 值 < 0.01,则<在新的加粗值 = 0.01 前面插入一个符号。

如果 p 值不满足任何条件(即 > 0.05),则保留原始 p 值。下面是 LaTeX 表格示例,后面是预期表格示例。

\usepackage{alltt}
\usepackage{booktabs}
\usepackage[utf8]{inputenc}
\usepackage[super]{nth}
\usepackage[flushleft]{threeparttable}
\usepackage{float}
\usepackage[labelfont=bf]{caption}
\captionsetup[table]{labelsep=space,
         justification=raggedright, singlelinecheck=off}
\usepackage{chngpage}
\begin{document}
\begin{table}
\centering
\caption*{\textbf{Table}: Statistics for A, B, C.}\label{table}
\begin{tabular}{llll}
Statistic & A     & B       & C        \\
Mean      & 8.3   & 9.4     & 7.6      \\
t         & 0.82  & 0.72    & 0.92     \\
p-value   & 0.06  & 0.12    & 0.05     \\
wmw       & 80.23 & 1000.34 & 1243.44  \\
p-value   & 0.04  & 0.09    & 0.00    
\end{tabular}
\end{table}
\end{document}
\usepackage{alltt}
\usepackage{booktabs}
\usepackage[utf8]{inputenc}
\usepackage[super]{nth}
\usepackage[flushleft]{threeparttable}
\usepackage{float}
\usepackage[labelfont=bf]{caption}
\captionsetup[table]{labelsep=space,
         justification=raggedright, singlelinecheck=off}
\usepackage{chngpage}
\begin{document}
\begin{table}
\centering
\caption*{\textbf{Table}: Statistics for A, B, C.}\label{table}
\begin{tabular}{llll}
Statistic & A             & B       & C                         \\
Mean      & 8.3           & 9.4     & 7.6                       \\
t         & 0.82          & 0.72    & 0.92                      \\
p-value   & 0.06          & 0.12    & \textbf{0.05}             \\
wmw       & 80.23         & 1000.34 & 1243.44                   \\
p-value   & \textbf{0.04} & 0.09    & \textless{}\textbf{0.01} 
\end{tabular}
\end{table}
\end{document}

我尝试了\ifnum很多次都没有成功,返回错误! Missing number, treated as zero.

\newcommand\pval[1]{
    \ifnum{#1}<{0.05}=0
        \textbf{#1}
    else
        #1
    fi
}

答案1

您只能使用\ifnum整数。对于浮点数,您需要使用\FPiflt类似FP包。您还可以使用以下组合来“自动化”此操作:大批包,定义一个新的列类型,以及胶原细胞包,将单元格的内容传递给宏。下面两行关键代码是:

\newcolumntype{P}{>{\collectcell\pval}c<{\endcollectcell}}
\newcommand\pval[1]{\FPiflt{#1}{0.5}\textbf{#1}\else#1\fi}

这些行定义了将宏P应用于每个单元格的行列类型\pcal。有了这个,OP 中的 MWE 会产生:

在此处输入图片描述

完整代码如下:

\documentclass{article}
\usepackage{alltt}
\usepackage{booktabs}
\usepackage[utf8]{inputenc}
\usepackage[super]{nth}
\usepackage[flushleft]{threeparttable}
\usepackage{float}
\usepackage[labelfont=bf]{caption}
\captionsetup[table]{labelsep=space,
         justification=raggedright, singlelinecheck=off}
\usepackage{chngpage}
\usepackage{fp,collcell,array}
\newcolumntype{P}{>{\collectcell\pval}c<{\endcollectcell}}
\newcommand\pval[1]{\FPiflt{#1}{0.5}\textbf{#1}\else#1\fi}
\begin{document}
\begin{table}
\centering
\caption*{\textbf{Table}: Statistics for A, B, C.}\label{table}
\begin{tabular}{lllP}
Statistic & A     & B       &\multicolumn{1}{c}{C} \\
Mean      & 8.3   & 9.4     & 7.6      \\
t         & 0.82  & 0.72    & 0.92     \\
p-value   & 0.06  & 0.12    & 0.05     \\
wmw       & 80.23 & 1000.34 & 1243.44  \\
p-value   & 0.04  & 0.09    & 0.00
\end{tabular}
\end{table}
\end{document}

请注意,您需要使用\multicolumn列标题。我刚刚将条目设置为粗体(如果小于 0.5),其他装饰可以以相同的方式添加。

编辑

如果如评论中所述,您不想将这种特殊格式应用于整个列,那么您可以\pval根据需要手动向表中添加条目。

\documentclass{article}
\usepackage{alltt}
\usepackage{booktabs}
\usepackage[utf8]{inputenc}
\usepackage[super]{nth}
\usepackage[flushleft]{threeparttable}
\usepackage{float}
\usepackage[labelfont=bf]{caption}
\captionsetup[table]{labelsep=space,
         justification=raggedright, singlelinecheck=off}
\usepackage{chngpage}
\usepackage{fp}
\newcommand\pval[1]{\FPiflt{#1}{0.5}\textbf{#1}\else#1\fi}
\begin{document}
\begin{table}
\centering
\caption*{\textbf{Table}: Statistics for A, B, C.}\label{table}
\begin{tabular}{llll}
Statistic & A     & B       &C       \\
Mean      & 8.3   & 9.4     & 7.6      \\
t         & 0.82  & 0.72    & 0.92     \\
p-value   & 0.06  & 0.12    & \pval{0.05}\\
wmw       & 80.23 & 1000.34 & 1243.44  \\
p-value   & 0.04  & 0.09    & 0.00
\end{tabular}
\end{table}
\end{document}

相关内容