使用 siunitx 在 tabularx 中显示低于值的标准偏差

使用 siunitx 在 tabularx 中显示低于值的标准偏差

我试图在表格中显示括号内数值下方的标准偏差。为了对齐数字,我使用 siunitx。由于第一列中有一些较长的描述,因此我使用 tabularx。

目前,我将每个值的标准偏差写在新行中。对于第一列中的简短描述,这样做是可行的。但是,对于较长的描述,标准偏差会显示在值下方。

有人知道我该如何以不同的方式在值下方显示标准偏差,以便正确显示长描述?

下面是一个最小工作示例和输出图像。

为了澄清起见,由于我的文档中有很多表格,我用 \vsig 缩写了值和相关重要性 (a,b,c) 的输入,并用序言中定义的 \sd 缩写了带有相关括号 () 的标准差的输入。

提前谢谢了!

\documentclass[a4paper, captions=tableheading, titlepage,bibliography=totocnumbered]{scrartcl}


% Tabelle 
\usepackage{booktabs}
\usepackage{tabularx}
\usepackage{array}
\usepackage[locale=DE]{siunitx}

% Value and Significance
\newcommand{\vsig}[2]{#1\textsuperscript{ {#2}}}

% Standard deviation
\newcommand{\sd}[1]{{(}#1{)}}


\begin{document}
    

\begin{table}[htbp]
    {\centering \small
    \sisetup{
  input-symbols         = (),
  table-format          = 1.2,
  table-space-text-post = \textsuperscript{ {a}},
  table-space-text-pre  = ~,
  table-align-text-post = false,
  table-align-text-pre  = false,
  table-auto-round} 
    \caption{Caption}


    \begin{tabularx}{\linewidth}{>{\raggedright\arraybackslash}XSSSS}

    \toprule
    & {Cluster (1)} & {Cluster (2)} & {Cluster longname(3)} & {Total} \\
    \midrule
    
Short text & \vsig{4,35}{a} & \vsig{2,74}{b} & \vsig{1,32}{c} & \num{2,65} \\
    
            &   \sd{0,781} & \sd{0,818} & \sd{0,499} & \sd{1,353} \\
    
Very long text very long text very long text & \vsig{4,79}{a} & \vsig{3,75}{b} & \vsig{2,69}{c} & \num{3,65} \\
    
            & \sd{0,629} & \sd{0,957} & \sd{0,943} & \sd{1,188} \\
    
\bottomrule

    \end{tabularx} }
\end{table}


\end{document}

输出

答案1

如果可以假设标题列中的“长文本”不会跨越超过 2 个连续行,那么以下解决方案可能会让您感兴趣。(附言:如果“长文本”跨越超过两行,您可能应该优先缩短“长文本”。)该解决方案通过将标题列中的长文本包含在指令中来工作\mytab,其中\mytab定义如下。观察悬挂缩进的使用。

在此处输入图片描述

\documentclass[a4paper, captions=tableheading, titlepage,
               bibliography=totocnumbered]{scrartcl}

% Tabelle 
\usepackage{booktabs,tabularx}
\usepackage[locale=DE]{siunitx}

% Value and Significance
\newcommand{\vsig}[2]{#1\textsuperscript{ {#2}}}
% Standard deviation
\newcommand{\sd}[1]{{(}#1{)}}

% new code:
\usepackage{array,amsmath,ragged2e}
\newcolumntype{L}{>{\RaggedRight}X}
\newcolumntype{P}{>{\RaggedRight\hangafter=1\hangindent=1em}p{\hsize}}
\newcommand\mytab[1]{\smash[b]{\begin{tabular}[t]{@{}P@{}} #1 \end{tabular}}}

\begin{document}
    
\begin{table}[htbp]
%% \centering  % redundant
\small
\sisetup{
  input-symbols         = (),
  table-format          = 1.2,
  table-space-text-post = \textsuperscript{ {a}},
  table-space-text-pre  = ~,
  table-align-text-post = false,
  table-align-text-pre  = false,
  table-auto-round} 
\caption{Caption}

\begin{tabularx}{\linewidth}{LSSSS}
    \toprule
    & {Cluster (1)} & {Cluster (2)} & {Cluster longname(3)} & {Total} \\
    \midrule  
    Short text & \vsig{4,35}{a} & \vsig{2,74}{b} & \vsig{1,32}{c} & \num{2,65} \\   
               &   \sd{0,781} & \sd{0,818} & \sd{0,499} & \sd{1,353} \\   
    \mytab{Very long text very long text very long text} 
               & \vsig{4,79}{a} & \vsig{3,75}{b} & \vsig{2,69}{c} & \num{3,65} \\   
               & \sd{0,629} & \sd{0,957} & \sd{0,943} & \sd{1,188} \\   
    \bottomrule
\end{tabularx} 
\end{table}

\end{document}

相关内容