表格中的列未按预期扩展

表格中的列未按预期扩展

我正在尝试创建一个看起来像两个并排的独立表格的表格。每个“表格”下方都应有文字说明表格的相关内容。每个“表格”下方的文字导致最后一列扩展(见图)。

我希望所有列的宽度相同,并且文本的长度不超过每个表格的宽度,但我似乎不知道如何做到这一点。

在此处输入图片描述

下面是我正在使用的代码。

\begin{table}[H]
\centering
\begin{adjustbox}{width=\textwidth}
\begin{tabular}{ccccccccc}
\cline{1-4} \cline{6-9}
\multicolumn{1}{|c|}{} &
  \multicolumn{1}{c|}{\textbf{A}} &
  \multicolumn{1}{c|}{\textbf{B}} &
  \multicolumn{1}{c|}{\textbf{C}} &
  \multicolumn{1}{c|}{\textbf{}} &
  \multicolumn{1}{c|}{} &
  \multicolumn{1}{c|}{\textbf{A}} &
  \multicolumn{1}{c|}{\textbf{B}} &
  \multicolumn{1}{c|}{\textbf{C}} \\ \cline{1-4} \cline{6-9} 
\multicolumn{1}{|c|}{\textbf{A}} &
  \multicolumn{1}{c|}{0} &
  \multicolumn{1}{c|}{0} &
  \multicolumn{1}{c|}{0} &
  \multicolumn{1}{c|}{} &
  \multicolumn{1}{c|}{\textbf{A}} &
  \multicolumn{1}{c|}{0} &
  \multicolumn{1}{c|}{0} &
  \multicolumn{1}{c|}{0} \\ \cline{1-4} \cline{6-9} 
\multicolumn{1}{|c|}{\textbf{B}} &
  \multicolumn{1}{c|}{1} &
  \multicolumn{1}{c|}{0} &
  \multicolumn{1}{c|}{0} &
  \multicolumn{1}{c|}{} &
  \multicolumn{1}{c|}{\textbf{B}} &
  \multicolumn{1}{c|}{1} &
  \multicolumn{1}{c|}{0} &
  \multicolumn{1}{c|}{0} \\ \cline{1-4} \cline{6-9} 
\multicolumn{1}{|c|}{\textbf{C}} &
  \multicolumn{1}{c|}{0} &
  \multicolumn{1}{c|}{1} &
  \multicolumn{1}{c|}{0} &
  \multicolumn{1}{c|}{} &
  \multicolumn{1}{c|}{\textbf{C}} &
  \multicolumn{1}{c|}{1} &
  \multicolumn{1}{c|}{1} &
  \multicolumn{1}{c|}{1} \\ \cline{1-4} \cline{6-9} 
\multicolumn{4}{l}{Transitive dependency} &
  \multicolumn{1}{l}{\textbf{}} &
  \multicolumn{4}{l}{Direct dependency}
\end{tabular}
\end{adjustbox}
\caption{Adjacency matrices}
\label{tab:adjacency_matrix}

\end{table}

答案1

欢迎来到 TeX.SE!

  • 请始终提供 MWE(最小工作示例),这是一个小但完整的文档,以 和\documentclass开头end{document}
  • 在序言中,MWE 应该只加载与您的问题相关的包。

像这样:

在此处输入图片描述

使用tblr由包定义的表tabularray,MWE 很简单:

\documentclass{article}
\usepackage{tabularray}

\begin{document}
    \begin{table}[ht]
    \centering
\begin{tblr}{hline{1-Y} = {1-4,6-Z}{solid},
             vline{1-Z} = {1-Y}{solid}, %{solid},
             colspec = {X[c, font=\bfseries] *{4}{X[c]} 
                        X[c, font=\bfseries] *{3}{X[c]}},
             row{1}  = {font=\bfseries},
             row{Z}  = {font=\normalfont}
             }
    & A & B & C &   &   & A & B & C \\
A   & 0 & 0 & 0 &   & A & 0 & 0 & 0 \\
B   & 1 & 0 & 0 &   & B & 1 & 0 & 0 \\
C   & 0 & 1 & 0 &   & C & 1 & 1 & 1 \\ 
\SetCell[c=4]{c}    Transitive dependency
    &   &   &   &   &   \SetCell[c=4]{c}    Direct dependency
                        &   &   &   \\
\end{tblr}
\caption{Adjacency matrices}
\label{tab:adjacency_matrix}
    \end{table}
\end{document}

答案2

我觉得创建两个子表比将一个表拆分成两个更有意义。这可以subtable通过subcaption包。此外,p在环境中使用列tabular,您可以手动指定列的宽度(然后确保它们都具有相同的宽度)。

\documentclass{article}
\usepackage{subcaption}
\usepackage{array}
\begin{document}
\begin{table}
\captionsetup[subtable]{labelformat=empty}
\begin{subtable}{.5\textwidth}
    \centering
    \begin{tabular}{|*{4}{>{\centering\arraybackslash}p{5mm}|}}
        \hline
        & \textbf{A} & \textbf{B} & \textbf{C} \\ \hline
        \textbf{A} & 0 & 0 & 0 \\ \hline
        \textbf{B} & 1 & 0 & 0 \\ \hline
        \textbf{C} & 0 & 1 & 0 \\ \hline
    \end{tabular}
    \caption{Transitive dependency}
\end{subtable}%
\begin{subtable}{.5\textwidth}
    \centering
    \begin{tabular}{|*{4}{>{\centering\arraybackslash}p{5mm}|}}
        \hline
        & \textbf{A} & \textbf{B} & \textbf{C} \\ \hline
        \textbf{A} & 0 & 0 & 0 \\ \hline
        \textbf{B} & 1 & 0 & 0 \\ \hline
        \textbf{C} & 1 & 1 & 1 \\ \hline
    \end{tabular}
    \caption{Direct dependency}
\end{subtable}
\caption{Adjacency matrices}
\end{table}
\end{document}

相关内容