在 NewEnviron 中使用 \verb 和 \begin{verbatim} / \end{verbatim}

在 NewEnviron 中使用 \verb 和 \begin{verbatim} / \end{verbatim}

考虑以下 MWE:

\documentclass[a4paper]{article}

\usepackage{environ}

\NewEnviron{myitemize} {
\show\BODY
\begin{itemize}
\BODY
\end{itemize}
}

\begin{document}

\begin{itemize}
\item \verb|test|
\end{itemize}

\begin{myitemize}
\item \verb|test|
\end{myitemize}

\end{document}

第一个列表有效,但第二个列表会抛出 Latex 错误(缺少 } 插入、额外的 }、\verb 非法...)。这可能与 NewEnviron 收集其主体的方式有关,但有人可以详细说明这个问题吗?

日志文件显示:

> \BODY=macro:
->\item \verb |test|.

那么为什么会出现问题呢?当然,解决方案是什么?

答案1

此问题类似于将\verb参数传递给宏,例如

\newcommand{\mymacro}[1]{#1}

\mymacro{\verb|test|}

在这种情况下,您的解决方案是不使用environ

\documentclass{article}

\newenvironment{myitemize}
  {\begin{itemize}}
  {\end{itemize}}

\begin{document}

\begin{itemize}
  \item \verb|test|
\end{itemize}

\begin{myitemize}
  \item \verb|test|
\end{myitemize}

\end{document}

为什么一开始就会有问题?内容集合修复了类别代码 -\verb需要verbatim访问(或更改)才能正常运行。

相关内容