如果以“itemize”开头,则隐藏环境无法编译

如果以“itemize”开头,则隐藏环境无法编译

我正在编写一个简单的包,用于我和同事编写的家庭作业练习。根据包选项,文档应该在有或没有答案的情况下进行编译。我通过(重新)定义一个名为的环境来实现这一点answer。由于答案通常包含列表,我使用包的注释功能verbatim,正如 SE 中建议的那样,如下所示。除非答案以其他环境开头,否则一切都正常。我找到了一个简单的解决方法:可以通过{}在环境开头放置一个空字符串来编译 MWE answer,但我不明白,为什么没有这个空字符串就不能编译 MWE?我得到的错误是

 ! File ended while scanning use of \verbatim@.

梅威瑟:

\documentclass{article}
\usepackage{verbatim}
\newenvironment{answer}[1]{\comment}{\endcomment}

\begin{document}
Some text
\begin{answer} %{}
    \begin{itemize}
    \item a 
    \end{itemize}
\end{answer}
\end{document}

答案1

将我的评论转换为答案,并稍加改进:

环境的定义有点像命令:它们可以接受参数,也可以不接受参数。

\newenvironment{env-name}[<num of args>][<opt arg>]{<begin code>}{<end code>}

如果[<num of args]设置了,环境将需要一个参数(或更多)。您的定义指出环境应该接收一个强制参数(无可选参数),因此当您在没有“空字符串”的情况下进行编译时{}会出现错误,因为环境需要一个参数,但没有给出。

此外值得注意的是,环境参数只在部分有效<begin code>,例如

\newenvironment{env-name}[1]{...}{something with #1}

不起作用。

相关内容