Ich verwende das cleveref
Paket. Mein Dokument sieht ungefähr so aus:
\documentclass{article}
\usepackage{cleveref}
\begin{document}
\tableofcontents
\section{Section A}
Refer to \cref{append} for more details.
\appendix
\renewcommand{\thesection}{\Roman{section}}
\renewcommand{\thesubsection}{\Alph{subsection}}
\renewcommand{\thesubsubsection}{\Roman{subsubsection}}
\section{Appendix}
\subsection{Appendix A}
\subsubsection{Detailed Explanation} \label{append}
blah
\subsection{Appendix B}
\end{document}
Ich muss Unterabschnitte und Unterunterabschnitte auf diese Weise verwenden, da der Anhang selbst einen eigenen Eintrag und eine eigene Abschnittsnummer im benötigt ToC
.
Jetzt möchte ich, dass meine Ausgabe ungefähr so aussieht:
Abschnitt a
Weitere Einzelheiten finden Sie in Anhang A, Abschnitt I.
Ich habe bereits versucht, \crefname
die Ausgabe anzupassen:
\crefname{secapp}{Anhang \Alph{subsection}, Section}{Appendix \Alph{subsection}, Section}
%Stuff here
\subsubsection{Detailed Explanation} \label[secapp]{append}
secapp
Eine solche Definition führt jedoch dazu cleveref
, dass die Nummer des Unterabschnitts ausgedruckt wird, der \cref
aufgerufen wurde.
Gibt es eine Möglichkeit, die Ausgabe wie oben beschrieben zu formatieren cleveref
?
Danke!
Antwort1
Das Benennungs-/Nummerierungsschema ist meiner Meinung nach verwirrend, aber die Verwendung von xassoccnt
und seines \RegisterPostLabelHook{\zlabel}
Makros definiert automatisch zusätzliche Beschriftungen und speichert die \thesubsection
für den entsprechenden Anhang „Abschnitt“, der \parentCref
später mit extrahiert wird.
\documentclass{article}
\usepackage{lipsum}
\usepackage{xassoccnt}
\usepackage{xpatch}
\usepackage{hyperref}
\usepackage[user,counter,hyperref]{zref}
\usepackage{cleveref}
\makeatletter
\AtEndPreamble{
\newif\if@hyperrefloaded
\@ifpackageloaded{hyperref}{
\@hyperrefloadedtrue
}{
\@hyperrefloadedfalse
}
}
\makeatother
\usepackage{xparse}
% Define a new property named 'appendix'
\makeatletter
\zref@newprop{appendix}{\thesubsection}
% Add the new property to the main property list stored with \zlabel, but for \appendix only
\g@addto@macro{\appendix}{%
\zref@addprops{main}{appendix}%
}
% Command for uppercase output
\NewDocumentCommand{\parentCref}{m}{%
\zref@ifrefundefined{#1}{%
\Cref{#1}%
}{%
\if@hyperrefloaded
\hyperlink{\zref@extract{#1}{anchor}}{\appendixname\ \zref@extract{#1}{appendix}, Section \zref@extract{#1}{default}}%
\else
\appendixname\ \zref@extract{#1}{appendix}, Section \zref@extract{#1}{default}%
\fi
}%
}
\makeatother
\AtBeginDocument{%
\RegisterPostLabelHook{\zlabel}
}
\begin{document}
\section{Normal section} \label{firstsection}
Refer to \parentCref{append} for more details, but don't forget \parentCref{append:b}.
\appendix
\renewcommand{\thesection}{\Roman{section}}
\renewcommand{\thesubsection}{\Alph{subsection}}
\renewcommand{\thesubsubsection}{\Roman{subsubsection}}
\clearpage
\section{Appendix}
\subsection{Appendix A}
\subsubsection{Detailed Explanation} \label{append}
blah
\subsection{Appendix B} \label{appendix:B}
\subsubsection{Even more detailed explanations} \label{append:b}
\end{document}
%\crefname{subsubappendix}{\appendixname \Alph{subsection}, Section}{\appendixname \Alph{subsection}, Section}
\crefformat{subsubappendix}{#2\appendixname\ thesubappendix, Section #1#3}
\Crefformat{subsubappendix}{#2\appendixname\ thesubappendix, Section #1#3}
\begin{document}
\tableofcontents
\section{Section A} \label{firstsection}
Refer to \cref{append} for more details, but don't forget \Cref{append:b}.
\appendix
\renewcommand{\thesection}{\Roman{section}}
\renewcommand{\thesubsection}{\Alph{subsection}}
\renewcommand{\thesubsubsection}{\Roman{subsubsection}}
\section{Appendix}
\subsection{Appendix A}
\subsubsection{Detailed Explanation} \label{append}
blah
\subsection{Appendix B} \label{appendix:B}
\subsubsection{Even more detailed explanations} \label{append:b}
\end{document}