enumitem 环境之前的换行符

enumitem 环境之前的换行符

我想创建一个显示“解决方案”作为标题的环境。在此标题之后,我希望文本在新行之后开始,因此以下代码应该有效

\newenvironment{sol}{$\triangleright$ \textbf{Solution.} \newline}{$\triangleleft$}

它确实有效,但如果我以 enumitem 环境开始文本,则环境的垂直空间和newline添加的方式会很糟糕。

答案1

不要插入\newline,而要使用\par。同时,您还需要\nobreak以确保后续内容与“标题”保持一致。但是,如果您使用列表,仍然可能会发生中断,因此您可能需要在页面边界周围进行一些手动干预(或求助于类似needspace检查页面上的可用空间)。

在此处输入图片描述

\documentclass{article}

\usepackage{lipsum}
\usepackage{enumitem}

\newenvironment{sol}{%
  $\triangleright$ \textbf{Solution.} \par\nobreak
}{%
  $\triangleleft$%
}

\begin{document}

\lipsum[1][1-5]

\begin{sol}
  \lipsum[2][1-5]
\end{sol}

\begin{sol}
  \begin{itemize}
    \item \lipsum[3][1-5]
  \end{itemize}
  \lipsum[3][6-10]
\end{sol}

\begin{sol}
  \begin{itemize}[nosep]
    \item \lipsum[4][1-5]
  \end{itemize}
  \lipsum[4][6-10]
\end{sol}

\end{document}

相关内容