我想创建一个具有以下布局的表格
到目前为止,我已经制作了以下内容:
使用本文末尾的代码。我的问题很明显:我希望 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}