使 \section 不受 \parfillskip 的影響

使 \section 不受 \parfillskip 的影響

為了避免段落最後一行出現寡字,我調整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就變得無關緊要了。

根據需要定義分段:

  • 與回憶錄或科馬或其他不錯的文件類;
  • 使用像 titlesec 這樣的套件或類似的套件;
  • 使用標準文檔類別的分段\@startsection
  • 或者,最黑客的補丁命令,例如\@sect

例如,基本的“文章”類別使用

\newcommand\section{\@startsection {section}{1}{\z@}%
                               {-3.5ex \@plus -1ex \@minus -.2ex}%
                               {2.3ex \@plus.2ex}%
                               {\normalfont\Large\bfseries}}

因此文件設定可以包括在 font-style 參數中插入的\renewcommand內容\raggedright

\makeatletter
\renewcommand\section{\@startsection {section}{1}{\z@}%
                               {-3.5ex \@plus -1ex \@minus -.2ex}%
                               {2.3ex \@plus.2ex}%
                               {\normalfont\raggedright\Large\bfseries}}

相關內容