Subfigure est mort, vive subfig !

Dans un précédent billet, je vous recommandais d’utiliser le fameux package subfigure, qui permet, comme son nom l’indique, de créer des sous-figures avec une numérotation et une légende propres à chaque sous-figures. Il se trouve en fait que ce package est désormais obsolète, et qu’il vaut mieux le remplacer par son successeur : subfig.

Quelles différences avec Subfigure ?
Subfig permet une gestion plus fine du positionnement des sous-figures (il gère par exemple les retours à la ligne), mais surtout, il autorise des noms différents entre la liste des figures et la légende. Enfin, il prend en charge les tableaux.

Utilisation
Bien entendu, il faut commencer par charger le package :

\usepackage[lofdepth,lotdepth]{subfig}

Les deux options lofdepth et lotdepth servent à définir quels compteurs utiliser, je vous conseille de laisser tel-quel…

Ensuite, dans le corps du document, on retrouve une syntaxe proche de subfigure. Exemple avec deux figures :

\begin{figure}[h]
  \begin{center}
    \subfloat[Renoncules]{
      \includegraphics[width=0.3\textwidth]{renoncule.jpg}
      \label{sub:renonc}
                         }
    \subfloat[Populage]{
      \includegraphics[width=0.3\textwidth]{populage.jpg}
      \label{sub:popul}
                         }
    \caption{Exemple de fleurs de la famille des renonculacées}
    \label{fig:renonculacees}
  \end{center}
\end{figure}

Exemple avec deux tableaux :

\begin{table}[h]
  \begin{center}
    \subfloat[Tableau 1]{
      \begin{tabular}{ccc}
        11 & 12 & 13 \\
        21 & 22 & 23 \\
      \end{tabular}
      \label{sub:tab1}
                        }
    \subfloat[Tableau 2]{
      \begin{tabular}{ccc}
        11 & 12 & 13 \\
        21 & 22 & 23 \\
    \end{tabular}
    \label{sub:tab2}
                        }
    \caption{Exemples de sous-tableaux}
    \label{fig:tableaux}
  \end{center}
\end{table}

On peut donc appeler les sous-figures/tableaux grâce aux labels et à la commande habituelle \ref{}, qui donnera une référence sous la forme « 2a » ; mais on peut de plus se contenter des sous-indices seuls (a , b, etc.) avec la commande \subref{}.
Dans mon exemple, les figures sont côte à côte, mais on peut demander un retour à la ligne avec le classique « \\ ».

Comme je l’ai dit plus haut, l’entrée dans la liste des figures peut être différente de la légende. Pour ce faire, on donne deux options à la commande \subfloat :

\subfloat[nom-dans-la-liste-des-figures][légende]{\includegraphics...}

Pour aller plus loin
Vous pouvez consulter la documentation officielle de subfig pour personnaliser les commandes et la mise en page.

Bonne compilation !

Subfigure est mort, vive subfig  !
4.2 (84 %) 5 votes
  • Pingback: PGFPlots : grouper plusieurs graphiques - Le Blog de Dorian()

  • luneart

    WikiBooks dit que subfig aussi serait obsolète ; en tout cas subfig ne permet pas de mettre autre chose en vis-à-vis que des tableaux et des figures.
    http://en.wikibooks.org/wiki/LaTeX/Floats,_Figures_and_Captions#Subfloats
    En revanche il y a le très bon « subcaption » qui permet d’utiliser une syntaxe tres naturelle:
    \begin{figure}[hp]
    \centering
    \begin{subfigure}[t]{0.54\linewidth}
    [contenu1]
    \caption{Exemple d'un premier contenu.}
    \label{input:subcaption_ex_gauche}
    \end{subfigure} \hfill
    \begin{subfigure}[t]{0.45\linewidth}
    [contenu2]
    \caption{Exemple d'un second contenu.}
    \label{input:subcaption_ex_droit}
    \end{subfigure}
    \caption{Exemples d'utilisation de subcaption avec n'importe quel contenu ; l'environnement subfigure étant en fait un wrapper de minipage.}
    \label{input:subcaption_2exs}
    \end{figure}

    • Effectivement, je n’avais connaissance de ce package, je regarderai ça plus en détail en temps voulu.

      Quand on voit que les éditeurs de journaux continuent de conseiller l’utilisation de subfigure, obsolète depuis 2005, je pense qu’on est pas près de les entendre vanter les mérites de subfloats !

  • Pingback: Template complet pour manuscrit de thèse | Le Blog de Dorian()