![使用 \multirow 的不连续线](https://linux22.com/image/353797/%E4%BD%BF%E7%94%A8%20%5Cmultirow%20%E7%9A%84%E4%B8%8D%E8%BF%9E%E7%BB%AD%E7%BA%BF.png)
我一直很难编辑表格,所以我开始使用网站在 LaTeX 中生成表格。但是,每当我使用多行和边框时,事情就会变得有点棘手。我的列上出现了一条不连续的线。
作为测试,我使用这个:
\begin{table}[]
\centering
\caption{My caption}
\label{my-label}
\begin{tabular}{@{}c|cc@{}}
Test & a & b \\ \midrule
\multirow{2}{*}{x} & 1 & 2 \\ \cmidrule(l){2-3}
& 3 & 4
\end{tabular}
\end{table}
结果如下:
我正在将 TexPortable 与 MiKTeX 2.9.6210 和 Texmaker 4.5 一起使用。
答案1
这与 中的水平线周围的填充有关booktabs
(长度\aboverulesep
和\belowrulesep
)。一般来说,不应使用垂直线booktabs
(此原则有例外)。解决方法是将它们设置为 0,并使用 中的工具将它们替换为在单元格顶部和底部添加的或多或少相等的长度makecell
。
\documentclass{article}
\usepackage{booktabs, multirow, array, makecell, caption}
\begin{document}
\begin{table}[!htb]
\centering
\setlength\aboverulesep{0pt}\setlength\belowrulesep{0pt}
\setcellgapes{3pt}\makegapedcells
\caption{My caption}
\label{my-label}
\begin{tabular}{@{}c|cc@{}}
Test & a & b \\ \midrule
\multirow{2}{*}{x} & 1 & 2 \\ \addlinespace[-0.03em]\cmidrule(l){2-3}
& 3 & 4
\end{tabular}
\end{table}
\end{document}
答案2
如果您希望垂直线与的水平规则兼容booktabs
,则应{NiceTabular}
使用nicematrix
。
\documentclass{article}
\usepackage{booktabs, caption, nicematrix}
\begin{document}
\begin{table}[!htb]
\centering
\caption{My caption}
\label{my-label}
\begin{NiceTabular}{@{}c|cc@{}}[cell-space-limits=3pt]
Test & a & b \\ \midrule
\Block{2-1}{x} & 1 & 2 \\ \cmidrule(l){2-3}
& 3 & 4
\end{NiceTabular}
\end{table}
\end{document}