使用 titlesec 和 compact 增加标题间距的可拉伸性

使用 titlesec 和 compact 增加标题间距的可拉伸性

titlesec我有一个使用带有选项的包的双列文档compact。这主要产生了我喜欢的间距,但它没有在部分标题上方提供足够的可拉伸性,这导致垂直框未满并且段落之间有空格。这在具有全宽浮动且只有一列文本有标题的页面中尤其明显(例如\paragraph)。

是否有任何简单的方法可以增加可拉伸性,而不需要猜测值\titlespacing

最小的例子。

\documentclass{article}
\usepackage[compact]{titlesec}
\usepackage{lipsum}
\beforetitleunit=1in % lockstep's suggestion (more or less)
\begin{document}
\section{A}
\lipsum[1]
\subsection{B}
\lipsum[2]
\subsubsection{C}
\lipsum[3]
\paragraph{D}
\lipsum[4]
\end{document}

答案1

查看titlesec.sty,以下代码行似乎为标题前后的间距定义了一个“构建块”(实际间距通过应用乘数确定):

\newskip\beforetitleunit
\beforetitleunit=1ex\@plus.3ex\@minus.06ex
\newskip\aftertitleunit
\aftertitleunit=1ex\@plus.1ex

因此,尝试在序言中添加以下内容,使标题前的可延展性加倍:

\makeatletter
\beforetitleunit=1ex\@plus.6ex\@minus.12ex
\makeatother

编辑:似乎必须添加\titlespacing才能实施对的更改\beforetitleunit。以下内容应可行并产生具有双倍可拉伸性的“紧凑”间距:

\documentclass{article}
\usepackage[compact]{titlesec}
\makeatletter
\beforetitleunit=1ex\@plus.6ex\@minus.12ex
\makeatother
\titlespacing*{\section}{0pt}{*1}{*1}
\usepackage{lipsum}
\begin{document}
\section{A}
\lipsum[1]
\section{B}
\lipsum[1]
\subsection{Ba}
\lipsum[1]
\end{document}

相关内容