Hallo,
ich möchte Beiträge für eine Zeitschrift zweispaltig setzen. Leider liegen jeweils auf der ersten Seite die letzten Linien der Spalten nicht beide am unteren Rand des Satzspiegels. Das lässt sich in einem Minimalbeispiel leicht reproduzieren:
\documentclass{scrartcl} \KOMAoption{twocolumn}{true} % \KOMAoption{fontsize}{10pt} % \recalctypearea \usepackage{blindtext} \usepackage{showframe} \author{Peter\thanks{Paul}} \title{Über Namen} \date{} \begin{document} \flushbottom% redundant, bereits von twocolumn impliziert \maketitle \blindtext[25] \end{document}
Auf der ersten Seite liegt die linke Spalte, also die mit der Fußnote, am unteren Rand, während die rechte etwas höher hängt. Ohne Fußnote fällt natürlich kein Unterschied in die Augen, aber es bleibt ein Abstand vom Rahmen bzw. unteren Rand.
Wie kann man da Abhilfe schaffen?
Vielleicht würde ein flexibler \vskip
am Ende der Definition von \maketitle
helfen, den man wie \chapterheadendvskip
redefinieren kann. Aber ich habe im Code keinen solchen 'Hook' gefunden.
Verwendet: v3.26b aus TeXLive 2019
Grüße
Christian
LaTeX-Problem
Das ist leider ein LaTeX-Problem. Einspaltiges Material über zweispaltigem Text setzt man bei LaTeX mit
\twocolumn[Einspaltiges Material]
. So macht das auch KOMA-Script, nämlich in der Form\twocolumn[\@maketitle]
. Nun läge es natürlich nahe, stattdessen etwas wieoder auch
zu machen. Leider aber geht der komplette Leim im optionalen Argument von
\twolcolumn
verloren. Es ändert sich dadurch also rein gar nichts.Übrigens hat article genau dasselbe Problem. Mit
findest Du daher ebenfalls
underfull \vbox
Meldungen für die erste Seite in der log-Datei.(Das Problem ist übrigens ähnlich zu dem Problem bei der Indexüberschrift aber nicht ganz dasselbe.)
Als Workaround könnte ich
anbieten. Aber es muss klar sein, dass das ein Hack ist!
Das Prinzip dieses Hacks ist, auszumessen, wie hoch der Titelkopf tatsächlich wird, diese Höhe dann auf eine ganze Zahl an Zeilen zu runden (sowohl auf wie ab) und dann in eine Box der entsprechenden, festen Höhe zu packen. Das ist dann kein Leim mehr, macht aber letztlich ungefähr das gleiche wie
\vskip 0pt plus .5\baselineskip minus .5\baselineskip
. Der Abstand am Ende des Titelkopfes kann also eine halbe Zeile größer oder kleiner sein als eigentlich eingestellt. Im Gegensatz zu echtem Leim hat aber der restliche Inhalt der Seite keine Auswirkung mehr darauf, sondern der Titel wird unabhängig davon nur für sich behandelt.Danke!
Hallo Markus,
ganz herzlichen Dank für den Hack und auch für die Erklärung, durch die ich endlich verstehe, warum meine Patch-Versuche nicht funktioniert haben.
Wenn ich den Hack richtig verstehe, wird die Abmessung von
\maketitle
erst im Boxregister\@tempboxa
gespeichert, oder? Dann wird die Höhe (\ht
) der Box im Boxregister durch\baselineskip
dividiert und das Ergebnis im Zählregister\@tempcnta
gespeichert, welches dann anschließend wieder bei der Höhendefinition für eine\parbox
als Faktor für die Höhe in Zeilenvielfachen verwendet wird. Richtig? Nutzt man dabei aus, dass das Zählregister vom Typ Integer ist, oder wie bekommt man den Ganzzahlquotienten?Welches Buch würdest Du eigentlich empfehlen, wenn man solche TeX-Primitiven verstehen will?
Ich habe den Hack jetzt verwendet und das Ergebnis sieht jetzt druckereifertig aus!
Grüße
Christian
Ja und Jain
Ja, der Titelkopf wird erst in das Boxregister gepackt, um dann dessen Höhe verwenden zu können. Man hätte die Höhe auch mittels
\settotheight
in ein Längenregister schreiben können.Dass das Zählregister vom Typ Integer ist, wird nicht wirklich ausgenutzt. Tatsächlich hätte man da auch ein Längenregister verwenden können. TeX speichert Längen intern immer als Integer in sp. Und wenn man einem Zähler eine Länge zuweist, dann enthält diese anschließend genau diesen Wert ohne Einheit. Teile ich nun zwei Längen durcheinander, dann wird daraus wieder eine Länge in sp. Dass ich einen Zähler statt einer Länge zum Speichern genommen habe, liegt schlicht daran, dass die Einheit beim Teilen von zwei Zahlen mit Einheit ja eigentlich Unfug ist und tatsächlich ein Faktor und keine Länge dabei heraus kommt. Außerdem nutze ich aus, dass
\numexpr
(genau wie\dimexpr
und\glueexpr
) eben immer auf die nächste ganze Zahl (bzw. Länge in sp) runden (\divide
arbeitet da übrigens ein wenig anders). Wobei es letztlich für das Ergebnis gar nicht so genau darauf ankommt, ob nun ab- oder aufgerundet wird. Hauptsache bei der anschließenden Multiplikation kommt eine Länge in\baselineskip
heraus.Eigentlich müsste man auch noch die Tiefe der Box berücksichtigen. Das habe ich hier unberücksichtigt gelassen, weil ich einerseits eine
\vbox
verwendet habe und andererseits weiß, dass am Ende von\@maketitle
ein vertikaler Abstand steht.Das
[t]
bei der\parbox
ist übrigens nicht so wichtig. Es wird nur irgend ein optionales Argument für die vertikale Ausrichtung benötigt, damit man eines für die Höhe angeben kann. Theoretisch könnte man aber auch direkt\ht
und\dp
von\@tempboxa
manipulieren und die Box dann mit\usebox
oder\box
ausgeben.Literatur:
Und 30 Jahre Erfahrung. ;-)
Kein KOMA-Script Problem
Hi,
scheint mir kein KOMA-Script Problem zu sein, denn wenn ich als Dokumentenklasse
\documentclass[twocolumn]{article}
angebe und die Option\KOMAoption{twocolumn}{true}
auskommentiere, bleibt das Layout am unteren Rand der ersten Seite vergleichbar.Hast Du mal versucht, statt der Option
twocolumn
einfach das multicol Paket zu verwenden? Damit sieht nach meinem Eindruck der untere Rand der ersten Seite besser aus.multicol ist hier auch keine echte Lösung
Bei multicol wird die Fußnote ja unter den kompletten zweispaltigen Teil gesetzt, die rechte Spalte endet also vor dem Fußnotenapparat. Dadurch sieht man das Problem zunächst nicht. Wenn Du dann die Fußnote raus nimmst, sieht Du aber, dass das Problem erneut auftritt. Und auch dort funktioniert es nicht Leim zwischen Titel und zweispaltigen Text zu packen.
Hi,
Hi,
auch Dir Danke für Deine Antwort!
Grüße