Рассмотрим следующий пример:
\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}