14

I'm trying to align the tops of two images using the subfigure environment from the subcaption package. Unless I'm misinterpreting the other questions, I believe I have read multiple questions asking the same, Align by the top borders of figures when using subcaption and How to prevent offset in subcaption / subfigure are two examples. The problem is, those answers don't seem to work as I expected, and I still can't get the tops of the images to be aligned.

example:

\documentclass{article}
\usepackage{subcaption}
\usepackage{graphicx}
\usepackage{mwe}
\begin{document}
    \begin{figure}
        \centering
        \begin{subfigure}[t]{0.45\textwidth}
            \includegraphics[width=\linewidth, height=20em]{example-image-a}
            \caption{taller image}
        \end{subfigure}
        \begin{subfigure}[t]{0.45\textwidth}
            \includegraphics[width=\linewidth, height=15em]{example-image-b}
            \caption{shorter image}
        \end{subfigure}
        \caption{two images}
    \end{figure}
\end{document}

For me this generates the following: Result Image

I would have expected it to align the tops of the images. How do I do this?

  • 2
    Add \vskip 0pt at the very beginning of each subfigure environment. – jubobs Jul 1 '14 at 17:36
  • @Jubobs that did it. Why is that necessary to get what I assume to be the expected behavior of the [t] option? – Matt Jul 1 '14 at 17:49
  • 1
    The subfigure environment is based on the minipage environment, so the following question and answers are relevant to your problem: tex.stackexchange.com/questions/34166/… – jubobs Jul 1 '14 at 17:50
  • This seems a bug of the subcaption package - Submmit to @axel-sommerfeldt – skpblack Jul 1 '14 at 18:07
  • Put \caption{...} before of \includegraphics{...} but caption appears above of figures. I didn't find an easy solution – skpblack Jul 1 '14 at 19:11
13

The problem is that [t] aligns to the first baseline ([b] to the last baseline) of the included paragraph, not the top of the content. The baseline of images lies on there lower edge, so [t] has basically no effect with two images. Lower the images to include the baseline on top or add an empty line above them (using e.g. \vskip 0pt) to make it work.

Further information on this problem can be found in Understanding minipages - aligning at top. Note that subfigure uses a minipage (or the equivialent?) internally.

  • Nowadays I would recommend the adjustbox package for this. With it the images can be align with multiple different ways: adding valign=T for both images for example or adding raise=5em in this case to the second image. – Martin Scharrer Feb 6 at 20:17

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.