noindentafter 有或没有空行

noindentafter 有或没有空行

从我读到的内容来看,我原以为这个包裹禁止缩进可以可靠地消除环境后的任何缩进,无论后面是否有空行,如建议的那样这里。但请考虑一下:

\documentclass{report}
\usepackage{lipsum}

\newenvironment{newenv}{}{%
%\ignorespacesafterend\noindent% << OPTION 2
} 
\usepackage{noindentafter}\NoIndentAfterEnv{newenv} % OPTION 1

\begin{document}

\begin{newenv} % First Sequence

\lipsum[6]

\end{newenv}

\lipsum[7-8]

\begin{newenv} % Second Sequence
\lipsum[6]
\end{newenv}
\lipsum[7-8]
\end{document}

使用noindentafter适用于第一个序列,但不适用于第二个序列,因为我在 之后没有留下任何行\end{newenv}。现在我尝试不使用该包,而是使用上面标记为选项 2(取消注释选项 1)的选项手动执行。这适用于第二种情况,但不适用于第一种情况。我进一步尝试同时使用两者(将两个选项都取消注释),这会产生奇怪的结果,虽然在第二种情况下没问题,但在第一种情况下我现在得到了第一个第二环境后的段落没有缩进。

从包装文档和这个问题以及其中提到的那些,我无法弄清楚这里可能出了什么问题。(除了我留下或不留下空行之外,但我正在尝试寻找一个稳定的解决方案,因为我正在处理的特定环境来自\input其他文件,我永远无法确定它们是否以空行结尾。)

答案1

假设您希望始终在环境之后开始一个新段落,您可以这样做:

\documentclass{report}
\usepackage{lipsum}
\usepackage{noindentafter}

\newenvironment{newenv}{}{\par} %\par!
\NoIndentAfterEnv{newenv} 
\makeatletter
\appto\@noindent@newenv@hook{\par}{}{}
\makeatother
\begin{document}
normal indent

\begin{newenv} 

in env

\end{newenv}

after env \par after env

\begin{newenv} 
in env
\end{newenv}
after env \par after env
\end{document}

在此处输入图片描述

相关内容