逐项列表中的单个项目是否可以标记并进行超链接?

逐项列表中的单个项目是否可以标记并进行超链接?

如果我尝试标记列表中的项目,如

\documentclass{article}

\usepackage{hyperref}

\begin{document}

\begin{itemize}
\item blah \label{list:blah}

\pagebreak

\item foo \label{list:foo}

\pagebreak
\end{itemize}

reference to blah \ref{list:blah}
\pagebreak
reference to foo \ref{list:foo}

\end{document}

然后返回项目的链接全部返回到列表的开头。有没有办法让每个列表项单独标记?

答案1

尝试链接到itemize环境中的项目并不常见,因为它们没有编号,也没有定义锚点。也没有自然的文本可以关联。

通过添加\phantomsection到每个\item,您可以提供锚点。仍然没有关联文本,并且hyperref仍然会抱怨空链接。相反,您可以使用自己的链接文本和命令\hyperref代替\ref

\documentclass{article}

\usepackage{hyperref}

\usepackage{etoolbox}
\AtBeginEnvironment{itemize}{\apptocmd{\item}{\phantomsection}{}{\errmessage{couldn't patch item}}}
\begin{document}

\begin{itemize}
\item blah \label{list:blah}

\pagebreak

\item foo \label{list:foo}

\pagebreak
\end{itemize}

reference to blah \hyperref[list:blah]{blah}
\pagebreak
reference to foo \hyperref[list:foo]{foo}

\end{document}

答案2

我认为这些链接无法使用,itemize因为您没有指向的唯一编号。会产生如下错误

Package hyperref Warning: Suppressing empty link on input line 17.


Package hyperref Warning: Suppressing empty link on input line 19.

尝试一下enumerate,它有效:

\documentclass{article}

\usepackage[colorlinks]{hyperref}

\begin{document}

\begin{enumerate}

\item blah \label{list:blah}

\pagebreak

\item foo \label{list:foo}

\pagebreak
\end{enumerate}

reference to blah \ref{list:blah}
\pagebreak
reference to foo \ref{list:foo}

\end{document}

如果您希望它能与 一起工作,itemize您可以使用\pageref。但我不确定这在这种情况下会有多大帮助。

\documentclass{article}

\usepackage[colorlinks]{hyperref}

\begin{document}

\begin{itemize}

\item blah \label{list:blah}

\pagebreak

\item foo \label{list:foo}

\pagebreak
\end{itemize}

reference to blah \pageref{list:blah}
\pagebreak
reference to foo \pageref{list:foo}

\end{document}

相关内容