自定义逐字环境之间的间距

自定义逐字环境之间的间距

我有一个使用多个自定义逐字环境的文档,使用fancyvrb 包fancyvrb。这些周围的间距由我自己的代码控制;我已使用以下方法禁用了添加的间距

\let\FV@ListVSpace\relax

但是,当两个逐字环境出现在一个itemize(或其他列表环境)内时,它们之间会插入一个垂直空格。

\documentclass{article}
\usepackage{fancyvrb}
\DefineVerbatimEnvironment{code}{Verbatim}{}
\DefineVerbatimEnvironment{mapleerror}{Verbatim}{}

\begin{document}
\begin{itemize}
\item 
Implied multiplication is not supported in Maple notation. 
Omitting an asterisk will usually lead to an error message.
\medskip
\makeatletter
\let\FV@ListVSpace\relax
\makeatother
\begin{code}
2 sin( Pi ) ; 
\end{code}
\begin{mapleerror}
Error, missing operator or `;`
\end{mapleerror}
\end{itemize}
\end{document}

间距

是什么导致了不需要的空间?我该如何消除它?

答案1

您还必须清除内部参数\@topsepadd;最好以组的形式进行。

\documentclass{article}
\usepackage{fancyvrb}
\DefineVerbatimEnvironment{code}{Verbatim}{}
\DefineVerbatimEnvironment{mapleerror}{Verbatim}{}

\makeatletter
\newenvironment{tightcodes}
 {\let\FV@ListVSpace\relax\@topsepadd=0pt }
 {}

\begin{document}
\begin{itemize}
\item 
Implied multiplication is not supported in Maple notation. 
Omitting an asterisk will usually lead to an error message.
\medskip
\begin{tightcodes}
\begin{code}
2 sin( Pi ) ; 
\end{code}
\begin{mapleerror}
Error, missing operator or `;`
\end{mapleerror}
\end{tightcodes}

\item Something else
\end{itemize}

\begin{tightcodes}
\begin{code}
2 sin( Pi ) ; 
\end{code}
\begin{mapleerror}
Error, missing operator or `;`
\end{mapleerror}
\end{tightcodes}

\end{document}

在此处输入图片描述

相关内容