我想定义一个环境并只允许在和myenv
之间执行某些预定义的命令。\begin{myenv}
\end{myenv}
例如,我希望忽略在那里输入的文本,并提供允许的命令列表。有办法实现吗?
谢谢。
答案1
为了忽略文本,你可以使用myenv
一种特殊类型的comment
环境(来自同名包)。不过,我认为没有办法只允许一定数量的宏。您可以通过重新定义宏来禁用它,从而给出错误消息。
\documentclass{article}
\usepackage{comment}
\usepackage{lipsum}
\newcommand{\foo}{bar}
\specialcomment{myenv}{
\newcommand{\nomacros}{%
\GenericError{}{%
Illegal macro%
}{}{
This macro is not allowed within the `myenv' environment
}}%
\let\foo\nomacros
\let\bar\nomacros
}{}
\begin{document}
\lipsum[1]
\begin{myenv}
\lipsum[1]
\foo\bar
\end{myenv}
\end{document}
控制台将会给出:
! Illegal macro. Type H <return> for immediate help. ... l.2 \foo \bar ? h This macro is not allowed within the `myenv' environment ? ! Illegal macro. Type H <return> for immediate help. ... l.2 \foo\bar ? x No pages of output.