我对 Latex 还很陌生,在使用表格时遇到了这个问题:
我有一定数量的表格,其结构完全相同,当我在它们之间定义子部分时,子部分不会出现在正确的位置。具体来说,在这种情况下,我得到的是一页顶部是子部分 A,然后是表格列表,但在第一页的末尾我看到写着子部分 B...但那不是表格的正确位置。
您认为为什么会发生这种情况?谢谢。
\newcolumntype{R}[1]{>{\raggedleft}p{#1}}
\subsection{A}
\begin{table}[ht!]
\caption{Movie 01.01.F}
\begin{tabular}{R{3cm} p{9cm}}
\toprule
\textbf{ID} & 01.01.F \\
\midrule
\textbf{Title} & Movie2\\
\textbf{Description} & Movie1\\
\bottomrule
\end{tabular}
\end{table}
.
.
.
\subsection{B}
\begin{table}[ht!]
\caption{Movie 01.02.F}
\begin{tabular}{R{3cm} p{9cm}}
\toprule
\textbf{ID} & 01.02.F \\
\midrule
\textbf{Title} & Movie2\\
\textbf{Description} & Movie2\\
\bottomrule
\end{tabular}
\end{table}
答案1
环境table
定义了一个浮动。浮动就是浮动,也就是说,它们出现在最美观的位置。你可以想象,像表格或图片这样的大东西会占据很大的空间。通常,表格不会跨页拆分,而图形几乎从不拆分。因此,你可能会发现图形或表格必须移到下一页。在文字处理器中,上一页留下巨大的空白是很常见的,表格从下一页开始,然后是更多文本。这不是很好。
为了避免这种情况,您可能熟悉表格和图形有时会出现在章节末尾的专用页面上。或者,您可能会发现它们只出现在页面的顶部和/或底部,而不一定出现在文档中逻辑上应该出现的位置。因此,第一页将填满表格后面的文本,而不是在上一页留下巨大的空白,表格放在下一页,然后是其余的文本。这样更漂亮,更高效,但如果您编写类似as can be seen in the table below:
但是,由于表格通常是被单独引用的,因此这种浮动行为通常是更受欢迎的。
让我告诉你我在说什么。
而不是这样:
其中有红色文本、巨大的间隙、表格,然后是蓝色文本。
我们得到这个:
蓝色文本直接延伸到红色文本之后,第一页就填满了,然后表格出现在下一页的顶部,其余蓝色文本则延伸到其后。但第一页的所有内容都填满了。
该表格出现在代码中红色段落和蓝色段落之间。
如果您希望避免这种浮动行为,第一个方法是使用环境[ht!]
选项table
。可选参数用于告诉 LaTeX 将浮动放置在何处。[ht!]
将使 LaTeX 尽其所能将表格放在输出中与输入中的准确位置。但是,由于印刷方面的考虑,诸如小节标题之类的内容可能会导致问题,我认为这就是您遇到的困难。
因此,如果您不想让表格浮动,那么接下来要做的就是不要浮动表格!:P 环境的目的之一table
就是赋予这种浮动行为。您能根本不把自己封闭tabular
在table
环境中。
然而,table
环境非常重要且非常有用,并且还可以执行您可能想要的标题和表格列表等操作。
您还可以做的一件事就是简单地接受浮动行为,这通常是出于美观考虑。像我这样从文字处理器上学来的人不习惯浮动,并且倾向于避免使用浮动,但这是一种很好的习惯,它们的好处值得牢记。
但是,如果您希望文档保持完美的逻辑流程,每个表格都出现在您想要讨论的位置,那么您可能想尝试一下该placeins
包。这定义了\FloatBarrier
您可以在table
环境之后发出的命令,它将确保table
代码中出现在环境之后的任何内容都不会出现在输出中的表格之前。或者换句话说,表格将出现在您想要的任何位置。这可能会产生糟糕的结果,但请谨慎使用。
梅威瑟:
\documentclass{article}
\usepackage{placeins}
\usepackage{lipsum}
\begin{document}
\lipsum[1-4]
\begin{table}[!ht]
\begin{tabular}{ll}
Column A & Column B \\
1 & 2 \\
3 & 4 \\
5 & 6 \\
7 & 8 \\
9 & 10 \\
11 & 12 \\
13 & 14 \\
15 & 16 \\
17 & 18 \\
19 & 20 \\
21 & 22 \\
23 & 24 \\
25 & 26 \\
27 & 28 \\
29 & 30 \\
31 & 32 \\
33 & 34 \\
35 & 36 \\
\end{tabular}
\end{table}
\FloatBarrier
\lipsum[5-7]
\end{document}
上面的代码示例:
\documentclass[12pt]{article}
\pagestyle{plain}
\usepackage[margin=1.8cm]{geometry}
\geometry{a4paper}
\usepackage[parfill]{parskip}
\usepackage{amsmath}
\usepackage{lipsum}
\usepackage{booktabs}
\usepackage{placeins}
\usepackage[usenames]{color}
\definecolor{red}{rgb}{1,0,0}
\definecolor{blue}{rgb}{0,0,1}
\newcommand{\red}[1]{\textcolor{red}{#1}}
\newcommand{\blue}[1]{\textcolor{blue}{#1}}
\begin{document}
\red{\lipsum[1-4]}
\begin{table}[!ht]
\begin{tabular}{ll}
\toprule
Column A & Column B \\
\midrule
1 & 2 \\
3 & 4 \\
5 & 6 \\
7 & 8 \\
9 & 10 \\
11 & 12 \\
13 & 14 \\
15 & 16 \\
17 & 18 \\
19 & 20 \\
21 & 22 \\
23 & 24 \\
25 & 26 \\
27 & 28 \\
29 & 30 \\
31 & 32 \\
33 & 34 \\
35 & 36 \\
\bottomrule
\end{tabular}
\end{table}
\FloatBarrier
\blue{\lipsum[5-7]}
\end{document}