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