ThoRie hat geschrieben: ↑Do 23. Jul 2020, 22:39
\documentclass[ngerman]{scrbook}
\usepackage{nameref}
\begin{document}
\part{bla}
\chapter{bla}
\chapter{bla}
\nameref{bla2}
\part{bla2}\label{bla2}
\end{document}
Du setzt hier das Label zu einem Zeitpunkt, wenn \part die Seite bereits vollständig ausgegeben hat. Danach wird bei Dir nichts mehr ausgegeben. Da \label aber das Label wegen der Seitenreferenz erst mit Ausgabe der nächsten Seite in die aux-Datei schreibt und eben keine Seite mehr ausgegeben wird, wird auch kein Label mehr in die aux-Datei eingetragen. Das ist, wie wenn Du selbst ein \label nach einem abschließenden \clearpage vor \end{document} setzen würdest. Auch das ginge verloren. Um ein Label zu erhalten, würde es also bereits genügen, den Teil mit ein klein wenig Inhalt zu füllen:
\documentclass{scrbook}% Die ohnehin nicht verwendete Option habe ich entfernt.
\usepackage{nameref}
\begin{document}
\part{bla}
\chapter{bla}
\chapter{bla}
\nameref{bla2}
\part{bla2}\label{bla2}
Inhalt
\end{document}
Gibt man nun allerdings zusätzlich mit \pageref die Seitenreferenz aus, wird man sehen, dass diese nicht, wie erwartet, Seite 7, sondern Seite 9 referenziert. Hier wird endgültig klar, dass das Label zu spät kommt.
Bei den Standardklassen bliebe zum Setzen der Labels nur, es in das Argument von \part zu verschieben:
\documentclass{book}
\usepackage{nameref}
\begin{document}
\part{bla}
\chapter{bla}
\chapter{bla}
\nameref{bla2} auf Seite~\pageref{bla2}.
\part{bla2\label{bla2}}
Inhalt
\end{document}
Keine Sorge, das Label richtet im Inhaltsverzeichnis keinen Schaden an. Diese Methode funktioniert auch bei KOMA-Script. Man kann damit das Label alternativ aber auch per Präambel setzen:
\documentclass{scrbook}
\usepackage{nameref}
\begin{document}
\part{bla}
\chapter{bla}
\chapter{bla}
\nameref{bla2} auf Seite~\pageref{bla2}.
\setpartpreamble{\label{bla2}}
\part{bla2}
Inhalt
\end{document}
Mein Tipp: Bei einem Label immer überlegen: Was passiert genau davor? Worauf bezieht sich das Label? Dasselbe gilt für Anweisungen wie \addcontentsline etc. Ich habe beispielsweise auch schon gesehen, dass Leute damit eine nicht nummerierte Teile-Überschrift nach \part* ins Inhaltsverzeichnis eingetragen und gar nicht bemerkt haben, dass damit die falsche Seite eingetragen wird. Bei KOMA-Script würde man dafür natürlich besser \addpart oder die erweiterte Form von \part mit Option nonumber=true verwenden.