如果使用 algorithm2e 包,经典论文中的引用会出现问题

如果使用 algorithm2e 包,经典论文中的引用会出现问题

如果我将该algorithm2e包与linesnumbered选项和classicthesis包一起使用,对子子部分的引用就是错误的。如果我不使用该linesnumbered选项,引用就是正确的。这是一个错误吗?有解决方法吗?

\documentclass{scrbook}
\usepackage[svgnames]{xcolor}
\usepackage{classicthesis}
\usepackage[english]{babel}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ruled, vlined, linesnumbered]{algorithm2e}  % references NOT OK
%\usepackage[ruled, vlined]{algorithm2e}  % references OK

\begin{document}

\chapter{Chapter}

Wrong reference -> \ref{label}

\subsection{Section}

\begin{algorithm}[htbp]
  \LinesNumbered
  i = 1
\end{algorithm}

\subsubsection{Sub Sub Section}
\label{label}

\end{document}

答案1

\label选取最近\@currentlabel设置的。并且,对于你的情况,这algorithm激活后,行内的行linesnumbered。如果您的意图是让超链接指向子节的开头,则需要插入\phantomsection并更新\@currentlabel到相应的计数器手动

\makeatletter
\def\@currentlabel{\thesubsection}% Update reference text
\makeatother
\phantomsection% Mark hyperref link location
\subsubsection{Sub Sub Section}
\label{label}

或者您需要更新计数器secnumdepth以实际上对您的子子部分进行编号:

\setcounter{secnumdepth}{3}% Number up to \subsubsection

在前一种情况下,引用将显示1.0.1(包含在\thesubsection)但指向子子节。在后一种情况下,引用将正确指向子子节有适当的数量。

在此处输入图片描述

相关内容