[Tex/LaTex] Horizontal centering with \subfloat

captionshorizontal alignmentsubfloats

Please how to horizontally center-justify the following array of figures with the subfig package ?

\documentclass[11pt]{article}
\usepackage[dvips]{graphicx}
\usepackage{subfig}

\begin{document}

\begin{figure}[htp]
  \centering
    \subfloat[From $n=0$ to $n=-1$]{\label{fig:a}
    \includegraphics[scale=0.45]{Figures/IncludePyramid_a_reverse.eps}
    }                
  \qquad\qquad\qquad
    \subfloat[From $n=-1$ to $n=0$]{\label{fig:aa}
    \includegraphics[scale=0.45]{Figures/IncludePyramid_a.eps}
  } \\
    \subfloat[From $n=-1$ to $n=-2$]{\label{fig:b}
    \includegraphics[scale=0.45]{Figures/IncludePyramid_b_reverse.eps}
    }                
  \qquad\qquad\qquad
    \subfloat[From $n=-2$ to $n=-1$]{\label{fig:bb}
        \includegraphics[scale=0.45]{Figures/IncludePyramid_b.eps}
  }
  \\
    \subfloat[From $n=-2$ to $n=-3$]{\label{fig:c}
    \includegraphics[scale=0.45]{Figures/IncludePyramid_c_reverse.eps}
    }                
  \qquad\qquad\qquad
    \subfloat[From $n=-3$ to $n=-2$]{\label{fig:cc}
        \includegraphics[scale=0.45]{Figures/IncludePyramid_c.eps}
  }    
  \caption{Random walk on the Pascal pyramid}
  \label{fig:bratelli}
\end{figure}

\end{document}

enter image description here

Best Answer

You have to work a bit harder. The following set of macros sets each subfloat in a zero width box, so adding filling space will do.

  1. The \csubfloat macro has the same syntax as \subfloat; beware, though, that images should not fill the whole line.

  2. The \centerhfill macro has an optional argument, default \quad to add a space in the center. If it's not enough, you can experiment with \centerhfill[\qquad].

In the example I have used the demo option to graphicx; don't use it yourself, but don't add dvips either.

The \fakeig macro is just for producing the test and you don't need it; just remove the lines and uncomment the \includegraphics ones.

\documentclass[11pt]{article}
\usepackage[demo]{graphicx}
\usepackage{subfig}

\newcommand{\csubfloat}[2][]{%
  \makebox[0pt]{\subfloat[#1]{#2}}%
}
\newcommand{\centerhfill}[1][\quad]{\hspace{\stretch{0.5}}#1\hspace{\stretch{0.5}}}

% This is for the example
\newcommand{\fakeig}[2]{\includegraphics[width=#1,height=#2]{foo}}

\begin{document}

\begin{figure}[htp]
  \centering
  \hspace*{\fill}%
  \csubfloat[From $n=0$ to $n=-1$]{\label{fig:a}%
%    \includegraphics[scale=0.45]{Figures/IncludePyramid_a_reverse.eps}%
    \fakeig{2cm}{2cm}%
  }\centerhfill
  \csubfloat[From $n=-1$ to $n=0$]{\label{fig:aa}%
%    \includegraphics[scale=0.45]{Figures/IncludePyramid_a.eps}%
    \fakeig{2cm}{2cm}%
  }\hspace*{\fill}

  \hspace*{\fill}%
  \csubfloat[From $n=-1$ to $n=-2$]{\label{fig:b}%
%    \includegraphics[scale=0.45]{Figures/IncludePyramid_b_reverse.eps}%
    \fakeig{3cm}{3cm}%
  }\centerhfill
  \csubfloat[From $n=-2$ to $n=-1$]{\label{fig:bb}%
%    \includegraphics[scale=0.45]{Figures/IncludePyramid_b.eps}%
    \fakeig{3cm}{3cm}%
  }\hspace*{\fill}

  \hspace*{\fill}%
  \csubfloat[From $n=-2$ to $n=-3$]{\label{fig:c}%
%    \includegraphics[scale=0.45]{Figures/IncludePyramid_c_reverse.eps}%
    \fakeig{4cm}{4cm}%
  }\centerhfill
  \csubfloat[From $n=-3$ to $n=-2$]{\label{fig:cc}%
%    \includegraphics[scale=0.45]{Figures/IncludePyramid_c.eps}%
    \fakeig{4cm}{4cm}%
  }\hspace*{\fill}

  \caption{Random walk on the Pascal pyramid}
  \label{fig:bratelli}
\end{figure}

\end{document}

Note a generous usage of % to mask end-of-lines that act like spaces, which are not wanted.

enter image description here

Another option would be to include each \subfloat in a minipage as wide as half the \textwidth, but you have less control about the center spacing; this could be modified using a fraction of \textwidth, say \begin{minipage}{.8\textwidth} or similar.

\documentclass[11pt]{article}
\usepackage[demo]{graphicx}
\usepackage{subfig}

% This is for the example
\newcommand{\fakeig}[2]{\includegraphics[width=#1,height=#2]{foo}}

\begin{document}

\begin{figure}[htp]
  \centering
  \begin{minipage}{.5\textwidth}\centering
  \subfloat[From $n=0$ to $n=-1$]{\label{fig:a}%
%    \includegraphics[scale=0.45]{Figures/IncludePyramid_a_reverse.eps}%
    \fakeig{2cm}{2cm}%
  }
  \end{minipage}%
  \begin{minipage}{.5\textwidth}\centering
  \subfloat[From $n=-1$ to $n=0$]{\label{fig:aa}%
%    \includegraphics[scale=0.45]{Figures/IncludePyramid_a.eps}%
    \fakeig{2cm}{2cm}%
  }
  \end{minipage}

  \begin{minipage}{.5\textwidth}\centering
  \subfloat[From $n=-1$ to $n=-2$]{\label{fig:b}%
%    \includegraphics[scale=0.45]{Figures/IncludePyramid_b_reverse.eps}%
    \fakeig{3cm}{3cm}%
  }
  \end{minipage}%
  \begin{minipage}{.5\textwidth}\centering
  \subfloat[From $n=-2$ to $n=-1$]{\label{fig:bb}%
%    \includegraphics[scale=0.45]{Figures/IncludePyramid_b.eps}%
    \fakeig{3cm}{3cm}%
  }
  \end{minipage}

  \hspace*{\fill}%
  \begin{minipage}{.5\textwidth}\centering
  \subfloat[From $n=-2$ to $n=-3$]{\label{fig:c}%
%    \includegraphics[scale=0.45]{Figures/IncludePyramid_c_reverse.eps}%
    \fakeig{4cm}{4cm}%
  }
  \end{minipage}%
  \begin{minipage}{.5\textwidth}\centering
  \subfloat[From $n=-3$ to $n=-2$]{\label{fig:cc}%
%    \includegraphics[scale=0.45]{Figures/IncludePyramid_c.eps}%
    \fakeig{4cm}{4cm}%
  }
  \end{minipage}

  \caption{Random walk on the Pascal pyramid}
  \label{fig:bratelli}
\end{figure}

\end{document}