我不确定要使用哪个测试。这似乎有效:
\ifcsmacro{myenvironment}{}{
\newenvironment{myenvironment}{Not seen so far.}{End.}
}
可以吗,还是我应该使用其他测试?此外,我不应该使用 etoolbox 吗?我正在使用 etoolbox 执行其他任务,因此在这里使用它似乎很自然。
答案1
这已经足够了,因为 LaTeX 定义了命令\<env>
和\end<env>
执行时\newenvironment{<env>}
。但是,为了安全起见,您可能希望删除任何先前使用的定义,无论出于何种原因\end<env>
,这些定义可能已被定义\def\end<env>{...}
:
\ifcsmacro{myenvironment}{}{
\let\endmyenvironment\undefined%
\newenvironment{myenvironment}{Not seen so far.}{End.}
}
这里,\undefined
是一个未定义的宏。它也可能就是任何未定义的东西,比如\thismacrodoesnotexist
。当然,如果担心\end<env>
可能很重要,那么在定义之前也应该测试一下<env>
,可以将其嵌套在<false>
条件中\ifcsmacro
。