当一个部分跟在浮动元素后面时,两个元素之间的垂直间距过大,因为\intextsep
引入的间距会增加\section
。一般来说,对于添加垂直间距的其他命令(例如下面的 MWE)也是如此\mycommand
。以 MWE 和以下图像为例:
和 :
\documentclass{book}
\usepackage{mwe, lipsum}
\makeatletter
\newcommand{\mycommand}{\par%
\vspace{16pt \@plus 4pt \@minus 2pt}%
{\centering\LARGE * * *\par}%
\vspace{16pt \@plus 4pt \@minus 2pt}%
\@afterindentfalse\@afterheading}
\makeatother
\begin{document}
\lipsum[1]
\begin{figure}[h]
\centering\includegraphics[width =.5\linewidth]{example-image}
\caption{Figure \#1.}
\end{figure}
\mycommand\lipsum[2]
\mycommand\lipsum[2]
\newpage\lipsum[2]
\begin{figure}[h]
\centering\includegraphics[width =.5\linewidth]{example-image}
\caption{Figure \#2.}
\end{figure}
\section{My section}\lipsum[2]
\section{My section}\lipsum[2]
\end{document}
当然,我不希望\intextsep
浮点数后面跟着文本时等于 0。所以我不能简单地写\setlength{\intextsep}{0pt}
。
因此我尝试使用\removelastskip
或\addvspace{...}
代替来\vspace{...}
补偿所添加的空间\intextsep
但无济于事......
\intextsep
你知道如何使位于浮点数顶部和底部的值的垂直空间表现得像\addvspace
,以便位于浮点数之后的宏可以使用吗\addvspace
?\removelastskip
等等?
有趣的是,LaTeX2e 源文档(2023-11-01 版本第 1081 页)中引用了类似的问题:
- 两个连续的 h 浮点数被两个 \intextsep 分隔:可以使用 \addvspace 将其更改为一个,好吗?请注意,如果 h 浮点数紧跟其他空格,则也意味着放入的空间更少。这也可能是一个太大的变化,至少对于兼容模式而言?或者它可能完全是错误的!它没有改变。
按照建议,我想使用浮点数\addvspace
(或至少类似的行为)。有人提到这将是一个大变化,我不知道这是指修改原始代码的复杂性,还是指输出文档中会发现的更改以及由此导致的向后兼容性的缺乏。然而,管理浮点数的命令对我来说太复杂了,远远超出了我对 LaTeX 的理解。\patchcmd{\@addtocurcol}{\skip\intextsep}{\addvspace{\intextsep}}{}
当然,天真的使用并没有解决问题。
答案1
当我偶然发现弗兰克·米特尔巴赫(Frank Mittelbach)的这个答案时,我终于找到了解决方案:https://tex.stackexchange.com/a/40363/209693。
这个答案解决了LaTeX2e源文档中提出的和我的问题中提到的问题,但它也解决了我的问题的主要问题。