我正在使用\usepackage[section,above,below]{placeins}
它,它完全符合我的要求。为了避免出现太多空白页,我正在寻找一个命令来禁用\FloatBarrier
以下\section
内容。这可能吗?
请考虑这个例子来说明这个问题:
\documentclass{book}
\usepackage[section,above,below]{placeins}
\usepackage{graphicx}
\begin{document}
\chapter{Only chapter}
This very short introduction leaves most of the page empty...
% ---- HERE, A PAGE BREAK OCCURS ----
\begin{figure}
\includegraphics[width=\textwidth,height=8cm]{example-image-a}
\caption{heading}\label{key}
\end{figure}
\section{My section}
This page break is annoying!
\end{document}
答案1
placeins
您可以在修改之前保存原始部分命令:
\documentclass{book}
\let\origsection\section
\usepackage[section,above,below]{placeins}
\usepackage{graphicx}
\begin{document}
\show\section
\chapter{Only chapter}
This very short introduction leaves most of the page empty...
% ---- HERE, A PAGE BREAK OCCURS ----
\begin{figure}
\includegraphics[width=\textwidth,height=8cm]{example-image-a}
\caption{heading}\label{key}
\end{figure}
\origsection{My section}
This page break is annoying!
\end{document}
答案2
该section
选项placeins
基本上变成\section
了:
\FloatBarrier\section
David 的解决方案旨在局部地回到的初始定义\section
。
这是另一种方法。它\FloatBarrier
改为局部禁用 的效果:
\let\saveFloatBarrier\FloatBarrier% save the original command
\let\FloatBarrier\relax% disable FloatBarrier's effect
\section{My section without float barrier}
\let\FloatBarrier\saveFloatBarrier% restore FloatBarrier's original definition.
我更喜欢这种方法,因为它不会摆弄\section
的定义,您可以继续使用常规\section
命令(这使得语法突出显示和 IDE 跟踪分段),并且所有重新定义都位于它生效的位置(即靠近宏\section
,而不是在序言中)。
但是,这种方法更冗长且不太紧凑 - 特别是如果您打算多次使用 (David 的答案一劳永逸地解决了这个问题)。
\documentclass{book}
\usepackage[section,above,below]{placeins}
\usepackage{graphicx}
\begin{document}
\chapter{Only chapter}
This very short introduction leaves most of the page empty...
\begin{figure}
\includegraphics[width=\textwidth,height=8cm]{example-image-a}
\caption{heading}\label{key}
\end{figure}
\let\saveFloatBarrier\FloatBarrier
\let\FloatBarrier\relax
\section{My section}
\let\FloatBarrier\saveFloatBarrier
This page break is annoying!
\end{document}