交叉引用枚举环境中的数字

交叉引用枚举环境中的数字

假设我有以下代码。我想交叉引用两个列表之间的数字。基本上,通过单击问题部分中的数字 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}

相关内容