Несколько столбцов в таблице не отцентрированы

Несколько столбцов в таблице не отцентрированы

У меня возникли некоторые проблемы с использованием \multicolumn. Как видно на скриншоте ниже, слова «Classical» и «Squared» правильно выровнены по центру столбца. Однако слово «Exponential» не отцентрировано должным образом.

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

Код:

\begin{table}[]
\setlength{\tabcolsep}{12pt}
\centering
\begin{tabular}{l c c c c c c}
\hline\hline
\\\\[-4.3\medskipamount]
 & \multicolumn{2}{c}{Classic} & \multicolumn{2}{c}{Squared} & \multicolumn{2}{c}{Exponential} \\
\textit{a} & 70 & 30 & 70 & 30 & 70 & 30 \\ [0.5ex]
\hline
\\\\[-3.9\medskipamount]
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
[1ex] \hline
\end{tabular}
\end{table}

Я бы предпочел продолжить использовать табличный пакет в решении. Спасибо заранее!

решение1

Причина в том, что это слово слишком длинное. Конечно, вы можете увеличить значение \tabcolsep. Другое решение использует \makebox[0pt], что позволяет слову слегка перекрывать пространство между столбцами, симметрично.

Кроме этого, я рекомендую использовать линейки из booktabs, которые имеют переменную толщину, и добавить вертикальный отступ вокруг линеек. Это избавит вас от необходимости вручную корректировать интервалы:

\documentclass{article}
\usepackage{booktabs} 

\begin{document}

\begin{table}[]
\setlength{\tabcolsep}{12pt}
\centering
\begin{tabular}{l c c c c c c}
\toprule\midrule
 & \multicolumn{2}{c}{Classic} & \multicolumn{2}{c}{Squared} & \multicolumn{2}{c}{\makebox[0pt]{Exponential}} \\
\textit{a} & 70 & 30 & 70 & 30 & 70 & 30 \\ [0.5ex]
\midrule
\\\\[-3.9\medskipamount]
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
\bottomrule
\end{tabular}
\end{table}

\end{document} 

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

решение2

Я бы использовал Sтип столбца из siunitxпакета, определил Sширину столбца и добавил \cmidruleниже многостолбцовые ячейки:

\documentclass[12pt,a4paper]{article}
\usepackage{booktabs}
\usepackage{siunitx}

\begin{document}
    \begin{table}
\centering
\begin{tabular}{l *{6}{S[table-format=2,
                         table-column-width=2em]}
                }
    \toprule
            & \multicolumn{2}{c}{Classic} 
                            & \multicolumn{2}{c}{Squared} 
                                            & \multicolumn{2}{c}{Exponential} \\
    \cmidrule{2-3}\cmidrule(lr){4-5}\cmidrule{6-7}
\textit{a}  & 70    & 30    & 70    & 30    & 70    & 30 \\
    \midrule
S100        & 91    & 31    & 71    & 01    & 11    & 41 \\
S100        & 91    & 31    & 71    & 01    & 21    & 41 \\
S100        & 91    & 31    & 71    & 01    & 21    & 41 \\ 
    \bottomrule
\end{tabular}
    \end{table}
\end{document}

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

решение3

Проблема с использованием \makebox[0pt]{}заключается в том, что, как сказал Бернард, длинный заголовок будет перекрывать межколоночное расстояние, что может показаться довольно некрасивым. Чтобы избежать этого, сумма ширины двух числовых столбцов должна быть как минимум равна ширине длинного заголовка. Это можно точно рассчитать и определить в новом типе столбца Cследующим образом.

\documentclass[12pt,a4paper]{article}
\usepackage{booktabs, array}    
\begin{document}

\begin{table}
\setlength{\tabcolsep}{12pt}
\newlength\wexp
\settowidth{\wexp}{Exponential}
\newcolumntype{C}{>{\centering\arraybackslash}p{\dimexpr.5\wexp-\tabcolsep}}

\centering
\begin{tabular}{l c c c c C C}
\toprule
           & \multicolumn{2}{c}{Classic} & \multicolumn{2}{c}{Squared} & \multicolumn{2}{c}{Exponential} \\
\textit{a} & 70 & 30 & 70 & 30 & 70 & 30 \\ \midrule
S100       & 91 & 31 & 71 & 01 & 11 & 41 \\
S100       & 91 & 31 & 71 & 01 & 21 & 41 \\
S100       & 91 & 31 & 71 & 01 & 21 & 41 \\ \bottomrule
\end{tabular}
\end{table}

\end{document}

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

решение4

Я бы использовал:

  1. Новый w{<align>}{<wd>}столбец для фиксации ширины всех столбцов
  2. \setlength{\tabcolsep}{0.5em}(дает 1emпространство между столбцами)
  3. Подстриженныйcmidrule
  4. Нет боковых подшипников ( @{})
  5. Шрифт в заголовках на одну ступень меньше
  6. booktab-правила иaddlinespace[<wd>]

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

И МВЭ:

\documentclass{article}
\usepackage{booktabs, array, caption} 

\begin{document}

\begin{table}[ht]
\caption{A table with figures\label{tab:atable}}
\setlength{\tabcolsep}{0.5em}
\centering
\begin{tabular}{@{}w{l}{4em}*{6}{w{c}{2em}}@{}}
\toprule
 & \multicolumn{2}{c}{\small Classic} & \multicolumn{2}{c}{\small Squared} & \multicolumn{2}{c@{}}{\makebox[0pt]{\small Exponential}} \\\cmidrule(l{0.75em}r{0.75em}){2-3}\cmidrule(l{0.75em}r{0.75em}){4-5}\cmidrule(l{0.65em}){6-7}
\textit{a} & 70 & 30 & 70 & 30 & 70 & 30 \\ 
\midrule\addlinespace[1ex]
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
\bottomrule
\end{tabular}
\end{table}

\end{document}

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