我不知道这个表格代码有什么问题
\begin{tabular}{ |p{2cm}|p{3cm}|p{1cm}|p{1cm}| }
\centering
\hline
A & B & #Items & #Elements \\
\hline
\multirow{2}{4em}{MMM} & AA & 2 & 11 \\
& BB & 1 & 26 \\
\hline
\caption{Name}
\label{n}
\end{tabular}
产生
表格宽度不止一列,这就是您看到 [4] 和 [5] 的原因。我根据示例使用了此代码这里。
我该如何修复它?
答案1
您不能\centering
在这样的表格中使用(或者如果您这样做,它只会在本地起作用)。如果您希望列居中,则需要将其添加到 colspec 中。
该字符#
在 LaTeX 中很特殊,必须进行转义。
标题和标签不能位于表格内。如果您想要浮动,则应该将其放置在包裹表格的表格环境中,否则您可以使用包\captionof
中的命令\caption
。
您拥有的内容不适合您为列指定的宽度。我调整了最后两列的宽度,但如果内容更多,您可能需要做更多调整。
您可以使用 = 作为 multirow 的第二个参数来获取自然宽度。
要么(浮动):
\documentclass{article}
\usepackage{array,multirow}
\begin{document}
\begin{table}[htb]
\begin{tabular}{%
|>{\centering\arraybackslash}p{2cm}%
|>{\centering\arraybackslash}p{3cm}%
|>{\centering\arraybackslash}p{2cm}%
|>{\centering\arraybackslash}p{2cm}|}
\hline
A & B & \#Items & \#Elements \\
\hline
\multirow{2}={\centering MMM} & AA & 2 & 11 \\
\cline{2-4}% if you want a partial horizontal line here
& BB & 1 & 26 \\
\hline
\end{tabular}
\caption{Name}\label{n}
\end{table}
\end{document}
或者(不会浮动):
\documentclass{article}
\usepackage{array,multirow}
\usepackage{caption}
\begin{document}
\begin{tabular}{%
|>{\centering\arraybackslash}p{2cm}%
|>{\centering\arraybackslash}p{3cm}%
|>{\centering\arraybackslash}p{2cm}%
|>{\centering\arraybackslash}p{2cm}|}
\hline
A & B & \#Items & \#Elements \\
\hline
\multirow{2}={\centering MMM} & AA & 2 & 11 \\
\cline{2-4}% if you want a partial horizontal line here
& BB & 1 & 26 \\
\hline
\end{tabular}
\captionof{table}{Name}\label{n}
\end{document}
答案2
这就是你想要的吗?
\documentclass{article}
\usepackage{array,multirow}
\usepackage{caption}
\begin{document}
\begin{center}
\begin{tabular}{ |p{2cm}|p{3cm}|p{1cm}|p{2cm}| }
\hline
A & B & Items & Elements \\
\hline
\multirow{2}{4em}{MMM} & AA & 2 & 11 \\
& BB & 1 & 26 \\
\hline
\end{tabular}
\captionof{table}{Name}\label{n}
\end{center}
\end{document}