我想定义一个宏来在文件中添加注释.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}