Wie schließe ich den Buch-/Teilenamen in die Querverweise ein (falls buch-/teilübergreifend)?

Wie schließe ich den Buch-/Teilenamen in die Querverweise ein (falls buch-/teilübergreifend)?

Meine Dokumentstruktur ist im Grunde eine Sammlung anderer kleinerer Dokumente. Ich habe mich entschieden, nicht in dieXR-HyperStraße und mit einzelnen PDF-Dokumenten, da die Anforderung am Ende sowieso eine einzelne Datei ist. Also habe ich mich stattdessen entschieden, ein großes LaTeX-Dokument mit meinen Unterdokumenten alsBücher, z.B:

\documentclass{memoir}
\renewcommand*{\thebook}{\Alph{book}} % "Book A", "Book B", etc.
\begin{document}
\book{maindoc}
\chapter{maindoc first chapter}
\label{chap:maindoc-first}
\chapter{maindoc second chapter}
\label{chap:maindoc-second}

\book{extradoc}
\setcounter{chapter}{0} % reset chapter counter with each book
\chapter{extradoc first chapter}
\label{chap:extradoc-first}
\chapter{extradoc second chapter}
\label{chap:extradoc-second}
As shown in \ref{chap:maindoc-first}, and further research in \ref{chap:extradoc-first} ...

\book{anotherdoc}
\setcounter{chapter}{0}
\chapter{anotherdoc chapter}
\end{document}

Jetzt As shown in \ref{chap:maindoc-first}wird das so dargestellt, als ob das Kapitel im Rahmen des aktuellen Teils wäre. Was ich erreichen möchte, ist so etwas wie:

  • Wie in Kapitel 1 des Hauptdokuments und Kapitel 1 gezeigt …
  • Wie in Kapitel 1 (Hauptdokument) und Kapitel 1 gezeigt …
  • Wie in (1, Hauptdokument) und (1) gezeigt …
  • Wie in A-1 und 1 gezeigt …

Da die meisten Verweise jedoch in den Dokumenten selbst erfolgen, möchte ich nichtalleder Referenzen wie indiese Frage und Antwort.

Wie kann ich das erreichen? Gibt es eine Möglichkeit, den Umfang der Referenz zu bestimmen und das Präfix bedingt einzuschließen?

Das Gleiche möchte ich letztlich auch für Verweise auf Theoreme, Abbildungen, Tabellen etc. tun.

Antwort1

Da Sie verwenden memoir, sollten Sie die Querverweismöglichkeiten nutzen, die die Klasse bietet. Diese werden in Kapitel 16 desBenutzerhandbuch.

memoirhat jedoch einige ziemlich konkrete Vorstellungen zur Formatierung und bietet daher nicht immer viel Flexibilität über diese Vorstellungen hinaus. In diesem Fall ist es der Ansicht, dass Querverweise auf andere Teile des Dokuments groß geschrieben werden sollten. Wenn Sie dies lieber vermeiden möchten, müssen Sie Alternativen anbieten.

Folgendes basiert auf den Versionen, die bereitgestellt werden von memoir:

\aref% based on \Aref
\bref% \Bref
\cref% \Cref
\sref% \Sref

und die Namen in Kleinbuchstaben werden bereitgestellt von:

\lcbookrefname% based on \bookrefname
\lcchapterrefname% \chapterrefname
\lcsectionrefname% identical to \sectionrefname
\lcappendixrefname% based on \appendixrefname

\titlerefIn Kombination mit dem von bereitgestellten Befehl können Sie hierdurch Referenzen nach Wunsch festlegen memoir.

Um dies zu automatisieren, \chapref{}steht ein Befehl zur Verfügung, der Referenzen erstellen sollte, die gemäß der ersten von Ihnen aufgeführten Möglichkeit formatiert sind. Sie können andere Befehle erstellen, um die anderen Formate auf ähnliche Weise zu erreichen.

Notiz:Ich vermute, dass die Art und Weise, wie ich den Befehl codiert habe \chapref, zumindest nicht die beste Vorgehensweise ist.Vorsicht beim Kauf …

\documentclass{memoir}
\renewcommand*{\thebook}{\Alph{book}} % "Book A", "Book B", etc.
\newcommand*{\aref}[1]{\lcappendixrefname\ref{#1}}
\newcommand*{\bref}[1]{\lcbookrefname\ref{#1}}
\newcommand*{\cref}[1]{\lcchapterrefname\ref{#1}}
\newcommand*{\sref}[1]{\lcsectionrefname\ref{#1}}
\newcommand*{\lcbookrefname}{book~}
\newcommand*{\lcchapterrefname}{chapter~}
\newcommand*{\lcsectionrefname}{\S}
\newcommand*{\lcappendixrefname}{appendix~}
\makeatletter
\def\chapref@book#1:#2-#3\@nil{#2}
\newcommand*{\chapref}[1]{%
  \edef\tempa{\expandafter\chapref@book#1\@nil}%
  \edef\tempb{\ref{book:\tempa}}%
  \edef\tempc{\thebook}%
  \ifx\tempb\tempc
  \cref{#1}%
  \else
  \cref{#1} of the \titleref{book:\tempa}%
  \fi}
\makeatother
\begin{document}
  \book{maindoc}
  \label{book:maindoc}
  \chapter{maindoc first chapter}
  \label{chap:maindoc-first}
  \chapter{maindoc second chapter}
  \label{chap:maindoc-second}

  \book{extradoc}
  \label{book:extradoc}
  \setcounter{chapter}{0} % reset chapter counter with each book
  \chapter{extradoc first chapter}
  \label{chap:extradoc-first}
  \chapter{extradoc second chapter}
  \label{chap:extradoc-second}

  Manually using the facilities of the class:

  As shown in \cref{chap:maindoc-first} of the \titleref{book:maindoc}, and further research in \cref{chap:extradoc-first} ...

  \noindent Or using the custom command:

  As shown in \chapref{chap:maindoc-first}, and further research in \chapref{chap:extradoc-first} \dots

  \book{anotherdoc}
  \setcounter{chapter}{0}
  \chapter{anotherdoc chapter}
\end{document}

manuelle und automatisierte Kapitelverweise

verwandte Informationen