如何设置自定义列类型的宽度,并使三部分表的第一行/标题适合特定宽度

如何设置自定义列类型的宽度,并使三部分表的第一行/标题适合特定宽度

我有下表

在此处输入图片描述

我想 :

  1. 将行固定为自定义的某个宽度\newcolumntype{L}{D{.}{.}{2,5}}(允许对齐列项的小数点而不是第一个字符(当前方有减号时可防止列项向右移动))
  2. 三部分表的第一行/标题适合该特定宽度。也就是说,这意味着要占多行

在我的例子中,标题very long title first colvery long title second col标题不可读

我猜测下面这一行需要修改: \newcolumntype{L}{D{.}{.}{2,5}}

以下是代码:

\documentclass{article}
\usepackage{caption,booktabs,array}
\usepackage[flushleft]{threeparttable}
\newcommand{\rowgroup}[1]{\hspace{-1em}#1}
\usepackage{dcolumn}
\usepackage{geometry}
\geometry{
    a4paper,
    total={170mm,257mm},
    left=20mm,
    top=20mm,
}
\newcolumntype{L}{D{.}{.}{2,5}}
\begin{document}
    \pagenumbering{gobble}
    \begin{table}
        \centering
        \begin{threeparttable}
            \caption{Results of the test}
            \begin{tabular}{>{\quad}m{14em}LL}
                % \toprule
                %& \multicolumn{1}{c}{} \\
                %\toprule
                \textbf{Variable}&\textbf{very long title first col}&\textbf{very long title second col}\\
                \midrule
                \rowgroup{\textbf{Tests}}\\
                var1&0.014\pm0.00001&1.285\pm0.00001\\
                var2&-26.0\pm0.000014&64.33\pm0.00001\\
                \bottomrule
            \end{tabular}
            \begin{tablenotes}
                \small
                \item blabla
            \end{tablenotes}
        \end{threeparttable}
    \end{table}
\end{document}

编辑

为了尝试回答第二个问题,我tabular在表格中插入了一个

在此处输入图片描述

\documentclass{article}
\usepackage{caption,booktabs,array}
\usepackage[flushleft]{threeparttable}
\newcommand{\rowgroup}[1]{\hspace{-1em}#1}
\usepackage{dcolumn}
\usepackage{geometry}
\geometry{
    a4paper,
    total={170mm,257mm},
    left=20mm,
    top=20mm,
}
\newcolumntype{L}{D{.}{.}{2,5}}
\begin{document}
    \pagenumbering{gobble}
    \begin{table}
        \centering
        \begin{threeparttable}
            \caption{Results of the test}
            \begin{tabular}{>{\quad}m{12em}LL}
                % \toprule
                %& \multicolumn{1}{c}{} \\
                %\toprule
                \textbf{Variable}& \begin{tabular}{cc}\textbf{very long } \\ \textbf{title} \\ \textbf{first col}\end{tabular}
                & \begin{tabular}{cc}\textbf{very long } \\ \textbf{title} \\ \textbf{second col}\end{tabular}\\
                \midrule
                \rowgroup{\textbf{Tests}}\\
                var1&0.014\pm0.00001&1.285\pm0.00001\\
                var2&-26.0\pm0.000014&64.33\pm0.00001\\
                \bottomrule
            \end{tabular}
            \begin{tablenotes}
                \small
                \item blabla
            \end{tablenotes}
        \end{threeparttable}
    \end{table}
\end{document}

答案1

或许以下内容可以作为一个起点:

\documentclass{article}
\usepackage{caption,booktabs,array}
\usepackage[flushleft]{threeparttable}
\newcommand{\rowgroup}[1]{\hspace{-1em}#1}
\usepackage{dcolumn}
\usepackage{geometry}
\geometry{
    a4paper,
    total={170mm,257mm},
    left=20mm,
    top=20mm,
}
\newcolumntype{L}{D{.}{.}{1,6}}
\newcolumntype{A}{D{.}{.}{2,3}}
\begin{document}
    \pagenumbering{gobble}
    \begin{table}
        \centering
        \begin{threeparttable}
            \caption{Results of the test}
            \begin{tabular}{>{\quad}m{12em}A@{\,\( \pm \)\,}LA@{\,\( \pm \)\,}L}
                \toprule
                \textbf{Variable}& \multicolumn{2}{>{\centering\arraybackslash}p{2.25cm}}{\textbf{very long title first col}}
                & \multicolumn{2}{>{\centering\arraybackslash}p{2.25cm}}{\textbf{very long title second col}}\\
                \midrule
                \rowgroup{\textbf{Tests}}\\
                var1&0.014 & 0.00001 & 1.285 & 0.00001\\
                var2&-26.0 & 0.000014 & 64.33 &  0.00001\\
                \bottomrule
            \end{tabular}
            \begin{tablenotes}
                \small
                \item blabla
            \end{tablenotes}
        \end{threeparttable}
    \end{table}
\end{document}

根据评论的要求,提供更多解释:

为了使数字与小数分隔符和符号对齐\pm,我将值及其不确定性分成两列,两列均来自类型d列。

根据dcolumn手动的D类型列接受以下三个参数:D{<sep.tex>}{<sep.dvi>}{<decimal places>}<sep.tex>tex 文件中使用的分隔符、<sep.dvi>为输出中使用的分隔符以及<decimal places>为相应列中的最大小数位数。

例如:64.33在分隔符前后各有两位数。这相当于{2,2}0.000014另一方面,在分隔符前有 1 位,在分隔符后有 6 位数,这相当于{1,6}。为了确定 的正确值<decimal places>,因此要寻找小数点分隔符前后位数最多的数字。如果上述两个数字都属于同一列,那么正确值就是{2,6}

@{\,\( \pm \)\,},用于在值和不确定性列说明符之间,自动\pm在两个相邻列之间插入一个 (\,是一个小的水平空间)

相关内容