
En mi tesis de maestría, utilizo el paquete de glosarios para realizar un seguimiento de todas mis abreviaturas y símbolos. Para diferenciar entre los dos, hice dos glosarios diferentes. Uno usando el paquete de abreviaturas estándar y otro que definí yo mismo, la lista de símbolos (usé mi propio estilo porque necesitaba cuatro columnas, una para el símbolo, una para las unidades, una para la descripción y otra para las páginas).
También utilizo numeración romana y arábiga. Cuando hago clic en una referencia en el glosario (símbolo), se redirige correctamente a la ubicación en el texto. Pero cuando hago clic en la referencia (símbolo) en el texto, se redirige a la primera página (en lugar de la ubicación correcta en la lista de símbolos).
Sin embargo, para la lista de abreviaturas funciona correctamente. El error debe estar en la definición de mi nuevo estilo. Incluso cuando elimina el cambio en la numeración, aún redirige a la primera página.
hyperrefname
no parece resolver el problema. ¿Cómo puedo arreglarlo?
incluí unejemplo de trabajo mínimo(MWE) que puedes ejecutar usando todos los paquetes y un compilador Perl.
\documentclass[a4paper]{book}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage{hyperref}
\hypersetup{colorlinks=true, linkcolor=Maroon, citecolor=ForestGreen, filecolor=magenta, urlcolor=magenta, hypertexnames=false}
%% Glossary properties
\usepackage[nomain,acronym,toc,section]{glossaries}
\newglossary{symbol}{sbl}{smb}{Symbols}
\usepackage{array}
\makeglossaries
\usepackage[xindy]{imakeidx}
\makeindex
%% My own glossary to display the units
\newglossarystyle{tabx4col}{%
% Put the glossary in a longtable environment:
\renewenvironment{theglossary}%
{\begin{longtable}{@{}p{0.12\textwidth}@{}p{0.12\textwidth}@{}p{0.56\textwidth}rp{0.15\textwidth}}}%
{\end{longtable}}%
\renewcommand*{\glossaryentryfield}[5]{%
\glstarget{\textbf{##1}}{\textbf{##2}}% Name
& $[$\glsentryuseri{##1}$]$% Units
& ##3% Description
& ##5% Page list
\\% end of row
}%
%% Nothing between groups:
\renewcommand*{\glsgroupskip}{}%
}
%% Abbreviations
\newacronym{abr1}{ABR1}{Abbreviation 1}
\newacronym{abr2}{ABR2}{Abbreviation 2}
%% Symbols
\newglossaryentry{sym1}
{%
type=symbol,
name={\ensuremath{\alpha}},
description={The first symbol, with a very long description that spans multiple lines},
user1={kg},
sort=alpha
}
\newglossaryentry{sym2}
{%
type=symbol,
name={\ensuremath{\beta}},
description={the second symbol},
user1={m},
sort=beta
}
\begin{document}
\pagenumbering{roman}
\tableofcontents
{\let\cleardoublepage\clearpage
\chapter*{List of abbreviations and symbols}
\addcontentsline{toc}{chapter}{List of abbreviations and Symbols}
\printglossary[type=\acronymtype,title=Abbreviations,toctitle=Abbreviations]
\printglossary[type=symbol,style=tabx4col]
}
\chapter{Introduction}
\pagenumbering{arabic}
\gls{abr1} \gls{abr2} \gls{sym1} \gls{sym2}
\chapter{First chapter}
\gls{abr1} \gls{abr2} \gls{sym1} \gls{sym2}
\end{document}
Respuesta1
El archivo de prueba genera múltiples advertencias del hyperref
siguiente tipo:
pdfTeX warning (dest): name{glo:sym1} has been referenced but does not exist,
replaced by a fixed one
lo cual es algo críptico, pero glossaries
esto puede significar que algo salió mal con glossaries
el mecanismo de destino del hipervínculo. La inexistencia de este enlace es lo que provoca que el hipervínculo le lleve a la primera página del documento. El comando \glstarget
configura este hipervínculo en el estilo de glosario. El primer argumento debe ser la etiqueta de la entrada y aquí está el problema:
\glstarget{\textbf{##1}}{\textbf{##2}}% Name
El \textbf
primer argumento confunde el mecanismo objetivo. Sólo necesita eliminarlo para deshacerse del problema:
\glstarget{##1}{\textbf{##2}}% Name