![以下环境定义有什么错误?](https://linux22.com/image/438512/%E4%BB%A5%E4%B8%8B%E7%8E%AF%E5%A2%83%E5%AE%9A%E4%B9%89%E6%9C%89%E4%BB%80%E4%B9%88%E9%94%99%E8%AF%AF%EF%BC%9F.png)
我想定义一个环境来隐藏文本,并在 pdf 输出的前后显示警告。以下定义有什么问题?
\newenvironment{foldit}
{NB! NB! FOLDED TEXT BELOW\\ NB! NB! FOLDED TEXT BELOW\\ \iffalse}
{\fi ~~\\ NB! NB! FOLDEDTEXTABOVE \\ NB! NB! FOLDEDTEXTABOVE}
当我尝试用 括住一些文本时\begin{foldit} .... \end{foldit}
,收到错误消息:不完整\iffalse; all text was ignored after line 105.
答案1
考虑使用environ
定义foldit
。它以与您期望的类似方式处理环境定义\newcommand
,参数为\BODY
- 环境主体(在\begin{<env>}
...之间\end{<env>}
)。
\documentclass{article}
\usepackage{environ,lipsum}
\NewEnviron{foldit}{%
\par\noindent NB! NB! FOLDED TEXT BELOW
\par\noindent NB! NB! FOLDED TEXT BELOW
%\BODY
\par\noindent NB! NB! FOLDED TEXT ABOVE
\par\noindent NB! NB! FOLDED TEXT ABOVE
}
\begin{document}
1: \lipsum[1]
\begin{foldit}
2: \lipsum[1]
\end{foldit}
3: \lipsum[3]
\end{document}
答案2
您可能想尝试包environ
或comment
:
\documentclass{article}
\usepackage{parskip}
\usepackage{comment}
\usepackage{environ}
\NewEnviron{foldit}{%
NB! NB! FOLDED TEXT BELOW\\
NB! NB! FOLDED TEXT BELOW\\
%\BODY
NB! NB! FOLDEDTEXTABOVE\\
NB! NB! FOLDEDTEXTABOVE\\
}
\NewEnviron{unfoldit}{%
NB! NB! FOLDED TEXT BELOW\\
NB! NB! FOLDED TEXT BELOW\\
\BODY\\
NB! NB! FOLDEDTEXTABOVE\\
NB! NB! FOLDEDTEXTABOVE\\
}
\begin{document}
Line~1.
\begin{comment}
Line~2.
\end{comment}
Line~3.
\begin{foldit}
Line~4.
\end{foldit}
\begin{unfoldit}
Line~5.
\end{unfoldit}
\end{document}