Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

pstree problème pour faire un arbre

12 views
Skip to first unread message

debimax

unread,
May 21, 2012, 12:17:16 PM5/21/12
to
bonjour

je souhaite faire un arbre comme celui ci
http://walid.nabhan.pagesperso-orange.fr/developpement/pages/hffalgo/images/step2.jpg

Je n'arrive pas à écrire le code, comment ne pas mettre le 1° niveau ou
comment juxtaposer plusieurs arbres sur une ligne.

merci de m'aider

debimax

Jean-Côme Charpentier

unread,
May 21, 2012, 6:24:42 PM5/21/12
to
Le 21/05/2012 18:17, debimax a écrit :
> bonjour

Bonjour,

> je souhaite faire un arbre comme celui ci
> http://walid.nabhan.pagesperso-orange.fr/developpement/pages/hffalgo/images/step2.jpg
>
> Je n'arrive pas à écrire le code, comment ne pas mettre le 1° niveau

En utilisant le nœud \Tn qui est totalement vide et en disant que les
branches (edge) ne sont rien du tout pour ce nœud.
Au passage, pour loger la totalité de la figure sur une largeur
d'empagement normal, c'est un peu acrobatique ! Il faut serrer les
fesses :-)

> ou comment juxtaposer plusieurs arbres sur une ligne.

En mettant plusieurs \pstree à la queue leu leu. Le problème est
évidemment de les aligner. Verticalement, il n'y a pas de problème ici,
c'est horizontalement que ça coince.

Voici mes deux propositions. Il y a un hack pas très beau pour la
première solution où un \vspace négatif compense la racine invisible qui
prend de la place verticale.
Pour la solution 2, j'ai triché en plaçant des \hspace*{\stretch{1}}
entre tous les nœuds isolés. Ce n'est pas parfait mais ce n'est pas non
plus horrible à l'œil. Cela dit, fondamentalement, je préfère la
première solution : c'est pstricks qui calcule le placement de tous les
éléments : c'est plus sûr, plus souple et plus simple.

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[a4paper,left=1.5cm,top=1.5cm]{geometry}
\usepackage{lmodern}
\usepackage{pst-tree}
\usepackage[french]{babel}

\def\noedge{}
% Définition plus souple qu'un \psset sauvage
\newpsstyle{Y}{fillstyle=solid,fillcolor=yellow}
\begin{document}
\begin{center}
\textbf{Solution \no{} 1}
\par\vspace{-1.3cm} % pour compenser la racine invisible
\shorthandoff{:} % pour les : sans typo française
\psset{radius=4.5mm} % 1cm par défaut => (beaucoup) trop gros
\pstree{\Tn[\edge=\noedge] % Racine vide [pas de ligne]
}{%
\TCircle[style=Y]{m: 1}
\pstree{\TCircle[style=Y]{2}}{%
\TCircle[style=Y]{s: 1}
\TCircle[style=Y]{u: 1}
}
\pstree{\TCircle[style=Y]{2}}{%
\TCircle[style=Y]{a: 1}
\TCircle[style=Y]{c: 1}
}
\TCircle[style=Y]{o: 2}
\TCircle[style=Y]{1: 2}
\TCircle[style=Y]{i: 3}
\TCircle[style=Y]{e: 3}
\TCircle[style=Y]{n: 5}
\TCircle[style=Y]{t: 5}
}\par
\end{center}

\par\bigskip
\begin{center}
\textbf{Solution \no{} 2}\par\medskip
\end{center}
\begingroup
\shorthandoff{:} % pour les : sans typo française
\psset{radius=4.5mm} % 1cm par défaut => (beaucoup) trop gros
\hspace*{\stretch{1}}%
\pstree{\TCircle[style=Y]{m: 1}}{}
\pstree{\TCircle[style=Y]{2}}{%
\TCircle[style=Y]{s: 1}
\TCircle[style=Y]{u: 1}
}
\pstree{\TCircle[style=Y]{2}}{%
\TCircle[style=Y]{a: 1}
\TCircle[style=Y]{c: 1}
}
\pstree{\TCircle[style=Y]{o: 2}}{}\hspace*{\stretch{1}}%
\pstree{\TCircle[style=Y]{1: 2}}{}\hspace*{\stretch{1}}%
\pstree{\TCircle[style=Y]{i: 3}}{}\hspace*{\stretch{1}}%
\pstree{\TCircle[style=Y]{e: 3}}{}\hspace*{\stretch{1}}%
\pstree{\TCircle[style=Y]{n: 5}}{}\hspace*{\stretch{1}}%
\pstree{\TCircle[style=Y]{t: 5}}{}\hspace*{\stretch{1}}%
\endgroup
\end{document}

Jean-Côme Charpentier

--
Un manuel d'utilisation c'est pas de la poésie
-+- Joss in fr.comp.text.tex -+-

debimax

unread,
May 22, 2012, 1:47:26 AM5/22/12
to
merci beaucoup

je n'y serais pas arrivé sans ton aide.


debimax



0 new messages