![如果以“itemize”开头,则隐藏环境无法编译](https://linux22.com/image/346077/%E5%A6%82%E6%9E%9C%E4%BB%A5%E2%80%9Citemize%E2%80%9D%E5%BC%80%E5%A4%B4%EF%BC%8C%E5%88%99%E9%9A%90%E8%97%8F%E7%8E%AF%E5%A2%83%E6%97%A0%E6%B3%95%E7%BC%96%E8%AF%91.png)
我正在编写一个简单的包,用于我和同事编写的家庭作业练习。根据包选项,文档应该在有或没有答案的情况下进行编译。我通过(重新)定义一个名为的环境来实现这一点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}
不起作用。