对于以下内容,为什么 tabularx 决定打破第二列单元格条目而不是减少列的间距?
此外,我怎样才能使\rowstyle{\bfseries}
任何单元格内容(无论是文本还是数学)加粗?
\documentclass[a4paper]{article}
\usepackage{booktabs,tabularx,mathtools,siunitx,ragged2e}
\begin{document}
\newcolumntype{b}{>{\RaggedRight\hsize=1.5\hsize$}X<{$}}
\newcommand{\heading}[1]{\multicolumn{1}{c}{#1}}
\newcolumntype{m}{>{\RaggedLeft\hsize=0.5\hsize}X}
\newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}#1\ignorespaces}
\begin{tabularx}{\linewidth}{@{}bm*{8}{%
S[table-format=2.2,round-precision=2,round-mode=places,
round-integer-to-decimal=true]%
}@{}}
\toprule
\rowstyle{\bfseries}
& $\delta$ [deg] & \heading{5} & \heading{10} & \heading{15} & \heading{20} & \heading{25} & \heading{30} & \heading{35} & \heading{40} \\
\midrule
\Gamma = x^2 & $\beta$ [deg] & 1 & 1 & 1 & 18 & 21 & 46 & 72 & 63 \\
\bottomrule
\end{tabularx}
\end{document}
答案1
tabularx
确实完全不适合数字数据表。
要回答您的问题,重要的是要意识到tabularx
永远不会调整列间空间(tabular*
会这样做)并且永远不会查看表格中任何单元格的内容。它只是将每X
列变成一p{...}
列,选择要使用的值,...
以便表格最终达到指定的总宽度。因此,唯一tabularx
控制的是目标宽度换行在单元格内以及数值表中没有换行。
如果您想要调整列间空间,并且不换行,那么这tabular*
就是您想要的:
\documentclass[a4paper]{article}
\usepackage{booktabs,tabularx,mathtools,siunitx,ragged2e}
\begin{document}
\newcolumntype{b}{>{\RaggedRight\hsize=1.5\hsize$}X<{$}}
\newcommand{\heading}[1]{\multicolumn{1}{c}{#1}}
\newcolumntype{m}{>{\RaggedLeft\hsize=0.5\hsize}X}
\newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}#1\ignorespaces}
\noindent
\begin{tabular*}{\linewidth}{
@{\extracolsep{0pt plus 5pt minus 3pt}}
>{$}l<{$}
l
*{8}{%
S[table-format=2.2,round-precision=2,round-mode=places,
round-integer-to-decimal=true]%
}@{}}
\toprule
& $\delta$ [deg] & \heading{5} & \heading{10} & \heading{15} & \heading{20} & \heading{25} & \heading{30} & \heading{35} & \heading{40} \\
\midrule
\Gamma = x^2 & $\beta$ [deg] & 1 & 1 & 1 & 18 & 21 & 46 & 72 & 63 \\
\bottomrule
\end{tabular*}
\end{document}
答案2
我会tabular*
像大卫那样使用,但是方式不同。
\documentclass[a4paper]{article}
\usepackage{booktabs,mathtools,siunitx}
\begin{document}
\begin{table}[htp]
% initialization for this table
\newcommand{\heading}[1]{\multicolumn{1}{c}{\bfseries\boldmath#1}}
\setlength{\tabcolsep}{0pt} % let TeX compute
\sisetup{
table-format=2.2,
round-precision=2,
round-mode=places,
round-integer-to-decimal=true,
}
\begin{tabular*}{\columnwidth}{@{\extracolsep{\fill}} *{2}{l} *{8}{S} }
\toprule
& \heading{$\delta$ [deg]}
& \heading{5} & \heading{10} & \heading{15} & \heading{20}
& \heading{25} & \heading{30} & \heading{35} & \heading{40} \\
\midrule
$\Gamma = x^2$ & $\beta$ [deg] & 1 & 1 & 1 & 18 & 21 & 46 & 72 & 63 \\
\bottomrule
\end{tabular*}
\end{table}
\end{document}