我使用以下代码创建了一个表:
\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
\linewidth
p
tabularx
14cm-2\tabcolsep-2\arrayrulewidth
p
p
p{\dimexpr14cm-2\tabcolsep-2\arrayrulewidth\relax}
编辑(回应 OP 的评论)
如果您希望在表格单元格中自动换行,则无法在c
和l
列中完成此操作。
此时,我建议你定义
\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}