Chemin principal : Accueil > LaTeX > TikZ > Stemma avec TikZ (3) : stemma complexe

Succession d'articles :

  1. Stemma avec TikZ (2) : stemma simple
  2. Stemma avec TikZ (3) : stemma complexe

Stemma avec TikZ (3) : stemma complexe

samedi 17 mars 2012, mise à jour mardi 20 août 2013, par Maïeul
Suivre la vie du site RSS 2.0 Forum

Troisième et dernier article sur les stemma avec TikZ : le cas d’un stemma complexe, lorsque les manuscrits ou les textes se recroisent.

Exemple de démonstration

Le stemma que je vous propose maintenant est un stemma complexe relatif à des textes apocryphes concernant les enfances de Marie et Jésus. Présentons brièvement ces textes et leurs relations [1].

  • Au IIe siècle, un texte grec, le Protévangile de Jacques. Aux alentours des VI-VIIe siècle, est écrit l’Évangile du Pseudo-Matthieu qui puise au Protévangile. Au VIIIe siècle, le Libellus De Nativitate Mariae est écrit, en se basant entre autre sur cet évangile du Pseudo-Matthieu. Ces trois textes constituent la branche principale de notre stemma.
  • Une seconde branche plus complexe est celle liée à la compilation J [2]. Elle peut se résumer ainsi :
    • Un texte inconnu, appelé Source Spéciale engendre en combinaison avec l’Évangile du Pseudo-Matthieu un texte nommé compilation I, ancêtre de la compilation J. Cette compilation I nous est inconnue, mais nous en trouvons plusieurs témoignages qui permettent de la reconstituer :
      • Dans des apocryphes Irlandais : le Liber Flavus Fergusiorum et le Récit de l’enfance de Leabhar Breac.
      • Dans la compilation J, qui est une combinaison de la compilation I et de l’Évangile du Pseudo-Matthieu.
  • La compilation I originelle a disparu, mais on la retrouve sous deux formes :
    • La forme Arundel, qui incorpore d’autres élèments de l’Évangile du Pseudo-Matthieu.
    • La forme Hereford, qui incorpore des élèments du Libellus de Nativitate Mariae et d’un sermon Pseudo-Augustinien App. 195.

Tout ceci est assez complexe, c’est pourquoi nous souhaitons produire le stemma suivant :

PNG - 56.7 ko
Stemma des textes relatifs aux enfances de Marie et de Jésus
Les textes entourés sont conjecturés par la recherche.

C’est donc la manière dont ce stemma est produit qui fera l’objet de cet article.

Principe

Nous allons d’abord positionner nos différents textes sur une grille. L’emplacement de chaque texte recevra un identifiant unique. Nous indiquerons ensuite à LaTeX la manière de relier entre eux les différents emplacement.

La grille sur laquelle nos textes se placent fonctionne selon un système de coordonnées cartésiennes : un axe des x et un axe des y. Attention cependant à ne pas se faire piéger : l’axe des x est orienté de gauche à droite et celui des y de bas en haut.

PNG - 13.3 ko
Système d’axes dans TikZ

L’axe vertical correspondra plus ou moins à l’axe chronologique. En revanche l’axe horizontal n’aura aucune signification particulière.

Disposition des textes

Nous allons maintenant commencer à tracer notre stemma. Installons d’abord les textes :

  1. \documentclass[a4paper]{article}
  2. \usepackage{fontspec}
  3. \usepackage{xunicode}
  4. \usepackage{polyglossia}
  5. \setmainlanguage{french}
  6. \usepackage{tikz}
  7. \begin{document}
  8.  
  9. \begin{tikzpicture}
  10. \node (Spe) at (0, 0) {Source spéciale};
  11. \node (PJ) at (5, 0) {Protévangile de Jacques};
  12. \node (PM) at (7.5, -3) {Évangile du Pseudo-Matthieu};
  13. \node (I) at (2.5,-6) {Compilation~I};
  14. \node (195) at (12.5, -2) {Sermon Ps.-augustinien App.~195};
  15. \node (DNM) at (10, -6) {Libellus de Nativitate Mariae};
  16. \node (J) at (7.5,-8) {Compilation~J};
  17. \node (JAr) at (5, -10) {Compilation~J Arundel};
  18. \node (JHer) at (12.5, -10) {Compilation~J Hereford};
  19. \node (Irl) at (0, -8) {Apocryphes Irlandais};
  20. \end{tikzpicture}
  21. \end{document}

Télécharger

Commentons rapidement :

  • ligne 1 à 6 : préambule du document
  • ligne 16 à 19 : stemma. À l’intérieur de l’environnement tikzfigure, une syntaxe spéciale est utilisée. Chaque instruction devant finir par un point-virgule ;.
  • Ici chaque instruction est de la forme suivante : \node (Identifiant) at (coordonnées) {Texte};. L’identifiant de chaque \node permet d’indiquer ensuite de les relier entre eux. Comme annoncée plus haut, les coordonnés sont sous forme cartésienne.

La commande \node est une commande de base de TikZ. Elle définit un « nœud », c’est à dire un point où du texte est écrit.

Voyons le résultat :

PNG - 31.2 ko
Premier essai de disposition des textes

On constate que nos nœuds sont disposés correctement les uns par rapport aux autres, mais prennent trop de place.

Deux solutions s’offrent à nous :

  • changer toutes les coordonnées
  • indiquer à l’environnement tikzpicture de procéder à un « dézoomage » grâce au paramètre scale. Ce paramètre indiquant le degré de zoom. Par défaut, il vaut 1. Nous allons le mettre à 0,9 pour que notre figure finale fasse 90 % de la figure initiale.

Ce qui donne :

  1. \begin{tikzpicture}[scale=0.9]
  2. \node (Spe) at (0, 0) {Source spéciale};
  3. \node (PJ) at (5, 0) {Protévangile de Jacques};
  4. \node (PM) at (7.5, -3) {Évangile du Pseudo-Matthieu};
  5. \node (I) at (2.5,-6) {Compilation~I};
  6. \node (195) at (12.5, -2) {Sermon Ps.-augustinien App.~195};
  7. \node (DNM) at (10, -6) {Libellus de Nativitate Mariae};
  8. \node (J) at (7.5,-8) {Compilation~J};
  9. \node (JAr) at (5, -10) {Compilation~J Arundel};
  10. \node (JHer) at (12.5, -10) {Compilation~J Hereford};
  11. \node (Irl) at (0, -8) {Apocryphes Irlandais};
  12. \end{tikzpicture}
  13. \end{document}

Télécharger

PNG - 30.7 ko
Disposition des textes avec un facteur scale=0.9

On constate que le dézoommage s’applique bien aux distances entre les textes.

En revanche la taille des textes, elle, est invariable. C’est une propriété fondamentale de scale : il s’applique uniquement aux coordonnées, pas aux tailles de textes ni à leurs orientations.

Pour réduire la taille du texte, mettons la commande \small à l’intérieur de l’environnement tikzpicture

  1. \begin{tikzpicture}[scale=0.9]
  2. \small
  3. \node (Spe) at (0, 0) {Source spéciale};
  4. \node (PJ) at (5, 0) {Protévangile de Jacques};
  5. \node (PM) at (7.5, -3) {Évangile du Pseudo-Matthieu};
  6. \node (I) at (2.5,-6) {Compilation~I};
  7. \node (195) at (12.5, -2) {Sermon Ps.-augustinien App.~195};
  8. \node (DNM) at (10, -6) {Libellus de Nativitate Mariae};
  9. \node (J) at (7.5,-8) {Compilation~J};
  10. \node (JAr) at (5, -10) {Compilation~J Arundel};
  11. \node (JHer) at (12.5, -10) {Compilation~J Hereford};
  12. \node (Irl) at (0, -8) {Apocryphes Irlandais};
  13. \end{tikzpicture}
  14. \end{document}

Télécharger

PNG - 29.5 ko
Disposition des textes avec un facteur scale=0.9 et avec une taille \small

Décoration des nœuds

Nous souhaitons que les nœuds correspondant aux textes conjecturés soient entourés par une ellipse en tiret.

Les figures de base de TikZ sont relativement simples. Pour ajouter des figures plus complexes, nous allons appeler un module supplémentaire de TiKz dans le préambule, grâce à la commande \usetikzlibrary :

  1. \usetikzlibrary{shapes}

Nous allons ensuite définir un style de nœud, grâce à la commande \tikzstyle. Ce style s’appelle conjecture :

  1. \tikzstyle{conjecture}=[draw,ellipse,dashed]

L’option draw indique de tracer le contour du nœud, dashed indique qu’il faut le pointiller, et ellipse indique sa forme.

Il nous reste à passer le style conjecture en option lors du tracage de certains nœuds, juste après la commande \node

  1. \begin{tikzpicture}[scale=0.9]
  2. \tikzstyle{conjecture}=[draw,ellipse,dashed]
  3. \small
  4. \node[conjecture](Spe) at (0, 0) {Source spéciale};
  5. \node (PJ) at (5, 0) {Protévangile de Jacques};
  6. \node (PM) at (7.5, -3) {Évangile du Pseudo-Matthieu};
  7. \node[conjecture] (I) at (2.5,-6) {Compilation~I};
  8. \node (195) at (12.5, -2) {Sermon Ps.-augustinien App.~195};
  9. \node (DNM) at (10, -6) {Libellus de Nativitate Mariae};
  10. \node[conjecture] (J) at (7.5,-8) {Compilation~J};
  11. \node (JAr) at (5, -10) {Compilation~J Arundel};
  12. \node (JHer) at (12.5, -10) {Compilation~J Hereford};
  13. \node (Irl) at (0, -8) {Apocryphes Irlandais};
  14.  
  15. \end{tikzpicture}

Télécharger

PNG - 34.8 ko
Textes conjecturés entourés

Relier les textes entre eux

La commande \draw permet de relier entre eux les nœuds que nous avons définis, par exemple le point spe avec le point I. La syntaxe de base est \draw[options] (point) -- (point). Les options permettant notamment d’indiquer les styles des traits. Ici nous passeront l’option -> pour indiquer que nous souhaitons avoir des flèches.

  1. \begin{tikzpicture}[scale=0.9]
  2. \tikzstyle{conjecture}=[draw,ellipse,dashed]
  3. \small
  4. \node[conjecture](Spe) at (0, 0) {Source spéciale};
  5. \node (PJ) at (5, 0) {Protévangile de Jacques};
  6. \node (PM) at (7.5, -3) {Évangile du Pseudo-Matthieu};
  7. \node[conjecture] (I) at (2.5,-6) {Compilation~I};
  8. \node (195) at (12.5, -2) {Sermon Ps.-augustinien App.~195};
  9. \node (DNM) at (10, -6) {Libellus de Nativitate Mariae};
  10. \node[conjecture] (J) at (7.5,-8) {Compilation~J};
  11. \node (JAr) at (5, -10) {Compilation~J Arundel};
  12. \node (JHer) at (12.5, -10) {Compilation~J Hereford};
  13. \node (Irl) at (0, -8) {Apocryphes Irlandais};
  14.  
  15. \draw[->] (Spe) -- (I);
  16. \draw[->] (PJ) -- (PM);
  17. \draw[->] (PJ) -- (I);
  18. \draw[->] (I) -- (J);
  19. \draw[->] (I) -- (Irl);
  20. \draw[->] (DNM) -- (JHer);
  21. \draw[->] (195) -- (JHer);
  22. \draw[->] (Spe) -- (Irl);
  23. \draw[->] (PM) -- (JAr);
  24. \draw[->] (PM) -- (DNM);
  25. \draw[->] (PM) -- (J);
  26. \draw[->] (J) -- (JAr);
  27. \draw[->] (J) -- (JHer);
  28. \end{tikzpicture}

Télécharger

PNG - 52.5 ko
Textes reliés entre eux

Affinage

Notre schéma est un peu près construit. Cependant, nous pouvons l’améliorer. En effet, nous constatons que les flèches ne sont pas toujours disposées de manière élégante, passant parfois trop proche de certains textes.

Pour tracer les traits entre deux nœuds, TiKz procède ainsi, par défaut :

  • il trace le trait entre les centres des nœuds.
  • il masque les traits à l’intérieur des nœuds.

Nous pouvons cependant indiquer à TikZ de relier à un emplacement précis du bord du nœud. Pour ce faire, il suffit d’indiquer un angle en degrés, sachant que le degré 0 correspond au point situé à droite du nœud, et que l’on tourne dans le sens inverse des aiguilles d’une montre (sens trigonomètrique), comme expliqué dans le schéma ci-dessous.

PNG - 60.9 ko
Ancrage à la limite d’un nœud
La zone jaune correspond au contenu du nœud. Les points noirs sont donc situés à la limite du nœud.

Pour marquer que nous souhaitons tracer un trait entre le point 60 du nœud A et le point 40 du nœud B, il nous suffit d’utiliser la syntaxe suivante : \draw[options] (A. 60) -- (B. 40);

Dans notre cas, nous devrons faire quelques essais pour obtenir un positionnement satisfaisant. Voici celui que nous avons obtenu :

  1. \begin{tikzpicture}[scale=0.9]
  2. \tikzstyle{conjecture}=[draw,ellipse,dashed]
  3. \small
  4. \node[conjecture](Spe) at (0, 0) {Source spéciale};
  5. \node (PJ) at (5, 0) {Protévangile de Jacques};
  6. \node (PM) at (7.5, -3) {Évangile du Pseudo-Matthieu};
  7. \node[conjecture] (I) at (2.5,-6) {Compilation~I};
  8. \node (195) at (12.5, -2) {Sermon Ps.-augustinien App.~195};
  9. \node (DNM) at (10, -6) {Libellus de Nativitate Mariae};
  10. \node[conjecture] (J) at (7.5,-8) {Compilation~J};
  11. \node (JAr) at (5, -10) {Compilation~J Arundel};
  12. \node (JHer) at (12.5, -10) {Compilation~J Hereford};
  13. \node (Irl) at (0, -8) {Apocryphes Irlandais};
  14.  
  15.  
  16. \draw[->] (Spe. -45) -- (I. 135);
  17. \draw[->] (PJ.-45) -- (PM.90);
  18. \draw[->] (PJ.-135) -- (I.45);
  19. \draw[->] (I.-45) -- (J.165);
  20. \draw[->] (I.-135) -- (Irl.45);
  21. \draw[->] (DNM.-45) -- (JHer.135);
  22. \draw[->] (195.-90) -- (JHer.90);
  23. \draw[->] (Spe.-90) -- (Irl.90);
  24. \draw[->] (PM.-135) -- (JAr.90);
  25. \draw[->] (PM.-45) -- (DNM.90);
  26. \draw[->] (PM.-90) -- (J.90);
  27. \draw[->] (J.-135) -- (JAr.45);
  28. \draw[->] (J.-45) -- (JHer. 165);
  29. \end{tikzpicture}

Télécharger

Nous obtenons ainsi notre schéma final :

PNG - 56.7 ko
Stemma des textes relatifs aux enfances de Marie et de Jésus
Les textes entourés sont conjecturés par la recherche.

J’espère que ce tutoriel aura été assez clair pour vous permettre de fabriquer votre propre stemma complexe.

P.-S.

Pour aller plus loins, on lira le fabuleux TikZ pour l’impatient.

Notes

[1Il est évident que je simplifie ici les problèmes posés par ces textes.

[2Du nom de son premier éditeur, James.

Vos commentaires

  • Le 20 août 2013 à 12:59, par Philippe Neyrat En réponse à : Stemma avec TikZ (3) : stemma complexe

    Bonjour,

    J’ai repéré quelques fautes de frappe (peut-être pas toutes) :

    « une » dans les premiers commentaires : (un syntaxe spéciale est utilisée.)

    « nos » ? et « soient » au lieu de « soit » dans : (Nous souhaitons que nos les nœuds correspondant aux textes conjecturés soit entourés par une ellipse en tiret.)

    « Les uns » dans : (On constate que nos nœuds sont disposés correctement les un par rapport aux autres, mais prennent trop de place.)

    enfin : « dézommage » au lieu de « dézoommage » et : « obtenu » dans : (Voici celui que nous avons obtenus) en fin d’article.

    Merci pour ce travail, Cordialement

    P. Neyrat

    PS : Page 57 de votre livre j’ai repéré : « la meilleur méthode » (meilleure)

  • Le 20 août 2013 à 13:38, par Maïeul En réponse à : Stemma avec TikZ (3) : stemma complexe

    Merci pour ces corrections. Je viens de les intégrer.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici
  • Ce formulaire accepte les raccourcis SPIP [->url] {{gras}} {italique} <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

À propos

Titulaire d’un master en sciences religieuses de l’Université de Strasbourg, je suis depuis août 2012 assistant-diplômé en histoire du christianisme antique et littérature apocryphe chrétienne à l’Université de Lausanne, où je prépare une thèse sous la direction de Frédéric Amsler.

Dans le cadre de la rédaction de mon mémoire de master, j’ai été emmené à utiliser LaTeX, et j’ai donc décider de partager mes techniques. En effet, au cours de mes premiers apprentissages, j’ai découvert que les ressources indiquant les outils pour l’utilisation de LaTeX en sciences humaines étaient rares.

Par ailleurs, je suis membre actif de la communauté SPIP, au sein de laquelle j’administre le site Spip-Contrib. Je propose sur ce site quelques notes sur SPIP, en général à destination de webmestre.

Il m’arrive également de faire un petit peu de Python, de temps en temps.

Enfin, je tiens un blog de réflexions politiques et religieuses.

Maïeul