我有一段代码可以打印一个包含 2 行的表格。我想保留其格式并将 2 行更改为 3 行。
\documentclass[conference]{IEEEtran}
\usepackage{pgfplots}
\usepackage{siunitx}
\usepackage{multirow}
\begin{document}
\begin{table}[h]
\caption{Family data set results}
\label{tbl::Fam}
\centering
\begin{tabular}{|l|l|c|c|c!{\vrule width 2pt}l|l|c|c|c|}
%\noalign{\hrule height 2pt}
\hline
\textbf{Column}&\textbf{Algorithm}&\textbf{min}&\textbf{max}&\textbf{std}l&\textbf{Column}&\textbf{Algorithm}&\textbf{min}&\textbf{max}&\textbf{std}\\\hline
\multirow{2}{*}{age}&Original&9&2.8&100&\multirow{2}{*}{employer\_type}&Original&13&2&10\\ \cline{2-5} \cline{7-10}&PrivBayes&2&95&96&&PrivBayes&2&100&100\\\hline
\multirow{2}{*}{education\_level}&Original&7&2&98&\multirow{2}{*}{marital\_status}&Original&10&2&100\\ \cline{2-5} \cline{7-10}&PrivBayes&2&6&96&&PrivBayes&2&6&100\\\hline
\hline %\noalign{\hrule height 2pt}
\end{tabular}
\end{table}
\end{document}
在这张图片中,我有 2 个算法 {Original、PrivBayes}。我想将 2 个算法更改为 3 个算法,同时保留表格格式。
您能帮我做一下吗?
答案1
您的表格似乎比文本块宽得多。最简单的补救措施是将表格从 10 列结构转换为更易于管理(并且更适合读者阅读)的 5 列结构。
在您这样做的同时,您可能希望让表格看起来更“开放”,以吸引读者真正查看甚至吸收表格中提供的信息。我建议您 (a) 删除所有垂直线,(b) 使用较少但间距适当的水平线,(c) 不使用任何大胆的字体和(d)将三个数字列中的数字与其(隐式)小数标记对齐。
哦,我不会\multirow
对第一列中的条目使用任何指令;它们根本就没有必要。
\documentclass[conference]{IEEEtran}
\usepackage{booktabs,siunitx}
\begin{document}
\begin{table}[h]
\caption{Family dataset results}
\label{tbl::Fam}
\centering
\begin{tabular}{@{} ll *{3}{S[table-format=3.0]} @{}}
\toprule
Column&Algorithm&{min}&{max}&{std.dev.}\\
\midrule
age&Original &9&28&100\\
&PrivBayes&2&95&96\\
&ThirdAlg &10&90&50\\
\addlinespace
education\_level&Original&7&28&98\\
&PrivBayes&2&6&96\\
&ThirdAlg &10&90&50\\
\addlinespace
employer\_type&Original&13&2&10\\
&PrivBayes&2&100&100\\
&ThirdAlg &10&90&50\\
\addlinespace
marital\_status&Original&10&20&100\\
&PrivBayes&2&6&100\\
&ThirdAlg &10&90&50\\
\bottomrule
\end{tabular}
\end{table}
\end{document}
答案2
以下是具体做法:
\documentclass{article}
\usepackage{pgfplots}
\usepackage{siunitx}
\usepackage{multirow}
\begin{document}
\begin{table}[h]
\caption{Family data set results}
\label{tbl::Fam}
\centering
\begin{tabular}{|l|l|c|c|c!{\vrule width 2pt}l|l|c|c|c|}
%\noalign{\hrule height 2pt}
\hline
\textbf{Column}&\textbf{Algorithm}&\textbf{min}&\textbf{max}&\textbf{std}l&\textbf{Column}&\textbf{Algorithm}&\textbf{min}&\textbf{max}&\textbf{std}\\\hline
\multirow{3}{*}{age}&Original&9&2.8&100&\multirow{3}{*}{employer\_type}&Original&13&2&10\\ \cline{2-5} \cline{7-10}
&PrivBayes&2&95&96&&PrivBayes&2&100&100\\\cline{2-5} \cline{7-10}
&ThirdAlg&100&100&100&&ThirdAlg&100&100&100\\\hline
\multirow{3}{*}{education\_level}&Original&7&2&98&\multirow{3}{*}{marital\_status}&Original&10&2&100\\ \cline{2-5} \cline{7-10}
&PrivBayes&2&6&96&&PrivBayes&2&6&100\\\cline{2-5} \cline{7-10}
&ThirdAlg&100&100&100&&ThirdAlg&100&100&100\\\hline
%\hline %\noalign{\hrule height 2pt}
\end{tabular}
\end{table}
\end{document}
将 100 更改为您的值...此外,如果您确实需要最后一个 \hline,请从 \end{tabular} 之前的行中删除 %。
在横向或表格宽度合适的情况下,标题的居中也是可以的。
编辑:也更改了第二部分的多行,因为我之前忘记了它们,并且因此正确的多行单元格没有居中。