从标签链接到参考并返回?

从标签链接到参考并返回?

我希望标有标签可点击的对象,这样当您点击它时,您就会移动到相关\ref对象,反之亦然。

我该怎么做?

\documentclass{article}
\begin{document}
\begin{enumerate}
  \item test\label{l1}
\end{enumerate}


   \pagebreak

   test2\ref{l1}
\end{document}

答案1

我理解您的设置如下:您在文档的某个部分有编号答案,在文档的其他部分有答案,并且您希望在问题 1 和问题 1 的答案、问题 2 和问题 2 的答案等之间提供双向超链接。

  • 如果您有编号问题并使用 增加与问题相关的计数器\refstepcounter,您可以\ref在答案中使用 来创建指向编号问题的链接。如果hyperref已加载,则将\ref自动解析为超链接。唯一棘手的部分是从问题到答案创建超链接;您不能使用,\ref因为很可能没有与答案相关的(独立)计数器。幸运的是,为这种情况hyperref提供了\hyperlink/宏对。\hypertarget

  • 在下面的例子中,我设置了一个名为的环境,question它需要参数:问题的标题、与问题关联的文本\label以及与答案关联的超目标的名称。第三个参数用于环境的\hyperlink指令。

  • 相应的answer条目需要参数:关联问题的宏的参数\label,以及答案的超目标的名称。(请注意,问题的参数 2 和 3 应该与关联答案的参数 1 和 2 相同。)第二个参数用于环境的\hypertarget指令。

在此处输入图片描述

在此处输入图片描述

\documentclass{article}
\usepackage{amssymb}  % for \Box macro
\usepackage[colorlinks=true,
            linkcolor=red]
           {hyperref}
\usepackage[textheight=3cm]
           {geometry} %% just for this example

\newcounter{quest}
\newenvironment{question}[3]{%
   \refstepcounter{quest} \label{#2}
   \par\bigskip\noindent
   \textbf{Question \thequest: #1?}
   \par\medskip

   For an answer, click here: \hyperlink{#3}{$\Box$}}{\par\bigskip}

\newenvironment{answer}[2]{%
   \par\bigskip\noindent%
   \hypertarget{#2}{\textbf{Answer to Question \ref{#1}}}%
   \par\medskip}{\par\bigskip}

\begin{document}

\begin{question}{What's the meaning of life}%
                {quest:life}{ans:life}
\end{question}

\begin{question}{What is Pythagoras' Theorem}%
                {quest:pyth}{ans:pyth}
\end{question}

\newpage
\begin{answer}{quest:life}{ans:life}
Mumble, mumble, mumble \dots
\end{answer}

\begin{answer}{quest:pyth}{ans:pyth}
Mumble, mumble, mumble \dots
\end{answer}
\end{document}

答案2

如果不使用多个\refs per ,则\label可以使用以下命令:

\documentclass{article}
\usepackage{hyperref}

\newcommand{\mylabel}[2]{%
  \hyperref[#1]{#2}\label{back:#1}
}
\newcommand{\myref}[2]{%
  \hyperref[back:#1]{#2}\label{#1}
}

\begin{document}
  \begin{enumerate}
    \item \mylabel{l1}{test}
  \end{enumerate}

  \pagebreak

  \myref{l1}{test2}
\end{document}

另一个解决方案是打包\hyperlink\hypertarget放入宏中:

\documentclass{article}
\usepackage{hyperref}

\newcommand{\mylabel}[2]{%
  \hyperlink{back:#1}{\hypertarget{#1}{#2}}
}
\newcommand{\myref}[2]{%
  \hyperlink{#1}{\hypertarget{back:#1}{#2}}
}

\begin{document}
  \begin{enumerate}
    \item \mylabel{l1}{test}
  \end{enumerate}

  \pagebreak

  \myref{l1}{test2}
\end{document}

相关内容