18

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?

8
  • 3
    Add \vskip 0pt at the very beginning of each subfigure environment.
    – jub0bs
    Jul 1, 2014 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, 2014 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/…
    – jub0bs
    Jul 1, 2014 at 17:50
  • This seems a bug of the subcaption package - Submmit to @axel-sommerfeldt
    – skpblack
    Jul 1, 2014 at 18:07
  • Put \caption{...} before of \includegraphics{...} but caption appears above of figures. I didn't find an easy solution
    – skpblack
    Jul 1, 2014 at 19:11

1 Answer 1

22

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.

2
  • 2
    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. Feb 6, 2019 at 20:17
  • adjustbox works for me, while vskip doesn't.
    – Dmitry
    Dec 8, 2021 at 9:40

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.