Problema de referencia del glosario LaTeX

Problema de referencia del glosario LaTeX

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.

hyperrefnameno 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 hyperrefsiguiente 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 glossariesesto puede significar que algo salió mal con glossariesel 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 \glstargetconfigura 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 \textbfprimer argumento confunde el mecanismo objetivo. Sólo necesita eliminarlo para deshacerse del problema:

\glstarget{##1}{\textbf{##2}}% Name

información relacionada