von KOMA » Mi 8. Jul 2020, 10:49
Da passt ganz vieles nicht zusammen.
Zunächst einmal definierst Du zwar mit \defbibheading einen Titel-Stil quellen, verwendest diesen aber nirgendwo. Also gibt es auch das darin definierte Label auch nicht.
Stattdessen erzeugst Du mit \DeclareNewTOC ein neues Verzeichnis, über das dann auch die Überschrift für das Quellenverzeichnis gesetzt wird. Dabei wird aber eben nicht das Label gesetzt. Also gibt es das Label auch nicht.
Dass \section* nicht nur keinen Inhaltsverzeichniseintrag erzeugt, was Du mit \addxcontentsline (allerdings unter Verwendung der falschen Ebene) auszugleichen suchst, sondern auch keinen Kolumentitel, ist dokumentiert. Also musst Du natürlich auch noch den Kolumnentitel setzen.
Ich sehe auch nicht, wieso es sinnvoll sein sollte, den gesamten Kopf auf das »Quellenverzeichnis«-Label zu verlinken. Und natürlich muss man \leftmark und \riightmark vertauschen, wenn »Quellenverzeichnis« der erste Teil sein soll. Außerdem ist es dann wenig sinnvoll vor dem ersten Abschnitt zweimal »Quellenverzeichnis« im Kopf stehen zu haben. Also muss man auch das noch abfangen.
Achja \ref auf ein nicht nummeriertes Kapitel ist ziemlich unsinnig, da darüber eine Kapitelnummer referenziert wird. \nameref oder \pageref sind hier ggf. sinnvoller.
documentclass[%
twoside=off, % einseitiges Layout
headsepline=0.5pt
]{scrbook}
\usepackage[ngerman]{babel}
\usepackage[
autooneside = false, % Erforderlich, wenn \leftmark und \rightmark in einem
% einseitigen Dokument zur Anwendung kommen sollen
automark,% automatische Kolumnentitel für zwei Ebenen
]{scrlayer-scrpage}
\defpairofpagestyles{literatur}{%
\chead{\hyperref[sec:biblio]{\leftmark}\Ifstr{\leftmark}{\rightmark}{}{: \rightmark}}
}
\usepackage[%
backend = biber,
bibencoding = utf8,
bibwarn = true,
style = authoryear-comp,
sorting = nyvt,
backref=true,
backrefstyle = three
]{biblatex}
\addbibresource{biblatex-examples.bib}
\usepackage[%
linktocpage = true,
bookmarksnumbered,
hyperfootnotes = false,
]{hyperref}
\usepackage{bookmark} % verbessert hyperref (und wird von scrbook ggf. auch
% automatisch geladen)
\hypersetup{colorlinks, citecolor=cyan, linkcolor=blue, urlcolor=black}
\usepackage{blindtext}
\defbibheading{quellenlabel}{\label{sec:biblio}}% Wir brauchen nur das Label.
\defbibheading{subbibliography}[\refname]{%
\section*{#1}\addxcontentsline{los}{section}{#1}\addsecmark{#1}%
}
% Inhaltsverzeichnis für die Literaturverzeichnis-Abschnitte:
\DeclareNewTOC[%
owner=\jobname,
type = subbibliography,
types=subbibliographies,
listname = {Quellenverzeichnis},
nonfloat,
tocentrystyle = dottedtocline
]{los}
\setuptoc{los}{totoc}
\begin{document}
\chapter{Hauptteil}
\textbf{Testen des Hyperlinks zum Literaturverzeichnis:} \nameref{sec:biblio}
\clearpage
\pagestyle{literatur}
\listofsubbibliographies
\nocite{*}
\printbibliography[heading = quellenlabel, type = book]% Label erzeugen.
\clearpage% Wirklich eine neue Seite? Warum?
\phantomsection% Wird bei mir nicht benötigt, kann aber sein, dass das erst
% mit der aktuellen Prerelease zuverlässig funktioniert.
\printbibliography[heading = subbibliography, title = {Unveröffentlichte Berichte}, type =
{report}]
\clearpage% Wirklich?
\phantomsection% Wird bei mir nicht benötigt, kann aber sein, dass das erst
% mit der aktuellen Prerelease zuverlässig funktioniert.
\printbibliography[heading = subbibliography, title = {Internetquellen}, type = online]
\end{document}
Das Label könnte man übrigens auch per \AfterTOCHead direkt am Anfang des Quellenverzeichnisses setzen lassen, statt erst beim ersten Literaturverzeichnis. Ich würde das sogar empfehlen, wusste aber nicht genau, worauf das Label nun verweisen soll.
Außerdem könnte man auch einfach ab den Literaturverzeichnissen \ext@toc umbiegen und dann einfach \addsec statt \section* + \addxcontentsline + \addsecmark verwenden. Das macht es IMHO einfacher:
\documentclass[%
twoside=off, % einseitiges Layout
headsepline=0.5pt
]{scrbook}
\usepackage[ngerman]{babel}
\usepackage[
autooneside = false, % Erforderlich, wenn \leftmark und \rightmark in einem
% einseitigen Dokument zur Anwendung kommen sollen
automark,% automatische Kolumnentitel für zwei Ebenen
]{scrlayer-scrpage}
\defpairofpagestyles{literatur}{%
\chead{\hyperref[sec:biblio]{\leftmark}\Ifstr{\leftmark}{\rightmark}{}{: \rightmark}}
}
\usepackage[%
backend = biber,
bibencoding = utf8,
bibwarn = true,
style = authoryear-comp,
sorting = nyvt,
backref=true,
backrefstyle = three
]{biblatex}
\addbibresource{biblatex-examples.bib}
\usepackage[%
linktocpage = true,
bookmarksnumbered,
hyperfootnotes = false,
]{hyperref}
\usepackage{bookmark} % verbessert hyperref (und wird von scrbook ggf. auch
% automatisch geladen)
\hypersetup{colorlinks, citecolor=cyan, linkcolor=blue, urlcolor=black}
\usepackage{blindtext}
\makeatletter
\defbibheading{subbibliography}[\refname]{%
\renewcommand*{\ext@toc}{los}\addsec{#1}% Keine Sorge, die Umdefinierung ist lokal.
}
\makeatother
% Inhaltsverzeichnis für die Literaturverzeichnis-Abschnitte:
\DeclareNewTOC[%
owner=\jobname,
type = subbibliography,
types=subbibliographies,
listname = {Quellenverzeichnis},
nonfloat,
tocentrystyle = dottedtocline
]{los}
\AfterTOCHead[los]{\label{sec:biblio}}% Label direkt nach der Überschrift setzen.
\setuptoc{los}{totoc}
\begin{document}
\chapter{Hauptteil}\label{cha:haupt}
\textbf{Testen des Hyperlinks zum Literaturverzeichnis:} \pageref{sec:biblio}
\clearpage
\pagestyle{literatur}
\listofsubbibliographies
\nocite{*}
\printbibliography[heading = none, type = book]
\clearpage% Wirklich eine neue Seite? Warum?
\phantomsection% Wird bei mir nicht benötigt, kann aber sein, dass das erst
% mit der aktuellen Prerelease zuverlässig funktioniert.
\printbibliography[heading = subbibliography, title = {Unveröffentlichte Berichte}, type =
{report}]
\clearpage% Wirklich?
\phantomsection% Wird bei mir nicht benötigt, kann aber sein, dass das erst
% mit der aktuellen Prerelease zuverlässig funktioniert.
\printbibliography[heading = subbibliography, title = {Internetquellen}, type = online]
\end{document}
Natürlich gibt es viele weitere Möglichkeiten in Abhängigkeit davon, was am Ende tatsächlich rauskommen soll.
Da passt ganz vieles nicht zusammen.
Zunächst einmal definierst Du zwar mit [tt]\defbibheading[/tt] einen Titel-Stil [tt]quellen[/tt], verwendest diesen aber nirgendwo. Also gibt es auch das darin definierte Label auch nicht.
Stattdessen erzeugst Du mit [tt]\DeclareNewTOC[/tt] ein neues Verzeichnis, über das dann auch die Überschrift für das Quellenverzeichnis gesetzt wird. Dabei wird aber eben nicht das Label gesetzt. Also gibt es das Label auch nicht.
Dass [tt]\section*[/tt] nicht nur keinen Inhaltsverzeichniseintrag erzeugt, was Du mit [tt]\addxcontentsline[/tt] (allerdings unter Verwendung der falschen Ebene) auszugleichen suchst, sondern auch keinen Kolumentitel, ist dokumentiert. Also musst Du natürlich auch noch den Kolumnentitel setzen.
Ich sehe auch nicht, wieso es sinnvoll sein sollte, den gesamten Kopf auf das »Quellenverzeichnis«-Label zu verlinken. Und natürlich muss man [tt]\leftmark[/tt] und [tt]\riightmark[/tt] vertauschen, wenn »Quellenverzeichnis« der erste Teil sein soll. Außerdem ist es dann wenig sinnvoll vor dem ersten Abschnitt zweimal »Quellenverzeichnis« im Kopf stehen zu haben. Also muss man auch das noch abfangen.
Achja [tt]\ref[/tt] auf ein nicht nummeriertes Kapitel ist ziemlich unsinnig, da darüber eine Kapitelnummer referenziert wird. [tt]\nameref[/tt] oder [tt]\pageref[/tt] sind hier ggf. sinnvoller.
[code]documentclass[%
twoside=off, % einseitiges Layout
headsepline=0.5pt
]{scrbook}
\usepackage[ngerman]{babel}
\usepackage[
autooneside = false, % Erforderlich, wenn \leftmark und \rightmark in einem
% einseitigen Dokument zur Anwendung kommen sollen
automark,% automatische Kolumnentitel für zwei Ebenen
]{scrlayer-scrpage}
\defpairofpagestyles{literatur}{%
\chead{\hyperref[sec:biblio]{\leftmark}\Ifstr{\leftmark}{\rightmark}{}{: \rightmark}}
}
\usepackage[%
backend = biber,
bibencoding = utf8,
bibwarn = true,
style = authoryear-comp,
sorting = nyvt,
backref=true,
backrefstyle = three
]{biblatex}
\addbibresource{biblatex-examples.bib}
\usepackage[%
linktocpage = true,
bookmarksnumbered,
hyperfootnotes = false,
]{hyperref}
\usepackage{bookmark} % verbessert hyperref (und wird von scrbook ggf. auch
% automatisch geladen)
\hypersetup{colorlinks, citecolor=cyan, linkcolor=blue, urlcolor=black}
\usepackage{blindtext}
\defbibheading{quellenlabel}{\label{sec:biblio}}% Wir brauchen nur das Label.
\defbibheading{subbibliography}[\refname]{%
\section*{#1}\addxcontentsline{los}{section}{#1}\addsecmark{#1}%
}
% Inhaltsverzeichnis für die Literaturverzeichnis-Abschnitte:
\DeclareNewTOC[%
owner=\jobname,
type = subbibliography,
types=subbibliographies,
listname = {Quellenverzeichnis},
nonfloat,
tocentrystyle = dottedtocline
]{los}
\setuptoc{los}{totoc}
\begin{document}
\chapter{Hauptteil}
\textbf{Testen des Hyperlinks zum Literaturverzeichnis:} \nameref{sec:biblio}
\clearpage
\pagestyle{literatur}
\listofsubbibliographies
\nocite{*}
\printbibliography[heading = quellenlabel, type = book]% Label erzeugen.
\clearpage% Wirklich eine neue Seite? Warum?
\phantomsection% Wird bei mir nicht benötigt, kann aber sein, dass das erst
% mit der aktuellen Prerelease zuverlässig funktioniert.
\printbibliography[heading = subbibliography, title = {Unveröffentlichte Berichte}, type =
{report}]
\clearpage% Wirklich?
\phantomsection% Wird bei mir nicht benötigt, kann aber sein, dass das erst
% mit der aktuellen Prerelease zuverlässig funktioniert.
\printbibliography[heading = subbibliography, title = {Internetquellen}, type = online]
\end{document}
[/code]
Das Label könnte man übrigens auch per [tt]\AfterTOCHead[/tt] direkt am Anfang des Quellenverzeichnisses setzen lassen, statt erst beim ersten Literaturverzeichnis. Ich würde das sogar empfehlen, wusste aber nicht genau, worauf das Label nun verweisen soll.
Außerdem könnte man auch einfach ab den Literaturverzeichnissen [tt]\ext@toc[/tt] umbiegen und dann einfach [tt]\addsec[/tt] statt [tt]\section*[/tt] + [tt]\addxcontentsline[/tt] + [tt]\addsecmark[/tt] verwenden. Das macht es IMHO einfacher:
[code]\documentclass[%
twoside=off, % einseitiges Layout
headsepline=0.5pt
]{scrbook}
\usepackage[ngerman]{babel}
\usepackage[
autooneside = false, % Erforderlich, wenn \leftmark und \rightmark in einem
% einseitigen Dokument zur Anwendung kommen sollen
automark,% automatische Kolumnentitel für zwei Ebenen
]{scrlayer-scrpage}
\defpairofpagestyles{literatur}{%
\chead{\hyperref[sec:biblio]{\leftmark}\Ifstr{\leftmark}{\rightmark}{}{: \rightmark}}
}
\usepackage[%
backend = biber,
bibencoding = utf8,
bibwarn = true,
style = authoryear-comp,
sorting = nyvt,
backref=true,
backrefstyle = three
]{biblatex}
\addbibresource{biblatex-examples.bib}
\usepackage[%
linktocpage = true,
bookmarksnumbered,
hyperfootnotes = false,
]{hyperref}
\usepackage{bookmark} % verbessert hyperref (und wird von scrbook ggf. auch
% automatisch geladen)
\hypersetup{colorlinks, citecolor=cyan, linkcolor=blue, urlcolor=black}
\usepackage{blindtext}
\makeatletter
\defbibheading{subbibliography}[\refname]{%
\renewcommand*{\ext@toc}{los}\addsec{#1}% Keine Sorge, die Umdefinierung ist lokal.
}
\makeatother
% Inhaltsverzeichnis für die Literaturverzeichnis-Abschnitte:
\DeclareNewTOC[%
owner=\jobname,
type = subbibliography,
types=subbibliographies,
listname = {Quellenverzeichnis},
nonfloat,
tocentrystyle = dottedtocline
]{los}
\AfterTOCHead[los]{\label{sec:biblio}}% Label direkt nach der Überschrift setzen.
\setuptoc{los}{totoc}
\begin{document}
\chapter{Hauptteil}\label{cha:haupt}
\textbf{Testen des Hyperlinks zum Literaturverzeichnis:} \pageref{sec:biblio}
\clearpage
\pagestyle{literatur}
\listofsubbibliographies
\nocite{*}
\printbibliography[heading = none, type = book]
\clearpage% Wirklich eine neue Seite? Warum?
\phantomsection% Wird bei mir nicht benötigt, kann aber sein, dass das erst
% mit der aktuellen Prerelease zuverlässig funktioniert.
\printbibliography[heading = subbibliography, title = {Unveröffentlichte Berichte}, type =
{report}]
\clearpage% Wirklich?
\phantomsection% Wird bei mir nicht benötigt, kann aber sein, dass das erst
% mit der aktuellen Prerelease zuverlässig funktioniert.
\printbibliography[heading = subbibliography, title = {Internetquellen}, type = online]
\end{document}
[/code]
Natürlich gibt es viele weitere Möglichkeiten in Abhängigkeit davon, was am Ende tatsächlich rauskommen soll.