14

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?

23

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.

  • The command captionof is provided by every KOMA class, the package capt-of and the package caption – Marco Daniel May 26 '12 at 14:03
  • so I have to add a package using \usepackage{caption}? because as it is, it is giving undefined control sequence error. – maths-help-seeker May 26 '12 at 14:07
  • @maths-help-seeker yes, either caption (as I did in my example) or capt-of . – Gonzalo Medina May 26 '12 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 '12 at 14:09
  • ok thanks! it worked. It is also now showing the labels. :) – maths-help-seeker May 26 '12 at 14:10
2

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}
  • 2
    But this will in general allow the unit to float (despite all your !h). – Andrew Swann Feb 1 '18 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:) – Abdulkadir Eroglu Feb 2 '18 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) – Gene Burinsky Nov 1 '18 at 21:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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