Sie sind hier

scrreprt scheint die Option "bookmarks=false" vom hyperref-Paket zu unterlaufen.

Hallo!

Wenn man unter Verwendung der scrreprt-Klasse das hyperref-Paket mit der Option bookmarks=false lädt, bekommt man trotzdem eine .pdf-Datei mit Bookmarks:

\documentclass{scrreprt}
%\documentclass{report}
%\documentclass{memoir}
 
\usepackage[bookmarks=false]{hyperref}
 
\begin{document}
 
\chapter{A chapter}
 
Bla Bla
 
\end{document}

Wenn man stattdessen die Standardklasse report oder memoir verwendet, bekommt man, so, wie es sein soll, eine .pdf-Datei ohne Bookmarks.

Deshalb halte ich das für einen Bug in den scr-Klassen.

Das .log-file sagt übrigens zu den verwendeten Dokumentklassen- und Paket-Versionen:

[...]
Document Class: scrreprt 2019/02/01 v3.26b KOMA-Script document class (report) 
[...]
Package: hyperref 2018/11/30 v6.88e Hypertext links for LaTeX

Da mit scrreprt also offenbar unter Ignorieren der bookmarks=false-Option auf jeden Fall Bookmarks erzeugt werden, werden diese auch mit den entsprechenden Kapitel- und Abschnittsüberschriften verlinkt, wozu es eines Verweisankers bedarf.

Manchmal möchte ich aber neben einer pdf-Variante mit Hyperlinks auch eine pdf-Variante eines Dokuments erstellen, in der keine Hyperlinks und keine Bookmarks enthalten sind.

Dann verwende ich in der Präambel statt der Zeile

\usepackage{hyperref}

die Zeilen

\AtBeginDocument{\NoHyper}
\usepackage[bookmarks=false]{hyperref}

Ich tue das, weil es mit anderen Lösungen, zB der draft-Option vom hyperref-Paket, oder dem Paket nohyperref Probleme gibt, die ich so nicht habe.

(Ich weiss, dass \NoHyper eigentlich zur NoHyper-Umgebung gehört. NoHyper ist aber nur deshalb eine Umgebung, weil man die Erstellung von Hyperlinks normalerweise ja nur lokal abstellen will. Da ich das aber nicht lokal, sondern fürs ganze Dokument abstellen will, verwende ich den Befehl direkt.)

Mit den Dokumentklassen report und memoir funktioniert das ohne Probleme.

Aber da scrreprt offenbar die Option bookmarks=false unterläuft, funktioniert es mit dieser Dokumentklasse nicht:

  • \NoHyper bewirkt, dass weder Destinations/Targets/Verweisanker noch Links erstellt werden.
  • bookmarks=false bewirkt, dass keine Bookmarks erstellt werden.

Wenn jetzt aber bookmarks=false ignoriert wird, wie es bei scrreprt der Fall ist, werden Bookmarks erstellt zu denen es aber bei den zugehörigen Kapitel- bzw Abschnittsüberschriften keine Destinations/Targets/Verweisanker gibt.

Entsprechend erhält man mit unten stehendem Beispiel, bei dem im Quelltext nichts drinsteht, was die Erzeugung eines Links verursachen dürfte, unter Verwendung von scrreprt die Fehlermeldung

pdfTeX warning (dest): name{chapter.1} has been referenced but does not exist, replaced by a fixed one.

Diese Fehlermeldung erhält man zB bei Verwendung von report oder memoir nicht.

\documentclass{scrreprt}
%\documentclass{report}
%\documentclass{memoir}
 
% In case you wish no hyperlinks and no bookmarks:
\AtBeginDocument{\NoHyper}
\usepackage[bookmarks=false]{hyperref}
% In case you wish hyperlinks and bookmarks:
%\usepackage{hyperref}
 
\begin{document}
 
\chapter{A chapter}
Bla Bla
 
\end{document}

Statt der \AtBeginDocument-Variante kann man es auch ganz anleitungsgemäß machen und erhält die selbe Fehlermeldung:

\documentclass{scrreprt}
%\documentclass{report}
%\documentclass{memoir}
 
% In case you wish no hyperlinks and no bookmarks:
\usepackage[bookmarks=false]{hyperref}
% In case you wish hyperlinks and bookmarks:
%\usepackage{hyperref}
 
\begin{document}
 
\begin{NoHyper}
 
\chapter{A chapter}
Bla Bla
 
\end{NoHyper}
 
\end{document}

Ulrich

Bild von Markus Kohm

Ich empfehle einen kurzen Blick in die log-Datei. Da steht beim KOMA-Script-Beispiel:

Class scrreprt Info: loading recommended package `bookmark'.
(scrreprt)           Using `bookmark' together with `hyperref' is recommended,
(scrreprt)           because of handling of possible bookmark level gaps.
(scrreprt)           You can avoid loading `bookmark' with KOMA-Script option
(scrreprt)           `bookmarkpackage=false' before \begin{document} and
(scrreprt)           you can avoid this message adding:
(scrreprt)             \usepackage{bookmark}
(scrreprt)           before \begin{document} on input line 7.

Übrigens sind Unterschiede im Verhalten von memoir vollkommen unerheblich. Von mir aus, kann bei Verwendung von memoir in der Voreinstellung auch ein Elefant auf die Titelseite gezeichnet werden. Das werde ich trotzdem nicht übernehmen.

Ich verstehe:

Die scr-Klassen unterlaufen die bookmarks=false-Option des hyperref-Pakets, indem sie in dem Fall, dass hyperref geladen ist, das bookmark-Paket "hinterherladen", dem wiederum diese hyperref-Option egal ist, es sei denn, man stellt das Hinterherladen durch die KOMA-Script-Option bookmarkpackage=false ab.

Und dieses Unterlaufen durch die scr-Klassen stellt natürlich keinen Fehler dar.

Danke für den Tipp und die Hilfe.

Dann werde ich mich mal an die Macher des bookmark-Pakets wenden und dort eruieren, ob das bookmark-Paket nicht evtl per \ifHy@bookmarks auf die hyperref-Option bookmarks=false prüfen könnte...

Da ja eh keine Dokumentklasse das macht, andererseits aber auch keine der anderen Klassen das bookmark-Paket mal eben lädt, mache ich das einstweilen halt selbst:

\documentclass[bookmarkpackage=false]{scrreprt}
%\documentclass{report}
%\documentclass{memoir}
 
% In case you wish no hyperlinks and no bookmarks:
\AtBeginDocument{\NoHyper}
\usepackage[bookmarks=false]{hyperref}
% In case you wish hyperlinks and bookmarks:
%\usepackage{hyperref}
 
\begingroup
\makeatletter
\@firstofone{%
  \endgroup
  \ifHy@bookmarks\usepackage{bookmark}\fi
}%
 
\begin{document}
 
\chapter{A chapter}
Bla Bla
 
\end{document}

Ulrich

Comments for "scrreprt scheint die Option "bookmarks=false" vom hyperref-Paket zu unterlaufen." abonnieren