PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Abstände zwischen sections/subsections/...



Sonni13
06-08-2010, 10:09
Hallo!

Ich bin ein ziemlicher Latex-Neuling und bisher hat mich die passive Suche in diesem Forum immer gerettet (Danke!), aber bei diesem Problem bin ich mit der Suche gescheitert.

Ich schreibe gerade an meiner Doktorarbeit (documentclass report) und hab die meisten Formatierungssachen mittlerweile einigermaßen im Griff. Jetzt findet aber meine Chefin, dass die Abstände, die Latex zwischen Überschrift und Text und zwischen den einzelnen Abschnitten macht, zu groß. Den Abstand zwischen Überschrift und Text habe ich schon erfolgreich durch eine Neudefinition der Befehle \section etc. erreicht, aber die Abstände zwischen verschiedenen Abschnitten sind zum Teil riesig wenn viele kurze Abschnitte mit neuen Überschriften hintereinanderkommen. Zum Teil wird dann auch der verkleinerte Abstand zwischen Überschrift und Text wieder über den Haufen geworfen. Über Vorschläge wie ich das Problem angehen könnte, wäre ich wirklich sehr dankbar!

Viele Grüße
Sonni

bobmalaria
06-08-2010, 11:03
hi,

du kannst das paket titlesec vermutlich verwenden. wie es sich mit deinen umdefinitionene verträgt musst du mal sehen...

aber eventuell sind diese auch nicht mehr nötig wenn du dieses paket verwendest. schaue in der doku in den abschnitt 3.2 Spacing.
beachte allerdings, dass abstände vor und nach überschriften sog. rubber-längen sind. hier sind abstände erlaubt die sich leicht ändern können, je nachdem wieviel text auf der seite ist. im groben kannst du aber folgendes machen


\titlespacing*{commandi{left}{beforesep}{aftersep}[right]

%bei section z.b.
\titlespacing{\section}{0pt}{*4}{*1.5}



die werte *4 und *1.5 beziehen sich auf die vordefinierten längen



%aus titlesec.sty
\beforetitleunit=1ex\@plus.3ex\@minus.06ex
\aftertitleunit=1ex\@plus.1ex


du kannst also einfach den multiplikator *4->*10 ändern, oder die länge an sich redefinieren. das ein oder andere sollte zum gewünschten ziel führen.

für dich als anfänger also im gesamten beispiel


\documentclass{report}

\usepackage{titlesec}
\titlespacing{\section}{0pt}{*2}{*1.5}
\usepackage{lipsum}%random text
\begin{document}

\chapter{The one}
Some text goes here. Maybe I should write just about one line or so. Does not matter in the end anyway. Just have a look on what is going on below
\section{Blub di bla bumm bang}
\lipsum %random text
\end{document}

gruss

Sonni13
06-08-2010, 11:12
Hi,

Titlesec war meine erste Idee, aber das geht nicht, weil ich an einigen Stellen \chapter* oder \section* habe und das verträgt sich nicht. Daher habe ich jetzt eben die Sachen manuell so umdefiniert:
\makeatletter
\renewcommand{\section}{\@startsection{section}{1} {0mm}{-1.2\baselineskip}{.10\baselineskip}{\Large\rmfamil y\bfseries}}
\makeatother

Ich befürchte allerdings, dass mein Problem genau bei den "rubber-Längen" liegt. Vermutlich ist meine einzige Möglichkeit ganz zum Schluss durchzugehen und die Seiten auf denen es furchtbar aussieht nochmal manuell "nachzu-tunen" :(

Sonni

rstuby
06-08-2010, 11:12
Wenn die Absätze und Überschriften auf einer Seite stark auseinandergezogen werden, kriegst du wahrscheinlich auch eine "underfull vbox"-Meldung dazu, oder? Das passiert, wenn LaTeX nicht "weiß", wie es den Text noch gut verteilen kann. Insbesondere bei vielen kleinen Elementen wie Überschriften und drei- oder vierzeiligen Absätzen, die sich nicht oder schwer (vierzeiliger Absatz höchstens in der Mitte) auf zwei Seiten aufteilen lassen. Wenn du die Abstände bei den Überschriften hart definierst, hat das Programm noch weniger Spielraum. Insofern ist der Tipp mit titlesec gut. Trotzdem kann es schwierig werden, die Elemente so zu verteilen, dass keine zu leeren Boxen mehr auftreten. Leichtes Umformulieren, vielleicht etwas längere Textabschnitte, mal zwei Abschnitte zusammenfassen... wenn alles nichts hilft, mal probieren, ob es mit /raggedbottom besser aussieht, so dass der leere Raum unten auf der Seite verbleibt und nicht verteilt wird.
UPD: Um das manuelle tuning wirst du nicht herumkommen, sagt mir meine Erfahrung...

lockstep
06-08-2010, 11:13
Hallo und willkommen im Forum! :)

Mir ist der Unterschied zwischen einerseits "zwischen Überschrift und Text" und andererseits "zwischen den einzelnen Abständen" (beginnst du diese nicht mit einer Überschrift?) nicht klar. Erstelle daher bitte ein lauffähiges kleines Beispiel, das dein Problem demonstriert. Dieses Beispiel sollte insbesondere deine Umdefinition der Befehle \section etc. enthalten.

Als Starthilfe hier ein Beispiel, bei dem ich die Abstände vor und nach \section verringere:



\documentclass{article}

\usepackage[latin9]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}

\usepackage{blindtext}

\makeatletter
\renewcommand\section{%
\@startsection {section}{1}{\z@}%
{-2.5ex \@plus -1ex \@minus -.2ex}% -2.5ex statt -3.5ex
{1.5ex \@plus.2ex}% 1.5ex statt 2.3ex
{\normalfont\Large\bfseries}%
}
\makeatother

\begin{document}

\section{bla}

\blindtext

\section{blubb}

\blindtext

\section{foo}

\blindtext

\end{document}


lockstep

EDIT: Da waren gleich einige andere schneller.

Sonni13
06-08-2010, 11:33
Hi!

Erst mal vielen Dank für die Vorschläge. Ich hab grad versucht mein Problem irgendwie im Kleinen zu reproduzieren, aber das funktioniert nicht so richtig. Hängt eben immer schwer davon ab was gerade direkt davor ist und wo welcher Abschnitt gerade hingeschoben wird. Es sind auch nicht immer nur die ganz kurzen Abschnitte, die Probleme machen und manchmal sehe ich das Platzproblem, das Latex hat auch nicht wirklich.

@rstuby: Umformulieren und Zusammenfassen geht nicht. Das ist vom Inhalt einfach so vorgegeben.
@lockstep: Einmal meine ich den Abstand zwischen der Überschrift und dem nachfolgenden Text und einem den Abstand von der Überschrift zum vorhergehenden Absatz. Manchmal wird nur das eine krass gedehnt und manchmal beides. Die Umdefinition wie du sie beschrieben hast, hatte ich versucht, generiert aber massig (für mich unverständliche) Fehlermeldungen.

Wie bekomme ich denn so ein "Code-Fenster" in meinen Post?

Sonni

Sonni13
06-08-2010, 11:48
Ok, das "Code-Fenster" habe ich gefunden *freu*
Hier der Versuch einer Illustration (beleuchtet leider nicht alle Aspekte, aber gut): So wie auf der zweiten Seite wäre das gut formatiert und so wie ich es haben möchte. Auf der ersten Seite dagegen sind die Abstände gefühlt zu groß. Vor allem eben zwischen Überschrift und nachfolgendem Text.

\documentclass[11pt,a4paper,twoside]{report}
\usepackage{a4wide}
\usepackage{ngerman}
\usepackage[english]{babel}
\usepackage{blindtext}


\renewcommand{\baselinestretch}{1.4}\normalsize

\setlength{\jot}{10pt}
\setlength{\parskip}{1.5ex plus 0.5ex minus 0.5ex}
\setlength{\parindent}{0pt}
\setlength{\fboxsep}{3mm}


\makeatletter
\renewcommand{\section}{\@startsection%
{section}% name
{1}% level
{0mm}% indent
{-1.2\baselineskip}% beforeskip
{.10\baselineskip}% afterskip
{\Large\rmfamily\bfseries}}% style
\renewcommand{\subsection}{\@startsection%
{subsection}% name
{2}% level
{0mm}% indent
{-1.2\baselineskip}% beforeskip
{.10\baselineskip}% afterskip
{\large\rmfamily\bfseries}}% style
\renewcommand{\subsubsection}{\@startsection%
{subsubsection}% name
{3}% level
{0mm}% indent
{-1.2\baselineskip}% beforeskip
{.10\baselineskip}% afterskip
{\normalsize\rmfamily\bfseries}}% style
\makeatother

\begin{document}
\subsection{Erster Abschnitt}
\blindtext

\subsection{Zweiter Abschnitt}
\blindtext

\subsection{Dritter Abschnitt}
\blindtext

\subsection{Vierter Abschnitt}
\subsubsection{Blablabla}
\blindtext

\subsection{Fuenfter Abschnitt}
\blindtext
\end{document}Ich hoffe, das macht es ein bißchen klarer. Sorry, falls das "Minimalbeispiel" nicht ganz so minimal ist wie es sein könnte.

rstuby
06-08-2010, 12:19
Ja, das ist eine ganz schlimme Underfull \vbox (badness 10000),
und das kommt hier z.B. dadurch, dass Tex ja nicht eine einsame Überschrift unten auf die Seite setzen kann. Und für 2 Überschriften + mind. 2 Zeilen Text reicht der Platz denn doch nicht. Manchmal passt es drauf, wenn man den Satzspiegel ein bisschen ändert (in den Documentclass-Optionen explizit einen DIV-Wert angeben) oder wenn man nachher beim finetuning bestimmte Seiten von Hand mit \enlargethispage ein bisschen vergrößert. Aber wenn es viele solche Seiten gibt, würde ich doch mal gucken, ob es nicht mit \raggedbottom besser aussieht.

Sonni13
06-08-2010, 12:32
Hm, ok, hatte ich fast so befürchtet. \enlargethispage habe ich schon an anderer Stelle für einsame Zeilen benutzt und das tut's ganz gut. Was ist den ein "DIV"-Wert und wo muss ich da was angeben?

rstuby
06-08-2010, 12:51
Bei der Errechnung des Satzspiegels wird das Blatt, grob gesagt, in gleich breite/hohe Teile eingeteilt, und ein Teil wird dann zum Rand erklärt.
In die Optionen (das, was in eckigen Klammern steht und durch Kommata voneinander getrennt ist) bei documentclass kann man div=calc schreiben, dann rechnet sich LaTeX selber aus, wie viele Teile hier am geeignetsten sind. Was mich wundert, ist, dass es mit div=calc manchmal deutlich anders aussieht, als wenn man gar nichts angibt. Oder man kann direkt eine Zahl angeben, z.B. div=12. Je größer die Zahl, desto größer der Satzspiegel und desto kleiner die Ränder.
Da dieser Wert aber global ist und nicht von Seite zu Seite geändert wird (wird wahrscheinlich eine Möglichkeit geben, auch das zu tun, aber das würde unmöglich aussehen), kann man halt nur mal "gucken", ob es mit einem anderen Wert "zufällig" besser funktioniert, nichts besonders Zielgerichtetes.

Sonni13
06-08-2010, 12:56
Danke für die ausführliche Erklärung. Das werde ich mal probieren.

lockstep
06-08-2010, 16:27
Um die Option DIV nutzen zu können, musst du von der Standardklasse report auf die KOMA-Script-Klasse scrreprt umsteigen. Das ist auch aus anderen Gründen (erweiterte Einstellmöglichkeiten, typographisch bessere Voreinstellungen) wünschenswert.

lockstep

bobmalaria
06-08-2010, 16:47
hi,

das paket a4wide ist auch hoffnungslos veraltert und sollte nicht mehr verwendet werden. verwende einer der genannten koma-skript klassen oder verwende das gometry paket \usepackage[a4paper]{geometry}

Sonni13
06-08-2010, 18:17
KOMA hatte ich mal eingestellt, aber weil ich die Überschriften mit Serifenschrift haben möchte, hatte ich nicht den Eindruck, dass es mich irgendwie weiterbringt. (Enger setzt es die Überschriften doch nur wenn ich die serifenlose Schrift nehme, oder?)
Das "a4wide" habe ich einfach aus einer alten Arbeit übernommen (irgendwie muss man ja reinkommen). Ist das neue Paket denn kompatibel zu dem was ich sonst so habe oder zerhackt es mir dann alles?

Fragen über Fragen...

Sonni

lockstep
06-08-2010, 23:32
Wenn dein einziges Problem mit KOMA die fehlenden Serifen in Überschriften sind, hilft folgendes:



\addtokomafont{disposition}{\rmfamily}


Die neue Klasse zerhackt nichts. a4wide kann hingegen einiges zerhacken.

lockstep

Sonni13
09-08-2010, 09:52
Hm, jetzt bin ich also wieder bei KOMA (hatte das auch schon mal mit Serifenschrift, aber das sieht dann eben für mich genauso aus wie mit "report") und hab statt "a4wide" das geometry package eingestellt. Allerdings sind jetzt die Ränder komplett verzogen. Nachdem ich den Teil aber nicht selbst eingestellt habe, weiß ich nicht genau welche meiner Befehle dafür vorher verantwortlich waren. Ich denke mal, dass es das sein müsste:
\setlength{\jot}{10pt}
\setlength{\parskip}{1.5ex plus 0.5ex minus 0.5ex}
\setlength{\parindent}{0pt}
\setlength{\fboxsep}{3mm}

Wenn es das ist, wie bilde ich genau das mit geometry nach?

Sonni