1

These two LaTeX snippets differ only in the '%' sign at the end of subfigure 1, yet they produce different alignment of subfigures:

Snippet 1 (without '%' sign):

\begin{figure*}
    \centering
    \begin{subfigure}[b]{0.33\textwidth}
        \centering
        \includegraphics[width=\textwidth]{example1a_line.pdf}
        \caption{Subfigure 1}
    \end{subfigure}
    \begin{subfigure}[b]{0.33\textwidth}
        \centering
        \includegraphics[width=\textwidth]{example1a_region.png}
        \caption{Subfigure 2}
    \end{subfigure}
    \begin{subfigure}[b]{0.33\textwidth}
        \centering
        \includegraphics[width=\textwidth]{example1b_line.pdf}
        \caption{Subfigure 3}
    \end{subfigure}
    \hspace{0mm}
    \begin{subfigure}[b]{0.33\textwidth}
        \centering
        \includegraphics[width=\textwidth]{example1a_region.png}
        \caption{Subfigure 4}
    \end{subfigure}
    \begin{subfigure}[b]{0.33\textwidth}
        \centering
        \includegraphics[width=\textwidth]{example1c_line.pdf}
        \caption{Subfigure 5}
    \end{subfigure}
    \begin{subfigure}[b]{0.33\textwidth}
        \centering
        \includegraphics[width=\textwidth]{example1c_region.png}
        \caption{Subfigure 6}
    \end{subfigure}
    % \caption{Stability analysis of example \ref{example:compound}}
    \caption{Hello}
\end{figure*}

Snippet 1 (with '%' sign):

\begin{figure*}
    \centering
    \begin{subfigure}[b]{0.33\textwidth}
        \centering
        \includegraphics[width=\textwidth]{example1a_line.pdf}
        \caption{Subfigure 1}
    \end{subfigure}%
    \begin{subfigure}[b]{0.33\textwidth}
        \centering
        \includegraphics[width=\textwidth]{example1a_region.png}
        \caption{Subfigure 2}
    \end{subfigure}
    \begin{subfigure}[b]{0.33\textwidth}
        \centering
        \includegraphics[width=\textwidth]{example1b_line.pdf}
        \caption{Subfigure 3}
    \end{subfigure}
    \hspace{0mm}
    \begin{subfigure}[b]{0.33\textwidth}
        \centering
        \includegraphics[width=\textwidth]{example1a_region.png}
        \caption{Subfigure 4}
    \end{subfigure}
    \begin{subfigure}[b]{0.33\textwidth}
        \centering
        \includegraphics[width=\textwidth]{example1c_line.pdf}
        \caption{Subfigure 5}
    \end{subfigure}
    \begin{subfigure}[b]{0.33\textwidth}
        \centering
        \includegraphics[width=\textwidth]{example1c_region.png}
        \caption{Subfigure 6}
    \end{subfigure}
    % \caption{Stability analysis of example \ref{example:compound}}
    \caption{Hello}
\end{figure*}

Why does the '%' sign influence subfigure placement?

  • 2
    Welcome to TeX.se. Although your question is clear (because this is a well-known part of TeX), the code you've given us isn't really helpful: we don't have your images, and you've posted a fragment of code rather than a compilable document. For future questions it's best to post a complete document that others can compile that shows your problem. – Alan Munn Jul 18 '21 at 13:41

2 Answers2

3

Some general comments:

  • The 7 \centering instructions per figure* environment don't do anything useful; delete them.

  • The OP's first figure* environment shows only two, rather than three, subfigures per row. That is because the implicit whitespace after each \end{subfigure} is allowed to persist. That's not the case in the OP's second figure* environment.

Anyway, I think what your float really needs is a handful of well-placed \hfill directives per row, along with a very slight reduction in relative subfigure width, from 0.33\textwidth to 0.32\textwith.

enter image description here

\documentclass[twocolumn,demo]{article} % remove 'demo' option in real document
\usepackage{graphicx,subcaption}
\begin{document}

\begin{figure*} \captionsetup[subfigure]{skip=0.25\baselineskip}

\begin{subfigure}[b]{0.32\textwidth}
  \includegraphics[width=\textwidth]{example1a_line.pdf}
  \caption{Subfigure 1}
\end{subfigure}\hfill
\begin{subfigure}[b]{0.32\textwidth}
  \includegraphics[width=\textwidth]{example1a_region.png}
  \caption{Subfigure 2}
\end{subfigure}\hfill
\begin{subfigure}[b]{0.32\textwidth}
  \includegraphics[width=\textwidth]{example1b_line.pdf}
  \caption{Subfigure 3}
\end{subfigure} % keep the next line blank to force a line-break

\medskip
\begin{subfigure}[b]{0.32\textwidth}
  \includegraphics[width=\textwidth]{example1a_region.png}
  \caption{Subfigure 4}
\end{subfigure}\hfill
\begin{subfigure}[b]{0.32\textwidth}
  \includegraphics[width=\textwidth]{example1c_line.pdf}
  \caption{Subfigure 5}
\end{subfigure}\hfill
\begin{subfigure}[b]{0.32\textwidth}
  \includegraphics[width=\textwidth]{example1c_region.png}
  \caption{Subfigure 6}
\end{subfigure}

\caption{Stability analysis}
\label{example:compound}

\end{figure*}

\end{document}

Mico
  • 506,678
0

Try this:

\documentclass{article}

\usepackage{subcaption} \usepackage{graphicx}

\begin{document}

\begin{figure} \centering \begin{subfigure}[b]{0.325\textwidth} \centering \includegraphics[width=\linewidth]{a.png} \caption{Subfigure 1} \end{subfigure} \begin{subfigure}[b]{0.325\textwidth} \centering \includegraphics[width=\linewidth]{a.png} \caption{Subfigure 2} \end{subfigure} \begin{subfigure}[b]{0.325\textwidth} \centering \includegraphics[width=\linewidth]{a.png} \caption{Subfigure 3} \end{subfigure} \vskip\floatsep \begin{subfigure}[b]{0.325\textwidth} \centering \includegraphics[width=\linewidth]{a.png} \caption{Subfigure 4} \end{subfigure} \begin{subfigure}[b]{0.325\textwidth} \centering \includegraphics[width=\linewidth]{a.png} \caption{Subfigure 5} \end{subfigure} \begin{subfigure}[b]{0.325\textwidth} \centering \includegraphics[width=\linewidth]{a.png} \caption{Subfigure 6} \end{subfigure} % \caption{Stability analysis of example \ref{example:compound}} \caption{Hello} \end{figure}

\end{document}

  • 2
    You wrote, "It seems like having \textwidth inside each subfigure's width is the issue." That's not the case. – Mico Jul 18 '21 at 14:49