Page 1 sur 1

Graphiques Tikz sur deux colonnes et titres (\caption)

MessagePosté: Samedi 18 Août 2012, 03:09
par neige
Bonjour à toutes et à tous,

J'ai fait deux graphiques avec tikZ que je souhaite mettre cote à cote (deux colonnes : un graphique dans chaque colonne) avec un titre pour chacun de ces deux graphiques.
Pour avoir les deux graphiques sur deux colonnes j'ai utilisé l'environnement \table. Pour avoir les titres de graphiques, j'ai utilisé la commande \caption. Voici mon code :

Code: Tout sélectionner
\documentclass[11pt,a4paper, titlepage]{article}
\usepackage[latin1]{inputenc}
\usepackage[LGR,T1]{fontenc}
\usepackage[english,francais]{babel}
\usepackage[onehalfspacing]{setspace}
\usepackage{indentfirst}
\usepackage{booktabs}
\usepackage{array}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{lscape}
\usepackage[pdftex]{graphicx}
%\usepackage[dvips]{graphicx}
\usepackage{array}
\usepackage{caption}
%\usepackage{floatrow}
\usepackage[round]{natbib}
\usepackage[left=2.5cm,right=2.5cm, top=2.5cm,bottom=2.5cm]{geometry}
\usepackage{multicol}
\usepackage{hyperref}
\usepackage{url}
\usepackage{eurosym}
%\usepackage[hKV-listi]{subfig}
\usepackage[countmax]{subfloat}
\usepackage{float}
\usepackage{wrapfig}
\usepackage{tikz}
\usepackage{longtable}
\usepackage{appendix}
\usepackage{subfigure}
\addto\captionsfrench{%
  \renewcommand{\listfigurename}{Fig.}%
  \renewcommand{\listtablename}{Table}%
}% \usepackage{float}
%\usepackage{biblatex}
%\usepackage[babel]{csquotes}
\usepackage{ulem}
\usepackage{color}
\usepackage[LGR,T1]{fontenc}
\usepackage{multicol}


\begin{document}

\begin{table}
\newcolumntype{A}{>{\upshape}m{0.45\textwidth}}
\begin{tabular}{A|A}

\begin{figure}
\begin{tikzpicture}
 \draw[->] (-0.5,0) -- (4,0); \draw (4,0) node[right] {$q$};
 \draw[->] (0,-0.5) -- (0,4); \draw (0,4) node[above] {$p$};
 \draw[thin] (0,3) -- (3,0.5) node [below right] at (3,0.7)
{$D_g(p)$};  \draw [thin] (0,1) -- (3,3) node [above right] at (3,3)
{$O_g(p)$};


 \draw[dashed] (1.35,1.9) -- (1.35,0) node[below] {$q$};
 \draw [dashed] (1.35,1.9) -- (0,1.9) node[left] {$p$};

 \draw[fill] (1.35,1.9) circle [radius=0.05];  \node
[above right] at (1,2) {$A$};


 \draw[thin, red] (0,3.75) -- (3,1.3) node [below right, red]
at (2.95,1.35) {$D_g(p)^{'}$};



 \draw[dashed, red] (1.85,2.25) -- (1.85,0) node[below]
{$q^{'}$};  \draw [dashed, red] (1.85,2.25) --(0,2.25) node[left]
{$p^{'}$};

 \draw[fill, red] (1.85,2.25) circle [radius=0.05]; \node
[above, red] at (1.85,2.35) {$A^{'}$};


\end{tikzpicture}

\caption{\centering Déplacement de la courbe de demande vers le haut
[augmentation de la demande]} \label{demhau}
\end{figure}   &
\begin{figure}
\begin{tikzpicture}
 \draw[->] (-0.5,0) -- (4,0); \draw (4,0) node[right] {$q$};
 \draw[->] (0,-0.5) -- (0,4); \draw (0,4) node[above] {$p$};
 \draw[thin, red] (0,3) -- (3,0.5) node [below right, red] at
(3,0.7) {$D_g(p)^{'}$};  \draw [thin] (0,1) -- (3,3) node [above
right] at (3,3) {$O_g(p)$};


 \draw[dashed, red] (1.35,1.9) -- (1.35,0) node[below, red]
{$q^{'}$};  \draw [dashed, red] (1.35,1.9) -- (0,1.9) node[left,
red] {$p^{'}$};

 \draw[fill, red] (1.35,1.9) circle [radius=0.05]; \node
[above right, red] at (1,2) {$A^{'}$};


 \draw[thin] (0,3.75) -- (3,1.3) node [below right] at (3,1.3)
{$D_g(p)$};


 \draw[dashed] (1.85,2.25) -- (1.85,0) node[below] {$q$};
 \draw [dashed] (1.85,2.25) --(0,2.25) node[left] {$p$};

 \draw[fill] (1.85,2.25) circle [radius=0.05];  \node [above]
at (1.85,2.35) {$A$};

\end{tikzpicture}
\caption{\centering Déplacement de la courbe de demande vers le bas
[baisse de la demande]} \label{demba}
\end{figure}  \tabularnewline

\end{tabular}
\end{table}

\end{document}


J'obtiens le message d'erreur suivant :"not in outer par mode"
D'après ce que j'ai compris, on ne peut pas utiliser l'environnement tikzpicture dans un environnement table. C'est cela ? Une idée sur comment je peux résoudre mon problème.

PS: le même code marche très bien sur Breamer !

Merci d'avance de votre aide

Re: Graphiques Tikz sur deux colonnes + titres (\caption)

MessagePosté: Samedi 18 Août 2012, 05:56
par pg
On ne peut pas mettre de {figure} dans une {table}, ce qui oblige à remplacer les \caption par des \captionof{figure} et ensuite il faut enlever les \centering :

Code: Tout sélectionner
\documentclass[11pt,a4paper, titlepage]{article}
\usepackage[latin1]{inputenc}
\usepackage[LGR,T1]{fontenc}
\usepackage[english,francais]{babel}
\usepackage[onehalfspacing]{setspace}
\usepackage{indentfirst}
\usepackage{booktabs}
\usepackage{array}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{lscape}
\usepackage[pdftex]{graphicx}
%\usepackage[dvips]{graphicx}
\usepackage{array}
\usepackage{caption}
%\usepackage{floatrow}
\usepackage[round]{natbib}
\usepackage[left=2.5cm,right=2.5cm, top=2.5cm,bottom=2.5cm]{geometry}
\usepackage{multicol}
\usepackage{hyperref}
\usepackage{url}
\usepackage{eurosym}
%\usepackage[hKV-listi]{subfig}
\usepackage[countmax]{subfloat}
\usepackage{float}
\usepackage{wrapfig}
\usepackage{tikz}
\usepackage{longtable}
\usepackage{appendix}
\usepackage{subfigure}
\addto\captionsfrench{%
  \renewcommand{\listfigurename}{Fig.}%
  \renewcommand{\listtablename}{Table}%
}% \usepackage{float}
%\usepackage{biblatex}
%\usepackage[babel]{csquotes}
\usepackage{ulem}
\usepackage{color}
\usepackage[LGR,T1]{fontenc}
\usepackage{multicol}


\begin{document}



\begin{table}
\newcolumntype{A}{>{\upshape}p{0.45\textwidth}}
\begin{tabular}{A|A}

\begin{tikzpicture}
\draw[->] (-0.5,0) -- (4,0); \draw (4,0) node[right] {$q$};
\draw[->] (0,-0.5) -- (0,4); \draw (0,4) node[above] {$p$};
\draw[thin] (0,3) -- (3,0.5) node [below right] at (3,0.7)
{$D_g(p)$};  \draw [thin] (0,1) -- (3,3) node [above right] at (3,3)
{$O_g(p)$};


\draw[dashed] (1.35,1.9) -- (1.35,0) node[below] {$q$};
\draw [dashed] (1.35,1.9) -- (0,1.9) node[left] {$p$};

\draw[fill] (1.35,1.9) circle [radius=0.05];  \node
[above right] at (1,2) {$A$};


\draw[thin, red] (0,3.75) -- (3,1.3) node [below right, red]
at (2.95,1.35) {$D_g(p)^{'}$};



\draw[dashed, red] (1.85,2.25) -- (1.85,0) node[below]
{$q^{'}$};
\draw[dashed, red] (1.85,2.25) --(0,2.25) node[left]
{$p^{'}$};

\draw[fill, red] (1.85,2.25) circle [radius=0.05];
\node[above, red] at (1.85,2.35) {$A^{'}$};

\end{tikzpicture}

\captionof{figure}{Déplacement de la courbe de demande vers le haut [augmentation de la demande]} \label{demhau}
&
\begin{tikzpicture}
\draw[->] (-0.5,0) -- (4,0); \draw (4,0) node[right] {$q$};
\draw[->] (0,-0.5) -- (0,4); \draw (0,4) node[above] {$p$};
\draw[thin, red] (0,3) -- (3,0.5) node [below right, red] at
(3,0.7) {$D_g(p)^{'}$};  \draw [thin] (0,1) -- (3,3) node [above
right] at (3,3) {$O_g(p)$};


\draw[dashed, red] (1.35,1.9) -- (1.35,0) node[below, red]
{$q^{'}$};  \draw [dashed, red] (1.35,1.9) -- (0,1.9) node[left,
red] {$p^{'}$};

\draw[fill, red] (1.35,1.9) circle [radius=0.05]; \node
[above right, red] at (1,2) {$A^{'}$};


\draw[thin] (0,3.75) -- (3,1.3) node [below right] at (3,1.3)
{$D_g(p)$};


\draw[dashed] (1.85,2.25) -- (1.85,0) node[below] {$q$};
\draw [dashed] (1.85,2.25) --(0,2.25) node[left] {$p$};

\draw[fill] (1.85,2.25) circle [radius=0.05];  \node [above]
at (1.85,2.35) {$A$};

\end{tikzpicture}
\captionof{figure}{Déplacement de la courbe de demande vers le bas [baisse de la demande]} \label{demba}
\tabularnewline\end{tabular}\end{table}

\end{document}


Mais pour ce genre de choses, pourquoi ne pas utiliser le package subfig ? (ou subcaption)

Re: Graphiques Tikz sur deux colonnes + titres (\caption)

MessagePosté: Samedi 18 Août 2012, 16:38
par neige
Merci beaucoup pour votre aide :D

Avec le package \subcaption c'est parfait. J'ai, toutefois, autre petite question : vous avez dit qu'on ne peut pas mettre {figure} dans {table}. Mais moi pourquoi cela ne marche pas dans un \documentclass[]{article} mais marche dans un \documentclass[]{beamer} ?

Merci d'avance et bon weekend