[Résolu] Redimensionner un graphique fait avec Tikz

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.

[Résolu] Redimensionner un graphique fait avec Tikz

Messagepar Fabrice Couvreur » Vendredi 29 Octobre 2010, 13:11

Bonjour à tous,
J'ai fait un organigramme avec Tikz que j'aimerais insérer dans un fichier.tex.
Ce graphique est trop "grand", et j'ai donc utilisé l'option scale=0.5. Le problème, c'est que cela ne redimensionne pas le contenu des tableaux utilisés pour insérer mon texte.
J'ai utilisé pour mes colonnes le type suivant :

Code: Tout sélectionner
\newcolumntype{T}{>{\centering\arraybackslash}p{5cm}}


Merci.
Dernière édition par Fabrice Couvreur le Vendredi 29 Octobre 2010, 22:50, édité 1 fois.
Fabrice Couvreur
Giga-utilisateur
 
Messages: 598
Inscription: Samedi 18 Août 2007, 00:55

Publicité

Re: Redimensionner un graphique fait avec Tikz.

Messagepar evariste_G » Vendredi 29 Octobre 2010, 14:09

Bonjour.
Il en faudrait plus je pense pour que l'on se prononce. N'as-tu pas un ECM à proposer ? Le code qui engendre ton organigramme par exemple ... :D
evariste_G
Téra-utilisateur
 
Messages: 1403
Inscription: Vendredi 19 Décembre 2008, 19:13
Localisation: Bordeaux
Statut actuel: Actif et salarié | Enseignant

Re: Redimensionner un graphique fait avec Tikz.

Messagepar Fabrice Couvreur » Vendredi 29 Octobre 2010, 15:04

Voici :
Code: Tout sélectionner
 \begin{tikzpicture}
\tikzstyle{debutfin}=[ellipse,draw,thick,text=red]
\tikzstyle{es}=[rectangle,draw,rounded corners=4pt,fill=blue!25]
\tikzstyle{inst}=[rectangle,draw,fill=yellow!50]
\tikzstyle{test}=[diamond,aspect=1.5,thick,draw=blue,fill=yellow!50]
\tikzstyle{fleche}=[->,>=stealth,thick,rounded corners=0pt]
\node[debutfin](debut) at (5,10.5){Début};
\node[es](lire) at (5,9){
  \begin{tabular}{T}
   On a deux nombres.
  \end{tabular}};
\node[inst](inst1) at (5,7.5){
  \begin{tabular}{T}
  On divise le plus grand \\
  par le plus petit.
  \end{tabular}};
\node[test](test) at (5,4.5) {
  \begin{tabular}{c}
    Le reste \\
    vaut-il \\
    zéro ?
  \end{tabular}};
\node[inst](inst2) at (1,2){
  \begin{tabular}{T}
  On divise le diviseur \\
  par le reste.
  \end{tabular}};
\node[inst](inst3) at (9,2){
  \begin{tabular}{T}
  Le diviseur \\
  (ou le reste précédent) \\
  est le PGCD cherché.
  \end{tabular}};
\node[es](afficher) at (5,0){
  \begin{tabular}{T}
  Afficher le PGCD. 
  \end{tabular}};
\node[debutfin](fin) at (5,-1.5){Fin};
\draw[fleche](debut)--(lire);
\draw[fleche](lire)--(inst1);
\draw[fleche](inst1)--(test);
\draw[fleche] (test) -| (inst2) node [ellipse,near start,fill=red!50]{non};
\draw[fleche] (test) -| (inst3) node [ellipse,near start,fill=red!50]{oui};
\draw[fleche] (inst3.180) -| (afficher.90);
\draw[fleche](afficher)--(fin);
\draw[fleche] (inst2.135) |- (test.135);
\end{tikzpicture}
Fabrice Couvreur
Giga-utilisateur
 
Messages: 598
Inscription: Samedi 18 Août 2007, 00:55

Re: Redimensionner un graphique fait avec Tikz.

Messagepar evariste_G » Vendredi 29 Octobre 2010, 16:42

Le problème vient de tes styles. Il faut inclure l'échelle dans chaque style.

Code: Tout sélectionner
\documentclass{article}
\usepackage[latin1]{inputenc}
\usepackage[french]{babel}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usetikzlibrary{shapes}
\begin{document}
\def\ech{.7}
    \begin{tikzpicture}[scale=\ech]
    \tikzstyle{debutfin}=[ellipse,draw,thick,text=red,scale=\ech]
    \tikzstyle{es}=[rectangle,draw,rounded corners=4pt,fill=blue!25,scale=\ech]
    \tikzstyle{inst}=[rectangle,draw,fill=yellow!50,scale=\ech]
    \tikzstyle{test}=[diamond,aspect=1.5,thick,draw=blue,fill=yellow!50,scale=\ech]
    \tikzstyle{fleche}=[->,>=stealth,thick,rounded corners=0pt]
    \node[debutfin](debut) at (5,10.5){Début};
    \node[es](lire) at (5,9){
      \begin{tabular}{c}
       On a deux nombres.
      \end{tabular}};
    \node[inst](inst1) at (5,7.5){
      \begin{tabular}{c}
      On divise le plus grand \\
      par le plus petit.
      \end{tabular}};
    \node[test](test) at (5,4.5) {
      \begin{tabular}{c}
        Le reste \\
        vaut-il \\
        zéro ?
      \end{tabular}};
    \node[inst](inst2) at (1,2){
      \begin{tabular}{c}
      On divise le diviseur \\
      par le reste.
      \end{tabular}};
    \node[inst](inst3) at (9,2){
      \begin{tabular}{c}
      Le diviseur \\
      (ou le reste précédent) \\
      est le PGCD cherché.
      \end{tabular}};
    \node[es](afficher) at (5,0){
      \begin{tabular}{c}
      Afficher le PGCD.
      \end{tabular}};
    \node[debutfin](fin) at (5,-1.5){Fin};
    \draw[fleche](debut)--(lire);
    \draw[fleche](lire)--(inst1);
    \draw[fleche](inst1)--(test);
    \draw[fleche] (test) -| (inst2) node [ellipse,near start,fill=red!50]{non};
    \draw[fleche] (test) -| (inst3) node [ellipse,near start,fill=red!50]{oui};
    \draw[fleche] (inst3.180) -| (afficher.90);
    \draw[fleche](afficher)--(fin);
    \draw[fleche] (inst2.135) |- (test.135);
    \end{tikzpicture}
\end{document}

evariste_G
Téra-utilisateur
 
Messages: 1403
Inscription: Vendredi 19 Décembre 2008, 19:13
Localisation: Bordeaux
Statut actuel: Actif et salarié | Enseignant

Re: Redimensionner un graphique fait avec Tikz

Messagepar Fabrice Couvreur » Vendredi 29 Octobre 2010, 17:07

Salut,
C'est mieux, mais j'ai remarqué quelque chose.
evariste_G a écrit:Il faut inclure l'échelle dans chaque style.

Je suppose qu'il faut également l'inclure dans :
Code: Tout sélectionner
\tikzstyle{fleche}=[->,>=stealth,thick,rounded corners=0pt]

J'ai ensuite essayé de modifier cette échelle en y mettant
Code: Tout sélectionner
\def\ech{.5}

Et là, les flèches ne me semblent pas avoir été affectées par cette réduction !
Fabrice Couvreur
Giga-utilisateur
 
Messages: 598
Inscription: Samedi 18 Août 2007, 00:55

Re: Redimensionner un graphique fait avec Tikz

Messagepar evariste_G » Vendredi 29 Octobre 2010, 17:25

Dans ton style de flèche, aucune dimension n'est mentionnée et il ne définit pas de nœud donc je n'ai pas mis d'échelle exprès :D Ton style de flèche porte sur la forme uniquement. Donc il est normal que rien ne se passe si tu y mets une échelle.
evariste_G
Téra-utilisateur
 
Messages: 1403
Inscription: Vendredi 19 Décembre 2008, 19:13
Localisation: Bordeaux
Statut actuel: Actif et salarié | Enseignant

Re: Redimensionner un graphique fait avec Tikz

Messagepar Fabrice Couvreur » Vendredi 29 Octobre 2010, 18:26

Re,
Je crois qu'on ne sait pas compris : quand je parlais des flèches, je voulais dire les trajets qui relient les instructions.
Je me considère débutant avec Tikz (mon truc c'est Asymptote ou TeXgraph), et j'ai besoin de quelques éclaircissements :D
Je résume :
Code: Tout sélectionner
 def\ech{.7 }
\begin{tikzpicture}[scale=\ech]

aura pour effet de multiplier toutes les longueurs par 0.7 à l'intérieur de l'environnment tikzpicture, sauf pour ce qui a été défini à l'aide d'un \tikzstyle.
D'où la nécessité de mettre
Code: Tout sélectionner
scale=\ech
dans chaque style.
Donc si je choisis
Code: Tout sélectionner
def\ech{.5 }
je dois bien obtenir un graphique à l'échelle 0.5.
Essayes de le faire, et tu verras qu'il y a quelque chose qui ne va pas, notamment au niveau des ellipses contenant le oui et le non.
Fabrice Couvreur
Giga-utilisateur
 
Messages: 598
Inscription: Samedi 18 Août 2007, 00:55

Re: Redimensionner un graphique fait avec Tikz

Messagepar evariste_G » Vendredi 29 Octobre 2010, 18:39

Si tu regardes ton code, tu vois que tu ne définis pas les nœuds où il y a écrit "oui" et "non" comme ailleurs. Il faut que "scale=\ech" paraisse dans TOUS les nœuds. Je n'avais pas vu que certains nœuds étaient définies indépendamment d'où mon oublie.

Code: Tout sélectionner
\documentclass{article}
\usepackage[latin1]{inputenc}
\usepackage[french]{babel}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usetikzlibrary{shapes}
\begin{document}
\def\ech{.75}
    \begin{tikzpicture}[scale=\ech]
    \tikzstyle{debutfin}=[ellipse,draw,thick,text=red,scale=\ech]
    \tikzstyle{es}=[rectangle,draw,rounded corners=4pt,fill=blue!25,scale=\ech]
    \tikzstyle{inst}=[rectangle,draw,fill=yellow!50,scale=\ech]
    \tikzstyle{test}=[diamond,aspect=1.5,thick,draw=blue,fill=yellow!50,scale=\ech]
    \tikzstyle{on}=[ellipse,near start,fill=red!50,scale=\ech]
    \tikzstyle{fleche}=[->,>=stealth,thick,rounded corners=0pt]   
    \node[debutfin](debut) at (5,10.5){Début};
    \node[es](lire) at (5,9){
      \begin{tabular}{c}
       On a deux nombres.
      \end{tabular}};
    \node[inst](inst1) at (5,7.5){
      \begin{tabular}{c}
      On divise le plus grand \\
      par le plus petit.
      \end{tabular}};
    \node[test](test) at (5,4.5) {
      \begin{tabular}{c}
        Le reste \\
        vaut-il \\
        zéro ?
      \end{tabular}};
    \node[inst](inst2) at (1,2){
      \begin{tabular}{c}
      On divise le diviseur \\
      par le reste.
      \end{tabular}};
    \node[inst](inst3) at (9,2){
      \begin{tabular}{c}
      Le diviseur \\
      (ou le reste précédent) \\
      est le PGCD cherché.
      \end{tabular}};
    \node[es](afficher) at (5,0){
      \begin{tabular}{c}
      Afficher le PGCD.
      \end{tabular}};
    \node[debutfin](fin) at (5,-1.5){Fin};
    \draw[fleche](debut)--(lire);
    \draw[fleche](lire)--(inst1);
    \draw[fleche](inst1)--(test);
    \draw[fleche] (test) -| (inst2) node [on]{non};
    \draw[fleche] (test) -| (inst3) node [on]{oui};
    \draw[fleche] (inst3.180) -| (afficher.90);
    \draw[fleche](afficher)--(fin);
    \draw[fleche] (inst2.135) |- (test.135);
    \end{tikzpicture}
\end{document}

evariste_G
Téra-utilisateur
 
Messages: 1403
Inscription: Vendredi 19 Décembre 2008, 19:13
Localisation: Bordeaux
Statut actuel: Actif et salarié | Enseignant

Re: Redimensionner un graphique fait avec Tikz

Messagepar Fabrice Couvreur » Vendredi 29 Octobre 2010, 22:50

Bonsoir evariste_G,
Merci, cela me convient.
@+
Fabrice Couvreur
Giga-utilisateur
 
Messages: 598
Inscription: Samedi 18 Août 2007, 00:55

Re: [Résolu]Redimensionner un graphique fait avec Tikz

Messagepar pg » Samedi 30 Octobre 2010, 09:53

On peut éviter de mettre "scale=..." dans chaque style (ce qui n'est pas une très bonne idée, car les styles décrivent plutôt l'apparence que la taille, qui est une propriété de la figure) en utilisant "every node/.style={scale=0.75}" :

Code: Tout sélectionner
\documentclass{article}
\usepackage[latin1]{inputenc}
\usepackage[french]{babel}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usetikzlibrary{shapes}
\begin{document}

\begin{tikzpicture}[every node/.style={scale=0.75},scale=0.75]
\tikzstyle{debutfin}=[ellipse,draw,thick,text=red]
\tikzstyle{es}=[rectangle,draw,rounded corners=4pt,fill=blue!25]
\tikzstyle{inst}=[rectangle,draw,fill=yellow!50]
\tikzstyle{test}=[diamond,aspect=1.5,thick,draw=blue,fill=yellow!50]
\tikzstyle{fleche}=[->,>=stealth,thick,rounded corners=0pt]
\node[debutfin](debut) at (5,10.5){Début};
\node[es](lire) at (5,9){
  \begin{tabular}{c}
   On a deux nombres.
  \end{tabular}};
\node[inst](inst1) at (5,7.5){
  \begin{tabular}{c}
  On divise le plus grand \\
  par le plus petit.
  \end{tabular}};
\node[test](test) at (5,4.5) {
  \begin{tabular}{c}
    Le reste \\
    vaut-il \\
    zéro ?
  \end{tabular}};
\node[inst](inst2) at (1,2){
  \begin{tabular}{c}
  On divise le diviseur \\
  par le reste.
  \end{tabular}};
\node[inst](inst3) at (9,2){
  \begin{tabular}{c}
  Le diviseur \\
  (ou le reste précédent) \\
  est le PGCD cherché.
  \end{tabular}};
\node[es](afficher) at (5,0){
  \begin{tabular}{c}
  Afficher le PGCD.
  \end{tabular}};
\node[debutfin](fin) at (5,-1.5){Fin};
\draw[fleche](debut)--(lire);
\draw[fleche](lire)--(inst1);
\draw[fleche](inst1)--(test);
\draw[fleche] (test) -| (inst2) node [ellipse,near start,fill=red!50]{non};
\draw[fleche] (test) -| (inst3) node [ellipse,near start,fill=red!50]{oui};
\draw[fleche] (inst3.180) -| (afficher.90);
\draw[fleche](afficher)--(fin);
\draw[fleche] (inst2.135) |- (test.135);
\end{tikzpicture}

\end{document}
pg
Modérateur
 
Messages: 2592
Inscription: Jeudi 14 Juin 2007, 23:31

Re: [Résolu]Redimensionner un graphique fait avec Tikz

Messagepar evariste_G » Samedi 30 Octobre 2010, 12:08

pg a écrit:On peut éviter de mettre "scale=..." dans chaque style (ce qui n'est pas une très bonne idée, car les styles décrivent plutôt l'apparence que la taille, qui est une propriété de la figure) en utilisant "every node/.style={scale=0.75}"


J'avais un trou de mémoire ... Je savais que l'on pouvais redéfinir d'un coup tous les nœuds mais j'avais oublié la syntaxe et ... flemme de regarder dans la doc oblige ... j'ai bidouillé comme toujours ! :D
evariste_G
Téra-utilisateur
 
Messages: 1403
Inscription: Vendredi 19 Décembre 2008, 19:13
Localisation: Bordeaux
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], Exabot [Bot], Google [Bot], Grapeshot [Crawler] et 12 invités