是否可以通过新环境定义逐字使用?

是否可以通过新环境定义逐字使用?

我正在尝试创建一个简单的新环境,允许我以带有标题、编号等的逐字文本块显示源代码。我想要的解决方案是使用内置的 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不是必需的,但是即使没有它,您也会有额外的空间。

相关内容