Estoy usando el cleveref
paquete. Mi documento se parece a esto:
\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}
Tengo que usar subsecciones y subsubsecciones de esta manera, porque se requiere que el apéndice en sí tenga su propia entrada y número de sección en el archivo ToC
.
Ahora quiero que mi resultado sea algo parecido a
Sección a
Consulte el Apéndice A, Sección I para obtener más detalles.
Ya intenté usar \crefname
para personalizar la salida:
\crefname{secapp}{Anhang \Alph{subsection}, Section}{Appendix \Alph{subsection}, Section}
%Stuff here
\subsubsection{Detailed Explanation} \label[secapp]{append}
pero definir secapp
así provoca cleveref
que se imprima el número de la subsección en la que \cref
se llamó.
¿Hay alguna manera de formatear la salida como se describe anteriormente usando cleveref
?
¡Gracias!
Respuesta1
El esquema de denominación/numeración es confuso, desde mi punto de vista, pero el uso xassoccnt
y su \RegisterPostLabelHook{\zlabel}
macro define automáticamente etiquetas adicionales, almacenando la \thesubsection
'sección' del apéndice correspondiente, que se extrae más \parentCref
adelante.
\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}