宏定义和测试错误:不完整 \iffalse;第 9 行后所有文本均被忽略

宏定义和测试错误:不完整 \iffalse;第 9 行后所有文本均被忽略

我想定义一个宏来在文件中添加注释.tex。如下面的代码所示,我想注释\begincomment和之间的任何内容\endcomment。但是,它不起作用。错误显示“不完整 \iffalse”。如果我写

   \iffalse xxx \fi

直接,那么一切都会按照我想要的方式运行。但是,我认为这样的代码\iffalse xx \fi不太易读,最好给这个序列起个新名字。比如

    \begincomment
    \endcomment

有人能帮帮我吗?我知道一些实现宏的包\begin{comment}\end{comment},但它在数学模式下不起作用。

\documentclass{amsart}

\def\begincomment{\iffalse}
\def\endcomment{\fi}
\begin{document}

    ------------------

    \begincomment
    aaaaaaaaaaaaaaaa
    \endcomment

    ------------------
\end{document}

答案1

\begincomment 跳过所有内容后,\endcomment不会展开以查看\fi

使用

\let\ifcomment\iffalse

然后你可以使用

\ifcomment

commented out stuff

\fi

答案2

如果忽略的文本是平衡的(即它不包括{}或者它包括它们但只成对匹配),那么您可以定义

\long\def\begincomment #1\endcomment{}

所有匹配的文本后跟\begincomment都会被读入#1参数。找到标记后,此读取将终止\endcomment。宏将扩展为空,#1参数将被遗忘。

答案3

如果你使用解析,那么你可以将其定义为环境:

\documentclass{article}
\usepackage{xparse}
\NewDocumentEnvironment{comment}{+b}{\iffalse #1\fi}{}

\begin{document}

  \begin{comment}
    This is a comment.
  \end{comment}

\end{document}

相关内容