表格条目中的短筹码

表格条目中的短筹码

在此处输入图片描述

为了优化某些列的宽度,使表格适合文本,我使用了\shortstack。但是,现在我对标题的外观并不满意(参见图片)。我使用的列中的标题文本\shortstack现在太靠近顶部线了。此外,我没有使用的标题\shortstack没有与顶部对齐\hline,而它们应该对齐。在使用时有没有办法纠正这个问题\shortstack,或者有没有更好的解决方案来解决列的宽度问题?

\documentclass[12pt]{report}
        \usepackage{tabulary}
        \usepackage[maxfloats=30,morefloats=12]{morefloats}
        \usepackage{booktabs}
        \usepackage{float,lscape}
        \usepackage{longtable}
       \usepackage{pdflscape}
        \usepackage{tabularx}
        \usepackage{multirow}
        \usepackage{bigstrut}

        \begin{document}

\begin{table}[htbp]
  \centering
  \caption{ETV 1830 - 1930}
  \tiny
    \begin{tabular}{rrrrrrrrr}
    \hline
    \multicolumn{1}{c}{\textbf{Year}} & \multicolumn{1}{c}{\textbf{Organizations}} & \multicolumn{1}{c}{\textbf{Associations}} & \multicolumn{1}{c}{\textbf{\shortstack{Paying\\ members}}} & \multicolumn{1}{c}{\textbf{in \% of total}} & \multicolumn{1}{c}{\textbf{\shortstack{Non-paying\\ members}}} & \multicolumn{1}{c}{\textbf{in \% of total}} & \multicolumn{1}{c}{\textbf{\shortstack{Total\\ members}}} & \multicolumn{1}{c}{\textbf{\shortstack{Active\\ members}}} \bigstrut\\
    \hline
    1830  & -     & 2     & -     & -     & -     & -     & -     & - \bigstrut[t]\\
    31-40 & -     & 7     & -     & -     & -     & -     & -     & - \\
   \hline
    \end{tabular}%
  \label{tab:addlabel}%
\end{table}%

\end{document}

答案1

为了尽量减少对原始代码的更改,从而实现所需的结果,我添加了一行并更改了另一行。我首先添加了一行\usepackage[usestackEOL]{stackengine}以访问\addstackgap宏。然后,我修改了 的标题行tabular,以便将其中一个拥挤的堆栈包含在 中\addstackgap,例如\multicolumn{1}{c}{\addstackgap{\textbf{\shortstack{Paying\\ members}}}}。这会在对象周围应用 3pt 垂直缓冲区。

\documentclass[12pt]{report}
        \usepackage{tabulary}
        \usepackage[maxfloats=30,morefloats=12]{morefloats}
        \usepackage{booktabs}
        \usepackage{float,lscape}
        \usepackage{longtable}
       \usepackage{pdflscape}
        \usepackage{tabularx}
        \usepackage{multirow}
        \usepackage{bigstrut}
        \usepackage[usestackEOL]{stackengine}
        \begin{document}

\begin{table}[htbp]
  \centering
  \caption{ETV 1830 - 1930}
  \tiny
    \begin{tabular}{rrrrrrrrr}
    \hline
    \multicolumn{1}{c}{\textbf{Year}} & \multicolumn{1}{c}{\textbf{Organizations}} & \multicolumn{1}{c}{\textbf{Associations}} & \multicolumn{1}{c}{\addstackgap{\textbf{\shortstack{Paying\\ members}}}} & \multicolumn{1}{c}{\textbf{in \% of total}} & \multicolumn{1}{c}{\textbf{\shortstack{Non-paying\\ members}}} & \multicolumn{1}{c}{\textbf{in \% of total}} & \multicolumn{1}{c}{\textbf{\shortstack{Total\\ members}}} & \multicolumn{1}{c}{\textbf{\shortstack{Active\\ members}}} \bigstrut\\
    \hline
    1830  & -     & 2     & -     & -     & -     & -     & -     & - \bigstrut[t]\\
    31-40 & -     & 7     & -     & -     & -     & -     & -     & - \\
   \hline
    \end{tabular}%
  \label{tab:addlabel}%
\end{table}%

\end{document}

在此处输入图片描述

此外,如果您希望标题行顶部对齐,则可以将每个实例更改为\shortstack\Shortunderstack请注意大写的“S”),以获得:

在此处输入图片描述

答案2

你可以用更简单的方式得到你想要的东西:这个makecell包允许在单元格中换行,并在特定的表格单元格中使用通用格式(包括垂直对齐),这要归功于\thead\makecell命令。要获得更好的垂直间距,只需使用booktabs包。最后,caption当标题是多于表格,您可以进一步自定义标题。

因此,可以有一个表格,但footnotesize列标题除外,因为列标题是scriptsize– 而不是tiny,这几乎不可读:

    \documentclass[12pt]{report}
    \usepackage{tabulary}
    \usepackage[maxfloats=30,morefloats=12]{morefloats}
    \usepackage{booktabs}
    \usepackage{float,lscape}
    \usepackage{longtable}
   \usepackage{pdflscape}
    \usepackage{tabularx}
    \usepackage{multirow}
    \usepackage{bigstrut}
    \usepackage[showframe]{geometry}
    \usepackage{caption, makecell, booktabs}
    \captionsetup{font = footnotesize}
    \renewcommand\theadfont{\bfseries\scriptsize}
    \renewcommand\theadalign{bc}

    \begin{document}

    \begin{table}[htbp]
      \centering\setlength\tabcolsep{3.5pt}
      \caption{ETV 1830 - 1930}
      \footnotesize
        \begin{tabular}{rrrrrrrrr}
        \toprule
        \thead{Year} & \thead{Organizations} & \thead{Associations} & \thead{Paying\\ members} & \thead{in \%\\ of total} & \thead{Non-paying\\ members} & \thead{in \%\\ of total} & \thead{Total\\ members} & \thead{\shortstack{Active\\ members}}\\
        \midrule
        1830 & -- & 2 & -- & -- & -- & -- & -- & -- \\
    \addlinespace
        31-40 & -- & 7 & -- & -- & -- & -- & -- & -- \\
       \bottomrule
        \end{tabular}%
      \label{tab:addlabel}%
    \end{table}%

    \end{document} 

在此处输入图片描述

答案3

我不明白为什么您在序言包中有一些在 MWE 中不使用的包。所以我稍微重新排列了您的 MWE,并从所有包中仅使用booktabtabularx。在 tabularx 中,我选择表格宽度\textwidth

\documentclass[12pt]{report}
%        \usepackage{tabulary}
%        \usepackage[maxfloats=30,morefloats=12]{morefloats}
        \usepackage{booktabs}
%        \usepackage{float,lscape}
%        \usepackage{longtable}
%       \usepackage{pdflscape}
        \usepackage{tabularx}
    \newcolumntype{R}{>{\raggedleft\arraybackslash}X}
%        \usepackage{multirow}
%        \usepackage{bigstrut}

\usepackage[active,floats,tightpage]{preview}
    \setlength\PreviewBorder{1em}

    \begin{document}
\begin{table}
    \centering
    \tiny
    \setlength{\tabcolsep}{3pt}
\caption{ETV 1830 - 1930}
    \begin{tabularx}{\textwidth}{*{9}{R}}
    \toprule
\multicolumn{1}{c}{\textbf{Year}} 
    &   \multicolumn{1}{c}{\textbf{Organizations}} 
        &   \multicolumn{1}{c}{\textbf{Associations}} 
            &   \multicolumn{1}{c}{\textbf{\shortstack{Paying\\ members}}} 
                &   \multicolumn{1}{c}{\textbf{\shortstack{in \%\\ of total}}}
                    &   \multicolumn{1}{c}{\textbf{\shortstack{Non-paying\\ members}}} 
                        &   \multicolumn{1}{c}{\textbf{\shortstack{in \%\\ of total}}}
                            &   \multicolumn{1}{c}{\textbf{\shortstack{Total\\ members}}} 
                                &   \multicolumn{1}{c}{\textbf{\shortstack{Active\\ members}}} 
                                    \\
    \midrule
1830  & -     & 2     & -     & -     & -     & -     & -     & - \\
31-40 & -     & 7     & -     & -     & -     & -     & -     & - \\
   \bottomrule
    \end{tabularx}%
  \label{tab:addlabel}%
\end{table}%
    \end{document}

编辑:这是使用上述 MWE 生成的表格的图像。在此处输入图片描述

相关内容