将 placeins 功能扩展到子部分

将 placeins 功能扩展到子部分

我正在使用该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{}
  }

即它附加\FloatBarriersubsection。但是,将这段代码放在后面\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}

相关内容