此类分栏符的示例

此类分栏符的示例

我有一个命令\sectionExercise{...},可以产生一个标题,后面跟着一条粗水平线。

此命令后面总是跟着一个 minipage :\begin{exo}...\end{exo}

有时,(一系列练习的)标题和练习之间会有分栏。

一般来说,有没有办法防止两个“框”之间出现列或页符?

此类分栏符的示例

在此处输入图片描述

一些代码

\newcommand{\sectionExercise}[1]{%
\vspace{8mm plus 2mm minus 1mm}
%\bigskip
{\bfseries \Large #1\par}
\par
\begin{tikzpicture}
    \node[minimum width=\columnwidth, minimum height=2mm] (a) {};
    \draw[color=blue!30, fill=blue!30, rounded corners=2pt] (a.south west) -- (a.north west) -- (a.north east) -- (a.south east) -- cycle ;
\end{tikzpicture}
\gdef\varIsNewSectionExercise{1}
}

答案1

只需在命令中使用\needspace{...}包即可。needspace\sectionExercise

编辑:有人在评论中指出我的回答很短,没有参考也没有例子……这是对的。事实上,我没有 MWE 可以使用。关于参考资料,该软件包随 TeX Live 的官方发行版一起提供,并且有一个仅两个命令的简短文档。实际的解决方案是使用几乎任意长度的命令(在本例中),即\needspace{4\baselineskip}在 OP 定义的命令定义的开头使用。所有其他东西都可以保持不变,并且不会与其他包产生特别的冲突(或许\flushbottom如果有效,它就无法按预期运行)。

编辑:仅供未来的读者参考。此问题也出现在默认命令中,如\section和类似命令。默认情况下,LaTeX 认为将节的标题放在页面末尾并将文本放在新页面的开头是不好看的。但是,如果\section后面跟着,\subsection则可能会发生这种情况。我不知道为什么它不自动处理这种情况,可能是因为不应该在节之后放置新的子节。但是,在这种情况下,needspace可以使用给出的正确选项,而不是使用titlesec

相关内容