忽略环境后的空格和 \par

忽略环境后的空格和 \par

在定义环境时,我可以使用\ignorespacesafterend来忽略环境后的所有空格。但我如何才能同时忽略\par环境后的所有 s 和空行呢?

换句话说,我怎样才能修改以下乳胶源

\documentclass{article}

\newenvironment{abc}{\ignorespaces}{\ignorespacesafterend}

\begin{document}

\begin{abc}
One
\end{abc} 
\par
\begin{abc}
Two
\end{abc} 

\begin{abc}
Three
\end{abc}

\end{document}

得到以下结果?

OneTwoThree

答案1

您需要将命令放在正确的位置(这就是为什么 latex 不仅仅如此\ignorespacesafterend\ignorespaces此外,您的示例结果表明,您不仅希望忽略后面的空格\end{},还希望消除之前已经添加了空格,因此\ifhmode\unskip\fi有一行。定义与链接问题中的定义不太一样(我删除了 catcode 设置)

\documentclass{article}

\newenvironment{abc}{\ignorespaces}{%
\ifhmode\unskip\fi
\aftergroup\useignorespacesandallpars}

\def\useignorespacesandallpars#1\ignorespaces\fi{%
#1\fi\ignorespacesandallpars}

\makeatletter
\def\ignorespacesandallpars{%
  \@ifnextchar\par
    {\expandafter\ignorespacesandallpars\@gobble}%
    {}%
}
\makeatother

\begin{document}

\begin{abc}
One
\end{abc} 
\par
\begin{abc}
Two
\end{abc} 

\begin{abc}
Three
\end{abc}

\end{document}

相关内容