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