From 2fa69371e59a0de5fceeede260cb87c85043ec54 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 21 Jan 2021 22:11:01 +0000 Subject: tkz-graph (21jan21) git-svn-id: svn://tug.org/texlive/trunk@57484 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/tkz-graph/README.md | 62 ++ .../tkz-graph/doc/latex/TKZdoc-gr-Dijkstra.tex | 152 +++ .../latex/tkz-graph/doc/latex/TKZdoc-gr-Welsh.tex | 246 +++++ .../tkz-graph/doc/latex/TKZdoc-gr-annales.tex | 1164 ++++++++++++++++++++ .../tkz-graph/doc/latex/TKZdoc-gr-couverture.tex | 31 + .../latex/tkz-graph/doc/latex/TKZdoc-gr-edge.tex | 116 ++ .../latex/tkz-graph/doc/latex/TKZdoc-gr-label.tex | 125 +++ .../latex/tkz-graph/doc/latex/TKZdoc-gr-main.tex | 237 ++++ .../tkz-graph/doc/latex/TKZdoc-gr-presentation.tex | 206 ++++ .../latex/tkz-graph/doc/latex/TKZdoc-gr-prob.tex | 147 +++ .../latex/tkz-graph/doc/latex/TKZdoc-gr-style.tex | 848 ++++++++++++++ .../latex/tkz-graph/doc/latex/TKZdoc-gr-vertex.tex | 242 ++++ .../tkz-graph/doc/latex/TKZdoc-gr-vertices.tex | 172 +++ .../texmf-dist/doc/latex/tkz-graph/test-graph.pdf | Bin 0 -> 1904 bytes .../texmf-dist/doc/latex/tkz-graph/test-graph.tex | 12 + .../doc/latex/tkz-graph/tkz-graph-screen.pdf | Bin 0 -> 310954 bytes .../texmf-dist/tex/latex/tkz-graph/tkz-graph.sty | 1026 +++++++++++++++++ Master/tlpkg/bin/tlpkg-ctan-check | 2 +- Master/tlpkg/libexec/ctan2tds | 3 +- Master/tlpkg/tlpsrc/collection-pictures.tlpsrc | 1 + Master/tlpkg/tlpsrc/tkz-graph.tlpsrc | 0 21 files changed, 4789 insertions(+), 3 deletions(-) create mode 100644 Master/texmf-dist/doc/latex/tkz-graph/README.md create mode 100644 Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-Dijkstra.tex create mode 100644 Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-Welsh.tex create mode 100644 Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-annales.tex create mode 100644 Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-couverture.tex create mode 100644 Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-edge.tex create mode 100644 Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-label.tex create mode 100644 Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-main.tex create mode 100644 Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-presentation.tex create mode 100644 Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-prob.tex create mode 100644 Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-style.tex create mode 100644 Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-vertex.tex create mode 100644 Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-vertices.tex create mode 100644 Master/texmf-dist/doc/latex/tkz-graph/test-graph.pdf create mode 100644 Master/texmf-dist/doc/latex/tkz-graph/test-graph.tex create mode 100644 Master/texmf-dist/doc/latex/tkz-graph/tkz-graph-screen.pdf create mode 100644 Master/texmf-dist/tex/latex/tkz-graph/tkz-graph.sty create mode 100644 Master/tlpkg/tlpsrc/tkz-graph.tlpsrc diff --git a/Master/texmf-dist/doc/latex/tkz-graph/README.md b/Master/texmf-dist/doc/latex/tkz-graph/README.md new file mode 100644 index 00000000000..a889549c2fc --- /dev/null +++ b/Master/texmf-dist/doc/latex/tkz-graph/README.md @@ -0,0 +1,62 @@ +# tkz-graph — for graph theory + +Release 2.0 2021/01/20 + +## Description + +The package tkz-graph.sty is a collection of some useful macros if you want to + draw manually a graph of the graph theory. The kind of graphs that I will + present, are sometimes called combinatorial graphs to distinguish them from + the graphs of functions. The macros are designed to give math + teachers (and students) easy access at the programmation of drawing graphs + with TikZ. I therefore hope that my packages provide ideal tools for + teachers wanting to offer their students fine documents of maths. + +## Licence + +The scontents package may be modified and distributed under the terms and +conditions of the [LaTeX Project Public License](https://www.latex-project.org/lppl/), version 1.3c or greater. + + +## Requirements + +The package compiles with utf8, pdflatex and lualatex, loads and depends on updated versions of: +- [tikz](https://ctan.org/pkg/tikz) + +## Installation + +The package `tkz-graph` is present in TeXLive and MiKTeX, use the package +manager to install. + +You can experiment with the `tkz-graph` package by placing all of the +distribution files in the directory containing your current tex file. + + +## How to use it + +To use the package `tkz-graph`, place the following line in the preamble of +your LaTeX document: + +``` +\usepackage{tkz-graph} +``` + +## Documentation + +Documentation for `tkz-graph` is available on `CTAN`. + +## Examples + +All examples given in documentation will be stored on `CTAN` as standalone +files, ready for compilation. + +Other examples, in french, are on my site: [http://altermundus.fr](http://altermundus.fr) + +## History + +- 2.00 correction of bugs and new documentation +- 1.00 first version + +## Author + +Alain Matthes, 5 rue de Valence, Paris 75005, al (dot) ma (at) mac (dot) com diff --git a/Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-Dijkstra.tex b/Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-Dijkstra.tex new file mode 100644 index 00000000000..7f8b81d08b4 --- /dev/null +++ b/Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-Dijkstra.tex @@ -0,0 +1,152 @@ +\section{Dijkstra} + +{\large Algorithme de Dijkstra :} Plus courte chaîne du sommet $E$ au sommet $S$. + +\medskip + +\subsection{Dijkstra exemple 1} + +\medskip +\begin{center} +\begin{tkzexample}[vbox] +\begin{tikzpicture} + \GraphInit[vstyle=Dijkstra] + \SetGraphUnit{4} + \Vertices{square}{B,C,D,A} + \SetGraphUnit{2.82} + \NOWE(B){E} + \NOEA(C){S} + \Edge[label=$3$](E)(A) + \Edge[label=$1$](E)(B) + \Edge[label=$1$](A)(B) + \Edge[label=$3$](B)(C) + \Edge[label=$3$,style={pos=.25}](A)(C) + \Edge[label=$5$,style={pos=.75}](B)(D) + \Edge[label=$4$](A)(D) + \Edge[label=$1$](S)(D) + \Edge[label=$3$](C)(S) + \Edge[label=$1$](C)(D) +\end{tikzpicture} +\end{tkzexample} +\end{center} + + + +\def\ry{$\vrule width 5pt$} +\def\iy{$\infty$} + +%<–––––––––––––––––——————————————————————————————————————————————————————————> +\vbox{\tabskip=0pt \offinterlineskip +\def\tablerule{\noalign{\hskip\tabskip\hrule}} +\halign to \hsize{\strut#&\vrule # \tabskip=0.6em plus8em& +\hfil#\hfil& \vrule#& +\hfil#\hfil& \vrule#& +\hfil#\hfil& \vrule#& +\hfil#\hfil& \vrule#& +\hfil#\hfil& \vrule#& +\hfil#\hfil& \vrule#& +\hfil#\hfil& \vrule#\tabskip=0pt\cr\tablerule +&& $E$ && $A$ && $B$ && $C$ && $D$ && $S$ && Choix &\cr\tablerule +&& $0$ && \iy && \iy && \iy && \iy && \iy && $E$ &\cr\tablerule +&& \ry && $3(E)$ && $1(E)$ && \iy && \iy && \iy && $B$ &\cr\tablerule +&& \ry && $2(B)$ && \ry && $4(B)$ && $6(B)$ && \iy && $A$ &\cr\tablerule +&& \ry && \ry && \ry && $4(B)$ && $6(B)$ && \iy && $C$ &\cr\tablerule +&& \ry && \ry && \ry && \ry && $5(C)$ && $7(C)$ && $D$ &\cr\tablerule +&& \ry && \ry && \ry && \ry && \ry && $6(D)$ && $S$ &\cr\tablerule}} +%<–––––––––––––––––——————————————————————————————————————————————————————————> + +\medskip + +Le plus court chemin est donc $EBCDS$ + +\vfill\newpage +\subsection{Dijkstra exemple 2} + +\medskip +\begin{center} +\begin{tkzexample}[vbox] +\begin{tikzpicture} + \GraphInit[vstyle=Dijkstra] + \SetGraphUnit{4} + \Vertices{square}{G,D,A,F} + \WE(F){H} + \EA(A){B} + \EA(D){C} + \NO(A){E} + \Edge[label=$1$](H)(F) + \Edge[label=$4$](G)(F) + \Edge[label=$2$](H)(G) + \Edge[label=$2$](G)(D) + \Edge[label=$3$](D)(C) + \Edge[label=$4$](F)(E) + \Edge[label=$3$](A)(D) + \Edge[label=$2$](A)(E) + \Edge[label=$1$](A)(B) + \Edge[label=$2$](A)(C) + \Edge[label=$2$](C)(B) + \Edge[label=$3$](E)(B) +\end{tikzpicture} +\end{tkzexample} +\end{center} +%<–––––––––––––––––——————————————————————————————————————————————————————————> +\vbox{\tabskip=0pt \offinterlineskip +\def\tablerule{\noalign{\hskip\tabskip\hrule}} +\halign to \hsize{\strut#&\vrule # \tabskip=0.6em plus8em& +\hfil#\hfil& \vrule#& +\hfil#\hfil& \vrule#& +\hfil#\hfil& \vrule#& +\hfil#\hfil& \vrule#& +\hfil#\hfil& \vrule#& +\hfil#\hfil& \vrule#& +\hfil#\hfil& \vrule#& +\hfil#\hfil& \vrule#& +\hfil#\hfil& \vrule#\tabskip=0pt\cr\tablerule +&& $H$ && $F$ && $G$ && $E$ && $D$ && $A$ && $C$ && $B$ && Choix &\cr\tablerule +&& $0$ && \iy && \iy && \iy && \iy && \iy && \iy && \iy && $H$ &\cr\tablerule +&& \ry && $1(H)$ && $2(H)$ && \iy && \iy && \iy && \iy && \iy && $F$ &\cr\tablerule +&& \ry && \ry && $2(H)$ && $5(F)$ && \iy && \iy && \iy && \iy && $G$ &\cr\tablerule +&& \ry && \ry && \ry && $5(F)$ && $4(G)$ && \iy && \iy && \iy && $D$ &\cr\tablerule +&& \ry && \ry && \ry && $5(F)$ && \ry && $7(D)$ && $7(D)$ && \iy && $E$ &\cr\tablerule +&& \ry && \ry && \ry && \ry && \ry && $7(D)$ && $7(D)$ && $8(E)$ && $A$ &\cr\tablerule +&& \ry && \ry && \ry && \ry && \ry && \ry && $7(D)$ && $8(E)$ && $C$ &\cr\tablerule +&& \ry && \ry && \ry && \ry && \ry && \ry && \ry && $8(E)$ && $B$ &\cr\tablerule}} +%<–––––––––––––––––——————————————————————————————————————————————————————————> + +Le plus court chemin est donc $HFEB$ + +\begin{tkzexample}[code only] +\def\ry{$\vrule width 5pt$} +\def\iy{$\infty$} +\vbox{\tabskip=0pt \offinterlineskip +\def\tablerule{\noalign{\hskip\tabskip\hrule}} +\halign to \hsize{\strut#&\vrule # \tabskip=0.6em plus8em& +\hfil#\hfil& \vrule#& +\hfil#\hfil& \vrule#& +\hfil#\hfil& \vrule#& +\hfil#\hfil& \vrule#& +\hfil#\hfil& \vrule#& +\hfil#\hfil& \vrule#& +\hfil#\hfil& \vrule#& +\hfil#\hfil& \vrule#& +\hfil#\hfil& \vrule#\tabskip=0pt\cr\tablerule +&& $H$ && $F$ && $G$ && $E$ && $D$ && $A$ && $C$ && $B$% +&& Choix &\cr\tablerule +&& $0$ && \iy && \iy && \iy && \iy && \iy && \iy && \iy% +&& $H$ &\cr\tablerule +&& \ry && $1(H)$ && $2(H)$ && \iy && \iy && \iy && \iy && \iy% +&& $F$ &\cr\tablerule +&& \ry && \ry && $2(H)$ && $5(F)$ && \iy && \iy && \iy && \iy% +&& $G$ &\cr\tablerule +&& \ry && \ry && \ry && $5(F)$ && $4(G)$ && \iy && \iy && \iy% +&& $D$ &\cr\tablerule +&& \ry && \ry && \ry && $5(F)$ && \ry && $7(D)$ && $7(D)$ && \iy% +&& $E$ &\cr\tablerule +&& \ry && \ry && \ry && \ry && \ry && $7(D)$ && $7(D)$ && $8(E)$% +&& $A$ &\cr\tablerule +&& \ry && \ry && \ry && \ry && \ry && \ry && $7(D)$ && $8(E)$% +&& $C$ &\cr\tablerule +&& \ry && \ry && \ry && \ry && \ry && \ry && \ry && $8(E)$% +&& $B$ &\cr\tablerule}} +\end{tkzexample} + +\endinput \ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-Welsh.tex b/Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-Welsh.tex new file mode 100644 index 00000000000..842b22c8b1e --- /dev/null +++ b/Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-Welsh.tex @@ -0,0 +1,246 @@ +\section{Colorisation Welsh} +%<–––––––––––––––––––––––––– graphs with colors ––––––––––––––––––––––––––—––> +Ce chapitre montre comment colorer des sommets. Le plus simple est d'utiliser le style \tkzname{Welsh} et la macro \tkzcname{AddVertexColor} afin de colorer les sommets. + +\subsection{La macro \tkzcname{AddVertexColor} } + +\begin{NewMacroBox}{AddVertexColor}{\var{color}\var{List of vertices}} + +\medskip +\emph{Cette macro permet de colorer des sommets. Le premier argument est la couleur, le second une liste de sommets.} +\end{NewMacroBox} + +\subsection{Exemple d'utilisation } + +\medskip +Une compagnie aérienne propose des vols directs entre certaines villes, notées A, B, C, D, E, F et G. Cela conduit au graphe $\mathcal{G}$ suivant, dont les sommets sont les villes et les arêtes représentent les liaisons aériennes : + + \begin{center} +\begin{tikzpicture} +\renewcommand*{\VertexLineWidth}{2pt} + \GraphInit[vstyle=Welsh] + \Vertices[unit=3]{circle}{A,B,C,D,E,F,G} + \Edges(G,E,F,G,B,D,E,C,D,A,C,B,A) \Edges(B,E) +\end{tikzpicture} +\end{center} + +\begin{enumerate} + +\item Sur les cartes d'embarquement, la compagnie attribue à chaque aéroport une couleur, de sorte que deux aéroports liés par un vol direct aient des couleurs différentes. + + Proposer un coloriage adapté‚ cette condition. +\item Que peut-on en déduire sur le nombre chromatique de $\mathcal{G}$ ? +\end{enumerate} + + + +\begin{center} +\begin{tkzltxexample}[] +\begin{tikzpicture} +\renewcommand*{\VertexLineWidth}{2pt} + \GraphInit[vstyle=Welsh] + \Vertices[unit=3]{circle}{A,B,C,D,E,F,G} + \Edges(G,E,F,G,B,D,E,C,D,A,C,B,A) \Edges(B,E) +\end{tikzpicture} +\end{tkzltxexample} +\end{center} + +\bigskip +\begin{minipage}{7cm} + \begin{tikzpicture} +\renewcommand*{\VertexLineWidth}{2pt} + \GraphInit[vstyle=Welsh] + \Vertices[unit=3]{circle}{A,B,C,D,E,F,G} + \Edges(G,E,F,G,B,D,E,C,D,A,C,B,A) \Edges(B,E) + \end{tikzpicture} +\end{minipage} +\hfill +\begin{minipage}{7cm} + \begin{tabular}{cc} + \hline + \itshape Sommet & \itshape Degré \\ + \hline + B & $5$ \\ + E & $5$ \\ + C & $4$ \\ + D & $4$ \\ + A & $3$ \\ + G & $3$ \\ + F & $2$ \\ + \hline + \end{tabular} +\end{minipage} + +\begin{tkzltxexample}[] + \begin{tikzpicture} +\renewcommand*{\VertexLineWidth}{2pt} + \GraphInit[vstyle=Welsh] + \Vertices[unit=3]{circle}{A,B,C,D,E,F,G} + \Edges(G,E,F,G,B,D,E,C,D,A,C,B,A) \Edges(B,E) +\end{tikzpicture} +\end{tkzltxexample} + +\bigskip +\begin{minipage}{7cm} + \begin{tikzpicture} + \renewcommand*{\VertexLineWidth}{2pt} + \GraphInit[vstyle=Welsh] + \Vertices[unit=3]{circle}{A,B,C,D,E,F,G} + \SetVertexNoLabel + \AddVertexColor{red}{B,F} + \Edges(G,E,F,G,B,D,E,C,D,A,C,B,A) \Edges(B,E) +\end{tikzpicture} +\end{minipage} +\hfill +\begin{minipage}{7cm} +\begin{tabular}{ccc} +\hline +\itshape Sommet & \itshape Degré & \itshape Couleur\\ +\hline +B & $5$ & rouge\\ +E & $5$ & \\ +C & $4$ & \\ +D & $4$ & \\ +A & $3$ & \\ +G & $3$ & \\ +F & $2$ & rouge\\ +\hline +\end{tabular} +\end{minipage} + +\begin{tkzltxexample}[] +\begin{tikzpicture} + \renewcommand*{\VertexLineWidth}{2pt} + \GraphInit[vstyle=Welsh] + \Vertices[unit=3]{circle}{A,B,C,D,E,F,G} + \SetVertexNoLabel + \AddVertexColor{red}{B,F} + \Edges(G,E,F,G,B,D,E,C,D,A,C,B,A) \Edges(B,E) +\end{tikzpicture} +\end{tkzltxexample} + +\bigskip +\begin{minipage}{7cm} + \begin{tikzpicture} + \renewcommand*{\VertexLineWidth}{2pt} + \GraphInit[vstyle=Welsh] + \Vertices[unit=3]{circle}{A,B,C,D,E,F,G} + \SetVertexNoLabel + \AddVertexColor{red}{B,F} \AddVertexColor{blue}{E,A} + \Edges(G,E,F,G,B,D,E,C,D,A,C,B,A) \Edges(B,E) +\end{tikzpicture} +\end{minipage} +\hfill +\begin{minipage}{7cm} +\begin{tabular}{ccc} +\hline +\itshape Sommet & \itshape Degré & \itshape Couleur\\ +\hline +B & $5$ & rouge\\ +E & $5$ & bleu\\ +C & $4$ & \\ +D & $4$ & \\ +A & $3$ & bleu\\ +G & $3$ & \\ +F & $2$ & rouge\\ +\hline +\end{tabular} +\end{minipage} + +\begin{tkzltxexample}[] +\begin{tikzpicture} + \renewcommand*{\VertexLineWidth}{2pt} + \GraphInit[vstyle=Welsh] + \Vertices[unit=3]{circle}{A,B,C,D,E,F,G} + \SetVertexNoLabel + \AddVertexColor{red}{B,F} + \AddVertexColor{blue}{E,A} + \Edges(G,E,F,G,B,D,E,C,D,A,C,B,A) + \Edges(B,E) +\end{tikzpicture} +\end{tkzltxexample} + +\bigskip +\begin{minipage}{7cm} +\begin{tikzpicture} + \renewcommand*{\VertexLineWidth}{2pt} + \GraphInit[vstyle=Welsh] + \Vertices[unit=3]{circle}{A,B,C,D,E,F,G} + \SetVertexNoLabel + \AddVertexColor{red}{B,F} \AddVertexColor{blue}{E,A} + \AddVertexColor{green}{C,G} + \Edges(G,E,F,G,B,D,E,C,D,A,C,B,A) \Edges(B,E) +\end{tikzpicture} +\end{minipage} +\hfill +\begin{minipage}{7cm} +\begin{tabular}{ccc} +\hline +\itshape Sommet & \itshape Degré & \itshape Couleur\\ +\hline +B & $5$ & rouge\\ +E & $5$ & bleu\\ +C & $4$ & vert\\ +D & $4$ & \\ +A & $3$ & bleu\\ +G & $3$ & vert\\ +F & $2$ & rouge\\ +\hline +\end{tabular} +\end{minipage} + +\begin{tkzltxexample}[] +\begin{tikzpicture} + \renewcommand*{\VertexLineWidth}{2pt} + \GraphInit[vstyle=Welsh] + \Vertices[unit=3]{circle}{A,B,C,D,E,F,G} + \SetVertexNoLabel + \AddVertexColor{red}{B,F} \AddVertexColor{blue}{E,A} + \AddVertexColor{green}{C,G} + \Vertex[Node]{D}} + \Edges(G,E,F,G,B,D,E,C,D,A,C,B,A) \Edges(B,E) +\end{tikzpicture} +\end{tkzltxexample} + +\bigskip +\begin{minipage}{7cm} +\begin{tikzpicture} + \renewcommand*{\VertexLineWidth}{2pt} + \GraphInit[vstyle=Welsh] + \Vertices[unit=3]{circle}{A,B,C,D,E,F,G} + \SetVertexNoLabel + \AddVertexColor{red}{B,F} \AddVertexColor{blue}{E,A} + \AddVertexColor{green}{C,G} \AddVertexColor{yellow}{D} + \Edges(G,E,F,G,B,D,E,C,D,A,C,B,A) \Edges(B,E) +\end{tikzpicture} +\end{minipage} +\hfill +\begin{minipage}{7cm} +\begin{tabular}{ccc} +\hline +\itshape Sommet & \itshape Degré & \itshape Couleur\\ +\hline +B & $5$ & rouge\\ +E & $5$ & bleu\\ +C & $4$ & vert\\ +D & $4$ & jaune\\ +A & $3$ & bleu\\ +G & $3$ & vert\\ +F & $2$ & rouge\\ +\hline +\end{tabular} +\end{minipage} + +\begin{tkzltxexample}[] + \begin{tikzpicture} + \renewcommand*{\VertexLineWidth}{2pt} + \GraphInit[vstyle=Welsh] + \Vertices[unit=3]{circle}{A,B,C,D,E,F,G} + \SetVertexNoLabel + \AddVertexColor{red}{B,F} \AddVertexColor{blue}{E,A} + \AddVertexColor{green}{C,G}\AddVertexColor{yellow}{D} + \Vertex[Node]{D}} + \Edges(G,E,F,G,B,D,E,C,D,A,C,B,A)\Edges(B,E) +\end{tikzpicture} +\end{tkzltxexample} +\endinput \ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-annales.tex b/Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-annales.tex new file mode 100644 index 00000000000..043a1cb5a60 --- /dev/null +++ b/Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-annales.tex @@ -0,0 +1,1164 @@ +\section{Annales.} +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +% Amérique du nord juin 2003 +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +\subsection{Amérique du nord juin 2003} + +Soit le graphe G joint en annexe constitué des sommets A, B, C, D, E, F et G. + +\begin{enumerate} +\item Quel est son ordre et le degré de chacun de ses sommets ? +\item Reproduire sur la copie et compléter le tableau des distances entre deux sommets de G : + +\medskip +\begin{center} +\begin{tabular}{|l|c|c|c|c|c|c|c|}\hline +Distance & A & B & C & D & E & F & G \\ \hline +A & X & & & & & & \\ \hline +B & X & X & & & & & \\ \hline +C & X & X & X & & & & \\ \hline +D & X & X & X & X & & & \\ \hline +E & X & X & X & X & X & & \\ \hline +F & X & X & X & X & X & X & \\ \hline +G & X & X & X & X & X & X & X \\ \hline +\end{tabular} +\end{center} + +\medskip +En déduire le diamètre de ce graphe. +\item + \begin{enumerate} + \item Donner un sous-graphe complet d'ordre 3 de G. + +Qu'en déduire pour le nombre chromatique de G ? + \item Proposer une coloration du graphe G et en déduire son nombre chromatique. + \end{enumerate} +\item Donner la matrice M associée à G (vous numéroterez les lignes et les colonnes dans l'ordre alphabétique). +\item En utilisant la matrice $ M_2$ donnée en annexe 1, déduire le nombre de chaînes de longueur 2 partant de A sans y revenir. +\end{enumerate} + +\medskip +\begin{minipage}[]{10cm} +\begin{tikzpicture} + \Vertex[x=1.3,y=3.8]{A} + \Vertex[x=4.2,y=5.5]{B} + \Vertex[x=7.3,y=4]{C} + \Vertex[x=8.5,y=1.5]{D} + \Vertex[x=5,y=0]{E} + \Vertex[x=3.6,y=4]{F} + \Vertex[x=0.7,y=1]{G} + \Edges(A,B,C,D,E,G,A,F,E,C) + \Edge(B)(F) +\end{tikzpicture} +\end{minipage} +\begin{minipage}[]{5cm} +M$^2 = +\begin{pmatrix} + 3 & 1 & 1 & 0 & 2 & 1 & 0\\ + 1 & 3 & 0 & 1 & 2 & 1 & 1\\ + 1 & 0 & 3 & 1 & 1 & 2 & 1\\ + 0 & 1 & 1 & 2 & 1 & 1 & 1\\ + 2 & 2 & 1 & 1 & 4 & 0 & 0\\ + 1 & 1 & 2 & 1 & 0 & 3 & 2\\ + 0 & 1 & 1 & 1 & 0 & 2 & 2\\ +\end{pmatrix}$ +\end{minipage} + +\medskip +\begin{tkzexample}[code only] +\begin{tikzpicture} + \Vertex[x=1.3,y=3.8]{A} \Vertex[x=4.2,y=5.5]{B} + \Vertex[x=7.3,y=4]{C} \Vertex[x=8.5,y=1.5]{D} + \Vertex[x=5,y=0]{E} \Vertex[x=3.6,y=4]{F} + \Vertex[x=0.7,y=1]{G} + \Edges(A,B,C,D,E,G,A,F,E,C) \Edge(B)(F) +\end{tikzpicture} +\end{tkzexample} + +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +\vfill\newpage +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +% Antilles-Guyane juin 2003 +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +\subsection{Antilles-Guyane juin 2003 }\label{ag03} +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +\begin{enumerate} +\item Un musée est constitué de 9 salles notées A, B, C, D, E, F, G, H et S. + +Le plan du musée est représenté ci-dessous : + +\medskip +\begin{center} +\begin{tikzpicture} +\draw (0,0) rectangle (8,6); +\draw(2,0)--(2,0.7); +\draw(2,1.3)--(2,2.7); +\draw(2,3.3)--(2,4.7); +\draw(2,5.3)--(2,6); +\draw(4,0)--(4,0.7); +\draw(4,1.3)--(4,2.7); +\draw(4,3.3)--(4,4.7); +\draw(4,5.3)--(4,6); +\draw(6,0)--(6,0.7); +\draw(6,1.3)--(6,2.7); +\draw(6,3.3)--(6,4.7); +\draw(6,5.3)--(6,6); +\draw(2,5.3)--(2,6); +\draw(4,5.3)--(4,6); +\draw(6,5.3)--(6,6); +\draw(2,2)--(2.7,2); +\draw(3.3,2)--(4.7,2); +\draw(5.3,2)--(6,2); +\draw(2,4)--(2.7,4); +\draw(3.3,4)--(4.7,4); +\draw(5.3,4)--(8,4); +\node at (1,3){S}; +\node at (3,3){G}; +\node at (3,1){D}; +\node at (3,5){A}; +\node at (5,1){H}; +\node at (5,3){E}; +\node at (5,5){B}; +\node at (7,2){F}; +\node at (7,5){C}; +\end{tikzpicture} +\end{center} + +\medskip +Ainsi, un visiteur qui se trouve dans la salle S peut atteindre directement les salles A, B ou G. S'il se trouve dans la salle C, il peut se rendre directement dans la salle B, mais pas dans la salle F. + +On s'intéresse au parcours d'un visiteur dans ce musée. On ne se préoccupe pas de la manière dont le visiteur accède au musée ni comment il en sort. Cette situation peut être modélisée par un graphe, les sommets étant les noms des salles, les arêtes représentant les portes de communication. + + \begin{enumerate} + \item Dessiner un graphe modélisant la situation décrite. + \item Est-il possible de visiter le musée, en empruntant chaque porte une fois et une seule ? + +Justifier en utilisant un théorème du cours sur les graphes. +\item Pour rompre une éventuelle monotonie, le conservateur du musée souhaite différencier chaque salle de sa ou des salles voisines (c'est-à-dire accessibles par une porte) par la moquette posée au sol. Quel est le nombre minimum de types de moquettes nécessaires pour répondre à ce souhait ? Justifier. + \end{enumerate} +\item On note $M$ la matrice à 9 lignes et 9 colonnes associée au graphe précédent, en convenant de l'ordre suivant des salles S, A, B, C, D, E, F, G, H. Le graphe n'étant pas orienté, comment cela se traduit-il sur la matrice ? +\item On donne la matrice : + +\[M^4 = +\begin{pmatrix} +18 & 12 & 11 & 02 & 20 & 12 & 06 & 12 & 12\\ +12 & 20 & 03 & 06 & 11 & 20 & 05 & 18 & 05\\ +11 & 03 & 16 & 00 & 19 & 03 & 08 & 04 & 12\\ +02 & 06 & 00 & 03 & 01 & 07 & 01 & 04 & 01\\ +20 & 11 & 19 & 01 & 31 & 09 & 11 & 12 & 19\\ +12 & 20 & 03 & 07 & 09 & 28 & 09 & 20 & 09\\ +06 & 05 & 08 & 01 & 11 & 09 & 09 & 08 & 09\\ +12 & 18 & 04 & 04 & 12 & 20 & 08 & 20 & 06\\ +12 & 05 & 12 & 01 & 19 & 09 & 09 & 06 & 17\\ +\end{pmatrix}\] + + \begin{enumerate} + \item Combien y-a-t-il de chemins qui en 4 étapes, partent de D et reviennent à D ? + \item Combien y-a-t-il de chemins qui en 4 étapes, partent de S et reviennent à C ? Les citer. + \item Est-il toujours possible de joindre en 4 étapes deux salles quelconques ? Justifier. + \end{enumerate} +\end{enumerate} + +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +\vfill\newpage +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +Code du graphe précédent, uniquement fait avec tikz sans tkz-berge + +\bigskip +\begin{tkzexample}[code only] +\begin{tikzpicture} + \draw (0,0) rectangle (8,6); + \draw(2,0)--(2,0.7); + \draw(2,1.3)--(2,2.7); + \draw(2,3.3)--(2,4.7); + \draw(2,5.3)--(2,6); + \draw(4,0)--(4,0.7); + \draw(4,1.3)--(4,2.7); + \draw(4,3.3)--(4,4.7); + \draw(4,5.3)--(4,6); + \draw(6,0)--(6,0.7); + \draw(6,1.3)--(6,2.7); + \draw(6,3.3)--(6,4.7); + \draw(6,5.3)--(6,6); + \draw(2,5.3)--(2,6); + \draw(4,5.3)--(4,6); + \draw(6,5.3)--(6,6); + \draw(2,2)--(2.7,2); + \draw(3.3,2)--(4.7,2); + \draw(5.3,2)--(6,2); + \draw(2,4)--(2.7,4); + \draw(3.3,4)--(4.7,4); + \draw(5.3,4)--(8,4); + \node at (1,3){S}; + \node at (3,3){G}; + \node at (3,1){D}; + \node at (3,5){H}; + \node at (5,1){H}; + \node at (5,3){E}; + \node at (5,5){B}; + \node at (7,2){F}; + \node at (7,5){C}; +\end{tikzpicture} +\end{tkzexample} + + +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +\vfill\newpage +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +% Asie juin 2003 +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +\subsection{Asie juin 2003 }\label{asj03} +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> + + +\bigskip +\begin{minipage}[l]{0,58\textwidth} +Dans la ville de GRAPHE, on s'intéresse aux principales rues permettant de relier différents lieux ouverts au public, à savoir la mairie (M), le centre commercial (C), la bibliothèque (B), la piscine (P) et le lycée (L). Chacun de ces lieux est désigné par son initiale. Le tableau ci-contre donne les rues existant entre ces lieux. +\end{minipage}\hfill +\begin{minipage}[]{0,38\textwidth} +\begin{center} + \begin{tabular}{|*{5}{c|} c|} \cline{2-6} + \multicolumn{1}{c|}{} + & B & C & L & M & P \\ \hline + B & & X & & X & X \\ \hline + C & X & & X & X & \\ \hline + L & & X & & X & \\ \hline + M & X & X & X & & X \\ \hline + P & X & & & X & \\ \hline + \end{tabular} +\end{center} +\end{minipage} + +\medskip +\begin{enumerate} +\item Dessiner un graphe représentant cette situation. +\item Montrer qu'il est possible de trouver un trajet empruntant une fois et une seule toutes les rues de ce plan. Justifier. Proposer un tel trajet. + +Est-il possible d'avoir un trajet partant et arrivant du même lieu et passant une fois et une seule par toutes les rues ? + + +\begin{minipage}[b]{0,3\textwidth} +\item + Dimitri habite dans cette ville ; le graphe ci-contre donne le \textbf{nouveau} plan du quartier avec les sens de circulation dans les différentes rues et le temps de parcours entre les différents lieux. +\end{minipage} +\hspace{1cm} + \begin{minipage}[c]{0,68\textwidth} + \begin{tikzpicture}[>=latex] + \SetGraphUnit{4} + \tikzset{VertexStyle/.style = {shape = circle, + draw = black, + inner sep = 2pt,% + minimum size = 6mm, + outer sep = 0pt, + fill = gray!60}} + \Vertex {P} + \NOEA(P){B} + \SOEA(P){M} + \NOEA(B){D} + \SOEA(B){C} + \SOEA(C){L} + \tikzset{LabelStyle/.style = {fill=white}} + \tikzset{EdgeStyle/.style = {<->}} + \Edge[label=$4$](P)(M) + \Edge[label=$9$](C)(M) + \Edge[label=$4$](C)(L) + \Edge[label=$5$](C)(D) + \Edge[label=$10$](B)(M) + \tikzset{EdgeStyle/.style = {<->,bend right}} + \Edge[label=$11$](L)(D) + \tikzset{EdgeStyle/.style = {->}} + \Edge[label=$3$](C)(B) + \Edge[label=$10$](D)(B) + \Edge[label=$10$](L)(M) + \Edge[label=$10$](B)(P) + \end{tikzpicture} + \end{minipage} +\end{enumerate} + +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +\vfill\newpage +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +Code du graphe précédent + +\bigskip +\begin{tkzexample}[code only] +\begin{minipage}[c]{0,68\textwidth} +\begin{tikzpicture}[>=latex] + \SetGraphUnit{4} + \tikzset{VertexStyle/.style = {shape = circle, + draw = black, + inner sep = 2pt,% + minimum size = 6mm, + outer sep = 0pt, + fill = gray!60}} + \Vertex {P} + \NOEA(P){B} + \SOEA(P){M} + \NOEA(B){D} + \SOEA(B){C} + \SOEA(C){L} + \tikzset{LabelStyle/.style = {fill=white}} + \tikzset{EdgeStyle/.style = {<->}} + \Edge[label=$4$](P)(M) + \Edge[label=$9$](C)(M) + \Edge[label=$4$](C)(L) + \Edge[label=$5$](C)(D) + \Edge[label=$10$](B)(M) + \tikzset{EdgeStyle/.style = {<->,bend right}} + \Edge[label=$11$](L)(D) + \tikzset{EdgeStyle/.style = {->}} + \Edge[label=$3$](C)(B) + \Edge[label=$10$](D)(B) + \Edge[label=$10$](L)(M) + \Edge[label=$10$](B)(P) +\end{tikzpicture} +\end{minipage} +\end{tkzexample} + +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +\vfill\newpage +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +% France juin 2003 +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +\subsection{France juin 2003 }\label{frj03} +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> + +Un concert de solidarité est organisé dans une grande salle de spectacle. À ce concert sont conviés sept artistes de renommée internationale Luther Allunison (A), John Biaise (B), Phil Colline (C), Bob Ditlâne (D), Jimi Endisque (E), Robert Fripe (F) et Rory Garaguerre (G). + +Les différents musiciens invités refusant de jouer avec certains autres, l'organisateur du concert doit prévoir plusieurs parties de spectacle. Les arêtes du graphe $\Gamma$ ci-dessous indiquent quels sont les musiciens qui refusent de jouer entre eux. + +\medskip +\begin{center} +\begin{tikzpicture} + \SetGraphUnit{4} + \GraphInit[vstyle=Normal] + \tikzset{EdgeStyle/.style = {line width = 2pt}} + \tikzset{VertexStyle/.append style = {line width = 2pt}} + \Vertex{D} + \SOEA(D){E} + \EA(E){F} + \NOEA(F){G} + \NOWE(G){A} + \NOWE(A){B} + \SOWE(B){C} + \Edges(F,G,A,D,F,B,E,G,C,F,A,E,C,B) +\end{tikzpicture} +\end{center} + +\medskip +\begin{enumerate} +\item Déterminer la matrice associée au graphe $\Gamma$ (les sommets de $\Gamma$ étant classés dans l'ordre alphabétique). +\item Quelle est la nature du sous-graphe de $\Gamma '$ constitué des sommets A, E, F et G ? + +Que peut-on en déduire pour le nombre chromatique $\chi(\Gamma)$ du graphe $\Gamma$ ? +\item Quel est le sommet de plus haut degré de $\Gamma$ ? + +En déduire un encadrement de $\chi(\Gamma)$. +\item Après avoir classé l'ensemble des sommets de $\Gamma$ par ordre de degré décroissant, colorier le graphe $\Gamma$ figurant en annexe. +\item Combien de parties l'organisateur du concert doit-il prévoir ? + +Proposer une répartition des musiciens pour chacune de ces parties. +\end{enumerate} + +\medskip + +\begin{tkzexample}[code only] +\begin{tikzpicture} + \SetGraphUnit{4} + \GraphInit[vstyle=Normal] + \tikzset{EdgeStyle/.style = {line width = 2pt}} + \tikzset{VertexStyle/.append style = {line width = 2pt}} + \Vertex{D} + \SOEA(D){E}\EA(E){F} + \NOEA(F){G}\NOWE(G){A} + \NOWE(A){B}\SOWE(B){C} + \Edges(F,G,A,D,F,B,E,G,C,F,A,E,C,B) +\end{tikzpicture} +\end{tkzexample} + + +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +\vfill\newpage +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +% CE juin 2003 +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +\subsection{Centres Étrangers juin 2003 }\label{cej03} +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> + +\bigskip +Un livreur d'une société de vente à domicile doit, dans son après-midi, charger son camion à l'entrepôt noté A, livrer cinq clients que nous noterons B, C, D, E et F, puis retourner à l'entrepôt. Le réseau routier, tenant compte des sens de circulation, et les temps de parcours (en minutes) sont indiqués sur le graphe G suivant : + +\medskip +\begin{center} + \begin{tikzpicture}[>=latex] + \SetGraphUnit{4} + \Vertex {F} + \NOWE(F){A} + \NOEA(F){B} + \SOEA(F){C} + \SOWE(F){D} + \SOWE(A){E} + \tikzstyle{EdgeStyle}=[->] + \tikzstyle{LabelStyle}=[fill=white] + \Edge[label=$4$](A)(E) + \Edge[label=$4$](E)(D) + \Edge[label=$9$](D)(A) + \Edge[label=$2$](B)(A) + \Edge[label=$11$](C)(B) + \Edge[label=$3$](D)(F) + \Edge[label=$6$](F)(A) + \tikzstyle{EdgeStyle}=[->,bend left=15] + \Edge[label=$2$](D)(C) + \Edge[label=$2$](C)(D) + \Edge[label=$3$](F)(B) + \Edge[label=$3$](B)(F) + \Edge[label=$6$](F)(C) + \Edge[label=$6$](C)(F) + \end{tikzpicture} +\end{center} + +\begin{enumerate} +\item Donner la matrice M associée au graphe G. + +On utilisera le modèle suivant : + +\begin{center} + \begin{tabular}{|*{7}{c|}}\cline{2-7} + \multicolumn{1}{c|}{}% + & A & B & C & D & E & F \\ \hline + A & & & & & & \\ \hline + B & & & & & & \\ \hline + C & & & & & & \\ \hline + D & & & & & & \\ \hline + E & & & & & & \\ \hline + F & & & & & & \\ \hline + \end{tabular} +\end{center} + +\item On donne la matrice M$^6$ : + +\[\text{M}^6 = +\begin{pmatrix} + 8 & 6 & 6 & 3 & 4 & 6 \\ + 19 & 11 & 12 & 9 & 6 & 16\\ + 36 & 28 & 23 & 22 & 18 & 34\\ + 37 & 24 & 25 & 17 & 15 & 31\\ + 15 & 12 & 9 & 10 & 8 & 15\\ + 28 & 22 & 19 & 15 & 15 & 26\\ +\end{pmatrix}\] + +On s'intéresse aux chemins partant de l'entrepôt A et se terminant en A. + + \begin{enumerate} + \item Combien existe-t-il de chemins de longueur 6 reliant A à A ? + \item Citer ces chemins. + \item Parmi ceux qui passent par tous les sommets du graphe, lequel minimise le temps de parcours ? + \item Quelle conséquence peut tirer le livreur du dernier résultat ? + \end{enumerate} +\item Au départ de sa tournée, le livreur a choisi de suivre l'itinéraire le plus rapide. Malheureusement, le client C n'est pas présent au passage du livreur et celui-ci décide de terminer sa livraison par ce client. Indiquer quel est le chemin le plus rapide pour revenir à l'entrepôt A à partir de C. La réponse devra être justifiée. +\end{enumerate} + +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +\vfill\newpage +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +Code du graphe précédent + +\bigskip +\begin{tkzexample}[code only] +\begin{tikzpicture}[>=latex] + \SetGraphUnit{3} + \Vertex {F} + \NOWE(F){A} + \NOEA(F){B} + \SOEA(F){C} + \SOWE(F){D} + \SOWE(A){E} + \tikzstyle{EdgeStyle}=[->] + \tikzstyle{LabelStyle}=[fill=white] + \Edge[label=$4$](A)(E) + \Edge[label=$4$](E)(D) + \Edge[label=$9$](D)(A) + \Edge[label=$2$](B)(A) + \Edge[label=$11$](C)(B) + \Edge[label=$3$](D)(F) + \Edge[label=$6$](F)(A) + \tikzstyle{EdgeStyle}=[->,bend left=15] + \Edge[label=$2$](D)(C) + \Edge[label=$2$](C)(D) + \Edge[label=$3$](F)(B) + \Edge[label=$3$](B)(F) + \Edge[label=$6$](F)(C) + \Edge[label=$6$](C)(F) +\end{tikzpicture} +\end{tkzexample} +\vfill\newpage +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +% Amérique du Nord mai 2004 +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +\subsection{Amérique du Nord juin 2004 }\label{anm04} +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> + + +\textbf{Les parties A et B sont indépendantes.} + +\textbf{Partie A} + +On considère le graphe G$_{1}$ ci-dessous : + +\bigskip + +\begin{center} +\begin{tikzpicture}[>=latex] + \SetGraphUnit{6} + \Vertex{F}% + \NOEA(F){B} + \SOEA(F){E} + \EA(B){C} + \EA(E){D} + \NO(D){A} + \Edges(B,F,E,D,A,E,B,A,F,B,C,F,D) +\end{tikzpicture} +\end{center} + +\medskip + +\begin{enumerate} +\item Justifier les affirmations suivantes : + +A$_{1}$ : \og le graphe G$_1$ admet au moins une chaîne eulérienne \fg. + +A$_{2}$ ; \og La chaîne DABCFBEFAE n'est pas une chaîne eulérienne de G$_1$ \fg. + +\item Déterminer un sous-graphe complet de G$_1$, ayant le plus grand ordre possible. En déduire un minorant du nombre chromatique $\gamma$ de ce graphe. + +\item Déterminer un majorant de ce nombre chromatique. (On justifiera la réponse). + +\item En proposant une coloration du graphe G$_1$, déterminer son nombre chromatique. + +\end{enumerate} + +\medskip + +\textbf{Partie B} + +Soit la matrice M d'un graphe orienté G$_2$ dont les sommets A, B, C, D et E sont pris dans l'ordre alphabétique. + +On donne \[ + M = +\begin{pmatrix} + 0 & 1 & 1 & 1 & 0\\ + 1 & 0 & 1 & 0 & 1\\ + 1 & 1 & 0 & 0 & 1\\ + 0 & 1 & 0 & 0 & 1\\ + 1 & 1 & 0 & 1 & 0\\ +\end{pmatrix} +\] +~et~ +\[ + \text{M}^3 = +\begin{pmatrix} + 6 & 6 & 4 & 5 & 3\\ + 5 & 6 & 5 & 3 & 6\\ + 5 & 7 & 4 & 3 & 6\\ + 3 & 5 & 3 & 3 & 3\\ + 6 & 6 & 3 & 3 & 5\\ +\end{pmatrix}. +\] +\begin{enumerate} +\item Construire le graphe G$_2$. +\item Déterminer le nombre de chaînes de longueur 3 reliant B à D. Les citer toutes. +\end{enumerate} + +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +\vfill\newpage +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +Code du graphe précédent + +\bigskip +\begin{tkzexample}[code only] +\begin{tikzpicture}[>=latex] + \SetGraphUnit{6} + \Vertex{F} + \NOEA(F){B} + \SOEA(F){E} + \EA(B){C} + \EA(E){D} + \NO(D){A} + \Edges(B,F,E,D,A,E,B,A,F,B,C,F,D) +\end{tikzpicture} +\end{tkzexample} + +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +\vfill\newpage +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +% CE mai 2004 +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +\subsection{Centres étrangers mai 2004 }\label{cem04} +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> + +\bigskip +Un jardinier possède un terrain bien ensoleillé avec une partie plus ombragée. + +Il décide d'y organiser des parcelles où il plantera 8 variétés de légumes : + +\medskip +\begin{center}\begin{minipage}[t]{0.48\textwidth} + \begin{itemize} + \item de l'ail (A), + \item des courges (Co), + \item des choux (Ch), + \item des poireaux (Px), + \item des pois (Po), + \item des pommes de terre (Pt), + \item des radis (R), + \item et des tomates (T). + \end{itemize} +\end{minipage}\end{center} + +\medskip +Il consulte un almanach où figurent des incompatibilités de plantes, données par les deux tableaux : + +\medskip + +\begin{minipage}[t]{0.46\textwidth} +\begin{tabular}{|l|l|}\hline + \multicolumn{2}{|p{7cm}|}{Expositions incompatibles de plantes}\\ +\hline + \multicolumn{1}{|p{3.5cm}|}{Plantes d'ombre partielle} + &\multicolumn{1}{|p{3.5cm}|}{Plantes de plein soleil}\\ +\hline + & \\ + & choux \\ + pois & tomates \\ + radis & courges \\ + & \\ + & \\ +\hline + \multicolumn{2}{|p{7cm}|}{Par exemple : les pois sont incompatibles avec les + choux, les tomates et les courges}\\ \hline +\end{tabular} +\end{minipage} +\hfill +\raisebox{6pt}{\begin{minipage}[t]{0.46\textwidth} +\begin{tabular}{|l|l|}\hline +\multicolumn{2}{|p{7cm}|}{Associations incompatibles de} \\ +\multicolumn{2}{|p{7cm}|}{plantes dans une même parcelle}\\ \hline + pois & ail, poireaux\\ \hline +pommes de & courges, radis et\\ +terre & tomates\\ \hline +& tomates, ail\\ +choux & poireaux et courges\\ \hline +courges & tomates\\ \hline +\multicolumn{2}{|p{7cm}|}{Par exemple : les pois sont incompatibles avec +l'ail et les poireaux}\\ \hline +\end{tabular} +\end{minipage}} + +\medskip + +Pour tenir compte de ces incompatibilités le jardinier décide de modéliser la situation sous la forme d'un graphe de huit sommets, chaque sommet représentant un légume. +\medskip +\begin{enumerate} +\item Sur la feuille annexe : compléter le graphe mettant en évidence les incompatibilités d'exposition ou les associations incompatibles indiquées dans les deux tableaux ci-dessus. + +\item Calculer la somme des degrés des sommets du graphe, en déduire le nombre de ses arêtes. + +\item Rechercher un sous-graphe complet d'ordre 4, qu'en déduit-on pour le nombre chromatique du graphe ? + +\item Donner le nombre chromatique du graphe et l'interpréter en nombre minimum de parcelles que le jardinier devra créer. + +\item Donner une répartition des plantes pur parcelle de façon à ce que chaque parcelle contienne exactement deux types de plantes et que le nombre de parcelles soit minimum. + +\item Donner une répartition des plantes de façon à ce qu'une parcelle contienne trois plantes et que le nombre de parcelles soit minimum. +\end{enumerate} + +\medskip +\begin{center} + \begin{tikzpicture} + \tikzstyle{VertexStyle}= [shape = circle, + fill = white,% + minimum size = 26pt,% + draw] + \Vertex[x=1,y=0.8]{R} + \Vertex[x=0.2,y=3.3]{Po} + \Vertex[x=0,y=2]{Pt} + \Vertex[x=0.9,y=5]{Px} + \Vertex[x=3.5,y=5]{A} + \Vertex[x=5.6,y=3.4]{T} + \Vertex[x=5.3,y=2]{Co} + \Vertex[x=3.3,y=0.2]{Ch} + \Edges(Po,Px,Po,A,Po,T,Po,Co,Po,Ch) + \end{tikzpicture} +\end{center} + +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +\vfill\newpage +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +Code du graphe précédent + +\bigskip +\begin{tkzexample}[code only] +\begin{tikzpicture} + \tikzstyle{VertexStyle}= [shape = circle, + fill = white,% + minimum size = 26pt,% + draw] + \Vertex[x=1,y=0.8]{R} + \Vertex[x=0.2,y=3.3]{Po} + \Vertex[x=0,y=2]{Pt} + \Vertex[x=0.9,y=5]{Px} + \Vertex[x=3.5,y=5]{A} + \Vertex[x=5.6,y=3.4]{T} + \Vertex[x=5.3,y=2]{Co} + \Vertex[x=3.3,y=0.2]{Ch} + \Edges(Po,Px,Po,A,Po,T,Po,Co,Po,Ch) +\end{tikzpicture} +\end{tkzexample} + +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +\vfill\newpage +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +% France mai 2004 +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +\subsection{France juin 2004} +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> + +Le graphe ci-dessous indique, sans respecter d'échelle, les parcours possibles entre les sept bâtiments d'une entreprise importante. + +\medskip +\begin{tikzpicture} + \SetGraphUnit{5} + \Vertex{A} + \NOEA(F){B} + \SOEA(F){E} + \EA(B){C} + \EA(E){D} + \NO(D){A} + \Edges(F,E,F,D,F,C,F,A,F,B,A,E,E,D,D,A,B,A,C,B,E,B) +\end{tikzpicture} + +Un agent de sécurité effectue régulièrement des rondes de surveillance. Ses temps de parcours en minutes entre deux bâtiments sont les +suivants : + +\medskip +\begin{center} +\begin{minipage}{0.5\textwidth} + \begin{itemize} + \item AB : 16 minutes ; + \item AG : 12 minutes ; + \item BC : 8 minutes ; + \item BE : 12 minutes ; + \item BG : 8 minutes ; + \item CD : 7 minutes ; + \item CE : 4 minutes ; + \item CG : 10 minutes ; + \item DE : 2 minutes ; + \item EF : 8 minutes ; + \item EG : 15 minutes ; + \item FG : 8 minutes. + \end{itemize} +\end{minipage} +\end{center} + +\medskip +Sur chaque arête, les temps de parcours sont indépendants du sens de parcours. + +\begin{enumerate} +\item En justifiant la réponse, montrer qu'il est possible que l'agent de sécurité passe une fois et une seule par tous les chemins de cette usine. Donner un exemple de trajet. + +\item L'agent de sécurité peut-il revenir à son point de départ après avoir parcouru une fois et une seule tous les chemins ? Justifier la réponse. + +\item Tous les matins, l'agent de sécurité part du bâtiment A et se rend au bâtiment D. + +En utilisant un algorithme que l'on explicitera, déterminer le chemin qu'il doit suivre pour que son temps de parcours soit le plus court possible, et donner ce temps de parcours. +\end{enumerate} + +\medskip +\begin{tkzexample}[code only] +\begin{tikzpicture} + \SetGraphUnit{5} + \Vertex{A} \NOEA(F){B} \SOEA(F){E} + \EA(B){C} \EA(E){D} \NO(D){A} + \Edges(F,E,F,D,F,C,F,A,F,B,A,E,E,D,D,A,B,A,C,B,E,B) +\end{tikzpicture} +\end{tkzexample} +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +\vfill\newpage +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> + +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +% La Reunion mai 2004 +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +\subsection{La Réunion juin 2004 }\label{larj04} +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> + + +\textbf{Partie A} + +On note $G$ le graphe représenté ci-dessous et $M$ sa matrice obtenue en prenant les sommets dans l'ordre alphabétique. La matrice $M^3$ est également donnée. + +\medskip +\begin{center} +\begin{tikzpicture}[>=latex] + \SetGraphUnit{4.5} + \Vertex {e} + \NOEA(e){f} + \SOEA(e){d} + \SOEA(f){h} + \Vertex[position={above of=e,yshift=2cm}]{g} + \Vertex[position={left of=g,xshift=-1cm}]{c} + \Vertex[position={left of=d,xshift=-2cm}]{a} + \SOWE(c){b} + \Edges(a,c,g) \Edges(d,h,f,e,d,a,e,g,a,b,c,e) + \Edge[style={bend left}](g)(h) +\end{tikzpicture} +\end{center} + +\bigskip +\begin{center} + $M^3 = \begin{pmatrix} + 10 & 8 & 11 & 10 & 12 & 5 & 13 & 4\\ + 8 & 2 & 7 & 3 & 5 & 2 & 4 & 3\\ + 11 & 7 & 8 & 6 & 12 & 3 & 10 & 5\\ + 10 & 3 & 6 & 2 & 11 & 1 & 4 & 8\\ + 12 & 5 & 12 & 11 & 8 & 8 & 13 & 3\\ + 5 & 2 & 3 & 1 & 8 & 0 & 2 & 6\\ + 13 & 4 & 10 & 4 & 13 & 2 & 6 & 9\\ + 4 & 3 & 5 & 8 & 3 & 6 & 9 & 0\\ +\end{pmatrix}$ +\end{center} + + +\bigskip +Dire, en justifiant votre réponse, si les affirmations suivantes sont vraies ou + fausses : + +\begin{enumerate} +\item L'ordre du graphe est égal au plus grand des degrés des sommets. +\item Le graphe $G$ contient un sous-graphe complet d'ordre $3$. +\item Les sommets de $G$ peuvent être coloriés avec trois couleurs sans que deux sommets adjacents soient de même couleur. +\item Il est possible de parcourir ce graphe en passant une fois et une seule par chaque arête. +\item Il existe au moins un chemin de longueur $3$ qui relie chaque sommet à chacun des sept autres sommets du graphe. +\item il y a $72$ chemins de longueur $3$ qui relient le sommet $e$ à chacun des huit sommets du graphe. +\end{enumerate} + +\newpage + +\textbf{ Partie B} + +Le graphe suivant représente un réseau de lignes d'autobus. Les sommets du graphe désignent les arrêts. Les poids des arêtes sont les durées de parcours, en minutes, entre deux arrêts (correspondances comprises). + +\medskip +\begin{center} +\begin{tikzpicture}[>=latex] + \SetGraphUnit{4.5} + \Vertex {e} + \NOEA(e){f} + \SOEA(e){d} + \SOEA(f){h} + \Vertex[position={above of=e,yshift=2cm}]{g} + \Vertex[position={left of=g,xshift=-1cm}]{c} + \Vertex[position={left of=d,xshift=-2cm}]{a} + \SOWE(c){b} + \tikzstyle{LabelStyle}=[fill=white] + \Edge[label=$3$](a)(b) + \Edge[label=$11$](a)(c) + \Edge[label=$6$](a)(e) + \Edge[label=$17$](a)(d) + \Edge[style={pos=.25},label=$20$](a)(g) + \Edge[label=$5$](c)(b) + \Edge[label=$6$](c)(e) + \Edge[label=$7$](c)(g) + \Edge[label=$7$](f)(e) + \Edge[label=$3$](d)(e) + \Edge[label=$9$](d)(h) + \Edge[label=$6$](g)(e) + \Edge[style={bend left},label=$11$](g)(h) + \Edge[label=$4$](f)(h) +\end{tikzpicture} +\end{center} + +\medskip +Déterminer, à l'aide d'un algorithme, la durée minimum pour aller de l'arrêt $a$ à l'arrêt $h$ et donner ce trajet. +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +\vfill\newpage +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +Code du graphe précédent + +\medskip +\begin{tkzexample}[code only] +\begin{tikzpicture}[>=latex] + \SetGraphUnit{4.5} + \Vertex {e} + \NOEA(e){f} + \SOEA(e){d} + \SOEA(f){h} + \Vertex[position={above of=e,yshift=2cm}]{g} + \Vertex[position={left of=g,xshift=-1cm}]{c} + \Vertex[position={left of=d,xshift=-2cm}]{a} + \SOWE(c){b} + \Edges(a,c,g) \Edges(d,h,f,e,d,a,e,g,a,b,c,e) + \Edge[style={bend left}](g)(h) +\end{tikzpicture} +\end{tkzexample} + +et + +\begin{tkzexample}[code only] +\begin{tikzpicture}[>=latex] + \SetGraphUnit{4.5} + \Vertex {e} + \NOEA(e){f} + \SOEA(e){d} + \SOEA(f){h} + \Vertex[position={above of=e,yshift=2cm}]{g} + \Vertex[position={left of=g,xshift=-1cm}]{c} + \Vertex[position={left of=d,xshift=-2cm}]{a} + \SOWE(c){b} + \tikzstyle{LabelStyle}=[fill=white] + \Edge[label=$3$](a)(b) + \Edge[label=$11$](a)(c) + \Edge[label=$6$](a)(e) + \Edge[label=$17$](a)(d) + \Edge[style={pos=.25},label=$20$](a)(g) + \Edge[label=$5$](c)(b) + \Edge[label=$6$](c)(e) + \Edge[label=$7$](c)(g) + \Edge[label=$7$](f)(e) + \Edge[label=$3$](d)(e) + \Edge[label=$9$](d)(h) + \Edge[label=$6$](g)(e) + \Edge[style={bend left},label=$11$](g)(h) + \Edge[label=$4$](f)(h) +\end{tikzpicture} +\end{tkzexample} + +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +\vfill\newpage +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +\subsection{Amérique du Sud Nov 2006}\label{amsn06} +\begin{enumerate} +\item À l'occasion de la coupe du monde de football 2006 en Allemagne, une agence touristique organise des voyages en car à travers les différentes villes où se joueront les matchs d'une équipe nationale. + +Les routes empruntées par les cars sont représentées par le graphe ci-dessous. Le long de chaque arête figure la distance en kilomètres séparant les villes. +Les lettres B, D, F, H, K, M, N et S représentent les villes Berlin, Dortmnd, Francfort, Hambourg, Kaiserslautern, Munich, Nuremberg et Stuttgart. + +\bigskip + +\begin{center} +\begin{tikzpicture} + \Vertex[x=0 ,y=0]{K} + \Vertex[x=0 ,y=2]{F} + \Vertex[x=-1,y=4]{D} + \Vertex[x=3 ,y=7]{H} + \Vertex[x=8 ,y=5]{B} + \Vertex[x=9 ,y=2]{N} + \Vertex[x=5 ,y=0]{M} + \Vertex[x=3 ,y=1]{S} + \tikzstyle{LabelStyle}=[fill=white,sloped] + \tikzstyle{EdgeStyle}=[bend left] + \Edge[label=$120$](K)(F) + \Edge[label=$650$](H)(S) + \Edge[label=$780$](H)(M) + \Edge[label=$490$](D)(B) + \Edge[label=$600$](D)(M) + \Edge[label=$580$](B)(M) + \Edge[label=$600$](H)(N) + \Edge[label=$490$](F)(H) + \tikzstyle{EdgeStyle}=[bend right] + \Edge[label=$630$](S)(B) + \Edge[label=$210$](S)(N) + \Edge[label=$230$](S)(M) +\end{tikzpicture} +\end{center} + +\bigskip +En précisant la méthode utilisée, déterminer le plus court chemin possible pour aller de Kaiserslautern à Berlin en utilisant les cars de cette agence. +\item Pour des raisons de sécurité, les supporters de certaines équipes nationales participant à la coupe du monde de football en 2006 ne peuvent être logés dans le même hôtel. + +On donne ci-dessous le graphe d'incompatibilité entre les supporters de différentes équipes : par exemple, un supporter de l'équipe A ne peut être logé avec un supporter de l'équipe P. + +\bigskip +\begin{center} +\begin{tikzpicture} + \tikzstyle{EdgeStyle}=[bend left] + \Vertex[x=0,y=0]{G} + \Vertex[x=0,y=3]{A} + \Vertex[x=3,y=5]{P} + \Vertex[x=4,y=2]{C} + \Vertex[x=8,y=3]{Q} + \Vertex[x=7,y=0]{E} + \Vertex[x=3,y=-1]{R} + \Edges(G,A,P,Q,E) \Edges(C,A,Q) \Edges(C,R,G) \Edges(P,E,A) +\end{tikzpicture} +\end{center} + +\bigskip +\begin{enumerate} +\item Déterminer le nombre chromatique de ce graphe en justifiant la valeur trouvée. +\item Proposer une répartition des supporters par hôtel en utilisant un nombre minimum d'hôtels. +\end{enumerate} +\end{enumerate} +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +\vfill\newpage\null +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +% Liban juin 2006 +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +\subsection{Liban juin 2006 }\label{lib06} +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> + +\begin{enumerate} +\item Dans un parc, il y a cinq bancs reliés entre eux par des allées. + +On modélise les bancs par les sommets A, B, C, D, E et les allées par les arêtes du +graphe G ci-dessous : + + +\medskip +\begin{center} +\begin{tikzpicture} + \SetGraphUnit{3} + \tikzstyle{VertexStyle}=[shape = circle, + fill = black, + minimum size = 20pt, + text = white, + draw] + \Vertex[L= {\textbf{E}}]{E} + \NOEA[L = {\textbf{A}}](E){A} + \SOEA[L = {\textbf{D}}](E){D} + \EA[L = {\textbf{C}}](D){C} + \NOEA[L = {\textbf{B}}](C){B} + \tikzstyle{EdgeStyle}=[double = orange,% + double distance = 1pt,% + thick,% + bend right = 20] + \Edges(B,A,E,D,C,B,D) +\end{tikzpicture} +\end{center} + +\medskip + +\begin{enumerate} +\item On désire peindre les bancs de façon que deux bancs reliés par une allée soient +toujours de couleurs différentes. + +Donner un encadrement du nombre minimal de couleurs nécessaires et justifier. + +Déterminer ce nombre. +\item Est-il possible de parcourir toutes les allées de ce parc sans passer deux fois par +la même allée? +\end{enumerate} +\item Une exposition est organisée dans le parc. La fréquentation devenant trop importante, on décide d'instaurer un plan de circulation : certaines allées deviennent à sens unique, d'autres restent à double sens. Par exemple la circulation dans l'allée +située entre les bancs B et C pourra se faire de B vers C et de C vers B, alors que la circulation dans l'allée située entre les bancs A et B ne pourra se faire que de A vers B. Le graphe G$'$ ci-dessous modélise cette nouvelle situation : + +\medskip +\begin{center} +\begin{tikzpicture} + \SetGraphUnit{3} + \tikzstyle{VertexStyle}=[shape = circle, + fill = black, + minimum size = 20pt, + text = white, + draw] + \tikzstyle{TempStyle}=[double = orange,% + double distance = 1pt] + \Vertex[L= {\textbf{E}}]{E} + \NOEA[L = {\textbf{A}}](E){A} + \SOEA[L = {\textbf{D}}](E){D} + \EA[L = {\textbf{C}}](D){C} + \NOEA[L = {\textbf{B}}](C){B} + \tikzstyle{EdgeStyle}=[TempStyle,% + post,% + bend right = 20] + \Edges(A,E,D,C,B,D) + \tikzstyle{EdgeStyle}=[TempStyle,% + pre,% + bend right = 20] + \Edges(B,A) + \tikzstyle{EdgeStyle}=[TempStyle,% + pre,% + bend left = 20] + \Edges(A,E,D,C,B) +\end{tikzpicture} +\end{center} + +\begin{enumerate} +\item Donner la matrice M associée au graphe G$'$. (On ordonnera les sommets +par ordre alphabétique). +\item On donne M$^5 += \begin{pmatrix} +1& 6& 9& 6& 10\\ +4& 5& 7& 11& 5\\ +4& 6& 6& 11& 5\\ +1& 5& 10& 6& 10\\ +6& 5& 5& 14& 2\\ +\end{pmatrix}$ + +Combien y a-t-il de chemins de longueur 5 permettant de se rendre du +sommet D au sommet B ? + +Les donner tous. +\item Montrer qu'il existe un seul cycle de longueur 5 passant par le sommet A. + +Quel est ce cycle ? + +En est-il de même pour le sommet B ? + \end{enumerate} +\end{enumerate} + +\vfill\newpage\null +Code des graphes précédents + +\begin{tkzexample}[code only] +\begin{tikzpicture} + \SetGraphUnit{3} + \tikzstyle{VertexStyle}=[shape = circle, + fill = black, + minimum size = 20pt, + text = white, + draw] + \Vertex[L= {\textbf{E}}]{E} + \NOEA[L = {\textbf{A}}](E){A} + \SOEA[L = {\textbf{D}}](E){D} + \EA[L = {\textbf{C}}](D){C} + \NOEA[L = {\textbf{B}}](C){B} + \tikzstyle{EdgeStyle}=[double = orange, + double distance = 1pt, + thick, + bend right = 20] + \Edges(B,A,E,D,C,B,D) +\end{tikzpicture} +\end{tkzexample} + +\begin{tkzexample}[code only] +\begin{tikzpicture} + \SetGraphUnit{3} + \tikzstyle{VertexStyle}=[shape = circle, + fill = black, + minimum size = 20pt, + text = white, + draw] + \tikzstyle{TempStyle}=[double = orange, + double distance = 1pt] + \Vertex[L= {\textbf{E}}]{E} + \NOEA[L = {\textbf{A}}](E){A} + \SOEA[L = {\textbf{D}}](E){D} + \EA[L = {\textbf{C}}](D){C} + \NOEA[L = {\textbf{B}}](C){B} + \tikzstyle{EdgeStyle}=[TempStyle, + post, + bend right = 20] + \Edges(A,E,D,C,B,D) + \tikzstyle{EdgeStyle}=[TempStyle,% + pre,% + bend right = 20] + \Edges(B,A) + \tikzstyle{EdgeStyle}=[TempStyle,% + pre,% + bend left = 20] + \Edges(A,E,D,C,B) +\end{tikzpicture} +\end{tkzexample} + +\endinput \ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-couverture.tex b/Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-couverture.tex new file mode 100644 index 00000000000..28324912361 --- /dev/null +++ b/Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-couverture.tex @@ -0,0 +1,31 @@ +\thispagestyle{empty} +\null\vfill +\begin{center} +\textcolor{Brown}{\fontsize{30}{30}\selectfont{\upshape tkz-graph.sty}} + +\vspace{0.25cm} +\hfill\textcolor{Brown}{\fontsize{14}{14}\selectfont{\upshape Alain Matthes}} +\end{center} + +\vspace{3cm} +\begin{center} +\begin{tikzpicture}[scale=5] + \SetVertexNoLabel + \tikzstyle{VertexStyle}=[draw, + shape = circle, + shading = ball, + ball color = blue!50, + inner sep = 10pt, + outer sep = 0pt] + \tikzstyle{EdgeStyle}= [thick, + double = blue,% + double distance = 1pt] + \draw[fill = white,color = white] circle (0.55cm); + \draw (0,0) node[circle,draw,shade, + ball color = orange, + minimum size = 3cm] (am){\textbf{AlterMundus}}; + \grIcosahedral[RA=1.4,RB=0.8] +\end{tikzpicture} +\end{center} +\vfill\newpage\null\thispagestyle{empty} +\endinput \ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-edge.tex b/Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-edge.tex new file mode 100644 index 00000000000..1c662139ca8 --- /dev/null +++ b/Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-edge.tex @@ -0,0 +1,116 @@ +\section{Edge avec tkz-graph} + +\begin{NewMacroBox}{Edge}{\oarg{local options}\varp{Vertex A}\varp{Vertex B}} + +\begin{tabular}{lllc} +options & défaut & définition \\ \midrule +\TOline{local} {false} {booléen désactive EdgeStyle } +\TOline{color} {\textbackslash EdgeColor} {couleur de l'arête} +\TOline{lw} {\textbackslash EdgeLineWidth} {épaisseur de l'arête.} +\TOline{label} {\{\}} {le label} +\TOline{labeltext} {black} {couleur du texte} +\TOline{labelcolor} {white} {couleur du fond du label } +\TOline{labelstyle} {\{\}} {modication du style du label} +\TOline{style} {pos=.5} {modification du style général} \bottomrule +\end{tabular} + +\medskip +\emph{Cette macro permet de tracer une arête entre deux sommets. Dans les exemples et dans le chapitre sur les styles, l'usage des styles est expliqué. } +\end{NewMacroBox} + + + +\medskip +\subsection{Utilisation de \addbs{Edge}} + On peut remarquer qu'il y a deux sortes d'arêtes au niveau de la forme : les segments et les arcs. De plus, ces arêtes peuvent avoir un label. La notion de style est importante car on peut définir pour toutes les arêtes un même style dès le début. + +par défaut : + +\begin{tkzexample}[latex=8cm, small] +\begin{tikzpicture} + \SetGraphUnit{4} + \Vertex{a} + \EA(a){b} + \SO[unit=2](a){c} + \EA(c){d} + {\SetGraphUnit{2} + \SO(c){e}} + \EA(e){f} + \Edge(a)(b) + \tikzset{EdgeStyle/.style = {-,bend left}} + \Edge(c)(d) + \tikzset{EdgeStyle/.style = {->,bend right=60}} + \Edge(e)(f) +\end{tikzpicture} +\end{tkzexample} + + + + +\vfill +\newpage + +\subsection{Arête particulière la boucle : \tkzname{Loop}} + +\begin{NewMacroBox}{Loop}{\oarg{local options}\varp{Vertex}} +\begin{tabular}{lllc} +options & défaut & définition \\ +\midrule +\TOline{color} {black } {} +\TOline{lw} {0.8pt } {} +\TOline{label} {\{\} } {} +\TOline{labelstyle} {\{\} } {} +\TOline{style} {\{\} } {} +\end{tabular} +\end{NewMacroBox} + +\subsubsection{Exemple avec \tkzcname{Loop}} +\begin{center} +\begin{tkzexample}[vbox, small] +\begin{tikzpicture} + \useasboundingbox (-1,-2) rectangle (8,2); + \SetVertexSimple + \SetGraphUnit{5} + \Vertex{A} + \EA(A){B} + \Edge[style={->}](A)(B) + \Loop[dist=3cm,dir=EA,style={thick,->}](B) + \Loop[dist=5cm,dir=WE,style={thick,->}](A) +\end{tikzpicture} +\end{tkzexample} +\end{center} + +\vfill +\newpage +\subsection{Multiple arêtes \tkzcname{Edges}} + +\begin{NewMacroBox}{Edges}{\oarg{local options}\varp{Vertex A,Vertex B,\dots}} + +\begin{tabular}{llc} +options & défaut & définition \\ +\midrule +\TOline{color} {black} {} +\TOline{lw} {thick} {} +\TOline{label} {\{\} } {} +\TOline{labelstyle}{\{\}} {} +\TOline{style} {\{\} } {} +\bottomrule +\end{tabular} + +\medskip +\emph{ Cette macro permet de définir une série d'arêtes en une seule fois.} +\end{NewMacroBox} + +\subsubsection{Exemple avec \tkzcname{Edges}} +\begin{center} +\begin{tkzexample}[vbox] +\begin{tikzpicture} + \SetGraphUnit{4} + \GraphInit[vstyle=Art] + \Vertices{circle}{a0,a1,a2,a3,a4,a5,a6,a7} + \Edges(a0,a3,a6,a1,a4,a7,a2,a5,a0) +\end{tikzpicture} +\end{tkzexample} +\end{center} + +\endinput \ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-label.tex b/Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-label.tex new file mode 100644 index 00000000000..597803dfdc6 --- /dev/null +++ b/Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-label.tex @@ -0,0 +1,125 @@ +\section{Les labels} +% Options sur les labels +Rappel : Si aucun label n'est donné alors l'affichage du label est celui de la référence du \tkzname{vertex}. Il est possible de modifier localement le comportemnt des labels + +\subsection{Options concernant les labels} + +L'option suivante permet de définir un label, celui-ci peut être en mode texte ou bien en mode math. + +\subsubsection{Option \tkzname{L}} + +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture} + \Vertex[L=$\alpha$] {a} + \EA[unit=4](a){b} +\end{tikzpicture} +\end{tkzexample} + +\subsubsection{Option \tkzname{Math}} +Le label est en mode math. Il est inutile de placer L en mode math si l'option est utilisée. + +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture} + \Vertex[Math] {A_1} + \Vertex[Math,L=\alpha,x=4,y=0] {a} +\end{tikzpicture} +\end{tkzexample} + + +\subsubsection{Suppression d'un label, Option \tkzname{NoLabel}} +Cette option supprime l'affichage du label. Il est préférable d'utiliser \tkzname{SetVertexNoLabel} si on veut généraliser à tous les sommets. + +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture} + \SetGraphUnit{4} + \Vertex[NoLabel]{A} + \EA[NoLabel](A){B} +\end{tikzpicture} +\end{tkzexample} + +\subsubsection{Option \tkzname{LabelOut}, \tkzname{Lpos} et \tkzname{Ldist}} + +La première option permet de placer le label hors du node, la deuxième positionne le label autour du sommet et la dernière spécifie la distance entre le label et le sommet. + +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture} + \Vertex[LabelOut]{A} + \Vertex[LabelOut,Lpos=60, + Ldist=.5cm,x=2,y=0]{B} + \Vertex[LabelOut,Lpos=60,x=4,y=0]{C} +\end{tikzpicture} +\end{tkzexample} + + +\vfill\newpage +On peut souhaiter appliquer une option pour tous les sommets. + +\subsection{\tkzcname{SetVertexNoLabel}} +On peut souhaiter ne pas avoir de label pour tous les sommets avec un style prédéfini. + +\begin{NewMacroBox}{SetVertexNoLabel}{} +\emph{ Cette macro permet de supprimer les labels sur tous les sommets. Elle agit globalement sur tous les sommets. Elle correspond à l'option \tkzname{NoLabel}.} +\end{NewMacroBox} + +\subsubsection{Suppression des labels} + +\begin{tkzexample}[vbox] +\begin{tikzpicture} + \SetGraphUnit{4} + \SetVertexNoLabel + \Vertex{A}\EA(A){B} +\end{tikzpicture} +\end{tkzexample} + + +\subsection{\tkzcname{SetVertexMath} } +\begin{NewMacroBox}{SetVertexMath}{} +\emph{Cette macro permet d'appliquer l'option \tkzname{Math} à plusieurs sommets. Elle agit globalement sur tous les sommets. Elle correspond à l'option \tkzname{Math}} +\end{NewMacroBox} + +\begin{tkzexample}[latex=7cm,small] + \begin{tikzpicture} + \SetVertexMath + \Vertex {A_1} \EA[unit=3](A_1){A_2}\texttt{} +\end{tikzpicture} +\end{tkzexample} + +\subsection{\tkzcname{SetVertexLabel}} +\begin{NewMacroBox}{SetVertexLabel}{} +\emph{ Cette macro autorise les labels. Elle agit globalement sur tous les sommets.} +\end{NewMacroBox} + +\subsubsection{Labels supprimés puis autorisés.} + Dans l'exemple qui suit, les labels sont supprimés puis autorisés. + +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture} + \SetVertexNoLabel + \SetGraphUnit{2} + \Vertex {A} \EA(A){B} + \SetVertexLabel \EA(B){C} +\end{tikzpicture} +\end{tkzexample} + +\subsubsection{Label en dehors du sommet \tkzcname{SetVertexLabelOut}} + +\begin{NewMacroBox}{SetVertexLabelOut}{} +\emph{\tkzcname{SetVertexLabelOut} Dans les exemples précédents, les sommets sont des petits disques colorés, généralement en noir et dans ce cas par défaut le label est à l'extérieur. On peut contrôler la position à l'aide des labels avec \tkzname{Ldist} et\tkzname{Lpos}.} +\end{NewMacroBox} + +\begin{NewMacroBox}{SetVertexLabelIn}{} +\emph{\tkzcname{SetVertexLabelIn} permet d'écrire le label dans le sommet.} +\end{NewMacroBox} + +Cette macro permet d'appliquer l'option à plusieurs sommets. \tkzcname{SetVertexLabelIn} annule l'effet. + +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture} + \SetGraphUnit{3} + \SetVertexLabelOut + \Vertex {A} \EA(A){B} + \SetVertexLabelIn \SO[unit=3](B){C} +\end{tikzpicture} +\end{tkzexample} + +\endinput \ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-main.tex b/Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-main.tex new file mode 100644 index 00000000000..3c4ab83c370 --- /dev/null +++ b/Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-main.tex @@ -0,0 +1,237 @@ +% encoding : utf8 +% tkz-doc-graph +% Created by Alain Matthes on 2021/01/20. +% Copyright (C) 2021 Alain Matthes +% +% This file may be distributed and/or modified +% +% 1. under the LaTeX Project Public License , either version 1.3 +% of this license or (at your option) any later version and/or +% 2. under the GNU Public License. +% +% See the file doc/generic/pgf/licenses/LICENSE for more details.% +% See http://www.latex-project.org/lppl.txt for details. +% +% +% ``tkzdoc-graph-fr'' is the french doc of tkz-graph +% +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% tkz-doc-graph encodage : utf8 % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% Created by Alain Matthes 2007/09/02 % +% Copyright (c) 2021 __Altermundus__ All rights reserved. % +% version : 2.0 % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\documentclass[DIV = 14, + fontsize = 10, + headinclude = false, + footinclude = false, + index = totoc, + twoside, + headings = small]{tkz-doc} +\usepackage{etoc} +\gdef\tkznameofpack{tkz-graph} +\gdef\tkzversionofpack{2.0c} +\gdef\tkzdateofpack{2021/01/20} +\gdef\tkznameofdoc{doc-tkz-graph} +\gdef\tkzversionofdoc{2.0c} +\gdef\tkzdateofdoc{2021/01/20} +\gdef\tkzauthorofpack{Alain Matthes} +\gdef\tkzadressofauthor{} +\gdef\tkznamecollection{AlterMundus} +\gdef\tkzurlauthor{} +\gdef\tkzengine{lualatex} +\gdef\tkzurlauthorcom{http://altermundus.fr} + +% -- Packages --------------------------------------------------- +\usepackage[dvipsnames,svgnames]{xcolor} +\usepackage{calc} +\usepackage{tkz-berge} +\usetikzlibrary{calc,positioning,shapes} +\usepackage[colorlinks]{hyperref} +\hypersetup{ + linkcolor=Gray, + citecolor=Green, + filecolor=Mulberry, + urlcolor=NavyBlue, + menucolor=Gray, + runcolor=Mulberry, + linkbordercolor=Gray, + citebordercolor=Green, + filebordercolor=Mulberry, + urlbordercolor=NavyBlue, + menubordercolor=Gray, + runbordercolor=Mulberry, + pdfsubject={Euclidean Geometry}, + pdfauthor={\tkzauthorofpack}, + pdftitle={\tkznameofpack}, + pdfcreator={\tkzengine} +} + \usepackage{bookmark} +\usepackage{tkzexample} +\usepackage{fontspec} +\setmainfont{texgyrepagella}% + [Extension = .otf , + UprightFont = *-regular, + ItalicFont = *-italic, + BoldFont = *-bold, + BoldItalicFont = *-bolditalic] +\setsansfont{texgyreheros}[ + Extension = .otf, + UprightFont = *-regular , + ItalicFont = *-italic , + BoldFont = *-bold , + BoldItalicFont = *-bolditalic , +] + +\setmonofont{lmmono10-regular.otf}[ + Numbers={Lining,SlashedZero}, + ItalicFont=lmmonoslant10-regular.otf, + BoldFont=lmmonolt10-bold.otf, + BoldItalicFont=lmmonolt10-boldoblique.otf, +] +\newfontfamily\ttcondensed{lmmonoltcond10-regular.otf} +%% (La)TeX font-related declarations: +\linespread{1.05} % Pagella needs more space between lines + +\usepackage{unicode-math} +\usepackage{fourier-otf,zorna} +\usepackage{datetime,multicol,lscape} +\usepackage[french]{babel} +\usepackage[autolanguage]{numprint} +\usepackage{array,multirow,multido,booktabs} +\usepackage{shortvrb,fancyvrb} +\usepackage{fancybox} +\usepackage{stmaryrd} +\usepackage{xkeyval,array} +\usepackage[weather]{ifsym} +\RequirePackage{makeidx} +\makeindex + +\title{The package : tkz-graph.sty} +\author{Alain Matthes} + +\AtBeginDocument{\MakeShortVerb{\|}} + +\begin{document} + +\parindent=0pt +\author{\tkzauthorofpack} +\title{\tkznameofpack} +\date{\today} +\clearpage +\thispagestyle{empty} +\maketitle +\definecolor{iceberg}{rgb}{0.44, 0.65, 0.82} + +\AddToShipoutPicture*{% +\setlength\unitlength{1mm} +\put(70,120){% +\begin{tikzpicture}[scale=4] + \SetVertexNoLabel + \tikzstyle{VertexStyle}=[draw, + shape = circle, + shading = ball, + ball color = blue!50, + inner sep = 10pt, + outer sep = 0pt] + \tikzstyle{EdgeStyle}= [thick, + double = blue,% + double distance = 1pt] + \draw (0,0) node[circle,draw,shade, + ball color = iceberg, + minimum size = 2cm] (am){\textbf{tkz-graph}}; + \grIcosahedral[RA=1.4,RB=0.8] +\end{tikzpicture} +} +} + + +\clearpage +\tkzSetUpColors[background=white,text=darkgray] +\let\rmfamily\ttfamily + +\nameoffile{\tkznameofpack} +\defoffile{Le package \tkzname{tkz-graph.sty} est un package pour créer à l'aide de \TIKZ\ des graphes le plus simplement possible. Il fera partie d'une série de modules ayant comme point commun, la création de dessins utiles dans l'enseignement des mathématiques. La lecture de cette documentation va , je l'espère, vous permettre d'apprécier la simplicité d'utilisation de \TIKZ\ et vous permettre de commencer à le pratiquer. Il est accompagné du package \tkzname{tkz-berge.sty} qui permet de tracer des graphes particuliers de la théorie des graphes.} + +\presentation + +\vspace*{1cm} +\lefthand\ Je souhaite remercier \textbf{Till Tantau} pour avoir créé le merveilleux outil \href{http://sourceforge.net/projects/pgf/}{Ti\emph{k}Z}. + + +\vspace*{12pt} +\lefthand\ Vous trouverez de nombreux exemples sur mon site~: +\href{http://altermundus.fr/pages/download.html}{altermundus.fr} + +\vfill +Vous pouvez envoyer vos remarques, et les rapports sur des erreurs que vous aurez constatées à l'adresse suivante~: \href{mailto:al.ma@mac.com}{\textcolor{blue}{Alain Matthes}}. + +This file can be redistributed and/or modified under the terms of the LATEX +Project Public License Distributed from CTAN archives in directory \url{CTAN:// +macros/latex/base/lppl.txt}. + + + + \clearpage + \tableofcontents + \clearpage + + +Liste des macros dans l'ordre d'apparition : + +\medskip +\begin{itemize} +\item \tkzcname{SetVertexLabelOut} +\item \tkzcname{SetVertexLabelIn} +\item \tkzcname{SetVertexMath} +\item \tkzcname{SetVertexNoMath} +\item \tkzcname{SetUpVertex} +\item \tkzcname{Vertex} +\item \tkzcname{EA} +\item \tkzcname{WE} +\item \tkzcname{NO} +\item \tkzcname{SO} +\item \tkzcname{NOEA} +\item \tkzcname{NOWE} +\item \tkzcname{SOEA} +\item \tkzcname{SOWE} +\item \tkzcname{Vertices} +\item \tkzcname{SetUpEdge} +\item \tkzcname{Edge} +\item \tkzcname{Edges} +\item \tkzcname{Loop} +\item \tkzcname{grProb} +\item \tkzcname{SetGraphShadeColor} +\item \tkzcname{SetGraphArtColor} +\item \tkzcname{SetGraphColor} +\item \tkzcname{AddVertexColor} +\end{itemize} + +\vfill +%<--------------------------------------------------------------------------> +\renewcommand*{\VertexLightFillColor}{fondpaille} +%\include{TKZdoc-gr-installation} +\include{TKZdoc-gr-presentation} +\include{TKZdoc-gr-vertex} +\include{TKZdoc-gr-vertices} +\include{TKZdoc-gr-label} +\include{TKZdoc-gr-edge} +\include{TKZdoc-gr-style} +\include{TKZdoc-gr-prob} +\include{TKZdoc-gr-Welsh} +\include{TKZdoc-gr-annales} +\include{TKZdoc-gr-Dijkstra} +%<--------------------------------------------------------------------------> + +\clearpage\newpage +\small\printindex + +\end{document} + diff --git a/Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-presentation.tex b/Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-presentation.tex new file mode 100644 index 00000000000..dd30cf63e17 --- /dev/null +++ b/Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-presentation.tex @@ -0,0 +1,206 @@ +\section{Premiers graphes avec tkz-graph.sty} + + \tkzname{TikZ} est un outil que je trouve très agréable à utiliser pour la création de graphes. J'ai trouvé si simple son utilisation que je me suis demandé si cela avait un sens de créer un package pour la création de graphes. Pas de théorie des graphes dans ce package, seulement des outils pour leur construction. Trois arguments peuvent intervenir pour soutenir mon effort : + +\begin{enumerate} + +\item Certains utilisateurs n'ont pas envie d'apprendre quoi que ce soit sur \TIKZ\; cela est respectable et une simplification du code par l'intermédiaire d'un package peut avoir une certaine utilité. La syntaxe n'est plus tout à fait celle de \TIKZ\ mais celle de \LATEX. +\item Il est possible finalement de jouer avec les styles et d'optimiser certains situations, ainsi la création d'un graphe sans la moindre coordonnée est possible. On peut obtenir des variantes du graphe, simplement en jouant avec les styles. +\item La création de ce que l'on peut appeler les graphes classiques de la théorie des graphes. +\item Et pour terminer, cela peut être une approche en douceur de l'utilisation de \TIKZ\, par l'intermédiaire des options. + +\end{enumerate} + +Que peut apporter \tkzname{tkz-graph.sty} ? Il facilite la gestion des styles des sommets et des arêtes, et également le positionnement de ceux-ci. + +\subsection{Exemple simple avec \tkzname{tkz-graph}} +Avant d'expliquer le fonctionnement des différentes macros, il est possible de tester si le package est bien installé avec l'exemple simple suivant. Le code complet est donné. Le préambule peut évidemment être modifié. + + +\medskip +\begin{minipage}{.45\textwidth} +\begin{tkzltxexample}[] +% Author : Alain Matthes +% Encoding : UTF8 +% Engine : LuaLaTeX +\documentclass[border=3mm]{standalone} +\usepackage{tkz-graph} +\begin{document} + +\begin{tikzpicture}[scale=1.75] + \GraphInit[vstyle=Art] + \Vertex{A} + \Vertex[x=4,y=0]{B} + \Vertex[x=1,y=2]{C} + \Edge[style={bend left}](B)(A) + \Edges(A,B,C,A) +\end{tikzpicture} +\end{document} +\end{tkzltxexample} +\end{minipage} +\hfil\begin{minipage}{.40\textwidth} + \begin{tikzpicture}[scale=1.75] + \GraphInit[vstyle=Art] + \Vertex{A} + \Vertex[x=4,y=0]{B} + \Vertex[x=1,y=2]{C} + \Edge[style={bend left}](B)(A) + \Edges(A,B,C,A) +\end{tikzpicture} + \end{minipage} + +\newpage +\subsection{Exemple classique avec \tkzname{tkz-graph}} + +Voyons un exemple classique. Nous allons utiliser un style scolaire \tkzname{vstyle=Normal} ainsi que les macros \tkzcname{Vertices}, \tkzcname{NOEA} et \tkzcname{Edges} qui permet de créer une "chaîne" d'arêtes (edges). L'environnement \tkzname{scope} fait partie de \TIKZ, il est utilisé ici afin d'appliquer une rotation. + +\begin{center} +\begin{tkzexample}[latex=7cm, small] +\begin{tikzpicture} + \GraphInit[vstyle=Normal] + \SetGraphUnit{2} + \begin{scope}[rotate=-135] + \Vertices{circle}{A,B,C,E} + \end{scope} + \NOEA[unit=1.414](E){D} + \Edges(A,B,E,D,C,E,A,C,B) +\end{tikzpicture} +\end{tkzexample} +\end{center} + +\subsection{Modification du style} +Un style plus esthétique peut être choisi avec \tkzcname{GraphInit}. J'ai choisi \tkzname{Art} parmi une liste que vous découvrirez plus tard. + +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture} + \GraphInit[vstyle=Art] + \begin{scope}[rotate=-135] + \Vertices[unit=2]{circle}{A,B,C,E} + \end{scope} + \NOEA[unit=1.414](E){D} + \Edges(A,B,E,D,C,E,A,C,B) +\end{tikzpicture} +\end{tkzexample} + +\subsection{La ville de Königsberg avec \tkzname{tkz-graph}} + + +\begin{tkzexample}[latex=8cm] +\begin{tikzpicture} + \SetGraphUnit{3} + \GraphInit[vstyle=Shade] + \tikzset{LabelStyle/.style= {draw, + fill = yellow, + text = red}} + \Vertex{A} + \EA(A){B} + \EA(B){C} + \SetGraphUnit{6} + % modifie la distance entre les nodes + \NO(B){D} + \Edge[label=1](B)(D) + \tikzset{EdgeStyle/.append style = {bend left}} + \Edge[label=4](A)(B) + \Edge[label=5](B)(A) + \Edge[label=6](B)(C) + \Edge[label=7](C)(B) + \Edge[label=2](A)(D) + \Edge[label=3](D)(C) +\end{tikzpicture} +\end{tkzexample} + + + + +\medskip +Ce dernier exemple était important sur un plan historique, mais il était un peu compliqué car on doit modifier des styles. + +\subsection{La ville de Königsberg avec \TIKZ\ mais sans \tkzname{tkz-graph}} + +Voyons l'exemple précédent, sans l'utilisation du package \tkzname{tkz-graph}. +L'exemple peut être vu sur cet excellent site \url{http://www.texample.net/tikz/examples/bridges-of-konigsberg/}, voici le code complet. The result is on the next page. +D'abord le préambule + +\begin{tkzltxexample}[left margin=3cm,right margin=3cm] +% The seven bridges of Königsberg +% Author : Alain Matthes +% Encoding : UTF8 +% Engine : PDFLaTeX +\documentclass[border=3mm]{standalone} +\usepackage{fullpage} +\usepackage{tikz} +\usetikzlibrary{arrows,shapes,positioning} +\begin{document} +\end{tkzltxexample} + +Ensuite les styles principaux + +\begin{tkzltxexample}[left margin=3cm,right margin=3cm] +\begin{center} +\begin{tikzpicture} + \useasboundingbox (-1,-1) rectangle (11,11); + \tikzset{VertexStyle/.style = {shape = circle, + ball color = orange, + text = black, + inner sep = 2pt, + outer sep = 0pt, + minimum size = 24 pt}} + \tikzset{EdgeStyle/.style = {thick, + double = orange, + double distance = 1pt}} + \tikzset{LabelStyle/.style = {draw, + fill = yellow, + text = red}} +\end{tkzltxexample} + + enfin, le tracé +\begin{tkzltxexample}[left margin=3cm,right margin=3cm] + \node[VertexStyle](A){A}; + \node[VertexStyle,right=of A](B){B}; + \node[VertexStyle,right=of B](C){C}; + \node[VertexStyle,above= 7 cm of B](D){D}; + \draw[EdgeStyle](B) to node[LabelStyle]{1} (D) ; + \tikzset{EdgeStyle/.append style = {bend left}} + \draw[EdgeStyle](A) to node[LabelStyle]{2} (B); + \draw[EdgeStyle](B) to node[LabelStyle]{3} (A); + \draw[EdgeStyle](B) to node[LabelStyle]{4} (C); + \draw[EdgeStyle](C) to node[LabelStyle]{5} (B); + \draw[EdgeStyle](A) to node[LabelStyle]{6} (D); + \draw[EdgeStyle](D) to node[LabelStyle]{7} (C); + \end{tikzpicture} +\end{center} +\end{document} +\end{tkzltxexample} + +\begin{center} +\begin{tikzpicture}[scale=.75] + \useasboundingbox (-1,-1) rectangle (11,11); + \tikzset{VertexStyle/.style = {shape = circle, + ball color = orange, + text = black, + inner sep = 2pt, + outer sep = 0pt, + minimum size = 24 pt}} + \tikzset{EdgeStyle/.style = {thick, + double = orange, + double distance = 1pt}} + \tikzset{LabelStyle/.style = {draw, + fill = yellow, + text = red}} + + \node[VertexStyle](A){A}; + \node[VertexStyle,right= 4cm of A](B){B}; + \node[VertexStyle,right= 4cm of B](C){C}; + \node[VertexStyle,above= 7 cm of B](D){D}; + \draw[EdgeStyle](B) to node[LabelStyle]{1} (D) ; + \tikzset{EdgeStyle/.append style = {bend left}} + \draw[EdgeStyle](A) to node[LabelStyle]{2} (B); + \draw[EdgeStyle](B) to node[LabelStyle]{3} (A); + \draw[EdgeStyle](B) to node[LabelStyle]{4} (C); + \draw[EdgeStyle](C) to node[LabelStyle]{5} (B); + \draw[EdgeStyle](A) to node[LabelStyle]{6} (D); + \draw[EdgeStyle](D) to node[LabelStyle]{7} (C); +\end{tikzpicture} +\end{center} + +\endinput \ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-prob.tex b/Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-prob.tex new file mode 100644 index 00000000000..1ed52fd86d0 --- /dev/null +++ b/Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-prob.tex @@ -0,0 +1,147 @@ +\section{Graphes probabilistes } +%<–––––––––––––––––––––––––– graphes probabilistes ––––––––––––––––––––––––––> +\subsection{La macro \tkzcname{grProb} } +\begin{NewMacroBox}{grProb}{\oarg{local options} \var{left} \var{right} \var{N}\var{S}\var{W}\var{E}} + +\begin{tabular}{lll} +Arguments & & Définition \\ + \midrule + \TAline{Vertex-left} {}{Nom du sommet à gauche} + \TAline{Vertex-right} {}{Nom du sommet à droite} + \TAline{label N} {}{Étiquette située en haut} + \TAline{label S} {}{Étiquette située en bas} + \TAline{label W} {}{Étiquette située à gauche} + \TAline{label E} {}{Étiquette située à droite} + \bottomrule + \end{tabular} + +\medskip +\begin{tabular}{lll} +options & défaut & définition \\ +\midrule +\TOline{unit} {4cm} {distance entre les sommets } +\TOline{LposA} {180} {angle si label extérieur en A } +\TOline{LposB} {0 } {angle si label extérieur en B } +\TOline{Ldist} {0cm} {écart entre le node et le label } +\TOline{LoopDist} {4cm} {longueur des boucles } +\bottomrule +\end{tabular} + +\medskip +\emph{Cette macro permet de créer un graphe probabiliste d'ordre 2. } +\end{NewMacroBox} + +\subsection{Utilisation de \tkzcname{grProb} } + +\begin{center} +\begin{tkzexample}[vbox] +\begin{tikzpicture} + \useasboundingbox (-2.5,-2) rectangle (7.5,2); + \grProb{A}{B}{NO}{SO}{WE}{EA} +\end{tikzpicture} +\end{tkzexample} +\end{center} + +\begin{tkzexample}[latex=5cm] +\begin{tikzpicture}[scale=.5] + \useasboundingbox (-2.5,-2) rectangle (5,2); + \grProb[unit=4]{\Rain}{\Sun}{0,4}{0,3}{0,6}{0,7} +\end{tikzpicture} +\end{tkzexample} + + + + + +\subsection{\tkzcname{grProb} et le style par défaut } +\begin{center} +\begin{tkzexample}[latex=5cm] +\begin{tikzpicture}[scale=.5] + \useasboundingbox (-2.5,-2) rectangle (5,2); + \grProb{A}{B}{0,8}{0,6}{0,2}{0,4} +\end{tikzpicture} +\end{tkzexample} +\end{center} + +\subsection{\tkzcname{grProb} et le style « Simple »} +\begin{center} +\begin{tkzexample}[latex=5cm] +\begin{tikzpicture}[scale=.5] +\useasboundingbox (-2.5,-2) rectangle (5,2); +\SetVertexSimple +\grProb[Ldist=0.2cm]{Paris}{Lyon}% + {\scriptstyle\dfrac{2}{3}}{\scriptstyle\dfrac{3}{4}}% + {\scriptstyle\dfrac{1}{3}}{\scriptstyle\dfrac{1}{4}}% +\end{tikzpicture} +\end{tkzexample} +\end{center} + +\subsection{Utilisation d'un style personnalisé} +\begin{center} +\begin{tkzexample}[vbox] +\begin{tikzpicture} + \useasboundingbox (-2.5,-2.5) rectangle (7.5,2.5); + \tikzset{VertexStyle/.style = {shape = circle, + shading = ball, + ball color = Orange, + minimum size = 20pt, + draw,color=white}} + \tikzset{LabelStyle/.style = {draw,color=orange,fill=white}} + \tikzset{EdgeStyle/.style = {->, thick, + double = orange, + double distance = 1pt}} + +\grProb[Ldist=0.1cm,LposA=0,LposB=180]% + {Paris}{Lyon}% + {\scriptstyle\dfrac{2}{3}}{\scriptstyle\dfrac{3}{4}}% + {\scriptstyle\dfrac{1}{3}}{\scriptstyle\dfrac{1}{4}}% +\end{tikzpicture} +\end{tkzexample} +\end{center} + +\vfill +\newpage +\subsection{La macro \tkzcname{grProbThree}} + +\begin{NewMacroBox}{grProbThree}{\oarg{local options} \var{right} \var{up}\var{down} \var{rr/ru/rd}\var{uu/ud/ur}\var{dd/dr/du}} + +\begin{tabular}{llc} +Arguments & & Définition \\ +\midrule +\TAline{Vertex-right} {}{Nom du sommet à droite} +\TAline{Vertex-up} {}{Nom du sommet en haut} +\TAline{Vertex-down} {}{Nom du sommet en bas} +\TAline{rr/ru/rd} {}{arête partant de r vers r etc\dots} +\TAline{uu/ud/ur} {}{arête partant de u vers u etc\dots} +\TAline{dd/dr/du} {}{arête partant de d vers d etc\dots} +\bottomrule +\end{tabular} + +\medskip +\begin{tabular}{llc} +Options & Défaut & Définition \\ +\midrule +\TOline{unit} {4cm} {distance entre les sommets } +\TOline{LposA} {180} {angle si label extérieur en A } +\TOline{LposB} {0 } {angle si label extérieur en B } +\TOline{Ldist} {0cm} {écart entre le node et le label } +\TOline{LoopDist} {4cm} {longueur des boucles } +\bottomrule +\end{tabular} + +\medskip +\emph{Cette macro permet de créer un graphe probabiliste d'ordre 3. } +\end{NewMacroBox} + +\subsubsection{Graphe probabiliste d'ordre 3} +\begin{center} +\begin{tkzexample}[latex=7cm] +\begin{tikzpicture}[scale=.75] + \tikzset{LabelStyle/.style = {draw,fill=white}} + \grProbThree[unit=4]{\Rain}{\Sun}{\Cloud} + {0.1/0.3/0.6}{0.2/0.3/0.5}{0.25/0.35/0.4} +\end{tikzpicture} +\end{tkzexample} +\end{center} + +\endinput \ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-style.tex b/Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-style.tex new file mode 100644 index 00000000000..c444c78015d --- /dev/null +++ b/Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-style.tex @@ -0,0 +1,848 @@ +\section{Modification des styles des sommets} + +Différentes méthodes sont possibles mais il faut distinguer une utilisation globale ou locale. + +Les trois principaux styles sont \tkzname{VertexStyle}, \tkzname{EdgeStyle} et \tkzname{LabelStyle}. Le dernier est attaché aux étiquettes que peuvent avoir les arêtes. + +\begin{enumerate} +\item \tkzcname{GraphInit} permet de choisir un style prédfini et il est possible de retoucher ces styles en modifiant les valeurs choisies par défaut. +\item Les styles des sommets, des arêtes et étiquettes peuvent être personnalisés avec \tkzname{VertexStyle}, \tkzname{EdgeStyle} et \tkzname{LabelStyle}. On peut redéfinir ces styles avec \tkzcname{tikzset\{VertexStyle/.append style = \{ ... \}\}} ou bien \tkzcname{tikzset\{VertexStyle/.style = \{ ... \}\}}. La première méthode modifie un style existant alors que la seconde définit un style . +\item On peut utiliser les anciennes macros : \tkzcname{SetVertexSimple}, \tkzcname{SetVertexNormal}, \tkzcname{SetUpVertex} et \tkzcname{SetUpEdge} . + +\end{enumerate} + +\medskip +Il est possible de mélanger tout cela en sachant que la dernière définition d'un style l'emporte. + +\medskip +\begin{NewMacroBox}{GraphInit}{\oarg{local options}} +\begin{tabular}{llc} +Options & Défaut & Définition \\ \midrule +\TOline{vstyle} {Normal} {} \bottomrule +\end{tabular} + +\medskip +Les possibilités pour \tkzname{vstyle} sont : + +\begin{enumerate} + \item Empty, + \item Hasse, + \item Simple, + \item Classic, + \item Normal, + \item Shade, + \item Dijkstra + \item Welsh, + \item Art, + \item Shade Art. +\end{enumerate} + +\emph{Il y a pour le moment 10 styles pré-définis. Il est possible de modifier les valeurs par défaut.} +\end{NewMacroBox} + + +Utilisation des styles pré-définis + +\begin{enumerate} +\item GraphInit par défaut + +\begin{center} +\begin{tkzexample}[latex=7cm] +\begin{tikzpicture} + \SetGraphUnit{3} + \GraphInit[vstyle=Normal] + \Vertex{A}\EA(A){B} + \Edge(A)(B) +\end{tikzpicture} +\end{tkzexample} +\end{center} + +\item GraphInit et \tkzname{|vstyle=Empty|} + +\begin{center} +\begin{tkzexample}[latex=7cm] + \begin{tikzpicture} + \SetGraphUnit{3} + \GraphInit[vstyle=Empty] + \Vertex{A}\EA(A){B}\Edge(A)(B) +\end{tikzpicture} +\end{tkzexample} +\end{center} + +\item GraphInit et \tkzname{|vstyle=Hasse|} + +\begin{center} +\begin{tkzexample}[latex=7cm] +\begin{tikzpicture} + \SetGraphUnit{3} + \GraphInit[vstyle=Hasse] + \Vertex{A}\EA(A){B}\Edge(A)(B) +\end{tikzpicture} +\end{tkzexample} +\end{center} + +\item GraphInit et \tkzname{|vstyle=Simple|} + +\begin{center} +\begin{tkzexample}[latex=7cm] + \begin{tikzpicture} + \SetGraphUnit{3} + \GraphInit[vstyle=Simple] + \Vertex{A}\EA(A){B}\Edge(A)(B) +\end{tikzpicture} +\end{tkzexample} +\end{center} + +\item GraphInit et \tkzname{|vstyle=Classic|} + +\begin{center} +\begin{tkzexample}[latex=7cm] +\begin{tikzpicture} + \SetGraphUnit{3} + \GraphInit[vstyle=Classic] + \Vertex[Lpos=-90]{A} + \EA[Lpos=-90](A){B}\Edge(A)(B) +\end{tikzpicture} +\end{tkzexample} +\end{center} + + \item GraphInit et \tkzname{|vstyle=Normal|} + +\begin{center} +\begin{tkzexample}[latex=7cm] +\begin{tikzpicture} + \SetGraphUnit{3} + \GraphInit[vstyle=Normal] + \Vertex{A}\EA(A){B}\Edge(A)(B) +\end{tikzpicture} +\end{tkzexample} +\end{center} + +\begin{center} +\begin{tkzexample}[latex=7cm] +\begin{tikzpicture} + \SetGraphUnit{3} + \GraphInit[vstyle=Classic] + \Vertex[Lpos=-90]{Paris} + \EA[Lpos=-90](Paris){Berlin} + \Edge (Paris)(Berlin) +\end{tikzpicture} +\end{tkzexample} +\end{center} + +\item GraphInit et \tkzname{|vstyle=Shade|} + +\begin{center} +\begin{tkzexample}[latex=7cm] +\begin{tikzpicture} + \SetGraphUnit{3} + \GraphInit[vstyle=Shade] + \Vertex{A}\EA(A){B}\Edge(A)(B) +\end{tikzpicture} +\end{tkzexample} +\end{center} + +\item GraphInit et \tkzname{|vstyle=Dijkstra|} + +\begin{center} +\begin{tkzexample}[latex=7cm] +\begin{tikzpicture} + \SetGraphUnit{3} + \GraphInit[vstyle=Dijkstra] + \Vertex{A}\EA(A){B}\Edge[label=$7$](A)(B) +\end{tikzpicture} +\end{tkzexample} +\end{center} + +\item GraphInit et \tkzname{|vstyle=Welsh|} + +\begin{center} +\begin{tkzexample}[latex=7cm] +\begin{tikzpicture} + \SetGraphUnit{3} + \GraphInit[vstyle=Welsh] + \Vertex[Lpos=-90]{A} + \EA[Lpos=-90](A){B}\Edge(A)(B) +\end{tikzpicture} +\end{tkzexample} +\end{center} + +\item GraphInit et \tkzname{|vstyle=Art|} +\begin{center} +\begin{tkzexample}[latex=7cm] +\begin{tikzpicture} + \SetGraphUnit{3} + \GraphInit[vstyle=Art] + \Vertex{A}\EA(A){B}\Edge(A)(B) +\end{tikzpicture} +\end{tkzexample} +\end{center} + +\item GraphInit et \tkzname{|vstyle=Shade Art|} +\begin{center} +\begin{tkzexample}[latex=7cm] +\begin{tikzpicture} + \SetGraphUnit{3} + \GraphInit[vstyle=Shade Art] + \Vertex{A}\EA(A){B}\Edge(A)(B) +\end{tikzpicture} +\end{tkzexample} +\end{center} +\end{enumerate} + +\newpage +\tkzname{|vstyle|} est basé sur les macros suivantes qui peuvent être redéfinies. + +\medskip +\begin{tabular}{lc}\toprule +Commandes pour les styles & utilisation \\ \midrule +|\newcommand*{\VertexInnerSep}{0pt} | &\\ +|\newcommand*{\VertexOuterSep}{0pt} | &\\ +|\newcommand*{\VertexDistance}{3cm} | &\\ +|\newcommand*{\VertexShape}{circle}| &\\ +|\newcommand*{\VertexLineWidth}{0.8pt}| &\\ +|\newcommand*{\VertexLineColor}{black}| &\\ +|\newcommand*{\VertexLightFillColor}{white}| &\\ +|\newcommand*{\VertexDarkFillColor}{black}| &\\ +|\newcommand*{\VertexTextColor}{black}| &\\ +|\newcommand*{\VertexFillColor}{black}| &\\ +|\newcommand*{\VertexBallColor}{orange}| &\\ +|\newcommand*{\VertexBigMinSize}{24pt}| &\\ +|\newcommand*{\VertexInterMinSize}{18pt}| &\\ +|\newcommand*{\VertexSmallMinSize}{12pt}| &\\ +|\newcommand*{\EdgeFillColor}{orange}| &\\ +|\newcommand*{\EdgeArtColor}{orange}| &\\ +|\newcommand*{\EdgeColor}{black}| &\\ +|\newcommand*{\EdgeDoubleDistance}{1pt}| &\\ +|\newcommand*{\EdgeLineWidth}{0.8pt}| &\\ \bottomrule +\end{tabular} + + + +\subsection{Modification de \tkzname{vstyle=Art}} +\begin{center} +\begin{tkzexample}[vbox] +\begin{tikzpicture} + \SetGraphUnit{3} + \GraphInit[vstyle=Art] + \renewcommand*{\VertexInnerSep}{8pt} + \renewcommand*{\EdgeLineWidth}{3pt} + \renewcommand*{\VertexBallColor}{blue!50} + \Vertices{circle}{A,B,C,D,E} + \Edges(A,B,C,D,E,A,C,E,B,D) +\end{tikzpicture} +\end{tkzexample} +\end{center} + + +\vfill +\newpage + +\subsection{Modification du style \tkzname{VertexStyle} par défaut} + +Il est possible de redéfinir le style \tkzcname{SetVertexSimple}. + +Par défaut : + +\begin{tkzltxexample}[] +\tikzset{VertexStyle/.style = { + shape = circle, + fill = black, + inner sep = 0pt, + outer sep = 0pt, + minimum size = 8pt, + draw] +\end{tkzltxexample} + +maintenant si on utilise ceci : + +\begin{tkzexample}[latex=7cm] +\begin{tikzpicture} + \SetVertexSimple + \tikzset{VertexStyle/.style = { + shape = rectangle, + fill = red,% + inner sep = 0pt, + outer sep = 0pt, + minimum size = 10pt, + draw}} + \SetGraphUnit{3} + \Vertex{A}\EA(A){B} +\end{tikzpicture} +\end{tkzexample} + +\subsection{Modification d'un style \tkzname{VertexStyle}} + +C'est le style par défaut pour les sommets mais on peut le modifier. Voici quelques exemples utilisés plus tard dans ce document + +par défaut : + +\begin{tkzexample}[latex=7cm] +\begin{tikzpicture} +\SetGraphUnit{3} +\tikzset{VertexStyle/.style = {% + shape = circle, + shading = ball, + ball color = Orange, + minimum size = 20pt,draw}} + \SetVertexNoLabel + \Vertex{A}\EA[unit=3](A){B} +\end{tikzpicture} +\end{tkzexample} + + ou bien encore: + +\begin{tkzexample}[latex=7cm] +\begin{tikzpicture} +\SetGraphUnit{4} +\tikzset{VertexStyle/.style = {% + shape = circle, + shading = ball, + ball color = green!40!black,% + minimum size = 30pt,draw}} +\SetVertexNoLabel +\Vertex{A}\EA[unit=3](A){B} +\end{tikzpicture} +\end{tkzexample} + \vfill +\newpage + +\begin{NewMacroBox}{SetVertexSimple}{\oarg{local options}} + +\medskip +\emph{Il est possible de modifier les styles prédéfinis. La macro \tkzcname{SetVertexSimple} permet d'affiner le style \og Simple \fg des sommets.} +\begin{tabular}{llc} + \toprule +options & default & definition \\ \midrule +\TOline{Shape} {\textbackslash VertexShape }{} +\TOline{MinSize} {\textbackslash VertexSmallMinSize}{} +\TOline{LineWidth} {\textbackslash VertexLineWidth }{} +\TOline{LineColor} {\textbackslash VertexLineColor }{} +\TOline{FillColor} {\textbackslash VertexFillColor }{} \bottomrule +\end{tabular} +\end{NewMacroBox} + +\medskip +\subsection{Autre style \tkzcname{SetVertexSimple}} + +\begin{center} +\begin{tkzexample}[latex=7cm] +\begin{tikzpicture} + \SetVertexSimple[Shape=diamond, + FillColor=blue!50] + \Vertices[unit=3]{circle}{A,B,C,D,E} + \Edges(A,B,C,D,E,A,C,E,B,D) +\end{tikzpicture} +\end{tkzexample} +\end{center} + +\subsection{\tkzcname{SetVertexSimple}, \tkzname{inner sep} et \tkzname{outer sep}} +\begin{center} +\begin{tkzexample}[latex=7cm] +\begin{tikzpicture} +\SetGraphUnit{3} +\SetVertexSimple[MinSize = 12pt, + LineWidth = 4pt, + LineColor = red,% + FillColor = blue!60] +\tikzset{VertexStyle/.append style = + {inner sep = 0pt,% + outer sep = 2pt}} +\Vertices{circle}{A,B,C,D,E} +\Edges(A,B,C,D,E,A,C,E,B,D) +\end{tikzpicture} +\end{tkzexample} +\end{center} + +\vfill +\newpage +\begin{NewMacroBox}{SetVertexNormal}{\oarg{local options}} +\begin{tabular}{llc} +Options & Défaut & Définition \\ \midrule +\TOline{color} {\textbackslash EdgeColor } {} +\TOline{label} {no default } {} +\TOline{labelstyle} {no default } {} +\TOline{labeltext} {\textbackslash LabelTextColor } {} +\TOline{labelcolor} {\textbackslash LabelFillColor } {} +\TOline{style} {no default } {} +\TOline{lw} {\textbackslash EdgeLineWidth } {} + \bottomrule +\end{tabular} + +\medskip +\emph{Macro semblable à la précédente.} +\end{NewMacroBox} + +\subsection{Autre style \tkzcname{SetVertexNormal}} +\begin{center} +\begin{tkzexample}[vbox] +\begin{tikzpicture} + \SetGraphUnit{3} + \SetVertexNormal[Shape = rectangle,% + LineWidth = 2pt,% + FillColor = green!50] + \Vertices{circle}{A,B,C,D,E} + \Edges(A,B,C,D,E,A,C,E,B,D) +\end{tikzpicture} +\end{tkzexample} +\end{center} + + +\vfill\newpage +\begin{NewMacroBox}{SetUpVertex}{\oarg{local options}} +\begin{tabular}{llc} +Options & Défaut & Définition \\ \midrule +\TOline{Lpos} {-90 } {position label externe } +\TOline{Ldist} {0cm } {distance du label } +\TOline{style} {{} } {permet d'affiner le style } +\TOline{NoLabel} {false} {supprime le label } +\TOline{LabelOut}{false} {Label externe } \bottomrule +\end{tabular} + +\medskip +\emph{Cette macro permet de modifier les options précédentes. } +\end{NewMacroBox} + +\subsection{\tkzcname{SetUpVertex}} + +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture} + \SetGraphUnit{3} + \SetUpVertex[Lpos=-60,LabelOut] + \Vertex{A}\EA(A){B} +\end{tikzpicture} +\end{tkzexample} + + +\subsection{\tkzcname{SetUpVertex} et \tkzcname{tikzset}} + +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture} +\SetGraphUnit{4} +\SetVertexLabel +\SetUpVertex[Lpos=-60,LabelOut] +\tikzset{VertexStyle/.append style = + {outer sep = .5\pgflinewidth}} +\renewcommand*{\VertexLineWidth}{6pt} +\Vertex{A}\EA(A){B}\Edge(A)(B) +\end{tikzpicture} +\end{tkzexample} + +\vfill\newpage +\section{Modification des styles des arêtes} + +\subsection{Utilisation de l'option \tkzname{style} de la macro \tkzcname{Edge}} + +\subsubsection{Exemple 1} +\begin{tkzexample}[latex=8cm, small] +\begin{tikzpicture} + \SetGraphUnit{4} + \Vertex{e} + \EA(e){f} + \Edge(f)(e) + \Edge[style={bend left}](f)(e) + \Edge[style={bend right}](f)(e) +\end{tikzpicture} +\end{tkzexample} + +\subsubsection{Exemple 2} +\begin{tkzexample}[latex=8cm, small] +\begin{tikzpicture} + \SetGraphUnit{4} + \Vertex{e} + \EA(e){f} + \Edge[style={->,bend left}](f)(e) + \Edge[style={<-,bend right}](f)(e) +\end{tikzpicture} +\end{tkzexample} + +\subsubsection{Exemple 3} +\begin{tkzexample}[latex=8cm, small] +\begin{tikzpicture} + \SetGraphUnit{4} + \Vertex{a} + \EA(a){b} + \NO(b){c} + \SetUpEdge[style={->,bend right,ultra thick}, + color=red] + \Edge(a)(b) + \Edge(b)(c) + \Edge(c)(a) +\end{tikzpicture} +\end{tkzexample} + +\newpage +\subsection{Modification des styles par défaut \tkzcname{SetUpEdge}} + +Cette macro a une action globale et permet de rédéfinir un style. + +\begin{NewMacroBox}{SetUpEdge}{\oarg{local options}} +\begin{tabular}{llc} +Options & Défaut & Définition \\ +\midrule +\TOline{lw} {-90 } {position label externe } +\TOline{color}{\textbackslash EdgeLineWidth} {position label externe } +\TOline{label} {0cm } {distance du label } +\TOline{labelstyle} {{} } {permet d'affiner le style } +\TOline{labeltext} {false} {supprime le label } +\TOline{style}{false} {Label externe } \bottomrule +\end{tabular} + +\medskip +\emph{Cette macro permet de modifier les options précédentes. } +\end{NewMacroBox} + + +\subsubsection{Utilisation de \tkzcname{SetUpEdge} Exemple 1} +\begin{center} +{ \tikzset{VertexStyle/.style = {shape = circle, + draw = black, + fill = orange, + inner sep = 2pt, + outer sep = 0.5pt, + minimum size = 6mm, + line width = 1pt}} + \tikzset{every to/.style = {line width = 2pt, + color = orange}} +\begin{tkzexample}[vbox] + \begin{tikzpicture} + \SetGraphUnit{4} \SetUpEdge[lw=3pt] + \Vertex{A} + \EA (A){B} \NO (B){C} + \SO (B){D} \EA (B){E} + \Edges(A,B,C,A,D,E,C) + \end{tikzpicture} +\end{tkzexample} +} +\end{center} + + +\subsubsection{Utilisation de \tkzcname{SetUpEdge} Exemple 2} +{ \tikzset{VertexStyle/.style = { + shape = circle, + draw = black, + fill = orange, + inner sep = 2pt, + outer sep = 1pt, + minimum size = 6mm, + line width = 2pt}} +\begin{tkzexample}[latex=7cm] +\begin{tikzpicture} + \SetGraphUnit{3} + \SetUpEdge[lw=1.5pt] + \Vertex{A} + \EA(A){B} \WE(A){C} \NO(A){D} + \SO(A){E} \NOEA(A){F} \NOWE(A){G} + \SOEA(A){H} \SOWE(A){I} + \foreach \v in {B,C,D,E,F,G,H,I}{% + \Edge(A)(\v)} + \end{tikzpicture} +\end{tkzexample} } + +\subsection{Arête avec label \tkzname{LabelStyle}} + + +\begin{tkzexample}[latex=7cm, small] +\begin{tikzpicture} + \SetGraphUnit{4} + \tikzset{VertexStyle/.style = + {draw, + shape = circle, + shading = ball, + ball color = green!40!black, + minimum size = 24pt, + color = white}} + \tikzset{EdgeStyle/.style = + {->,bend right, + thick, + double = orange, + double distance = 1pt}} + \Vertex{a} + \EA(a){b} + \NO(b){c} + \tikzset{LabelStyle/.style = + {fill=white}} + \Edge[label=$1$](a)(b) + \Edge[label=$2$](b)(c) + \Edge[label=$3$](c)(a) +\end{tikzpicture} +\end{tkzexample} + + +\subsection{Utiliser un style intermédiaire} + +\begin{tkzltxexample}[] + \SetGraphUnit{4} + \tikzset{VertexStyle/.style = {shape = circle, + shading = ball, + ball color = Maroon!50, + minimum size = 24pt, + draw}} + \tikzset{TempEdgeStyle/.style = {ultra thick, + double = Maroon!50, + double distance = 2pt}} + \tikzset{LabelStyle/.style = {color = brown, + text=black}} +\end{tkzltxexample} + + +\begin{center} + \SetGraphUnit{4} + \tikzset{VertexStyle/.style = {shape = circle, + shading = ball, + ball color = Maroon!50, + minimum size = 24pt, + draw}} + \tikzset{TempEdgeStyle/.style = {ultra thick, + double = Maroon!50, + double distance = 2pt}} + \tikzset{LabelStyle/.style = {color = brown, + text=black}} +\begin{tkzexample}[latex=7cm, small] +\begin{tikzpicture}[scale=.8] + \Vertex{A} + \EA(A){B} \EA(B){C} + \SetGraphUnit{8} + \NO(B){D} + \tikzset{EdgeStyle/.style = {TempEdgeStyle}} + \Edge[label=1](B)(D) + \tikzset{EdgeStyle/.style = {TempEdgeStyle,bend left}} + \Edge[label=4](A)(B) \Edge[label=5](B)(A) + \Edge[label=6](B)(C) \Edge[label=7](C)(B) + \Edge[label=2](A)(D) \Edge[label=3](D)(C) +\end{tikzpicture} +\end{tkzexample} +\end{center} + +\vfill\newpage + +\section{Changement de couleurs dans les styles prédéfinis} +Trois macros sont proposées + +\subsection{\tkzcname{SetGraphShadeColor}} +\begin{NewMacroBox}{SetGraphShadeColor}{\var{ball color}\var{color}\var{double}} +\emph{\tkzcname{SetGraphShadeColor} permet de modifier les couleurs pour le style \tkzname{Shade}.} +\end{NewMacroBox} + +\subsubsection{Exemple} +Cet exemmple utilise une macrio de \tkzname{tkz-berge}\NamePack{tkz-berge} +\begin{center} +\begin{tkzexample}[latex=7cm] + \begin{tikzpicture} + \GraphInit[vstyle=Shade] + \SetGraphUnit{4} + \SetVertexNoLabel + \SetGraphShadeColor{red!50}{black}{red} + \Vertices{circle}{A,B,C,D,E} + \Edges(A,B,C,D,E,A,C,E,B,D) + \end{tikzpicture} +\end{tkzexample} + +\end{center} + +\newpage +\subsection{\tkzcname{SetGraphArtColor}} +\begin{NewMacroBox}{SetGraphArtColor}{\var{ball color}\var{color}} +\emph{\tkzcname{SetGraphArtColor} permet de modifier les couleurs pour le style \tkzname{Art}.} +\end{NewMacroBox} + +\subsubsection{Exemple} +\begin{center} + \begin{tkzexample}[vbox] + \begin{tikzpicture} + \SetVertexArt + \SetGraphArtColor{green!40!black}{magenta} + \SetGraphUnit{4} + \SetVertexNoLabel + \Vertices{circle}{A,B,C,D,E} + \Edges(A,B,C,D,E,A,C,E,B,D) + \end{tikzpicture} + \end{tkzexample} +\end{center} + + +\vfill\newpage +\subsection{\tkzcname{SetGraphColor}} +\begin{NewMacroBox}{SetGraphColor}{\var{fill color}\var{color}} +\emph{\tkzcname{SetGraphColor} permet de modifier les couleurs pour le style \tkzname{Normal}.} +\end{NewMacroBox} + + +\subsubsection{Exemple avec \tkzcname{SetGraphColor}} +\begin{center} + \begin{tkzexample}[vbox] + \begin{tikzpicture} + \SetGraphColor{yellow}{blue} + \SetGraphUnit{4} + \SetVertexNoLabel + \Vertices{circle}{A,B,C,D,E} + \Edges(A,B,C,D,E,A,C,E,B,D) + \end{tikzpicture} + \end{tkzexample} +\end{center} + + + +\newpage + +\subsection{Variation I autour des styles} + +\begin{center} +\begin{tkzexample}[vbox] +\begin{tikzpicture} + \SetVertexNormal[Shape = circle, + FillColor = orange, + LineWidth = 2pt] + \SetUpEdge[lw = 1.5pt, + color = black, + labelcolor = white, + labeltext = red, + labelstyle = {sloped,draw,text=blue}] + \Vertex[x=0 ,y=0]{K} + \Vertex[x=0 ,y=2]{F} + \Vertex[x=-1,y=4]{D} + \Vertex[x=3 ,y=7]{H} + \Vertex[x=8 ,y=5]{B} + \Vertex[x=9 ,y=2]{N} + \Vertex[x=5 ,y=0]{M} + \Vertex[x=3 ,y=1]{S} + \tikzset{EdgeStyle/.append style = {bend left}} + \Edge[label = $120$](K)(F) + \Edge[label = $650$](H)(S) + \Edge[label = $780$](H)(M) + \Edge[label = $490$](D)(B) + \Edge[label = $600$](D)(M) + \Edge[label = $580$](B)(M) + \Edge[label = $600$](H)(N) + \Edge[label = $490$](F)(H) + \tikzset{EdgeStyle/.append style = {bend right}} + \Edge[label = $630$](S)(B) + \Edge[label = $210$](S)(N) + \Edge[label = $230$](S)(M) +\end{tikzpicture} +\end{tkzexample} +\end{center} + + +\subsection{Variation II autour des styles} + +\begin{center} +\begin{tkzexample}[vbox] +\begin{tikzpicture} + \SetVertexNormal[Shape = circle, + FillColor = orange, + LineWidth = 2pt] + \SetUpEdge[lw = 1.5pt, + color = black, + labelcolor = white, + labeltext = red, + labelstyle = {sloped,draw,text=blue}] + \tikzstyle{EdgeStyle}=[bend left] + \Vertex[x=0, y=0]{G} + \Vertex[x=0, y=3]{A} + \Vertex[x=3, y=5]{P} + \Vertex[x=4, y=2]{C} + \Vertex[x=8, y=3]{Q} + \Vertex[x=7, y=0]{E} + \Vertex[x=3, y=-1]{R} + \Edges(G,A,P,Q,E) \Edges(C,A,Q) \Edges(C,R,G) \Edges(P,E,A) +\end{tikzpicture} +\end{tkzexample} +\end{center} + +\subsection{Variation III autour des styles} + +\begin{center} +\begin{tkzexample}[vbox] +\begin{tikzpicture} + \GraphInit[vstyle=Shade] + \SetGraphUnit{3} + \Vertex{e} + \NOEA(e){f}\SOEA(e){d} + \SOEA(f){h}\NOWE(f){g} + \WE(g){c} \SOWE(e){a} \SOWE(c){b} + \tikzstyle{LabelStyle}=[fill=white] + \tikzstyle{EdgeStyle}=[color=red] + \Edge[label=$3$](a)(b) + \Edge[label=$11$](a)(c) + \Edge[label=$6$](a)(e) + \Edge[label=$17$](a)(d) + \Edge[style={pos=.25},label=$20$](a)(g) + \Edge[label=$5$](c)(b) + \Edge[label=$6$](c)(e) + \Edge[label=$7$](c)(g) + \Edge[label=$7$](f)(e) + \Edge[label=$3$](d)(e) + \Edge[label=$9$](d)(h) + \Edge[label=$6$](g)(e) + \Edge[style={bend left,out=45,in=135},label=$11$](g)(h) + \Edge[label=$4$](f)(h) +\end{tikzpicture} +\end{tkzexample} +\end{center} + +\subsection{Variation IV autour des styles} + +\begin{center} +\begin{tkzexample}[vbox] +\begin{tikzpicture} + \SetUpEdge[lw = 1.5pt, + color = orange, + labelcolor = gray!30, + labelstyle = {draw}] + \SetGraphUnit{3} + \GraphInit[vstyle=Normal] + \Vertex{P} + \NOEA(P){B} + \SOEA(P){M} + \NOEA(B){D} + \SOEA(B){C} + \SOEA(C){L} + \tikzset{EdgeStyle/.style={->}} + \Edge[label=$3$](C)(B) + \Edge[label=$10$](D)(B) + \Edge[label=$10$](L)(M) + \Edge[label=$10$](B)(P) + \tikzset{EdgeStyle/.style={<->}} + \Edge[label=$4$](P)(M) + \Edge[label=$9$](C)(M) + \Edge[label=$4$](C)(L) + \Edge[label=$5$](C)(D) + \Edge[label=$10$](B)(M) + \tikzset{EdgeStyle/.style={<->,relative=false,in=0,out=60}} + \Edge[label=$11$](L)(D) +\end{tikzpicture} +\end{tkzexample} +\end{center} + +\subsection{Variation V autour des styles} + +\begin{center} +\begin{tkzexample}[vbox] +\begin{tikzpicture} + + \SetUpEdge[lw = 1.5pt, + color = orange, + labelcolor = white] + \GraphInit[vstyle=Normal] \SetGraphUnit{3} + \tikzset{VertexStyle/.append style={fill = red!50}} + \Vertex{P} + \NOEA(P){B} \SOEA(P){M} \NOEA(B){D} + \SOEA(B){C} \SOEA(C){L} + \tikzset{EdgeStyle/.style={->}} + \Edge[label=$3$](C)(B) + \Edge[label=$10$](D)(B) + \Edge[label=$10$](L)(M) + \Edge[label=$10$](B)(P) + \tikzset{EdgeStyle/.style={<->}} + \Edge[label=$4$](P)(M) + \Edge[label=$9$](C)(M) + \Edge[label=$4$](C)(L) + \Edge[label=$5$](C)(D) + \Edge[label=$10$](B)(M) + \tikzset{EdgeStyle/.style={<->,relative=false,in=0,out=60}} + \Edge[label=$11$](L)(D) +\end{tikzpicture} +\end{tkzexample} +\end{center} +\endinput \ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-vertex.tex b/Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-vertex.tex new file mode 100644 index 00000000000..27b93279230 --- /dev/null +++ b/Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-vertex.tex @@ -0,0 +1,242 @@ +\section{Vertex} +%<------------------------------------------------------------------------> +C'est bien évidemment la macro essentielle qui permet de placer des sommets. Les sommets peuvent être placés avec un système de coordonnées rectangulaires ou bien polaires ou encore relativement les uns par rapport aux autres. Quelques dispositions particulières sont également possibles. + +\subsection{\tkzcname{Vertex}} +\begin{NewMacroBox}{Vertex}{\oarg{local options}\var{Name}} +Un sommet se caractérise par~: +\begin{itemize} +\item sa référence, +\item sa position, +\item son label, +\item et le style. +\end{itemize} + +\medskip +Un argument non vide \IargName{Vertex}{Name} est obligatoire. Cet argument définit le nom de référence du node. C'est celui que l'on doit utiliser dans toute création de sommet (\tkzcname{Vertex}) Il ne faut pas le confondre avec le \tkzname{label} (étiquette) qui sera utilisé pour l'affichage. +On peut vouloir afficher $M_1$ alors que le nom lui sera $M1$. + +\medskip +Des options sont utilisées pour définir les quatre premières caractéristiques. Les styles texte et graphique sont traités séparément. + +\medskip +\begin{tabular}{llc} +\midrule +Options & Défaut & Définition \\ +\midrule +\TOline{x} {\{\}}{abscisse} +\TOline{y} {\{\}}{ordonnée} +\TOline{a} {\{\}}{angle} +\TOline{d} {\{\}}{distance} +\TOline{Node} {false}{utilisation d'une référence déjà définie} +\TOline{position} {\{\}}{style qui permet un positionnement relatif } +\TOline{dir} {\textbackslash EA}{direction pour un positionnement relatif } +\midrule +\TOline{empty} {false}{booléen permettant de ne pas afficher le sommet} +\midrule +\TOline{NoLabel} {false}{booléen supprime le label} +\TOline{LabelOut}{false}{booléen Label extérieur au node} +\TOline{L} {\{\}}{Le label} +\TOline{Math} {false}{booléen qui affiche le label en mode math} +\TOline{Ldist} {0cm }{distance du label au node} +\TOline{Lpos} {0 }{position du label par rapport au node} +\bottomrule +\end{tabular} + +\medskip +\emph{Cette macro permet de définir un sommet qui a un nom \tkzname{name} et un label.\\ +Si \tkzname{L}$=${} alors \tkzname{label} = \tkzname{Name} sinon \tkzname{label} = \tkzname{L}.} +\end{NewMacroBox} + +\subsubsection{Utilisation de coordonnées cartésiennes} +\tkzcname{Vertex[x=\meta{number},y=\meta{number}]\var{name}}. Coordonnées cartésiennes $x$ et $y$. + +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture} + \GraphInit[vstyle=Normal] + \draw[help lines] (0,0) grid (2,2); + \Vertex{A} % par défaut x = 0 et y = 0 + \Vertex[x=2 , y=0]{B} \Vertex[x=2 , y=2]{C} +\end{tikzpicture} +\end{tkzexample} + +\subsubsection{Utilisation de coordonnées polaires} + + \tkzcname{Vertex[a=\meta{number},d=\meta{number}]\var{vertex}} Les coordonnées polaires peuvent être aussi utilisées. J'ai utilisé une grille d'aide afin de constater le placement du sommet. + + +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture} + \GraphInit[vstyle=Normal] + \draw[help lines] (-2,0) grid (2,2); + \draw[red] (2,0) arc (0:180: 2 cm); + \Vertex{A} + \Vertex[a=45 , d=2 cm]{B} + \Vertex[a=135 , d=2 cm]{C} +\end{tikzpicture} +\end{tkzexample} + + + + + +\subsubsection{Option \tkzname{Node} : utilisation d'une position référencée} +Cette option permet de placer un sommet sur un Node déjà défini ou bien + un objet du type \og~coordinate~\fg. + % pb taile du node pour M ?? +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture} + \GraphInit[vstyle=Normal] + \draw[help lines] (0,0) grid (2,2); + \Vertex{A} \Vertex[x=2 , y=2]{B} + \coordinate (M) at ($ (A)!.5!(B) $){}; + \Vertex[Node]{M} +\end{tikzpicture} +\end{tkzexample} + +\vfill +%<------------------------------------------------------------------------–> +% ShortCuts +%<------------------------------------------------------------------------–> + +\newpage +\subsection{Raccourcis pour placement relatif} + +Pour effectuer des placements relatifs, il est nécessaire de définir une distance unité entre deux sommets. La macro suivante permet de définir cette distance. + +\begin{NewMacroBox}{SetGraphUnit}{\var{nombre}} +\emph{Cette macro permet de définir la distance entre deux sommets. La distance se réfère aux centres de ces sommets et le nombre est exprimé en \tkzname{cm}. Par défaut, l'unité est $1$ cm.} + +utilisation :\tkzcname{SetGraphUnit\{2\}} +\end{NewMacroBox} + +\begin{NewMacroBox}{ShortCut}{\oarg{local options}\varp{vertex A}\var{vertex B}} +Ces raccourcis permettent de créer un \tkzname{vertex B} relativement à un +\tkzname{vertex A}. La distance entre les deux sommets est déterminé par la valeur de \tkzname{unit} et par les unités de \TIKZ. Horizontalement et verticalement la distance est définie par \tkzname{unit}$\times$\tkzname{x} et +\tkzname{unit}$\times$\tkzname{y}. La valeur de \tkzname{unit} peut être redéfinie par la macro \tkzcname{SetGraphUnit} ou bien avec l'option \tkzname{unit}. Avec l'option la définition est locale; avec la macro, la définition est globale mais elle peut être locale si elle est intervient dans un goupe \TEX ou un environnement \tkzname{scope}. +Les raccourcis sont : + +\medskip +\begin{tabular}{lll} +\hline +Raccourcis & & Définition \\ +\midrule +\TMline{EA} {} {à l'est } +\TMline{WE} {} {à l'ouest} +\TMline{NO} {} {au nord} +\TMline{SO} {} {au sud} +\TMline{NOEA} {} {au nord-est soit "nord" puis "est"} +\TMline{NOWE} {} {au nord-ouest soit "nord" puis "ouest" } +\TMline{SOEA} {} {au sud-est soit "sud" puis "est"} +\TMline{SOWE} {} {au sud-ouest soit "sud" puis "ouest"} +\bottomrule +\end{tabular} + +\medskip +\emph{\tkzcname{NOEA} est un raccourci pour \tkzcname{NO}\tkzcname{EA}. par défaut, la distance entre les sommets avec ce raccourci est $\sqrt{2}\times$ \tkzname{unit}=$\sqrt{2}$. Les options sont celles de la macro \tkzcname{Vertex}. } +\end{NewMacroBox} + +Nous allons d'abord modifier la distance entre deux noeuds d'une façon générale avec \tkzcname{SetGraphUnit\{2\}} sinon par défaut \tkzname{unit =1}. + +\subsubsection{Utilisation des raccourcis avec les valeurs par défaut} +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture} + \draw[help lines] (-1,-1) grid (1,1); + \GraphInit[vstyle=Normal] + \Vertex{A} + \EA(A){B} \WE(A){C} \NO(A){D} \SO(A){E} + \NOEA(A){F} \NOWE(A){G} \SOEA(A){H} \SOWE(A){I} + \foreach \v in {B,C,D,E,F,G,H,I}{\Edge(A)(\v)} +\end{tikzpicture} +\end{tkzexample} + + +\subsubsection{Modification de l'unité avec \tkzcname{SetGraphUnit }} +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture} + \draw[help lines] (-2,-2) grid (2,2); + \SetGraphUnit{2} + \GraphInit[vstyle=Normal] + \Vertex{A} + \EA(A){B} \WE(A){C} \NO(A){D} \SO(A){E} + \NOEA(A){F} \NOWE(A){G} \SOEA(A){H} \SOWE(A){I} + \foreach \v in {B,C,D,E,F,G,H,I}{\Edge(A)(\v)} +\end{tikzpicture} +\end{tkzexample} + +\subsubsection{Modification des unités de \TIKZ\ : \tkzname{x=2 cm,y=1 cm} } +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture}[x=2 cm,y=1 cm] + \draw[help lines] (-1,-1) grid (1,1); + \GraphInit[vstyle=Normal] + \Vertex{A} + \EA(A){B} \WE(A){C} \NO(A){D} \SO(A){E} + \NOEA(A){F} \NOWE(A){G} \SOEA(A){H} \SOWE(A){I} + \foreach \v in {B,C,D,E,F,G,H,I}{\Edge(A)(\v)} +\end{tikzpicture} +\end{tkzexample} + + +\subsubsection{Exemple classique} +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture} + \draw[help lines] (-2,-2) grid (4,2); + \SetGraphUnit{2} + \coordinate (O) at (0,0); + \NOEA(O){A} \NOWE(O){B} \SOEA(O){D} + \SOWE(O){C} \NOEA(D){E} + \Edges(B,C,D,A,E,D,B,A,C) +\end{tikzpicture} +\end{tkzexample} + +\subsubsection{Autre exemple classique} +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture} + \draw[help lines] (0,-2) grid (4,2); + \SetGraphUnit{2} + \GraphInit[vstyle=Normal] + \Vertex{A} + \EA(A){B} \NO(B){C} \SO(B){D} \EA(B){E} + \Edges(A,B,C,A,D,E,C) +\end{tikzpicture} +\end{tkzexample} + + +\subsubsection{Modication locale de \tkzname{unit} avec l'option} +Le plus simple : +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture} + \draw[help lines] (0,0) grid (2,3); + \SetGraphUnit{2} + \Vertex{A} \EA(A){B} + \NO[unit=3](B){C} + \NO(A){D} +\end{tikzpicture} +\end{tkzexample} + + +\subsubsection{Modication locale de \tkzname{unit} avec l'environnement \tkzname{scope}} +\begin{tkzexample}[latex=7cm,small] + \begin{tikzpicture} + \draw[help lines] (0,0) grid (2,3); + \SetGraphUnit{2} + \Vertex{A} \EA(A){B} + \begin{scope} + \SetGraphUnit{3} \NO(B){C} + \end{scope} + \NO(A){D} +\end{tikzpicture} +\end{tkzexample} + +\subsubsection{Modication locale de \tkzname{unit} avec un groupe \TEX} +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture} + \draw[help lines] (0,0) grid (2,3); + \SetGraphUnit{2} + \Vertex{A} \EA(A){B} + {\SetGraphUnit{3} \NO(B){C}} + \NO(A){D} +\end{tikzpicture} +\end{tkzexample} + +\endinput \ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-vertices.tex b/Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-vertices.tex new file mode 100644 index 00000000000..d99a92dae95 --- /dev/null +++ b/Master/texmf-dist/doc/latex/tkz-graph/doc/latex/TKZdoc-gr-vertices.tex @@ -0,0 +1,172 @@ +\section{Placement de sommets sur une forme géométrique} +Il s'agit ici de placer un groupe de sommets suivant une direction donnée ou bien encore suivant une forme prédéfinie. Les sommets sont placés avec comme support une figure géométrique simple. La macro principale utilise une direction définie à l'aide de l'option dir, la version étoilée une forme particulière triangulaire, carrée etc... + + +\begin{NewMacroBox}{Vertices}{\oarg{local options}\var{type}\var{List of vertices}} +\emph{Il y a donc plusieurs types de formes géométriques, droite, triangle, carrés et cercles. La macro \tkzcname{SetGraphUnit} permet de modifier les longueurs. Pour les sommets alignés, ceux-ci sont placés suivant une direction donnée par |EA|, |WE|, |NO|, |SO|, |NOEA|, |NOWE|, |SOEA|, |SOWE|.} + +\medskip +\begin{tabular}{llc} + \toprule +Premier Argument & & Définition \\ +\midrule +\TAline{line } {} {Sommets alignés, une option détermine la direction} +\TAline{tr1 } {} {première forme de triangle} +\TAline{tr2 } {} {deuxième forme de triangle} +\TAline{tr3 } {} {troisième forme de triangle} +\TAline{tr4 } {} {quatrième forme de triangle} +\TAline{square} {} {quatre sommets sur un carré} +\TAline{circle} {} {sommets sur une cercle} +\bottomrule +\end{tabular} + +\medskip +\emph{Le second argument est une liste de noms pour les sommets.} + +\medskip +\begin{tabular}{llc} +\midrule +Options & Défaut & Définition \\ +\midrule +\TOline{dir} {EA} {permet de placer plusieurs sommets alignés} +\bottomrule +\end{tabular} + +\medskip +\emph{Les options sont celles d'un sommet (Vertex).} +\end{NewMacroBox} + + + +\subsection{\tkzcname{Vertices} à partir d'un sommet défini par des coordonnnées} + + +\begin{center} +\begin{tkzexample}[latex=7cm, ,small] +\begin{tikzpicture} + \SetGraphUnit{2} + \draw[help lines] (0,0) grid (5,2); + \Vertices[x=1,y=2]{line}{A,B,C} +\end{tikzpicture} +\end{tkzexample} +\end{center} + +\subsection{\tkzcname{Vertices} à partir d'une position donnée.} + +\begin{center} +\begin{tkzexample}[latex=7cm, ,small] +\begin{tikzpicture}[rotate=45] + \SetGraphUnit{2} + \draw[help lines] (0,0) grid (5,2); + \coordinate (A) at (1,1); + \Vertices[Node]{line}{A,B,C} +\end{tikzpicture} +\end{tkzexample} +\end{center} + +\subsection{Exemples avec une direction } + Il s'agit ici de placer une liste de sommets suivant une direction donnée, cette direction est définie à l'aide de l'option \tkzname{dir}. + + +\begin{center} +\begin{tkzexample}[latex=7cm, ,small] +\begin{tikzpicture} + \GraphInit[vstyle=Art] + \Vertices[dir=\NOEA]{line}{A,B,C,D} + \Vertices[dir=\NOWE]{line}{A,E,F,G} +\end{tikzpicture} +\end{tkzexample} +\end{center} + + +\subsection{Placement sur un triangle } + +Il y a différentes possibilités avec une forme triangulaire, mais les triangles sont isocèles rectangles. Voici dans l'ordre les formes \tkzname{tr1}, \tkzname{tr2} , \tkzname{tr3} et \tkzname{tr4} + + +\begin{tkzexample}[latex=8cm,small] +\begin{tikzpicture}\SetGraphUnit{2} + \Vertices{tr1}{A,B,C} +\end{tikzpicture}\hspace*{2cm} +\begin{tikzpicture}\SetGraphUnit{2} + \Vertices{tr2}{A,B,C} +\end{tikzpicture} +\end{tkzexample} + +\begin{tkzexample}[latex=8cm,small] +\begin{tikzpicture}\SetGraphUnit{2} + \Vertices{tr3}{A,B,C} +\end{tikzpicture}\hspace*{2cm} +\begin{tikzpicture}\SetGraphUnit{2} + \Vertices{tr4}{A,B,C} +\end{tikzpicture} +\end{tkzexample} + + +\subsection{Utilisation d'un carré} + + +Deux autres possibilités de placer un node. La première utilise un node obtenu à l'aide d'une intersection (voir le pgfmanual). Dans la première, j'ai redéfini la distance unité entre deux sommets à l'aide de \tkzcname{SetGraphUnit}. + +\begin{center} +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture} + \SetGraphUnit{3} + \GraphInit[vstyle=Shade] + \Vertices{square}{A,B,C,D} + \coordinate (E) at (intersection of A--C and B--D); + \Vertex[Node]{E}% voir option node +\end{tikzpicture} +\end{tkzexample} +\end{center} + + +\subsection{Utilisation d'un cercle } + +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture} + \SetGraphUnit{2} + \Vertices{circle}{A,B,C,D} +\end{tikzpicture} +\end{tkzexample} + + +\subsection{Utilisation d'un cercle et positionnement des labels } + +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture} \SetGraphUnit{2} + \GraphInit[vstyle=Classic] + \Vertices{circle}{A,B,C,D,E,F} +\end{tikzpicture} +\end{tkzexample} + + + +\subsection{Rotation et labels externes } + +|Lpos| = \tkzname{angle de la rotation}. Cela permet de faire une rotation du label autour du centre de chaque sommet et de suivre la rotation du graphe. Il suffit pour comprendre cette option de compiler l'exemple en l'omettant. + + +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture}[rotate=90] + \GraphInit[vstyle=Classic] + \Vertices[Lpos=90,unit=2]{circle}{A,B,C,D,E,F} +\end{tikzpicture} +\end{tkzexample} + +\subsection{Placement sur un cercle } + +Avec des labels externes, il faut procéder avec précaution. + +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture}[scale=.5] + \SetGraphUnit{4} + \GraphInit[vstyle=Classic] + \begin{scope}[rotate=45] + \Vertices[Lpos=45]{circle}{C,E,A,B} + \end{scope} + \NOEA[Lpos=90,unit=2.828](E){D} + \Edges(A,B,E,D,C,E,A,C,B) +\end{tikzpicture} +\end{tkzexample} +\endinput \ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/tkz-graph/test-graph.pdf b/Master/texmf-dist/doc/latex/tkz-graph/test-graph.pdf new file mode 100644 index 00000000000..92a28d6f033 Binary files /dev/null and b/Master/texmf-dist/doc/latex/tkz-graph/test-graph.pdf differ diff --git a/Master/texmf-dist/doc/latex/tkz-graph/test-graph.tex b/Master/texmf-dist/doc/latex/tkz-graph/test-graph.tex new file mode 100644 index 00000000000..62df83a7d77 --- /dev/null +++ b/Master/texmf-dist/doc/latex/tkz-graph/test-graph.tex @@ -0,0 +1,12 @@ +\documentclass[border=3mm]{standalone} +\usepackage{tkz-graph} +\begin{document} +\begin{tikzpicture}[scale=1.75] + \GraphInit[vstyle=Art] + \Vertex{A} + \Vertex[x=4,y=0]{B} + \Vertex[x=1,y=2]{C} + \Edge[style={bend left}](B)(A) + \Edges(A,B,C,A) +\end{tikzpicture} +\end{document} \ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/tkz-graph/tkz-graph-screen.pdf b/Master/texmf-dist/doc/latex/tkz-graph/tkz-graph-screen.pdf new file mode 100644 index 00000000000..ad826dad3e6 Binary files /dev/null and b/Master/texmf-dist/doc/latex/tkz-graph/tkz-graph-screen.pdf differ diff --git a/Master/texmf-dist/tex/latex/tkz-graph/tkz-graph.sty b/Master/texmf-dist/tex/latex/tkz-graph/tkz-graph.sty new file mode 100644 index 00000000000..c17a24c4ffb --- /dev/null +++ b/Master/texmf-dist/tex/latex/tkz-graph/tkz-graph.sty @@ -0,0 +1,1026 @@ +% tkz-graph.sty v2.0 +% Copyright 2021 Alain Matthes +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status “maintained”. +% +% The Current Maintainer of this work is Alain Matthes. + +%<---------------------------------------------------------------------------> +% Objet : Création de graphes +%<---------------------------------------------------------------------------> +\def\fileversion{2.00} +\def\filedate{2021/01/20} +\typeout{2021/01/20 v 2.00 tkz-graph.sty} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{tkz-graph}[2021/01/20 2.00 base for graphs] +%<---------------------------------------------------------------------------> + +\ifx\e@alloc\@undefined +\RequirePackage{etex} +\fi +\RequirePackage{ifthen} +\RequirePackage{xkeyval} +\RequirePackage{tikz} +\usetikzlibrary{arrows} +%<---------------------------------------------------------------------------> +% todo remove some counters +\newcounter{tkz@gr@a} +\newcounter{tkz@gr@b} +\newcounter{tkz@gr@c} +\newcounter{tkz@gr@e} +\newcounter{tkz@gr@d} +\newcounter{tkz@gr@p} +\newcounter{tkz@gr@i} +\newcounter{tkz@gr@n} +\newcounter{tkz@gr@ta} +\newcounter{tkz@gr@tb} +%<---------------------------------------------------------------------------> +% Init vertex +%<---------------------------------------------------------------------------> +%<---------------------------------------------------------------------------> +\def\tkz@gr@background@color{white} +\def\tkz@gr@text@color{black} +\global\edef\tkz@suc@bkc{\tkz@gr@background@color} +\global\edef\tkz@suc@txt{\tkz@gr@text@color} +\pgfkeys{ +/tkzsupcol/.cd, + background/.code = {\global\edef\tkz@suc@bkc{#1}}, + text/.code = {\global\edef\tkz@suc@txt{#1}}, +} +\def\tkzSetUpColors{\pgfutil@ifnextchar[{\tkz@SetUpColors}{\tkz@SetUpColors[]}} +\def\tkz@SetUpColors[#1]{% +\begingroup +\pgfkeys{% +/tkzsupcol/.cd, + background = \tkz@gr@background@color, + text = \tkz@gr@text@color + } +\pgfqkeys{/tkzsupcol}{#1} +\pagecolor{\tkz@suc@bkc} +\color{\tkz@suc@txt} +\endgroup +} + +\newcommand*{\GraphUnit}{1} +\newcommand*{\VertexInnerSep}{2pt} +\newcommand*{\VertexOuterSep}{0pt} +\newcommand*{\VertexDistance}{3cm} +\newcommand*{\VertexShape}{circle} +\newcommand*{\VertexLineWidth}{0.5pt} +\newcommand*{\VertexLineColor}{\tkz@suc@txt} +\newcommand*{\VertexLightFillColor}{\tkz@suc@bkc} +\newcommand*{\VertexDarkFillColor}{\tkz@suc@txt} +\newcommand*{\VertexTextColor}{\tkz@suc@txt} +\newcommand*{\VertexFillColor}{\tkz@suc@txt} +\newcommand*{\VertexBallColor}{orange} +\newcommand*{\VertexBigMinSize}{24pt} +\newcommand*{\VertexInterMinSize}{18pt} +\newcommand*{\VertexSmallMinSize}{12pt} +\newcommand*{\EdgeFillColor}{orange} +\newcommand*{\EdgeArtColor}{orange} +\newcommand*{\EdgeColor}{\tkz@suc@txt} +\newcommand*{\EdgeDoubleDistance}{1pt} +\newcommand*{\EdgeLineWidth}{0.8pt} +\newcommand*{\LabelTextColor}{\tkz@suc@txt} +\newcommand*{\LabelFillColor}{\tkz@suc@bkc} + +\tikzset{pre/.style={<-,shorten <=1pt,>=stealth',semithick}} +\tikzset{post/.style={->,shorten <=1pt,>=stealth',semithick}} +%<---------------------------------------------------------------------------> +% Simple Vertex +%<---------------------------------------------------------------------------> +\define@cmdkey [GR] {SVS} {Shape}{} +\define@cmdkey [GR] {SVS} {MinSize}{} +\define@cmdkey [GR] {SVS} {LineWidth}{} +\define@cmdkey [GR] {SVS} {LineColor}{} +\define@cmdkey [GR] {SVS} {FillColor}{} +\define@cmdkey [GR] {SVS} {InnerSep}{} +\define@cmdkey [GR] {SVS} {OuterSep}{} +\presetkeys [GR] {SVS} {Shape = \VertexShape, + MinSize = \VertexSmallMinSize, + LineWidth = \VertexLineWidth, + LineColor = \VertexLineColor, + InnerSep = \VertexInnerSep, + OuterSep = \VertexOuterSep, + FillColor = \VertexFillColor}{} +\newcommand*{\SetVertexSimple}[1][]{\GR@SetVertexSimple[#1]}% +\def\GR@SetVertexSimple[#1]{% +\setkeys[GR]{SVS}{#1}% +\presetkeys[GR]{vertex}{NoLabel = true}{}% +\tikzset{VertexStyle/.style = {draw, + shape = \cmdGR@SVS@Shape, + color = \cmdGR@SVS@LineColor, + fill = \cmdGR@SVS@FillColor, + inner sep = \cmdGR@SVS@InnerSep, + outer sep = \cmdGR@SVS@OuterSep, + minimum size = \cmdGR@SVS@MinSize, + line width = \cmdGR@SVS@LineWidth}} +\tikzset{EdgeStyle/.style = {line width = \EdgeLineWidth, + \EdgeColor}} +\tikzset{LabelStyle/.style={}}} +%<---------------------------------------------------------------------------> +% Shade Vertex +%<---------------------------------------------------------------------------> +\define@cmdkey [GR] {shade} {Shape}{} +\define@cmdkey [GR] {shade} {MinSize}{} +\define@cmdkey [GR] {shade} {LineWidth}{} +\define@cmdkey [GR] {shade} {LineColor}{} +\define@cmdkey [GR] {shade} {BallColor}{} +\define@cmdkey [GR] {shade} {InnerSep}{} +\define@cmdkey [GR] {shade} {OuterSep}{} +\presetkeys [GR] {shade} {Shape = \VertexShape, + MinSize = \VertexBigMinSize, + LineWidth = \VertexLineWidth, + LineColor = \VertexLineColor, + InnerSep = \VertexInnerSep, + OuterSep = \VertexOuterSep, + BallColor = \VertexBallColor}{} +\newcommand*{\SetVertexShade}[1][]{\GR@SetVertexShade[#1]}% +\def\GR@SetVertexShade[#1]{% +\setkeys[GR]{shade}{#1}% +\presetkeys[GR]{vertex}{NoLabel = false}{}% +\tikzset{VertexStyle/.style = {draw, + shape = \cmdGR@shade@Shape, + ball color = \cmdGR@shade@BallColor, + inner sep = \cmdGR@shade@InnerSep, + outer sep = \cmdGR@shade@OuterSep, + minimum size = \cmdGR@shade@MinSize, + line width = \VertexLineWidth}} +\tikzset{EdgeStyle/.style = {line width = \EdgeLineWidth, + \EdgeColor,% color outside + double = \EdgeFillColor,% inside + double distance = \EdgeDoubleDistance}}% +\tikzset{LabelStyle/.style={}}} +%<---------------------------------------------------------------------------> +% Art Vertex +%<---------------------------------------------------------------------------> +\define@cmdkey [GR] {art} {Shape}{} +\define@cmdkey [GR] {art} {MinSize}{} +\define@cmdkey [GR] {art} {LineWidth}{} +\define@cmdkey [GR] {art} {LineColor}{} +\define@cmdkey [GR] {art} {BallColor}{} +\define@cmdkey [GR] {art} {InnerSep}{} +\define@cmdkey [GR] {art} {OuterSep}{} +\presetkeys [GR] {art} {Shape = \VertexShape, + MinSize = \VertexSmallMinSize, + LineWidth = \VertexLineWidth, + LineColor = \VertexLineColor, + InnerSep = \VertexInnerSep, + OuterSep = \VertexOuterSep, + BallColor = \VertexBallColor}{} +\newcommand*{\SetVertexArt}[1][]{\GR@SetVertexArt[#1]}% +\def\GR@SetVertexArt[#1]{% +\setkeys[GR]{art}{#1}% +\presetkeys[GR]{vertex}{NoLabel = true}{}% +\tikzset{VertexStyle/.style = {draw, + shape = \cmdGR@art@Shape, + ball color = \cmdGR@art@BallColor, + inner sep = \cmdGR@art@InnerSep, + outer sep = \cmdGR@art@OuterSep, + minimum size = \cmdGR@art@MinSize, + line width = \VertexLineWidth}} +\tikzset{EdgeStyle/.style = {line width = \EdgeLineWidth, + \EdgeArtColor}} +\tikzset{LabelStyle/.style = {}}} +%<---------------------------------------------------------------------------> +% Normal Vertex +%<---------------------------------------------------------------------------> +\define@cmdkey [GR] {SVN} {Shape}{} +\define@cmdkey [GR] {SVN} {MinSize}{} +\define@cmdkey [GR] {SVN} {LineWidth}{} +\define@cmdkey [GR] {SVN} {LineColor}{} +\define@cmdkey [GR] {SVN} {FillColor}{} +\define@cmdkey [GR] {SVN} {TextColor}{} +\define@cmdkey [GR] {SVN} {InnerSep}{} +\define@cmdkey [GR] {SVN} {OuterSep}{} +\presetkeys [GR] {SVN} {Shape = \VertexShape, + MinSize = \VertexInterMinSize, + LineWidth = \VertexLineWidth, + LineColor = \VertexLineColor, + FillColor = \VertexLightFillColor, + InnerSep = \VertexInnerSep, + OuterSep = \VertexOuterSep, + TextColor = \VertexTextColor}{} +\newcommand*{\SetVertexNormal}[1][]{\GR@SetVertexNormal[#1]}% +\def\GR@SetVertexNormal[#1]{% +\setkeys[GR]{SVN}{#1}% +\tikzset{VertexStyle/.style = {shape = \cmdGR@SVN@Shape, + minimum size = \cmdGR@SVN@MinSize, + line width = \cmdGR@SVN@LineWidth, + color = \cmdGR@SVN@LineColor, + fill = \cmdGR@SVN@FillColor, + text = \cmdGR@SVN@TextColor, + inner sep = \cmdGR@SVN@InnerSep, + outer sep = \cmdGR@SVN@OuterSep, + draw}} +\tikzset{EdgeStyle/.style = {line width = \EdgeLineWidth, + \EdgeColor}} +\tikzset{LabelStyle/.style={}}} +\SetVertexNormal% default +%<---------------------------------------------------------------------------> +\define@cmdkey [GR] {init} {unit}{} +\define@choicekey*[GR]{init}{vstyle}[\val\nr]{Empty,% + Hasse,% + Simple,% + Classic,% + Normal,% + Shade,% + Dijkstra,% + Welsh,% + Art,% + Shade Art}{% +\edef\GR@init@vstyle{\nr} +\ifcase\nr\relax +% Empty +\presetkeys [GR] {vertex} {LabelOut = false}{}% +\tikzset{VertexStyle/.style = {shape = \VertexShape, + color = \VertexLineColor, + fill = \VertexLightFillColor, + inner sep = \VertexInnerSep, + outer sep = 0.5\pgflinewidth, + text = \VertexTextColor, + minimum size = \VertexSmallMinSize, + line width = \VertexLineWidth}} +\tikzset{EdgeStyle/.style = {line width = \EdgeLineWidth,\EdgeColor}} +\tikzset{LabelStyle/.style={}} +\or +% Hasse +\presetkeys [GR] {vertex} {NoLabel = true}{}% +\tikzset{VertexStyle/.style = {draw, + shape = \VertexShape, + color = \VertexLineColor, + fill = \VertexLightFillColor, + inner sep = \VertexInnerSep, + outer sep = 0.5\pgflinewidth, + text = \VertexTextColor, + minimum size = \VertexSmallMinSize, + line width = \VertexLineWidth}} +\tikzset{EdgeStyle/.style = {line width = \EdgeLineWidth, + \EdgeColor}} +\tikzset{LabelStyle/.style={}} +\or +% Simple +\presetkeys [GR] {vertex} {NoLabel = true}{}% +\tikzset{VertexStyle/.style = {draw, + shape = \VertexShape, + color = \VertexLineColor, + fill = \VertexDarkFillColor, + inner sep = \VertexInnerSep, + outer sep = 0.5\pgflinewidth, + text = \VertexTextColor, + minimum size = \VertexSmallMinSize, + line width = \VertexLineWidth}} +\tikzset{EdgeStyle/.style = {line width = \EdgeLineWidth, + \EdgeColor}} +\tikzset{LabelStyle/.style={}} +% Classic +\or +\presetkeys [GR] {vertex} {LabelOut = true}{}% +\tikzset{VertexStyle/.style = {draw, + shape = \VertexShape, + color = \VertexLineColor, + fill = \VertexDarkFillColor, + inner sep = \VertexInnerSep, + outer sep = 0.5\pgflinewidth, + text = \VertexTextColor, + minimum size = \VertexSmallMinSize, + line width = \VertexLineWidth}} +\tikzset{EdgeStyle/.style = {line width = \EdgeLineWidth, + \EdgeColor}} +\tikzset{LabelStyle/.style={}} +% Normal +\or +\presetkeys [GR] {vertex} {LabelOut = false}{}% +\tikzset{VertexStyle/.style = {draw, + shape = \VertexShape, + minimum size = \VertexInterMinSize, + line width = \VertexLineWidth, + color = \VertexLineColor, + outer sep = 0.5\pgflinewidth, + fill = \VertexLightFillColor, + text = \VertexTextColor, + line width = \VertexLineWidth}} +\tikzset{EdgeStyle/.style = {line width = \EdgeLineWidth, + \EdgeColor}} +\tikzset{LabelStyle/.style={}} +% Shade +\or +\presetkeys [GR] {vertex} {LabelOut = false}{}% +\tikzset{VertexStyle/.style = {draw, + shape = \VertexShape, + ball color = \VertexBallColor, + color = \VertexLineColor, + text = \VertexTextColor, + inner sep = \VertexInnerSep, + outer sep = \VertexOuterSep, + minimum size = \VertexBigMinSize, + line width = \VertexLineWidth}} +\tikzset{EdgeStyle/.style = {line width = \EdgeLineWidth, + \EdgeColor,% color outside + double = \EdgeFillColor,% inside + double distance = \EdgeDoubleDistance}}% +\tikzset{LabelStyle/.style={}} +% Dijkstra +\or +\presetkeys [GR] {vertex} {LabelOut = false}{}% +\tikzset{VertexStyle/.style = {draw, + shape = \VertexShape, + color = \VertexLineColor, + fill = \VertexLightFillColor, + inner sep = \VertexInnerSep, + outer sep = 0.5\pgflinewidth, + text = \VertexTextColor, + minimum size = \VertexInterMinSize, + line width = \VertexLineWidth}} +\tikzset{EdgeStyle/.style = {line width = \EdgeLineWidth, + \EdgeColor}} +\tikzset{LabelStyle/.style={}} +% Welsh +\or +\presetkeys [GR] {vertex} {LabelOut = true}{}% +\tikzset{VertexStyle/.style = {draw, + shape = \VertexShape, + color = \VertexLineColor, + fill = \VertexLightFillColor, + inner sep = \VertexInnerSep, + outer sep = \VertexOuterSep, + text = \VertexTextColor, + minimum size = \VertexSmallMinSize, + line width = \VertexLineWidth}} +\tikzset{EdgeStyle/.style = {line width = \EdgeLineWidth, + \EdgeColor}}% +\tikzset{LabelStyle/.style={}} +% Art +\or +\presetkeys [GR] {vertex} {NoLabel = true}{}% +\tikzset{VertexStyle/.style = {shape = \VertexShape, + ball color = \VertexBallColor, + color = \VertexLineColor, + inner sep = \VertexInnerSep, + outer sep = \VertexOuterSep, + minimum size = \VertexSmallMinSize, + line width = \VertexLineWidth}}% +\tikzset{EdgeStyle/.style = {line width = \EdgeLineWidth, + \EdgeArtColor}} +\tikzset{LabelStyle/.style = {}} +% ShadeArt +\or +\presetkeys [GR] {vertex} {NoLabel = true}{}% +\tikzset{VertexStyle/.style = {shape = \VertexShape, + ball color = \VertexBallColor, + inner sep = \VertexInnerSep, + outer sep = \VertexOuterSep, + minimum size = \VertexSmallMinSize, + line width = \VertexLineWidth}} +\tikzset{EdgeStyle/.style = {line width = \EdgeLineWidth, + \EdgeColor, + double = \EdgeFillColor, + double distance = .5\EdgeDoubleDistance}} +\tikzset{LabelStyle/.style = {}} +\fi% +} + +\presetkeys [GR] {init} {vstyle = Normal,% + unit = \GraphUnit}{} + +\newcommand*{\SetGraphUnit}[1]{\renewcommand{\GraphUnit}{#1}}% + +\newcommand*{\GraphInit}[1][]{\setkeys[GR]{init}{#1}% +\edef\GraphUnit{\cmdGR@init@unit}% +}% +%<---------------------------------------------------------------------------> +% Colors +%<---------------------------------------------------------------------------> +\newcommand*{\SetGraphShadeColor}[3]{% + \tikzset{VertexStyle/.append style = {ball color=#1}} + \tikzset{EdgeStyle/.append style = {color=#2,double=#3}} +} +\newcommand*{\SetGraphArtColor}[2]{% + \tikzset{VertexStyle/.append style = {ball color=#1}} + \tikzset{EdgeStyle/.append style = {color=#2}} +} +\newcommand*{\SetGraphColor}[2]{% + \tikzset{VertexStyle/.append style = {fill=#1}} + \tikzset{EdgeStyle/.append style = {color=#2}} +} +\newcommand*{\AddVertexColor}[2]{% +\begingroup + \tikzset{VertexStyle/.append style = {fill=#1}} + \foreach \v in {#2} + {\Vertex[Node,NoLabel]{\v}} +\endgroup +} +%<---------------------------------------------------------------------------> +\newcommand*{\SetVertexNoLabel}{% + \presetkeys [GR] {vertex} {NoLabel = true}{}% +} +% add RV +\newcommand*{\SetVertexLabel}{% + \presetkeys [GR] {vertex} {NoLabel = false}{}% +} +%<---------------------------------------------------------------------------> +\newcommand*{\SetVertexLabelOut}{% + \presetkeys [GR] {vertex} {LabelOut = true}{}% +} +\newcommand*{\SetVertexLabelIn}{% + \presetkeys [GR] {vertex} {LabelOut = false}{}% +} +\newcommand*{\SetVertexMath}{% + \presetkeys [GR] {vertex} {Math = true}{}% + \presetkeys [GR] {cl} {Math = true}{}% +} +\newcommand*{\SetVertexNoMath}{% + \presetkeys [GR] {vertex} {Math = false}{}% + \presetkeys [GR] {cl} {Math = false}{}% +} +%<---------------------------------------------------------------------------> +% Init SetUpVertex +%<---------------------------------------------------------------------------> +\define@cmdkey [GR] {SUV} {Lpos}{} +\define@cmdkey [GR] {SUV} {Ldist}{} +\define@cmdkey [GR] {SUV} {Style}{} +\define@cmdkey [GR] {SUV} {MinSize}{} +\define@cmdkey [GR] {SUV} {LineWidth}{} +\define@cmdkey [GR] {SUV} {TextColor}{} +\define@cmdkey [GR] {SUV} {LineColor}{} +\define@cmdkey [GR] {SUV} {FillColor}{} +\define@cmdkey [GR] {SUV} {InnerSep}{} +\define@cmdkey [GR] {SUV} {OuterSep}{} +\define@cmdkey [GR] {SUV} {Unit}{} +\define@boolkey [GR] {SUV} {NoLabel} [true]{} +\define@boolkey [GR] {SUV} {LabelOut}[true]{} +\define@boolkey [GR] {SUV} {Math}[true]{} +\presetkeys [GR] {SUV} {Ldist = 0cm, + Lpos = 0, + Style = {}, + LabelOut = false, + NoLabel = false, + Math = false, + Unit = \GraphUnit, + MinSize = \VertexInterMinSize, + TextColor = \VertexTextColor, + LineColor = \VertexLineColor, + FillColor = \VertexLightFillColor, + LineWidth = \VertexLineWidth, + InnerSep = \VertexInnerSep, + OuterSep = \VertexOuterSep}{} +%<---------------------------------------------------------------------------> +% SetUpVertex +%<---------------------------------------------------------------------------> +\newcommand*{\SetUpVertex}[1][]{\GR@SetUpVertex[#1]}% +\def\GR@SetUpVertex[#1]{% +\setkeys[GR]{SUV}{#1}% +\presetkeys [GR] {vertex} {Lpos = \cmdGR@SUV@Lpos, + Ldist = \cmdGR@SUV@Ldist, + style = \cmdGR@SUV@Style, + unit = \cmdGR@SUV@Unit}{}% +\tikzset{VertexStyle/.append style = {inner sep = \cmdGR@SUV@InnerSep, + outer sep = \cmdGR@SUV@OuterSep, + minimum size = \cmdGR@SUV@MinSize, + text = \cmdGR@SUV@TextColor, + color = \cmdGR@SUV@LineColor, + fill = \cmdGR@SUV@FillColor, + line width = \cmdGR@SUV@LineWidth}} +\ifGR@SUV@NoLabel% + \presetkeys [GR] {vertex} {NoLabel = true}{}% +\fi% +\ifGR@SUV@LabelOut% + \presetkeys [GR] {vertex} {LabelOut = true}{}% +\fi% +\ifGR@SUV@Math% + \presetkeys [GR] {vertex} {Math = true}{}% +\fi% +} +%<---------------------------------------------------------------------------> +% Init Vertex +%<---------------------------------------------------------------------------> +\define@boolkey [GR] {vertex} {empty}[true]{} +\define@cmdkey [GR] {vertex} {unit}{} +\define@cmdkey [GR] {vertex} {x}{} +\define@cmdkey [GR] {vertex} {y}{} +\define@cmdkey [GR] {vertex} {a}{} +\define@cmdkey [GR] {vertex} {d}{} +\define@boolkey [GR] {vertex} {Node}[true]{} +\define@cmdkey [GR] {vertex} {dir}{} +\define@cmdkey [GR] {vertex} {style}{} +\define@cmdkey [GR] {vertex} {position}{} +\define@cmdkey [GR] {vertex} {L}{} +\define@cmdkey [GR] {vertex} {Lpos}{} +\define@cmdkey [GR] {vertex} {Ldist}{} +\define@boolkey [GR] {vertex} {NoLabel}[true]{} +\define@boolkey [GR] {vertex} {Math}[true]{} +\define@boolkey [GR] {vertex} {LabelOut}[true]{} +\presetkeys [GR] {vertex} {Node = false, + NoLabel = false, + LabelOut = false, + empty = false, + Math = false, + x = {}, + y = {}, + a = {}, + d = {}, + unit = \GraphUnit, + dir = \EA, + position = {}, + style = {}, + L = {}, + Ldist = 0cm, + Lpos = 0}{} +%<---------------------------------------------------------------------------> +% Vertex +%<---------------------------------------------------------------------------> +\newcommand*{\Vertex}[1][]{\@vertex[#1]}% +\def\@vertex[#1]#2{% + \setkeys[GR]{vertex}{#1}% + \@@vertex{#2}% +} +% coord rect todo coord polar and pos relative +\def\@@vertex#1{% + \def\nstyle{VertexStyle} +%<---------------------------------------------------------------------------> +\ifGR@vertex@Node% + \pgfextractx{\pgf@x}{\pgfpointanchor{#1}{center}} + \pgfextracty{\pgf@y}{\pgfpointanchor{#1}{center}} + \edef\cmdGR@vertex@x{\pgf@x} + \edef\cmdGR@vertex@y{\pgf@y} +\fi% +%<---------------------------------------------------------------------------> +\ifGR@vertex@empty% + \begin{scope} + \ifthenelse{\not\equal{\cmdGR@vertex@x}{}}{% + \protected@edef\@tempa{% + \noexpand\node[inner sep = 0pt](#1)% + at (\cmdGR@vertex@x,\cmdGR@vertex@y){}}% + \@tempa;}{% + \ifthenelse{\not\equal{\cmdGR@vertex@d}{}}{% + \protected@edef\@tempa{% + \noexpand\node[inner sep = 0pt](#1)% + at (\cmdGR@vertex@a:\cmdGR@vertex@d){}}% + \@tempa;}{% + \protected@edef\@tempa{% + \noexpand \node[inner sep = 0pt](#1)% + [\cmdGR@vertex@position]{}}% + \@tempa;}}% + \end{scope} +\else + \begin{scope}[label distance = \cmdGR@vertex@Ldist] + \ifGR@vertex@NoLabel + \def\vertex@Label{}% + \def\cmdGR@vertex@L{}% + \def\vertex@Name{} + \else% + \ifGR@vertex@Math + \ifthenelse{\equal{\cmdGR@vertex@L}{}}{% + \def\vertex@Name{$#1$}}{\def\vertex@Name{$\cmdGR@vertex@L$}} + \else + \ifthenelse{\equal{\cmdGR@vertex@L}{}}{% + \def\vertex@Name{#1}}{\def\vertex@Name{\cmdGR@vertex@L}} + \fi% + \ifGR@vertex@LabelOut% + \def\nstyle{VertexStyle,% + label={[text = \cmdGR@SVN@TextColor,\cmdGR@vertex@style]% + \cmdGR@vertex@Lpos:\vertex@Name}} + \def\vertex@Label{} + \else% + \def\vertex@Label{\vertex@Name} + \fi + \fi +%<---------------------------------------------------------------------------> + \ifthenelse{\not\equal{\cmdGR@vertex@x}{}}{% + \protected@edef\@tempa{% + \noexpand\node[outer sep=0pt,\cmdGR@vertex@style,\nstyle](#1) + at (\cmdGR@vertex@x,\cmdGR@vertex@y){% + \noexpand\vertex@Label}}% + \@tempa;% + }{% + \ifthenelse{\not\equal{\cmdGR@vertex@d}{}}{% + \protected@edef\@tempa{% + \noexpand\node[outer sep=0pt,\cmdGR@vertex@style,\nstyle](#1) + at (\cmdGR@vertex@a:\cmdGR@vertex@d){% + \noexpand\vertex@Label}}% + \@tempa;% + }{% + \protected@edef\@tempa{% + \noexpand\node[outer sep=0pt,\cmdGR@vertex@style,\nstyle](#1)% + [\cmdGR@vertex@position]{% + \noexpand\vertex@Label}}% + \@tempa;}}% + \end{scope} +\fi% +} +%<---------------------------------------------------------------------------> +% End of Vertex +%<---------------------------------------------------------------------------> +% EA east of #2 +%<---------------------------------------------------------------------------> +\newcommand*{\EA}[1][]{\@droite[#1]}% +\def\@droite[#1](#2)#3{% +\begingroup% + \setkeys[GR]{vertex}{#1}% + \path (#2)--++(\cmdGR@vertex@unit,0) coordinate (#3); + \Vertex[#1,Node]{#3} +\endgroup% +}% +%<---------------------------------------------------------------------------> +% WE west of #2 +%<---------------------------------------------------------------------------> +\newcommand*{\WE}[1][]{\@gauche[#1]}% +\def\@gauche[#1](#2)#3{% +\begingroup% + \setkeys[GR]{vertex}{#1}% + \path (#2)--++(-\cmdGR@vertex@unit,0) coordinate (#3); + \Vertex[#1,Node]{#3} + \endgroup% +} +%<---------------------------------------------------------------------------> +% NO north of #2 +%<---------------------------------------------------------------------------> +\newcommand*{\NO}[1][]{\@haut[#1]}% +\def\@haut[#1](#2)#3{% +\begingroup% + \setkeys[GR]{vertex}{#1}% + \path (#2)--++(0,\cmdGR@vertex@unit) coordinate (#3); + \Vertex[#1,Node]{#3} +\endgroup% +} +%<---------------------------------------------------------------------------> +% SO south of #2 +%<---------------------------------------------------------------------------> +\newcommand*{\SO}[1][]{\@bas[#1]}% +\def\@bas[#1](#2)#3{% +\begingroup% + \setkeys[GR]{vertex}{#1}% + \path (#2)--++(0,-\cmdGR@vertex@unit) coordinate (#3); + \Vertex[#1,Node]{#3} +\endgroup% +} +%<---------------------------------------------------------------------------> +% NOEA north east of #2 +%<---------------------------------------------------------------------------> +\newcommand*{\NOEA}[1][]{\@hautdroite[#1]}% +\def\@hautdroite[#1](#2)#3{% +\begingroup% + \setkeys[GR]{vertex}{#1}% + \path (#2)--++(\cmdGR@vertex@unit,\cmdGR@vertex@unit) coordinate (#3); + \Vertex[#1,Node]{#3} +\endgroup% +} + +%<---------------------------------------------------------------------------> +% NOWE north west of #2 +%<---------------------------------------------------------------------------> +\newcommand*{\NOWE}[1][]{\@hautgauche[#1]}% +\def\@hautgauche[#1](#2)#3{% +\begingroup% + \setkeys[GR]{vertex}{#1}% + \path (#2)--++(-\cmdGR@vertex@unit,\cmdGR@vertex@unit) coordinate (#3); + \Vertex[#1,Node]{#3} +\endgroup% +} +%<---------------------------------------------------------------------------> +% SOEA south east of #2 +%<---------------------------------------------------------------------------> +\newcommand*{\SOEA}[1][]{\@basdroite[#1]}% +\def\@basdroite[#1](#2)#3{% +\begingroup% + \setkeys[GR]{vertex}{#1}% + \path (#2)--++(\cmdGR@vertex@unit,-\cmdGR@vertex@unit) coordinate (#3); + \Vertex[#1,Node]{#3} +\endgroup% +} +%<---------------------------------------------------------------------------> +% SOWE south west of #2 +%<---------------------------------------------------------------------------> +\newcommand*{\SOWE}[1][]{\@basgauche[#1]}% +\def\@basgauche[#1](#2)#3{% +\begingroup% + \setkeys[GR]{vertex}{#1}% + \path (#2)--++(-\cmdGR@vertex@unit,-\cmdGR@vertex@unit) coordinate (#3); + \Vertex[#1,Node]{#3} +\endgroup% +} + +%<---------------------------------------------------------------------------> +% Vertices +%<---------------------------------------------------------------------------> +\newcommand*{\Vertices}[1][]{\Vertices@NoStar[#1]}% +\def\Vertices@NoStar[#1]#2#3{% +\setkeys[GR]{vertex}{#1}% +\begingroup% + \setcounter{tkz@gr@p}{0} + \@for\liste:=#3\do{% + \stepcounter{tkz@gr@p}% + \global\expandafter\let\csname label@\alph{tkz@gr@p}\endcsname\liste} + \ifthenelse{\equal{#2}{line}}{% + \setcounter{tkz@gr@p}{0} + \foreach \fin in {#3}{% + \ifthenelse{\value{tkz@gr@p}=0}{% + \global\let\deb\fin + \Vertex[#1]{\fin} + \stepcounter{tkz@gr@p} + }{% + \cmdGR@vertex@dir[#1,x={},y={},a={},d={},Node=false](\deb){\fin} + \global\let\deb\fin + } + }% + }{ + \ifthenelse{\equal{#2}{square}}{% + \begin{scope}[rotate=45] + \Vertex[#1,Lpos=-135]{\label@a} + \EA[#1,Lpos=-45,x={},y={},Node=false](\label@a){\label@b} + \NO[#1,Lpos=45, x={},y={},Node=false](\label@b){\label@c} + \WE[#1,Lpos=135,x={},y={},Node=false](\label@c){\label@d} + \end{scope} +}{% + \ifthenelse{\equal{#2}{tr1}}{% + \Vertex[#1]{\label@a} + \EA[#1,x={},y={},Node=false](\label@a){\label@b} + \NO[#1,x={},y={},Node=false](\label@b){\label@c}}{% + \ifthenelse{\equal{#2}{tr2}}{% + \Vertex[#1]{\label@a} + \NO[#1,x={},y={},Node=false](\label@a){\label@b} + \EA[#1,x={},y={},Node=false](\label@b){\label@c}}{% + \ifthenelse{\equal{#2}{tr3}}{% + \Vertex[#1]{\label@a} + \NO[#1,x={},y={},Node=false](\label@a){\label@b} + \WE[#1,x={},y={},Node=false](\label@b){\label@c}}{% + \ifthenelse{\equal{#2}{tr4}}{% + \Vertex[#1]{\label@a} + \WE[#1,x={},y={},Node=false](\label@a){\label@b} + \NO[#1,x={},y={},Node=false](\label@b){\label@c}}{% + \ifthenelse{\equal{#2}{circle}}{% + \pgfmathdivide{360}{\value{tkz@gr@p}}% + \global\let\gr@angle\pgfmathresult% + \setcounter{tkz@gr@p}{0} + \foreach \lab in {#3}{% + \pgfmathmultiply{\gr@angle}{\thetkz@gr@p}% + \let\gr@newangle\pgfmathresult% + \pgfmathadd{\cmdGR@vertex@Lpos}{\gr@newangle} + \let\gr@posangle\pgfmathresult% + \Vertex[#1, + a = \gr@newangle, + d = \cmdGR@vertex@unit, + Lpos = \gr@posangle]{\lab} + \stepcounter{tkz@gr@p}% + }% + }{}% + }}}}}}% +\endgroup% +} +%<---------------------------------------------------------------------------> +% Edge style +%<---------------------------------------------------------------------------> +\tikzset{LabelStyle/.style={}}% add 03/04/2009 +\tikzset{EdgeStyle/.style={}} +%<---------------------------------------------------------------------------> +% Init SetUpEdge +%<---------------------------------------------------------------------------> +\define@cmdkey [GR] {SUE} {color}{} +\define@cmdkey [GR] {SUE} {label}{} +\define@cmdkey [GR] {SUE} {labelstyle}{} +\define@cmdkey [GR] {SUE} {labeltext}{} +\define@cmdkey [GR] {SUE} {labelcolor}{} +\define@cmdkey [GR] {SUE} {style}{} +\define@cmdkey [GR] {SUE} {lw}{} +\presetkeys [GR] {SUE} {color = \EdgeColor, + lw = \EdgeLineWidth, + label = {}, + labeltext = \LabelTextColor, + labelcolor = \LabelFillColor, + labelstyle = {}, + style = {}}{} +%<---------------------------------------------------------------------------> +% SetUpEdge +%<---------------------------------------------------------------------------> +\newcommand*{\SetUpEdge}[1][]{\@SetUpEdge[#1]}% +\def\@SetUpEdge[#1]{% +\setkeys [GR] {SUE} {#1}% +\presetkeys [GR] {edge} {color = \cmdGR@SUE@color, + lw = \cmdGR@SUE@lw, + label = \cmdGR@SUE@label, + labeltext = \cmdGR@SUE@labeltext, + labelcolor = \cmdGR@SUE@labelcolor, + labelstyle = \cmdGR@SUE@labelstyle, + style = \cmdGR@SUE@style}{} +\tikzset{LabelStyle/.style={}} +\tikzset{EdgeStyle/.style={}}} +\newcommand*{\DisableEdgeStyle}{\tikzset{EdgeStyle/.style={}}} +%<---------------------------------------------------------------------------> +% Init Edge +%<---------------------------------------------------------------------------> +\define@cmdkey [GR] {edge} {color}{} +\define@cmdkey [GR] {edge} {lw}{} +\define@cmdkey [GR] {edge} {double}{} +\define@cmdkey [GR] {edge} {incolor}{} +\define@cmdkey [GR] {edge} {dd}{} +\define@cmdkey [GR] {edge} {style}{} +\define@cmdkey [GR] {edge} {label}{} +\define@cmdkey [GR] {edge} {labeltext}{} +\define@cmdkey [GR] {edge} {labelcolor}{} +\define@cmdkey [GR] {edge} {labelstyle}{} +\define@boolkey[GR] {edge} {local}[true]{} +\presetkeys [GR] {edge} {style = {pos=.5}, + lw = \EdgeLineWidth, + label = {}, + labeltext = \LabelTextColor, + labelcolor = \LabelFillColor, + labelstyle = {}, + local = false, + double = {}, + dd = \EdgeDoubleDistance, + incolor = \EdgeFillColor, + color = \EdgeColor}{} +%<---------------------------------------------------------------------------> +% Edge +%<---------------------------------------------------------------------------> +\newcommand*{\Edge}[1][]{\@edge[#1]}% +\def\@edge[#1](#2)(#3){% +\setkeys[GR]{edge}{#1}% + \begingroup% +\ifthenelse{\equal{\cmdGR@edge@double}{}}{% +\tikzset{LocalEdgeStyle/.style={color = \cmdGR@edge@color, + line width = \cmdGR@edge@lw}}}{% +\tikzset{LocalEdgeStyle/.style={line width = \cmdGR@edge@dd, + color = \cmdGR@edge@double, + double distance = \cmdGR@edge@lw, + double = \cmdGR@edge@color}}}% +\ifGR@edge@local% + \tikzset{EdgeStyle/.style={}}% + \fi + \ifthenelse{\equal{\cmdGR@edge@label}{}}{% + \protected@edef\@tempa{% + \noexpand \draw[LocalEdgeStyle,\cmdGR@edge@style,EdgeStyle]}% + \@tempa (#2) to (#3)}{% + \protected@edef\@tempa{% + \noexpand \draw[LocalEdgeStyle,\cmdGR@edge@style,EdgeStyle] (#2) to% + node[fill = \cmdGR@edge@labelcolor, + text = \cmdGR@edge@labeltext, + \cmdGR@edge@labelstyle,LabelStyle]}\@tempa + {\cmdGR@edge@label} (#3)}% + ; +\endgroup% +}% +%<---------------------------------------------------------------------------> +% Edges +%<---------------------------------------------------------------------------> +\newcommand*{\Edges}[1][]{\@edges[#1]}% +\def\@edges[#1](#2){% +\setkeys[GR]{edge}{#1}% + \begingroup% + \setcounter{tkz@gr@p}{0} + \foreach \fin in {#2}{% + \ifthenelse{\value{tkz@gr@p}=0}{% + \global\let\deb\fin + \stepcounter{tkz@gr@p}}{% + \Edge[#1](\deb)(\fin) + \global\let\deb\fin + }% + } + \endgroup% +}% +%<---------------------------------------------------------------------------> +% Init loop +%<---------------------------------------------------------------------------> +\define@choicekey*[GR]{loop}{dir}[\val\nr]{WE,EA,NO,SO,NOWE,NOEA,SOWE,SOEA}{% +\ifcase\nr\relax +\tikzset{LoopStyle/.style = {in=225, out=135, distance=\cmdGR@loop@dist}}% +\or +\tikzset{LoopStyle/.style = {in= 45, out=-45, distance=\cmdGR@loop@dist}}% +\or +\tikzset{LoopStyle/.style = {in=135, out= 45, distance=\cmdGR@loop@dist}}% +\or +\tikzset{LoopStyle/.style = {in=-45, out=-135, distance=\cmdGR@loop@dist}}% +\or +\tikzset{LoopStyle/.style = {in=180, out=90, distance=\cmdGR@loop@dist}}% +\or +\tikzset{LoopStyle/.style = {in=90, out=0, distance=\cmdGR@loop@dist}}% +\or +\tikzset{LoopStyle/.style = {in=-90, out=-180, distance=\cmdGR@loop@dist}}% +\or +\tikzset{LoopStyle/.style = {in=0, out=-90, distance=\cmdGR@loop@dist}}% +\fi% +} +\define@cmdkey [GR] {loop} {color}{} +\define@cmdkey [GR] {loop} {label}{} +\define@cmdkey [GR] {loop} {labelstyle}{} +\define@cmdkey [GR] {loop} {style}{} +\define@cmdkey [GR] {loop} {dist}{} +\presetkeys [GR] {loop} {style = {pre,thick},%` + label = {},% + labelstyle = {},% + color = \tkz@suc@txt,% + dist = 4cm,% + dir = WE}{} +%<---------------------------------------------------------------------------> +% loop +%<---------------------------------------------------------------------------> +\newcommand*{\grLoop}[1][]{\tkzGR@loop[#1]}% +\def\tkzGR@loop[#1](#2){% +\setkeys[GR]{loop}{#1}% +\protected@edef\@tempa{% +\noexpand \draw[\cmdGR@loop@color] (#2)% + edge [EdgeStyle,LoopStyle,\cmdGR@loop@style]% + node [LabelStyle,\cmdGR@loop@labelstyle]% + {\cmdGR@loop@label} (#2)}\@tempa;% +}% +%<---------------------------------------------------------------------------> +% Init Graphes probabilistes +%<---------------------------------------------------------------------------> +\define@cmdkey [GR] {grpb} {unit}{} +\define@cmdkey [GR] {grpb} {LposA}{} +\define@cmdkey [GR] {grpb} {LposB}{} +\define@cmdkey [GR] {grpb} {Ldist}{} +\define@cmdkey [GR] {grpb} {LoopDist}{} +\presetkeys [GR] {grpb} {LposA = 180,% + LposB = 0,% + Ldist = 0cm,% + LoopDist = 4cm, + unit = 4}{} +%<---------------------------------------------------------------------------> +% Graphes probabilistes +%<---------------------------------------------------------------------------> +\newcommand*{\grProb}[7][]{% +\setkeys[GR]{grpb}{#1}% +\tikzset{LabelStyle/.append style ={pos=.5}} +\Vertex[Lpos=\cmdGR@grpb@LposA,Ldist=\cmdGR@grpb@Ldist,L=#2]{grA} +\EA[unit=\cmdGR@grpb@unit,Lpos=\cmdGR@grpb@LposB, + Ldist=\cmdGR@grpb@Ldist,L=#3](grA){grB} +\Edge[style={post,bend left=60},label={$#4$},labelstyle={above}](grA)(grB) +\Edge[style={post,bend left=60},label={$#5$},labelstyle={below}](grB)(grA) +\grLoop[dist=\cmdGR@grpb@LoopDist,dir=WE,label={$#6$},labelstyle={left}](grA) +\grLoop[dist=\cmdGR@grpb@LoopDist,dir=EA,label={$#7$},labelstyle={right}](grB) +}% +\newcommand*{\grProbThree}[7][]{% +\setkeys[GR]{grpb}{#1}% +\begin{scope}[] + \tikzset{LabelStyle/.append style ={pos=.5}} + \Vertices[empty,unit=\cmdGR@grpb@unit]{circle}{grA,grB,grC} + \Vertex[Node,Lpos=\cmdGR@grpb@LposA,Ldist=\cmdGR@grpb@Ldist,L=#2]{grA} + \Vertex[Node,Lpos=\cmdGR@grpb@LposA,Ldist=\cmdGR@grpb@Ldist,L=#3]{grB} + \Vertex[Node,Lpos=\cmdGR@grpb@LposA,Ldist=\cmdGR@grpb@Ldist,L=#4]{grC} + \foreach \x/\y/\z in {#5} {% + \grLoop[dist=\cmdGR@grpb@LoopDist,dir=EA,label={$\x$}](grA) +\Edge[style={post,bend right=20},label={$\y$}](grA)(grB) +\Edge[style={post,bend right=20},label={$\z$}](grA)(grC)} +\foreach \x/\y/\z in {#6} {% + \grLoop[dist=\cmdGR@grpb@LoopDist,dir=NO,label={$\x$}](grB) +\Edge[style={post,bend right=20},label={$\y$}](grB)(grA) +\Edge[style={post,bend right=20},label={$\z$}](grB)(grC)} + \foreach \x/\y/\z in {#7} {% + \grLoop[dist=\cmdGR@grpb@LoopDist,dir=SO,label={$\x$}](grC) + \Edge[style={post,bend right=20},label={$\y$}](grC)(grA) + \Edge[style={post,bend right=20},label={$\z$}](grC)(grB)} +\end{scope} +} +%<---------------------------------------------------------------------------> +% End Graphes probabilistes +%<---------------------------------------------------------------------------> +\let\Loop\grLoop +\newcommand{\SetVertexLabeledSmall}{% +\SetVertexLabel% +\tikzset{VertexStyle/.style = {draw, + shape = circle, + inner sep = 1pt, + minimum size = 10pt}} +\tikzset{EdgeStyle/.style = {double = \tkz@suc@txt, + double distance = 1pt, + color = \tkz@suc@bkc, + line width = 0.7pt}} +} +\newcommand{\SetVertexNotLabeledSmall}{% + \tikzset{EdgeStyle/.style = {double = \tkz@suc@txt, + double distance = 1pt, + color = \tkz@suc@bkc, + line width = 0.7pt}} + \SetVertexNoLabel + \SetVertexSimple[MinSize=6pt,FillColor=gray] + \renewcommand*{\VertexLineWidth}{0pt} +}% + +\newcommand{\SetVertexForPresentation}[3]{% + \GraphInit[vstyle=Shade] + \SetVertexNoLabel + \renewcommand*{\VertexBigMinSize}{12pt}% + \renewcommand*{\EdgeDoubleDistance}{2pt}% + \renewcommand*{\EdgeLineWidth}{0.7pt}% + \SetGraphShadeColor{#1}{#2}{#3} +}% + +\newcommand{\setxyzvec}[1][20]{% + \pgfmathsetmacro{\xone}{cos(180+#1)}% + \pgfmathsetmacro{\yone}{sin(180+#1)}% + \pgfmathsetmacro{\xtwo}{cos(360-#1)}% + \pgfmathsetmacro{\ytwo}{sin(360-#1)}% + \pgfsetxvec{\pgfpoint{\xone cm}{\yone cm}}% + \pgfsetyvec{\pgfpoint{\xtwo cm}{\ytwo cm}}% + \pgfsetzvec{\pgfpoint{0cm}{1cm}}% +} +\endinput + diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check index 9c5fac313e6..b6ca6d843ad 100755 --- a/Master/tlpkg/bin/tlpkg-ctan-check +++ b/Master/tlpkg/bin/tlpkg-ctan-check @@ -758,7 +758,7 @@ my @TLP_working = qw( tikztosvg tile-graphic timbreicmc times timetable timing-diagrams tinos tipa tipa-de tipfr titlecaps titlefoot titlepages titlepic titleref titlesec titling - tkz-base tkz-doc tkz-euclide tkz-fct tkz-tab + tkz-base tkz-doc tkz-euclide tkz-fct tkz-graph tkz-tab tkz-orm tikz-page tlc-article tlc2 tlcockpit tlmgrbasics tocbibind tocdata tocloft tocvsec2 todo todonotes diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds index ae5f0175a0c..79ef372b00a 100755 --- a/Master/tlpkg/libexec/ctan2tds +++ b/Master/tlpkg/libexec/ctan2tds @@ -1318,10 +1318,8 @@ chomp (my $ctan_root = `tlpkginfo --ctan-root`); 'tksbrief', "die 'skipping, LaTeX 2.09'", 'tkz', "die 'skipping, container directory'", 'tkz-base', "&MAKEtkz", - 'tkz-berge', "die 'skipping, obsolete on ctan'", #"&MAKEtkz", 'tkz-euclide', "&MAKEtkz", 'tkz-fct', "&MAKEtkz", - 'tkz-graph', "die 'skipping, obsolete on ctan'", #"&MAKEtkz", 'tkz-kiviat', "die 'skipping, obsolete on ctan'", #"&MAKEtkz", 'tkz-linknodes',"die 'skipping, obsolete on ctan'",#"&MAKEtkz", 'tkz-tab', "&MAKEtkz", @@ -1515,6 +1513,7 @@ chomp (my $ctan_root = `tlpkginfo --ctan-root`); 'stix' => '&PREHOOK_stix', 'texdraw' => '&PREHOOK_texdraw', 'texfot' => '&PREHOOK_texfot', + 'tkz-graph' => '&PREHOOK_flatten1', 'tlcockpit' => '&PREHOOK_tlcockpit', 'tudscr' => '&PREHOOK_tudscr', 'tui' => '&PREHOOK_tui', diff --git a/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc b/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc index 7a81702c32f..7395c7073f4 100644 --- a/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc @@ -198,6 +198,7 @@ depend tkz-base depend tkz-doc depend tkz-euclide depend tkz-fct +depend tkz-graph depend tkz-orm depend tkz-tab depend tqft diff --git a/Master/tlpkg/tlpsrc/tkz-graph.tlpsrc b/Master/tlpkg/tlpsrc/tkz-graph.tlpsrc new file mode 100644 index 00000000000..e69de29bb2d -- cgit v1.2.3