\printglossary 破坏表格计数器和 hyperref

\printglossary 破坏表格计数器和 hyperref

首先,我要指出,这是我第二次用 LaTex 完成的大型工作。通过第一次,我已经积累了一些经验,但不幸的是,在这里我无法取得进一步的进步。

主要问题是,编号\listoftables从 1 开始,而表格本身的标题则以表 2(因此编号由于某种原因增加了 1)。此外,从到\listoftables表格的超链接也不起作用,它总是跳转到标题页(我猜如果找不到引用,会有一个默认的后备行为)。

我会发现: 经过无数次不成功的互联网搜索后,我试图缩小问题首次出现的位置。在我看来,一切都与\printglossary(带或不带参数)有关。如果词汇表未定义或打印,则\listoftables和表格本身的编号和超链接正常工作。

如果有人有想法或者能指出我做错的地方/使用错误的地方,我会很高兴。提前谢谢!

MWE(我希望它能起作用):

\documentclass[11pt,a4paper]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[scaled]{helvet}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage{caption}
\usepackage{xcolor}
\usepackage[ngermanb]{babel}
\usepackage{fancyhdr}
\usepackage{hyperref}
\usepackage{svg}
\usepackage[style=long,nonumberlist,toc,acronym,xindy]{glossaries}
\usepackage[section]{placeins}
\usepackage{setspace}
\usepackage[autostyle]{csquotes}
\usepackage[
   backend=biber,
   style=authoryear
]{biblatex}

\newacronym{BSD}{BSD}{Berkeley Software Distribution}

\definecolor{gray}{gray}{0.25}
\captionsetup[table]{skip=10pt}
\captionsetup[table]{labelfont={color=gray},font={color=gray}}
\captionsetup[figure]{skip=10pt}
\captionsetup[figure]{labelfont={color=gray},font={color=gray}}
\hypersetup{
   colorlinks,
   citecolor=black,
   filecolor=black,
   linkcolor=black,
   urlcolor=black
}

\pagestyle{fancy}

\rhead{\thepage}
\lhead{\nouppercase\leftmark}
\chead{ }
\cfoot{ }

\makeindex
\makeglossaries

\begin{document}
   \maketitle  
   
   \pagenumbering{Roman}
   
   \newpage
   \enlargethispage{-20mm}
   \tableofcontents
   \clearpage
   
   \begin{onehalfspace}    
       
   \listoffigures
   \clearpage
   
   \listoftables
   \clearpage
   
   
   \printglossary[type=\acronymtype, title=Abkürzungsverzeichnis, toctitle=Abkürzungsverzeichnis]
   % \setcounter{table}{0} <-- With this one I can fix the impact but not the cause :(
   \clearpage
       
   \pagenumbering{arabic}
   
   \parindent=0pt
   \parskip=6pt
   \linespread{1.25}

   \section{Section 1}
   This is some text with an acronym \gls{BSD}.
   \begin{table}[!ht]
       \begin{center}
           \setlength\tabcolsep{1.5em}
           \def\arraystretch{1.25}
           \caption{This is some Table}
           \label{SomeTable}
           \begin{tabular}{lcc}
               Header 1 & Header 2 & Header 3 \\
               \hline          
               Content 1 & Content 2 & Content 3 \\
               \hline
           \end{tabular}
       \end{center}    
   \end{table}
   \newpage
   
   \clearpage
   
   \addcontentsline{toc}{section}{Literaturverzeichnis}
   \printbibliography[title={Literaturverzeichnis}]
   
   \end{onehalfspace}
\end{document}

答案1

Ulrike 是对的,与正常环境相反,即使没有,longtable也会增加计数器。我认为这可以被视为 中的一个错误。这是我的解决方案,比我的评论更进一步。如果在 中更正了这个问题,我评论中的解决方案将不再有效。下面的解决方案在任何一种情况下都有效。它只是在词汇表开始时保存计数器,并在结束时恢复它。table\captiontableglossariesglossariestable

\newcounter{mysavetablecounter}
\AddToHook{env/theglossary/begin}{\setcounter{mysavetablecounter}{\value{table}}}
\AddToHook{env/theglossary/end}{\setcounter{table}{\value{mysavetablecounter}}}

在此处输入图片描述 在此处输入图片描述

相关内容