我希望标有标签可点击的对象,这样当您点击它时,您就会移动到相关\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
如果不使用多个\ref
s 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}