我正在尝试为 verbatim 环境创建一个别名,如下所示:
\newcommand{\vb}[1]{\begin{verbatim} #1 \end{verbatim}}
所以我可以像这样使用它:
\vb{
word.
}
但是在使用它时,我收到此错误:
! Missing $ inserted.
<inserted text>
$
l.93 \end{verbatim}
第 93 行是我在关闭文件后使用的逐字环境的结尾\vb
。如果我用语法替换所有verbatim
环境\vb
,则会出现此错误:
Runaway argument?
zip([],B) = case ([],B) of ([],_) => [] | (_,[]) => [] | (x::L,y::R\ETC.
! File ended while scanning use of \@xverbatim.
<inserted text>
\par
所以看起来好像\vb
没有正确关闭环境?我该如何让它工作?最终目标是获得一个\vb
我可以像上面描述的那样使用的命令,如果我可以将命令中的内容缩进\vb
几毫米,则可以获得加分。
答案1
一般规则是不能有\begin{verbatim}
或该\verb
命令是另一个命令的参数,包括的参数\newcommand
。
如果你真的想要使用该语法,您当然不能在参数中使用括号并希望它们被打印为自己:要么它们界定参数,要么它们必须被打印。
如果这个限制让你满意,那么
\makeatletter
\newcommand{\vb}{%
\begingroup
\advance\@totalleftmargin\parindent
\@verbatim
\catcode`{=1 \catcode`}=2 \catcode` =10
\frenchspacing
\@vb}
\def\@vb#1{#1\endtrivlist\endgroup}
\makeatother
可以让你写
\vb{
word.
}
我不认为这比说
\begin{verbatim}
word.
\end{verbatim}
如果您想要逐字缩进,请查看包所提供的环境xleftmargin
中的选项。Verbatim
fancyvrb