我在我的课堂上使用以下命令(感谢这个答案):
\renewcommand\section{\@startsection{section}{1}{\z@}%
{3.25ex \@plus1ex \@minus.2ex}%
{-1em}%
{\normalfont\large\bfseries}*}
现在我遇到的问题是,章节标题恰好是页面上的最后一项,而其对应的文本最终出现在下一页。如何更改此定义以防止发生此问题?我尝试\nopagebreak
在之前添加一个作为最后一项}
,但没有成功...
答案1
您可以使用标题安全包来重新定义\section
命令。例如,它说:
*n
如果您不喜欢输入完整的跳过值(包括加号和减号参数),可以使用缩写(其中 n 是整数)。在beforesep
参数中,这相当于n ex
具有一定的可拉伸性和微小的可收缩性。在aftersep
一定的可拉伸性(较小)和无可收缩性的情况下。因此,您可以编写
\titlespacing*{command}{left}{beforesep}{aftersep}[right]
\titlespacing{\section}{0pt}{*4}{*1}
编辑:我相信下面的例子成功地保留了\section
下面的文本。
\documentclass[letterpaper]{article}
\usepackage{lipsum} % generate filler text
\usepackage{titlesec}
\titleformat{\section}[runin]
{\large\bfseries}
{}{0pt}{}
\titlespacing{\section}
{0pt}{*2}{*1}
\begin{document}
\section{Section 1}
\lipsum[1-5]
\section{Section 2}
\lipsum[1-5]
\end{document}
答案2
我不明白它为什么会起作用,但我设法做到了。我只需要\leavevmode
在定义的开头添加:
\renewcommand\section{\leavevmode\@startsection{section}{1}{\z@}%
{3.25ex \@plus1ex \@minus.2ex}%
{-1em}%
{\normalfont\large\bfseries}*}
如果您知道它为什么有效或者它是否是“正确”的解决方案,请告诉我!
编辑:它似乎不会影响所有可能发生分页的情况,因此它不是一个完整的解决方案。