LaTeX-Glossar-Referenzproblem

LaTeX-Glossar-Referenzproblem

In meiner Masterarbeit verwende ich das Glossarpaket, um alle meine Abkürzungen und Symbole im Auge zu behalten. Um zwischen den beiden zu unterscheiden, habe ich zwei verschiedene Glossare erstellt. Eines mit dem Standardabkürzungspaket und eines, das ich selbst definiert habe, die Symbolliste (ich habe meinen eigenen Stil verwendet, weil ich vier Spalten brauchte, eine für das Symbol, eine für die Einheiten, eine für die Beschreibung und eine für die Seiten).

Ich verwende außerdem sowohl eine römische als auch eine arabische Nummerierung. Wenn ich im (Symbol-)Glossar auf eine Referenz klicke, wird ich korrekt an die Stelle im Text weitergeleitet. Wenn ich jedoch im Text auf die (Symbol-)Referenz klicke, werde ich auf die erste Seite weitergeleitet (anstatt an die richtige Stelle in der Symbolliste).

Bei der Abkürzungsliste funktioniert es allerdings einwandfrei. Der Fehler muss in der Definition meines neuen Stils liegen. Auch wenn man die Nummerierungsänderung wieder entfernt, erfolgt weiterhin eine Weiterleitung auf die erste Seite.

hyperrefnamescheint das Problem nicht zu lösen. Wie kann ich es beheben?

Ich habe einminimales funktionierendes Beispiel(MWE), das Sie mit allen Paketen und einem Perl-Compiler ausführen können.

\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}

Antwort1

Die Testdatei generiert mehrere Warnungen etwa wie hyperreffolgt:

pdfTeX warning (dest): name{glo:sym1} has been referenced but does not exist, 
replaced by a fixed one

Das ist etwas kryptisch, glossarieskann aber bedeuten, dass mit dem Zielmechanismus des Hyperlinks etwas nicht stimmt glossaries. Die Nichtexistenz dieses Links führt dazu, dass Sie über den Hyperlink auf die erste Seite des Dokuments gelangen. Der Befehl \glstargetrichtet diesen Hyperlink im Glossarstil ein. Das erste Argument muss die Bezeichnung des Eintrags sein, und hier ist das Problem:

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

Das \textbfim ersten Argument verwirrt den Zielmechanismus. Sie müssen es nur entfernen, um das Problem zu beheben:

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

verwandte Informationen