我试图通过引入一些timeavers来使Latex可用,但我在定义终止环境的新命令方面遇到了麻烦,完全是随机的。
这有效:
\newcommand{\bcv}{\ensuremath{\begin{smallmatrix}}}
\newcommand{\ecv}{\ensuremath{\end{smallmatrix}}}
\newcommand{\be}{\begin{enumerate}}
\newcommand{\ee}{\end{enumerate}}
这不起作用:
\newcommand{\bal}{\begin{align*}}
\newcommand{\eal}{\end{align*}}
\newcommand{\verbass}[1]{\begin{verbatim} #1 \end {verbatim}}
具体来说,我认为\ end值只是被忽略了?
当我尝试使用\verbass{Halp}
时出现错误:!File ended while scanning use of \@xverbatim.
显然我可以根据需要在所有位置使用\ begin {foo} ... \ end {foo},但实际上,这应该可行!
答案 0 :(得分:5)
\begin{verbatim}
如何运作。简要而粗略地说。
\begin{verbatim}
已扩展为\verbatim
。 \verbatim
将每个字符的类别代码设置为11。
现在所有的字符都是字母。\verbatim
设置字体,parindent并调用\@xverbatim
。 \@xverbatim
使用以下技巧捕获逐字结尾:
\def\@xverbatim#1\end{#1\end}
然后\ end {verbatim}完成工作。
\newcommand{\verbass}[1]{\begin{verbatim} #1 \end {verbatim}}
如何运作。
\verbass{Halp}
读取其论点。#1 --> Halp
\verbass
扩展为\begin{verbatim} Halp \end {verbatim}
。
重要提示: \end
的反斜杠有0类而不是11。
此外,{
和}
有类别1和2而不是11。\begin{verbatim}
展开为\varbatim
。
\varbatim
更改所有类别和字体。但是(重要)
反斜杠的类别(在\end
中)保持等于0. \verbatim
拨打\@xverbatim
。 \@xverbatim
尝试使用以下技巧捕捉您的论点:
\def\@xverbatim#1\end{#1\end}
但由于\@xverbatim
试图抓住,这是不可能的
\end
所有字母(\
,e
,n
,d
)都属于类别11。
但实际上有四个字母与其他类别代码:
{0}的\
和{11}的e
,n
,d
。
\@xverbatim
正在尝试查找\end
,其中反斜杠(\
)的类别为11但.... File ended while scanning use of \@xverbatim
答案 1 :(得分:0)
有关动词和逐字的简短解释here。基本上,LaTeX坚持动词和逐字首先“看”他们的内容。
答案 2 :(得分:-1)
我远不是一名专业的程序员,但是快速而肮脏的解决方案可能是:
\newcommand{\myverbatim}[1]{\begin{tt} \detokenize{#1} \end{tt} \\ }
输出不是很好,因为忽略了换行符。如果需要,可以逐行重复命令(?)。