带参数的引用 \ref[...]{...} 不适用于 hyperref

带参数的引用 \ref[...]{...} 不适用于 hyperref

我正在使用这个hyperref包。我的命题通常由 a)、b)、c)、d)、e) 等多个部分组成。当我引用某个命题时,我想指定我指的是哪个部分。我该怎么做?

例如,\cite[p.66]{citeShastriEDT}创建

在此处输入图片描述

正如我想要的那样,但\ref[b)]{01.04.subgroupGeneratedBy}创造了

在此处输入图片描述

即使我写\ref{01.04.subgroupGeneratedBy} b),我也会得到

在此处输入图片描述

我怎样才能创建

在此处输入图片描述

或者

在此处输入图片描述

编辑:Werner 的解决方案非常好,而且易于使用。但我正在寻找其他东西。我大多不想使用环境enumerate,因为经常会发生一些点很短(即不值得单独使用新行),而其他点很长的情况。以下是我希望引用的命题示例:

在此处输入图片描述

我试图节省空间。另外,我真的希望避免在我的theoremproposition环境中使用额外的环境,除非绝对必要。抱歉,我之前没有澄清这一点。那么,有没有一种不涉及使用新环境的解决方案?我的参考不需要指向命题的特定部分(例如 b)),只需指向整个命题的开头。

答案1

这是一种依赖于hyperref能够打印与实际引用不同的字符串,以及enumitem能够对列表执行相同的操作。我提供了一个最小示例来说明这两种操作,具体取决于您的需要。

指某东西的用途amsthm只是创建一个theorem和/或proposition环境以供参考,但您可以使用任何其他结构。

在此处输入图片描述

\documentclass{article}
\usepackage{amsthm}% http://ctan.org/pkg/amsthm
\usepackage{enumitem}% http://ctan.org/pkg/enumitem
\usepackage{hyperref}% http://ctan.org/pkg/hyperref
\newtheorem{theorem}{Theorem}
\renewcommand{\thetheorem}{\thesection.\arabic{theorem}}
\newtheorem{proposition}[theorem]{Proposition}
\begin{document}
\section{Some section}
Here is a theorem.

\begin{theorem} This is a theorem \end{theorem}

And here is a proposition.

\begin{proposition} \label{ref:prop}
  A proposition with some items:
  \begin{enumerate}[label=\alph*),ref=\thetheorem.\alph*)]
    \item \label{ref:prop1} Some item
    \item \label{ref:prop2} Another item
    \item \label{ref:prop3} Last item
  \end{enumerate}
\end{proposition}

See, for example, \ref{ref:prop2}. There is also \hyperref[ref:prop3]{\ref*{ref:prop}.c)}.
\end{document}

提供的两个选项是

  1. 使用和enumitemoptions 。指定事物在列表中的打印方式,而表示引用样式。我只将命题计数器添加到引用中(在本例中是,因为环境基于来自 的环境);labelreflabelreftheorempropositiontheorem\newtheorem{proposition}[theorem]{Proposition}amsmath

  2. hyperref提供使用引用的\hyperref[<ref>]{<stuff>}超引用。我过去常常从中删除超引用功能,而只是添加到引用列表中的第三项。<stuff><ref>\ref*\ref.c)


请注意,就像使用amsthm是任意的一样(你可以使用ntheorem或者根本没有与定理相关的包,因为 LaTeX 本身支持),并且和/或的\newtheorem使用与 无关。因此,如果你enumitemenumeratehyperref仅有的想要hyperref不需要任何“花哨的附加环境”的功能,最后使用引用即可:

%...
\begin{proposition} \label{ref:prop}
  A proposition with some items: a) Some item; b) Another item; and c) Last item.
\end{proposition}

See, for example, \hyperref[ref:prop]{\ref*{ref:prop}.c)}.
%...

当然,这将使超链接指向 的开头,proposition而不是指向 item c)。但是,如果需要,也可以通过适当放置 来实现\phantomsection

%...
\begin{proposition} \label{ref:prop}
  A proposition with some items: a) Some item; b) Another item; and 
  c)\phantomsection\label{ref:prop3} Last item.
\end{proposition}

See, for example, \hyperref[ref:prop3]{\ref*{ref:prop}.c)}.
%...

相关内容