将大列标题置于 3 列上方居中

将大列标题置于 3 列上方居中

经过几个小时的搜索,我还是无法解决我的问题。我有一张大表格,其中平均值和标准差分为三列。我需要将下面的三列放在 +- 的中心。

我尝试使用 S 表,但当我使用 S 类型表时,我收到一条错误消息,其中列标题占两行。任何其他简单的解决方案都保留平均值 +- sd 的 3 列形式。

以下是该表的简短摘录。

感谢您的帮助。 在此处输入图片描述

\begin{table}[]
\begin{tabular}{|l|r|c|l|}
\textit{Acides gras (\%)} & \multicolumn{3}{c}{\begin{tabular}[c]{@{}c@{}}My long three column and two lines header to be centered \\ (n = 91)\end{tabular}} \\
\textit{Saturés}          &                               &                             &                               \\
14:0                      & 2.6                           & ±                           & 0.7                          
\end{tabular}
\end{table}

! 编辑

我也是,谢谢!现在我的问题是我需要一些行以粗体显示,而当我在 tblr 中使用 bfseries 时,只有第一列实际上是粗体的。

    \begin{table}
\sisetup{mode=text,           % <--
         separate-uncertainty % <--
        }
    \centering
\begin{tblr}{colspec = { X[l] *{6}{X[c, si={table-format=2.1(2)}]} },  % < ---
             colsep = 1pt,
             hspan  = minimal,
             row{1} = {guard},
             row{3} = {font=\bfseries}
            }
    \toprule
Acides gras (\%) 
        &   \SetCell[c=3]{c}    {My long three column and two lines header to be centered\\  ($n = 91$)}
            &   &   &   \SetCell[c=3]{c} {A shorter title\\ ($n = 91$)}
                        &   &               \\
        \cmidrule[lr]{2-4}
        \cmidrule[l]{5-7}
Saturés & & & & & & \\
14:0 & 2.6(0.7) & 1.8(0.7) & 2.2(0.6) & 6.9(0.7) & 4.3(1.7) & 3(0.8) \\
\end{tblr}
    \end{table}   

在此处输入图片描述

答案1

  • 我怀疑你的表格中包含不确定的值。这应该借助siunitx包来编写,而不是你自己尝试编写。
  • 在使用tabularray包时建议严格使用其语法(不\newline,每个多列单元格都应遵循跨列的所有符号)。
  • 下面的 MWE 尝试重现第二张图中所示的表格的一部分:
\documentclass{article}
\usepackage{tabularray}
\UseTblrLibrary{booktabs, siunitx}

\begin{document}
    \begin{table}
\sisetup{mode=text,           % <--
         separate-uncertainty % <--
        }
    \centering
\begin{tblr}{colspec = { X[l] *{6}{X[c, si={table-format=2.1(2)}]} },  % < ---
             colsep = 1pt,
             hspan  = minimal,
             row{1} = {guard}  % <--
            }
    \toprule
Acides gras (\%) 
        &   \SetCell[c=3]{c}    {My long three column and two lines header to be centered\\  ($n = 91$)}
            &   &   &   \SetCell[c=3]{c} {A shorter title\\ ($n = 91$)}
                        &   &               \\
        \cmidrule[lr]{2-4}
        \cmidrule[l]{5-7}
\textit{Saturés} 
        &   &   &   &   &   &               \\
14:0    & 2.6(0.7)  
            & 1.8(0.7)
                & 2.2(0.6)
                    & 6.9(0.7)
                        & 4.3(1.7)
                            & 3.0(0.8)      \\
16:0    & 6.6(1.6)
            & 5.4(2.0)
                & 6.9(1.7)
                    & 12.9(1.8)
                        & 12.9(5.6)
                            & 10.6(3.2)      \\
    \bottomrule
\end{tblr}
    \end{table}   
\end{document}

在此处输入图片描述

答案2

tabularray您可以通过使用表格包来避免此问题:

\documentclass{article}

\usepackage{tabularray}

\begin{document}

\begin{table}[htbp]
\begin{tblr}{
  colspec={|X[l]|X[r]|c|X[l]|},
  vlines,
  cell{1}{1}={font=\itshape},
  hspan=minimal
}
Acides gras (\%) Saturés & \SetCell[c=3]{halign=c} My long three column and two lines header to be centered (n = 91) && \\
14:0 & 2.6 & ± & 0.7                          
\end{tblr}
\end{table}

\end{document}

在此处输入图片描述

答案3

通过预先计算所需的宽度,可以使三列相等,假设您希望三列具有相同的宽度。

我还加入了我的(美学)版本。

\documentclass{article}
\begin{document}

\begin{table}[htp]
\sbox0{\begin{tabular}[c]{@{}c@{}}My long three column and
  two lines header to be centered \\ (n = 91) \end{tabular}}% measure width
\setlength{\dimen0}{\dimexpr \wd0-4\tabcolsep}% compute column width
\divide\dimen0 by 3
\begin{tabular}{|l|r|c|l|}
\textit{Acides gras (\%)} & \multicolumn{3}{c|}{\usebox0} \\
\textit{Saturés}          & \hspace{\dimen0} & \hspace{\dimen0} & \hspace{\dimen0} \\
14:0                      & 2.6              & ±                & 0.7                          
\end{tabular}
\end{table}

\begin{table}[htp]
\sbox0{My long three column and two lines header to be centered}% measure width
\sbox1{ $\pm$ }% measure width of @ divider
\setlength{\dimen0}{\dimexpr 0.5\wd0-0.5\wd1}% compute column width
\begin{tabular}{|l|r@{\usebox1}l|}
\textit{Acides gras (\%)} & \multicolumn{2}{c|}{\usebox0} \\
\textit{Saturés}          & \multicolumn{2}{c|}{(n = 91)} \\
14:0                      & \makebox[\dimen0][r]{2.6} & \makebox[\dimen0][l]{0.7}% only need \makebox in one row
\end{tabular}
\end{table}

\end{document}

演示

相关内容