我如何确保接下来的事情总是在新行的开头?

我如何确保接下来的事情总是在新行的开头?

我有一个环境,需要确保它的主体始终从新行开始,但这样做时不会添加额外的空白。

我拥有的运行良好,除了一些\paragraph{...}与它和我的环境之间没有任何文本有关的极端情况。

\documentclass[12pt]{article}

\begin{document}

\newenvironment{foo}{
\par
}{
}

\section{Foo}
\begin{foo}
OK
\end{foo}

\paragraph{Bar} chart.
\begin{foo}
OK
\end{foo}

\paragraph{Baz}
\begin{foo}
Bad
\end{foo}

\end{document}

我可以通过在正确的位置添加来强制开始新行~\\,但这也会在所有其他正确用法的开头添加一个空白。

答案1

我们在某个地方遇到了一个问题,需要提供更好的界面,但你可以检测待处理的运行头或列表项,并使用\leavevmode

在此处输入图片描述

\documentclass[12pt]{article}

\begin{document}
\makeatletter
\newenvironment{foo}{%
\if@inlabel\leavevmode \fi
\if@noskipsec\leavevmode \fi
\par
}{
}
\makeatother
\section{Foo}
\begin{foo}
OK
\end{foo}

\paragraph{Bar} chart.
\begin{foo}
OK
\end{foo}

\paragraph{Baz}
\begin{foo}
Bad
\end{foo}

\end{document}

相关内容