我正在尝试定义一个环境/命令,具有以下属性:环境后面的段落不能缩进。以下显示了我定义此类环境/命令的尝试:
\makeatletter
\newenvironment{NoIndEnv}{}{\par\@afterindentfalse\@afterheading}
\newcommand{\NoIndCmd}[1]{#1 \par\@afterindentfalse\@afterheading}
\makeatother
现在比较以下两个:
\begin{NoIndEnv}
Text ...
\end{NoIndEnv}
Some text ...
和
\NoIndCmd{Text ...}
Some text ...
由于某种原因,环境定义只有放在\section
命令之后才有效;即:
\section{}
\begin{NoIndEnv}
Text ...
\end{NoIndEnv}
Some text ...
你能帮我找出问题所在吗?
答案1
问题是,这些操作\@afterindentfalse\@afterheading
是在组内完成的,在环境情况下。解决方案:在组结束后再执行。
\newenvironment{NoIndEnv}
{}
{\par\aftergroup\@afterindentfalse\aftergroup\@afterheading}