我有一个环境,需要确保它的主体始终从新行开始,但这样做时不会添加额外的空白。
我拥有的运行良好,除了一些\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}