Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

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.

share|improve this question
    
you should give an example of how you're creating your \labels –  henrique Feb 11 '12 at 1:32
    
@henrique: Example of a proposition and label: \begin{envPrp}["Eilenberg Swindle"] \label{10.03.EilenbergSwindle} weakly stably free $\Leftrightarrow$ projective \end{envPrp} –  Leon Lampret Feb 11 '12 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 '12 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. –  Leon Lampret Feb 11 '12 at 5:34
    
Also, I find it irritating that when writing exact sequences inline with arrows denoted by symbols for maps (f,g,h) (e.g. 0\!\rightarrow\!A\!\overset{f}{\rightarrow}\!B\!\overset{g}{\rightarrow}\!C\!\r‌​ightarrow\!0), there is an additional space between rows. It looks ugly, but if \rightarrow and f were both positiones a bit lower, and if f was closer (lower) to \rightarrow, it would look nice I think. There are many things that are not optimal... –  Leon Lampret Feb 11 '12 at 5:35

1 Answer 1

up vote 5 down vote accepted

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)}.
%...
share|improve this answer
    
Thank you for your answer. But is there a way of doing this without using new environments inside proposition? I do not wish to use a new line for each point a),b),c)... If you necessarily need to use a new environment to provide a solution, could it be a very mild one please (i.e. makes as little changes as possible to the rest of the document, requires as few packages as possible), because I am already using a huge amount of packages and environments and adding a new one can cause chaos (I'm not very skilled with LaTeX). You can add a new solution without deleting the current one. –  Leon Lampret Feb 11 '12 at 3:55
1  
@LeonLampret: I gave two options in my answer: The first uses the functionality of enumitem which you're not interested in. That's fine, so you can remove it from the example. The second one uses functionality of hyperref only. That seems to be what you're after. Note that in the reference I use \ref of the original proposition, not that of the enumerate environment. –  Werner Feb 11 '12 at 3:59
    
You are right, \hyperref[myreference]{\ref*{myreference}.b)} is all I need. Thank you for your help :). –  Leon Lampret Feb 11 '12 at 5:18

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.