我有一个使用多个自定义逐字环境的文档,使用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}