我正在使用该placeins
包来确保浮点数停留在各自的部分内(使用\usepackage[section]{placeins}
)。
我想扩展此功能以包括subsections
,而不必\FloatBarrier
每次都手动添加。
我发现这个答案然而,在网上查看时,我不想将额外的包添加到我的发行版中,因为它不会得到更新并且将来可能会出现故障。
我翻遍了整个文件,发现文件的这一部分.sty
可以满足我的要求:
\AtBeginDocument{%
\expandafter\renewcommand\expandafter\subsection\expandafter
{\expandafter\@fb@subsecFB\subsection}%
\newcommand\@fb@subsecFB{\FloatBarrier
\gdef\@fb@afterHHook{\@fb@topbarrier \gdef\@fb@afterHHook{}}}
\g@addto@macro\@afterheading{\@fb@afterHHook}
\gdef\@fb@afterHHook{}
}
即它附加\FloatBarrier
到subsection
。但是,将这段代码放在后面\usepackage[section]{placeins}
似乎不起作用。
我猜 LaTeX 命令语法比我写的要多,而且我理解得不太对,但我对 LaTeX 的了解还不足以自己调试这个问题。有人愿意帮忙吗?
以下是 MWE:
\documentclass{report}
\usepackage[section]{placeins}
\AtBeginDocument{%
\expandafter\renewcommand\expandafter\subsection\expandafter
{\expandafter\@fb@subsecFB\subsection}%
\newcommand\@fb@subsecFB{\FloatBarrier
\gdef\@fb@afterHHook{\@fb@topbarrier \gdef\@fb@afterHHook{}}}
\g@addto@macro\@afterheading{\@fb@afterHHook}
\gdef\@fb@afterHHook{}
}
\begin{document}
\section{Section 1}
\begin{figure}
\centering
\Large A
\caption{First figure}
\end{figure}
\subsection{Subsection 1.1}
\begin{figure}
\centering
\Large B
\caption{Subsection 1.1 figure}
\end{figure}
\subsection{Subsection 1.1}
\begin{figure}
\centering
\Large C
\caption{Subsection 1.2 figure}
\end{figure}
\section{Section 2}
\end{document}