我正在使用for循环以及注释包来定义环境,prob1
通过prob5
这些环境可以排除我文档的部分内容。下面是 MWE:
\documentclass[12pt]{article}
\usepackage{comment}
\usepackage{forloop}
\newcounter{probnum}
\forloop{probnum}{1}{\value{probnum} < 6}{
\excludecomment{prob\arabic{probnum}}
}
\begin{document}
\begin{prob1}
hidden
\end{prob1}
shown
\end{document}
这将引发一个错误:
Runaway argument?
! File ended while scanning use of \next.
<inserted text>
\par
当我使用 Miktex pdfTex 2.9 编译它时。循环不是导致问题的原因,因为如果我删除实际使用环境的代码,它就可以正常工作。
答案1
常见的扩展问题:
\documentclass[12pt]{article}
\usepackage{comment}
\usepackage{forloop}
\newcounter{probnum}
\forloop{probnum}{1}{\value{probnum} < 6}{%
\begingroup\edef\x{\endgroup
\noexpand\excludecomment{prob\arabic{probnum}}%
}\x
}
\begin{document}
\begin{prob1}
hidden
\end{prob1}
shown
\end{document}
替代版本expl3
:
\documentclass[12pt]{article}
\usepackage{comment}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\exclude}{mmm}
{% #1 = prefix, #2 = start, #3 = end
\int_step_inline:nnnn { #2 } { 1 } { #3 }
{
\excludecomment{#1##1} % ##1 is the current step
}
}
\ExplSyntaxOff
\exclude{prob}{1}{5}
\begin{document}
\begin{prob1}
hidden
\end{prob1}
shown
\end{document}