<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">\section{Premiers graphes avec tkz-graph.sty}

 \tkzname{TikZ} est un outil que je trouve trÃ¨s agrÃ©able Ã&nbsp; 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 Ã&nbsp; 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</pre></body></html>