Вертикальное центрирование текста в многострочной таблице при использовании \cmidrule

Вертикальное центрирование текста в многострочной таблице при использовании \cmidrule

Рассмотрим следующий пример:

\documentclass{article}

\usepackage{siunitx}
\DeclareSIUnit[mode = text]\kroner{kr.}

\usepackage{booktabs,multirow}
\newcommand*\mr[2]{\multirow{#1}{*}{#2}}
\newcommand*\mc[2]{\multicolumn{#1}{c}{#2}}
\newcommand*\specialcell[2][c]{%
  \begin{tabular}[#1]{@{}c@{}}#2\end{tabular}}


\begin{document}

\begin{tabular}{
  l
  S[table-format = 3]
  S[table-format = 2.2]
}
 \toprule
    \mr{2}{\specialcell{Dansk\\ honning}}
  & \mc{2}{$1$~b{\ae}ger}       \\
    \cmidrule{2-3}               
  & \mc{1}{Masse~(\si{\g})}
  & \mc{1}{Pris~(\si{\kroner})} \\
 \midrule
    Almindelig
  & 450 & 14.95 \\
 \bottomrule
\end{tabular}

\end{document}

выход

Как мне вертикально отцентрировать Dansk honningотносительно первых двух строк?

Я пришел к выводу, что проблема возникает из-за того, что вокруг добавляется некоторое пространство \cmidrule.

решение1

Вы можете настроить размещение многострочного контента примерно на -(\aboverulesep + \belowrulesep)/2. -0.4exкажется, все в порядке. Кроме того, я заменил вашу \multirow{2}{*}{\specialcell{…}}команду на \multirowcellкоманду изmakecell, который делает то же самое и может быть дополнительно настроен (шрифт, горизонтальное и вертикальное выравнивание и т. д.):

\documentclass{article}

\usepackage{siunitx}
\DeclareSIUnit[mode = text]\kroner{kr.}

\usepackage{booktabs,multirow}
\newcommand*\mc[2]{\multicolumn{#1}{c}{#2}}
\usepackage{makecell}

\begin{document}

\begin{tabular}{
  l
  S[table-format = 3]
  S[table-format = 2.2]
}
 \toprule
    \multirowcell{2}[-0.4ex]{Dansk\\honning}
  & \mc{2}{$1$~b{\ae}ger} \\
    \cmidrule{2-3}
  & \mc{1}{Masse~(\si{\g})}
  & \mc{1}{Pris~(\si{\kroner})} \\
 \midrule
    Almindelig
  & 450 & 14.95 \\
 \bottomrule
\end{tabular}

\end{document} 

введите описание изображения здесь

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