
Betrachten Sie das folgende MWE:
\documentclass{scrbook}
\usepackage{appendix}
\usepackage{cleveref}
\usepackage{etoolbox}
\BeforeBeginEnvironment{appendices}{%
\crefname{chapter}{appendix}{appendices}%
%\Crefname{chapter}{Appendix}{Appendices}%
}
\AfterEndEnvironment{appendices}{%
\crefname{chapter}{chapter}{chapters}%
%\Crefname{chapter}{Chapters}{Chapters}%
}
\begin{document}
\noindent Reference to~regular chapter: \cref{chp:regular_chapter}.
\noindent Reference to~appendix chapter: \cref{chp:appendix_chapter}.
\chapter{Regular chapter} \label{chp:regular_chapter}
Regular chapter text.
\begin{appendices}
\chapter{Appendix chapter} \label{chp:appendix_chapter}
Appendix chapter text.
\end{appendices}
\end{document}
Das Ergebnis ist die folgende Ausgabe:
Das gewünschte Ergebnis ist wie folgt:
cleveref
Ich frage mich, wie der obige Versuch , den Namen für Kapitelverweise lokal neu zu definieren, so behoben werden kann, dass er wie vorgesehen funktioniert.
Generell brauche ich eine Lösung, um \crefname
Makros in einem lokalen Bereich zu verwenden.
Das Hinzufügen von \begingroup
/ \endgroup
hat nicht geholfen.
Als zusätzliche Verbesserung könnte der ursprüngliche Referenzname für Kapitel zunächst gespeichert und nach dem Ende der appendices
Umgebung wiederhergestellt werden (anstelle des im MWE fest codierten chapter
/ chapters
-Zeichenfolgenpaars).
Antwort1
Das Paket cleveref
definiert den Schalter neu \appendix
. Wenn Sie diesen Befehl hinzufügen (mit oder ohne appendices
Umgebung), erhalten Sie die gewünschten Referenzen in Ihrem MWE. Es gibt jedoch keinen Befehl, um zu den regulären Kapitelverweisen zurückzukehren.
Eine Lösung besteht darin, das optionale Argument von zu verwenden label
. Dieses zusätzliche optionale Argument wird cleveref
auch von bereitgestellt:
\documentclass{scrbook}
\usepackage{appendix}
\usepackage{cleveref}
\begin{document}
\noindent Reference to regular chapter: \cref{chp:regular_chapter}.
\noindent Reference to appendix chapter: \cref{chp:appendix_chapter}.
\noindent Referece to another regular chapter: \cref{chp:another}.
\chapter{Regular chapter} \label{chp:regular_chapter}
Regular chapter text.
\begin{appendices}
\chapter{Appendix chapter}
\label[appendix]{chp:appendix_chapter}% <- changed (optional argument added)
Appendix chapter text.
\end{appendices}
\chapter{Another regular chapter}\label{chp:another}
\end{document}
Antwort2
Nachesdds AntwortIch habe es geschafft, es etwas automatisierter zu machen:
\documentclass{scrbook}
\usepackage{appendix}
\usepackage{cleveref}
\begin{document}
\noindent Reference to~regular chapter: \cref{chp:regular_chapter}.
\noindent Reference to~appendix chapter: \cref{chp:appendix_chapter}.
\noindent Reference to~another regular chapter: \cref{chp:another_regular_chapter}.
\chapter{Regular chapter} \label{chp:regular_chapter}
Regular chapter text.
\begin{appendices}
\appendix
\chapter{Appendix chapter} \label{chp:appendix_chapter}
Appendix chapter text.
\end{appendices}
\renewcommand{\thechapter}{\arabic{chapter}}
\chapter{Another regular chapter} \label{chp:another_regular_chapter}
Another regular chapter text.
\end{document}