Sie sind hier

RedeclareSectionCommand erzeugt ungewollte Absatzeinrückung

Liebes Forum,
ich habe ein Problem mit der Umdefinition von Überschriften. Wenn ich \RedeclareSectionCommand verwende, um die Abstände vor und nach Überschriften zu ändern, ändert sich das Verhalten der Absatzeinrückung im Fließtext (scrreport).

Schreibe ich in der Präambel:

\RedeclareSectionCommand[beforeskip=3\baselineskip, afterskip=4\baselineskip]{chapter}
\RedeclareSectionCommands[beforeskip=2\baselineskip, afterskip=\baselineskip]{section,subsection,subsubsection}

dann wird der erste Absatz eines Abschnitts eingezogen, auch wenn ich parskip=off setze (was ja das Standardverhalten von Koma ist) und eigentlich bewirkt, dass der erste Absatz eines Abschnittes NICHT eingezogen wird. Das gleiche Problem habe ich, wenn ich anstatt \baselineskip den Durchschuss in Punkt angebe (z.B. \RedeclareSectionCommands[beforeskip=25,6pt, afterskip=12,8pt]{section})

Habe ich eine Option übersehen, die ich mitangeben muss?

Folgendes Minimalbeispiel, wenn man die \RedeclareSectionCommand Zeilen auskommentiert, ändert sich die Einrückung des jeweils ersten Absatzes:

\documentclass[
parskip=off,	%% keine vertikale Absatzeinrückung (off = Koma Standard)
]{scrreprt}	
%%%%		Abstände vor und nach Überschriften
\RedeclareSectionCommand[beforeskip=3\baselineskip, afterskip=4\baselineskip]{chapter}
\RedeclareSectionCommands[beforeskip=2\baselineskip, afterskip=\baselineskip]{section,subsection,subsubsection} %% 2 Leerzeilen vor, 1 Leerzeile nach Sections
\RedeclareSectionCommands[beforeskip=2\baselineskip, afterskip=1sp]{paragraph,subparagraph} %% 2 Leerzeilen vor, 1 singlespacing (neue Zeile) nach paragraph
%
 
 
\usepackage{blindtext}
 
\begin{document}
 
\chapter{This is a chapter}
\blindtext[3]
 
\section{This is a section}
 
\blindtext[3]
\end{document}

Ich freue mich über Anregungen :-)
Oliver

Ein Blick in die Dokumentation hilft ;-) Dort sind die beiden Optionen beforeskip und afterskip recht ausführlich erklärt und Du findest auch die bei den KOMA-Script Klassen voreingestellten Werte für die Überschriften.

Der Betrag des bei beforeskip angegebenen Wertes ist der Abstand, der vor der jeweiligen Überschrift eingefügt wird. Auch ein negativer Wert für beforeskip führt also zu einem positiven Abstand! Das Vorzeichen bestimmt dagegen, ob der erste Absatz nach der Überschrift eingezogen wird (positiver Wert) oder nicht (negativer Wert). Bis einschließlich Version 3.21 gab es für \chapter eine Ausnahme und es wurde der erste Absatz nach einer Kapitelüberschrift auch bei positivem beforeskip nicht eingezogen. Wenn das bei Dir noch der Fall ist, dann solltest Du über ein Update nachdenken.

Der Betrag des bei afterskip angegebenen Wertes ist der Abstand, der nach der jeweiligen Überschrift eingefügt wird. Hier entscheidet das Vorzeichen, ob dieser Abstand vertikal ist (positiver Wert) oder horizontal (negativer Wert).

Du möchtest also eigentlich:

\documentclass{scrreprt}
\RedeclareSectionCommand[beforeskip=-3\baselineskip, afterskip=4\baselineskip]
  {chapter}
\RedeclareSectionCommands[beforeskip=-2\baselineskip, afterskip=\baselineskip]
  {section,subsection,subsubsection}
\RedeclareSectionCommands[beforeskip=-2\baselineskip, afterskip=1sp]
  {paragraph,subparagraph}
\usepackage{blindtext}
\begin{document}
\chapter{This is a chapter}
\Blindtext[3]
\section{This is a section}
\Blindtext[3]
\end{document}

Ich wollte gerade noch hinzufügen, dass ich mit Version 3.22 arbeite, da ist schon die Lösung online :-)

Ich habe zwar über Vorzeichen in der Doku gelesen, aber ich wollte es wohl nicht verstehen. Da beforeskip ja für den Abstand ÜBER der Überschrift zuständig ist, bin ich davon ausgegangen, dass es irgendwo am Wert von afterskip liegen müsse.

Wieder was gelernt.
Herzlichen Dank!

Gibt es eigentlich einen Grund, dass die Einstellung für den Einzug in dem Vorzeichen des Abstandes vor der Überschrift „versteckt“ ist? So richtig eingängig finde ich das nicht und würde mir eine Option wie afterindent = true|false bzw. sowas wie inline = true|false anstelle des Vorzeichens beim Abstand danach wünschen.

Viele Grüße
Tobi

Tobi W_
Grafikdesign und TeX-Beratung

tobiw.de
mail@tobiw.de

Mein Blog: TeX-Beispiel des Monats

Bild von Markus Kohm

Die Anweisungen, auf denen die Gliederungsbefehle basieren, sind im LaTeX-Kern so definiert. Zwar habe ich von Version zu Version immer mehr davon ersetzt oder erweitert, aber im Prinzip sind das noch immer die Kern-Anweisungen \@startsection, \@sect, \@ssect, \secdef und verwenden auch weiterhin interne Anweisungen des LaTeX-Kerns, wie \@xsect. Von einigen gibt es in KOMA-Script sogar zwei Fassungen, je nachdem ob die Original-Makros des LaTeX-Kerns vorgefunden werden oder nicht.

Irgendwo zwischen Version 3.20 und 3.23 habe ich kurz überlegt, ob ich an der Stelle nicht Tabula-Rasa machen soll. Aber zum einen besteht immer die Gefahr von Nebenwirkungen, wenn man sich von den vorgesehenen Kern-Anweisungen entfernt (die Probleme mit titlesec sind dafür ein gutes Beispiel, ein anderes Beispiel ist die häufig anzutreffende Umdefinierung von \l@…-Befehlen mit \@dottedtocline, mit der man bei KOMA-Script einiges kaputt machen kann). Es hätte in letzter Konsequenz bedeutet, dass einige Anweisungen zwei Argumente mehr bekommen hätten (die Unterscheidung nach dem Vorzeichen gilt ja sowohl für den Abstand davor als auch den danach). Zum anderen war mir der Aufwand zu groß. Und letztlich war es zu dem Zeitpunkt eigentlich schon zu spät die Schnittstelle noch einmal zu ändern. Vielleicht mag es interessieren, dass ich im Zuge dieser Überlegungen die Kompatibilität zum LaTeX-Kern sogar erhöht habe und beispielsweise die Sonderrolle von \@tempskipa als quasi heimlicher Parameter in einige KOMA-Script-Makros übernommen habe, in denen das zuvor nicht so war.

Spezialbedeutung nach Vorzeichen sind aber auch sonst nicht ungewöhnlich bei KOMA-Script. So haben negative Vorzeichen bei den Pseudolängen für horizontale Positionen in scrlttr2 und scrletter von je her eine Spezialbedeutung. Dort hat sogar die 0 oftmals eine zusätzliche dritte Bedeutung. Genau genommen kam scrlttr2 ein paar Monate zu früh heraus. Kurz darauf gab es vom LaTeX-Team endlich die Empfehlung, e-TeX und großzügige Speichereinstellungen als Basis für das LaTeX-Format zu verwenden. Wäre das früher geschehen, gäbe es heute keine Pseudolängen und einige Dinge wären wären weniger sparsam definiert. Aber das ist ein anders Thema.

Wir dürfen auch nicht vergessen, dass die Schnittstelle aus gutem Grund in Teil II der Anleitung dokumentiert ist. Es steht zwar schon lange auf der TODO-Liste die Frage, ob das nicht für normale Anwender frei gegeben werden sollte. Es ist aber tatsächlich schon von Vorteil, wenn die Leute genau lesen und Dinge wie Absolutwert oder Betrag verstehen können. Deshalb sehe ich derzeit nicht, dass das in Teil I wandern wird. Vorlagenersteller sollten das beherrschen, auch wenn das nicht für die Anfänger gilt, die sich üblicherweise auf YouTube oder an neun von zehn Unis dazu auserkoren fühlen. Wenn die dann reinfallen und deshalb noch einmal genauer hinschauen müssen, dann ist aber auch das gerade gut.

Und dann sei noch auf »Warum sind die Voreinstellungen so gewählt?« verwiesen, das sinngemäß auch hier gilt.

Wäre KOMA-Script ein ConTeXt-Modul liefe das übrigens anders. Dann würde ich jede Idee, die ich für besser halte, ohne Rücksicht auf Verluste umsetzen. Und würde ich noch einmal zehn Jahre in die Zukunft planen, würde ich tatsächlich einen echten, inkompatiblen KOMA-Script-Nachfolger entwickeln.

Comments for "RedeclareSectionCommand erzeugt ungewollte Absatzeinrückung" abonnieren