我正在尝试使用下面给出的代码制作上表。
\begin{table}[ht]
\centering
\caption{Result of transfer learning}
\label{tab2}
\begin{tabular}{|p{3cm}|p{3cm}|p{3cm}|p{3cm}|}
\hline
Model Name & Band/Model & Accuracy & Accuracy after voting \\
\hline
\multirow{3}{4em}{C1 vs C2} & alpha & 58.45\% \\
& beta & 60.01\% \\
& theta & 54.32\% \\
\hline
\multirow{3}{4em}{C1 vs C3} & alpha & 65.96\% \\
& beta & 67.02\% \\
& theta & 63.30\% \\
\hline
\multirow{3}{4em}{C3 vs C2} & alpha & 55.45\% \\
& beta & 64.28\% \\
& theta & 57.01\% \\
\hline
\hline
\end{tabular}
\end{table}
但正如你所看到的,事情并没有像我预期的那样发展。我面临的问题主要有两个。
1 - 如何向最右侧的列(投票后准确度列)添加值?我每行只能在此列中添加一个值,而之前的列中则需要添加三个值,这就是我遇到问题的原因。
2 - 如何关闭右端的括号?
答案1
1 - 如何向最右侧的列(投票后准确度列)添加值?我每行只能在此列中添加一个值,而之前的列中则需要添加三个值,这就是我遇到问题的原因。
2 - 如何关闭右端的括号?
对于 Q1,只需\multirow
在最后一列中使用指令 — 类似于您在第一列中执行的操作。对于 Q2,只需在第 4 列中&
尚未有指令的行中添加额外的粒子即可。\multirow
还有两个问题。首先,固定列宽无法保证四列表格适合文本块的宽度。因此,我建议用列替换tabular
。tabularx
其次,由于表格中有相当多的\multirow{3}{*}{...}
指令,我还建议创建一个快捷宏,例如,
\newcommand\MR[1]{\multirow{3}{*}{#1}}
以简化输入相应材料。
实施这些建议的结果如下表1所示。
请注意,表格 1 的“外观”并不完全开放和吸引人。如果表格不开放和吸引人,您的读者就不太可能参与表格的内容。因此,我还想建议您 (a) 摆脱所有垂直规则和大多数水平规则,以及 (b) 使用包中的一些线条绘制宏booktabs
- 具体来说:\toprule
、\midrule
、\bottomrule
和\addlinespace
。实施这些额外建议的结果如下表 2 所示。
\documentclass{report} % or some other suitable document class
\usepackage{tabularx,ragged2e,multirow}
\newcolumntype{L}{>{\RaggedRight}X}
\newcolumntype{C}{>{\Centering}X}
\newcommand\MR[1]{\multirow{3}{*}{#1}} % handy shortcut macro
\usepackage[skip=0.333\baselineskip]{caption} % optional
\usepackage{booktabs}
\begin{document}
\setcounter{chapter}{5} % just for this example
\begin{table}[ht]
\caption{Result of transfer learning, Take 1} \label{tab1}
\begin{tabularx}{\textwidth}{|*{4}{L|}}
\hline
Model Name & Band\slash Model & Accuracy & Accuracy after voting \\
\hline
\MR{C1 vs C2} & alpha & 58.45\% & \MR{something} \\
& beta & 60.01\% & \\
& theta & 54.32\% & \\
\hline
\MR{C1 vs C3} & alpha & 65.96\% & \MR{something} \\
& beta & 67.02\% & \\
& theta & 63.30\% & \\
\hline
\MR{C3 vs C2} & alpha & 55.45\% & \MR{something} \\
& beta & 64.28\% & \\
& theta & 57.01\% & \\
\hline
\end{tabularx}
\end{table}
\begin{table}[ht]
\caption{Result of transfer learning, Take 2} \label{tab2}
\begin{tabularx}{\textwidth}{@{} LCCC @{}}
\toprule
Model Name & Band\slash Model & Accuracy & Accuracy after voting \\
\midrule
\MR{C1 vs C2} & alpha & 58.45\% & \MR{something} \\
& beta & 60.01\% \\
& theta & 54.32\% \\
\addlinespace
\MR{C1 vs C3} & alpha & 65.96\% & \MR{something} \\
& beta & 67.02\% \\
& theta & 63.30\% \\
\addlinespace
\MR{C3 vs C2} & alpha & 55.45\% & \MR{something} \\
& beta & 64.28\% \\
& theta & 57.01\% \\
\bottomrule
\end{tabularx}
\end{table}
\end{document}
答案2
- 正如前面提到的,您总是需要将所有符号放入表格主体中,这样您就会得到表格中的最后一条垂直线
- 对于带有数字的列,我将使用包
S
中定义的列类型siunitx
和makecell
包作为列标题 - 不清楚最后一列是什么。数字、文字,还是勾选?我考虑最后一种可能性
\documentclass{article}
\usepackage{dingbat}
\usepackage{makecell, multirow}
\usepackage{siunitx}
\begin{document}
\begin{table}[ht]
\centering
\caption{Result of transfer learning}
\label{tab2}
\setcellgapes{2pt}
\makegapedcells
\begin{tabular}{|l|l|S[table-format=2.2,
table-space-text-post=\,\%]|c|}
\Xhline{1pt}
\makecell{Model\\ Name}
& \makecell{Band/\\ Model}
& {\makecell{Accuracy}}
& \makecell{Accuracy\\ after voting} \\
\Xhline{0.7pt}
\multirow{3.4}*{C1 vs C2}
& alpha & 58.45\,\% & \multirow{3.4}{*}{\checkmark} \\
& beta & 60.01\,\% & \\
& theta & 54.32\,\% & \\
\hline
\multirow{3.4}{*}{C1 vs C3}
& alpha & 65.96\,\% & \multirow{3.4}{*}{\checkmark} \\
& beta & 67.02\,\% & \\
& theta & 63.30\,\% & \\
\hline
\multirow{3.4}{*}{C3 vs C2}
& alpha & 55.45\,\% & \multirow{3.4}{*}{\checkmark} \\
& beta & 64.28\,\% & \\
& theta & 57.01\,\% & \\
\Xhline{1pt}
\end{tabular}
\end{table}
\end{document}
答案3
\documentclass[10pt,a4paper]{article}
\usepackage{multirow, makecell}
\begin{document}
\begin{table}[ht]
\centering
\caption{Result of transfer learning}
\label{tab2}
\begin{tabular}{|p{3cm}|p{3cm}|p{3cm}|p{3cm}|}
\hline
Model Name & Band/Model & Accuracy & Accuracy after voting \\
\hline
\makecell{C1 vs C2} & \makecell{alpha\\beta\\theta} & \makecell{58.45\% \\60.01\%\\54.32\%}&z\\
\hline
\end{tabular}
\end{table}
\end{document}