Estoy usando xr-hyper
el paquete de @David Carlisle y smartref
el paquete de Giuseppe Bilotta para compilar un libro de varios volúmenes. xr-hyper
permite referencias cruzadas entre diferentes volúmenes como se muestra en el siguiente fragmento de código:
\newcommand{Volume}{1}% put this is PlasmaBook1.tex
% This is the code shared by all volumes
\usepackage{xr-hyper}
\usepackage{hyperref}
\ifnum\Volume=1
\externaldocument{PlasmaBook2}
\externaldocument{PlasmaBook3}
\else\ifnum\Volume=2
\externaldocument{PlasmaBook1}
\externaldocument{PlasmaBook3}
\else\ifnum\Volume=3
\externaldocument{PlasmaBook1}
\externaldocument{PlasmaBook2}
\fi\fi\fi
Y el paquete smartref
se utiliza para ocultar una parte del número de ecuación como se explica en¿Cómo descarto una parte de un número de ecuación cuando hago una referencia cruzada?
\usepackage{smartref}
\addtoreflist{chapter}
\newcommand*{\srefaux}[1]{%
\ischapterchanged{#1}% checks if section number has changed
\ifchapterchanged% if current chapter is different
\chapterref{#1}.% put the section reference
\fi% else do nothing
\ref*{#1}% <- we changed this to ref*
}
\makeatletter
\renewcommand \theequation {\@arabic\c@equation}
\renewcommand \thefigure {\@arabic\c@figure}
\renewcommand \thetable {\@arabic\c@table}
\makeatother
\newcommand*\sref[1]{\hyperref[#1]{\srefaux{#1}}}
\newcommand*\seqref[1]{(\hyperref[#1]{\srefaux{#1}})}
Desafortunadamente, smartref
el mecanismo funciona sólo dentro de un único volumen. Creo que esto se debe a que xr-hyper
el paquete solo lee \newlabel
cadenas de aux
archivos e ignora \newsmartlabel
las etiquetas escritas por, smartref
como muestra el siguiente ejemplo tomado de un aux
archivo real:
\newlabel{ch01}{{1}{6}{Общие сведения о плазме}{chapter.4}{}}
\newsmartlabel{ch01}{{1}{1}}
Entonces mi pregunta es
¿Cómo dar instrucciones
xr-hyper
para leer ambas etiquetas\newlabel
y ?\newsmartlabel
Quizás se podría incluir el código apropiado en la nueva versión del xr-hyper
paquete.