如何调整表格的水平间距以获得良好的水平分布?

如何调整表格的水平间距以获得良好的水平分布?

如何调整表格的水平间距,使对象、值 A 和值 B 的列分布均匀或更好?到目前为止,我总是使用列X类型来tabularx获得好看的结果,但这次我需要借助siunitx S列类型对齐一些数字,水平对齐看起来很糟糕,如您所见。我不介意对象、值 A 和值 B 的列之间有一些空白。例如,值 A“内部”的列应该更靠近,就像下面最小工作示例一样。

在此处输入图片描述

\documentclass[
    12pt,                                   
    DIV=12,                                 
    paper=A4,                                                       
    parskip=half,                                           
]{scrreprt}

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

\begin{document}

\begin{table}
    \centering
    \caption{Some Values}
    \begin{tabularx}{\textwidth}{XSXSSXS}
        \toprule
        \textbf{Object} &\multicolumn{3}{c}{Values A} &\multicolumn{3}{c}{Values B}\\ 
        \midrule
        Lorem           & 70,50 & bis & 60,50         & 60,50 & bis & 50,50 \\
        Ipsum           & 60,50 & bis & 50,50         & 50,50 & bis & 40,50 \\ 
        Lorem           & 50,50 & bis & 40,50         & 40,50 & bis & 30,50 \\ 
        Ipsum           & 40,50 & bis & 30,50         & 30,50 & bis & 20,50 \\ 
        Lorem           & 30,50 & bis & 20,50         & 20,50 & bis & 10,50 \\ 
        Ipsum           & 20,50 & bis & 10,50         & 10,50 & bis & 00,50 \\ 
        \bottomrule
    \end{tabularx}
\end{table}

\end{document}

如果将X列类型更改为l并使用,@{\extracolsep{\fill}您可以获得以下结果,它看起来已经更好了。

在此处输入图片描述

\begin{table}
    \centering
    \caption{Some Values}
    \begin{tabularx}{\textwidth}{l@{\extracolsep{\fill}}SlSSlS}
        \toprule
        \textbf{Object} &\multicolumn{3}{c}{Values A} &\multicolumn{3}{c}{Values B}\\ 
        \midrule
        Lorem           & 70,50 & bis & 60,50         & 60,50 & bis & 50,50 \\
        Ipsum           & 60,50 & bis & 50,50         & 50,50 & bis & 40,50 \\ 
        Lorem           & 50,50 & bis & 40,50         & 40,50 & bis & 30,50 \\ 
        Ipsum           & 40,50 & bis & 30,50         & 30,50 & bis & 20,50 \\ 
        Lorem           & 30,50 & bis & 20,50         & 20,50 & bis & 10,50 \\ 
        Ipsum           & 20,50 & bis & 10,50         & 10,50 & bis & 00,50 \\ 
        \bottomrule
    \end{tabularx}
\end{table}

答案1

这是一个不带 的选项tabularx。但我不明白为什么要用这么多空格,因此不建议这么做。

\documentclass{article}

\usepackage{booktabs} 
\usepackage[locale = DE]{siunitx}

\begin{document}

\begin{table}
    \centering
    \caption{Some Values}
    \begin{tabular*}{\textwidth}{ r *{2}{@{\extracolsep{\fill}} S @{\extracolsep{0pt}~bis~} S} }
        \toprule
        \textbf{Object} &\multicolumn{2}{c}{Values A} &\multicolumn{2}{c}{Values B}\\ 
        \midrule
        Lorem & 70,50 & 60,50 & 60,50 & 50,50 \\
        Ipsum & 60,50 & 50,50 & 50,50 & 40,50 \\ 
        Lorem & 50,50 & 40,50 & 40,50 & 30,50 \\ 
        Ipsum & 40,50 & 30,50 & 30,50 & 20,50 \\ 
        Lorem & 30,50 & 20,50 & 20,50 & 10,50 \\ 
        Ipsum & 20,50 & 10,50 & 10,50 & 00,50 \\ 
        \bottomrule
    \end{tabular*}
\end{table}

\end{document}

MWE 输出

答案2

这里有两种解决方案,它们使用基本tabular环境并自动在数字对之间创建短破折号。

这两个表之间唯一重要的区别是,第一个l表对第一列使用列类型,而第二个表使用p{5cm}列类型。如果第一列单元格的内容很长,则第二种解决方案可能更可取。(您的实际表格不会出现“Lorem”和“Ipsum”字样,对吧?)无论哪种方式,我都看不出使用tabularx目标宽度为 的环境有什么好理由\textwidth

在此处输入图片描述

\documentclass[12pt,DIV=12,paper=A4,parskip=half]{scrreprt}
\usepackage{booktabs} 
\usepackage[locale = DE]{siunitx}
\newcolumntype{T}{S[table-format=2.2]}
\usepackage{tabularx}

\begin{document}

\begin{table}
    \centering
    \caption{Some Values}
    \begin{tabular}{@{} l 
                        T @{\,--\,} T 
                        T @{\,--\,} T @{}}
    \toprule
    Object & \multicolumn{2}{c}{Values A} & \multicolumn{2}{c@{}}{Values B} \\ 
    \midrule
    Lorem           & 70,50 & 60,50         & 60,50 & 50,50 \\
    Ipsum           & 60,50 & 50,50         & 50,50 & 40,50 \\ 
    Lorem           & 50,50 & 40,50         & 40,50 & 30,50 \\ 
    Ipsum           & 40,50 & 30,50         & 30,50 & 20,50 \\ 
    Lorem           & 30,50 & 20,50         & 20,50 & 10,50 \\ 
    Ipsum           & 20,50 & 10,50         & 10,50 & 00,50 \\ 
    \bottomrule
    \end{tabular}
    
\bigskip

    \begin{tabular}{@{} p{5cm} 
                        T @{\,--\,} T 
                        T @{\,--\,} T @{}}
    \toprule
    Object & \multicolumn{2}{c}{Values A} & \multicolumn{2}{c@{}}{Values B} \\ 
    \midrule
    Lorem           & 70,50 & 60,50         & 60,50 & 50,50 \\
    Ipsum           & 60,50 & 50,50         & 50,50 & 40,50 \\ 
    Lorem           & 50,50 & 40,50         & 40,50 & 30,50 \\ 
    Ipsum           & 40,50 & 30,50         & 30,50 & 20,50 \\ 
    Lorem           & 30,50 & 20,50         & 20,50 & 10,50 \\ 
    Ipsum           & 20,50 & 10,50         & 10,50 & 00,50 \\ 
    \bottomrule
    \end{tabular}
\end{table}

\end{document}

附录回答 OP 的后续问题:如果我正确理解了你的附加格式目标,我认为有必要更改当前设置,

\begin{tabular}{@{} 
                l 
                T 
                @{\,--\,} 
                T 
                T 
                @{\,--\,} 
                T 
                @{}}
\toprule
...
\bottomrule
\end{tabular}

\begin{tabular*}{0.7\textwidth}{@{} % set a suitable target width
                    l 
                    @{\extracolsep{\fill}}
                    T 
                    @{\,--\,\extracolsep{0pt}} 
                    T 
                    @{\extracolsep{\fill}}
                    T 
                    @{\,--\,\extracolsep{0pt}} 
                    T @{}}
\toprule
... 
\bottomrule
\end{tabular*}

简而言之,虽然原则上是可行的,但在实践中我不建议这样做。

相关内容