假设我有以下代码。我想交叉引用两个列表之间的数字。基本上,通过单击问题部分中的数字 1,文档会自动将您带到答案部分中的数字 1。
\documentclass[12pt, a4]{article}
\usepackage{listings}
\usepackage{enumitem}
\begin{document}
\textbf{Questions}
\begin{enumerate}
\item \label{question-01} What colour was Napoleon's white horse?
\end{enumerate}
\textbf{Answers}
\begin{enumerate}%[label= ...]
\item White
\end{enumerate}
\end{document}
尝试使用\label
和\ref
,但引用创建了另一个数字 1,而我希望交叉引用位于列表的数字内。
也许我应该在之后处理该\label
命令\begin{enumerate}
。
希望已经足够清楚了。
答案1
以下提供了一种自动对问题进行编号并将其超链接到答案的方法。
\documentclass{article}
\usepackage{hyperref}
\newcounter{questions}% To keep track of the questions environment
\newcounter{answers}% To keep track of the answers environment
\newenvironment{questions}
{\stepcounter{questions}% New questions environment
\renewcommand{\theHenumi}{q-\thequestions-\arabic{enumi}}% To make hyperref happy
\section*{Questions}% Question title
\begin{enumerate}}
{\end{enumerate}}
\newcommand{\qitem}{%
\refstepcounter{enumi}% Step enumeration counter
\item[{\hyperref[a-\thequestions-\labelenumi]{\labelenumi}}]\label{q-\thequestions-\labelenumi}% Set \item and \label it
\ignorespaces
}
\newenvironment{answers}
{\stepcounter{answers}% New answers environment
\renewcommand{\theHenumi}{a-\theanswers-\arabic{enumi}}% To make hyperref happy
\section*{Answers}% Answer title
\begin{enumerate}}
{\end{enumerate}}
\newcommand{\aitem}{%
\refstepcounter{enumi}% Step enumeration item
\item[{\hyperref[q-\theanswers-\labelenumi]{\labelenumi}}]\label{a-\theanswers-\labelenumi}% Set \item and \label it
\ignorespaces
}
\begin{document}
\begin{questions}
\qitem What colour was Napoleon's white horse?
\end{questions}
\begin{answers}
\aitem White
\end{answers}
\end{document}
环境questions
设置问题,每个问题使用 进行枚举\qitem
。这会为问题设置标签以及从枚举到相应答案的超链接跳转。分析answers
环境提供相反方向的超链接。
以上内容适用于多组问题和答案,每组问题和答案都按顺序链接到相应的集合。
答案2
为了实现您的目标,您需要加载hyperref
包;既不需要包enumitem
也不enumerate
需要包。(旁注:做不是同时加载两个包。)该hyperref
包提供命令hypertarget
,来创建“目标”,以及\hyperlink
,来创建到 定义的“目标”的链接\hypertarget
。
这是一个简单的 MWE(最小工作示例)。请注意,\item
在两种环境中,每个都与和指令enumerate
相关联。“链接按钮”只是一个;显然,您可以自由地想出一些更花哨的东西。对于手头的简单示例,我选择将两个指令的第二个参数留空。\hypertarget
\hyperlink
\textbullet
\hypertarget
\documentclass[12pt,a4paper]{article}
\usepackage[colorlinks,linkcolor=cyan]{hyperref}
\begin{document}
\subsubsection*{Questions}
\begin{enumerate}
\item\hypertarget{q:nap}{}\hyperlink{a:nap}{\textbullet}
What colour was Napoleon's white horse?
\end{enumerate}
\clearpage % just to make jumping between the links non-trivial
\subsubsection*{Answers}
\begin{enumerate}
\item\hypertarget{a:nap}{}\hyperlink{q:nap}{\textbullet}
White.
\end{enumerate}
\end{document}