我怎样才能消除此处出现的多余空格?
我希望上方和下方的空间Verbatim
相同,但这里似乎仅在底部添加了大约 4-8pt 的额外空间。
\documentclass{article}
\usepackage{fancyvrb}
\fvset{listparameters=\setlength{\topsep}{0pt}\setlength{\parsep}{0pt}}
\begin{document}
Here is some text. Here is some text. Here is some text. Here is some text. Here is some text. Here is some text. Here is some text,
\begin{Verbatim}[frame=single]
some code
\end{Verbatim}
which continues later.
\end{document}
改变topsep
似乎没有帮助
答案1
使用\showoutput
,我们可以在日志文件中查看 latex 如何输入Verbatim
env 的详细信息。问题似乎与框架有关。当涉及到框架时,顶部规则之前的输出(左图)和底部规则之后的输出(右图)如下所示:
env后面多出来的空格Verbatim
是因为 5.05556pt 造成的\baselineskip
,Verbatim
env 前面没有这个 glue 值,原因是开始绘制的时候\baselineskip\z@
设置了 frame 规则,查看fancyvrb.sty
文件中相关的 frame 代码(行:812 到 830):
\def\FV@BeginListFrame@Single{%
\lineskip\z@
\baselineskip\z@
\ifx\FancyVerbFillColor\relax
\let\FV@FrameFillLine\relax
\else
\@tempdima\FV@FrameRule\relax
\multiply\@tempdima-\tw@
\edef\FV@FrameFillLine{%
{\noexpand\FancyVerbFillColor{\vrule\@width\number\@tempdima sp}%
\kern-\number\@tempdima sp}}%
\fi
%% DG/SR modification begin - May. 19, 1998
%% \FV@SingleFrameLine
\FV@SingleFrameLine{\z@}%
%% DG/SR modification end
\penalty\@M
\FV@SingleFrameSep
\penalty\@M}
因此,如果我们在环境\vspace{5.05556pt}
之前添加一个Verbatim
,它应该在上方和下方之间提供几乎相同的垂直空间(在输入过程中仍有一些橡胶长度,我认为它们不是精确的值)。
\documentclass{article}
\usepackage{lipsum}
\usepackage{fancyvrb}
\fvset{listparameters=\setlength{\topsep}{0pt}\setlength{\parsep}{0pt}}
\showoutput
\begin{document}
Here is some text.
\begin{Verbatim}[frame=single]
some code
\end{Verbatim}
which continues later.
Here is some text.
\vspace{5.05556pt}\begin{Verbatim}[frame=single]
some code
\end{Verbatim}
which continues later.
\end{document}