tabularx 何时决定中断单元格条目而不是减少列分隔?

tabularx 何时决定中断单元格条目而不是减少列分隔?

对于以下内容,为什么 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}

在此处输入图片描述

相关内容