PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fester Abstand unter Überschrift



Dee
06-09-2009, 16:29
Hallo,

ich hab das Thema noch nicht gefunden, daher muss ich nachfragen. Ich versuche derzeit mittels titlesec in einem dreispaltigen Satz die Überschriften so zu formatieren, dass diese immer den gleichen Abstand unterhalb bis zum Text haben. Nur oben drüber soll variert werden. Leider krieg ich es mit keiner Einstellung richtig hin, der Abstand variiert auch immer unter der Überschrift.

Beispielcode:

\documentclass[landscape,12pt,parskip=half-]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{graphicx}
\usepackage{multicol}
\usepackage{titlesec}
\usepackage{blindtext}
\titlespacing{\section}{0mm}{*1}{*-2}
\begin{document}
\begin{multicols}{3}
\blindtext
\section*{Überschrift}
\blindtext
\vskip1.7em
\section*{Überschrift}
\blindtext
\section*{Überschrift}
\blindtext

\blindtext
\section*{Überschrift}
\blindtext
\section*{Überschrift}
\blindtext
\end{multicols}
\end{document}


Egal, ob ich mit den Faktoren wie oben arbeite, mit Absolutwerten in mm, pt oder px oder mit em, es klappt einfach nicht.

Ist so etwas möglich? Ggf. gibt es eine Option, die ich nur noch nicht in der Doku gefunden habe.

Das absolute i-Tüpfelchen wäre es, wenn ich die Überschriften dann auch noch so formatieren könnte, dass diese mit dem Abstand darüber und darunter genau X Zeilen einnehmen. Sprich, dann wären die Zeilen in jeder Spalte immer auf gleicher Höhe. ich habe gesehen, dass die meisten Magazine das so machen.

Viele Grüße und Danke für die Hilfe
Dee

mechanicus
06-09-2009, 19:38
Hallo,

versuche mal:

\documentclass[landscape,12pt,parskip=half-]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{graphicx}
\usepackage{multicol}
\usepackage{titlesec}
\usepackage{blindtext}
\makeatletter
\renewcommand\section{\@startsection{section}{1}{\ z@}%
{2\baselineskip}%
{1\baselineskip}%
{\ifnum \scr@compatibility>\@nameuse{scr@v@2.96}\relax
\setlength{\parfillskip}{\z@ plus 1fil}\fi
\raggedsection\normalfont\sectfont\nobreak\size@se ction}%
}
\makeatother
\begin{document}
\begin{multicols}{3}
\blindtext
\section*{Überschrift}
\blindtext
\vskip1.7em
\section*{Überschrift}
\blindtext
\section*{Überschrift}
\blindtext

\blindtext
\section*{Überschrift}
\blindtext
\section*{Überschrift}
\blindtext
\end{multicols}
\end{document}

Gruß
Marco

Dee
07-09-2009, 07:42
Hallo,

dann erhalte ich den Fehler:


! Undefined control sequence.
<argument> \ifnum \scr@compatibility
>\@nameuse {scr@v@2.96}\relax \setlengt...
l.21 \section*{Überschrift}

Zusätzlich hört man von allen Seiten, dass man nicht so tief ins System eingreifen sollte, sondern besser titlesec nimmt. (Okay, außer natürlich, man kommt mir titlesec nicht zum Ziel.)

Wenn das doch irgendwie funktionieren sollte, würde ich gerne noch wissen, was ich da tue. :)

Gruß Dee

Dee
08-09-2009, 18:10
Keiner weiter eine Idee?

Viele Grüße
Dee

u_fischer
09-09-2009, 10:39
Nun, erstens: wenn du nicht willst, dass die Abstände schrumpfen oder strecken, darfst du nicht die *-Notation benutzen, sondern musst Werte wie -2ex angeben.

Zweitens kommt immer \parskip hinzu, der Abstand hat bei dir einen Plus-Anteil von 7.5pt. Das kannst du ändern, aber dann können die Abstände zwischen Absätzen nicht mehr varieren.



\titlespacing{\section}{0mm}{*1}{0ex}
\parskip=7.5pt

Dee
09-09-2009, 22:08
In l2tabu.pdf steht ja, dass parskip direkt ändern böse ist ("Da sich \parskip auch auf Listen, Verzeichnisse und Überschriften auswirkt, ist diese Vorgehensweise nicht zu empfehlen."), weswegen ich extra mein gesamtes Dokument auf das "parskip=half-" umgestellt hatte.

Jetzt bin ich leider etwas verwirrt, ob parskip nun doch nicht so böse ist, wie das Dokument oben behauptet. Ein Nachteil ist natürlich, dass Listen eine seltsamen Abstand haben:


\documentclass[landscape,12pt,parskip=half-]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{graphicx}
\usepackage{multicol}
\usepackage{titlesec}
\usepackage{blindtext}
\titlespacing{\section}{0mm}{*1}{0ex}
\parskip=2.5pt

\begin{document}
\begin{multicols}{3}
\blindtext
\section*{Überschrift}
\blindtext
\vskip1.7em
\section*{Überschrift}
\blindtext

Text davor
\begin{itemize}
\item Test 1
\item Test 2
\end{itemize}
Text danach

\section*{Überschrift}
\blindtext \\
\blindtext
\section*{Überschrift}
\blindtext
\section*{Überschrift}
\blindtext

\end{multicols}
\end{document}


Zusätzlich verliere ich die Eigenschaft, dass die Spalten unten bündig sind.

Anders gesagt: Wenn ich ohne \parskip, dafür aber mit \raggedcolumn, arbeite, erhalte ich ein ähnliches Ergebnis. Das ist zur Zeit auch meine bevorzugte Lösung, da es mit einem Abstand bei Listen korrekt(er) umgeht.

Dennoch wäre es natürlich schön, wenn ich einen festen Abstand unter und einen variablen Anstand über eine Überschrift und zusätzlich bündig abschließende Spalten erhalten könnte.

Viele Grüße
Dee

PS: Mit der Sternnotation schaffe ich es aber auch, die Abstände anzupassen. Ich habe Deinen Kommentar da, glaube ich, nicht ganz verstanden.

mechanicus
09-09-2009, 22:18
Hallo,

da mein Beispiel bei mir funktioniert und du scheinbar nicht die Möglichkeit eines Updates in Betracht gezogen hast, ist die Idee von mir also für dich hinfällig. :confused:

Die Aussauge:

Zusätzlich hört man von allen Seiten, dass man nicht so tief ins System eingreifen sollte,
ist in meinen Augen nur dann richtig, wenn man nicht weiß, was man macht.

Gruß
Marco

Dee
10-09-2009, 05:54
da mein Beispiel bei mir funktioniert und du scheinbar nicht die Möglichkeit eines Updates in Betracht gezogen hast

Leider ist das da oben nicht nur für mich, sondern muss bei zahlreichen anderen Leuten mit (hauptsächlich) Ubuntu-Systemen funktionieren. In Ubuntu ist - wieso auch immer - selbst in der kommenden Version nur TeX Live 2007 enthalten. Scheinbar baut Debian bzw. Ubuntu kein Tex-Live-2008-Paket.

Kann man Deine Lösung nicht TeX-Live-2007 kompatibel machen?


ist in meinen Augen nur dann richtig, wenn man nicht weiß, was man macht.

Bestehen denn die Nachteile mit Listen, wenn man parskip direkt ändert, denn nicht? Also auch wenn man weiß, was man macht? Bzw. müsste man dann ja noch wissen, wie man das Problem bei Listen auch noch umgeht. :)

Die Anforderung mit den ausgefüllten Spalten hatte ich natürlich im ersten Posting nicht erwähnt, daher ist Ulrikes Lösung für meine erste Anforderung ausreichend. Ich schätze, ein manuell gesetztes parskip wird diese "Streckmöglichkeit" vor Überschriften und zwischen Absätzen komplett vernichten, oder?

Viele Grüße
Dee

mechanicus
10-09-2009, 08:45
Hallo,


Leider ist das da oben nicht nur für mich, sondern muss bei zahlreichen anderen Leuten mit (hauptsächlich) Ubuntu-Systemen funktionieren. In Ubuntu ist - wieso auch immer - selbst in der kommenden Version nur TeX Live 2007 enthalten. Scheinbar baut Debian bzw. Ubuntu kein Tex-Live-2008-Paket.

ich nutze selbst Ubuntu. Allerdings mit TL2009. Ab der Version 9.10 soll angeblich TL2009 in Ubuntu integriert werden.



Kann man Deine Lösung nicht TeX-Live-2007 kompatibel machen?

Ja. der Befehl \@startsection wird schließlich nicht von KOMA-bereitgestellt, sondern vom LaTeX-Kern.




Bestehen denn die Nachteile mit Listen, wenn man parskip direkt ändert, denn nicht? Also auch wenn man weiß, was man macht? Bzw. müsste man dann ja noch wissen, wie man das Problem bei Listen auch noch umgeht. :)

Bei der oben angegeben Definition kannst du davon ausgehen, dass diese Anweisung auf Listen keinen Einfluss hat.

Also probiere mal:

\documentclass[landscape,12pt,parskip=half-]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{graphicx}
\usepackage{multicol}
\usepackage{titlesec}
\usepackage{blindtext}
\makeatletter
\renewcommand\section{\@startsection{section}{1}{\ z@}%
{2\baselineskip}%
{1\baselineskip}%
{\raggedsection\normalfont\sffamily\large}%
}
\makeatother
\begin{document}
\begin{multicols}{3}
\blindtext
\section*{Überschrift}
\blindtext
\vskip1.7em
\section*{Überschrift}
\blindtext
\section*{Überschrift}
\blindtext

\blindtext
\section*{Überschrift}
\blindtext
\section*{Überschrift}
\blindtext
\end{multicols}
\end{document}

Was Ulrike mit dem Stern meinte, habe ich auch noch nicht verstanden :confused: Sorry Ulrike.
Warum ich jetzt nicht titlesec anspreche liegt daran, dass wenn du wirklich TL2007 hast, ich nicht weiß, auf welchem Stand titlesec ist.

Gruß
Marco

u_fischer
10-09-2009, 10:29
Ich meinte nicht, dass du \parskip ändern sollst. Ich wollte dich nur darauf hinweisen, dass ein \parskip mit einem plus-Anteil dein Ziel, feste Abstände hinter Überschriften zu haben, stören kann:


\documentclass[landscape,12pt,parskip=half-,pagesize]{scrreprt}
\usepackage[ansinew]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{titlesec}
\usepackage{blindtext,multicol}
\titlespacing{\section}{0mm}{*1}{0ex}


\parskip=0pt plus 50pt %großer plus-Anteil

\begin{document}
\begin{multicols}{2}
\section*{Überschrift}
\blindtext \\
\blindtext
\section*{Überschrift}
\blindtext
\section*{Überschrift}
\blindtext
\end{multicols}
\end{document}


Dabei ist es unerheblich, ob du section über titlesec oder mit dem Vorschlag von Marco änderst.

KOMA speichert parskip in drei verschiedenen Befehlen/registern: \parskip, \scr@parskip und \f@parskip und schiebt die Werte immer mal wieder hin- und her. Wie man parskip korrekt anpasst, müsste man daher erstmal genauer untersuchen, bzw. den Autor von KOMA mal fragen.

Dee
11-09-2009, 21:21
Vielen Dank für Eure Antworten und sorry für meine späte Reaktion.

@Marco: Das sieht auf den ersten Blick ganz gut aus. Aber selbst wenn ich den unteren Abstand auf "0.001\baselineskip" ändere, kriege ich den Abstand zwischen Überschrift und Text nicht nahe zusammen. Wenn ich den Wert auf 0 setze, verschwindet plötzlich der Umbruch ganz und der Text folgt wie bei \paragraph direkt der Überschrift.

Daneben kann es ein paar unangenehme Nebenwirkungen, was die Spaltenumbrüche angeht. Das liegt aber denke ich daran, dass er die Überschrift plus 2 Zeilen immer zusammen in einem Block schreiben will (Verhalten ist okay). Durch die Größe dann aber eine Spalte manchmal nicht ausgefüllt wird. Bin aber unsicher, wie oft das mit echtem Text wirklich geschieht. In der Regel hat man ja nicht nur eine Spalte komplett mir Text, sondern auch mal nen Absatz dazwischen.


Ab der Version 9.10 soll angeblich TL2009 in Ubuntu integriert werden.
Bisher ist noch TeX Live 2007 eingetragen, wenn ich das richtig sehe. Schauen wir mal. :)

@Ulrike: Okay, dann habe ich Dich falsch verstanden. Ich hab mal mit parskip ohne Plusanteil herum gespielt, erhalte dann aber das alte Ergebnis. Sprich: Feste Abstände unter der Überschrift - aber meist auch darüber, weil die Spalten nicht mehr bündig unten sind.

Ich glaube, eine richtige schöne (und einigermaßen einfache) Lösung gibt es für mein Problem nicht. Eigentlich seltsam, dass dies noch keiner wollte. (Oder derjenige zumindest hier nicht mitliest. ;))

Vielleicht weiß ja morgen in Esslingen jemand etwas, wenn ich das Thema irgendwo anbringen kann. :)

Viele Grüße
Dee