6

I'm using the hyperref package. My propositions usually consist from many parts a), b), c), d), e), etc. When I refer to a certain proposition, I would like to specify which part I am referring to. How can I do that?

For example, \cite[p.66]{citeShastriEDT} creates

enter image description here,

just like I want, but \ref[b)]{01.04.subgroupGeneratedBy} creates

enter image description here.

Even if I write \ref{01.04.subgroupGeneratedBy} b), I get

enter image description here.

How can I create either

enter image description here

or

enter image description here

?

EDIT: the solution of Werner is very nice and easy to use. But I am looking for something else. I mostly don't wish to use the enumerate environment, because often it happens that some of the points are quite short (i.e. don't deserve a new line on their own), whilst others are long. Here is an example of a proposition that I wish to reference:

enter image description here

I'm trying to be economical with space. Also, I really wish to avoid using additional environments inside my theorem and proposition environments, unless absolutely necessary. Sorry I didn't clarify that before. So, is there a solution that does not involve using new environments? My reference does not need to point to the specific part of the proposition (e.g. b)), just the beginning of the whole proposition.

3
  • @henrique: Example of a proposition and label: \begin{envPrp}["Eilenberg Swindle"] \label{10.03.EilenbergSwindle} weakly stably free $\Leftrightarrow$ projective \end{envPrp}
    – Leo
    Feb 11, 2012 at 3:51
  • @LeonLampret: This is a minor nitpick, but you should probably use $\iff$ instead of $\Leftrightarrow$ or (if you absolutely want a narrower iff symbol) $\mathrel\Leftrightarrow$
    – kahen
    Feb 11, 2012 at 3:54
  • @kahen: You are not nitpicking at all, and I like suggestions, but in most cases when I use \Leftrightarrow, I want it to be narrow. At this occasion, I must express my surprise at the default LaTeX options. Visually, everything looks ugly and wrong as far as spacing goes in LaTeX, unless I manually correct things. For example, I almost always write $x^2\!+\!1$ instead of $x^2+1$. In the example above, at every +,-,\cap,\cup,=,... I have to manually add \! so that it looks more aesthetic.
    – Leo
    Feb 11, 2012 at 5:34

1 Answer 1

7

Here is a way to do it that relies on hyperref's capability to print a difference string to what is actually references, as well as enumitem's capability to do the same for lists. I've supplied a minimal example illustrating both, depending on your need.

The use of amsthm is just to create a theorem and/or proposition environment for reference, but you could use any other structure.

enter image description here

\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}

The two options provided are

  1. Using enumitem's label and ref options. label specifies how things will print in the list, while ref denotes the referencing style. I only added the proposition counter to the reference (which is theorem in this case, since the proposition environment is based on the the theorem environment via \newtheorem{proposition}[theorem]{Proposition} from amsmath);

  2. hyperref provides \hyperref[<ref>]{<stuff>} that hyper-references <stuff> using the reference <ref>. I used \ref* to remove the hyper-referencing capability from \ref and just added .c) to reference the third item in the list.


Note that, just like the use of amsthm is arbitrary (you could use ntheorem or no theorem-related package at all, since LaTeX natively supports \newtheorem), the use of enumitem and/or enumerate is independent from hyperref. So, if you only want hyperref capability without any "fancy additional environments," the last use of referencing would work:

%...
\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)}.
%...

This will, of course, point the hyperlink to the start of the proposition and not to item c). However, than can also be achieved, if needed by means of an appropriately placed \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)}.
%...
0

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .