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.

\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
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
);
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)}.
%...
A fairly simple way to achieve this is to use the \include
command to load your thesis main text and from a separate file your appendix. You then have one main file, say full.tex
that compiles the whole document until all references are correct.
In addition you can set up two short files that are identical to the full.tex
but containing an \includeonly
statement loading only the thesis or only the appendix. After resolving the x-references running full.tex
often enough the .aux
files of the included files contain all relevant information to produce the two pdf files you need by running each file with the \includeonly
statement once.
Compared to the suggestion to strip out the appendix from the full pdf this approach has the advantage that it can be automated, i.e., it doesn't involve any manual steps. On the downside it means additional LaTeX runs to produce the partial documents.
Best Answer
Just to give a full example. I have found
xr-hyper
quite tricky to get it to work. It seems thatxr-hyper
must be called beforehyperref
and both documents must be compiled twice. Below is an example that shows how to get it going.EDIT2: I do not think citations will work accross files (not
natbib
at least)