hline 没有填满 tabularx

hline 没有填满 tabularx

我使用以下代码创建了一个表:

\begin{tabularx}{14cm}{|X|X|X|X|}
\hline
\multicolumn{4}{|c|}{\textbf{\cellcolor{gray!20}contentcontent}} \\
\hline
\multicolumn{4}{|p{\linewidth}|}{contentcontentcontentcontentcontentcontentcontentcontent} \\
\hline
\multicolumn{4}{|c|}{\textbf{\cellcolor{gray!20}contentcontent}} \\
\hline
\textbf{contentcontent:}& \footnotesize{contentcontent}& \textbf{contentcontent:} & \footnotesize{contentcontent}\\
\hline
\multicolumn{4}{|c|}{\textbf{\cellcolor{gray!20}contentcontent}} \\
\hline
\textbf{contentcontent:}& \footnotesize{contentcontent}& \textbf{contentcontent:} & \footnotesize{contentcontent}\\
\hline
\textbf{contentcontent:}& \footnotesize{contentcontent}& \textbf{contentcontent:} & \footnotesize{contentcontent}\\
\hline
\textbf{contentcontent:}& \footnotesize{contentcontent}& \textbf{contentcontent:} & \footnotesize{contentcontent}\\
\hline
\multicolumn{4}{|c|}{\textbf{\cellcolor{gray!20}contentcontent}} \\
\hline
\textbf{contentcontent:}& \footnotesize{contentcontent}& \textbf{contentcontent:} & \footnotesize{contentcontent}\\
\hline
\textbf{contentcontent:}& \multicolumn{3}{c|}{contentcontent}\\
\hline
\textbf{contentcontent:}& \footnotesize{contentcontent}& \textbf{contentcontent:} & \footnotesize{contentcontent}\\
\hline
\multicolumn{4}{|c|}{\textbf{\cellcolor{gray!20}contentcontent}} \\
\hline
\textbf{contentcontent 1:}& \multicolumn{3}{c|}{contentcontent}\\
\hline
\textbf{contentcontent 3:}& \multicolumn{3}{c|}{contentcontent}\\
\hline
\textbf{contentcontent 2:}& \multicolumn{3}{c|}{contentcontent}\\
\hline
\multicolumn{4}{|c|}{\textbf{\cellcolor{gray!20}contentcontent}} \\
\hline
\multicolumn{4}{|p{\linewidth}|}{contentcontent} \\
\hline
\multicolumn{4}{|l|}{\textbf{\cellcolor{gray!20}contentcontent}} \\
\hline

\end{tabularx}

并且由于某种原因,我的 h 线没有在右侧完全填满。

表输出

这可能是什么问题?提前致谢。

答案1

你注意到的行为是由于你\multicolumn

\multicolumn{4}{|p{\linewidth}|}{contentcontent}

在所有这些情况下,用 替换p{\linewidth}l问题就解决了。

与您的设置不兼容的示例

\documentclass{article}
\usepackage[margin=3cm]{geometry}
\usepackage{tabularx,colortbl,xcolor}

\begin{document}

\begin{tabularx}{14cm}{|X|X|X|X|}
\hline
\multicolumn{4}{|c|}{\textbf{\cellcolor{gray!20}contentcontent}} \\
\hline
\multicolumn{4}{|p{\linewidth}|}{contentcontentcontentcontentcontentcontentcontentcontent} \\
\hline
\multicolumn{4}{|c|}{\textbf{\cellcolor{gray!20}contentcontent}} \\
\hline
\textbf{contentcontent:}& \footnotesize{contentcontent}& \textbf{contentcontent:} & \footnotesize{contentcontent}\\
\hline
\multicolumn{4}{|c|}{\textbf{\cellcolor{gray!20}contentcontent}} \\
\hline
\textbf{contentcontent:}& \footnotesize{contentcontent}& \textbf{contentcontent:} & \footnotesize{contentcontent}\\
\hline
\textbf{contentcontent:}& \footnotesize{contentcontent}& \textbf{contentcontent:} & \footnotesize{contentcontent}\\
\hline
\textbf{contentcontent:}& \footnotesize{contentcontent}& \textbf{contentcontent:} & \footnotesize{contentcontent}\\
\hline
\multicolumn{4}{|c|}{\textbf{\cellcolor{gray!20}contentcontent}} \\
\hline
\textbf{contentcontent:}& \footnotesize{contentcontent}& \textbf{contentcontent:} & \footnotesize{contentcontent}\\
\hline
\textbf{contentcontent:}& \multicolumn{3}{c|}{contentcontent}\\
\hline
\textbf{contentcontent:}& \footnotesize{contentcontent}& \textbf{contentcontent:} & \footnotesize{contentcontent}\\
\hline
\multicolumn{4}{|c|}{\textbf{\cellcolor{gray!20}contentcontent}} \\
\hline
\textbf{contentcontent 1:}& \multicolumn{3}{c|}{contentcontent}\\
\hline
\textbf{contentcontent 3:}& \multicolumn{3}{c|}{contentcontent}\\
\hline
\textbf{contentcontent 2:}& \multicolumn{3}{c|}{contentcontent}\\
\hline
\multicolumn{4}{|c|}{\textbf{\cellcolor{gray!20}contentcontent}} \\
\hline
\multicolumn{4}{|p{\linewidth}|}{contentcontent} \\
\hline
\multicolumn{4}{|l|}{\textbf{\cellcolor{gray!20}contentcontent}} \\
\hline
\end{tabularx}

\end{document} 

输出

在此处输入图片描述

这就是它应该的样子(替换p{\linewidth}l

\documentclass{article}
\usepackage[margin=3cm]{geometry}
\usepackage{tabularx,colortbl,xcolor}

\begin{document}

\begin{tabularx}{14cm}{|X|X|X|X|}
\hline
\multicolumn{4}{|c|}{\textbf{\cellcolor{gray!20}contentcontent}} \\
\hline
\multicolumn{4}{|l|}{contentcontentcontentcontentcontentcontentcontentcontent} \\
\hline
\multicolumn{4}{|c|}{\textbf{\cellcolor{gray!20}contentcontent}} \\
\hline
\textbf{contentcontent:}& \footnotesize{contentcontent}& \textbf{contentcontent:} & \footnotesize{contentcontent}\\
\hline
\multicolumn{4}{|c|}{\textbf{\cellcolor{gray!20}contentcontent}} \\
\hline
\textbf{contentcontent:}& \footnotesize{contentcontent}& \textbf{contentcontent:} & \footnotesize{contentcontent}\\
\hline
\textbf{contentcontent:}& \footnotesize{contentcontent}& \textbf{contentcontent:} & \footnotesize{contentcontent}\\
\hline
\textbf{contentcontent:}& \footnotesize{contentcontent}& \textbf{contentcontent:} & \footnotesize{contentcontent}\\
\hline
\multicolumn{4}{|c|}{\textbf{\cellcolor{gray!20}contentcontent}} \\
\hline
\textbf{contentcontent:}& \footnotesize{contentcontent}& \textbf{contentcontent:} & \footnotesize{contentcontent}\\
\hline
\textbf{contentcontent:}& \multicolumn{3}{c|}{contentcontent}\\
\hline
\textbf{contentcontent:}& \footnotesize{contentcontent}& \textbf{contentcontent:} & \footnotesize{contentcontent}\\
\hline
\multicolumn{4}{|c|}{\textbf{\cellcolor{gray!20}contentcontent}} \\
\hline
\textbf{contentcontent 1:}& \multicolumn{3}{c|}{contentcontent}\\
\hline
\textbf{contentcontent 3:}& \multicolumn{3}{c|}{contentcontent}\\
\hline
\textbf{contentcontent 2:}& \multicolumn{3}{c|}{contentcontent}\\
\hline
\multicolumn{4}{|c|}{\textbf{\cellcolor{gray!20}contentcontent}} \\
\hline
\multicolumn{4}{|l|}{contentcontent} \\
\hline
\multicolumn{4}{|l|}{\textbf{\cellcolor{gray!20}contentcontent}} \\
\hline
\end{tabularx}

\end{document} 

输出:

在此处输入图片描述


为什么你的代码不起作用?因为你的宽度tabularx是,而你的大于。一列跨越整个的可用空间是,所以如果你想使用一列,它不能大于该长度。如果你想使用具有最大长度的列,请使用14cm\linewidthptabularx14cm-2\tabcolsep-2\arrayrulewidthppp{\dimexpr14cm-2\tabcolsep-2\arrayrulewidth\relax}


编辑(回应 OP 的评论)

如果您希望在表格单元格中自动换行,则无法在cl列中完成此操作。

此时,我建议你定义

\newcolumntype{C}[1]{>{\centering\arraybackslash}p{\dimexpr#1-2\tabcolsep-2\arrayrulewidth}}
\newcolumntype{P}[1]{>{\raggedright\arraybackslash}p{\dimexpr#1-2\tabcolsep-2\arrayrulewidth}}

并将所有c列替换为C{<width>}列,将所有l列替换为P{<width>}列,如下例所示:

\documentclass{article}
\usepackage[margin=3cm]{geometry}
\usepackage{tabularx,colortbl,xcolor}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{\dimexpr#1-2\tabcolsep-2\arrayrulewidth}}
\newcolumntype{P}[1]{>{\raggedright\arraybackslash}p{\dimexpr#1-2\tabcolsep-2\arrayrulewidth}}

\begin{document}

\begin{tabularx}{14cm}{|X|X|X|X|}
\hline
\multicolumn{4}{|C{14cm}|}{\textbf{\cellcolor{gray!20}contentcontent}} \\
\hline
\multicolumn{4}{|P{14cm}|}{contentcontentcontentcontentcontentcontentcontentcontent} \\
\hline
\multicolumn{4}{|C{14cm}|}{\textbf{\cellcolor{gray!20}contentcontent}} \\
\hline
\textbf{contentcontent:}& \footnotesize{contentcontent}& \textbf{contentcontent:} & \footnotesize{contentcontent}\\
\hline
\multicolumn{4}{|C{14cm}|}{\textbf{\cellcolor{gray!20}contentcontent}} \\
\hline
\textbf{contentcontent:}& \footnotesize{contentcontent}& \textbf{contentcontent:} & \footnotesize{contentcontent}\\
\hline
\textbf{contentcontent:}& \footnotesize{contentcontent}& \textbf{contentcontent:} & \footnotesize{contentcontent}\\
\hline
\textbf{contentcontent:}& \footnotesize{contentcontent}& \textbf{contentcontent:} & \footnotesize{contentcontent}\\
\hline
\multicolumn{4}{|C{14cm}|}{\textbf{\cellcolor{gray!20}contentcontent}} \\
\hline
\textbf{contentcontent:}& \footnotesize{contentcontent}& \textbf{contentcontent:} & \footnotesize{contentcontent}\\
\hline
\textbf{contentcontent:}& \multicolumn{3}{C{10.5cm}|}{contentcontent}\\
\hline
\textbf{contentcontent:}& \footnotesize{contentcontent}& \textbf{contentcontent:} & \footnotesize{contentcontent}\\
\hline
\multicolumn{4}{|C{14cm}|}{\textbf{\cellcolor{gray!20}contentcontent}} \\
\hline
\textbf{contentcontent 1:}& \multicolumn{3}{C{10.5cm}|}{contentcontent}\\
\hline
\textbf{contentcontent 3:}& \multicolumn{3}{C{10.5cm}|}{contentcontent}\\
\hline
\textbf{contentcontent 2:}& \multicolumn{3}{C{10.5cm}|}{contentcontent}\\
\hline
\multicolumn{4}{|C{14cm}|}{\textbf{\cellcolor{gray!20}contentcontent}} \\
\hline
\multicolumn{4}{|P{14cm}|}{contentcontent} \\
\hline
\multicolumn{4}{|P{14cm}|}{\textbf{\cellcolor{gray!20}contentcontent}} \\
\hline
\end{tabularx}

\end{document} 

相关内容