使用合并单元格和居中对齐元素创建标题

使用合并单元格和居中对齐元素创建标题

我想创建一个如下的表格:

期待

我当前的代码如下:

\documentclass[journal]{IEEEtran}
\begin{document}

\label{tab:table_computational_time} 
\noindent\begin{tabularx}{\linewidth} { |
  l |
  >{\raggedright\arraybackslash}X |
  c |
}
  \hline
  \textbf{wafer flow} & \textbf{MIP II model} & \textbf{MRT sequence}  \\
  \hline
  $[2]$  & 198 & 0.11 \\
  \hline
  $[3]$  & 204 & 0.11 \\
  \hline
  $[1,2]$  & 375 & 0.12\\
  \hline
  $[1,3]$  & 367 & 0.13\\
  \hline
  $[1,2,1]$  & 756 & 0.13\\
  \hline
  $[1,2,2]$  & 861 & 0.14\\
  \hline
  $[1,3,1]$  & 732 & 0.13\\
  \hline
  $[1,2,1,1]$  & 1288 & 0.13\\
  \hline
  $[1,3,1,1]$  & 1314 & 0.13\\
  \hline
  $[1,2,1,2]$  & 1538 & 0.15\\
  \hline
  $[1,2,2,1]$  & 1450 & 0.14\\
  \hline
  $[1,2,2,2]$  & 1444 & 0.14\\
  \hline
  $[1,3,2,1]$  & 1387 & 0.15\\
  \hline
  $[1,2,1,1,1]$  & 2381 & 0.13\\
  \hline
\end{tabularx}
\end{document}

但是目前的结果如下。

当前结果

有人可以建议如何调整代码以便:

(a)合并“晶圆流”单元格并将“计算时间(秒)”添加到表标题中?

(b)使所有数字在每个单元格内居中对齐。

谢谢。

答案1

使用包的解决方案tabularray。我认为代码是不言自明的:

\documentclass[journal]{IEEEtran}
\usepackage{lipsum}     % only for dummy text
\usepackage{tabularray}
\UseTblrLibrary{siunitx}

\begin{document}
\lipsum[1][1-3]
\begin{table}[ht]\centering
\caption{One option}
\begin{tblr}
{
  colspec={cS[table-format=4]     % 4 integer digits
            S[table-format=1.2]}, % 1 integer and 2 decimal digits
  hlines,vlines,
  row{1,2}={font=\bfseries},
  cell{3-Z}{1}={preto={$[},appto={]$}}, % adding '$[' at the beginning and ']$' at the end of these cells
  cell{1}{2}={c=2}{}, % cell in row 1 and column 2 expands to 2 (c)olumns
  cell{1}{1}={r=2}{}  % cell in row 1 and column 1 expands to 2 (r)ows
}
wafer flow & {{{Computational time (seconds)}}}  \\
           & {{{MIP II model}}} & {{{MRT sequence}}}\\
2          &  198 & 0.11\\
3          &  204 & 0.11\\
1,2        &  375 & 0.12\\
1,3        &  367 & 0.13\\
1,2,1      &  756 & 0.13\\
1,2,2      &  861 & 0.14\\
1,3,1      &  732 & 0.13\\
1,2,1,1    & 1288 & 0.13\\
1,3,1,1    & 1314 & 0.13\\
1,2,1,2    & 1538 & 0.15\\
1,2,2,1    & 1450 & 0.14\\
1,2,2,2    & 1444 & 0.14\\
1,3,2,1    & 1387 & 0.15\\
1,2,1,1,1  & 2381 & 0.13
\end{tblr}
\end{table}

\lipsum[2]
\begin{table}[ht]\centering
\caption{Another one}
\begin{tblr}
{
  colspec={cS[table-format=4]S[table-format=1.2]},
  row{1,2}={font=\bfseries},
  cell{3-Z}{1}={preto={$[},appto={]$}},
  cell{1}{2}={c=2}{},
  hline{1,Z}={0.8pt}, % first and last horizontal lines
  hline{3}={0.4pt},   % third horizontal line
}
wafer flow & {{{Computational time (seconds)}}}  \\
           & {{{MIP II model}}} & {{{MRT sequence}}}\\
2          &  198 & 0.11\\
3          &  204 & 0.11\\
1,2        &  375 & 0.12\\
1,3        &  367 & 0.13\\
1,2,1      &  756 & 0.13\\
1,2,2      &  861 & 0.14\\
1,3,1      &  732 & 0.13\\
1,2,1,1    & 1288 & 0.13\\
1,3,1,1    & 1314 & 0.13\\
1,2,1,2    & 1538 & 0.15\\
1,2,2,1    & 1450 & 0.14\\
1,2,2,2    & 1444 & 0.14\\
1,3,2,1    & 1387 & 0.15\\
1,2,1,1,1  & 2381 & 0.13
\end{tblr}
\end{table}

\lipsum[3]
\end{document}

在此处输入图片描述

答案2

这是一个基本的解决方案:

(a)对于行合并,加载multirow包并使用相应的命令。 (b)对于对齐。在序言中将 更改lc,并将\raggedright更改为。\flushrighttabularx

顺便一提,

  • 为什么tabularx在基础功能tabular似乎就足够的情况下还要使用?
  • 这样做,为了避免输入数百个,在表格序言中$使用array或加载包替换:通过或 array| l ||>{$}l<{$}||>{$}c<{$}|

MWE 结合了所有这些成分:

\documentclass[journal]{IEEEtran}
\usepackage{array,multirow,bigstrut}\begin{document}
% \label{tab:computational_time} 
\begin{center}
\begin{tabular}{*{3}{|>{$}c<{$}}|}
% the construct *{3}{...} means repeat 3 times the format ...\hline
\multirow{2}[t 3]*{\textbf{wafer flow}} 
& \multicolumn{2}{c|}{\textbf{computational time (s)}}\\
\cline{2-3}
& \textbf{MIP II model} & \textbf{MRT sequence}  \\
    \hline
    [2]  & 198 & 0.11 \\
    \hline
    [3]  & 204 & 0.11 \\
    \hline
    [1,2] & 375 & 0.12\\
    \hline
    [1,3] & 367 & 0.13\\
    \hline
    [1,3,1,1] & 1314 & 0.13\\
\hline
\end{tabular}
\end{center
\end{document}

注意:此处,{center}环境确保在当前列中居中。要获得带有标题和标签的编号表,请将其插入浮动{table}(或全页宽度居中)中,并用中的命令{table*}替换环境。(禁用)仅在这样的情况下才有意义{center}\centeringtable\label编号环境。

编辑@juan 的答案是一个不太基本但功能更强大的解决方案。我使用它并推荐它用于复杂的设计,但可能不适用于 OP 提出的相当简单的问题。

答案3

与。{NiceTabular}nicematrix

\documentclass[journal]{IEEEtran}
\usepackage{nicematrix,siunitx}

\begin{document}

\sisetup{table-format=4.0}

\label{tab:table_computational_time} 
\noindent\begin{NiceTabular}{c X[S] c}[hvlines,cell-space-limits=3pt]
  \RowStyle[nb-rows=2]{\bfseries}
  \Block{2-1}{wafer flow} & {\Block{1-2}{Computational time (seconds)}} \\
                          & {MIP II model} & MRT sequence  \\
  $[2]$  & 198 & 0.11 \\
  $[3]$  & 204 & 0.11 \\
  $[1,2]$  & 375 & 0.12\\
  $[1,3]$  & 367 & 0.13\\
  $[1,2,1]$  & 756 & 0.13\\
  $[1,2,2]$  & 861 & 0.14\\
  $[1,3,1]$  & 732 & 0.13\\
  $[1,2,1,1]$  & 1288 & 0.13\\
  $[1,3,1,1]$  & 1314 & 0.13\\
  $[1,2,1,2]$  & 1538 & 0.15\\
  $[1,2,2,1]$  & 1450 & 0.14\\
  $[1,2,2,2]$  & 1444 & 0.14\\
  $[1,3,2,1]$  & 1387 & 0.15\\
  $[1,2,1,1,1]$  & 2381 & 0.13\\
\end{NiceTabular}

\end{document}

上述代码的输出

相关内容