Latex\newcommand for\end{verbatim}等不起作用

Latex\newcommand for\end{verbatim}等不起作用,latex,Latex,我试图通过引入一些节省时间的方法使Latex可用,但在定义完全随机终止环境的新命令时遇到了麻烦 这是有效的: \newcommand{\bcv}{\ensuremath{\begin{smallmatrix}} \新命令{\ecv}{\ensuremath{\end{smallmatrix}}} \newcommand{\be}{\begin{enumerate}} \新命令{\ee}{\end{enumerate}} 这不起作用: \newcommand{\bal}{\begin{align*

我试图通过引入一些节省时间的方法使Latex可用,但在定义完全随机终止环境的新命令时遇到了麻烦

这是有效的:
\newcommand{\bcv}{\ensuremath{\begin{smallmatrix}}
\新命令{\ecv}{\ensuremath{\end{smallmatrix}}}
\newcommand{\be}{\begin{enumerate}}
\新命令{\ee}{\end{enumerate}}

这不起作用:
\newcommand{\bal}{\begin{align*}}
\新命令{\eal}{\end{align*}

\newcommand{\verbass}[1]{\begin{verbatim}\1\end{verbatim}

具体来说,我认为\end值只是被忽略了

当我尝试使用
\verbass{Halp}
时,我得到一个错误:
!文件在扫描\@xverbatim时结束。


显然,我可以使用\begin{foo}\根据需要在所有位置结束{foo},但实际上,这应该是可行的

关于动词和逐字逐句有一个非常简短的解释。基本上,动词和逐字逐句首先要“看”它们的内容。

如何
\begin{verbatim}
工作。简略地说

  • \begin{verbatim}
    扩展为
    \verbatim
  • 然后
    \verbatim
    将每个字符的类别代码设置为11。 现在所有的字符都是字母
  • 然后
    \verbatim
    设置字体、对等项并调用
    \@xverbatim
  • \@xverbatim
    使用以下技巧捕捉逐字记录的结尾:

    \def\@xverbatim#1\end{#1\end}
    
    \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}
    
    \def\@xverbatim#1\end{#1\end}
    
    但这是不可能的,因为
    \@xverbatim
    试图捕捉
    \end
    其中所有字母(
    \
    e
    n
    d
    )都属于第11类。 但事实上,有四个字母与其他类别代码:
    \
    类别0和
    e
    n
    d
    类别11

  • \@xverbatim
    正在尝试查找反斜杠(
    \
    )的类别为11但<代码>文件在扫描\@xverbatim时结束

  • 我远不是一个专业的程序员,但快速而肮脏的解决方案可能是:

    \newcommand{\myverbatim}[1]{\begin{tt} \detokenize{#1} \end{tt} \\ }
    

    输出不是很好,因为换行符被忽略。如果需要,可以逐行重复命令(?)

    IMO使用具有代码完成支持的编辑器/工具是比重新定义命令更好的方法。哇,好的,谢谢。是否有任何方法可以说服latex理解\end确实是它应该是什么,即强制\n属于第11类?是的。这是可能的。但它是无用的。所有参数字符都有自己的类别<代码>\verbass{$\u^}将不起作用。您应该制作类似于
    \verbatim
    does.I。。我不明白,但还好。其他命令呢,为什么\ee对我来说很好,但\eal不行?同样,如果我将逐字分割为\begin和\end速记,则\end速记不起作用:(不;不要建议“不太好”的内容。有更好的方法可以做到这一点。关于使用
    tt
    环境,请参阅和