Hallo Markus,
beim Basteln meiner Wrapper-Klassen sind mir für den zweispaltigen Satz sind mir zwei Probleme aufgefallen, die allerdings auch bei den LaTeX-Standardklassen auftreten.
Zum einen wird der erste Absatz nach einer Kapitelüberschrift eingezogen. Ich habe keine Ahnung, ob das typographisch so gewollt und sinnvoll ist, allerdings ist dies bei einspaltigem Satz ja nicht der Fall. Zum anderen wird die Überschrift im zweispaltigen Satz höher gesetzt als beim einspaltigen. Das ist für mich persönlich insofern kritisch, als das bei meinem Layout sowohl der Titel, als auch die Überschriften für Teile und Kapitel zwingend auf der gleichen Höhe liegen müssen. Hältst du deinerseits eine Anpassung für KOMA-Script für notwendig? Falls ja, würde ich auf einen Bugfix von dir warten, ansonsten würde ich dies für meine Klassen selbst fixen.
Viele Grüße
Falk
\documentclass[twocolumn]{scrreprt} \usepackage{blindtext} \begin{document} \chapter{Test} \Blindtext[4] \onecolumn \chapter{Test} \Blindtext[4] \end{document}
LaTeX-Kernel-Problem
Genau genommen handelt es sich dabei um ein Problem mit den Anweisungen
\twocolumn
und\onecolumn
. Deren optionales Argument beachtet\topskip
nicht. Ich habe vor Jahren einen ziemlich bescheuerten Hack dafür geschrieben, der manchmal funktioniert, manchmal leider auch nicht:Falls jemand das optionale Argument von
\twocolumn
oder\onecolumn
für etwas anderes verwendet als eine Überschrift, könnte das Ergebnis leicht anders ausfallen als erwartet. In dem Fall könnte vor allem das\aftergroup\@afterheading
am Ende stören, das u. a. für das Wegfallen des Einzugs sorgt.Ich habe obigen Code jedenfalls nie in KOMA-Script eingebaut, weil ich immer darauf hoffte, dass das Problem doch noch als Fehler anerkannt wird und zumindest in fixltx2e eine richtige Lösung dafür aufgenommen wird.
Aber vielleicht ist es ja langsam Zeit, das wenigstens optional anzubieten. Eventuell werde ich es in scrhack einbauen. Dort gibt es ohnehin bereits einen Mechanismus, um einzelne Hack zu deaktivieren. Versprechen will ich aber nichts.
parskip wird nicht beachtet
Hallo Markus,
leider funktioniert dein Hack für die Position der Überschriften nur bei
parskip=false
. Außerdem stimmt der Abstand unterhalb der Überschrift und Text beionecolumn
undtwocolumn
unabhängig vonparskip
auch nicht überein. Hast du irgendetwas in petto?Grüße
Falk
Missverständnis?
Der Hack behandelt die Verarbeitung des optionalen Arguments von
\twocolumn
. Er ist auf Deinen Fall also nur begrenzt anwendbar. Und nein, ich habe dafür keine Lösung parat. Man müsste dazu tiefer in Teile des LaTeX-Kernel-Codes einsteigen, in denen ich mich bisher nicht auskenne.Wobei mir gerade auffällt, dass in Deinem Beispiel der Absatzabstand auf der ersten, zweispaltigen Seite ohnehin auseinander gezogen wird (
underfull \vbox
).Dass der Code nicht funktioniert, liegt übrigens auch daran, dass im Beispiel innerhalb des einen
\@topnewpage
, das in Folge der ersten\chapter
-Anweisung ausgeführt wird,\parskip
tatsächlich Null ist – trotz Optionparskip=full
. Wie es scheint wird diese Option innerhalb des optionalen Arguments von\twocolumn
überhaupt nicht richtig ausgewertet:Das gilt übrigens auch für
\parindent
(wenn man beispielsweise um Beispiel die Option weg lässt).Ich müsste jetzt also erst einmal dafür sorgen, dass
\parskip
etc. auch auf dieses Argument angewendet wird.Aber irgendwo ist es auch nicht wirklich sinnvoll, dass ich blind daran herumstochere. Für eine richtige Lösung müsste ich wirklich die entsprechenden Teile des LaTeX-Kernels studieren, um die eigentliche Ursache des Problems anzugehen.
Dafür fehlt mir aber schlicht die Zeit (und ehrlich gesagt auch ein wenig die Lust).
Mögliche Lösung gefunden...
Hallo Markus,
das Thema ist anscheinend schon altbekannt. Ich habe dazu einen passenden Eintrag in der LaTeX bugs database und die (fast) passende Lösung dazu gefunden. Diese hat es jedoch anscheinend nie in das
fixltx2e
-Paket geschafft. Ich habe mir den Vorschlag von Donald Arseneau (ohne die\showbox
-Befehle, welche zu einem Fehler führen) genommen und -- Dank deiner ersten Lösung -- etwas angepasst. Ein erster Wurf sah so aus:Soweit so gut, nur hatte die
parskip
-Einstellung immer noch keinen Einfluss auf das optionale Argument von\twocolumn
. Der zweite Versuch passt eigentlich:Ich bin mir nur nicht ganz schlüssig, ob ich einfach
\@parboxrestore
rausschmeißen kann, ohne mir später irgendwo Probleme einzuhandeln. Sollte der Befehl lieber erhalten bleiben, müsste man anschließend die aktuelle Einstellung fürparksip
erneut aufrufen. Leider gibt es bei KOMA-Script (noch) keine Option wie\KOMAoptions{parskip=
current
}
. Diese wäre übrigens beispielsweise auch für die Verwendung vonminipage
-Umgebungen sehr wünschenswert.Kannst du dir vorstellen, die Lösung in KOMA-Script einzubauen? Ich würde diese jedenfalls sehr gerne für meine eigenen Wrapper-Klassen nutzen und im Zweifelsfall selber implementieren.
Grüße
Falk
Nicht in nächster Zeit
Bevor ich so etwas in KOMA-Script einbaue, müsste ich mir auch erst einmal die Zeit nehmen, den Original-Code und die Auswirkungen der Änderungen genauer anzuschauen. Das wird zumindest in der kommenden Version von KOMA-Script ganz sicher noch nicht der Fall sein.
Trotzdem danke dafür, dass Du das Ergebnis Deiner Recherchen hier angegeben hast. BTW: Du kannst ja noch einmal bei dem Bug-Report nachfragen, ob es eine Chance gibt, dass zumindest der dortige Fix in fixltx2e aufgenommen wird.
BTW:
parskip=current
würde nicht viel Sinn ergeben, wenn dannparskip=last
(vgl.DIV=last
).parskip=last...
...würde übrigens auch
\setpartpreamble
und\setchapterpreamble
gut stehen. Diese beachten -- aufgrund der Verwendung von\parbox
-- die Optionparskip
ebenfalls nicht.Danke, hab's bei mir für die
Danke, hab's bei mir für die Kapitelüberschriften eingebaut.