Sie sind hier

Platz vor und nach Sections anpassen

Aktuell verwende ich das Paket titlesec um den Platz vor und nach Section Überschriften anzupassen. Konkret wollte ich den Platz verringern, weil ich den Eindruck hatte, dass dieser zu groß war oder zu groß gestreckt werden konnte.

Mit titlesec geht das dann wie folgt:

% spacing before and after sections
\titlespacing*{\section}{0pt}{*2.0}{*0.5}
\titlespacing*{\subsection}{0pt}{*1.5}{*0.5}
\titlespacing*{\subsubsection}{0pt}{*1.5}{*0.5}

Die Überschriften sind dabei schon mit small eingestellt:

\KOMAoptions{headings=small}

Die Frage wäre, ob diese Abstände auch direkt mit KOMA-Script Klassen oder Paketen einstellen kann.

Bild von Markus Kohm

Auf Entwicklerebene sei auf die Definitionen der Befehle im dokumentierten Quelltext verwiesen.

BTW: Wenn Du die Überschriften mit einem Paket umdefinierst, musst Du beachten, dass dabei Teile der Funktionalität von KOMA-Script verloren gehen. So ist dann nicht mehr gewährleistet, dass Option headings noch eine Auswirkung hat oder dass die Erweiterungen für das optionale Argument der Gliederungsbefehle noch funktionieren.

Wäre es nicht bedenkenswert, für diese skips auch veränderliche Werte à la \chapterheadstartvskip, \chapterheadendvskip (u. Ä. bei Parts) einzuführen? Das würde das Ausweichen auf andere Pakete (und damit Verlust schöner KOMA-Einstellungen) vermeiden.

Bild von Markus Kohm

\chapterheadendvskip und \chapterheadstartvskip sind weit mehr als nur skips. Und wenn man die Kontrolle über die Überschriften der unteren Ebenen unbedingt auf Anwenderebene haben möchte braucht man doch nur ein

\newcommand*{\DeclareSection}{\@startsection}

und hat dann alles, was man braucht. Natürlich ist es sinnvoll, in dem Fall die Voreinstellungen von KOMA-Script für diese Befehle anzuschauen, damit man möglichst viel davon übernimmt und so möglichst viele Features erhält. Und natürlich ändern sich diese Voreinstellungen von Zeit zu Zeit im Detail, um Verbesserungen zu ermöglichen. Genau aus letzterem Grund sehe ich es auch extrem kritisch diese Anweisung auf Anwenderebene anzubieten. Eben nur \@startsection zu haben, sollte dem Anwender davon signalisieren: Pass auf, wenn Du an der Stelle etwas änderst! Du bist selbst dafür verantwortlich!

Wenn ich mir die Verwendung zum Beispiel in scrartcl ansehe

\newcommand\section{%
  \@startsection{section}{\sectionnumdepth}{\z@}%
  {-3.5ex \@plus -1ex \@minus -.2ex}%
  {2.3ex \@plus.2ex}%
  {\ifnum \scr@compatibility>\@nameuse{scr@v@2.96}\relax
    \setlength{\parfillskip}{\z@ plus 1fil}\fi
    \raggedsection\normalfont\sectfont\nobreak\size@section}%
}

dann ist dort alles bis auf die vertikalen Abstände bereits als Makro, nicht als fester Wert eingetragen. Es wäre ein kleiner Schritt, das zu komplettieren. Die Argumente, warum es weniger gut ist, etwas so komplexes wie \@startsection komplett zu überschreiben hast Du ja selbst gebracht.

Ich sehe gerade dass es im aktuellen Skript gute Möglichkeiten gibt, die Abstände genau zu definieren.
Herzlichen Dank dafür!

Bild von Markus Kohm

Gerne nehme ich Tobias' Hinweis auf und verweise darauf, dass seit Version 3.15 \DeclareSectionCommand u. ä. zur Verfügung stehen, um neue Gliederungsbefehle zu definieren oder alte zu ändern. Näheres dazu ist der Anleitung zu entnehmen.

Kann es sein, daß eine \@startsection Deklaration mit Komascript Fontmakros wie oben (in eigenen Paketen) irgendwann nicht mehr funktioniert, oder sind diese Werte fixiert?

Bild von Markus Kohm

Bereits heute verwendet KOMA-Script intern nicht mehr \@startsection, sondern \scr@startsection. Aber warum sollte ein Anwender überhaupt den Weg über \@startsection gehen, wenn er inzwischen einfach \DeclareSectionCommand, \DeclareNewSectionCommand oder \RedeclareSectionCommand verwenden kann?¹


1 Ja, das ist eine rhetorische Frage.

Comments for "Platz vor und nach Sections anpassen" abonnieren