如何为自定义 Verbatim 环境设置顶部边距 (fancyvrb)

如何为自定义 Verbatim 环境设置顶部边距 (fancyvrb)

来自fancyvrb 文档,看来我只能设置左右边距(第 4.1.13 段)。如何设置适合我环境的上边距?

更具体地说,假设我的环境中有一个框架和一个顶部标题,我希望在顶部框架和第一行文本之间有一些额外的填充。

\newcommand{\shellheader}{This is a Shell}
\DefineVerbatimEnvironment{shell}{Verbatim}
{label=\shellheader,frame=single}

答案1

我提出了一个可怕的黑客攻击,它应该考虑到你的所有需求:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{fancyvrb}


\DefineVerbatimEnvironment{shell}{Verbatim}{
  commandchars=\%\{\},
  label=\shelltitle,
  frame=single,
  formatcom=\setcounter{prompt}{0}\start
}
\newcommand{\shelltitle}{This is a shell}

\makeatletter
\def\start{\let\FV@FV@ProcessLine\FV@ProcessLine
  \def\FV@ProcessLine{\noindent\vrule height3ex depth2ex 
                      \hbox to\hsize{\kern\FV@FrameSep This is the shell prompt\hfil}%
                      \kern-.8pt\vrule\par
                      \let\FV@ProcessLine\FV@FV@ProcessLine
                      \FV@ProcessLine}%
}
\makeatother

\newcounter{prompt}
\newcommand{\prompt}{\stepcounter{prompt}\theprompt>}

\begin{document}
\begin{shell}
%prompt echo foo{}
foo
%prompt echo bar
bar
\end{shell}
\end{document}

作用于3ex2ex修改固定的“这是 shell 提示符”前后的间距。

在此处输入图片描述

相关内容