17

I am using following code to import two images next to each other. When \caption{} is used, LaTeX gives me error caption outside float.

\begin{minipage}{.5\textwidth}
\centering
\includegraphics[width=0.5\textwidth]{fig1.eps}
\caption{text for fig1}
\label{fig:fig1}            
\end{minipage}
\begin{minipage}{.5\textwidth}
\centering
\includegraphics[width=0.5\textwidth]{fig2.eps}
\caption{text for fig2}
\label{fig:fig2}            
\end{minipage}

When I remove the \caption from both places, the code compiles correctly.

\begin{minipage}{.5\textwidth}
\centering
\includegraphics[width=0.5\textwidth]{fig1.eps}
\label{fig:fig1}            
\end{minipage}
\begin{minipage}{.5\textwidth}
\centering
\includegraphics[width=0.5\textwidth]{fig2.eps}
\label{fig:fig2}            
\end{minipage}

But both the codes do not generate any label naming the figure. (something like Figure 21).

Am I missing anything?

1

2 Answers 2

30

To place a caption outside a floating environment, you can use \captionof from the capt-of or caption packages::

\documentclass{article}
\usepackage{graphicx}
\usepackage{caption}

\begin{document}

\noindent\begin{minipage}{.5\textwidth}
\centering
\includegraphics[width=0.5\textwidth]{fig1.eps}
\captionof{figure}{Some figure}
\label{fig:fig1}            
\end{minipage}%
\begin{minipage}{.5\textwidth}
\centering
\includegraphics[width=0.5\textwidth]{fig2.eps}
\captionof{figure}{Some figure}
\label{fig:fig2}            
\end{minipage}

\end{document}

Notice the \noindent and % character I added to prevent undesired spacing.

7
  • The command captionof is provided by every KOMA class, the package capt-of and the package caption May 26, 2012 at 14:03
  • so I have to add a package using \usepackage{caption}? because as it is, it is giving undefined control sequence error. May 26, 2012 at 14:07
  • @maths-help-seeker yes, either caption (as I did in my example) or capt-of . May 26, 2012 at 14:08
  • 1
    @maths-help-seeker: Yes, but you can only do that in the document preamble. See Documents with typical LaTeX errors.
    – Werner
    May 26, 2012 at 14:09
  • ok thanks! it worked. It is also now showing the labels. :) May 26, 2012 at 14:10
3

You can also wrap a figure environment around your minipage, that way you do not need to use captionof or capt-of:

\begin{figure}[!htbp]
    \begin{minipage}{0.5\textwidth}
        \centering
        \includegraphics[width=\textwidth]{Images/img1.JPG}
        \caption{cap1}
        \label{fig:img1}
    \end{minipage}\hfill
    \begin{minipage}{0.5\textwidth}
        \centering
        \includegraphics[width=\textwidth]{Images/img2}
        \caption{cap2}
        \label{fig:img2}
    \end{minipage}
\end{figure}
3
  • 3
    But this will in general allow the unit to float (despite all your !h). Feb 1, 2018 at 12:40
  • @AndrewSwann true, my assumption was, that two images in one minipage are meant to work like one composed image, where floating may be accepted:) Feb 2, 2018 at 13:59
  • using [H] with \begin{figure}[H] or \begin{table}[H] will resolve the floating issue (enabled with \usepackage{float} if I recall correctly) Nov 1, 2018 at 21:09

You must log in to answer this question.

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