Historique des modifications [retour]
cliquez ici pour masquer/afficher la révision 7

15 Mai '21, 14:11

stefan's gravatar image

stefan
10618

Voici une solution utilisant les arbres de TikZ. Mais il faut encore fournir toutes les données de chaque match... ![tableau][1] \documentclass[tikz]{standalone} \usepackage[utf8]{inputenc} \usepackage{lmodern} \usepackage[T1]{fontenc} \usetikzlibrary{matrix,calc} \colorlet{gain}{black} \colorlet{perdant}{gray!50!black} \def\gainpremier#1#2#3#4{ node[match] { \textcolor{gain}{\textbf{#1}} \& \textcolor{gain}{#2} \\ \textcolor{perdant}{#3} \& \textcolor{perdant}{#4} \\ } } \def\gainsecond#1#2#3#4{ node[match] { \textcolor{perdant}{#1} \& \textcolor{perdant}{#2} \\ \textcolor{gain}{\textbf{#3}} \& \textcolor{gain}{#4} \\ } } \begin{document} \begin{tikzpicture} \tikzset{ match/.style={ matrix,matrix of nodes,ampersand replacement=\&, inner sep=0,nodes={inner sep=.2em,text height=.7em,text depth=.1em} }, grow=left, level distance=10em, level 1/.style={sibling distance=12em}, level 2/.style={sibling distance=6em}, level 3/.style={sibling distance=3em}, edge from parent path={ (\tikzparentnode.west) -| ($(\tikzparentnode)!.5!(\tikzchildnode)$) |- (\tikzchildnode.east) }, } \path \gainpremier{États-Unis}{5}{Japon}{2} child {\gainpremier{États-Unis}{2}{Allemagne}{0} child {\gainsecond{Chine}{0}{États-Unis}{1} child {\gainpremier{Chine}{1}{Cameroun}{0}} child {\gainpremier{États-Unis}{2}{Colombie}{0}} } child {\gainpremier{Allemagne}{1(5)}{France}{1(4)} child {\gainpremier{Allemagne}{4}{Suède}{1}} child {\gainpremier{France}{3}{Corée du Sud}{0}} } } child {\gainpremier{Japon}{2}{Angleterre}{1} child {\gainsecond{Australie}{0}{Japon}{1} child {\gainsecond{Brésil}{0}{Australie}{1}} child {\gainpremier{Japon}{2}{Pays-Bas}{1}} } child {\gainpremier{Angleterre}{2}{Canada}{1} child {\gainsecond{Norvège}{1}{Angleterre}{2}} child {\gainpremier{Canada}{1}{Suisse}{0}} } } ; \end{tikzpicture} \end{document} Seconde proposition === Voici une amélioration du code précédent permettant l'ajout d'un titre et d'un fond coloré pour chaque colonne. ![tableau][2] \documentclass[tikz]{standalone} \usepackage[utf8]{inputenc} \usepackage{lmodern} \usepackage[T1]{fontenc} \usetikzlibrary{matrix,calc,backgrounds,fit} \colorlet{gain}{black} \colorlet{perdant}{gray!50!black} \def\gainpremier#1#2#3#4#5{ node[match,name=#1] { \textcolor{gain}{\textbf{#2}} \& \textcolor{gain}{#3} \\ \textcolor{perdant}{#4} \& \textcolor{perdant}{#5} \\ } } \def\gainsecond#1#2#3#4#5{ node[match,name=#1] { \textcolor{perdant}{#2} \& \textcolor{perdant}{#3} \\ \textcolor{gain}{\textbf{#4}} \& \textcolor{gain}{#5} \\ } } \begin{document} \begin{tikzpicture} \tikzset{ label/.style={text depth=.2em,font=\itshape\scriptsize,anchor=south}, match/.style={ matrix,matrix of nodes,ampersand replacement=\&, inner sep=0,nodes={inner sep=.2em,text height=.7em,text depth=.1em} }, grow=left, level distance=10em, level 1/.style={sibling distance=12em}, level 2/.style={sibling distance=6em}, level 3/.style={sibling distance=3em}, edge from parent path={ (\tikzparentnode.west) -| ($(\tikzparentnode)!.5!(\tikzchildnode)$) |- (\tikzchildnode.east) }, } \path \gainpremier{1-1}{États-Unis}{5}{Japon}{2} child {\gainpremier{2-1}{États-Unis}{2}{Allemagne}{0} child {\gainsecond{4-1}{Chine}{0}{États-Unis}{1} child {\gainpremier{8-1}{Chine}{1}{Cameroun}{0}} child {\gainpremier{8-2}{États-Unis}{2}{Colombie}{0}} } child {\gainpremier{4-2}{Allemagne}{1(5)}{France}{1(4)} child {\gainpremier{8-3}{Allemagne}{4}{Suède}{1}} child {\gainpremier{8-4}{France}{3}{Corée du Sud}{0}} } } child {\gainpremier{2-2}{Japon}{2}{Angleterre}{1} child {\gainsecond{4-3}{Australie}{0}{Japon}{1} child {\gainsecond{8-5}{Brésil}{0}{Australie}{1}} child {\gainpremier{8-6}{Japon}{2}{Pays-Bas}{1}} } child {\gainpremier{4-4}{Angleterre}{2}{Canada}{1} child {\gainsecond{8-7}{Norvège}{1}{Angleterre}{2}} child {\gainpremier{8-8}{Canada}{1}{Suisse}{0}} } } ; \begin{pgfonlayer}{background} \node[inner sep=.2em,fit=(8-1)(8-2)(8-3)(8-4)(8-5)(8-6)(8-7)(8-8)] (huitieme){}; \node[inner sep=.2em,fit=(4-1)(4-2)(4-3)(4-4)](quart){}; \node[inner sep=.2em,fit=(2-1)(2-2)](demi){}; \node[inner sep=.2em,fit=(1-1)](finale){}; \node[inner sep=0,fit=(huitieme)(quart)(demi)(finale)](global){}; \foreach \niveau/\couleur in { huitieme/cyan!10, quart/orange!10, demi/yellow!20, finale/red!10% }{ \fill[fill=\couleur] (\niveau.west |- global.south) rectangle (\niveau.east |- global.north); } \path (huitieme |- global.north) node[label]{Huitièmes de finale} (quart |- global.north) node[label]{Quarts de finale} (demi |- global.north) node[label]{Demi-finales} (finale |- global.north) node[label]{Finale} ; \end{pgfonlayer} \end{tikzpicture} \end{document} Troisième proposition === Ici, afin d'aligner les noms des pays à gauche et les scores à droite et pour garantir un alignement globale, on fixe la largeur de la matrice contenant un match en fixant la largeur de chacune des deux colonnes (merci à @touhami pour cette suggestion). On ajoute aussi la petite finale (qui ne fait pas partie de l'arbre des matches), en la positionnant à l'intersection du dernier match des huitièmes de finale (8-8) et de la finale (1-1) d'où l'utilisation de `(8-8 -| 1-1)` (`-`: intersection horizontale, `|`: intersection verticale). On ajoute le titre (le `label`) "petite finale" avec un code similaire à celui permettant de placer les titres des colonnes. ![tableau][3] \documentclass[tikz]{standalone} \usepackage[utf8]{inputenc} \usepackage{lmodern} \usepackage[T1]{fontenc} \usetikzlibrary{matrix,calc,backgrounds,fit} \colorlet{gain}{black} \colorlet{perdant}{red!50!black} \def\gainpremier#1#2#3#4#5{ node[match,name=#1] { \textcolor{gain}{\textbf{#2}} \& \textcolor{gain}{#3} \\ \textcolor{perdant}{#4} \& \textcolor{perdant}{#5} \\ } } \def\gainsecond#1#2#3#4#5{ node[match,name=#1] { \textcolor{perdant}{#2} \& \textcolor{perdant}{#3} \\ \textcolor{gain}{\textbf{#4}} \& \textcolor{gain}{#5} \\ } } \begin{document} \begin{tikzpicture} \tikzset{ label/.style={text depth=.2em,font=\itshape\scriptsize,anchor=south}, match/.style={ matrix,matrix of nodes,ampersand replacement=\&, inner sep=.2em,nodes={inner sep=.1em,text height=.7em,text depth=.1em}, column 1/.style={text width=6em,align=left}, column 2/.style={text width=1.5em,align=right} }, grow=left, level distance=10.5em, level 1/.style={sibling distance=12em}, level 2/.style={sibling distance=6em}, level 3/.style={sibling distance=3em}, edge from parent path={ (\tikzparentnode.west) -| ($(\tikzparentnode)!.5!(\tikzchildnode)$) |- (\tikzchildnode.east) }, } \path \gainpremier{1-1}{États-Unis}{5}{Japon}{2} child {\gainpremier{2-1}{États-Unis}{2}{Allemagne}{1} child {\gainsecond{4-1}{Chine}{0}{États-Unis}{1} child {\gainpremier{8-1}{Chine}{1}{Cameroun}{0}} child {\gainpremier{8-2}{États-Unis}{2}{Colombie}{0}} } child {\gainpremier{4-2}{Allemagne}{1(5)}{France}{1(4)} child {\gainpremier{8-3}{Allemagne}{4}{Suède}{1}} child {\gainpremier{8-4}{France}{3}{Corée du Sud}{0}} } } child {\gainpremier{2-2}{Japon}{2}{Angleterre}{1} child {\gainsecond{4-3}{Australie}{0}{Japon}{1} child {\gainsecond{8-5}{Brésil}{0}{Australie}{1}} child {\gainpremier{8-6}{Japon}{2}{Pays-Bas}{1}} } child {\gainpremier{4-4}{Angleterre}{2}{Canada}{1} child {\gainsecond{8-7}{Norvège}{1}{Angleterre}{2}} child {\gainpremier{8-8}{Canada}{1}{Suisse}{0}} } } ; \path (8-8 -| 1-1) \gainpremier{pf}{Allemagne}{2}{Angleterre}{1}; \begin{pgfonlayer}{background} \node[inner sep=.2em,fit=(8-1)(8-2)(8-3)(8-4)(8-5)(8-6)(8-7)(8-8)] (huitieme){}; \node[inner sep=.2em,fit=(4-1)(4-2)(4-3)(4-4)](quart){}; \node[inner sep=.2em,fit=(2-1)(2-2)](demi){}; \node[inner sep=.2em,fit=(1-1)](finale){}; \node[inner sep=0,fit=(huitieme)(quart)(demi)(finale)](global){}; \foreach \niveau/\couleur in { huitieme/cyan!10, quart/orange!10, demi/yellow!20, finale/red!10% }{ \fill[fill=\couleur] (\niveau.west |- global.south) rectangle (\niveau.east |- global.north); } \path (huitieme |- global.north) node[label]{Huitièmes de finale} (quart |- global.north) node[label]{Quarts de finale} (demi |- global.north) node[label]{Demi-finales} (finale |- global.north) node[label]{Finale} (pf.north) node[label]{Petite Finale} ; \end{pgfonlayer} \end{tikzpicture} \end{document} [1]: http://texnique.fr:80/osqa/upfiles/tikz-championnat-p-1_Pwvj5DL.png /osqa/upfiles/tikz-championnat-p-1_Pwvj5DL.png [2]: http://texnique.fr:80/osqa/upfiles/tikz-championnat-p-1_AwnSwf2.png /osqa/upfiles/tikz-championnat-p-1_AwnSwf2.png [3]: http://texnique.fr:80/osqa/upfiles/tikz-championnat-p-1-r.png /osqa/upfiles/tikz-championnat-p-1-r.png
cliquez ici pour masquer/afficher la révision 6
alt text (edit test)

05 Jan '17, 14:03

stefan's gravatar image

stefan
10618

Voici une solution utilisant les arbres de TikZ. Mais il faut encore fournir toutes les données de chaque match... ![alt text][1] ![tableau][1] \documentclass[tikz]{standalone} \usepackage[utf8]{inputenc} \usepackage{lmodern} \usepackage[T1]{fontenc} \usetikzlibrary{matrix,calc} \colorlet{gain}{black} \colorlet{perdant}{gray!50!black} \def\gainpremier#1#2#3#4{ node[match] { \textcolor{gain}{\textbf{#1}} \& \textcolor{gain}{#2} \\ \textcolor{perdant}{#3} \& \textcolor{perdant}{#4} \\ } } \def\gainsecond#1#2#3#4{ node[match] { \textcolor{perdant}{#1} \& \textcolor{perdant}{#2} \\ \textcolor{gain}{\textbf{#3}} \& \textcolor{gain}{#4} \\ } } \begin{document} \begin{tikzpicture} \tikzset{ match/.style={ matrix,matrix of nodes,ampersand replacement=\&, inner sep=0,nodes={inner sep=.2em,text height=.7em,text depth=.1em} }, grow=left, level distance=10em, level 1/.style={sibling distance=12em}, level 2/.style={sibling distance=6em}, level 3/.style={sibling distance=3em}, edge from parent path={ (\tikzparentnode.west) -| ($(\tikzparentnode)!.5!(\tikzchildnode)$) |- (\tikzchildnode.east) }, } \path \gainpremier{États-Unis}{5}{Japon}{2} child {\gainpremier{États-Unis}{2}{Allemagne}{0} child {\gainsecond{Chine}{0}{États-Unis}{1} child {\gainpremier{Chine}{1}{Cameroun}{0}} child {\gainpremier{États-Unis}{2}{Colombie}{0}} } child {\gainpremier{Allemagne}{1(5)}{France}{1(4)} child {\gainpremier{Allemagne}{4}{Suède}{1}} child {\gainpremier{France}{3}{Corée du Sud}{0}} } } child {\gainpremier{Japon}{2}{Angleterre}{1} child {\gainsecond{Australie}{0}{Japon}{1} child {\gainsecond{Brésil}{0}{Australie}{1}} child {\gainpremier{Japon}{2}{Pays-Bas}{1}} } child {\gainpremier{Angleterre}{2}{Canada}{1} child {\gainsecond{Norvège}{1}{Angleterre}{2}} child {\gainpremier{Canada}{1}{Suisse}{0}} } } ; \end{tikzpicture} \end{document} Seconde proposition === Voici une amélioration du code précédent permettant l'ajout d'un titre et d'un fond coloré pour chaque colonne. ![alt text][2] ![tableau][2] \documentclass[tikz]{standalone} \usepackage[utf8]{inputenc} \usepackage{lmodern} \usepackage[T1]{fontenc} \usetikzlibrary{matrix,calc,backgrounds,fit} \colorlet{gain}{black} \colorlet{perdant}{gray!50!black} \def\gainpremier#1#2#3#4#5{ node[match,name=#1] { \textcolor{gain}{\textbf{#2}} \& \textcolor{gain}{#3} \\ \textcolor{perdant}{#4} \& \textcolor{perdant}{#5} \\ } } \def\gainsecond#1#2#3#4#5{ node[match,name=#1] { \textcolor{perdant}{#2} \& \textcolor{perdant}{#3} \\ \textcolor{gain}{\textbf{#4}} \& \textcolor{gain}{#5} \\ } } \begin{document} \begin{tikzpicture} \tikzset{ label/.style={text depth=.2em,font=\itshape\scriptsize,anchor=south}, match/.style={ matrix,matrix of nodes,ampersand replacement=\&, inner sep=0,nodes={inner sep=.2em,text height=.7em,text depth=.1em} }, grow=left, level distance=10em, level 1/.style={sibling distance=12em}, level 2/.style={sibling distance=6em}, level 3/.style={sibling distance=3em}, edge from parent path={ (\tikzparentnode.west) -| ($(\tikzparentnode)!.5!(\tikzchildnode)$) |- (\tikzchildnode.east) }, } \path \gainpremier{1-1}{États-Unis}{5}{Japon}{2} child {\gainpremier{2-1}{États-Unis}{2}{Allemagne}{0} child {\gainsecond{4-1}{Chine}{0}{États-Unis}{1} child {\gainpremier{8-1}{Chine}{1}{Cameroun}{0}} child {\gainpremier{8-2}{États-Unis}{2}{Colombie}{0}} } child {\gainpremier{4-2}{Allemagne}{1(5)}{France}{1(4)} child {\gainpremier{8-3}{Allemagne}{4}{Suède}{1}} child {\gainpremier{8-4}{France}{3}{Corée du Sud}{0}} } } child {\gainpremier{2-2}{Japon}{2}{Angleterre}{1} child {\gainsecond{4-3}{Australie}{0}{Japon}{1} child {\gainsecond{8-5}{Brésil}{0}{Australie}{1}} child {\gainpremier{8-6}{Japon}{2}{Pays-Bas}{1}} } child {\gainpremier{4-4}{Angleterre}{2}{Canada}{1} child {\gainsecond{8-7}{Norvège}{1}{Angleterre}{2}} child {\gainpremier{8-8}{Canada}{1}{Suisse}{0}} } } ; \begin{pgfonlayer}{background} \node[inner sep=.2em,fit=(8-1)(8-2)(8-3)(8-4)(8-5)(8-6)(8-7)(8-8)] (huitieme){}; \node[inner sep=.2em,fit=(4-1)(4-2)(4-3)(4-4)](quart){}; \node[inner sep=.2em,fit=(2-1)(2-2)](demi){}; \node[inner sep=.2em,fit=(1-1)](finale){}; \node[inner sep=0,fit=(huitieme)(quart)(demi)(finale)](global){}; \foreach \niveau/\couleur in { huitieme/cyan!10, quart/orange!10, demi/yellow!20, finale/red!10% }{ \fill[fill=\couleur] (\niveau.west |- global.south) rectangle (\niveau.east |- global.north); } \path (huitieme |- global.north) node[label]{Huitièmes de finale} (quart |- global.north) node[label]{Quarts de finale} (demi |- global.north) node[label]{Demi-finales} (finale |- global.north) node[label]{Finale} ; \end{pgfonlayer} \end{tikzpicture} \end{document} Troisième proposition === Ici, afin d'aligner les noms des pays à gauche et les scores à droite et pour garantir un alignement globale, on fixe la largeur de la matrice contenant un match en fixant la largeur de chacune des deux colonnes (merci à @touhami pour cette suggestion). On ajoute aussi la petite finale (qui ne fait pas partie de l'arbre des matches), en la positionnant à l'intersection du dernier match des huitièmes de finale (8-8) et de la finale (1-1) d'où l'utilisation de `(8-8 -| 1-1)` (`-`: intersection horizontale, `|`: intersection verticale). On ajoute le titre (le `label`) "petite finale" avec un code similaire à celui permettant de placer les titres des colonnes. ![alt text][3] ![tableau][3] \documentclass[tikz]{standalone} \usepackage[utf8]{inputenc} \usepackage{lmodern} \usepackage[T1]{fontenc} \usetikzlibrary{matrix,calc,backgrounds,fit} \colorlet{gain}{black} \colorlet{perdant}{red!50!black} \def\gainpremier#1#2#3#4#5{ node[match,name=#1] { \textcolor{gain}{\textbf{#2}} \& \textcolor{gain}{#3} \\ \textcolor{perdant}{#4} \& \textcolor{perdant}{#5} \\ } } \def\gainsecond#1#2#3#4#5{ node[match,name=#1] { \textcolor{perdant}{#2} \& \textcolor{perdant}{#3} \\ \textcolor{gain}{\textbf{#4}} \& \textcolor{gain}{#5} \\ } } \begin{document} \begin{tikzpicture} \tikzset{ label/.style={text depth=.2em,font=\itshape\scriptsize,anchor=south}, match/.style={ matrix,matrix of nodes,ampersand replacement=\&, inner sep=.2em,nodes={inner sep=.1em,text height=.7em,text depth=.1em}, column 1/.style={text width=6em,align=left}, column 2/.style={text width=1.5em,align=right} }, grow=left, level distance=10.5em, level 1/.style={sibling distance=12em}, level 2/.style={sibling distance=6em}, level 3/.style={sibling distance=3em}, edge from parent path={ (\tikzparentnode.west) -| ($(\tikzparentnode)!.5!(\tikzchildnode)$) |- (\tikzchildnode.east) }, } \path \gainpremier{1-1}{États-Unis}{5}{Japon}{2} child {\gainpremier{2-1}{États-Unis}{2}{Allemagne}{1} child {\gainsecond{4-1}{Chine}{0}{États-Unis}{1} child {\gainpremier{8-1}{Chine}{1}{Cameroun}{0}} child {\gainpremier{8-2}{États-Unis}{2}{Colombie}{0}} } child {\gainpremier{4-2}{Allemagne}{1(5)}{France}{1(4)} child {\gainpremier{8-3}{Allemagne}{4}{Suède}{1}} child {\gainpremier{8-4}{France}{3}{Corée du Sud}{0}} } } child {\gainpremier{2-2}{Japon}{2}{Angleterre}{1} child {\gainsecond{4-3}{Australie}{0}{Japon}{1} child {\gainsecond{8-5}{Brésil}{0}{Australie}{1}} child {\gainpremier{8-6}{Japon}{2}{Pays-Bas}{1}} } child {\gainpremier{4-4}{Angleterre}{2}{Canada}{1} child {\gainsecond{8-7}{Norvège}{1}{Angleterre}{2}} child {\gainpremier{8-8}{Canada}{1}{Suisse}{0}} } } ; \path (8-8 -| 1-1) \gainpremier{pf}{Allemagne}{2}{Angleterre}{1}; \begin{pgfonlayer}{background} \node[inner sep=.2em,fit=(8-1)(8-2)(8-3)(8-4)(8-5)(8-6)(8-7)(8-8)] (huitieme){}; \node[inner sep=.2em,fit=(4-1)(4-2)(4-3)(4-4)](quart){}; \node[inner sep=.2em,fit=(2-1)(2-2)](demi){}; \node[inner sep=.2em,fit=(1-1)](finale){}; \node[inner sep=0,fit=(huitieme)(quart)(demi)(finale)](global){}; \foreach \niveau/\couleur in { huitieme/cyan!10, quart/orange!10, demi/yellow!20, finale/red!10% }{ \fill[fill=\couleur] (\niveau.west |- global.south) rectangle (\niveau.east |- global.north); } \path (huitieme |- global.north) node[label]{Huitièmes de finale} (quart |- global.north) node[label]{Quarts de finale} (demi |- global.north) node[label]{Demi-finales} (finale |- global.north) node[label]{Finale} (pf.north) node[label]{Petite Finale} ; \end{pgfonlayer} \end{tikzpicture} \end{document} [1]: http://texnique.fr:80/osqa/upfiles/tikz-championnat-p-1_Pwvj5DL.png [2]: http://texnique.fr:80/osqa/upfiles/tikz-championnat-p-1_AwnSwf2.png [3]: http://texnique.fr:80/osqa/upfiles/tikz-championnat-p-1-r.png
cliquez ici pour masquer/afficher la révision 5

08 Nov '16, 09:39

Paul%20Gaborit's gravatar image

Paul Gaborit
2.0k16

cliquez ici pour masquer/afficher la révision 4

05 Sep '15, 21:15

Paul%20Gaborit's gravatar image

Paul Gaborit
2.0k16

cliquez ici pour masquer/afficher la révision 3

05 Sep '15, 21:15

Paul%20Gaborit's gravatar image

Paul Gaborit
2.0k16

cliquez ici pour masquer/afficher la révision 2
meilleure version

05 Sep '15, 20:47

Paul%20Gaborit's gravatar image

Paul Gaborit
2.0k16

cliquez ici pour masquer/afficher la révision 1

05 Sep '15, 17:15

Paul%20Gaborit's gravatar image

Paul Gaborit
2.0k16

C'est votre première visite ici ? Consultez la FAQ !

×