如何避免分节分页?

如何避免分节分页?

这是我的代码:

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{lipsum}
\usepackage{placeins}
\clubpenalty=10000
\widowpenalty=10000
\begin{document}
\section{First}
\lipsum[1-3]
\section{Second}
\FloatBarrier
\begin{table}[h!]
\caption{Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text!}
\begin{tabular}{|c|c|}
\hline  1&2  \\ 
\hline  3&4  \\ 
\hline 
\end{tabular} 
\end{table}
\FloatBarrier
\FloatBarrier
\begin{table}[h!]
\caption{Short text}
\begin{tabular}{|c|c|}
\hline  1&2  \\ 
\hline  3&4  \\ 
\hline 
\end{tabular} 
\end{table}
\FloatBarrier
Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text.
\end{document}

在此处输入图片描述

我的附录中有很多部分,其中包含两个表格和小文本。我不喜欢部分名称单独出现在页面底部而没有表格。我该如何避免这种情况?

附言 \clubpenalty=10000 \widowpenalty=10000

此代码没有帮助。

PSS 我出于很多其他原因需要使用\FloatBarrier。我不喜欢使用 idea,\newpage总是看到这个问题。

答案1

如果有待定浮动(如这里所示),那么\floatBarrier本质上\clearpage会强制分页,您\section在该部分的第一个非浮动文本之后和之前有 4 个 !!!! 命令。如果您在那里放置强制分页符,那么这自然会覆盖 LaTeX 在标题后不分页的所有尝试。

使用[h]很可能会导致您有待处理的不可放置浮动元素,这些浮动元素会漂移到文档末尾。它的意思是不是顶部不是底部不浮动页面换句话说,它几乎不允许所有浮动位置,只留下强制浮动\clearpage或文档结束浮动作为唯一的可能性。为了给自己一个机会,LaTeX 会发出警告

`!h' float specifier changed to `!ht'

但即使ht是相当严格的,也是htp更加合理的。

如果你不想让浮动从一个部分浮动到下一个部分,请使用屏障标题。如果您使用 section 选项,包将自动执行此操作。

在此处输入图片描述

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{lipsum}
\usepackage[section]{placeins}
\clubpenalty=10000
\widowpenalty=10000
\begin{document}
\section{First}
\lipsum[1-3]


\section{Second}

\begin{table}[htp]
\caption{Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text!}
\begin{tabular}{|c|c|}
\hline  1&2  \\ 
\hline  3&4  \\ 
\hline 
\end{tabular} 
\end{table}

\begin{table}[htp]
\caption{Short text}
\begin{tabular}{|c|c|}
\hline  1&2  \\ 
\hline  3&4  \\ 
\hline 
\end{tabular} 
\end{table}

Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text.
\end{document}

如果您有很长(甚至很短)的无文本表格序列,最好使用非浮动环境,例如minipage或使用 float 包H来使table表格不浮动。否则,LaTeX 会保留表格,等待文本填满页面,而文本永远不会出现。在这里,我注释掉了最后的文本,以显示它在这种情况下有效。由于非浮动,LaTeX 会尝试将节头与第一个表格保持一致,因此将两者都放在第 2 页上。

在此处输入图片描述

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{lipsum}
%\usepackage[section]{placeins}
\usepackage{float}
\begin{document}
\section{First}
\lipsum[1-3]


\section{Second}

\begin{table}[H]
\caption{Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text Long text!}
\begin{tabular}{|c|c|}
\hline  1&2  \\ 
\hline  3&4  \\ 
\hline 
\end{tabular} 
\end{table}

\begin{table}[H]
\caption{Short text}
\begin{tabular}{|c|c|}
\hline  1&2  \\ 
\hline  3&4  \\ 
\hline 
\end{tabular} 
\end{table}

%Some text Some text Some text Some text Some text Some text Some text Some text Some text Some text.
\end{document}

答案2

titlesec包有一个 nobottomtitles选项;它定义了一个\bottomtitlespace,使得距离底部边距小于该距离的章节标题将移到下一页,而它们应该出现的页面底部会参差不齐。 \bottomtitlespace 的默认值为0.2\textheight

相关内容