删除 minted 环境和 verbatim 环境之间的额外垂直间距

删除 minted 环境和 verbatim 环境之间的额外垂直间距

我使用 minted 来突出显示代码。有时我需要排版代码,然后立即显示错误消息,如下所示

some code
error: blah blah

将代码突出显示应用于错误消息并不合适,因此我使用逐字突出显示:

\begin{minted}{haskell}
some code
\end{minted}
\begin{verbatim}
error: blah blah
\end{verbatim}

但这会增加垂直空间,如下所示:

some code

error: blah blah

我可以使用 \vspace 在两个环境之间使用负长度来消除垂直空间,例如

\begin{minted}{haskell}
some code
\end{minted}
\vspace{-\belowdisplayskip}\vspace{-\abovedisplayskip}
\begin{verbatim}
error: blah blah
\end{verbatim}

但这样会减少太多空间。这里应该怎么做呢?

答案1

您还可以使用escapeinside来删除部分铸块的突出显示。此功能旨在让 LaTeX 处理转义分隔符内的文本格式。但是,它仍然或多或少是逐字的,字体是等宽的,特殊字符(如 ` 或 % 或 ')会正常打印,并且会考虑换行符。

梅威瑟:

\documentclass{article}
\usepackage{minted}
\begin{document}
\begin{minted}[escapeinside=~~]{haskell}
some code
~Prelude.head:42:23: empty list
 when calling recursively MyModule.scan.go:2009:12 and MyModule.scan.view:2009:7
 when calling MyGUI.promptString:1234:321~
\end{minted}
\end{document}

在此处输入图片描述

答案2

垂直空间变成了两倍\topsep\partopsep

\documentclass[10pt]{article}
\usepackage{minted}

\newcommand{\nospacebetweenenvs}{%
  \vspace{-\glueexpr(\topsep+\partopsep)*2}%
}

\begin{document}

\begin{minted}{haskell}
some code
\end{minted}
\nospacebetweenenvs
\begin{verbatim}
error: blah blah
\end{verbatim}

\noindent
\begin{minipage}[t]{0.3\textwidth}
\begin{minted}{haskell}
some code
\end{minted}
\nospacebetweenenvs
\begin{verbatim}
error: blah blah
\end{verbatim}
\end{minipage}%
\begin{minipage}[t]{0.3\textwidth}
\texttt{some code}\\
\makebox[0pt]{\vrule width 6cm height0pt depth 0.1pt}\texttt{error: blah blah}
\end{minipage}

\end{document}

在此处输入图片描述

相关内容