1

I would like to position three figures side-by-side in a two-column document. I need to reduce the area taken by my figures to accommodate to the page limit. These Figures are independent enough from each other that I do want a different Fig. numbering for them instead of three subfigures next to each other (i.e. no notations as a) b) c) for the different (sub)figures).

I guess the option could be to create a new floating "area", define a three-column environment there, place one Figure, then force a column-break. Unfortunately figures are not welcomed in a minipage, and minipage is not a float (As I understand floats can be anchored to the top of the document). The document I am writing has to use IEEEtran's journal class, where subfig is loaded by default. I found a hint to do what I would like with subcaption's subfigure environment, but it is incompatible with subfig. My research about the topic indicated that in latex we can not undo a package load.

So, I am lost. I will be glad for any help.

2
  • Should the three graphs be made to equal widths?
    – Mico
    Jun 25, 2020 at 17:08
  • You should take a look at the floatrow package and try its eponymous environment, nested in a figure* environment.
    – Bernard
    Jun 25, 2020 at 17:17

2 Answers 2

3

Two methods to choose: strip versus figure*. The main text is the example is colored to remark that strip is not a float, so among other things, it cannot float, for captions it needs the caption or capt-of packages, and if you must care of near floats (if you change the order of the two environments in the example, you will see a fanny figure numeration, because remember, it matters the order in the source, not in the PDF). But in the other hand, figure* cannot be placed anywhere, so ...

mwe

\documentclass[twocolumn]{article}
\usepackage{lipsum,xcolor}
\usepackage{graphicx,midfloat,capt-of}

\def\img#1#2{
\begin{minipage}[b][.3\linewidth]{.3\linewidth}\centering
\includegraphics[width=\linewidth,height=.75\linewidth,keepaspectratio]{#1}\par
\captionof{figure}{#2}\end{minipage}}

\begin{document}

\lipsum[1][1-6]

\color{blue}\lipsum[2][1-6]

\begin{strip} 
\img{example-image}{The example image}\hfill
\img{example-image-1x1}{The image $1\times1$}\hfill
\img{example-image-16x9}{example-image-16x9}
\end{strip} 

\begin{figure*}
\img{example-image}{The example image}\hfill
\img{example-image-1x1}{The image $1\times1$}\hfill
\img{example-image-16x9}{example-image-16x9}
\end{figure*}

\color{green}\lipsum[3-9]

\end{document}
3

You wrote:

Unfortunately figures are not welcomed in a minipage

No problem at all: minipage environments are entirely welcome inside figure and figure* environments, and each minipage can contain \includegraphics, \caption, and \label directives.

These Figures are independent enough from each other that I do want a different Fig. numbering for them ...

So just place 3 minipages side by side in a figure* environment. Since your document uses a two-column layout, you should use a figure* rather than a figure environment in order to span both columns.

enter image description here

\documentclass{IEEEtran}
\usepackage[demo]{graphicx} % omit 'demo' option is real doc.
\usepackage{lipsum} % filler text
\begin{document}
\lipsum[1] 
\begin{figure*}
\begin{minipage}[t]{0.3\textwidth}
  \includegraphics[width=\linewidth]{fig1}
  \caption{First}
  \label{fig:first}
\end{minipage}%
\hfill % maximize the horizontal separation
\begin{minipage}[t]{0.3\textwidth}
  \includegraphics[width=\linewidth]{fig2}
  \caption{Second}
  \label{fig:second}
\end{minipage}%
\hfill
\begin{minipage}[t]{0.3\textwidth}
  \includegraphics[width=\linewidth]{fig3}
  \caption{Third}
  \label{fig:third}
\end{minipage}%
\end{figure*}
\lipsum[2-19]
\end{document}

You must log in to answer this question.

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