I have inserted the following figure into my latex document
\begin{figure}
\centering
\includegraphics[width=0.5\textwidth]{Figures/magnetic-sandwich.jpg}\\
\caption{A magnetic multilayer (a trilayer or ``sandwich'') that exhibits the GMR effect. Magnetic iron (red) and chromium (grey).}\label{setup}
\end{figure}
later on in the document I want to reference this figures which I am trying to do like so:
By constructing multilayers as depicted in Fig \ref{setup} devices....
however when I typeset the document I get the following warning:
LaTeX Warning: Reference `setup' on page 2 undefined on input line 64.
which persists even after I typeset the document again.
The text where the reference is contained is within a subsection of the section where the figure is inserted. I also have this same problem with another figure in the document but all others work ok. I am not sure on the cause of this issue and any help troubleshooting / fixing it would be appreciated.
Edit:
Here is a sample document which should replicate the problem:
\documentclass[10pt]{iopart}
\usepackage{graphicx}
%Uncomment next line if AMS fonts required
\usepackage{iopams}
\usepackage{placeins}
\usepackage{url}
\usepackage{multicol}
\usepackage{blindtext}
\begin{document}
\section{Giant Magnetoresistance}
\begin{multicols}{2}
%\blindtext
\begin{figure}
\centering
\includegraphics[width=0.5\textwidth]{Figures/magnetic-sandwich.jpg}\\
\caption{A magnetic multilayer (a trilayer or ``sandwich'') that exhibits the GMR effect. Magnetic iron (red) and chromium (grey).}\label{setup}
\end{figure}
%\blindtext
\end{multicols}
\begin{figure}
\centering
\includegraphics[width=\textwidth]{Figures/initial-results.png}
\caption{The initial results displaying GMR effect by Gr\"unberg (left) and Fert (right).\\
Left: To the far right and left the iron layers are parallel to the external magnetic field. In the middle the iron layers are antiparallel to the external magnetic field.\\
Right: To the far left and right the magnetisation of the iron layers are parallel to the external magnetic field. In the middle every second iron layer is magnetised perpendicular to the external magnetic field.} \label{fig-initial-results}
\end{figure}
\begin{multicols}{2}
%\blindtext
\subsection{GMR cause and effect}
By constructing multilayers as depicted in Fig \ref{setup} devices such as spin-valves can be constructed which depend on being able to switch between different resistivity, this resistivity can be understood by analysing the following diagram.
\end{multicols}
\end{document}
The source files for iopart class can be found here: http://authors.iop.org/atom/usermgmt.nsf/AuthorServices
select latex guidelines and class file on the left hand side, which should start the download.
Best Answer
I don't have the
iopart
class. When I ran this underarticle
, there were a couple of things I noticed.multicols
environment. Perhaps this is allowed iniopart
.newline
breaks in your caption. You should either\protect
them (ie.,\protect\\
), or you should include aminipage
environment with the extra text to be placed after a shorter caption.Here's an example of what I'm suggesting regarding the caption:
Otherwise, I still don't get any errors with the labels, but I am using a different class. Unfortunately, I don't have the time available today to load that class and learn enough about it to see whether there might be an issue there.
But, my guess is that you should correct the issue with the
multicols
and caption content and see whether that resolves the issue. I strongly suspect that youriopart
class might be suppressing themulticols
errors and consequently not writing out the necessary label. Just move the figure to immediately before or immediately after the call tomulticols
. I doubt the caption formatting has anything to do with the labeling issues.So try removing the
multicols
about the figures. Post a response to this answer whether that works or not. If it doesn't work, then I'll remove this answer since the issue is something beyond what I have time to research right now.I hope this helps.
Here's a complete MWE showing what I'm suggesting: