如何将两个表格合并为一个具有列宽的表格?

如何将两个表格合并为一个具有列宽的表格?

我寻求有关在表格环境中实现两种独立效果的建议。

(1)我有两个表,它们的列数不同。我需要将它们合并为一个表。

我有这个

\begin{table}[ht]
\small
\centering

\begin{tabular}{|l|c|l|c|}
\hline
    parameter & value & parameter & value \\
\hline
    blah blah & a & blah blah & 2 \\
    blah blah & 4 & blah blah   & 17 \\             
    blah blah & 4 & blah blah & 4 \\
    blah blah & 4 & blah blah & 128  \\
    blah blah & 1 & blah blah &  6 \\
    blah blah & 8 & blah blah & 48 \\
    blah blah & 48 & blah blah & 32 \\ 
    blah blah & 10 & blah blah & 16 \\
\hline
\end{tabular}

\caption{My table 1}
\end{table}

\begin{table}[ht]
\small
\centering
\begin{tabular}{|l|l|l|l|l|l|}
\hline
        blah & bloo & bleeblee & bloo bloo & meeh & hoohaa  \\ \hline
        xyz & 3ubfjdf & 14 & 64 & 4 & 444 \\ 
        abc & fddf4 & 44 & 64 & 8 & 555 \\ 
        mno & dsf4tv & 100 & 64 & 8 & 777 \\
\hline
\end{tabular}
\caption{My even better table 2}
\label{tab:cacheparams}
\end{table}

两张桌子

我想将两张表合并在一起。我试过这个

\begin{table}[ht]
\small
\centering

\begin{tabular}{|l|c|l|c|}
\hline
    parameter & value & parameter & value \\
\hline
    blah blah & a & blah blah & 2 \\
    blah blah & 4 & blah blah   & 17 \\             
    blah blah & 4 & blah blah & 4 \\
    blah blah & 4 & blah blah & 128  \\
    blah blah & 1 & blah blah &  6 \\
    blah blah & 8 & blah blah & 48 \\
    blah blah & 48 & blah blah & 32 \\ 
    blah blah & 10 & blah blah & 16 \\
\hline
\end{tabular}
\begin{tabular}{|l|l|l|l|l|l|}
\hline
        blah & bloo & bleeblee & bloo bloo & meeh & hoohaa  \\ \hline
        xyz & 3ubfjdf & 14 & 64 & 4 & 444 \\ 
        abc & fddf4 & 44 & 64 & 8 & 555 \\ 
        mno & dsf4tv & 100 & 64 & 8 & 777 \\
\hline
\end{tabular}
\caption{My merged table}
\end{table}

但它产生了这个

我得到的表格

但是我想要这个(请注意两个表格之间缺少空白)。

我想要的表

(2)一旦我正确定位了这两个表格,我想让它们的宽度相等。最好是列的宽度。我尝试使用 tabularx 和使用|X|c|l|c|还行,但第一列的空格太多了。我希望空格分布在所有列上。

有什么方法可以实现这些目标吗?

答案1

这是一个使用选项tabularx

\documentclass{book}
\usepackage{tabularx}

\newcolumntype{C}{>{\centering\arraybackslash}X}

\begin{document}

\begin{table}
\small
\centering
\begin{tabularx}{.7\linewidth}{|X|C|X|C|}
\hline
    parameter & value & parameter & value \\
\hline
    blah blah & a & blah blah & 2 \\
    blah blah & 4 & blah blah   & 17 \\             
    blah blah & 4 & blah blah & 4 \\
    blah blah & 4 & blah blah & 128  \\
    blah blah & 1 & blah blah &  6 \\
    blah blah & 8 & blah blah & 48 \\
    blah blah & 48 & blah blah & 32 \\ 
    blah blah & 10 & blah blah & 16 \\
\hline
\end{tabularx}\par\vskip-1.4pt
\begin{tabularx}{.7\linewidth}{*{6}{|X}|}
\hline
        blah & bloo & bleeblee & bloo bloo & meeh & hoohaa  \\ \hline
        xyz & 3ubfjdf & 14 & 64 & 4 & 444 \\ 
        abc & fddf4 & 44 & 64 & 8 & 555 \\ 
        mno & dsf4tv & 100 & 64 & 8 & 777 \\
\hline
\end{tabularx}
\caption{My merged table}
\end{table}

\end{document}

在此处输入图片描述

答案2

您只需使用标准命令即可multicolumn实现此目的。然后选择顶部表格的哪些列应跨越底部表格的多个列。然后在顶部表格的每一行中执行此操作。

\begin{tabular}{|l|l|l|l|l|l|}
\hline
 \multicolumn{2}{|l|}{  parameter } & value & \multicolumn{2}{l|}{  parameter } & value \\
\hline
 \multicolumn{2}{|l|}{ blah blah }&  a & \multicolumn{2}{l|}{ blah blah } &  2 \\
 \multicolumn{2}{|l|}{ blah blah }&  4 & \multicolumn{2}{l|}{ blah blah } &  17 \\             
 \multicolumn{2}{|l|}{ blah blah }&  4 & \multicolumn{2}{l|}{ blah blah } &  4 \\
 \multicolumn{2}{|l|}{ blah blah }&  4 & \multicolumn{2}{l|}{ blah blah } &  128  \\
 \multicolumn{2}{|l|}{ blah blah }&  1 & \multicolumn{2}{l|}{ blah blah } &   6 \\
 \multicolumn{2}{|l|}{ blah blah }&  8 & \multicolumn{2}{l|}{ blah blah } &  48 \\
 \multicolumn{2}{|l|}{ blah blah }& 48 & \multicolumn{2}{l|}{ blah blah } &  32 \\ 
 \multicolumn{2}{|l|}{ blah blah }& 10 & \multicolumn{2}{l|}{ blah blah } &  16 \\
\hline
    blah & bloo & bleeblee & bloo bloo & meeh & hoohaa  \\ \hline
    xyz & 3ubfjdf & 14 & 64 & 4 & 444 \\ 
    abc & fddf4 & 44 & 64 & 8 & 555 \\ 
    mno & dsf4tv & 100 & 64 & 8 & 777 \\
\hline
\end{tabular}
\caption{My merged table}
\end{table}

看起来像: 在此处输入图片描述

这种方法的优点是

  • 它使用标准命令
  • 它功能多样,您可以轻松使用其他列并组合两个以上的表格。
  • 它不依赖于间距和其他可能改变的值

缺点当然是必须手动完成。这可能很麻烦。但不幸的是,LaTeX 中的表格通常都是这种情况。(但是,当制作表格很复杂时,阅读表格也会很复杂。这可能暗示您应该想出另一种方法来显示数据。)

我希望这回答了你的问题。

答案3

另一种具有不同类型的“X”列的布局,以及借助包实现更好的垂直间距 cellspace

\documentclass[a4paper, 11pt]{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}

\usepackage{graphicx}%[draft]
\usepackage{array, booktabs, multirow}
\usepackage{tabularx}
\newcolumntype{Y}{ >{\centering\arraybackslash\hsize =0.7165\hsize}X}
\newcolumntype{Z}{ >{\centering\arraybackslash\hsize =0.2835\hsize}X}
\renewcommand{\tabularxcolumn}[1]{ >{\small\centering\arraybackslash}m{#1}}

\usepackage{cellspace} 
\renewcommand{\cellspacetoplimit}{3pt}
\renewcommand{\cellspacebottomlimit}{3pt}
\addparagraphcolumntypes{X, Y, Z}

\begin{document}

\begin{minipage}{0.6\linewidth}
\small
\centering
\begin{tabularx}{\linewidth}{|*{2}{S{Y}|S{Z}|}}
\hline
    parameter & value & parameter & value \\
\hline
    blah blah & a & blah blah & 2 \\
    blah blah & 4 & blah blah   & 17 \\
    blah blah & 4 & blah blah & 4 \\
    blah blah & 4 & blah blah & 128  \\
    blah blah & 1 & blah blah &  6 \\
    blah blah & 8 & blah blah & 48 \\
    blah blah & 48 & blah blah & 32 \\
    blah blah & 10 & blah blah & 16 \\
\hline
\end{tabularx}\\[-0.25ex]
%%
\begin{tabularx}{\linewidth}{|*{6}{S{X} |}}
         blah  &  bloo &  blee  blee  & bloo bloo & meeh & hoo haa   \\
        \hline
        xyz & 3ubf jdf & 14 & 64 & 4 & 444 \\
        abc & fdd f4 & 44 & 64 & 8 & 555 \\
        mno & dsf 4tv & 100 & 64 & 8 & 777 \\
\hline
\end{tabularx}
\end{minipage}

\end{document} 

在此处输入图片描述

答案4

第一次尝试没有相等的宽度,但我不确定我是否正确理解了请求...;-)

\documentclass{book}

\begin{document}

\begin{table}[ht]
\small
\centering

\begin{tabular}{l|l|c|l|c|l}
\cline{2-5} 
&    parameter & value & parameter & value \\
\cline{2-5} 
 &   blah blah & a & blah blah & 2 \\
 &   blah blah & 4 & blah blah   & 17 \\             
 &   blah blah & 4 & blah blah & 4 \\
 &   blah blah & 4 & blah blah & 128  \\
 &   blah blah & 1 & blah blah &  6 \\
 &   blah blah & 8 & blah blah & 48 \\
 &   blah blah & 48 & blah blah & 32 \\ 
 &   blah blah & 10 & blah blah & 16 \\
\hline
\multicolumn{1}{|l|}{        blah} & bloo & bleeblee & bloo bloo & meeh & \multicolumn{1}{|l|}{hoohaa}  \\ \hline
\multicolumn{1}{|l|}{        xyz} & 3ubfjdf & 14 & 64 & 4 & \multicolumn{1}{|l|}{444} \\ 
\multicolumn{1}{|l|}{        abc} & fddf4 & 44 & 64 & 8 & \multicolumn{1}{|l|}{555} \\ 
\multicolumn{1}{|l|}{        mno} & dsf4tv & 100 & 64 & 8 & \multicolumn{1}{|l|}{777} \\
\hline
\end{tabular}
\caption{My merged table}
\end{table}

\end{document}

在此处输入图片描述

相关内容