使用环境进入(新的)xparse 环境

使用环境进入(新的)xparse 环境

我正在编写一个小型库,出于某些原因,似乎无法使用 xparse 的新环境定义方式来嵌套环境。这很烦人,因为我的用户可能想要嵌套环境。知道出了什么问题吗?

错误:

ERROR: Paragraph ended before \@xverbatim was complete.

梅威瑟:

\documentclass{article}
\usepackage{xparse}

\NewDocumentEnvironment{mythm}{O{}+b}{%
  Theorem:

  #2

  ===%
}

\begin{document}

\section{What I'd like to produce}
Theorem:

\begin{verbatim}
I am verbatim
\end{verbatim}

===%

\section{What I'd like to write}
\begin{mythm}
  \begin{verbatim}
    I am verbatim
  \end{verbatim}
\end{mythm}

\end{document}

答案1

正如新的b...#2 语法试图阐明的那样,抓取其主体的环境本质上是使用环境语法,但实际上将主体作为参数传递给命令。因此,它们继承了对参数的通常限制,逐字命令不起作用。无论环境是使用xparseenviron包定义的,还是相同想法的早期自定义实现(例如tabularxamsmath align环境),这都适用。

如果(如问题中的示例)您不需要将环境主体作为单个参数访问,则可以mythm使用标准进行定义\newenvironemnt,然后verbatim就可以工作了,或者如果在实际用例中您确实需要该功能来获取环境主体,那么您需要记录其他命令参数中对逐字材料的标准限制是否适用。

相关内容