在定义环境时,我可以使用\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}