是否可以注释掉已经定义的环境?

是否可以注释掉已经定义的环境?

我已经定义了以下生成问题陈述的环境:

\newcounter{psctr}
\newcounter{probctr}[psctr]

\NewDocumentEnvironment{prob}{o}{%
\addtocounter{probctr}{1}
\vspace{.15in}

\IfNoValueTF{#1} {%
    \noindent\textbf{Problem \thepsctr.\theprobctr}%
}{%
    \noindent\textbf{Problem \thepsctr.\theprobctr} (#1 points) %
}%

\smallskip\noindent\ignorespaces%
}{}

我想prob在整个文档中显示或隐藏实例。我尝试comment使用 进行打包\excludecomment{comment},但这会产生错误。有没有办法注释掉已经定义的环境?

答案1

您可以使用该comment包:

\documentclass{scrreprt}

\usepackage{xparse,comment}
\newcounter{psctr}
\newcounter{probctr}[psctr]

\NewDocumentEnvironment{prob}{o}
 {%
  \par
  \addvspace{.15in}%
  \addtocounter{probctr}{1}%
  \noindent\textbf{Problem \thepsctr.\theprobctr}%
  \IfNoValueF{#1}{ (#1 points)}%
  \par\nopagebreak\smallskip\noindent\ignorespaces%
 }
 {\par\addvspace{.15in}}

%\excludecomment{prob}

\begin{document}
test
\begin{prob}[2]
test
\end{prob}
\end{document}

删除%前面的\excludecomment{prob}以禁用该环境。

我对您的定义做了一些修正。在这种情况下,最好使用\addvspace而不是,这样垂直空间就不会简单地添加;我也在问题文本后添加了它,但两个连续的问题将只有一个垂直空间。此外,在之前也需要添加 ,以避免在“问题 n”和文本之间出现不必要的分页符。\vspace\nopagebreak\smallskip

答案2

您可以使用为此目的verbatim定义环境的包。comment

因此,写作

\let\prob\comment
\let\endprob\endcomment

你说你的prob环境应该被视为一条评论。

梅威瑟:

\documentclass[liststotoc,bibtotoc,headsepline]{scrreprt}%draft
\usepackage{xparse,verbatim}
\newcounter{psctr}
\newcounter{probctr}[psctr]

\NewDocumentEnvironment{prob}{o}{%
\addtocounter{probctr}{1}
\vspace{.15in}

\IfNoValueTF{#1} {%
    \noindent\textbf{Problem \thepsctr.\theprobctr}%
}{%
    \noindent\textbf{Problem \thepsctr.\theprobctr} (#1 points) %
}%

\smallskip\noindent\ignorespaces%
}{}
\let\prob\comment
\let\endprob\endcomment
\begin{document}
test
\begin{prob}
test
\end{prob}
\end{document}

相关内容