\section nicht von \parfillskip beeinflussen lassen

\section nicht von \parfillskip beeinflussen lassen

Um Hurensöhne in der letzten Zeile eines Absatzes zu vermeiden, passe ich an parfillskip:

\parfillskip 0pt plus 0.75\textwidth

Dies führt zwar zu schöneren Absätzen, streckt aber auch die Abschnittstitel ein wenig, wie Sie unten sehen können. Der erste Titel ist mit dem Standard parfillskip, der zweite mit 0pt plus 0.75\textwidth:

Wie kann ich meine parfillskipEinstellung für Absätze beibehalten, aber nicht für Titel?

Dieser Code zeigt den Effekt für Text und Titel (Vorschau):

\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}

Antwort1

Der Abschnittstitel wird durch gesetzt \@sect, wodurch der relevante Teil in einer Gruppe zusammengefasst wird. Am Ende wird hinzugefügt \@@par, was das primitive ist \par.

Daher können wir \@sect(für nummerierte Abschnitte) und \@ssect(für nicht nummerierte Abschnitte) sicher patchen:

\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}

Bildbeschreibung hier eingeben

Antwort2

Für die memoirKlasse genügt es, der Präambel hinzuzufügen:

\setsecheadstyle{\Large\parfillskip=0pt plus 1fil}

Antwort3

Da Abschnittstitel auf keinen Fall mit rechtsbündigen Rändern formatiert werden sollten – obwohl die Standarddokumentklassen genau dies tun – sollten Sie dies \raggedrightin der Definition der Abschnittseinteilung deklarieren. Sobald Sie das getan haben, \parfillskipist es irrelevant.

Definieren Sie die Unterteilung nach Ihren Wünschen:

  • mit Memoiren oder Koma oder einer anderen schönen Dokumentklasse;
  • Verwenden Sie ein Paket wie Titlesec oder ein ähnliches.
  • mit Unterteilung der Standard-Dokumentenklassen mittels\@startsection
  • oder, die meisten Hacker, Patch-Befehle wie\@sect

Beispielsweise verwendet die Basisklasse „Artikel“

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

Ein Dokument-Setup könnte also \renewcommandFolgendes enthalten, wobei \raggedrightdas Argument „font-style“ eingefügt wird.

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

verwandte Informationen