Прерывистая линия с использованием \multirow

Прерывистая линия с использованием \multirow

Я испытывал трудности с редактированием таблиц, поэтому я начал использовать веб-сайт для генерации таблиц в 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} 

Вывод кода выше

Связанный контент