我正在编写一个小型库,出于某些原因,似乎无法使用 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
语法试图阐明的那样,抓取其主体的环境本质上是使用环境语法,但实际上将主体作为参数传递给命令。因此,它们继承了对参数的通常限制,逐字命令不起作用。无论环境是使用xparse
或environ
包定义的,还是相同想法的早期自定义实现(例如tabularx
或amsmath
align
环境),这都适用。
如果(如问题中的示例)您不需要将环境主体作为单个参数访问,则可以mythm
使用标准进行定义\newenvironemnt
,然后verbatim
就可以工作了,或者如果在实际用例中您确实需要该功能来获取环境主体,那么您需要记录其他命令参数中对逐字材料的标准限制是否适用。