我在制作文档时遇到了以下问题。我有一个表格,它被分成了五页。这是用 longtable 完成的,效果很好。在下一节中,我有另一个(简单)表格。第二个表格放在 longtable 的最后一部分之前。这导致了一个糟糕的结果,即表格 6.8 的标题放在了表格 6.9 的标题之后。
我可以通过指定第二个表应放在页面底部而不是顶部来解决这个问题,但理想情况下,我希望将长表的最后一部分放在页面顶部,第二个表放在其正下方(而不是像现在这样反过来)。有人知道如何实现这一点吗?
下面是一个可以说明该问题的“小”例子。
\documentclass[11pt]{article}
\usepackage{longtable}
\usepackage{booktabs}
\begin{document}
\section{First}
\begin{longtable}{crrrrrrrr}
\caption{Head}\\
\toprule
& \multicolumn{1}{c}{1} & \multicolumn{1}{c}{2} & \multicolumn{1}{c}{2} & \multicolumn{1}{c}{3} & \multicolumn{1}{c}{3} & \multicolumn{1}{c}{4} & \multicolumn{1}{c}{4} & \multicolumn{1}{c}{5}\\
& & \multicolumn{1}{c}{s} & \multicolumn{1}{c}{n} & \multicolumn{1}{c}{s} & \multicolumn{1}{c}{n} & \multicolumn{1}{c}{s} & \multicolumn{1}{c}{n} & \\
\midrule
\endfirsthead
\caption[]{(Continued)}\\
\midrule
& \multicolumn{1}{c}{1} & \multicolumn{1}{c}{2} & \multicolumn{1}{c}{2} & \multicolumn{1}{c}{3} & \multicolumn{1}{c}{3} & \multicolumn{1}{c}{4} & \multicolumn{1}{c}{4} & \multicolumn{1}{c}{5}\\
& & \multicolumn{1}{c}{s} & \multicolumn{1}{c}{n} & \multicolumn{1}{c}{s} & \multicolumn{1}{c}{n} & \multicolumn{1}{c}{s} & \multicolumn{1}{c}{n} & \\
\midrule
\endhead
\midrule \multicolumn{9}{r}{{Continued on next page}} \\
\endfoot
\bottomrule
\endlastfoot
0 & 5 & N/A & 11 & N/A & N/A & N/A & N/A & N/A \\
1 & & 14 & 25 & 10 & 16 & N/A & N/A & N/A \\
2 & & 28 & 43 & 19 & 27 & 12 & 15 & N/A \\
3 & & 46 & 65 & 30 & 40 & 18 & 21 & N/A \\
4 & & 68 & 91 & 43 & 55 & 24 & 27 & N/A \\
5 & & 94 & 121 & 58 & 72 & 30 & 33 & 16 \\
6 & & 124 & 155 & 75 & 91 & 36 & 39 & 19 \\
7 & & 158 & 193 & 94 & 112 & 42 & 45 & 22 \\
8 & & 196 & 235 & 115 & 135 & 48 & 51 & 27 \\
9 & & 238 & 281 & 138 & 160 & 54 & 57 & 30 \\
10 & & 284 & 331 & 163 & 187 & 60 & 63 & 35 \\
11 & & 334 & 385 & 190 & 216 & 66 & 69 & 38 \\
12 & & 388 & 443 & 219 & 247 & 72 & 75 & 43 \\
13 & & 446 & 505 & 250 & 280 & 78 & 81 & 46 \\
14 & & 508 & 571 & 283 & 315 & 84 & 87 & 51 \\
15 & & 574 & 641 & 318 & 352 & 90 & 93 & 54 \\
16 & & 644 & 715 & 355 & 391 & 96 & 99 & 59 \\
17 & & 718 & 793 & 394 & 432 & 102 & 105 & 62 \\
18 & & 796 & 875 & 435 & 475 & 108 & 111 & 67 \\
19 & & 878 & 961 & 478 & 520 & 114 & 117 & 70 \\
20 & & 964 & 1051 & 523 & 567 & 120 & 123 & 75 \\
21 & & 1054 & 1145 & 570 & 616 & 126 & 129 & 78 \\
22 & & 1148 & 1243 & 619 & 667 & 132 & 135 & 83 \\
23 & & 1246 & 1345 & 670 & 720 & 138 & 141 & 86 \\
24 & & 1348 & 1451 & 723 & 775 & 144 & 147 & 91 \\
25 & & 1454 & 1561 & 778 & 832 & 150 & 153 & 94 \\
26 & & 1564 & 1675 & 835 & 891 & 156 & 159 & 99 \\
27 & & 1678 & 1793 & 894 & 952 & 162 & 165 & 102 \\
28 & & 1796 & 1915 & 955 & 1015 & 168 & 171 & 107 \\
29 & & 1918 & 2041 & 1018 & 1080 & 174 & 177 & 110 \\
30 & & 2044 & 2171 & 1083 & 1147 & 180 & 183 & 115 \\
31 & & 2174 & 2305 & 1150 & 1216 & 186 & 189 & 118 \\
32 & & 2308 & 2443 & 1219 & 1287 & 192 & 195 & 123 \\
33 & & 2446 & 2585 & 1290 & 1360 & 198 & 201 & 126 \\
34 & & 2588 & 2731 & 1363 & 1435 & 204 & 207 & 131 \\
35 & & 2734 & 2881 & 1438 & 1512 & 210 & 213 & 134 \\
36 & & 2884 & 3035 & 1515 & 1591 & 216 & 219 & 139 \\
37 & & 3038 & 3193 & 1594 & 1672 & 222 & 225 & 142 \\
38 & & 3196 & 3355 & 1675 & 1755 & 228 & 231 & 147 \\
39 & & 3358 & 3521 & 1758 & 1840 & 234 & 237 & 150 \\
40 & & 3524 & 3691 & 1843 & 1927 & 240 & 243 & 155 \\
\end{longtable}
\section{Second}
\begin{table}
\begin{center}
\begin{tabular}{cc}
\toprule
$p$ & Upper bound\\
\midrule
0 & $h\leq \frac{b^2+12}{48}$\\\addlinespace[0.75em]
1 & $h\leq \frac{b^2-25}{40}$\\\addlinespace[0.75em]
2 & $h\leq \frac{b^2-64}{32}$\\\addlinespace[0.75em]
3 & $h\leq \frac{b^2-81}{24}$\\\addlinespace[0.75em]
4 & $h\leq \frac{b^2-100}{16}$\\\addlinespace[0.75em]
5 & $h\leq \frac{b^2-113}{8}$\\
\bottomrule
\end{tabular}
\caption{The second table.}
\end{center}
\end{table}
\end{document}
答案1
所以这似乎适用于这个测试示例。它实现了注释中的建议,将最后一个片段变成longtable
顶部浮动。使用默认浮动参数,下表无论如何都会浮动到下一页,所以我将其更改为使用以[!t]
显示此代码确实允许浮动立即进入顶部区域下列的长桌。
\documentclass[11pt]{article}
\usepackage{longtable}
\usepackage{booktabs}
\makeatletter
\def\LT@output{%
\ifnum\outputpenalty <-\@Mi
\ifnum\outputpenalty > -\LT@end@pen
\LT@err{floats and marginpars not allowed in a longtable}\@ehc
\else
\setbox\z@\vbox{\unvbox\@cclv}%
\ifdim \ht\LT@lastfoot>\ht\LT@foot
\dimen@\pagegoal
\advance\dimen@-\ht\LT@lastfoot
\ifdim\dimen@<\ht\z@
\setbox\@cclv\vbox{\unvbox\z@\copy\LT@foot\vss}%
\@makecol
\@outputpage
\setbox\z@\vbox{\box\LT@head}%
\fi
\fi
\global\@colroom\@colht
\global\vsize\@colht
\global\setbox\@ne\vbox{%
\unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi}%
\gdef\zzz{%
\begingroup\@float{table}[!t]%
\unvbox\@ne
\addvspace\LTpost
\end@float\endgroup
}%
\fi
\else
\setbox\@cclv\vbox{\unvbox\@cclv\copy\LT@foot\vss}%
\@makecol
\@outputpage
\global\vsize\@colroom
\copy\LT@head\nobreak
\fi}
\def\endlongtable{%
\crcr
\noalign{%
\let\LT@entry\LT@entry@chop
\xdef\LT@save@row{\LT@save@row}}%
\LT@echunk
\LT@start
\unvbox\z@
\LT@get@widths
\if@filesw
{\let\LT@entry\LT@entry@write\immediate\write\@auxout{%
\gdef\expandafter\noexpand
\csname LT@\romannumeral\c@LT@tables\endcsname
{\LT@save@row}}}%
\fi
\ifx\LT@save@row\LT@@save@row
\else
\LT@warn{Column \@width s have changed\MessageBreak
in table \thetable}%
\LT@final@warn
\fi
\endgraf\penalty -\LT@end@pen
\endgroup
\global\@mparbottom\z@
\pagegoal\vsize
\endgraf
\zzz
\penalty\z@
\ifvoid\footins\else\insert\footins{}\fi}
\makeatother
\begin{document}
\section{First}
\begin{longtable}{crrrrrrrr}
\caption{Head}\\
\toprule
& \multicolumn{1}{c}{1} & \multicolumn{1}{c}{2} & \multicolumn{1}{c}{2} & \multicolumn{1}{c}{3} & \multicolumn{1}{c}{3} & \multicolumn{1}{c}{4} & \multicolumn{1}{c}{4} & \multicolumn{1}{c}{5}\\
& & \multicolumn{1}{c}{s} & \multicolumn{1}{c}{n} & \multicolumn{1}{c}{s} & \multicolumn{1}{c}{n} & \multicolumn{1}{c}{s} & \multicolumn{1}{c}{n} & \\
\midrule
\endfirsthead
\caption[]{(Continued)}\\
\midrule
& \multicolumn{1}{c}{1} & \multicolumn{1}{c}{2} & \multicolumn{1}{c}{2} & \multicolumn{1}{c}{3} & \multicolumn{1}{c}{3} & \multicolumn{1}{c}{4} & \multicolumn{1}{c}{4} & \multicolumn{1}{c}{5}\\
& & \multicolumn{1}{c}{s} & \multicolumn{1}{c}{n} & \multicolumn{1}{c}{s} & \multicolumn{1}{c}{n} & \multicolumn{1}{c}{s} & \multicolumn{1}{c}{n} & \\
\midrule
\endhead
\midrule \multicolumn{9}{r}{{Continued on next page}} \\
\endfoot
\bottomrule
\endlastfoot
0 & 5 & N/A & 11 & N/A & N/A & N/A & N/A & N/A \\
1 & & 14 & 25 & 10 & 16 & N/A & N/A & N/A \\
2 & & 28 & 43 & 19 & 27 & 12 & 15 & N/A \\
3 & & 46 & 65 & 30 & 40 & 18 & 21 & N/A \\
4 & & 68 & 91 & 43 & 55 & 24 & 27 & N/A \\
5 & & 94 & 121 & 58 & 72 & 30 & 33 & 16 \\
6 & & 124 & 155 & 75 & 91 & 36 & 39 & 19 \\
7 & & 158 & 193 & 94 & 112 & 42 & 45 & 22 \\
8 & & 196 & 235 & 115 & 135 & 48 & 51 & 27 \\
9 & & 238 & 281 & 138 & 160 & 54 & 57 & 30 \\
10 & & 284 & 331 & 163 & 187 & 60 & 63 & 35 \\
11 & & 334 & 385 & 190 & 216 & 66 & 69 & 38 \\
12 & & 388 & 443 & 219 & 247 & 72 & 75 & 43 \\
13 & & 446 & 505 & 250 & 280 & 78 & 81 & 46 \\
14 & & 508 & 571 & 283 & 315 & 84 & 87 & 51 \\
15 & & 574 & 641 & 318 & 352 & 90 & 93 & 54 \\
16 & & 644 & 715 & 355 & 391 & 96 & 99 & 59 \\
17 & & 718 & 793 & 394 & 432 & 102 & 105 & 62 \\
18 & & 796 & 875 & 435 & 475 & 108 & 111 & 67 \\
19 & & 878 & 961 & 478 & 520 & 114 & 117 & 70 \\
20 & & 964 & 1051 & 523 & 567 & 120 & 123 & 75 \\
21 & & 1054 & 1145 & 570 & 616 & 126 & 129 & 78 \\
22 & & 1148 & 1243 & 619 & 667 & 132 & 135 & 83 \\
23 & & 1246 & 1345 & 670 & 720 & 138 & 141 & 86 \\
24 & & 1348 & 1451 & 723 & 775 & 144 & 147 & 91 \\
25 & & 1454 & 1561 & 778 & 832 & 150 & 153 & 94 \\
26 & & 1564 & 1675 & 835 & 891 & 156 & 159 & 99 \\
27 & & 1678 & 1793 & 894 & 952 & 162 & 165 & 102 \\
28 & & 1796 & 1915 & 955 & 1015 & 168 & 171 & 107 \\
29 & & 1918 & 2041 & 1018 & 1080 & 174 & 177 & 110 \\
30 & & 2044 & 2171 & 1083 & 1147 & 180 & 183 & 115 \\
31 & & 2174 & 2305 & 1150 & 1216 & 186 & 189 & 118 \\
32 & & 2308 & 2443 & 1219 & 1287 & 192 & 195 & 123 \\
33 & & 2446 & 2585 & 1290 & 1360 & 198 & 201 & 126 \\
34 & & 2588 & 2731 & 1363 & 1435 & 204 & 207 & 131 \\
35 & & 2734 & 2881 & 1438 & 1512 & 210 & 213 & 134 \\
36 & & 2884 & 3035 & 1515 & 1591 & 216 & 219 & 139 \\
37 & & 3038 & 3193 & 1594 & 1672 & 222 & 225 & 142 \\
38 & & 3196 & 3355 & 1675 & 1755 & 228 & 231 & 147 \\
39 & & 3358 & 3521 & 1758 & 1840 & 234 & 237 & 150 \\
40 & & 3524 & 3691 & 1843 & 1927 & 240 & 243 & 155 \\
\end{longtable}
\section{Second}
\begin{table}[!t]
\begin{center}
\begin{tabular}{cc}
\toprule
$p$ & Upper bound\\
\midrule
0 & $h\leq \frac{b^2+12}{48}$\\\addlinespace[0.75em]
1 & $h\leq \frac{b^2-25}{40}$\\\addlinespace[0.75em]
2 & $h\leq \frac{b^2-64}{32}$\\\addlinespace[0.75em]
3 & $h\leq \frac{b^2-81}{24}$\\\addlinespace[0.75em]
4 & $h\leq \frac{b^2-100}{16}$\\\addlinespace[0.75em]
5 & $h\leq \frac{b^2-113}{8}$\\
\bottomrule
\end{tabular}
\caption{The second table.}
\end{center}
\end{table}
\end{document}
答案2
为了防止“东西”漂浮到不该漂浮的地方,有多种可能性。更多浮点数包裹说:
- 该命令
\clearpage
强制 LaTeX 输出此命令之前出现的任何浮动对象(并转到下一页)。\cleardoublepage
执行相同操作但确保下一页输出的页面是奇数页。- 使用不同的浮点说明符:浮点
t
顶部、b
底部、p
页面。- 建议 LaTeX 将对象放在原来的位置:
h
(= 此处)浮点说明符。- 告诉 LaTeX 请将对象放在原处:
h!
(= 此处!)浮点说明符。- 强制 LaTeX 将对象放在原处并关闭:浮动包提供了“此处的样式选项,为浮动环境提供了一个
[H]
选项,表示“将其放在此处”(而不是标准[h]
选项,表示“您可以将其放在此处,如果您愿意)”(截至 2001/11/08 的浮动包文档 v1.3d)。例如,更改\begin{figure}[tbp]...
为\begin{figure}[H]...
强制将图形放在此处,而不是浮动。浮动包 2001/11/08 v1.3d 可在 CTAN 获得:http://ctan.org/pkg/float- placeins 包提供了命令
\FloatBarrier
。在 之前出现的浮动元素\FloatBarrier
不允许浮动到 之后的位置,在 之后出现的浮动元素\FloatBarrier
不允许浮动到 之前的位置\FloatBarrier
。(一个文档中可以有多个\FloatBarrier
。)同一个包还提供了一个选项,可以自动将 添加到节标题\FloatBarrier
s 。还可以使\FloatBarriers
不那么严格(请参阅该包的文档)。placeins 包,2005/04/18 v2.2,可在 CTAN 获得:http://ctan.org/pkg/placeins另请参阅英国网络上 TeX 常见问题列表中的以下条目:
和Frank Mittelbach 在“如何影响 LaTeX 中浮动环境(如图片和表格)的位置?”上发表了一篇精彩文章 https://tex.stackexchange.com/a/39020!