这个问题似乎与当“\parskip”随着“\baselineskip”增加时,如何删除列表后的跳过?但那里给出的答案虽然被接受了,但却不起作用。
我如何\parskip
设置仅有的插入段落之间。目前我的设置导致[h]
-float 或后出现额外的垂直空间{lstlisting}
。后者未在我的文档中使用,但说明了显示样式环境中的问题。* 方程式没有问题。
\documentclass[fleqn]{book}
\usepackage{parskip}
\usepackage{listings}
\begin{document}
XXXXXXXXXXX XXXXXXXXXX XXXXXXXXXXX XXXXX XXXXX
\begin{equation}
xxxxx = xxxxx
\end{equation}
XXXXXXXXXXX XXXXXXXXXX XXXXXXXXXXX XXXXX XXXXX
XXXXXXXXXXX XXXXXXXXXX XXXXXXXXXXX XXXXX XXXXX
XXXXXXXXXXX XXXXXXXXXX XXXXXXXXXXX XXXXX XXXXX
\begin{lstlisting}
LLLLLLLLLLLLLLLLLLL
\end{lstlisting}
XXXXXXXXXXX XXXXXXXXXX XXXXXXXXXXX XXXXX XXXXX
XXXXXXXXXXX XXXXXXXXXX XXXXXXXXXXX XXXXX XXXXX
XXXXXXXXXXX XXXXXXXXXX XXXXXXXXXXX XXXXX XXXXX
\begin{figure}[h]
\rule{10cm}{2cm}
\end{figure}
XXXXXXXXXXX XXXXXXXXXX XXXXXXXXXXX XXXXX XXXXX
XXXXXXXXXXX XXXXXXXXXX XXXXXXXXXXX XXXXX XXXXX
\end{document}
我可以通过插入来修复这个问题,\vspace{-\parskip}
但这是一个糟糕的解决方案——所以像 MS Word 一样 ;-)
* 我正在使用自己创建的环境来mdframed
获取框架盒。
答案1
基本上,我认为您看到的是 a) 列表中的一个错误,LaTex2e 中“此处”浮点数的缺陷,以及选项的equation
环境实现中可能存在的错误fleqn
。该parskip
包实际上在这里没有做太多事情,为了进行测试,我只会将其注释掉并改用\setlength\parskip{33pt}
。
如果你这样做,你会看到 parskip 被插入
- 围绕方程环境(错误?)
- 仅在 lstlisting 环境之后(肯定是 bug)
- 不在浮点周围(但那里的间距不均匀 - 缺陷)
如果您另外删除该选项,则方程周围的空间会消失(实际上它周围不应该有 parskip)。除了建议使用对 有适当实现的fleqn
之外,我们对此无能为力。amsmath
fleqn
关于列表,我认为这是环境的一个错误,因为它总是在上方和下方添加一些空间(可通过设置控制),但此外总是在\parskip
后面添加一个,无论此环境是否被空白行包围。一种解决方法是将“belowskip”配置为“aboveskip”减去 parskip 设置,例如
\setlength\parskip{33pt} % our strange value
\lstset{aboveskip=6pt plus 2pt, belowskip=-27pt plus 2pt}
最后是浮动:这里你能做的不多:如果浮动处于垂直模式(在你的例子中不是),那么你可以应用我的答案intextsep 提供双倍空间
否则,我建议的最好方法是将 a 放在\strut
前面,例如
XXXXXXXXXXX XXXXXXXXXX XXXXXXXXXXX XXXXX XXXXX
\strut
\begin{figure}[h]
\rule{10cm}{2cm}
\end{figure}
CCCXXXXXXX XXXXXXXXXX XXXXXXXXXXX XXXXX XXXXX
如果您\showoutput
在序言中使用,您将看到 LaTeX 正确地将浮动放在\intexsep
浮动的上方和下方,没有其他内容。但是,在浮动之后,还添加了计算的空间以到达下一个基线。并且该量取决于前一行是否为下降行(如果不是,则添加更多空间)。因此,支柱有助于平衡这一点。
从技术上讲,LaTeX 无法(好吧,它是一台图灵机,但需要付出现实的努力)将浮点数放置在计算空间的中间,因为在添加浮点数时尚不知道此信息。
更新
至少自动添加\strut
水平模式的一种方法是使用以下补丁:
\usepackage{etoolbox}
\makeatletter
\patchcmd{\end@float}%
{\vadjust}{\strut\vadjust}%
{\typeout{*** SUCCESS ***}}{\typeout{*** FAIL ***}}
\makeatother