如何在版本包中屏蔽 \begin 和 \end?

如何在版本包中屏蔽 \begin 和 \end?

随着版本包,foo可以创建一个版本开关来打开/关闭在环境中写入的文本foo。我的目标是创建新命令\mybegin和,以屏蔽对和的\myend调用。\begin{foo}\end{foo}

梅威瑟:

\documentclass{article}
\usepackage{versions}

\newcommand{\mybegin}{\begin{foo}}
\newcommand{\myend}{\end{foo}}
 
\excludeversion{foo}

\begin{document}

Nothing to see here.
\mybegin
Surprise!
\myend

\end{document}

但是,此操作失败并出现错误

! Incomplete \iffalse; all text was ignored after line 16. <inserted text>\fi<>

原因似乎是,以in\excludeversion开头并重新定义以生成。现在我假设宏扩展在扩展 时会导致没有。但是,我不知道如何防止这种情况发生。\iffalse\foo\end{foo}\fi\iffalse\fi\mybegin


上下文:最后,我尝试模仿 的行为,如果未定义版本(即不存在或) \processifversion,则生成原始文本。在我的用例中,我不能使用,因为这不允许在参数中列出。我的最终目标是生成类似以下内容的内容:foo\includeversion\excludeversion\processifversion

\makeatletter
\newcommand{\mybegin}{
 \@ifundefined{foo}{\relax}{\begin{foo}}
}
\newcommand{\myend}{
 \@ifundefined{foo}{\relax}{\end{foo}}
}
\makeatother

相关内容