嵌套表格的列对齐(tabularx)

嵌套表格的列对齐(tabularx)

我想嵌套 2 个tabularx表:“内部”表的列属于“外部”表的一列,因此应缩进并在其侧面有一条垂直线。

我尝试使用以下 MWE 来做到这一点,但我希望插入表的第二列与“外部”表对齐,因此h 和 j 应与 b 和 d 水平对齐

\documentclass[11pt, a4paper]{scrartcl}
\usepackage{tabularx}
\begin{document}

\begin{tabularx}{\textwidth}{p{3cm} X}
\hline
a & b\\
c & d\\
\multicolumn{2}{@{\quad}|l}{
\begin{minipage}{\textwidth}
\begin{tabularx}{\textwidth}{p{3cm} X}
g & h \\
i & j \\
\end{tabularx}
\end{minipage}
}\\
e & f \\
\hline
\end{tabularx}

\end{document}

在此处输入图片描述

答案1

可能有多种方法可以实现您想要的目标,但我认为最简单的解决方案是将p“内部” tabularx 组中列的宽度减小\quad(1 em) 和的总宽度\tabcolsep。以下 MWE 执行此操作:

\documentclass[11pt,a4paper]{scrartcl}
\usepackage{tabularx,calc}
\begin{document}

\begin{tabularx}{\textwidth}{p{3cm} X}
\hline
a & b\\    c & d\\    \multicolumn{2}{@{\quad}|l}{
   \begin{minipage}{\textwidth}
      \begin{tabularx}{\textwidth}{p{3cm-1em-\tabcolsep} X}
         g & h \\             i & j \\          \end{tabularx}
   \end{minipage} }\\    e & f \\    \hline
\end{tabularx}
\end{document}

在此处输入图片描述

答案2

您需要修改“内部tabularx”中第一列的宽度,以适应tabular列分隔以及使用 的缩进\quad。此长度算法通过calc包裹

在此处输入图片描述

\documentclass{article}
\usepackage{tabularx}% http://ctan.org/pkg/tabularx
\usepackage{calc}% http://ctan.org/pkg/calc
\begin{document}
\noindent\begin{tabularx}{\textwidth}{p{3cm} X}
  \hline
  a & b\\
  c & d\\
  \multicolumn{2}{@{\quad}|l}{
    \begin{minipage}{\linewidth}
      \begin{tabularx}{\linewidth}{p{3cm-\widthof{\quad}-\tabcolsep} X}
        g & h \\
        i & j \\
      \end{tabularx}
    \end{minipage}
  }\\
  e & f \\
  \hline
\end{tabularx}
\end{document}

但是,您会注意到 LaTeX 会给出一些“Overfull hbox”警告。由于您的 中只有 2 列tabularx,因此我建议您X改为计算列 - 使用与上述类似的方法 - 并将其设为段落列以精确固定在(或)p{<len>}内。\textwidth\linewidth

相关内容