Mettre plusieurs figures côte à côte

Tout ce qui concerne l'utilisation ou l'installation de LaTeX.

Modérateur: gdm_tex

Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.

Mettre plusieurs figures côte à côte

Messagepar XANA » Samedi 06 Janvier 2018, 22:43

Bonsoir,
pour décrire le fonctionnement d'un algorithme (le Jeu de la Vie), j'ai besoin de faire des figures, et comme il y a plusieurs cas (4), je souhaite mettre ces figures sur deux colonnes (2 par 2) pour que ça ne prenne pas trop de place, mais l'utilisation de multicols ne fonctionne pas, et ça ne fonctionne pas non plus si je met dans deux cases d'un tableau.
En fait il ne s'agit pas d'images que j'insère avec includegraphics, mais des tableaux sur plusieurs colonnes que j'ai codé directement (j'ai mis un exemple d'une des quatre figures).

Code: Tout sélectionner
\begin{figure}
\begin{multicols}{3}
\begin{tabular}{|c|c|c|}
\hline
\mort & \mort & \mort\\
\hline
\mort & \vie & \mort\\
\hline
\vie & \deux & \vie\\
\hline
\end{tabular}
\begin{tabular}{c}
$\rightarrow$\\
{\bf \neni survie\neni}
\end{tabular}
\begin{tabular}{|c|c|c|}
\hline
\neni & \neni & \neni\\
\hline
 & \vie & \\
\hline
 & & \\
\hline
\end{tabular}
\end{multicols}
\caption{Survie d'une cellule}
\label{GLsurvie}
\end{figure}


Avec photofiltre, j'ai fait un petit montage pour montrer ce que j'aimerais bien que ça fasse :
J'ai pas trop compris comment insérer une image, du coup je met un lien : https://1drv.ms/i/s!ApKvfpopznQZh-FpGbNU-fTxi5w8SQ
Et ça c'est ce que ça fait pour l'instant : https://1drv.ms/i/s!ApKvfpopznQZh-FqXdonffNxmeSdOQ
XANA
Déca-utilisateur
 
Messages: 11
Inscription: Lundi 04 Septembre 2017, 16:56
Statut actuel: Post-bac | CPGE

Publicité

Re: Mettre plusieurs figures côte à côte

Messagepar alfa8my » Dimanche 07 Janvier 2018, 04:45

Pourriez-vous s'il vous plaît insérer la définition de la commande
Code: Tout sélectionner
\mort
de façon à ce que l'exemple fonctionne ?
Je pense pouvoir vous aider, mais je ne peux pas compiler le tableau sans cette commande.
alfa8my
Utilisateur
 
Messages: 1
Inscription: Dimanche 07 Janvier 2018, 04:41
Statut actuel: Actif et salarié | Enseignant

Re: Mettre plusieurs figures côte à côte

Messagepar rebouxo » Dimanche 07 Janvier 2018, 11:51

À mon avis cela vaut le coup d'investir dans un langage graphique pour LaTeX. Je pense ici particulièrement Asymptote, mais je me demande si TiKz n'est pas capable de faire cela très rapidement avec la librairie Lindenmayer (p. 635 de la doc).

Olivier
A line is a point that went for a walk. Paul Klee
Par solidarité, pas de MP
rebouxo
Modérateur
 
Messages: 6819
Inscription: Mercredi 15 Février 2006, 13:18
Localisation: le havre
Statut actuel: Actif et salarié | Enseignant

Re: Mettre plusieurs figures côte à côte

Messagepar XANA » Dimanche 07 Janvier 2018, 12:20

alfa8my a écrit:Pourriez-vous s'il vous plaît insérer la définition de la commande
Code: Tout sélectionner
\mort
de façon à ce que l'exemple fonctionne ?
Je pense pouvoir vous aider, mais je ne peux pas compiler le tableau sans cette commande.


Oh pardon ! En fait il s'agit juste de petits ronds, blancs ou noirs, pour symboliser la vie ou la mort d'une cellule (et \neni c'est juste pour que les cases vides restent de la même taille)

Code: Tout sélectionner
\usepackage{wasysym}
\newcommand{\vie}{\CIRCLE}
\newcommand{\mort}{\Circle}
\newcommand{\deux}{\LEFTcircle}
\newcommand{\neni}{\hphantom{\CIRCLE}}
XANA
Déca-utilisateur
 
Messages: 11
Inscription: Lundi 04 Septembre 2017, 16:56
Statut actuel: Post-bac | CPGE

Re: Mettre plusieurs figures côte à côte

Messagepar XANA » Dimanche 07 Janvier 2018, 13:56

rebouxo a écrit:À mon avis cela vaut le coup d'investir dans un langage graphique pour LaTeX. Je pense ici particulièrement Asymptote, mais je me demande si TiKz n'est pas capable de faire cela très rapidement avec la librairie Lindenmayer (p. 635 de la doc).

Olivier


Je connais juste un peu Tikz, j'ai essayé de placer les figures dedans, mais ça ne marche pas non plus...
XANA
Déca-utilisateur
 
Messages: 11
Inscription: Lundi 04 Septembre 2017, 16:56
Statut actuel: Post-bac | CPGE

Re: Mettre plusieurs figures côte à côte

Messagepar balf » Dimanche 07 Janvier 2018, 15:51

Voici une façon de faire plus simple qu'avec multicols : les deux tables sont reliées par un \xrightarrow (flèche extensible qui accepte qu'on écrive au-dessus et au-dessous et dont la longueur s'adapte au texte). Pour être sûr que toutes les flèches aient la même longueur, je mets le texte dans une commande \eqmakebox (extension eqparbox), qui prend un label pour premier argument et le text pour second argument. Le principe est que toutes les boîtes avec le même label auront la longueur du plus grand contenu (ceci nécessite deux compilations).

D'autre part, comme j'imagine que vous voulez garder ces figures ensembles, chacune est placée dans une ligne d'un environnement tabularx, à cause du mécanisme de placement des flottants en LaTeX, ce qui amène à utiliser la commande \captionof{figure}{...}, définie entre autres par l'extension caption.

Code: Tout sélectionner
\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[nointegrals]{wasysym}
\usepackage{mathtools}
\usepackage{eqparbox}
\usepackage{tabularx}
\usepackage{caption}
    \newcommand{\vie}{\CIRCLE}
    \newcommand{\mort}{\Circle}
    \newcommand{\deux}{\LEFTcircle}
    \newcommand{\nenni}{\hphantom{\CIRCLE}}

\begin{document}

 \begin{tabularx}{\linewidth}{>{\centering\arraybackslash}X}
\centering
 \begin{tabular}{|c|c|c|}
 \hline
 \mort & \mort & \mort\\
 \hline
 \mort & \vie & \mort\\
 \hline
 \vie & \deux & \vie\\
 \hline
 \end{tabular}
 \quad $\xrightarrow[{\eqmakebox[label]{\bfseries\normalsize\,survie\,}}]{} $ \quad
 \begin{tabular}{|c|c|c|}
 \hline
 \nenni & \nenni & \nenni\\
 \hline
 & \vie & \\
 \hline
 & & \\
 \hline
 \end{tabular}
 \captionof{figure}{Survie d'une cellule}
 \label{GLsurvie}
 \tabularnewline[2ex]
 %%%%%%%%%%%%%%%%%%%%%
 \begin{tabular}{|c|c|c|}
 \hline
 \mort & \mort & \mort \\
 \hline
 \mort & \vie & \mort \\
 \hline
 \mort & \deux & \mort \\
 \hline
 \end{tabular}
 \quad $\xrightarrow[{\eqmakebox[label]{\bfseries\normalsize\,isolement \,}}]{} $ \quad
 \begin{tabular}{|c|c|c|}
 \hline
 \nenni & \nenni & \nenni\\
 \hline
 & \mort & \\
 \hline
 & & \\
 \hline
 \end{tabular}
 \captionof{figure}{Mort par isolement d'une cellule}
 \label{GLsurvie}\
 \end{tabularx}
 
\end{document}

Résultat en p.j. J'espère que ça convient.

B. A.
Fichiers joints
tablesidebyside.pdf
(56.16 Kio) Téléchargé 12 fois
balf
Zetta-utilisateur
 
Messages: 3692
Inscription: Mercredi 02 Janvier 2008, 23:18
Statut actuel: Actif et salarié | Maître de conférence

Re: Mettre plusieurs figures côte à côte

Messagepar XANA » Dimanche 07 Janvier 2018, 16:58

balf a écrit:Voici une façon de faire plus simple qu'avec multicols [...] Résultat en p.j. J'espère que ça convient.
B. A.


En fait ce n'étais pas vraiment ce que je demandais, ce que je voulais, c'est mettre les deux figures côte à côte, mais par contre c'est plus joli avec la longue flèche, et le fait qu'ils soient groupés entre eux est aussi nettement mieux que ce que j'avais, merci :)
XANA
Déca-utilisateur
 
Messages: 11
Inscription: Lundi 04 Septembre 2017, 16:56
Statut actuel: Post-bac | CPGE

Re: Mettre plusieurs figures côte à côte

Messagepar balf » Dimanche 07 Janvier 2018, 17:08

J'ai juste essayé de reproduire la flèche figurant sur les liens que vous avez fourni. On peut diminuer la distance entre les tableaux en supprimant les deux cadratins de part et d'autre de la flèche, ou se contenter d'un demi-cadratin, et en mettant le texte sous la flèche en \footnotesize – elle en sera diminuée d'autant.

B. A.
balf
Zetta-utilisateur
 
Messages: 3692
Inscription: Mercredi 02 Janvier 2008, 23:18
Statut actuel: Actif et salarié | Maître de conférence

Re: Mettre plusieurs figures côte à côte

Messagepar rebouxo » Dimanche 07 Janvier 2018, 21:32

Une version tikz vite fait sur le coup.
Code: Tout sélectionner
% !-*-coding:utf-8-*-
\documentclass[10pt,french]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{kpfonts}
\usepackage{tikz}
\usepackage[paper=a4paper,margin=1cm]{geometry}

\begin{document}

\newcommand{\deux}[1]
{
  \begin{scope}[shift={(#1)}]
    \draw (0,0) circle [radius  = 0.25] ;
    \fill[rotate=90] (0,0) -- (0.25,0)  arc[start angle = 0,end angle = 180,
    radius = 0.25] -- cycle ;
  \end{scope}
}

\newcommand{\grille}
{
  \foreach \x in {0.5,1.5,2.5}
  {
    \foreach \y in {0.5,1.5,2.5}
    {
      \draw (\x,\y) circle [radius = 0.25] ;
    }
  }
}

\begin{tikzpicture}
  \draw (0,0) grid (3,3) ;
  \grille
  \foreach \coor in {{0.5,0.5},{1.5,1.5},{2.5,0.5}}
  {
    \fill (\coor) circle [radius = 0.25] ;
  }
  \deux{1.5,0.5}
\end{tikzpicture}
\hfill
\begin{tikzpicture}
  \draw (0,0) grid (3,3) ;
  % \grille
  \foreach \coor in {{1.5,1.5}}
  {
    \fill (\coor) circle [radius = 0.25] ;
  }
\end{tikzpicture}
\hfill
\begin{tikzpicture}
  \draw (0,0) grid (3,3) ;
  \grille
  \foreach \coor in {{1.5,1.5}}
  {
    \fill (\coor) circle [radius = 0.25] ;
  }
  \deux{1.5,0.5}
\end{tikzpicture}
\hfill
\begin{tikzpicture}
  \draw (0,0) grid (3,3) ;
  \draw (1.5,1.5) circle [radius = 0.25] ;
\end{tikzpicture}


\end{document}

Je te laisse mettre ce que tu veux entre les figures.
Moi perso, je ferais une figure avec deux subfigures.

Olivier
A line is a point that went for a walk. Paul Klee
Par solidarité, pas de MP
rebouxo
Modérateur
 
Messages: 6819
Inscription: Mercredi 15 Février 2006, 13:18
Localisation: le havre
Statut actuel: Actif et salarié | Enseignant


Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Bing [Bot], DotBot [Crawler], Google [Bot] et 9 invités