如何自动将先前表格的内容复制到其他表格?

如何自动将先前表格的内容复制到其他表格?

我正在写结果报告。每个模型都有自己的部分,结果存储在表中,其中每个表具有相同数量的列,并由一行标题和一行实际结果组成:

\begin{table}[ht]
\centering
\begin{tabular}{|rrrrrrrrrr|}
  \hline
model & acc & bacc & TPR & TNR & FAR & prec0 & prec1 & $\kappa$ & auc \\ 
  \hline
model_name & 80.16 & 82.16 & 67.76 & 96.56 & 3.44 & 69.38 & 96.30 & 61.39 & 82.16 \\ 
   \hline
\end{tabular}
\end{table}

在本章的最后,我想将此类表格中的所有结果汇总到一个大表中,其中一行对应一个模型。但是我想自动执行此操作,因为如果我在模型中发现错误并重新计算,我不想更改两个表中的值,而只想更改这个简单表中的值。我正在用 overleaf 写报告。有什么想法吗?

答案1

这是一个自动化的实现:

\documentclass{article}

\newcommand{\commonheader}{%
  \begin{tabular}{|rrrrrrrrrr|}
  \hline
  model & acc & bacc & TPR & TNR & FAR & prec0 & prec1 & $\kappa$ & auc \\ 
  \hline
}
\newtoks\tablerows
\newcommand{\maketable}[1]{%
  \commonheader
  #1 \\
  \hline
  \end{tabular}
  \global\tablerows=\expandafter{\the\tablerows#1\\}
}
\newcommand{\fulltable}{%
  \commonheader
  \the\tablerows
  \hline
  \end{tabular}
  \global\tablerows{}%
}

\begin{document}

\begin{table}[!htp]
\centering

\maketable{model\_name & 80.16 & 82.16 & 67.76 & 96.56 & 3.44 & 69.38 & 96.30 & 61.39 & 82.16}

\caption{First table}

\end{table}

\begin{table}[!htp]
\centering

\maketable{model\_name & 90.16 & 92.16 & 77.76 & 16.56 & 4.44 & 69.38 & 96.30 & 61.39 & 82.16}

\caption{Second table}

\end{table}

\begin{table}[!htp]
\centering

\fulltable

\caption{Full table}

\end{table}

\end{document}

在此处输入图片描述

使用之后\fulltable,令牌寄存器被清除,因此您可以在下一章重新开始。

答案2

这将使用 pgfplotstable 将所有数据存储到宏中,然后仅显示选定的部分行。始终显示标题行。注意:行编号从 0 开始。

\documentclass{article}
\usepackage{pgfplotstable}

\pgfplotstableread[col sep=&, row sep=\\]{
model & acc & bacc & TPR & TNR & FAR & prec0 & prec1 & kappa & auc \\
model\_one & 80.16 & 82.16 & 67.76 & 96.56 & 3.44 & 69.38 & 96.30 & 61.39 & 82.16 \\
model\_two & 80.16 & 82.16 & 67.76 & 96.56 & 3.44 & 69.38 & 96.30 & 61.39 & 82.16 \\
}{\mydata}

\pgfplotstableset{
  columns/model/.style={ column type=|l, string type},
  columns/acc/.style={column type=l},
  columns/bacc/.style={column type=l},
  columns/TPR/.style={column type=l},
  columns/TNR/.style={column type=l},
  columns/FAR/.style={column type=l},
  columns/prec0/.style={column type=l},
  columns/prec1/.style={column type=l},
  columns/kappa/.style={column type=l, column name=$\kappa$},
  columns/auc/.style={column type=l|},
  before row=\hline,
  every last row/.style={after row=\hline},
}

\begin{document}
\begin{table}[t]
\centering
\pgfplotstabletypeset[skip rows between index={1}{100}]{\mydata}
\end{table}

\begin{table}[t]
\centering
\pgfplotstabletypeset[skip rows between index={0}{1}]{\mydata}
\end{table}

\begin{table}[t!]
\centering
\pgfplotstabletypeset{\mydata}
\end{table}

\null\vfill

\end{document}

演示

相关内容