etemune 或 revnum 环境中项目的超链接已损坏

etemune 或 revnum 环境中项目的超链接已损坏

etaremune我想创建指向或环境项目的超链接revnum。它适用于枚举环境,但如何使用反向编号的列表执行相同操作?以下是仅指向环境的超链接起作用的示例enumerate

\documentclass[a4paper,10pt]{article}
\usepackage{etaremune}                      
\usepackage{revnum}
\usepackage{hyperref}

\begin{document}
 \begin{enumerate}
   \item aaa \label{1} 
   \item bbb \label{2}
 \end{enumerate}

 \begin{etaremune}[start=4]
   \item ccc \label{4}
   \item ddd \label{3}
 \end{etaremune}

 \begin{revnumerate}[6]
   \item eee \label{6}  
   \item fff \label{5}
 \end{revnumerate}

 \ref{1}, \ref{2}, \ref{3}, \ref{4}, \ref{5}, \ref{6}
\end{document}

在相应的 pdf 中, \ref{3} 和 \ref{4} 并没有像应该的那样链接到第 3.ddd 行和第 4.ccc 行,而是链接到了枚举环境的最后一项,即第 2.bbb 行。

答案1

这是一种似乎有效的方法(并且允许嵌套枚举)。

etemune 与 hyperref 1

etemune 与 hyperref 2

\documentclass[a4paper,10pt]{article}
\usepackage{etaremune}                      
\usepackage[colorlinks]{hyperref}

\providecommand*{\phantomsection}{}% for compatibility if hyperref not loaded
\newcommand{\lebal}{\phantomsection\label}

\begin{document}

 \begin{etaremune}[start=4]
   \item \lebal{A} ccc 
   \item \lebal{B} ddd
   \item \lebal{C} and
     \begin{etaremune}
       \item \lebal{C.top} eee
       \item \lebal{C.middle} fff
       \item \lebal{C.bottom} ggg
     \end{etaremune}
 \end{etaremune}

 \ref{A}, \ref{B}, \ref{C} and \ref{C.top}, \ref{C.middle}, \ref{C.bottom}
\end{document}

答案2

我找到了一种解决方法:使用 newenvironment 时,反向编号的超链接可以工作(最初由姆赫尔文斯有没有办法在枚举环境中获得反向编号?):

\newenvironment{benumerate}[1]{
  \let\oldItem\item
  \def\item{\addtocounter{enumi}{-2}\oldItem}
  \begin{enumerate}
   \setcounter{enumi}{#1}
   \addtocounter{enumi}{1}
}{
  \end{enumerate}
}

相关内容