Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation (La)TeX avancée Discussion :

Tikz fleche a double changement de direction + OT1 encoding + Overfull h


Sujet :

Programmation (La)TeX avancée

  1. #1
    Membre éprouvé
    Tikz fleche a double changement de direction + OT1 encoding + Overfull h
    Bonjour

    Je tente de faire des diagrammes de flux avec Tikz
    Voici ou j'en suis
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    \documentclass{article}
    \usepackage[UTF8]{inputenc} %pour que les accents passent bien
    \usepackage[french]{babel}
    %\usepackage[latin1]{inputenc}
    \usepackage{tikz}
    \usetikzlibrary{shapes,arrows}
    \begin{document}
    \pagestyle{empty}
     
     
    % Define block styles
    \tikzstyle{decision} = [diamond, draw, fill=blue!0, 
        text width=5em, text badly centered, node distance=3cm, inner sep=0pt]
    \tikzstyle{block} = [rectangle, draw, fill=blue!0, 
        text width=12em, text centered, rounded corners, minimum height=2em]
    \tikzstyle{line} = [draw,-latex']
    \tikzstyle{lineNO} = [draw,o-latex']
    \tikzstyle{cloud} = [draw, ellipse,fill=red!0, node distance=3cm,
        minimum height=2em]
     
     
    \begin{tikzpicture}[node distance = 1cm ,auto]
        % Place nodes
        \node [block] (start) {Start Config to RAM};
        \node [block, below of=start] (Memset) {Tout à 0};
        \node [decision, below of=Memset, node distance=2cm] (TestZones) {2 zones de Flash invalides ?};
        \node [decision, below of=TestZones] (TestError) {Error ? (SPI)};
        \node [block, right of=TestError , node distance=5cm] (Defaut) {Force config par defaut};
        \node [decision, below of=TestZones] (TestError) {Error ? (SPI)};
        \node [decision, below of=TestError , node distance=3.5cm] (TestFichier) {Fichier config présent sur SD ?};
        \node [block, right of=TestFichier , node distance=5cm] (AnalyseFichier) {Analyse du fichier  de la SD};
        \node [block, below of=AnalyseFichier] (Effacement) {Effacement du fichier de la SD};
    	\node [block, below of=TestFichier, node distance=3cm] (Validconfig) {Validation de la configuration};
    	\node [decision, below of=Validconfig , node distance=2cm] (TestSave) {Enregistrement à faire ?};
    	\node [block, right of=TestSave, node distance=5cm] (Sauv) {Sauvegarde RAM->Flash};
    	\node [block, below of=TestSave, node distance=2cm] (Fin) {Fin};
     
        % Draw edges
        \path [line] (start) -- (Memset);
        \path [line] (Memset) -- (TestZones);
        \path [line] (TestZones) -| (Defaut);
        \path [lineNO] (TestZones) -- (TestError);
        \path [line] (TestError) -- (Defaut);
        \path [lineNO] (TestError) -- (TestFichier);
        \path [line] (Defaut) -- (TestFichier);
        \path [line] (TestFichier) -- (AnalyseFichier);
        \path [lineNO] (TestFichier) -- (Validconfig);
        \path [line] (AnalyseFichier) -- (Effacement);
        \path [line] (Effacement) -- (Validconfig);
        \path [line] (Validconfig) -- (TestSave);
          \path [line] (TestSave) -- (Sauv);
        \path [lineNO] (TestSave) -- (Fin);
        \path [line] (Sauv) -- (Fin);
     
    \end{tikzpicture}
     
    \end{document}


    ce qui donne ceci


    3 soucis :
    1) J'ai un warning
    OT1 encoding should not be used for French.
    dont je n'arrive pas à trouver l'origine on me suggère de remplacer OT1 par T1 mais j'ai OT1 nullpart...
    2) le overfull h sur le test "Enregistrement à faire", je ne comprends pas pourquoi il ne coupe pas le mot enregistrement, comme il le fait par exemple sur le "Fichier" de "Effacement du fichier de la SD"
    3) J'aimerais mettre des fleches tel que ici en rouge mais je n'ai pas trouvé l'ombre de la trace d'une piste encore ; Je doute à ce stade de pouvoir faire ça simplement en modifiant ce \tickzstyle{line} que j'ai défini


    Merci par avance pour votre aide
    Il y a 10 sortes de personnes dans le monde : ceux qui comprennent le binaire et les autres

  2. #2
    Responsable LaTeX

    on me suggère de remplacer OT1 par T1 mais j'ai OT1 nullpart...
    Effectivement, mais tu n'as pas T1 non plus. (OT1 est par défaut). \usepackage[T1]{fontenc} et hop, plus d'avertissement.

    je ne comprends pas pourquoi il ne coupe pas le mot enregistrement
    TeX ne fait pas de césure sur le premier mot d'un paragraphe. (c'est un cas assez rare ici). On peut découper ce mot manuellement : Enre\-gis\-tre\-ment ainsi TeX choisira l'endroit le plus adapté pour la césure. Un solution automatique est plus complexe à mettre en œuvre.

    J'aimerais mettre des fleches tel que ici en rouge mais je n'ai pas trouvé l'ombre de la trace d'une piste encore ; Je doute à ce stade de pouvoir faire ça simplement en modifiant ce \tickzstyle{line} que j'ai défini
    SI tu veux une flèche en rouge, il suffit de dire "red" dans les options des lignes. Et pour la flèche à angle droit, faire comme pour la première que tu as faite : |-. Pour faire aboutir cette flèche au centre d'une autre flèche, on créer un node au milieu de cette flèche et on rejoint le tout.
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    \documentclass{article}
    \usepackage[UTF8]{inputenc} %pour que les accents passent bien
    \usepackage[french]{babel}
    \usepackage[T1]{fontenc}
    \usepackage{tikz}
    \usetikzlibrary{shapes,arrows}
    \begin{document}
    \pagestyle{empty}
     
    % Define block styles
    \tikzstyle{decision} = [diamond, draw, fill=blue!0, 
        text width=5em, text badly centered, node distance=3cm, inner sep=0pt]
    \tikzstyle{block} = [rectangle, draw, fill=blue!0, 
        text width=12em, text centered, rounded corners, minimum height=2em]
    \tikzstyle{line} = [draw,-latex']
    \tikzstyle{lineNO} = [draw,o-latex']
    \tikzstyle{cloud} = [draw, ellipse,fill=red!0, node distance=3cm,
        minimum height=2em]
     
     
    \begin{tikzpicture}[node distance = 1cm ,auto]
        % Place nodes
        \node [block] (start) {Start Config to RAM};
        \node [block, below of=start,node distance = 1cm] (Memset) {Tout à 0};
        \node [decision, below of=Memset, node distance=2cm] (TestZones) {2 zones de Flash invalides ?};
        \node [decision, below of=TestZones] (TestError) {Error ? (SPI)};
        \node [block, right of=TestError , node distance=5cm] (Defaut) {Force config par defaut};
        \node [decision, below of=TestZones] (TestError) {Error ? (SPI)};
        \node [decision, below of=TestError , node distance=3.5cm] (TestFichier) {Fichier config présent sur SD ?};
        \node [block, right of=TestFichier , node distance=5cm] (AnalyseFichier) {Analyse du fichier  de la SD};
        \node [block, below of=AnalyseFichier] (Effacement) {Effacement du fichier de la SD};
    	\node [block, below of=TestFichier, node distance=3cm] (Validconfig) {Validation de la configuration};
    	\node [decision, below of=Validconfig , node distance=3cm] (TestSave) {Enre\-gis\-tre\-ment à faire ?};
    	\node [block, right of=TestSave, node distance=5cm] (Sauv) {Sauvegarde RAM->Flash};
    	\node [block, below of=TestSave, node distance=3cm] (Fin) {Fin};
     
        % Draw edges
        \path [line] (start) -- (Memset);
        \path [line] (Memset) -- (TestZones);
        \path [line] (TestZones) -| (Defaut);
        \path [lineNO] (TestZones) -- (TestError);
        \path [line] (TestError) -- (Defaut);
        \path [lineNO] (TestError) -- (TestFichier) node[midway,inner sep =0pt](c){};
        \path [line,red] (Defaut) |- (c.center);
        \path [line] (TestFichier) -- (AnalyseFichier);
        \path [lineNO] (TestFichier) -- (Validconfig) node[midway,inner sep =0pt](a){};
        \path [line] (AnalyseFichier) -- (Effacement);
        \path [line,red] (Effacement) |- (a.center);
        \path [line] (Validconfig) -- (TestSave);
          \path [line] (TestSave) -- (Sauv);
        \path [lineNO] (TestSave) -- (Fin) node[midway,inner sep =0pt](b){};
        \path [line,red] (Sauv)  |- (b.center);
     
    \end{tikzpicture}
     
    \end{document}


    Développeur Web freelance : http://www.ls-web.fr

  3. #3
    Membre éprouvé
    Citation Envoyé par -Nikopol- Voir le message
    Effectivement, mais tu n'as pas T1 non plus. (OT1 est par défaut). \usepackage[T1]{fontenc} et hop, plus d'avertissement.
    Je vais renoncer à l'émerveillement tellement c'est limpide
    tu écriras 5000x : "lit ce qu'on te dit et croit 5000x ce qu'on te dit"


    Citation Envoyé par -Nikopol- Voir le message

    TeX ne fait pas de césure sur le premier mot d'un paragraphe. (c'est un cas assez rare ici). On peut découper ce mot manuellement : Enre\-gis\-tre\-ment ainsi TeX choisira l'endroit le plus adapté pour la césure. Un solution automatique est plus complexe à mettre en œuvre.
    Je me la note celle là parce que ça va m'arriver encore...
    C'est peut être aussi l'indice que le texte n'est pas le bon ; "Y a t-il un truc à enregistrer ?" ...

    Citation Envoyé par -Nikopol- Voir le message

    SI tu veux une flèche en rouge, il suffit de dire "red" dans les options des lignes. Et pour la flèche à angle droit, faire comme pour la première que tu as faite : |-. Pour faire aboutir cette flèche au centre d'une autre flèche, on créer un node au milieu de cette flèche et on rejoint le tout.
    CQFD, je ne voulais pas de couleur mais ça c'est fait...


    Comme mes questions semblent ne pas avoir été assez difficiles j'en ajoute 2...
    4) Pour les decisions (contrairement aux block entre eux) je suis obligé de coller partout des
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    node distance=xcm
    , y a t-il moyen qu'il se débrouille comme il le fait très bien avec les block entre eux? Ou alors les block entre eux ça fonctionne uniquement parce qu'ils ont besoin de moins d’écart et que cet écart se fait par
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    \begin{tikzpicture}[node distance = 1cm ,auto]
    ? au fait il fait quoi le auto ici ? pas réussi à trouver son rôle et si je le retire ça semble rien changer.

    5) Si je veux faire une flèche qui sort verticalement en dessous du node "Fin", contourne tout et rerentre également vers le bas sur le node "start" ça va faire 5 tronçons de flèche. J'en reviens au même problème qu'à ma première question sur les flèches où je cherchais à faire une flèche de 3 tronçons.

    re merci
    Il y a 10 sortes de personnes dans le monde : ceux qui comprennent le binaire et les autres