我正在尝试创建一个具有两个多行单元格的 4x2 表,它们分别连接单元格(1,2)
和(2,2)
和(1,3)
和(2,3)
。
第一个多行单元格应包含 2 行,第二个多行单元格应包含 3 行:
+---+---+---+---+
| A | B | D | G |
+---+ | E +---+
| H | C | F | I |
+---+---+---+---+
这是我的第一次尝试:
\begin{tabular}{||c|c|c|c||}\hline\hline
A & \multirow{2}{*}{B \\ C} & \multirow{2}{*}{D \\ E \\ F} & G \\ \cline{1-1}\cline{4-4}
H & & & I \\ \hline\hline
\end{tabular}
我得到的错误(在线multirow
)是
! LaTeX Error: Something's wrong--perhaps a missing \item.
并且多行内的换行符(\\
)将被忽略。
我也尝试放入tabular
(multirow
按照如何在表格单元格内添加强制换行符):
\begin{tabular}{||c|c|c|c||}\hline\hline
A & \multirow{2}{*}{\begin{tabular}{c} B \\ C \end{tabular}} &
\multirow{2}{*}{\begin{tabular}{c} D \\ E \\ F \end{tabular}} & G
\\ \cline{1-1}\cline{4-4}
H & & & I \\ \hline\hline
\end{tabular}
并且没有错误,但F
被放置以下最后两条水平线(即表格中的两行无法容纳第二个单元格中的三行multirow
):
+---+---+---+---+
| A | B | D | G |
+---+ | +---+
| H | C | E | I |
+---+---+---+---+
F
第三次尝试是传递实际宽度cm
而不是{*}
。multirow
这在我的情况下是可行的(因为我将多行单元格分成的块具有相同的宽度),但第三行(F
)仍然在表格下方 - 即,表格高度没有增加以容纳多行单元格。
所以,我的问题是:
- 我怎样才能告诉多行在哪里换行?
- 我如何
tabular
为多行单元格腾出空间?
答案1
hhline
我提出了这个解决方案。为了更好地相交双线,我加载了和stackengine
。多行单元格所需的间距可以通过cellspace
包获得,该包定义了一个最小带有以字母 为前缀的限定符的列的单元格的垂直填充S
。
如果您确实需要换行符,则包中\multirow
定义makecell
了一个\multirowcell
允许换行的命令:
\documentclass{article}
\usepackage{array}
\usepackage{multirow}
\usepackage{cellspace}
\setlength\cellspacetoplimit{5pt}
\setlength\cellspacebottomlimit{5pt}
\usepackage{hhline}
\usepackage{stackengine}
\setstackEOL{\\}
\begin{document}
\begin{tabular}{||Sc|c|c|c||}
\hhline{|t:====:t|}
A &
B & \multirow{2}{*} {\setstackgap{L}{2.05ex}\Centerstack{D\\E\\F}}
& G \\ %
\hhline{||-|~|~|-||}
H & C & & I \\
\hhline{|b:====:b|}
\end{tabular}
\end{document}