我的问题是,我调整了比例以使文本保持在文本宽度上,但它却与页码重叠:
我的代码:
\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
。请参阅列类型E
和F
我的示例。我不得不对宽度进行一些调整,这不是很简单。请注意,总宽度必须是列数,因此如果您在一列中使用宽度修饰符,则必须在其余列中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
和列F
的L
功能相同(居中和左对齐),但对于E
和F
您可以指定相对宽度,这对于更宽的列来说是必要的。
如您所见,我在文档中放置了两个表格。第一个与您的布局相对应。第二个是一个建议,因为通常不鼓励使用垂直条。请查看论文/书籍/某些文档。大多数情况下,表格的排版与我的第二个示例一样,没有垂直条,一个大标题,较小的中间线和较大的底线。这正是它的作用booktabs
,因此得名。
最后一条建议:考虑以某种方式拆分数据,也许某一列并不重要或者其他什么。真的想想看,我觉得如果表格长度超过一页且列数太多,那么表格将完全无法阅读。最好使用更多、更小的表格。