我有一张桌子:
\begin{tabularx}{\textwidth}{|>{\color{white}}>{\columncolor[gray]{0}}l X | X | X | X |}
\cline{1-2}
Proposal Code & \\
\hline
Short Description & \multicolumn{4}{X}{} \\
\hline
\multirow{2}{*}{Spread} & & & & \\
\cline{2-5}
& & & & \\
\hline
\end{tabularx}
这将创建一个包含四行的表:
- 一排短的,有两个小的单元格。这个很好用。
- 一排长,有一个小单元和一个大单元。
- 两排长格,每排有五个小格,第一格为多排。
第一行工作正常。第二行没有右边框,尽管第二列和第五列在其他地方有边框。这是怎么回事?
答案1
您的代码有两个主要问题:
四个窄列实际上是 类型
X|
,而不是X
;请注意,每个列都与右侧的垂直线相关联。这解释了为什么\multicolumn{4}{X}{}
无法在右边缘绘制垂直线。需要的是
但是,这仍然不太正确,因为这个“宽”列中的任何文本都只占据四列中第一列的宽度。那么,真正需要的是
\multicolumn{4}{>{\hsize=4\hsize}X|}{}
这样,如果您开始为组合单元格提供文本材料,它将占据所有四个底层窄列。
还有一个相对次要的观点:不要把
\multirow{2}{*}{Spread}
在第三行,你应该放置
\multirow{-2}{*}{Spread}
在第四行。
我也会>{\color{white}}>{\columncolor[gray]{0}}
用 来替换>{\color{white}\columncolor[gray]{0}}
。
结果:
\documentclass{article}
\usepackage{tabularx,multirow}
\usepackage[table]{xcolor}
\begin{document}
\noindent % <-- important
\begin{tabularx}{\textwidth}{ | >{\color{white}\columncolor[gray]{0}}l *{4}{X|} }
\cline{1-2}
Proposal Code & \\
\hline
Short Description & \multicolumn{4}{>{\hsize=4\hsize}X|}{bla bla bla bla bla bla bla} \\
\hline
& & & & \\
\hline
\multirow{-2}{*}{Spread} & & & & \\
\hline
\end{tabularx}
\end{document}