我怎样才能将表格大小调整为页面大小(\textwidth)而且在需要时还需要多页?

我怎样才能将表格大小调整为页面大小(\textwidth)而且在需要时还需要多页?

我的问题是,我调整了比例以使文本保持在文本宽度上,但它却与页码重叠:在此处输入图片描述

我的代码:

\begin{table}[H]

  \centering

    \caption{Table}
    \resizebox{\textwidth}{!}{ 
    \begin{tabular}{|l|c|c|c|c|c|c|c|c|c|c|}
    \hline
    1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 \\
    \hline
    1 & -20 & 0 & 40 & 25 & 25 & 25 & 25 & 13943 & -4,44 & -0,81 \\
    \hline
    2 & -20 & 0 & 40 & 75 & 50 & 25 & 25 & 13968 & -6,4745 & 0,6761  \\
    \hline
    3 & -20 & 0 & 40 & 75 & 50 & 75 & 50 & 1395 & -5,23 & -0,285  \\
    \hline
    ...
    \end{tabular}
    }
\end{table}%

答案1

请继续使用以下longtable环境(与包一起使用,longtable\usepackage{longtable}),而不是table

\begin{longtable}{|l|c|c|c|c|c|c|c|c|c|c|}
    \caption{}\\
    \hline
    1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 \\
    \hline
    1 & -20 & 0 & 40 & 25 & 25 & 25 & 25 & 13943 & -4,44 & -0,81 \\
    \hline
    2 & -20 & 0 & 40 & 75 & 50 & 25 & 25 & 13968 & -6,4745 & 0,6761  \\
    \hline
    3 & -20 & 0 & 40 & 75 & 50 & 75 & 50 & 1395 & -5,23 & -0,285  \\
    \hline
    ................
    \end{longtable}

在此处输入图片描述

答案2

有一个包专门用于此目的:ltxtable 它合并tabularx(无论如何你都应该使用它,不要用调整表格大小\resizebox)和longtable

tabularx可以定义表格的宽度(就您的情况而言\textwidth),而 longtable(如上面的答案所指出的)提供了分页机制。您需要将表格写入文件,但对于大表格来说,这无论如何都是一个好主意。

tabularx引入了一种新的列类型:X。这会相应地拉伸到最终宽度,因此如果您有两列这种类型,并且表格的宽度是文本宽度,则每列的宽度将恰好是文本宽度的一半。我填充使用此机制,但引入了用于居中和左对齐的新列类型。每种类型有两种,因为有时需要调整它们的大小。这是通过命令完成的\hsize。请参阅列类型EF我的示例。我不得不对宽度进行一些调整,这不是很简单。请注意,总宽度必须是列数,因此如果您在一列中使用宽度修饰符,则必须在其余列中0.75弥补缺失的部分。0.25

话虽如此,让我们看一下代码:

\documentclass[parskip=half]{scrartcl}

% my settings, i use lualatex, but you can also use pdflatex without problems
\usepackage{polyglossia}
\setmainlanguage{english}
% also for lualatex
\usepackage{fontspec}
\setmainfont{Linux Libertine O}

% packages (ltxtable loads both tabularx and longtable)
\usepackage{filecontents}
\usepackage{ltxtable}
\usepackage{booktabs} % see text below

% define new columns
\newcolumntype{E}[1]{>{\centering\arraybackslash\hsize=#1\hsize}X}
\newcolumntype{F}[1]{>{\raggedright\arraybackslash\hsize=#1\hsize}X}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\newcolumntype{L}{>{\raggedright\arraybackslash}X}

% first table
\begin{filecontents}{table.tex}
    \begin{longtable}{|F{0.3}|C|C|C|C|C|C|C|E{1.2}|E{1.3}|E{1.2}|}
        \hline
        1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 \\
        \hline
        1 & -20 & 0 & 40 & 25 & 25 & 25 & 25 & 13943 & -4,44 & -0,81 \\
        \hline
        2 & -20 & 0 & 40 & 75 & 50 & 25 & 25 & 13968 & -6,4745 & 0,6761  \\
        \hline
        3 & -20 & 0 & 40 & 75 & 50 & 75 & 50 & 1395 & -5,23 & -0,285  \\
        \hline
    \end{longtable}
\end{filecontents}

% second (almost the same) table
\begin{filecontents}{table2.tex}
    \begin{longtable}{F{0.3}CCCCCCCE{1.2}E{1.3}E{1.2}}
        \toprule
        1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 \\
        \midrule
        1 & -20 & 0 & 40 & 25 & 25 & 25 & 25 & 13943 & -4,44 & -0,81 \\
        \midrule
        2 & -20 & 0 & 40 & 75 & 50 & 25 & 25 & 13968 & -6,4745 & 0,6761  \\
        \midrule
        3 & -20 & 0 & 40 & 75 & 50 & 75 & 50 & 1395 & -5,23 & -0,285  \\
        \bottomrule
    \end{longtable}
\end{filecontents}

\begin{document}
    % typeset both tables
    \LTXtable{\textwidth}{table.tex}
    \LTXtable{\textwidth}{table2.tex}
\end{document}

E以及C和列FL功能相同(居中和左对齐),但对于EF您可以指定相对宽度,这对于更宽的列来说是必要的。

如您所见,我在文档中放置了两个表格。第一个与您的布局相对应。第二个是一个建议,因为通常不鼓励使用垂直条。请查看论文/书籍/某些文档。大多数情况下,表格的排版与我的第二个示例一样,没有垂直条,一个大标题,较小的中间线和较大的底线。这正是它的作用booktabs,因此得名。

最后一条建议:考虑以某种方式拆分数据,也许某一列并不重要或者其他什么。真的想想看,我觉得如果表格长度超过一页且列数太多,那么表格将完全无法阅读。最好使用更多、更小的表格。 第一张桌子 第二张桌子

相关内容