我正在尝试创建一个简单的新环境,允许我以带有标题、编号等的逐字文本块显示源代码。我想要的解决方案是使用内置的 LaTeX 逐字环境。
我本来会使用 fancyvrb 包,它似乎允许这种事情,但由于代理身份验证问题,我无法更新我的 MiKTeX 安装。相反,我正在寻找一种方法来做到这一点仅使用内置的逐字环境。当我回到家时,我可以调整它以使用 fancyvrb(所以我仍然对与此相关的答案感兴趣),但现在,我正在寻找一个临时解决方案来帮助我度过这一天。;^)
我想象中的 newenvironment 命令如下:
\usepackage{float}
\floatstyle{boxed}
\newfloat{program}{h}{lop}
\floatname{program}{Example}
\newenvironment{example}[2]{%
\begin{program}%
\label{#1}%
\caption{#2}%
\scriptsize
\begin{verbatim}%
}{%
\end{verbatim}%
\end{program}%
}
它后来失败了,抱怨 \hboxes 过满,我认为这意味着它仍然试图排版我的文档的其余部分,就好像它处于逐字模式一样。
我可以这样使用 verbatim env 吗?有解决方法吗(因为我的 MiKTeX 软件包仓库很小)?
答案1
这对我有用。
\documentclass{article}
\usepackage{verbatim}
\usepackage{float}
\floatstyle{boxed}
\newfloat{program}{h}{lop}
\floatname{program}{Example}
\newbox\examplebox
\newenvironment{example}[2]{%
\program
\caption{#2}%
\label{#1}%
\verbatim
}{%
\endverbatim
\vskip-.7\baselineskip
\endprogram
}
\begin{document}
\begin{example}{foo}{caption}
foo
bar
baz
\end{example}
\end{document}
\label
请注意,在 之后需要有\caption
。\verbatim
该包重新实现的宏verbatim
似乎正在寻找当前环境的名称。这就是它使用\end{foo}
、、和的原因。foo
\program
\verbatim
\endverbatim
\endprogram
这\vskip
不是必需的,但是即使没有它,您也会有额外的空间。