我正在尝试构建一个新环境,该环境将允许我使用新环境格式化任意列表类型(逐项列举、枚举、描述等)。因此,我将其作为参数传递给新环境,但当我尝试执行以下操作时,它会发出抱怨:
\newenvironment{mylist}[1]
{
\begin{#1}
#Environment definition here
}
{\end{#1}}
我收到以下错误:
! \endmylist 定义中的参数数量非法。1 l.15 {\end{#1}}
我怎样才能将参数传递到结束块?
答案1
一种可能性是使用xparse
包:
\usepackage{xparse}
\NewDocumentEnvironment{mylist}{m}{%
\begin{#1}%
% other code
}{%
\end{#1}%
}
答案2
这environ
包裹是实现此目的的另一种方法,因为它像宏一样协商环境内容(称为\BODY
),并允许您根据需要在其周围放置参数。以下是一个例子:
\documentclass{article}
\usepackage{environ,lipsum}
\NewEnviron{myenv}[1]{%
\textbullet~Some code #1 \textbullet\par% Use argument before \BODY ~ \begin{myenv}
\BODY \par
\textbullet~Some code #1 \textbullet% Use argument after \BODY ~ \end{myenv}
}
\begin{document}
\lipsum[1][1]
\begin{myenv}{argument}
\lipsum[1][2-5]
\end{myenv}
\lipsum[1][6]
\end{document}