LaTeX 词汇表参考问题

LaTeX 词汇表参考问题

在我的硕士论文中,我使用词汇表包来跟踪我的所有缩写和符号。为了区分两者,我制作了两个不同的词汇表。一个使用标准缩写包,另一个我自己定义,即符号列表(我使用自己的样式,因为我需要四列,一列用于符号,一列用于单位,一列用于描述,一列用于页面)。

我还使用了罗马数字和阿拉伯数字。当我单击(符号)词汇表中的引用时,它会正确重定向到文本中的位置。但是当我单击文本中的(符号)引用时,它会重定向到第一页(而不是符号列表中的正确位置)。

但是,对于缩写列表,它确实可以正常工作。错误一定是在我的新样式的定义中。即使您删除编号更改,它仍会重定向到第一页。

hyperrefname似乎无法解决问题。我该如何修复?

我添加了一个最小工作示例(MWE),您可以使用所有包和 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}

答案1

测试文件生成多个警告,如下hyperref所示:

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

这有点神秘,但这glossaries可能意味着超链接目标机制出了问题glossaries。这个链接的不存在导致超链接将您带到文档的第一页。该命令\glstarget以词汇表样式设置此超链接。第一个参数必须是条目的标签,问题如下:

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

第一个参数中的\textbf混淆了目标机制。您只需将其删除即可解决问题:

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

相关内容