Part-übergreifende Querverweise

Fragen und Probleme, die nicht den obigen Kategorien zugeordnet werden können


aasaa00
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 99
Registriert: Do 1. Mär 2018, 11:43

Part-übergreifende Querverweise

Beitrag von aasaa00 »

Hallo, ich arbeite mit der Documentclass "book" und verfasse eine Doktorarbeit mit zwei unterschiedlichen Teilen. Mein Problem: Wenn ich auf einen Kapitel in dem anderen Teil verweise, wird mir z. B. anstatt "I.2.3" nur "2.3" angezeigt, d.h. die Angabe des Teils wird nicht abegebildet.
Dieses Problem wird auf der für die Documentclass "scrbook" gelöst: https://texwelt.de/fragen/16482/part-ub ... erverweise

Ich habe aber Probleme dieses Beispiel auf "book" zu übertragen, da mir bereits "\RedeclareSectionCommand" als Fehler gemeldet wird. Hier ist das nicht funktionierende MWE auf der zuvor genannten Seite mit der erwähnten Änderung "book":

\documentclass[12pt, oneside,numbers=endperiod]{book}
\usepackage[utf8]{inputenc}% Wer Umlaute verwendet, sollte die Codierung deklarieren!
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}

\usepackage{mwe}
%Kap.-Zählung neu beginnen
\RedeclareSectionCommand[counterwithin=part]{chapter}
\renewcommand{\thechapter}{\arabic{chapter}}
\renewcommand{\partmark}[1]{\markboth{#1}{}}
\makeatletter
\def\p@chapter{\IfPartNot{\thepart}}% Präfix für chapter-Labels
\def\p@section{\IfPartNot{\thepart}}% Präfix für section-Labels
\def\p@subsection{\IfPartNot{\thepart}}% Präfix für subsection-Labels
\makeatother
\DeclareRobustCommand{\IfPartNot}[1]{%
  \ifstr{\thepart}{#1}{}{#1-}%
}

\begin{document}
\part{Erster Teil des Buches}
\chapter{Einführung}
\section{Blindtext 1}
\blindtext\label{BT_1}
\section{Weitere Texte}

Was bereits in Blindtext 1 in Abschnitt \ref{BT_1} ausgeführt, wollen wir in Blindtext 2 in Abschnitt \ref{BT_2} weiter vertiefen.

Der Querverweis müsste richtig heißen:
Was bereits in Blindtext 1 in Abschnitt \ref{BT_1} ausgeführt, wollen wir in Blindtext 2 in Abschnitt II-1.1 weiter vertiefen.

\part{Zweiter Teil des Buches}
\chapter{Ausführungen}
\section{Blindtext 2}
\blindtext\label{BT_2}
\section{Weitere Texte}
In Blindtext 1 (siehe Abschnitt \ref{BT_1}) wurde bereits ausgeführt \dots

Auch hier muss die römische Ziffer des Buchteils mitgeführt werden, wenn auf einen anderen Buchteil verwiesen wird.

\end{document}

Benutzeravatar
Stefan Kottwitz
Admin
Admin
Beiträge: 2500
Registriert: Di 8. Jul 2008, 00:39
Kontaktdaten:

Re: Part-übergreifende Querverweise

Beitrag von Stefan Kottwitz »

Hallo,

auch an einem späten Zeitpunkt kann man noch die Dokumentklasse wechseln. Du bist vermutlich sehr weit fortgeschritten in der Arbeit, doch auch dann kein unlösbares Problem. Gerade, weil scrbook ursprünglich angelegt war, book ähnlich zu sehen (mit vllt. besseren Voreinstellungen) und es zu erweitern.

Du kannst die erste Zeile in Deinem Dokument ja mal ändern auf

\documentclass[12pt, oneside,numbers=endperiod,headings=standardclasses]{scrbook}

Das ist nur scrbook statt book und die Option headings=standardclasses, damit die Überschriften zunächst gleich aussehen. (Ich würde die Option weglassen und mich an schnörkellose serifenlose Überschriften gewöhnen - vergleich gern mit modernen Fachbüchern.)

Das Dokument läuft vmtl. auch so problemlos durch. Gerade am Ende hast Du vielleicht noch einige Formatierungswünsche, die sich mit KOMA-Script-Features (scrbook) einfach umsetzen lassen. Probieren kann man es mal ;-) Zurück-Ändern der ersten Zeile geht auch, oder wenn Du testen willst nimm eine komplette Kopie Deines Dokumentordners und mach die mal in KOMA-Script (scrbook).

Stefan


aasaa00
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 99
Registriert: Do 1. Mär 2018, 11:43

Re: Part-übergreifende Querverweise

Beitrag von aasaa00 »

Danke Stefan für die schnelle Antwort. Ja, in deiner Antwort waren viele Dinge richtig: Ich stehe am Ende einer sehr langen Arbeit und will wenig verändern, da auch die Zeit drängt. Ich habe es trotzdem umgestellt und die Veränderungen sind nicht so gravierend, wie ich dachte.
Mir ist dazu noch folgende Frage gekommen: Wenn ich z. B. im ersten Teil meiner Arbeit auf einen anderen Kapitel in demselben Teil verweisen will, steht dort z. B. "1.3"; was muss ich tun, um "I.1.3" zu bekommen? Hier nun ein funktionierendes MWE:


\documentclass[12pt, oneside,numbers=endperiod,headings=standardclasses]{scrbook}
\usepackage[utf8]{inputenc}% Wer Umlaute verwendet, sollte die Codierung deklarieren!
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}

\usepackage{mwe}
%Kap.-Zählung neu beginnen
\RedeclareSectionCommand[counterwithin=part]{chapter}
\renewcommand{\thechapter}{\arabic{chapter}}
\renewcommand{\partmark}[1]{\markboth{#1}{}}
\makeatletter
\def\p@chapter{\IfPartNot{\thepart}}% Präfix für chapter-Labels
\def\p@section{\IfPartNot{\thepart}}% Präfix für section-Labels
\def\p@subsection{\IfPartNot{\thepart}}% Präfix für subsection-Labels
\makeatother
\DeclareRobustCommand{\IfPartNot}[1]{%
  \ifstr{\thepart}{#1}{}{#1-}%
}

\begin{document}
\part{Erster Teil des Buches}
\chapter{Einführung}
\section{Blindtext 1}
\blindtext\label{BT_1} 
\section{Weitere Texte}

%NEU
HIER BEGINNT DER NEUE TEXT, siehe \ref{Test}.\\ 
%NEU

Was bereits in Blindtext 1 in Abschnitt \ref{BT_1} ausgeführt, wollen wir in Blindtext 2 in Abschnitt \ref{BT_2} weiter vertiefen.

Der Querverweis müsste richtig heißen:
Was bereits in Blindtext 1 in Abschnitt \ref{BT_1} ausgeführt, wollen wir in Blindtext 2 in Abschnitt II-1.1 weiter vertiefen.

\section{Texte NEU}
%NEU
HIER BEGINNT DER NEUE TEXT\label{Test}.
%NEU

\part{Zweiter Teil des Buches}
\chapter{Ausführungen}
\section{Blindtext 2}
\blindtext\label{BT_2}
\section{Weitere Texte}
In Blindtext 1 (siehe Abschnitt \ref{BT_1}) wurde bereits ausgeführt \dots

Auch hier muss die römische Ziffer des Buchteils mitgeführt werden, wenn auf einen anderen Buchteil verwiesen wird.

\end{document}


Benutzeravatar
Stefan Kottwitz
Admin
Admin
Beiträge: 2500
Registriert: Di 8. Jul 2008, 00:39
Kontaktdaten:

Re: Part-übergreifende Querverweise

Beitrag von Stefan Kottwitz »

Hm, ich glaube \ref für \part ist nicht standardmäßig drin, weil ungewöhnlich. Parts bzw. Teile sind relativ eigenständige große Stücke, wo man kaum hin und her quer-referenziert. Und für eine außergewöhnliche Referenz von einem Buchteil in einen anderen Buchteil kann man es vllt. einmal händisch machen, weil die Teile I, II, III wohl nicht so dynamisch sind. ;-)

Es geht mit cleveref, also

\usepackage{cleveref}

und im Text dann

\part{Erster Teil des Buches}
\label{ErsterTeil}
siehe \ref{ErsterTeil}.\ref{Test}

oder

siehe \ref{Test} in Teil \ref{ErsterTeil}

Da Referenzen auf andere Teile vmtl. ungewöhnlich sind, würde ich es nicht in Standard-\ref einbauen und immer benutzen und wir hätten ganz viele Referenzen beginnend mit II in Teil II.

Stefan


aasaa00
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 99
Registriert: Do 1. Mär 2018, 11:43

Re: Part-übergreifende Querverweise

Beitrag von aasaa00 »

Danke, dann hätte ich nur noch eine damit zusammenhängende Frage: Kann ich im Abbildungsverzeichnis Zwischenüberschriften wie "Teil I" und "Teil II" (also in dem Fall über 1.1) einfügen bzw. was müsste man da tun? Oder ist es sogar möglich vor z. B. "1.1" ein "I." bzw. "II." einzufügen? Hier das angepasste MWE:

\documentclass[12pt, oneside,numbers=endperiod,headings=standardclasses]{scrbook}
\usepackage[utf8]{inputenc}% Wer Umlaute verwendet, sollte die Codierung deklarieren!
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{cleveref}
\usepackage{mwe}
%Kap.-Zählung neu beginnen
\RedeclareSectionCommand[counterwithin=part]{chapter}
\renewcommand{\thechapter}{\arabic{chapter}}
\renewcommand{\partmark}[1]{\markboth{#1}{}}
\makeatletter
\def\p@chapter{\IfPartNot{\thepart}}% Präfix für chapter-Labels
\def\p@section{\IfPartNot{\thepart}}% Präfix für section-Labels
\def\p@subsection{\IfPartNot{\thepart}}% Präfix für subsection-Labels
\makeatother
\DeclareRobustCommand{\IfPartNot}[1]{%
  \ifstr{\thepart}{#1}{}{#1-}%
}

\begin{document}
\listoffigures
\part{Erster Teil des Buches}
%%%%%%%%%%%%%%
\label{ErsterTeil}
%%%%%%%%%%%%%%%%
\chapter{Einführung}
\section{Blindtext 1}
\blindtext\label{BT_1} 
\section{Weitere Texte}

HIER BEGINNT DER NEUE TEXT, siehe \ref{ErsterTeil}.\ref{Test}.\\ 
Was bereits in Blindtext 1 in Abschnitt \ref{BT_1} ausgeführt, wollen wir in Blindtext 2 in Abschnitt \ref{BT_2} weiter vertiefen.

Der Querverweis müsste richtig heißen:
Was bereits in Blindtext 1 in Abschnitt \ref{BT_1} ausgeführt, wollen wir in Blindtext 2 in Abschnitt II-1.1 weiter vertiefen.

\section{Texte NEU}

HIER BEGINNT DER NEUE TEXT\label{Test}.

\begin{figure}
  \centering

  \caption[Zeit]{Zeit}
	\label{fig:example1}
\end{figure}

\begin{figure}
  \centering

  \caption[Zeit]{Zeit}
	\label{fig:example2}
\end{figure}



\part{Zweiter Teil des Buches}
\chapter{Ausführungen}
\section{Blindtext 2}
\blindtext\label{BT_2}
\section{Weitere Texte}
In Blindtext 1 (siehe Abschnitt \ref{BT_1}) wurde bereits ausgeführt \dots

Auch hier muss die römische Ziffer des Buchteils mitgeführt werden, wenn auf einen anderen Buchteil verwiesen wird.

\begin{figure}
  \centering

  \caption[Zeit]{Zeit}
	\label{fig:example3}
\end{figure}



\end{document}

Benutzeravatar
Stefan Kottwitz
Admin
Admin
Beiträge: 2500
Registriert: Di 8. Jul 2008, 00:39
Kontaktdaten:

Re: Part-übergreifende Querverweise

Beitrag von Stefan Kottwitz »

Am perfekten MWE kann man gut testen. :-)

Hier ist eine Lösung, die ich von esdd kenne:

\usepackage{xpatch}
\xapptocmd\addparttocentry{%
  \addxcontentsline{lof}{part}[{#1}]{#2}%
}{}{\PatchFailed}

Stefan


Gastname ungültig

Re: Part-übergreifende Querverweise

Beitrag von Gastname ungültig »

aasaa00 hat geschrieben:
Mo 29. Mär 2021, 22:19

Mir ist dazu noch folgende Frage gekommen: Wenn ich z. B. im ersten Teil meiner Arbeit auf einen anderen Kapitel in demselben Teil verweisen will, steht dort z. B. "1.3"; was muss ich tun, um "I.1.3" zu bekommen?

In der Frage, aus der dein Code stammt, war ja explizit gefordert, dass innerhalb eines Teils die Teil-Nummer nicht vorangestellt werden soll. Wenn du das anders haben willst, wird der Code eigentlich sogar einfacher, weil man sich den Vergleich der referenzierten Teil-Nummer mit der aktuellen Teil-Nummer sparen kann. Nur den Präfix muss man natürlich trotzdem setzen, weil ja die Kapitelnummer die Teil-Nummer nicht selbst enthält:

\documentclass[12pt, oneside,numbers=endperiod,headings=standardclasses]{scrbook}
\usepackage[utf8]{inputenc}% Wer Umlaute verwendet, sollte die Codierung deklarieren!
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}

\usepackage{mwe}
%Kap.-Zählung neu beginnen
\RedeclareSectionCommand[counterwithin=part]{chapter}
\renewcommand*{\thechapter}{\arabic{chapter}}
\renewcommand{\partmark}[1]{\markboth{#1}{}}
\makeatletter
\def\p@chapter{\thepart.}% Präfix für chapter-Labels
\def\p@section{\p@chapter}
\def\p@subsection{\p@section}
\def\p@subsubsection{\p@subsection}
\def\p@figure{\p@chapter}
\def\p@table{\p@chapter}
\makeatother

\begin{document}
\part{Erster Teil des Buches}
\chapter{Einführung}
\section{Blindtext 1}
\blindtext\label{BT_1} 
\section{Weitere Texte}

%NEU
HIER BEGINNT DER NEUE TEXT, siehe \ref{Test}.\\ 
%NEU

Was bereits in Blindtext 1 in Abschnitt \ref{BT_1} ausgeführt, wollen wir in Blindtext 2 in Abschnitt \ref{BT_2} weiter vertiefen.

Der Querverweis müsste richtig heißen:
Was bereits in Blindtext 1 in Abschnitt \ref{BT_1} ausgeführt, wollen wir in Blindtext 2 in Abschnitt II-1.1 weiter vertiefen.

\section{Texte NEU}
%NEU
HIER BEGINNT DER NEUE TEXT\label{Test}.
%NEU

\part{Zweiter Teil des Buches}
\chapter{Ausführungen}
\section{Blindtext 2}
\blindtext\label{BT_2}
\section{Weitere Texte}
In Blindtext 1 (siehe Abschnitt \ref{BT_1}) wurde bereits ausgeführt \dots

Auch hier muss die römische Ziffer des Buchteils mitgeführt werden, wenn auf einen anderen Buchteil verwiesen wird.

\end{document}

Noch einfacher wird es, wenn die Kapitelnummer immer (auch in der Kapitelüberschrift selbst und im Inhaltsverzeichnis) die Teil-Nummer enthalten soll. Dann genügt:

\documentclass[12pt, oneside,numbers=endperiod]{book}
\usepackage[utf8]{inputenc}% Wer Umlaute verwendet, sollte die Codierung deklarieren!
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}

\usepackage{mwe}
%Kap.-Zählung neu beginnen
\counterwithin{chapter}{part}

\begin{document}
\part{Erster Teil des Buches}
\chapter{Einführung}
\section{Blindtext 1}
\blindtext\label{BT_1}
\section{Weitere Texte}

Was bereits in Blindtext 1 in Abschnitt \ref{BT_1} ausgeführt, wollen wir in Blindtext 2 in Abschnitt \ref{BT_2} weiter vertiefen.

Der Querverweis müsste richtig heißen:
Was bereits in Blindtext 1 in Abschnitt \ref{BT_1} ausgeführt, wollen wir in Blindtext 2 in Abschnitt II-1.1 weiter vertiefen.

\part{Zweiter Teil des Buches}
\chapter{Ausführungen}
\section{Blindtext 2}
\blindtext\label{BT_2}
\section{Weitere Texte}
In Blindtext 1 (siehe Abschnitt \ref{BT_1}) wurde bereits ausgeführt \dots

Auch hier muss die römische Ziffer des Buchteils mitgeführt werden, wenn auf einen anderen Buchteil verwiesen wird.

\end{document}

Man kann dann also sogar bei book bleiben. Allerdings muss man für den die Einträge der Teile in das Abbildungsverzeichnis dann doch wieder die Klasse wechseln. Dann hat man die Wahl, ob man ebenfalls einfach \counterwithin verwendet oder die \RedeclareSectionCommand-Anweisung nutzt.


aasaa00
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 99
Registriert: Do 1. Mär 2018, 11:43

Re: Part-übergreifende Querverweise

Beitrag von aasaa00 »

Vielen Dank für die Antworten.

@Stefan Kottwitz: Wenn ich deinen letztgenannten Vorschlag auf das MWE übertrage sieht es genauso aus, wie ich es haben wollte. Aber wenn ich es auf mein Dokument übertrage, werden mir mehrere Fehler angezeigt.
Was das genaue Problem ist, kann ich nach stundenlanger Arbeit nicht sagen. Ich versuche die Fehlerquelle einzugrenzen, aber ich wollte fragen, ob es eine Möglichkeit gibt, in der die von mir gestellte Anforderung nur auf das Abbildungs- und Tabellenverzeichnis beschränkt werden kann?

@Gastname ungültig: Bei deinem Vorschlag fehlt das Abbildungs- und Tabellenverzeichnis bzw. es bleibt offen, wie ich in den genannten Verzeichnissen die Zwischenüberschriften "Teil I" und "Teil II" erreiche.


Gastname ungültig

Re: Part-übergreifende Querverweise

Beitrag von Gastname ungültig »

aasaa00 hat geschrieben:
Di 30. Mär 2021, 17:48

@Gastname ungültig: Bei deinem Vorschlag fehlt das Abbildungs- und Tabellenverzeichnis bzw. es bleibt offen, wie ich in den genannten Verzeichnissen die Zwischenüberschriften "Teil I" und "Teil II" erreiche.

Den Teil der Frage hat stefan ja bereits hinreichend beantwortet.


Benutzeravatar
Stefan Kottwitz
Admin
Admin
Beiträge: 2500
Registriert: Di 8. Jul 2008, 00:39
Kontaktdaten:

Re: Part-übergreifende Querverweise

Beitrag von Stefan Kottwitz »

Aber wenn ich es auf mein Dokument übertrage, werden mir mehrere Fehler angezeigt.

Welche Fehlermeldungen denn? Hast Du Auszüge aus der Log-Datei? Hier wurde ja nur ein einzelnes Makro für den Verzeichnis-Part-Eintrag gepatcht.

Evtl. teste mal das Minimalbeispiel mit dem Patch und Deiner ganzen Präambel damit vllt. ein reproduzierbarer und damit reparierbarer Fehler dabei herauskommt.

Stefan


Antworten