Hallo zusammen,
für einige (aktuelle und abgeschlossene) Projekt habe ich recht genaue Vorstellungen davon, wie die Abstände vor und nach Zwischenüberschriften beschaffen sein sollen. Es geht, das nur als Hintergrund, darum, in einem sehr einfach aufgebauten Dokument, das nur aus Text und gelegentlichen Überschriften besteht, sich einer anständigen Registerhaltigkeit zumindest anzunähern.
Sagen wir, als Abstand vor einer Überschrift sei 1.5\baselineskip
¹ gewünscht, danach 0.5\baselineskip
¹. Eine einzeilige Überschrift würde also den vertikalen Platz von drei Zeilen einnehmen. Da die Überschriften aus der Grundschrift gesetzt sind, würden wir auch bei mehrzeiligen Überschriften im Raster bleiben.
Ein Problem stellt sich lediglich dort, wo eine Überschrift mit einem Seitenumbruch zusammenfällt. Der Leerraum bis zum Beginn der Überschrift wird standardmäßig natürlich geschluckt. Wir sind dann um eine halbe Zeile gegenüber dem Raster versetzt. Nötig ist also, einen Raum von 0.5\baselineskip
¹ für TeX ›unverdaulich‹ zu machen, sodass Überschriften, die am Kopf einer neuen Seite landen, eine halbe Zeile nach unten versetzt sind.
Ich habe das lange Zeit erfolgreich mit titlesec realisiert, nach einem genial-einfachen Vorschlag von Hendrik Vogt, jedoch immer nur zähneknirschend, da es bekanntlich zwischen diesem (titlesec) und komascript ein paar Reibereien gibt. Die haben mir zwar keine Probleme bereitet, aber ich fand und finde es immer unschön, ein Paket, das so tiefe Eingriffe vornimmt und so große Unsicherheiten birgt, nur für so eine einzige Maßnahme zu nutzen.
Sehr erfreut bin ich daher über das ›neue‹ \RedeclareSectionCommand
¹, mit dem sich zunächst mal die o.g. Abstände ziemlich einfach setzen lassen, ohne dass man außerhalb von KOMA-Script² nach Mitteln suchen müsste. Nur scheitere ich bislang daran, eine serienmäßige Lösung für das eigentliche Problem der Seitenanfänge zu finden.
Meine Frage daher: wie würden wir mit KOMA-Script²-Bordmitteln, neueren oder älteren, dasselbe Ergebnis realisieren? Die Möglichkeiten, die \RedeclareSectionCommand
¹ eröffnet, scheinen so etwas wie die Lösung über die \raisebox
¹ (s. u.) nicht zu erlauben. Ein Weg wäre sicher, etwas low-level, über \scr@startsection
¹ oder \Before@sect
¹, aber die sind zumindest für mich (noch) nicht ausreichend im scrguide dokumentiert, als dass ich sie selbständig nutzen könnte.
Es freut sich daher über jeden Hinweis
Nils
LÖSUNG MIT BORDMITTELN BISHER:
\documentclass{scrartcl} \usepackage{blindtext} \setkomafont{section}{\normalfont} \RedeclareSectionCommand[% beforeskip=-1.5\baselineskip, afterskip=0.5\baselineskip ]{section} \begin{document} \Blindtext \section{Blindtext} \blindtext \section{Blindtext} \blindtext \newpage \section{Blindtext} \Blindtext \end{document}
LÖSUNG ÜBER TITLESEC, 2013
\titleformat{\subsection} {\sffamily\bfseries} {\raisebox{-0.5\baselineskip}[0pt][0pt]{\thesubsection}} {1ex} {\raisebox{-0.5\baselineskip}[0pt][0pt]} % raise the title
[Admin-Edit:]
Zu früh
Ich kann Dein Anliegen verstehen, auch wenn ich diesen Ansatz für Registerhaltigkeit so einschätze, dass man versucht den Teufel mit dem Beelzebub auszutreiben. Ich muss Dich auch gleich einmal enttäuschen: Derzeit gibt es dafür keinen offiziellen Weg. Aber wie so oft gibt es Hacks. Mit der aktuellen Beta funktioniert beispielsweise:
Bei der aktuellen Release muss man die unsichtbare Stütze hingegen über
\othersectionlevelsformat
einschleusen. Für nicht nummerierte Überschriften müsste man es wohl oder übel und entgegen der Anleitung über die Schrifteinstellung hineinmurksen – ohne Gewähr, dass das in zwanzig Jahren noch immer funktioniert.Eine korrekte Lösung würde einen neuen Überschriftenstil definieren, bei den die Überschriften zunächst in eine Box gepackt werden, dann ausgemessen wird, wie hoch und Tief die Box ist, um dann Höhe und Tiefe gewichtet so anzupassen, dass die Überschrift wieder n-Zeilen einnimmt. Genauso müsste man übrigens für alle variabel hohen und tiefen Elemente vorgehen. Allerdings ist es noch ein gutes Stück Weg, bis man neue Überschriftenstile selbst definieren kann und
titlesec
ist dabei tatsächlich ein Knüppel zwischen den Beinen.Achja:
parskip=never
solltest Du auch noch verwenden.Hallo Markus, vielen Dank,
Hallo Markus,
vielen Dank, das klappt wunderbar so! Die Sache mit dem Beelzebub ist mir bewusst. Aber ich bin zuversichtlich: sobald ConTeXt die letzte Hürde* (um mich als Fan zu gewinnen) genommen hat, wird sich die Sache erledigt haben.
Danke und viele Grüße
Nils
*) die Zusammenarbeit mit biblatex.