如果我将该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
)但指向子子节。在后一种情况下,引用将正确指向子子节和有适当的数量。