注释包和枚举环境之间的交互不良?

注释包和枚举环境之间的交互不良?

我尝试在环境comment中使用该包enumerate,但出现编译错误。最小示例:

\documentclass{article}
\usepackage{comment}

\specialcomment{com}{}{}
\excludecomment{com}

\begin{document}
\begin{enumerate}
\item Outside.
  \begin{com}
    Inside.
  \end{com}
\end{enumerate}
\end{document}

这会产生以下错误:

Runaway argument?
! File ended while scanning use of \next.
<inserted text> 
                \par 

作为参考,没有 一切都正常工作enumerate,如下例所示:

\documentclass{article}
\usepackage{comment}

\specialcomment{com}{}{}
\excludecomment{com}

\begin{document}
Outside.
\begin{com}
  Inside.
\end{com}
\end{document}

这是一个已知问题吗?我找不到任何相关信息(“评论”并不是一个 Google 友好的搜索词...)。

答案1

comment软件包有一个重要的限制;引用文档

开始和结束命令应单独成行。起始命令和结束命令之间不应有任何空格,后面也不应有任何内容。

因此,关于这一点,没有什么可说的了:不要缩进您想要“注释掉”的环境。

这是一个不同的实现;我保留了三个参数的相同语法\specialcomment,尽管第二和第三个参数没有执行任何操作(可以使用它们进行改进)。

\documentclass{article}
\usepackage{environ,etoolbox}

\newcommand\specialcomment[3]{%
  \newtoggle{#1}\toggletrue{#1}
  \NewEnviron{#1}{\iftoggle{#1}{\BODY}{}}
}
\newcommand{\excludecomment}[1]{\togglefalse{#1}}
\newcommand{\includecomment}[1]{\toggletrue{#1}}

\specialcomment{com}{}{}
\excludecomment{com} 

\begin{document}
\begin{enumerate}
\item Outside.
  \begin{com}
    Inside.
  \end{com}
\item Outside. Inside.
\end{enumerate}
\end{document}

相关内容