Sie sind hier

KOMA-Script+pdflatex+hyperref = Falsche Ordnung der Ebenen bei den PDF-Bookmarks

Hallo zusammen,

bei mir treten reproduzierbar folgende zwei Probleme/Fehler auf:

Minimalbeispiel:

\documentclass[11pt,a4paper]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[utf 8]{inputenc}
\usepackage[T1]{fontenc} 
\usepackage{lmodern}
\usepackage{setspace}
\usepackage[style=authortitle-icomp,backend=biber]{biblatex}
\usepackage[babel,german=guillemets]{csquotes}
\usepackage{hyperref}
 
\begin{document}
 
\tableofcontents{}
 
\part{Erster Teil}
\section{Erster Abschnitt}
\section{Zweiter Abschnitt}
\subsection{Erster Unterabschnitt}
\subsection{Zweiter Unterabschnitt}
\subsection{Dritter Unterabschnitt}
\section{Dritter Abschnitt}
 
\part{Zweiter Teil}
\section{Vierter Abschnitt}
\section{FünfterAbschnitt}
\subsection{Erster Unterabschnitt}
\subsection{Zweiter Unterabschnitt}
\subsection{Dritter Unterabschnitt}
\section{Sechster Abschnitt}
 
\end{document}

1. Fehler
Sobald ich \part{} verwende, werden die Ebenen bei den PDF-Bookmarks nicht mehr richtig geordnet. Der zweite Abschnitt ist eine Ebene zu tief, also unterhalb des ersten Abschnitts eingeordnet.

2. Fehler
Der letzte Gliederungspunkt im Inhaltsverzeichnis fehlt.

Beide Fehler treten nur bei Verwendung einer KOMA-Script-Dokumentklasse auf. Verwende ich die Standard-Dokument-Klassen, also beispielsweise "article" funktioniert alles erwartungsgemäß.

Ich habe beide Fehler mit den Distributionen MikTeX 2.9 und TeX Live 2016 sowie mit pdfLaTeX als auch mit LuaLaTeX reproduzieren können.

Ich hoffe, ich habe keinen Fehler gemacht. ;-) Kann jemand die Fehler ebenfalls reproduzieren oder bestätigen?

--
VG. Skyhawk!

forum: 
Bild von Markus Kohm

Das erste Problem verschwindet, wenn man das sehr empfehlenswerte Paket bookmark (ebenfalls vom hyperref-Autor) lädt, das die gesamte Bookmark-Erzeugung gegenüber hyperref erheblich verbessert. Ich wundere mich schon lange, dass er das nicht direkt in hyperref eingebaut hat.

Das zweite Problem verschwindet, sobald man auch nur eine minimale Menge an Text min. beim letzten Abschnitt des ersten Teils hinzufügt. Grundsätzlich ist LaTeX nicht gut geeignet, um Überschriften ganz ohne Text zu setzen. Das sollte man daher auch beim Testen nicht machen.

Übrigens ist der Eintrag tatsächlich vorhanden, er wird nur dummer Weise auf der nächsten Seite ausgegeben. Das liegt daran, dass wegen der nicht Unbrechbarkeit zwischen den Überschriften das gesamte Überschriftenpaket insgesamt auf die nächste Seite umbrochen werden werden muss. Da nach einem Verzeichniseintrag erst einmal kein Umbruch erfolgen darf, landet die letzte Zeile des Verzeichnisses ebenfalls auf der nächsten Seite.

Man kann es auch verhindern mit:

\documentclass[11pt,a4paper]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc} 
\usepackage{lmodern}
\usepackage{mwe}
 
\AfterStartingTOC{\pagebreak[3]}% Seitenumbruch unmittelbar nach dem letzten Verzeichniseintrag begünstigen
 
\begin{document}
 
\tableofcontents
 
\part{Erster Teil}
\section{Erster Abschnitt}
\section{Zweiter Abschnitt}
\subsection{Erster Unterabschnitt}
\subsection{Zweiter Unterabschnitt}
\subsection{Dritter Unterabschnitt}
\section{Dritter Abschnitt}
%\blindtext
 
\part{Zweiter Teil}
\section{Vierter Abschnitt}
\section{FünfterAbschnitt}
\subsection{Erster Unterabschnitt}
\subsection{Zweiter Unterabschnitt}
\subsection{Dritter Unterabschnitt}
\section{Sechster Abschnitt}
%\blindtext
 
\end{document}

Hallo Markus,

vielen Dank für deine schnelle Antwort und Hilfe!

Ich hatte bereits Stunden damit verbracht, die Ursache für das Problem zu finden. Auch die Suchmaschinen brachten leider keine Abhilfe. Da die Probleme bei mir nur im Zusammenhang mit der Verwendung des KOMA-Scripts auftraten, habe ich letztendlich an ein Fehler im KOMA-Script geglaubt. Da habe ich das KOMA-Script wohl zu Unrecht beschuldigt. ;-)

Also nochmal Vielen Dank!

PS.: Und Übrigens: Super Arbeit, auch dafür ein mal einen dickes Dankeschön!

--
VG. Skyhawk!

Bild von Markus Kohm

Ich will keineswegs ausschließen, dass KOMA-Script an dem hyperref-Problem beteiligt ist oder eine Änderung herbeiführen kann. Das muss ich erst genauer untersuchen.

Grundsätzlich werden viel zu wenige Probleme gemeldet. Teilweise erfahre ich wenigstens auf Umwegen davon, aber besser ist eigentlich immer, wenn derjenige, der auf ein Problem stößt, dieses meldet. Ich kann die Schuld ja dann trotzdem noch auf ein anderes Paket schieben. ;-)

Bild von Markus Kohm

Das Problem mit den Bookmarks lag übrigens daran, dass hyperref selbst nicht damit umgehen kann, wenn eine Eintragsebene übersprungen wird. Das war bei scrartcl immer der Fall, wenn \part verwendet wird. Das Paket bookmark kann damit umgehen. Deshalb hilft es auch, dass inzwischen die KOMA-Script-Klassen bei Verwendung von hyperref dafür sorgen, dass auch bookmark verwendet wird. Schaltet man das mit Option bookmarkpackage=false ab, funktioniert es trotzdem, weil KOMA-Script eine Fallbackbehandlung für das Auslassen einer Ebene in der Definition der Ebenen enthält. Dieser Workaround ist aber in seinen Fähigkeiten begrenzt, weshalb die Lösung mit Paket bookmark im Zweifelsfall vorzuziehen (und voreingestellt) ist.

Dieser Workaround ist aber auch schon deutlich mehr, als ich persönlich von einem KOMA-Script-Entwickler/-Maintainer erwarten würde. Natürlich freue ich mich trotzdem darüber. ;-)

Comments for "KOMA-Script+pdflatex+hyperref = Falsche Ordnung der Ebenen bei den PDF-Bookmarks" abonnieren