仅允许在自己的环境中执行某些命令

仅允许在自己的环境中执行某些命令

我想定义一个环境并只允许在和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.

相关内容