Cleverefs Referenznamen für Kapitel lokal neu definieren

Cleverefs Referenznamen für Kapitel lokal neu definieren

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:

Tatsächliche Ergebnis

Das gewünschte Ergebnis ist wie folgt:

Erwünschtes Ergebnis

cleverefIch 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 \crefnameMakros in einem lokalen Bereich zu verwenden.
Das Hinzufügen von \begingroup/ \endgrouphat nicht geholfen.

Als zusätzliche Verbesserung könnte der ursprüngliche Referenzname für Kapitel zunächst gespeichert und nach dem Ende der appendicesUmgebung wiederhergestellt werden (anstelle des im MWE fest codierten chapter/ chapters-Zeichenfolgenpaars).

Antwort1

Das Paket cleverefdefiniert den Schalter neu \appendix. Wenn Sie diesen Befehl hinzufügen (mit oder ohne appendicesUmgebung), 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 cleverefauch 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}

Bildbeschreibung hier eingeben

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}

Ergebnis

verwandte Informationen