booktabs 表中的 \multicolumn

booktabs 表中的 \multicolumn

我在使用表格\multicolumnbooktabs包时遇到了一些问题。

这是我所做的:

\documentclass[12pt]{article}
\usepackage[margin=1.8cm]{geometry}
\geometry{a4paper}
\usepackage[parfill]{parskip}
\usepackage{booktabs}
\usepackage{multirow}

\begin{document}

\begin{center}

  \begin{tabular}{*{7}{c}}
    \toprule
    & \multicolumn{2}{c}{\textsc{sg}} &
\multicolumn{2}{c}{\textsc{du}} & \multicolumn{2}{c}{\textsc{pl}} \\
    \cmidrule(lr){2-3}
    \cmidrule(lr){4-5}
    \cmidrule(lr){6-7}
    & \textsc{m} & \textsc{n} & \textsc{m} & \textsc{n} & \textsc{m} &
\textsc{n} \\
    \midrule
    \textsc{nom} & \textit{s} & \textit{m} \\
    \textsc{acc} & \multicolumn{2}{c}{\textit{m}} \\
    \textsc{ins} & \multicolumn{2}{c}{\textit{-a} $\to$ \textit{ena}} \\
    \multirow{2}{*}{\textsc{dat}} & \multicolumn{2}{c}{\textit{aya}} \\
    & \multicolumn{2}{c}{\textit{-a} $\to$ \textit{\={a}ya}} \\
    \textsc{abl} & \multicolumn{2}{c}{\textit{t} (\textit{-a} $\to$ \textit{\={a}})} \\
    \textsc{gen} & \multicolumn{2}{c}{\textit{sya}} \\
    \multirow{2}{*}{\textsc{loc}} & \multicolumn{2}{c}{\textit{i}} \\
    & \multicolumn{2}{c}{\textit{-a} $\to$ \textit{e}} \\
    \bottomrule
  \end{tabular}

\end{center}

\end{document}

在此处输入图片描述

我认为很明显,我使用 的地方水平居中是错误的\multicolumn。SG 下面的 M 和 N 与 SG 的距离不等,在 ACC 行中似乎很好地位于 SG 下方的中心,但与s上面的 NOM 行。

答案1

表格中的内容仍然完全居中,但是,它们的宽度会根据\multicolumn{2}{c}{...单元格的宽度而变化。如果它比“正常”列宽,则第二列会添加额外的宽度。如果在表格中添加垂直线,就会看到这一点。

可能的解决方案之一如下。假设多列单元格宽度不大于6em。那么您可以使用以下方法解决问题:

\documentclass[12pt]{article}
    \usepackage[a4paper,margin=1.8cm]{geometry}
    \usepackage[parfill]{parskip}
    \usepackage{array,booktabs,multirow}

\begin{document}
\begin{center}
  \begin{tabular}{>{\scshape}r*{6}{>{\centering\arraybackslash}p{3em}}}
    \toprule
    & \multicolumn{2}{c}{\textsc{sg}} &
\multicolumn{2}{c}{\textsc{du}} & \multicolumn{2}{c}{\textsc{pl}} \\
    \cmidrule(lr){2-3}
    \cmidrule(lr){4-5}
    \cmidrule(lr){6-7}
    & \textsc{m} & \textsc{n} & \textsc{m} & \textsc{n} & \textsc{m} &
\textsc{n} \\
    \midrule
nom & \textit{s} & \textit{m} \\
acc & \multicolumn{2}{c}{\textit{m}} \\
ins & \multicolumn{2}{c}{\textit{-a} $\to$ \textit{ena}} \\
\multirow{2}{*}{dat} 
    & \multicolumn{2}{c}{\textit{aya}} \\
    & \multicolumn{2}{c}{\textit{-a} $\to$ \textit{\={a}ya}} \\
abl & \multicolumn{2}{c}{\textit{t} (\textit{-a} $\to$ \textit{\={a}})} \\
gen & \multicolumn{2}{c}{\textit{sya}} \\
\multirow{2}{*}{loc} 
    & \multicolumn{2}{c}{\textit{i}} \\
    & \multicolumn{2}{c}{\textit{-a} $\to$ \textit{e}} \\
    \bottomrule
    \end{tabular}
\end{center}
\end{document}

我稍微优化了您的代码(参见第一列中的区别)。该代码可以运行,我添加了包array

在此处输入图片描述

相关内容