![使 \section 不受 \parfillskip 影响](https://linux22.com/image/281536/%E4%BD%BF%20%5Csection%20%E4%B8%8D%E5%8F%97%20%5Cparfillskip%20%E5%BD%B1%E5%93%8D.png)
为了避免段落最后一行出现寡妇词,我进行了调整parfillskip
:
\parfillskip 0pt plus 0.75\textwidth
虽然这会让段落看起来更美观,但也会稍微拉长章节标题,如下所示。第一个标题使用默认的parfillskip
,第二个使用0pt plus 0.75\textwidth
:
我怎样才能保留parfillskip
段落的设置但不保留标题的设置?
此代码展示了文本和标题的效果(预览):
\documentclass{article}
\usepackage{lipsum}
\begin{document}
\section{This is a section title}
\lipsum[1]
\section{This is a section title}
% Fill the last line of paragraphs for minimum 25%
\parfillskip 0pt plus 0.75\textwidth
\section{This is a section title}
\lipsum[1]
\end{document}
答案1
章节标题由 排版\@sect
,恰好将相关部分括在一个组中。最后添加了\@@par
,这是原始的\par
。
因此,我们可以安全地修补\@sect
(针对编号部分)和\@ssect
(针对未编号部分):
\documentclass{article}
\usepackage{etoolbox}
\makeatletter
\patchcmd{\@sect}{\begingroup}{\begingroup\parfillskip=0pt plus 1fil\relax}{}{}
\patchcmd{\@ssect}{\begingroup}{\begingroup\parfillskip=0pt plus 1fil\relax}{}{}
\makeatother
\usepackage{lipsum}
\begin{document}
\section{This is a section title}
\lipsum[1]
% Fill the last line of paragraphs for minimum 25%
\parfillskip 0pt plus 0.75\textwidth
\section{This is a section title}
\lipsum[1]
\end{document}
答案2
对于该类memoir
,只需在序言中添加以下内容:
\setsecheadstyle{\Large\parfillskip=0pt plus 1fil}
答案3
由于在任何情况下,节标题都不应采用右对齐边距的格式 - 尽管默认文档类正是这样做的 - 因此您应该\raggedright
在节的定义中声明;一旦您这样做,就\parfillskip
无关紧要了。
按照您的需要定义分段:
- 与回忆录或koma或其他精美文件类;
- 使用像 titlesec 或类似的包;
- 使用标准文档类进行分段
\@startsection
- 或者,最黑客的补丁命令如下
\@sect
例如,基本的“文章”类使用
\newcommand\section{\@startsection {section}{1}{\z@}%
{-3.5ex \@plus -1ex \@minus -.2ex}%
{2.3ex \@plus.2ex}%
{\normalfont\Large\bfseries}}
因此文档设置可以包括在字体样式参数中插入\renewcommand
的\raggedright
\makeatletter
\renewcommand\section{\@startsection {section}{1}{\z@}%
{-3.5ex \@plus -1ex \@minus -.2ex}%
{2.3ex \@plus.2ex}%
{\normalfont\raggedright\Large\bfseries}}