制作单元格行数交替的表格

制作单元格行数交替的表格

在此处输入图片描述

我正在尝试使用下面给出的代码制作上表。

\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

还有两个问题。首先,固定列宽无法保证四列表格适合文本块的宽度。因此,我建议用列替换tabulartabularx其次,由于表格中有相当多的\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中定义的列类型 siunitxmakecell包作为列标题
  • 不清楚最后一列是什么。数字、文字,还是勾选?我考虑最后一种可能性
\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}

相关内容