siunitx 表中的括号

siunitx 表中的括号

我正在尝试使用 LaTeX 格式化表格siunitx。以下是与我的数据类似的 MWE:

\documentclass{article}
\usepackage{booktabs}
\usepackage{siunitx} 
\usepackage{graphicx}
\begin{document}
\begin{table}
\centering
\resizebox{\linewidth}{!}{
\begin{tabular}[t]{l
                   r
                   r
                   S[round-mode = places, round-precision = 3, print-zero-integer=false, table-format = <0.3, table-space-text-post = {$^{***}$}]
                   r
                   r
                   S[round-mode = places, round-precision = 3, print-zero-integer=false, table-format = <0.3, table-space-text-post = {$^{***}$}]
                   r
                   r
                   S[round-mode = places, round-precision = 3, print-zero-integer=false, table-format = <0.3, table-space-text-post = {$^{***}$}]}
\toprule
\multicolumn{1}{c}{ } & \multicolumn{3}{c}{Variable A} & \multicolumn{3}{c}{Variable B} & \multicolumn{3}{c}{Variable C} \\
\cmidrule(l{3pt}r{3pt}){2-4} \cmidrule(l{3pt}r{3pt}){5-7} \cmidrule(l{3pt}r{3pt}){8-10}
\em{} & \em{B (SE)} & \em{$\beta$ (SE)} & \em{p} & \em{B (SE)} & \em{$\beta$ (SE)} & \em{p} & \em{B (SE)} & \em{$\beta$ (SE)} & \em{p}\\
\midrule
Intercept & 4.18 (17.53) & 0.00 (0.00) & <.001{$^{***}$} & 0.05 (0.14) & 0.00 (0.00) & .706 & 4.17 (0.91) & 0.00 (0.00) & <.001{$^{***}$}\\
Predictor A & -0.01 (0.13) & -0.01 (0.07) & .914 & 0.02 (0.03) & 0.05 (0.07) & .495 & -0.13 (0.22) & -0.04 (0.07) & .564\\
Predictor B & -0.13 (0.12) & -0.07 (0.06) & .285 & 0.07 (0.03) & 0.13 (0.06) & .038{$^{*}$} & -0.21 (0.21) & -0.06 (0.06) & .315\\
\midrule
Num.Obs. & 432 &  &  & 845 &  &  & 155 &  & \\
R2 & 0.20 &  &  & 0.11 &  &  & 0.54 &  & \\
R2 Adj. & 0.19 &  &  & 0.09 &  &  & 0.52 &  & \\
F & 5.28 &  &  & 4.47 &  &  & 8.42 &  & \\
\bottomrule
\multicolumn{10}{l}{\rule{0pt}{1em}{$^{*}$} p $<$ .05, {$^{**}$} p $<$ .01, {$^{***}$} p $<$ .001}\\
\end{tabular}}
\end{table}
\end{document}

我的目标是根据小数点对齐所有值,但我对括号中的\beta列。如果可能的话,我希望避免将括号内的值拆分到额外的列中。

到目前为止,我已经尝试过,S[table-format=1.2 (1.2)]但没有按预期工作(即括号和前面的数字之间没有空格,没有小数点)。

任何帮助是极大的赞赏!

答案1

当您设置uncertainty-mode为时fullsiunitx将按原样打印不确定性。为了在数量和不确定性之间插入间隙,您可以重新格式化output-open-uncertainty

您不应该调整表格大小。而是尝试减小字体大小。在我看来,如果您必须将字体设置为低于\footnotesize,则可能意味着您的表格需要重新设计。我还将您的表格分成两部分,以应用两种略有不同的格式;Num. Obs.是一个整数,不应格式化;因此,我将所有整数括在两个括号内{...}

总的来说,整个表格都可以重新排列。无论如何,下半部分看起来像是一个单独的表格。如果你将它从上半部分中排除,那么你可以将组移动Variable X到单独的行Intercept,并为每个组重复Predictor A、 、 和 n Predictor B。这样,你甚至可以水平放置表格。目前,我不得不使用sidewaystable并垂直渲染表格以使其适合页面。

在此处输入图片描述

\documentclass{article}
\usepackage{booktabs}
\usepackage{siunitx} 
\usepackage{rotating,graphicx}

\sisetup{
  round-mode = places,
  round-precision = 2,
  table-format = -1.3(1),
  uncertainty-mode = full,
  output-open-uncertainty = {\,(},
  retain-zero-uncertainty = false,
  print-zero-integer = true,
  table-column-width=1.9cm,
}


\begin{document}
\begin{sidewaystable}
  \setlength{\tabcolsep}{0pt}
  \footnotesize
  \centering
  \caption{Statistics}
  \begin{tabular}[t]{
    @{\;}
    p{2cm} *3{SSS[table-format=<0.3, table-space-text-post={$^{***}$}, round-precision=3, table-column-width=1.4cm]}
    @{\;}
    }
    \toprule
    \multicolumn{1}{c}{ } & \multicolumn{3}{c}{Variable A} & \multicolumn{3}{c}{Variable B} & \multicolumn{3}{c}{Variable C} \\
    \cmidrule(l{3pt}r{3pt}){2-4} \cmidrule(l{3pt}r{3pt}){5-7} \cmidrule(l{3pt}r{3pt}){8-10}
    \em{} & \em{B (SE)} & \em{$\beta$ (SE)} & \em{p} & \em{B (SE)} & \em{$\beta$ (SE)} & \em{p} & \em{B (SE)} & \em{$\beta$ (SE)} & \em{p} \\
    \midrule
    Intercept   &  {4.18\,(17.53)} &  0.00(0.00) & <.001{$^{***}$} & 0.05(0.14) & 0.00(0.00) & .706         &  4.17(0.91) &  0.00(0.00) & <.001{$^{***}$}\\
    Predictor A & -0.01(0.13)      & -0.01(0.07) & .914            & 0.02(0.03) & 0.05(0.07) & .495         & -0.13(0.22) & -0.04(0.07) & .564\\
    Predictor B & -0.13(0.12)      & -0.07(0.06) & .285            & 0.07(0.03) & 0.13(0.06) & .038{$^{*}$} & -0.21(0.21) & -0.06(0.06) & .315\\
    \midrule
  \end{tabular}
  \par\nointerlineskip
  \begin{tabular}{
        @{\;}
        p{2cm} *3{S[table-format=1.2]Sp{1.4cm}}
        @{\;}
        }
        Num.Obs. & {432}  & & & {845}  & & & {155}  & & \\
        R2       & 0.20 & & & 0.11 & & & 0.54 & & \\
        R2 Adj.  & 0.19 & & & 0.09 & & & 0.52 & & \\
        F        & 5.28 & & & 4.47 & & & 8.42 & & \\
        \bottomrule
        \multicolumn{10}{l}{\rule{0pt}{1em}{$^{*}$} p $<$ .05, {$^{**}$} p $<$ .01, {$^{***}$} p $<$ .001}\\
      \end{tabular}
\end{sidewaystable}
\end{document}

编辑以水平呈现表格。

首先,考虑将以下代码片段添加到序言中,以查看表示文本边界的框架

\usepackage{showframe}
\renewcommand*\ShowFrameLinethickness{0.2pt}
\renewcommand*\ShowFrameColor{\color{blue}}

我添加了包含两个版本表格的代码。如果您必须调整其大小,请注意效果会降低,并且比例因子越大,效果越明显。我首先要确保所有内容都最小化,包括字体、列宽、空格等。然后,我将应用resizebox。这是第一个超出左右边距的非缩放版本的表格

在此处输入图片描述

第二个缩放版本适合页面。所有内容都已缩减到最小,因此负面影响resizebox也减少了。

在此处输入图片描述

在代码中,我已将tabulars 移至已保存的框中,以便测量其宽度。如果您决定使用缩放版本,则无需执行此操作,因为您不需要应用负空间。只需将所有内容移回环境即可table

% ... preamble remains the same
% ... add showframe to see text boundaries

\begin{document}
% Saved boxes
\sbox0{%
  \tiny
  \setlength{\tabcolsep}{0pt}%
  \begin{tabular}[t]{%
    p{1.4cm} *3{SSS[table-format=<0.3, table-space-text-post={$^{***}$}, round-precision=3, table-column-width=1.2cm]}
    }
    \toprule
    \multicolumn{1}{c}{ } & \multicolumn{3}{c}{Variable A} & \multicolumn{3}{c}{Variable B} & \multicolumn{3}{c}{Variable C} \\
    \cmidrule(l{3pt}r{3pt}){2-4} \cmidrule(l{3pt}r{3pt}){5-7} \cmidrule(l{3pt}r{3pt}){8-10}
    \em{} & \em{B (SE)} & \em{$\beta$ (SE)} & \em{p} & \em{B (SE)} & \em{$\beta$ (SE)} & \em{p} & \em{B (SE)} & \em{$\beta$ (SE)} & \em{p} \\
    \midrule
    Intercept   &  {4.18\,(17.53)} &  0.00(0.00) & <.001{$^{***}$} & 0.05(0.14) & 0.00(0.00) & .706         &  4.17(0.91) &  0.00(0.00) & <.001{$^{***}$}\\
    Predictor A & -0.01(0.13)      & -0.01(0.07) & .914            & 0.02(0.03) & 0.05(0.07) & .495         & -0.13(0.22) & -0.04(0.07) & .564\\
    Predictor B & -0.13(0.12)      & -0.07(0.06) & .285            & 0.07(0.03) & 0.13(0.06) & .038{$^{*}$} & -0.21(0.21) & -0.06(0.06) & .315\\
    \midrule
  \end{tabular}}%
\sbox2{%
  \tiny
  \setlength{\tabcolsep}{0pt}%
  \begin{tabular}{
    p{1.4cm} *3{S[table-format=1.2]Sp{1.2cm}}
    }
    Num.Obs. & {432}  & & & {845}  & & & {155}  & & \\
    R2       & 0.20 & & & 0.11 & & & 0.54 & & \\
    R2 Adj.  & 0.19 & & & 0.09 & & & 0.52 & & \\
    F        & 5.28 & & & 4.47 & & & 8.42 & & \\
    \bottomrule
    \multicolumn{10}{l}{\rule{0pt}{1em}{$^{*}$} p $<$ .05, {$^{**}$} p $<$ .01, {$^{***}$} p $<$ .001}
  \end{tabular}}
\begin{table}[tbh]
  \caption{Statistics}
  %%% Table version exceeding margines
  % \hspace{0.5\dimexpr\linewidth-\wd0}\usebox0
  % \par\nointerlineskip
  % \hspace{0.5\dimexpr\linewidth-\wd2}\usebox2
  %%% Table version scaled to the page width
  \resizebox{\linewidth}{!}{\usebox0}%
  \par\nointerlineskip
  \resizebox{\linewidth}{!}{\usebox2}
\end{table}
\end{document}

相关内容