交叉引用前文部分

交叉引用前文部分

我正在尝试使用 对文档中的前向部分进行交叉引用\hyperref[<to_label>]{<link_text>},但似乎是因为\label{}在之前\hyperref,所以在编译代码时没有定义,所以链接无法正常工作。

我正在使用此代码将enumerate环境项包含在方程式编号中

\counterwithin*{equation}{section}
\counterwithin*{equation}{subsection}
\counterwithin*{equation}{enumi}
\usepackage{chngcntr,etoolbox}
\newif\ifinenumerate
    \AtBeginEnvironment{enumerate}{\inenumeratetrue}

\makeatletter
\renewcommand\theequation{%
  \ifnum\value{subsection}>0 \thesubsection.\else
  \ifnum\value{section}>0 \thesection.\fi\fi
  \ifinenumerate \theenumi\fi
  \arabic{equation}}

\renewcommand\thefigure{%
  \ifnum\value{subsection}>0 \thesubsection.\else
  \ifnum\value{section}>0 \thesection.\fi\fi
  \ifinenumerate \theenumi\fi
  \roman{figure}}
\makeatother

这是我的hyperref设置

\usepackage[colorlinks=false]{hyperref}
\hypersetup{
    pdftitle={...},
    pdfauthor={...},
    pdfsubject={...},
    pdfkeywords={...},
}

这是一个工作示例;正如您所检查的,我的交叉引用带有最后一个引用的方程式,而不是\label我所定义的方程式。

\documentclass[8pt,a4paper,dvipsnames]{article}
\usepackage[utf8]{inputenc}
\usepackage[a4paper,hmargin=2cm,vmargin={2cm,2.5cm}]{geometry}
\usepackage[colorlinks=false]{hyperref}
\hypersetup{
    pdftitle={...},
    pdfauthor={...},
    pdfsubject={...},
    pdfkeywords={...},
}
\usepackage{enumitem}
\usepackage{chngcntr}
\usepackage{cleveref}

\counterwithin*{equation}{section}
\counterwithin*{equation}{subsection}
\counterwithin*{equation}{enumi}

\usepackage{etoolbox}

\newif\ifinenumerate
\AtBeginEnvironment{enumerate}{\inenumeratetrue}

\makeatletter
\renewcommand\theequation{%
  \ifnum\value{subsection}>0 \thesubsection.\else
  \ifnum\value{section}>0 \thesection.\fi\fi
  \ifinenumerate \theenumi\fi
  \arabic{equation}}
\makeatother

\begin{document}
\section{test 1}
\subsection{test 1.1}
\begin{enumerate}[label=\alph*.]
\item item a
    \begin{itemize}
        \item item a case 1         
        \begin{equation}
        a = b
        \end{equation}              
        \begin{itemize}
        \item item a case 1 subcase 1       
        \begin{equation}
        a = b
        \end{equation}
        I need to reference \hyperref[not:Note1]{forward}
        \end{itemize}
    \end{itemize}
In here, for example \label{not:Note1}
\end{enumerate}
\end{document}

答案1

对于没有明显“锚点”(如章节标题或方程编号)的东西,更好的策略是使用 and\hypertarget\hyperlink 。这个问题的答案中有一个很好的例子来解释这一点: 链接到文本的任意部分?

(针对因重复而关闭的问题提供了简单的答案。)

相关内容