我有以下代码:
\documentclass{minimal}
\newenvironment{abc}
{\begin{verbatim}}
{\end{verbatim}}
\begin{document}
% This works.
\begin{verbatim}
abc
\end{verbatim}
% This does not work.
\begin{abc}
abc
\end{abc}
\end{document}
我正在尝试创建一个使用 的自定义环境verbatim
。但上述代码不起作用。我该怎么做?
答案1
这取决于所讨论的逐字环境。
verbatim
包环境verbatim
如果您加载包verbatim
,则只要它不隐藏在其他组中,其环境verbatim
就可以在其他环境定义中使用。此外,它不能用作\begin{verbatim}
,因为verbatim
需要知道父环境的名称才能找到结束标记\end{<parent>}
。父环境名称将被 的 LaTeX 代码覆盖\begin
。
例子:
\documentclass{minimal}
\usepackage{verbatim}
\newenvironment{abc}
{\verbatim}
{\endverbatim}
\begin{document}
% This works.
\begin{verbatim}
abc
\end{verbatim}
% This does now work.
\begin{abc}
abc
\end{abc}
\end{document}
包裹fancyvrb
可以通过以下方式创建自定义逐字环境
\DefineVerbatimEnvironment
,例如文档,稍微修改一下:
\documentclass{article}
\usepackage{fancyvrb}
\DefineVerbatimEnvironment{abc}{Verbatim}{%
gobble=2,
numbers=left,
numbersep=2mm,
frame=lines,
framerule=0.8mm,
}
\begin{document}
\begin{abc}
First verbatim line.
Second verbatim line.
\end{abc}
\end{document}
包裹listings
可以使用 来定义环境\lstnewenvironment
。示例来自文档:
\documentclass{article}
\usepackage{listings}
\lstnewenvironment{pascal}{%
\lstset{language=pascal}%
}{}
\begin{document}
\begin{pascal}
for i:=maxint to 0 do
begin
{ do nothing }
end;
\end{pascal}
\end{document}