PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Abstand Überschrift <--> Text



Lebowski
18-01-2009, 19:56
Hallo,
ich wollte mit Hilfe dieses Beitrags http://www.mrunix.de/forums/showthread.php?t=59943 den Abstand zwischen Text und Überschrift ändern, also habe ich

\def\section{\@startsection{section}{1}{\z@}{-3.5ex plus -1ex minus -.2ex}{2.3ex plus .2ex}{\Large\bf}}
\def\subsection{\@startsection{subsection}{2}{\z@} {-3.25ex plus -1ex minus -.2ex}{1.5ex plus .2ex}{\large\bf}}

ins Dokument kopiert und {-3.5ex plus -1ex minus -.2ex} in {-2.5ex plus -1ex minus -.2ex} verändert.
Ich bekomme aber die Fehlermeldung

Arbeit_II_komplett.tex:238:You can't use `\spacefactor' in vertical mode. \section

(Den kriege ich auch ohne das ich etwas verändere)
Hab auch schon \z@ in 0pt geändert, passiert dasselbe.

Hat jemand eine Ahnung woran das liegt?

localghost
18-01-2009, 20:10
Auch dort wurde titlesec (http://ctan.org/pkg/titlesec) vorgeschlagen. Versuche doch erst mal diese einfachere Methode.


MfG
Thorsten¹

mechanicus
18-01-2009, 20:21
Hallo,

Hasst du die Anweisung eigentlich auch in makeatletter und makeatother gesetzt?

Gruß
Marco

localghost
18-01-2009, 20:36
So, um mal die Einfachheit von titlesec (http://ctan.org/pkg/titlesec) gegenüber den anderen beiden doch sehr kryptischen Zeilen zu zeigen.

\documentclass[11pt,a4paper,ngerman]{article}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{babel}
\usepackage{titlesec}
\usepackage{lmodern}
\usepackage{blindtext}

\parindent0em
\parskip\medskipamount
\titlespacing{\section}{0pt}{*4}{*1.5}

\begin{document}
\Blinddocument
\end{document}
Die gekennzeichneten Stellen sind Faktoren zu vordefinierten Werten. Da muss ein bisschen probiert werden. Ausführliche Auskunft darüber und über die anderen Möglichkeiten des Pakets gibt dessen Anleitung.

Lebowski
19-01-2009, 14:46
Danke, mit titlesec funktioniert es bestens!

lockstep
19-01-2009, 18:31
titlesec erlaubt zwar das bequeme Umstellen der Abstände vor und nach Überschriften, hat aber den Nachteil, nicht kompatibel zum Paket hyperref zu sein. Insbesondere werden Hyperlinks auf Überschriften ohne Nummer (z.B. section*) nicht mehr korrekt gesetzt. Bei Verwendung von hyperref empfiehlt es sich also durchaus, die (entsprechend modifizierten) Definitionen der Überschriftenbefehle in die eigene Präambel zu übernehmen.

lockstep

localghost
19-01-2009, 19:21
titlesec erlaubt zwar das bequeme Umstellen der Abstände vor und nach Überschriften, hat aber den Nachteil, nicht kompatibel zum Paket hyperref zu sein. Insbesondere werden Hyperlinks auf Überschriften ohne Nummer (z.B. section*) nicht mehr korrekt gesetzt. Bei Verwendung von hyperref empfiehlt es sich also durchaus, die (entsprechend modifizierten) Definitionen der Überschriftenbefehle in die eigene Präambel zu übernehmen. [...]
Zeige das doch bitte mal an einem Beispiel. Hyperlinks auf unnummerierte Abschnitte funktionieren generell nicht, weil kein Anker erzeugt. Wenn es dieses Problem tatsächlich gibt, solltest Du nicht zögern und dies dem Autor melden.

voss
19-01-2009, 20:49
Zeige das doch bitte mal an einem Beispiel. Hyperlinks auf unnummerierte Abschnitte funktionieren generell nicht, weil kein Anker erzeugt. Wenn es dieses Problem tatsächlich gibt, solltest Du nicht zögern und dies dem Autor melden.

mit \phantomsection sollte es aber gehen.

Herbert

lockstep
19-01-2009, 22:47
Ich muss mich entschuldigen, da ich mich missverständlich ausgedrückt habe bzw. mindestens zum Teil unrecht hatte. Unnummerierte Abschnitte (section*) erzeugen natürlich von selbst keine Hyperlinks - ich hatte an den Befehl \addsec (aus KOMA-Script) gedacht, der dies doch tut (und den ich auch aufgrund seiner Einträge in die Dokument-Kopfzeile bevorzuge). Definiert man bei Verwendung einer KOMA-Script-Klasse die \section-Abstände mittels titlesec um, beeinflusst dies auch \addsec, führt dort jedoch zu unkorrekten Hyperlinks. Minimalbeispiel:



\documentclass{scrartcl}

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

\usepackage{titlesec}% Führt zu unkorrekten Hyperlinks bei \addsec
\titlespacing{\section}{0pt}{10pt}{2pt}% Beeinflusst auch \addsec

\usepackage{hyperref}

\begin{document}

\tableofcontents

\section{Ein Abschnitt}

Dieser Satz ist nur ein Platzhalter.

\clearpage
\addsec{Ein Abschnitt ohne Nummer}

Dieser Satz ist nur ein Platzhalter.

\end{document}


Zu \phantomsection als Workaround: Ein Fall, für den ich keine Lösung gefunden habe, ist ein Literaturverzeichnis in Artikel-Klassen -- setze ich \phantomsection vor den Befehl zum Ausdruck der Bibliographie, beginnt diese eventuell auf einer neuen Seite, setze ich \phantomsection nach den Druckbefehl, kann eine längere Bibliographie ebenfalls zu einem unkorrekten Hyperlink führen.

(Immer noch ziemlich zerknirscht)
lockstep

localghost
19-01-2009, 23:41
Es wäre gut gewesen, von Du vorn herein die Dokumentklasse anzugeben. Ich kann mir die Problem bei Klassen aus KOMA Script (http://ctan.org/pkg/koma-script) gut vorstellen. Viele Pakete, die ähnlich in die Struktur eingreifen, sind eben nicht daran angepasst. Ich verwende titlesec (http://ctan.org/pkg/titlesec) auch hauptsächlich mit Standardklassen und dort auch nicht primär zu Veränderung von Abständen vor und nach Überschriften. Das Paket kann noch eine ganze Menge anderer Sachen. Aber auch bei Standardklassen tritt das von dir beschriebene Problem auf, wird allerdings durch den Vorschlag von Herbert vollständig behoben.

lockstep
21-03-2010, 19:18
Definiert man bei Verwendung einer KOMA-Script-Klasse die \section-Abstände mittels titlesec um, beeinflusst dies auch \addsec, führt dort jedoch zu unkorrekten Hyperlinks.

Aufgrund einer Anfrage eines Forum-Mitglieds zu einem anderen Problem habe ich mich nach längerer Zeit wieder mit dem Paket titlesec beschäftigt und dabei eine Lösung (bzw. zumindest einen Workaround) für das oben beschriebene Problem gefunden: Neben den Abständen muss auch das Format von \section umdefiniert werden, und dabei kann im before-Code der (aus dem Paket hyperref stammende) Befehl \phantomsection eingesetzt werden.



\documentclass{scrartcl}

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

\usepackage{titlesec}
\titlespacing*{\section}{0pt}{10pt}{2pt}

% Die Variante ohne \phantomsection führt zu unkorrekten Hyperlinks bei \addsec
\titleformat{\section}{\Large\bfseries\sffamily}{\ thesection}{0.5em}{\phantomsection}
% \titleformat{\section}{\Large\bfseries\sffamily}{\ thesection}{0.5em}{}

\usepackage{hyperref}

\begin{document}

\tableofcontents

\section{Ein Abschnitt}

Dieser Satz ist nur ein Platzhalter.

\clearpage
\addsec{Ein Abschnitt ohne Nummer}

Dieser Satz ist nur ein Platzhalter.

\end{document}


So gesehen, ist es Zeit, sich mit titlesec wieder anzufreunden. :)

lockstep