Liebes KOMA-Skript-Team,
seit Anfang des Jahres funktioniert der Workflow
latex -> dvipdfmx
zur Erzeugung von PDF-Dateien bei Verwendung von KOMA-Skript-Klassen nicht mehr korrekt, wenn das hyperref
-Paket verwendet wird. Symptom: es werden keine PDF-Bookmarks ("Outline") mehr erzeugt; das Problem besteht in Version 2019/02/01 v3.26b immer noch.
Das Problem kann mit folgendem Minimalbeispiel reproduziert werden:
\documentclass[paper=a4]{scrbook} \usepackage[dvipdfmx]{hyperref} \usepackage{lipsum} \begin{document} \chapter{Einleitung} \lipsum \section{Ein Abschnitt} \lipsum \chapter{Der Hauptteil} \lipsum \section{Ein anderer Abschnitt} \lipsum \section{Noch ein Abschnitt} \lipsum \end{document}
Das Problem tritt nicht auf, wenn die PDF-Datei direkt mittels pdflatex
erstellt wird (dementsprechend natürlich keine Treiberoption beim Laden von hyperref
). Es konnte auf das seit v3.26 erfolgende automatische Laden des Pakets bookmark
zurückgeführt werden: lädt man die Dokumentenklasse mit der Option
\documentclass[paper=a4,bookmarkpackage=false]{scrbook}
so werden die PDF-Bookmarks auch bei Verwendung von dvipdfmx
korrekt erzeugt. Eventuell wird die Treiberoption nicht richtig an das bookmark
-Paket weitergegeben.
Hierzu eine Frage: sofern ich es verstanden habe, ist das bookmark
-Paket nur erforderlich, um Unzulänglichkeiten von hyperref
in bestimmten Anwendungsfällen zu umgehen, d.h. sofern die entsprechenden Warnmeldungen in meinem Fall gar nicht auftreten, kann ich auf dasbookmark
-Paket verzichten, ohne daß es dadurch zu Einschränkungen der Funktionalität kommt, richtig?
Viele Grüße
FW
Paket bookmark selbst laden
Die für hyperref gesetzte Treiberoption wird beim automatischen Laden von bookmark durch die KOMA-Script Klasse nicht gesetzt.
Aber das automatische Laden des Pakets bei
\begin{document}
ist ohnehin nur ein Workaround, wie man den Releaseinformationen für KOMA-Script 3.26 und der folgenden Info in der log Datei entnehmen kann:An beiden Stellen wird also empfohlen, das Paket bookmark selbst vor
\begin{document}
zu laden. Gleichzeitig ist das eine mögliche Lösung für Dein Problem, weil Du beim Laden des Pakets natürlich auch die Treiberoption setzen kannst.Alternativ kann man die Option, die ja vielleicht auch noch von anderen Paketen benötigt wird, auch schon beim Laden der Klasse angeben. Dann wäre es sogar wieder möglich, sich über die Empfehlung des expliziten Ladens hinwegzusetzen und bookmark automatisch von der Klasse laden zu lassen.
Wenn Du das beides nicht möchtest, kannst Du immer noch mit
\PassOptionsToPackage{dvipdfmx}{bookmark}
in der Präambel sicherzustellen, dass bookmark die Option erhält, wenn es automatisch geladen wird.Und mit der Klassenoption
bookmarkpackage=false
kannst Du das automatische Laden von bookmark unterbinden, wenn es in Deinem Dokument nicht nötig ist und Dir die anderen Vorteile des Pakets auch nichts bringen.Problem gelöst
Vielen Dank für die Hinweise. Ich mußte im konkreten Fall eine minimal modifizierte Version eines schon bestehenden Dokuments neu typesetten, wobei das Layout aber insgesamt möglichst gleich bleiben mußte, und war etwas unsicher, ob das Unterbinden des Pakets
bookmarks
noch andere Nebeneffekte haben könnte (obwohl das unlogisch war, den vor v3.26 wurde es ja gar nicht automatisch geladen).Sowohl die Vorgehensweise mit
\documentclass[bookmarkpackage=false]
als auch dem eigenhändigen Laden des Pakets mit entsprechender Treiberoption
\usepackage[dvipdfmx]{bookmark}
nach
hyperref
ergeben aber dasselbe Resultat (diffpdf
ist hier eine große Hilfe) und sind somit als Lösungen tauglich.Grüße
FW
Genau!
Wobei
ebenfalls funktionieren sollte. Obwohl nicht dokumentiert ist, dass dabei die Pakete tatsächlich in der angegebenen Reihenfolge geladen werden, gehe ich davon aus, dass das auch zukünftige LaTeX-Versionen so handhaben werden.
Die nächste Release wird übrigens versuchen, bookmark mit der zur gewählten hyperref-Treibereinstellung passenden Voreinstellung zu laden. Es genügt aber dann im Beispiel also notfalls auch wieder
\usepackage[dvipdfm]{hyperref}
. Aber natürlich ist es das explizite Laden von bookmark weiterhin empfohlen. Im entsprechenden Info-Text wird ggf. jetzt ebenfalls die Option genannt, die von der KOMA-Script-Klasse dabei selbst voreingestellt würde.