表格中某些列的宽度

表格中某些列的宽度

我想创建一个具有以下布局的表格

在此处输入图片描述

到目前为止,我已经制作了以下内容:

在此处输入图片描述

使用本文末尾的代码。我的问题很明显:我希望 X 和 Y 列具有相同的宽度(即它们各自的宽度应该是标题行中第 3 列宽度的一半),但我不知道如何做到这一点。这里有一个简单的解决方案吗?

\documentclass{article}
\usepackage{multirow,hhline}

\begin{document}
  \begin{table}[h!]
    \renewcommand{\arraystretch}{1.5}
    \begin{tabular}{c||c||c|c}
      \begin{tabular}{c}
        Some 
        \\
        text
      \end{tabular}
      &
      \begin{tabular}{c}
        Some more \\ text
      \end{tabular}
      &
      \multicolumn{2}{c}{%
        \begin{tabular}{c}
          Even more text
        \end{tabular}
      }
      \\
      \hhline{=||=||==}
      \multirow{3}{*}{ A }
      & item A1
      & X 
      & Y
      \\
      \cline{2-4}
      & item A2
      & X
      & Y
      \\
      \cline{2-4}
      & item A3
      &
      \multicolumn{2}{c}{%
        if $P = NP$: 42
      }
      \\
      \hhline{=||=||==}
      \multirow{2}{*}{ B }
      & item B1
      & \multicolumn{2}{c}{ Bla }
      \\
      \cline{2-4}
      & item B2
      & \multicolumn{2}{c}{ Blu }
    \end{tabular}
  \end{table}

\end{document}

答案1

在此处输入图片描述

\documentclass{article}
\usepackage{multirow,hhline,makecell}

\begin{document}
  \begin{table}[h!]
    \renewcommand{\arraystretch}{1.5}
    \begin{tabular}{>{\centering\arraybackslash}p{0.25\textwidth}||>{\centering\arraybackslash}p{0.25\textwidth}||>{\centering\arraybackslash}p{0.25\textwidth}|>{\centering\arraybackslash}p{0.25\textwidth}}
      \makecell{ Some \\ text}
      &
      \makecell {Some more \\ text}
      &
      \multicolumn{2}{c}{%
        \begin{tabular}{c}
          Even more text
        \end{tabular}
      }
      \\
      \hhline{=||=||==}
      \multirow{3}{*}{ A }
      & item A1
      & X 
      & Y
      \\
      \cline{2-4}
      & item A2
      & X
      & Y
      \\
      \cline{2-4}
      & item A3
      &
      \multicolumn{2}{c}{%
        if $P = NP$: 42
      }
      \\
      \hhline{=||=||==}
      \multirow{2}{*}{ B }
      & item B1
      & \multicolumn{2}{c}{ Bla }
      \\
      \cline{2-4}
      & item B2
      & \multicolumn{2}{c}{ Blu }
    \end{tabular}
  \end{table}

\end{document}

编辑

如果要包含表格的宽度,可以减小每列的大小

在此处输入图片描述

\documentclass{article}
\usepackage{multirow,hhline,makecell}

\begin{document}
  \begin{table}[h!]
    \renewcommand{\arraystretch}{1.5}
    \begin{tabular}{>{\centering\arraybackslash}p{0.07\textwidth}||>{\centering\arraybackslash}p{0.15\textwidth}||>{\centering\arraybackslash}p{0.1\textwidth}|>{\centering\arraybackslash}p{0.1\textwidth}}
      \makecell{ Some \\ text}
      &
      \makecell {Some more \\ text}
      &
      \multicolumn{2}{c}{%
        \begin{tabular}{c}
          Even more text
        \end{tabular}
      }
      \\
      \hhline{=||=||==}
      \multirow{3}{*}{ A }
      & item A1
      & X 
      & Y
      \\
      \cline{2-4}
      & item A2
      & X
      & Y
      \\
      \cline{2-4}
      & item A3
      &
      \multicolumn{2}{c}{%
        if $P = NP$: 42
      }
      \\
      \hhline{=||=||==}
      \multirow{2}{*}{ B }
      & item B1
      & \multicolumn{2}{c}{ Bla }
      \\
      \cline{2-4}
      & item B2
      & \multicolumn{2}{c}{ Blu }
    \end{tabular}
  \end{table}

\end{document}

答案2

c||c||c|c您可以使用参数保留您的代码tabular,并且可以手动将宽度添加到 X 项:

\hbox to1.2cm{\hss X\hss} % instead X

这只能在出现一次 X 时执行,下一行中的 X 将自动居中。当然,您必须猜测适当的值(此处为 1.2cm),但猜测的值也在可接受的解决方案中,请注意:p{0.07\textwidth}

相关内容