%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % tkz-berge.sty encodage : utf8 % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % Créé par Alain Matthes le 08-05-2007. % % contribution : Rafael Villarroel 2007 (RV) % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> %% Objet : Création de graphes %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{tkz-berge}[13/01/2009 v 2.8 tkz-berge for named graphs] % modif Doyle form 1 %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \RequirePackage{tkz-graph,tkz-arith} % NAMED GRAPHS %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % Graphes cls %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \define@cmdkey [GR] {cl} {L}{} \define@boolkey [GR] {cl} {Math}[true]{} \define@boolkey [GR] {cl} {inv}[true]{} \define@cmdkey [GR] {cl} {RA}{} \define@cmdkey [GR] {cl} {RB}{} \define@cmdkey [GR] {cl} {RC}{} \define@cmdkey [GR] {cl} {RD}{} \define@cmdkey [GR] {cl} {RE}{} \define@cmdkey [GR] {cl} {RS}{} \define@cmdkey [GR] {cl} {prefix}{} \define@cmdkey [GR] {cl} {prefixx}{} \define@cmdkey [GR] {cl} {prefixxx}{} \define@cmdkey [GR] {cl} {prefixxxx}{} \define@cmdkey [GR] {cl} {prefixxxxx}{} \define@cmdkey [GR] {cl} {form}{} \define@cmdkey [GR] {cl} {num}{} \presetkeys [GR] {cl} {RA = 4,% RB = 3,% RC = 2,% RD = 1,% RE = 0.5,% RS = 0,% form = 1,% prefix = a,% prefixx = b,% prefixxx = c,% prefixxxx = d,% prefixxxxx = e,% num = {},% Math = false}{} %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % Tools Graphes particuliers %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % Some tools %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \def\gr@math@sep{_} \newcommand*{\write@math}[3]{% \Vertex[x = #1,y = #2,% L = \cmdGR@cl@prefix\gr@math@sep{#3}]{\cmdGR@cl@prefix#3}} \newcommand*{\write@nomath}[3]{% \Vertex[x = #1,y = #2]{\cmdGR@cl@prefix#3}} %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % Empty graphs %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % \newcommand*{\grEmptyCycle}[2][]{% \begingroup% \setkeys[GR]{cl}{#1}% \pgfmathsetcounter{tkzb@temp}{#2-1} \foreach \x in {0,...,\thetkzb@temp}{% \pgfmathparse{360/#2*\x} \let\tkz@angle\pgfmathresult% \ifGR@cl@Math% \presetkeys [GR] {vertex} {Math = true}{}% \Vertex[a = \tkz@angle,% d = \cmdGR@cl@RA,% L = \cmdGR@cl@prefix\gr@math@sep{\x}]{\cmdGR@cl@prefix\x}% \else% \Vertex[a = \tkz@angle,% d = \cmdGR@cl@RA]{\cmdGR@cl@prefix\x}% \fi% }% \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grEmptyPath from (RV) %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\grEmptyPath}[2][]{% \begingroup% \setkeys[GR]{cl}{#1}% \pgfmathsetcounter{tkzb@ca}{#2-1} \ifcase\cmdGR@cl@form \or \def\tkzb@result{0} \foreach \x in {0,...,\thetkzb@ca}{% \pgfmathparse{\cmdGR@cl@RA*(\x)} \let\tkzb@result\pgfmathresult \ifGR@cl@Math% \presetkeys [GR] {vertex} {Math = true}{}% \ifthenelse{\equal{\cmdGR@cl@num}{}}{% \write@math{\tkzb@result}{\cmdGR@cl@RS}{\x}}{% \write@math{\tkzb@result}{\cmdGR@cl@RS}{\x;\cmdGR@cl@num}}% \else \ifthenelse{\equal{\cmdGR@cl@num}{}}{% \write@nomath{\tkzb@result}{\cmdGR@cl@RS}{\x}}{% \write@nomath{\tkzb@result}{\cmdGR@cl@RS}{\x;\cmdGR@cl@num}}% \fi}% \or \foreach \x in {0,...,\thetkzb@ca}{% \pgfmathparse{\cmdGR@cl@RA*(\x)} \let\tkzb@result\pgfmathresult \ifGR@cl@Math% \presetkeys [GR] {vertex} {Math = true}{}% \ifthenelse{\equal{\cmdGR@cl@num}{}}{% \write@math{\cmdGR@cl@RS}{\tkzb@result}{\x}}{% \write@math{\cmdGR@cl@RS}{\tkzb@result}{\cmdGR@cl@num;\x}}% \else \ifthenelse{\equal{\cmdGR@cl@num}{}}{% \write@nomath{\cmdGR@cl@RS}{\tkzb@result}{\x}}{% \write@nomath{\cmdGR@cl@RS}{\tkzb@result}{\cmdGR@cl@num;\x}}% \fi}% \fi \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grEmptyStar %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\grEmptyStar}[2][]{% \begingroup% \setkeys[GR]{cl}{#1}% \pgfmathsetcounter{tkzb@ca}{#2-1} \ifGR@cl@Math\presetkeys [GR] {vertex} {Math = true}{}% \write@math{0}{0}{\thetkzb@ca}% \else \write@nomath{0}{0}{\thetkzb@ca}% \fi \grEmptyCycle[#1]{\thetkzb@ca} \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grEmptyGrid %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand{\grEmptyGrid}[3][]{% \begingroup% \setkeys[GR]{cl}{#1}% \pgfmathsetcounter{tkzb@ca}{#2-1} \pgfmathsetcounter{tkzb@cb}{#3-1} \foreach \x in {0,...,\thetkzb@ca}{% \foreach \y in {0,...,\thetkzb@cb}{% \ifGR@cl@Math\presetkeys [GR] {vertex} {Math = true}{}% \write@math{\cmdGR@cl@RA*\x}{\cmdGR@cl@RB*\y}{\x;\y}% \else \write@nomath{\cmdGR@cl@RA*\x}{\cmdGR@cl@RB*\y}{\x;\y}% \fi}% } \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grEmptyLadder %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\grEmptyLadder}[2][]{% \begingroup% \setkeys[GR]{cl}{#1}% \grEmptyPath[#1,RS=0]{#2} \edef\tkzb@ptemp{\cmdGR@cl@prefixx} \edef\tkzb@rtemp{\cmdGR@cl@RB} \grEmptyPath[#1,prefix=\tkzb@ptemp,RS=\tkzb@rtemp]{#2} \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % Edges %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\EdgeInGraphFromOneToComp}[3]{% #4 \begingroup% \pgfmathsetcounter{tkzb@ta}{#2-1} \foreach \cx in {0,...,\thetkzb@ta}{% \ifthenelse{\equal{\cx}{#3}}{}{\Edge(#1#3)(#1\cx)}% }% \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % new tool EdgeInGraphLoop loop 0--1--2.........n--0 % star 0--1--2.........n- %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\EdgeInGraphLoop}{\@ifstar% \EdgeInGraphLoopStar% \EdgeInGraphLoopNoStar} \newcommand*{\EdgeInGraphLoopNoStar}[2]{% #4 \begingroup% \pgfmathsetcounter{tkzb@ta}{#2-1} \setcounter{tkzb@next}{0} \Edge(#1\thetkzb@ta)(#1\thetkzb@next) \pgfmathaddtocounter{tkzb@ta}{-1} \foreach \x in {0,...,\thetkzb@ta}{% \stepcounter{tkzb@next} \Edge(#1\x)(#1\thetkzb@next)% }% \endgroup% } \newcommand*{\EdgeInGraphLoopStar}[2]{% #4 \begingroup% \pgfmathsetcounter{tkzb@ta}{#2-2} \setcounter{tkzb@next}{0} \foreach \x in {0,...,\thetkzb@ta}{% \stepcounter{tkzb@next} \Edge(#1\x)(#1\thetkzb@next)% }% \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % new tool EdgeInGraphSeq sequence i--i+1--.....--j %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\EdgeInGraphSeq}[3]{% #4 \begingroup% \pgfmathsetcounter{tkzb@ta}{#2} \pgfmathsetcounter{tkzb@tb}{#3-1} \setcounter{tkzb@next}{#2} \foreach \x in {\thetkzb@ta,...,\thetkzb@tb}{% \stepcounter{tkzb@next} \Edge(#1\x)(#1\thetkzb@next)% }% \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % new tool EdgeInGraphMod replace nextmod %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\EdgeInGraphMod}{\@ifstar% \EdgeInGraphModStar% \EdgeInGraphModNoStar} \newcommand*{\EdgeInGraphModNoStar}[3]{% #2 order \begingroup% \pgfmathsetcounter{tkzb@ta}{#2-1} \foreach \x in {0,...,\thetkzb@ta}{% \pgfmathsetcounter{tkzb@tb}{modI(\x+#3,#2)} \Edge(#1\thetkzb@tb)(#1\x)% }% \endgroup% } %#1 prefix #2 order #3 add #4 start #5 décalage \newcommand*{\EdgeInGraphModStar}[5]{% \begingroup% \pgfmathsetcounter{tkzb@ta}{#4} \whiledo{\value{tkzb@ta}<#2}{% \pgfmathsetcounter{tkzb@next}{modI(\thetkzb@ta+#3,#2)} \Edge(#1\thetkzb@ta)(#1\thetkzb@next) \pgfmathaddtocounter{tkzb@ta}{#5}% }% \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % EdgeInGraphModLoop dep #4 add #3 mod #2 until #4 %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\EdgeInGraphModLoop}[4]{% #2 order \begingroup% \setcounter{tkzb@ta}{#4} \setcounter{tkzb@next}{#2} \whiledo{\not\equal{\value{tkzb@next}}{#4}}{% \pgfmathsetcounter{tkzb@next}{modI(\thetkzb@ta+#3,#2)} \Edge(#1\thetkzb@ta)(#1\thetkzb@next)% \setcounter{tkzb@ta}{\thetkzb@next} }% \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % EdgeIdentity % la version étoilée permet d'utliser une sélection %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\EdgeIdentity}{\@ifstar% \EdgeIdentityStar% \EdgeIdentityNoStar} \newcommand*{\EdgeIdentityNoStar}[3]{% \begingroup% \pgfmathsetcounter{tkzb@v}{#3-1} \foreach \x in {0,...,\thetkzb@v}{% \Edge(#1\x)(#2\x)% }% \endgroup% } \newcommand*{\EdgeIdentityStar}[3]{% \begingroup% \foreach \x in {#3}{% \Edge(#1\x)(#2\x)% }% \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % EdgeFromOneToAll vertex #1#3 through #2 0...#2 n-1 #5 order of the graph %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\EdgeFromOneToAll}[4]{% #4 = order of the graph \begingroup% \pgfmathsetcounter{tkzb@v}{#4-1} \foreach \x in {0,...,\thetkzb@v}{% \Edge(#1#3)(#2\x)% }% \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % EdgeFromOneToSeq vertex #1#3 through #2#4...#2#5 %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\EdgeFromOneToSeq}[5]{% #4 \begingroup% \foreach \x in {#4,...,#5}{% \Edge(#1#3)(#2\x)% }% \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % EdgeFromOneToSel vertex #1#3 through #2#4...#2#5 %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\EdgeFromOneToSel}[4]{% #4 \begingroup% \foreach \x in {#4}{% \Edge(#1#3)(#2\x)% }% \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % EdgeFromOneToComplement vertex #1#3 through #2#4...#2#5 %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\EdgeFromOneToComp}[4]{% \begingroup% \pgfmathsetcounter{tkzb@v}{#4-1} \foreach \cx in {0,...,\thetkzb@v}{% \ifthenelse{\equal{\cx}{#3}}{}{\Edge(#1#3)(#2\cx)}% }% \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % new tool EdgeMod replace nextmod % identity with step like nextmod ??? %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\EdgeMod}{\@ifstar% \EdgeModStar% \EdgeModNoStar} \newcommand*{\EdgeModNoStar}[4]{%#3 order #4 step \begingroup% \pgfmathsetcounter{tkzb@v}{#3-1} \foreach \x in {0,...,\thetkzb@v}{% \pgfmathsetcounter{tkzb@tb}{modI(\x+#4,#3)} \Edge(#1\x)(#2\thetkzb@tb)% }% \endgroup% } %#1 prefix #2 prefix #3 order #4 order inf #5 step \newcommand*{\EdgeModStar}[5]{% \begingroup% \setcounter{tkzb@ta}{0} \whiledo{\value{tkzb@ta}<#3}{% \pgfmathsetcounter{tkzb@tb}{modI(\thetkzb@ta+#4,#3)} \Edge(#1\thetkzb@ta)(#2\thetkzb@tb)% \pgfmathaddtocounter{tkzb@ta}{#5}}% \endgroup% }% %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % EdgeDoubleMod by RV %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\EdgeDoubleMod}[9]{ \begingroup% \foreach \x in {0,...,#9}{% \pgfmathsetcounter{tkzb@cc}{modI(#3+(#4*\x),#2)} \pgfmathsetcounter{tkzb@next}{modI(#7+(#8*\x),#6)} \Edge(#1\thetkzb@cc)(#5\thetkzb@next) }% \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grPath %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\grPath}[2][]{% \begingroup% \setkeys[GR]{cl}{#1}% \grEmptyPath[#1]{#2} \ifthenelse{\equal{\cmdGR@cl@num}{}}{% \ifthenelse{\equal{#2}{1}}{}{\EdgeInGraphLoop*{\cmdGR@cl@prefix}{#2}}}{% \ifthenelse{\equal{#2}{1}}{}{% \ifcase\cmdGR@cl@form \or \pgfmathsetcounter{tkzb@ta}{#2-2} \setcounter{tkzb@next}{0} \foreach \x in {0,...,\thetkzb@ta}{% \stepcounter{tkzb@next} \Edge(\cmdGR@cl@prefix\x;\cmdGR@cl@num)% (\cmdGR@cl@prefix\thetkzb@next;\cmdGR@cl@num)% }% \or \EdgeInGraphLoop*{\cmdGR@cl@prefix\cmdGR@cl@num;}{#2} \fi% }} \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grGrid %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\grGrid}[3][]{% \begingroup% \setkeys[GR]{cl}{#1}% \grEmptyGrid[#1]{#2}{#3} \pgfmathsetcounter{tkzb@ca}{#2-2} \pgfmathsetcounter{tkzb@cb}{#3-2} \foreach \x in {0,...,\thetkzb@ca}{% \foreach \y in {0,...,\thetkzb@cb}{% \pgfmathsetcounter{tkzb@cc}{\x+1} \pgfmathsetcounter{tkzb@cd}{\y+1} \Edge(\cmdGR@cl@prefix\x;\y)% (\cmdGR@cl@prefix\x;\thetkzb@cd) \Edge(\cmdGR@cl@prefix\x;\y)% (\cmdGR@cl@prefix\thetkzb@cc;\y)% }% }% \pgfmathsetcounter{tkzb@ca}{#2-2} \pgfmathsetcounter{tkzb@cb}{#3-1} \foreach \x in {0,...,\thetkzb@ca}{% \pgfmathsetcounter{tkzb@cc}{\x+1} \Edge(\cmdGR@cl@prefix\x;\thetkzb@cb)% (\cmdGR@cl@prefix\thetkzb@cc;\thetkzb@cb)% }% \pgfmathsetcounter{tkzb@ca}{#2-1} \pgfmathsetcounter{tkzb@cb}{#3-2} \foreach \y in {0,...,\thetkzb@cb}{% \pgfmathsetcounter{tkzb@cd}{\y+1} \Edge(\cmdGR@cl@prefix\thetkzb@ca;\y)% (\cmdGR@cl@prefix\thetkzb@ca;\thetkzb@cd)% }% \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grComplete %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\grComplete}[2][]{% #1 options #2 ordre du graphe \begingroup% \setkeys[GR]{cl}{#1}% \grEmptyCycle[#1]{#2}% \pgfmathsetcounter{tkzb@ca}{#2-1} \foreach \ia in {0,...,\thetkzb@ca}% {\foreach \ib in {\ia,...,\thetkzb@ca} {\Edge(\cmdGR@cl@prefix\ia)(\cmdGR@cl@prefix\ib)}% }% \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grCycle %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\grCycle}[2][]{% \begingroup% \setkeys[GR]{cl}{#1} \grEmptyCycle[#1]{#2} \EdgeInGraphLoop{\cmdGR@cl@prefix}{#2} \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grLCF %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand{\grLCF}[3][]{% \begingroup% \setkeys[GR]{cl}{#1}% \setcounter{tkzb@ca}{#3} \setcounter{tkzb@cb}{0} \foreach \x in {#2}{\stepcounter{tkzb@cb}} \pgfmathsetcounter{tkzb@cc}{\thetkzb@ca * \thetkzb@cb} \setcounter{tkzb@cb}{\thetkzb@cc} \grCycle[#1]{\thetkzb@cc} %<––––––––––––––––––––––––– End Vertex ––––––––––––––––––––––––––––––––––––> \pgfmathsetcounter{tkzb@ca}{#3-1} \setcounter{tkzb@v}{0} \foreach \k in {0,...,\thetkzb@ca}{% \foreach \n in {#2}{% \ifthenelse{\n < 0}{% \pgfmathsetcounter{tkzb@cb}{\n+\thetkzb@cc}}{% \pgfmathsetcounter{tkzb@cb}{\n}} \pgfmathsetcounter{tkzb@next}% {modI(\thetkzb@v+\thetkzb@cb,\thetkzb@cc)} \Edge(\cmdGR@cl@prefix\thetkzb@v)(\cmdGR@cl@prefix\thetkzb@next) \stepcounter{tkzb@v}% }% }% \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grStar %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\grStar}[2][]{% \begingroup% \setkeys[GR]{cl}{#1}% \grEmptyStar[#1]{#2} \pgfmathsetcounter{tkzb@temp}{#2-1} \EdgeInGraphFromOneToComp{\cmdGR@cl@prefix}{#2}{\thetkzb@temp} \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grWheel %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\grWheel}[2][]{ \begingroup% \setkeys[GR]{cl}{#1}% \grStar[#1]{#2} \pgfmathsetcounter{tkzb@v}{#2-1} \EdgeInGraphLoop{\cmdGR@cl@prefix}{\thetkzb@v} \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grSQCircle %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\grSQCycle}[2][]{% \begingroup% \setkeys[GR]{cl}{#1}% \grCycle[#1]{#2}% \EdgeInGraphMod{\cmdGR@cl@prefix}{#2}{2} \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grLadder %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\grLadder}[2][]{% \begingroup% \setkeys[GR]{cl}{#1}% \grPath[#1,RS=0]{#2}{0} \edef\tkzb@ptemp{\cmdGR@cl@prefixx} \edef\tkzb@rtemp{\cmdGR@cl@RS} \grPath[#1,prefix=\tkzb@ptemp,RS=\tkzb@rtemp]{#2} \EdgeIdentity{\cmdGR@cl@prefix}{\cmdGR@cl@prefixx}{#2} \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grPrism %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\grPrism}[2][]{% \begingroup% \setkeys[GR]{cl}{#1}% \begin{scope}[rotate=45] \grCycle[#1]{#2} \edef\tkzb@rtemp{\cmdGR@cl@RB} \edef\tkzb@ptemp{\cmdGR@cl@prefixx} \grCycle[#1,RA=\tkzb@rtemp,prefix=\tkzb@ptemp]{#2} \EdgeIdentity{\cmdGR@cl@prefix}{\cmdGR@cl@prefixx}{#2} \end{scope} \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grCompleteBipartite %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\grCompleteBipartite}[3][]{% \begingroup% \setkeys[GR]{cl}{#1}% \pgfmathsetcounter{tkzb@ca}{#2-1} \pgfmathparse{(\cmdGR@cl@RA * \thetkzb@ca) /2} \let\tkzRAxpos\pgfmathresult% \pgfmathsetcounter{tkzb@ca}{#3-1} \pgfmathparse{(\cmdGR@cl@RB * \thetkzb@ca) /2} \let\tkzRBxpos\pgfmathresult% \ifdim\tkzRBxpos pt > \tkzRAxpos pt\relax% \pgfmathadd{\tkzRBxpos}{-\tkzRAxpos} \let\tkzaxpos\pgfmathresult% \def\tkzbxpos{0} \else% \pgfmathadd{\tkzRAxpos}{-\tkzRBxpos} \let\tkzbxpos\pgfmathresult% \def\tkzaxpos{0} \fi% \begin{scope}[xshift=\tkzaxpos cm] \grEmptyPath[#1,RS=0]{#2} \end{scope} \begin{scope}[xshift=\tkzbxpos cm] \edef\tkzb@ptemp{\cmdGR@cl@prefixx} \edef\tkzb@rtemp{\cmdGR@cl@RS} \edef\tkzb@stemp{\cmdGR@cl@RB} \grEmptyPath[#1,RA=\tkzb@stemp,prefix=\tkzb@ptemp,RS=\tkzb@rtemp]{#3} \end{scope} \pgfmathsetcounter{tkzb@temp}{#2-1} \pgfmathsetcounter{tkzb@v}{#3-1} \foreach \cpx in {0,...,\thetkzb@v}{% \EdgeFromOneToAll{\cmdGR@cl@prefixx}{\cmdGR@cl@prefix}{\cpx}{#2} }% \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grTriangularGrid %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\grTriangularGrid}[2][]{% \begingroup% \setkeys[GR]{cl}{#1} \ifcase\cmdGR@cl@form \or %<––––––––––––––––––––– form 1 equilateral triangle ––––––––––––––––––––––––> \pgfmathsetcounter{tkzb@ca}{#2-1} \pgfmathsetcounter{tkzb@cb}{#2} \foreach \lg in {0,...,\thetkzb@ca}{% \pgfmathsetcounter{tkzb@cb}{#2-\lg} \setcounter{tkzb@cb}{\thetkzb@cb} \edef\tkzb@rtemp{\cmdGR@cl@RA} \edef\tkzb@ptemp{\cmdGR@cl@prefix} \pgfmathmultiply{\cmdGR@cl@RA}{\lg} \let\myresult\pgfmathresult \pgfmathparse{\cmdGR@cl@RA*\lg/2} \let\tkzaxpos\pgfmathresult \begin{scope}[xshift=\tkzaxpos cm] \grPath[#1,% RA = \tkzb@rtemp,% RS = \myresult,% prefix = \tkzb@ptemp,% num = \lg]{\thetkzb@cb}% \end{scope}% } \or %<––––––––––––––––––––––––––– form 2 right triangle ––––––––––––––––––––––––> \pgfmathsetcounter{tkzb@ca}{#2-1} \pgfmathsetcounter{tkzb@cb}{#2} \foreach \lg in {0,...,\thetkzb@ca}{% \pgfmathsetcounter{tkzb@cb}{#2-\lg} \setcounter{tkzb@cb}{\thetkzb@cb} \edef\tkzb@rtemp{\cmdGR@cl@RA} \edef\tkzb@ptemp{\cmdGR@cl@prefix} \pgfmathmultiply{\cmdGR@cl@RA}{\lg} \let\myresult\pgfmathresult \grPath[#1,% RA = \tkzb@rtemp,% RS = \myresult,% prefix = \tkzb@ptemp,% num = \lg,form=1]{\thetkzb@cb}% } \or \pgfmathsetcounter{tkzb@ca}{#2-1} \pgfmathsetcounter{tkzb@cb}{#2} \foreach \lg in {0,...,\thetkzb@ca}{% \pgfmathsetcounter{tkzb@cb}{#2-\lg} \setcounter{tkzb@cb}{\thetkzb@cb} \edef\tkzb@rtemp{\cmdGR@cl@RA} \edef\tkzb@ptemp{\cmdGR@cl@prefix} \pgfmathmultiply{\cmdGR@cl@RA}{\lg} \let\myresult\pgfmathresult \begin{scope}[xshift=\myresult cm] \grPath[#1,% RA = \tkzb@rtemp,% RS = \myresult,% prefix = \tkzb@ptemp,% num = \lg,form=1]{\thetkzb@cb}% \end{scope}% } \fi% \pgfmathsetcounter{tkzb@ca}{#2-2} \foreach \x in {0,...,\thetkzb@ca}{% \pgfmathsetcounter{tkzb@v}{\thetkzb@ca-\x} \foreach \y in {0,...,\thetkzb@v}{% \pgfmathsetcounter{tkzb@cb}{\y+1} \Edge(\cmdGR@cl@prefix\x;\y)(\cmdGR@cl@prefix\x;\thetkzb@cb) \pgfmathsetcounter{tkzb@temp}{\x+1} \Edge(\cmdGR@cl@prefix\x;\thetkzb@cb)% (\cmdGR@cl@prefix\thetkzb@temp;\y) }% } \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grHeawood %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\grHeawood}[1][]{% #1 options #2 ordre du graphe \begingroup% \setkeys[GR]{cl}{#1}% \grCycle[#1]{14} \EdgeInGraphMod*{\cmdGR@cl@prefix}{14}{5}{0}{2} \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grCirculant #1 option #2 vertex #3 add k %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\grCirculant}[3][]{% \begingroup% \setkeys[GR]{cl}{#1} \grEmptyCycle[#1]{#2}% \primality{#2}% \ifthenelse{\boolean{tkzaIsAPrim}}{% \foreach \kci in {#3}{% \EdgeInGraphMod{\cmdGR@cl@prefix}{#2}{\kci} }}{% \foreach \kci in {#3}{% \tkzFindFactor{#2}{\kci}% \ifthenelse{\boolean{tkzaIsAFactor}}{% \pgfmathsetcounter{tkzb@ca}{\kci-1} \foreach \start in {0,...,\thetkzb@ca}{% \setcounter{tkzb@int}{\start}% \setcounter{tkzb@next}{#2}% \whiledo{\not\equal{\value{tkzb@next}}{\start}}{% \pgfmathsetcounter{tkzb@next}{modI(\thetkzb@int+\kci,#2)} \Edge(\cmdGR@cl@prefix\thetkzb@int)% (\cmdGR@cl@prefix\thetkzb@next)% \pgfmathsetcounter{tkzb@int}{\thetkzb@next}% }% }}{% \EdgeInGraphMod{\cmdGR@cl@prefix}{#2}{\kci}} }}% \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grPetersenG %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\grGeneralizedPetersen}[3][]{% \begingroup% \setkeys[GR]{cl}{#1}% \grCycle[#1]{#2} \edef\tkzb@rtemp{\cmdGR@cl@RB} \edef\tkzb@pptemp{\cmdGR@cl@prefixx} \edef\tkzb@ptemp{\cmdGR@cl@prefix} \grCirculant[#1,RA=\tkzb@rtemp,prefix=\tkzb@pptemp]{#2}{#3} \EdgeIdentity{\tkzb@ptemp}{\cmdGR@cl@prefixx}{#2} \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grPetersen %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\grStartwo}[2][]{% \begingroup% \setkeys[GR]{cl}{#1}% \pgfmathsetcounter{tkzb@v}{3*#2-2} \pgfmathsetcounter{tkzb@ca}{3*#2-1} \grEmptyCycle[#1]{\thetkzb@ca} \EdgeInGraphMod{\cmdGR@cl@prefix}{\thetkzb@ca}{#2}% \endgroup% } \newcommand*{\grPetersen}[1][]{% \begingroup% \setkeys[GR]{cl}{#1}% \ifcase\cmdGR@cl@form \or \grCycle[#1]{5}% \edef\tkzb@rtemp{\cmdGR@cl@RB} \edef\tkzb@ptemp{\cmdGR@cl@prefixx} \grStartwo[#1,RA=\tkzb@rtemp,prefix=\tkzb@ptemp]{2} \EdgeIdentity{\cmdGR@cl@prefix}{\cmdGR@cl@prefixx}{5} \or \grCycle[#1]{6} \begin{scope}[rotate=30] \edef\tkzb@rtemp{\cmdGR@cl@RB} \edef\tkzb@ptemp{\cmdGR@cl@prefixx} \grStar[#1,RA=\tkzb@rtemp,prefix=\tkzb@ptemp]{4} \end{scope} \setcounter{tkzb@ca}{2} \foreach \x in {0,...,5}{% \ifthenelse{\equal{\thetkzb@ca}{-1}}{% \setcounter{tkzb@ca}{2}}{% }% \Edge(\cmdGR@cl@prefix\x)(\cmdGR@cl@prefixx\thetkzb@ca) \addtocounter{tkzb@ca}{-1}% }% \or \grEmptyStar[#1]{10} \EdgeInGraphLoop{\cmdGR@cl@prefix}{9} \EdgeInGraphMod*{\cmdGR@cl@prefix}{9}{4}{0}{3} \foreach \x in {2,5,8}{% \Edge(\cmdGR@cl@prefix\x)(\cmdGR@cl@prefix 9)}% \fi \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grPlatonic %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\grTetrahedral}[1][]{% \begingroup% \setkeys[GR]{cl}{#1}% \begin{scope}[rotate=90] \grWheel[#1]{4}% \end{scope} \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grOctahedral %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\grOctahedral}[1][]{% \begingroup% \setkeys[GR]{cl}{#1}% \grComplete[#1]{3}% \begin{scope}[rotate=-60] \edef\tkzb@rtemp{\cmdGR@cl@RB} \edef\tkzb@ptemp{\cmdGR@cl@prefixx} \grComplete[#1,RA=\tkzb@rtemp,prefix=\tkzb@ptemp]{3}% \end{scope} \EdgeIdentity{\cmdGR@cl@prefix}{\cmdGR@cl@prefixx}{3} \EdgeMod{\cmdGR@cl@prefix}{\cmdGR@cl@prefixx}{3}{1} \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grCubicalGraph %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\grCubicalGraph}[1][]{% \begingroup% \setkeys[GR]{cl}{#1}% \grCycle[#1]{4} \edef\tkzb@ptemp{\cmdGR@cl@prefixx} \edef\tkzb@rtemp{\cmdGR@cl@RB} \grCycle[#1,RA=\tkzb@rtemp,prefix=\tkzb@ptemp]{4} \ifcase\cmdGR@cl@form \or \EdgeIdentity{\cmdGR@cl@prefix}{\cmdGR@cl@prefixx}{4} \or \EdgeMod*{\cmdGR@cl@prefix}{\cmdGR@cl@prefixx}{4}{1}{2} \EdgeMod*{\cmdGR@cl@prefixx}{\cmdGR@cl@prefix}{4}{1}{2} \fi \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grIcosahedral %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\grIcosahedral}[1][]{% \begingroup% \setkeys[GR]{cl}{#1}% \ifcase\cmdGR@cl@form \or \grCycle[#1]{6}% \edef\tkzb@rtemp{\cmdGR@cl@RB} \edef\tkzb@ptemp{\cmdGR@cl@prefixx} \grCirculant[RA=\tkzb@rtemp,prefix=\tkzb@ptemp]{6}{2} \EdgeIdentity{\cmdGR@cl@prefix}{\cmdGR@cl@prefixx}{6} \EdgeMod{\cmdGR@cl@prefixx}{\cmdGR@cl@prefix}{6}{1} \EdgeMod{\cmdGR@cl@prefixx}{\cmdGR@cl@prefix}{6}{-1} \or \grCycle[#1]{3} \edef\tkzb@rtemp{\cmdGR@cl@RB} \edef\tkzb@ptemp{\cmdGR@cl@prefixx} \grCycle[RA=\tkzb@rtemp,prefix=\tkzb@ptemp]{6}% \begin{scope}[rotate=60] \edef\tkzb@rtemp{\cmdGR@cl@RC} \edef\tkzb@ptemp{\cmdGR@cl@prefixxx} \grCycle[RA=\tkzb@rtemp,prefix=\tkzb@ptemp]{3}% \end{scope} \setcounter{tkzb@ca}{2} \foreach \st in {5,0,1}{% \foreach \v in {0,1,2}{% \pgfmathsetcounter{tkzb@next}{modI((\thetkzb@ca*\v)+\st,6)}% \Edge(\cmdGR@cl@prefix\v)(\cmdGR@cl@prefixx\thetkzb@next) }% }% \setcounter{tkzb@ca}{2} \foreach \v in {0,1,2}{% \foreach \st in {0,1,2}{% \pgfmathsetcounter{tkzb@next}{modI(\thetkzb@ca*\v+\st,6)}% \Edge(\cmdGR@cl@prefixxx\v)(\cmdGR@cl@prefixx\thetkzb@next) }% }% \fi \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grDodecahedral %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\grDodecahedral}[1][]{% \begingroup% \setkeys[GR]{cl}{#1}% \ifcase\cmdGR@cl@form \or \grCycle[#1]{10} \edef\tkzb@rtemp{\cmdGR@cl@RB} \edef\tkzb@ptemp{\cmdGR@cl@prefixx} \grCirculant[RA=\tkzb@rtemp,prefix=\tkzb@ptemp]{10}{2} \EdgeIdentity{\cmdGR@cl@prefix}{\cmdGR@cl@prefixx}{10} \or \grCycle[#1]{5} \begin{scope}[rotate=36] \edef\tkzb@rtemp{\cmdGR@cl@RC} \edef\tkzb@ptemp{\cmdGR@cl@prefixxx} \grEmptyCycle[RA=\tkzb@rtemp,prefix=\tkzb@ptemp]{5} \end{scope} \edef\tkzb@rtemp{\cmdGR@cl@RB} \edef\tkzb@ptemp{\cmdGR@cl@prefixx} \grEmptyCycle[RA=\tkzb@rtemp,prefix=\tkzb@ptemp]{5} \begin{scope}[rotate=36] \edef\tkzb@rtemp{\cmdGR@cl@RD} \edef\tkzb@ptemp{\cmdGR@cl@prefixxxx} \grCycle[RA=\tkzb@rtemp,prefix=\tkzb@ptemp]{5}% \end{scope} \EdgeIdentity{\cmdGR@cl@prefix}{\cmdGR@cl@prefixx}{5} \EdgeIdentity{\cmdGR@cl@prefixxx}{\cmdGR@cl@prefixxxx}{5} \EdgeIdentity{\cmdGR@cl@prefixx}{\cmdGR@cl@prefixxx}{5} \EdgeMod{\cmdGR@cl@prefixx}{\cmdGR@cl@prefixxx}{5}{-1} \or \grCycle[#1]{5} \begin{scope}[rotate=36] \edef\tkzb@rtemp{\cmdGR@cl@RC} \edef\tkzb@ptemp{\cmdGR@cl@prefixxx} \grEmptyCycle[RA=\tkzb@rtemp,prefix=\tkzb@ptemp]{5} \end{scope} \edef\tkzb@rtemp{\cmdGR@cl@RB} \edef\tkzb@ptemp{\cmdGR@cl@prefixx} \grCycle[RA=\tkzb@rtemp,prefix=\tkzb@ptemp]{10} \EdgeInGraphLoop{\cmdGR@cl@prefixxx}{5} \EdgeDoubleMod{\cmdGR@cl@prefix}{5}{0}{1}% {\cmdGR@cl@prefixx}{10}{0}{2}{5} \EdgeDoubleMod{\cmdGR@cl@prefixxx}{5}{0}{1}% {\cmdGR@cl@prefixx}{10}{1}{2}{5} \or \grLCF[#1]{10,7,4,-4,-7,10,-4,7,-7,4}{2} \or \grCycle[#1]{10} \edef\tkzb@rtemp{\cmdGR@cl@RB} \edef\tkzb@ptemp{\cmdGR@cl@prefixx} \grEmptyCycle[RA=\tkzb@rtemp,prefix=\tkzb@ptemp]{6} \begin{scope}[rotate=45] \edef\tkzb@rtemp{\cmdGR@cl@RC} \edef\tkzb@ptemp{\cmdGR@cl@prefixxx} \grEmptyCycle[RA=\tkzb@rtemp,prefix=\tkzb@ptemp]{4}% \end{scope} \setcounter{tkzb@ca}{0} \foreach \v in {1,4,6,9}{% \Edge(\cmdGR@cl@prefix\v)(\cmdGR@cl@prefixxx\thetkzb@ca) \stepcounter{tkzb@ca} }% \setcounter{tkzb@ca}{0} \foreach \v in {2,1,5,4}{% \Edge(\cmdGR@cl@prefixx\v)(\cmdGR@cl@prefixxx\thetkzb@ca) \stepcounter{tkzb@ca} }% \setcounter{tkzb@ca}{0} \foreach \v in {0,2,3,5,7,8}{% \Edge(\cmdGR@cl@prefix\v)(\cmdGR@cl@prefixx\thetkzb@ca) \stepcounter{tkzb@ca} }% \Edge(\cmdGR@cl@prefixxx0)(\cmdGR@cl@prefixxx3) \Edge(\cmdGR@cl@prefixxx1)(\cmdGR@cl@prefixxx2) \Edge(\cmdGR@cl@prefixx0)(\cmdGR@cl@prefixx1) \Edge(\cmdGR@cl@prefixx0)(\cmdGR@cl@prefixx5) \Edge(\cmdGR@cl@prefixx3)(\cmdGR@cl@prefixx2) \Edge(\cmdGR@cl@prefixx3)(\cmdGR@cl@prefixx4) \fi \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grMobiusKantor %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\grMobiusKantor}[1][]{% #1 options #2 ordre du graphe \begingroup% \setkeys[GR]{cl}{#1} \ifcase\cmdGR@cl@form \or \grCycle[#1]{16} \EdgeInGraphMod*{\cmdGR@cl@prefix}{16}{5}{0}{2} \or \grCycle[#1]{8} \edef\tkzb@rtemp{\cmdGR@cl@RB} \edef\tkzb@ptemp{\cmdGR@cl@prefixx} \grCirculant[RA=\tkzb@rtemp,prefix=\tkzb@ptemp]{8}{3} \EdgeIdentity{\cmdGR@cl@prefix}{\cmdGR@cl@prefixx}{8} \or \grCirculant[#1]{8}{3} \edef\tkzb@rtemp{\cmdGR@cl@RB} \edef\tkzb@ptemp{\cmdGR@cl@prefixx} \grCycle[#1,RA=\tkzb@rtemp,prefix=\tkzb@ptemp]{8} \EdgeIdentity{\cmdGR@cl@prefix}{\cmdGR@cl@prefixx}{8} \fi \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grMoebiusLadder %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\grMobiusLadder}[2][]{% \begingroup% \setkeys[GR]{cl}{#1} \grEmptyCycle[#1]{#2} \pgfmathsetcounter{tkzb@temp}{#2-1} \edef\tkzb@rtemp{\cmdGR@cl@RB} \edef\tkzb@ptemp{\cmdGR@cl@prefixx} \grEmptyCycle[RA=\tkzb@rtemp,prefix=\tkzb@ptemp]{#2}% \EdgeIdentity{\cmdGR@cl@prefix}{\cmdGR@cl@prefixx}{#2} \EdgeInGraphLoop*{\cmdGR@cl@prefix}{#2} \EdgeInGraphLoop*{\cmdGR@cl@prefixx}{#2} \Edge(\cmdGR@cl@prefix0)(\cmdGR@cl@prefixx\thetkzb@temp) \Edge(\cmdGR@cl@prefixx0)(\cmdGR@cl@prefix\thetkzb@temp) \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grCocktailParty %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\grCocktailParty}[2][]{% \begingroup% \setkeys[GR]{cl}{#1}% \pgfmathsetcounter{tkzb@temp}{#2-1} \grPath[#1,RS=0]{#2} \edef\tkzb@ptemp{\cmdGR@cl@prefixx} \edef\tkzb@rtemp{\cmdGR@cl@RS} \grPath[#1,prefix=\tkzb@ptemp,RS=\tkzb@rtemp]{#2} \foreach \cpx in {0,...,\thetkzb@temp}{% \EdgeFromOneToComp{\cmdGR@cl@prefix}{\cmdGR@cl@prefixx}{\cpx}{#2} } \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grCrown %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\grCrown}[2][]{% \begingroup% \setkeys[GR]{cl}{#1}% \pgfmathsetcounter{tkzb@temp}{#2-1} \grEmptyPath[#1,RS=0]{#2} \edef\tkzb@ptemp{\cmdGR@cl@prefixx} \edef\tkzb@rtemp{\cmdGR@cl@RS} \grEmptyPath[#1,prefix=\tkzb@ptemp,RS=\tkzb@rtemp]{#2} \foreach \cpx in {0,...,\thetkzb@temp}{% \EdgeFromOneToComp{\cmdGR@cl@prefix}{\cmdGR@cl@prefixx}{\cpx}{#2} } \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grMcGee %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\grMcGee}[1][]{% \begingroup% \setkeys[GR]{cl}{#1}% \grLCF[#1]{-12,7,-7}{8} \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grRobertson %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\grRobertson}[1][]{% \begingroup% \setkeys[GR]{cl}{#1}% \grLCF[#1]{8,4,7,4,8,5,7,4,7,8,4,5,7,8,4,8,4,8,4}{1} \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grRobertsonWegner %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\grRobertsonWegner}[1][]{% \begingroup% \setkeys[GR]{cl}{#1}% \grLCF[#1]{6,12}{15} \EdgeInGraphMod{\cmdGR@cl@prefix}{30}{9}{1}{6} \EdgeInGraphMod*{\cmdGR@cl@prefix}{30}{15}{2}{6} \EdgeInGraphMod*{\cmdGR@cl@prefix}{30}{9}{3}{6} \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grDoyle %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\grDoyle}[1][]{% \begingroup% \setkeys[GR]{cl}{#1}% \ifcase\cmdGR@cl@form \or \grCycle[#1]{9} \begin{scope}[rotate=18] \edef\tkzb@ptemp{\cmdGR@cl@prefixx} \edef\tkzb@rtemp{\cmdGR@cl@RB} \grCirculant[#1,prefix=\tkzb@ptemp,RA=\tkzb@rtemp]{9}{2} \end{scope} \EdgeMod{\cmdGR@cl@prefixx}{\cmdGR@cl@prefix}{9}{1} \edef\tkzb@ptemp{\cmdGR@cl@prefixxx} \edef\tkzb@rtemp{\cmdGR@cl@RC} \grCirculant[#1,prefix=\tkzb@ptemp,RA=\tkzb@rtemp]{9}{4} \EdgeIdentity{\cmdGR@cl@prefix}{\cmdGR@cl@prefixxx}{9} \EdgeMod{\cmdGR@cl@prefixx}{\cmdGR@cl@prefixxx}{9}{1} \or \grCycle[#1]{27} \EdgeDoubleMod{\cmdGR@cl@prefix}{27}{0}{3} {\cmdGR@cl@prefix}{27}{13}{3}{9} \EdgeDoubleMod{\cmdGR@cl@prefix}{27}{1}{3} {\cmdGR@cl@prefix}{27}{5}{3}{9} \EdgeDoubleMod{\cmdGR@cl@prefix}{27}{0}{3} {\cmdGR@cl@prefix}{27}{20}{3}{9} \or \grCycle[#1]{27} \EdgeDoubleMod{\cmdGR@cl@prefix}{27}{17}{1} {\cmdGR@cl@prefix}{27}{10}{-2}{4} \EdgeDoubleMod{\cmdGR@cl@prefix}{27}{26}{1} {\cmdGR@cl@prefix}{27}{19}{-2}{4} \EdgeDoubleMod{\cmdGR@cl@prefix}{27}{8}{1} {\cmdGR@cl@prefix}{27}{1}{-2}{4} \EdgeDoubleMod{\cmdGR@cl@prefix}{27}{4}{1} {\cmdGR@cl@prefix}{27}{27}{-2}{3} \EdgeDoubleMod{\cmdGR@cl@prefix}{27}{8}{1} {\cmdGR@cl@prefix}{27}{1}{-2}{4} \EdgeDoubleMod{\cmdGR@cl@prefix}{27}{14}{1} {\cmdGR@cl@prefix}{27}{7}{-2}{2} \EdgeDoubleMod{\cmdGR@cl@prefix}{27}{23}{1} {\cmdGR@cl@prefix}{27}{16}{-2}{2} \Edge(\cmdGR@cl@prefix9)(\cmdGR@cl@prefix13)% \Edge(\cmdGR@cl@prefix18)(\cmdGR@cl@prefix22)% \fi \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grDesargues %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\grDesargues}[1][]{% \begingroup% \setkeys[GR]{cl}{#1}% \ifcase\cmdGR@cl@form \or \grLCF[#1]{5,-5,9,-9}{5} \or \grGeneralizedPetersen[#1]{10}{3} \fi \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grKonisberg %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % #1 prefix #2 indice #2 prefix #3 indice choisie entre #4 et #5 ... \newcommand{\grKonisberg}[1][]{% \begingroup% \setkeys[GR]{cl}{#1}% \grCycle[#1]{4} \Edge[style={bend left}](\cmdGR@cl@prefix1)(\cmdGR@cl@prefix2) \Edge[style={bend left}](\cmdGR@cl@prefix2)(\cmdGR@cl@prefix3) \Edge(\cmdGR@cl@prefix0)(\cmdGR@cl@prefix2) \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grWong %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand{\grWong}[1][]{% \begingroup% \setkeys[GR]{cl}{#1}% \grLCF[#1]{8,4,12,4,8,4}{5} \EdgeInGraphMod*{\cmdGR@cl@prefix}{30}{15}{0}{3} \EdgeInGraphMod*{\cmdGR@cl@prefix}{30}{16}{1}{6} \EdgeInGraphMod*{\cmdGR@cl@prefix}{30}{18}{4}{6} \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grTutte %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand{\grTutteCoxeter}[1][]{% \begingroup% \setkeys[GR]{cl}{#1}% \grLCF[#1]{-13,-9,7,-7,9,13}{5} \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grFoster %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand{\grFoster}[1][]{% \begingroup% \setkeys[GR]{cl}{#1}% \grLCF[#1]{17,-9,37,-37,9,-17}{15} \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grFolkman %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand{\grFolkman}[1][]{% \begingroup% \setkeys[GR]{cl}{#1}% \grLCF[#1]{5,-7,-7,5}{5} \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grFranklin %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand{\grFranklin}[1][]{% \begingroup% \setkeys[GR]{cl}{#1}% \grLCF[#1]{5,-5}{6} \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grAndrasfai %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand{\grAndrasfai}[2][]{% \begingroup% \setkeys[GR]{cl}{#1}% \pgfmathsetcounter{tkza@int}{3*#2-1} \grEmptyCycle[#1]{\thetkza@int} \pgfmathsetcounter{tkza@tmp}{\thetkza@int/2} \pgfmathsetcounter{tkza@tmp}{\thetkza@int+1} \pgfmathsetcounter{tkzb@temp}{1} \whiledo{\value{tkzb@temp} < \value{tkza@tmp}}{% \EdgeInGraphMod*{\cmdGR@cl@prefix}{\thetkza@int}{\thetkzb@temp}{0}{1} \pgfmathsetcounter{tkzb@temp}{\thetkzb@temp+3} } \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grGrotzsch %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\grGrotzsch}[1][]{% \begingroup% \setkeys[GR]{cl}{#1}% \ifcase\cmdGR@cl@form \or \begin{scope}[rotate=18]% \grStar[#1]{6}% \edef\tkzb@ptemp{\cmdGR@cl@prefixx} \edef\tkzb@rtemp{\cmdGR@cl@RB} \grCycle[#1,prefix=\tkzb@ptemp,RA=\tkzb@rtemp]{5}% \Edges(\cmdGR@cl@prefix0,\cmdGR@cl@prefixx1,% \cmdGR@cl@prefix2,\cmdGR@cl@prefixx3,% \cmdGR@cl@prefix4,\cmdGR@cl@prefixx0,% \cmdGR@cl@prefix1,\cmdGR@cl@prefixx2,% \cmdGR@cl@prefix3,\cmdGR@cl@prefixx4,\cmdGR@cl@prefix0) \end{scope} \or \begin{scope}[rotate=18]% \grStar[#1]{6}% \edef\tkzb@ptemp{\cmdGR@cl@prefixx} \edef\tkzb@rtemp{\cmdGR@cl@RB} \begin{scope}[rotate=-36]% \grCirculant[#1,prefix=\tkzb@ptemp,RA=\tkzb@rtemp]{5}{2}% \end{scope} \EdgeDoubleMod{a}{5}{0}{1}% {b}{5}{1}{1}{4} \EdgeIdentity{a}{b}{5} \end{scope} \fi \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grLevi %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\grLevi}[1][]{% \begingroup% \setkeys[GR]{cl}{#1}% \ifcase\cmdGR@cl@form \or \grLCF[#1]{-13,-9,7,-7,9,13}{5} \or \grCycle[#1]{10} \EdgeInGraphMod{\cmdGR@cl@prefix}{10}{5} \edef\tkzb@ptemp{\cmdGR@cl@prefixx} \edef\tkzb@rtemp{\cmdGR@cl@RB} \grEmptyCycle[#1,prefix=\tkzb@ptemp,RA=\tkzb@rtemp]{10} \edef\tkzb@ptemp{\cmdGR@cl@prefixxx} \edef\tkzb@rtemp{\cmdGR@cl@RC} \grEmptyCycle[#1,prefix=\tkzb@ptemp,RA=\tkzb@rtemp]{10} \EdgeInGraphMod{\cmdGR@cl@prefixxx}{10}{4} \fi \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grPappus %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\grPappus}[1][]{% \begingroup% \setkeys[GR]{cl}{#1}% \ifcase\cmdGR@cl@form \or \grLCF[#1]{5,7,-7,7,-7,-5}{3} \or \begin{scope}[rotate=30]% \grCycle[#1]{6} \edef\tkzb@ptemp{\cmdGR@cl@prefixx} \edef\tkzb@rtemp{\cmdGR@cl@RB} \grCycle[#1,prefix=\tkzb@ptemp,RA=\tkzb@rtemp]{6} \edef\tkzb@ptemp{\cmdGR@cl@prefixxx} \edef\tkzb@rtemp{\cmdGR@cl@RC} \grCycle[#1,prefix=\tkzb@ptemp,RA=\tkzb@rtemp]{6} \EdgeDoubleMod{\cmdGR@cl@prefixxx}{6}{0}{2}% {\cmdGR@cl@prefixx}{6}{5}{2}{2} \EdgeDoubleMod{\cmdGR@cl@prefixxx}{6}{5}{2}% {\cmdGR@cl@prefix}{6}{1}{2}{2} \EdgeDoubleMod{\cmdGR@cl@prefixx}{6}{0}{2}% {\cmdGR@cl@prefix}{6}{0}{2}{2} \end{scope} \or \begin{scope}[rotate=30] \grCycle[#1]{6} \edef\tkzb@ptemp{\cmdGR@cl@prefixx} \edef\tkzb@rtemp{\cmdGR@cl@RB} \grCirculant[#1,prefix=\tkzb@ptemp,RA=\tkzb@rtemp]{6}{2} \edef\tkzb@ptemp{\cmdGR@cl@prefixxx} \edef\tkzb@rtemp{\cmdGR@cl@RC} \grEmptyCycle[#1,prefix=\tkzb@ptemp,RA=\tkzb@rtemp]{6} \EdgeIdentity{\cmdGR@cl@prefixx}{\cmdGR@cl@prefix}{6} \EdgeInGraphMod{\cmdGR@cl@prefixxx}{6}{3} \end{scope} \fi \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grChvatal %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\grChvatal}[1][]{% \begingroup% \setkeys[GR]{cl}{#1}% \ifcase\cmdGR@cl@form \or \begin{scope}[rotate=45] \grCycle[#1]{4} \end{scope} \edef\tkzb@ptemp{\cmdGR@cl@prefixx} \edef\tkzb@rtemp{\cmdGR@cl@RB} \begin{scope}[rotate=22.25] \grEmptyCycle[#1,prefix=\tkzb@ptemp,RA=\tkzb@rtemp]{8} \end{scope} \EdgeInGraphMod{\cmdGR@cl@prefixx}{8}{4} \EdgeInGraphMod*{\cmdGR@cl@prefixx}{8}{1}{1}{2} \EdgeInGraphMod*{\cmdGR@cl@prefixx}{8}{3}{1}{2} \EdgeDoubleMod{\cmdGR@cl@prefix}{4}{0}{1}% {\cmdGR@cl@prefixx}{8}{1}{2}{3} \EdgeDoubleMod{\cmdGR@cl@prefix}{4}{0}{1}% {\cmdGR@cl@prefixx}{8}{0}{2}{3} \or \begin{scope}[rotate=18] \grCycle[#1]{5} \edef\tkzb@ptemp{\cmdGR@cl@prefixx} \edef\tkzb@rtemp{\cmdGR@cl@RB} \grEmptyCycle[#1,prefix=\tkzb@ptemp,RA=\tkzb@rtemp]{5} \end{scope} \edef\tkzb@ptemp{\cmdGR@cl@prefixxx} \edef\tkzb@rtemp{\cmdGR@cl@RC} \grEmptyCycle[#1,prefix=\tkzb@ptemp,RA=\tkzb@rtemp]{2} \EdgeDoubleMod{\cmdGR@cl@prefix}{5}{0}{1}% {\cmdGR@cl@prefixx}{5}{1}{1}{4} \EdgeDoubleMod{\cmdGR@cl@prefix}{5}{0}{1}% {\cmdGR@cl@prefixx}{5}{4}{1}{4} \EdgeFromOneToSel{\cmdGR@cl@prefixxx}{\cmdGR@cl@prefixx}{0}{4,0,1} \EdgeFromOneToSel{\cmdGR@cl@prefixxx}{\cmdGR@cl@prefixx}{1}{1,2,3} \Edge(\cmdGR@cl@prefixx3)(\cmdGR@cl@prefixx4) \Edge(\cmdGR@cl@prefixx0)(\cmdGR@cl@prefixxx1) \Edge(\cmdGR@cl@prefixx2)(\cmdGR@cl@prefixxx0) \or \grCycle[#1]{12} \Edges(\cmdGR@cl@prefix0,\cmdGR@cl@prefix6,\cmdGR@cl@prefix3,% \cmdGR@cl@prefix8,\cmdGR@cl@prefix11,\cmdGR@cl@prefix5,% \cmdGR@cl@prefix2,\cmdGR@cl@prefix9,\cmdGR@cl@prefix0) \Edges(\cmdGR@cl@prefix1,\cmdGR@cl@prefix7,\cmdGR@cl@prefix10,% \cmdGR@cl@prefix4,\cmdGR@cl@prefix1) \fi \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grBalaban %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand*{\grBalaban}[1][]{% \begingroup% \setkeys[GR]{cl}{#1}% \ifcase\cmdGR@cl@form \or \grCycle[#1]{50} \EdgeInGraphMod*{\cmdGR@cl@prefix}{50}{9}{3}{5} \EdgeInGraphMod*{\cmdGR@cl@prefix}{50}{25}{0}{5} \begin{scope}[rotate=12] \edef\tkzb@ptemp{\cmdGR@cl@prefixx} \edef\tkzb@rtemp{\cmdGR@cl@RB} \grCirculant[#1,prefix=\tkzb@ptemp,RA=\tkzb@rtemp]{10}{3} \end{scope} \begin{scope}[rotate=24] \edef\tkzb@ptemp{\cmdGR@cl@prefixxx} \edef\tkzb@rtemp{\cmdGR@cl@RC} \grCirculant[#1,prefix=\tkzb@ptemp,RA=\tkzb@rtemp]{10}{3} \end{scope} \EdgeDoubleMod{\cmdGR@cl@prefix}{50}{1}{5}% {\cmdGR@cl@prefixx}{10}{0}{1}{10} \EdgeDoubleMod{\cmdGR@cl@prefix}{50}{4}{5}% {\cmdGR@cl@prefixxx}{10}{0}{1}{10} \or \begin{scope}[rotate=9] \grCycle[#1]{10} \end{scope} \begin{scope}[rotate=-9] \edef\tkzb@ptemp{\cmdGR@cl@prefixx} \edef\tkzb@rtemp{\cmdGR@cl@RB} \grCycle[#1,prefix=\tkzb@ptemp,RA=\tkzb@rtemp]{10} \end{scope} \begin{scope}[rotate=6] \edef\tkzb@ptemp{\cmdGR@cl@prefixxx} \edef\tkzb@rtemp{\cmdGR@cl@RC} \grEmptyCycle[#1,prefix=\tkzb@ptemp,RA=\tkzb@rtemp]{30} \EdgeInGraphMod*{\cmdGR@cl@prefixxx}{30}{1}{0}{3} \EdgeInGraphMod*{\cmdGR@cl@prefixxx}{30}{1}{1}{3} \EdgeInGraphMod*{\cmdGR@cl@prefixxx}{30}{15}{1}{3} \end{scope} \begin{scope}[rotate=9] \edef\tkzb@ptemp{\cmdGR@cl@prefixxxx} \edef\tkzb@rtemp{\cmdGR@cl@RD} \grEmptyCycle[#1,prefix=\tkzb@ptemp,RA=\tkzb@rtemp]{20} \EdgeInGraphMod*{\cmdGR@cl@prefixxxx}{20}{7}{0}{2} \EdgeInGraphMod*{\cmdGR@cl@prefixxxx}{20}{5}{1}{2} \end{scope} \EdgeDoubleMod{\cmdGR@cl@prefix}{10}{0}{1} {\cmdGR@cl@prefixxx}{30}{0}{3}{9} \EdgeDoubleMod{\cmdGR@cl@prefixx}{10}{0}{1}% {\cmdGR@cl@prefixxx}{30}{29}{3}{9} \EdgeDoubleMod{\cmdGR@cl@prefixxx}{30}{0}{3}% {\cmdGR@cl@prefixxxx}{20}{0}{2}{9} \EdgeDoubleMod{\cmdGR@cl@prefixxx}{30}{2}{3}% {\cmdGR@cl@prefixxxx}{20}{1}{2}{9} \or \grEmptyCycle[#1]{10} \begin{scope}[rotate=9] \edef\tkzb@ptemp{\cmdGR@cl@prefixx} \edef\tkzb@rtemp{\cmdGR@cl@RB} \grEmptyCycle[#1,prefix=\tkzb@ptemp,RA=\tkzb@rtemp]{20} \end{scope} \begin{scope}[rotate=13] \edef\tkzb@ptemp{\cmdGR@cl@prefixxx} \edef\tkzb@rtemp{\cmdGR@cl@RC} \grEmptyCycle[#1,prefix=\tkzb@ptemp,RA=\tkzb@rtemp]{10} \end{scope} \begin{scope}[rotate=-13] \edef\tkzb@ptemp{\cmdGR@cl@prefixxxx} \edef\tkzb@rtemp{\cmdGR@cl@RD} \grEmptyCycle[#1,prefix=\tkzb@ptemp,RA=\tkzb@rtemp]{10} \end{scope} \begin{scope}[rotate=9] \edef\tkzb@ptemp{\cmdGR@cl@prefixxxxx} \edef\tkzb@rtemp{\cmdGR@cl@RE} \grCirculant[#1,prefix=\tkzb@ptemp,RA=\tkzb@rtemp]{20}{6} \end{scope} \EdgeIdentity{\cmdGR@cl@prefixx}{\cmdGR@cl@prefixxxxx}{20} \EdgeDoubleMod{\cmdGR@cl@prefix}{10}{0}{1}% {\cmdGR@cl@prefixx}{20}{0}{2}{10} \EdgeDoubleMod{\cmdGR@cl@prefix}{10}{0}{1}% {\cmdGR@cl@prefixx}{20}{19}{2}{10} \EdgeInGraphMod{\cmdGR@cl@prefix}{10}{5} \EdgeDoubleMod{\cmdGR@cl@prefixxx}{10}{0}{1}% {\cmdGR@cl@prefixx}{20}{0}{2}{10} \EdgeDoubleMod{\cmdGR@cl@prefixxxx}{10}{0}{1}% {\cmdGR@cl@prefixx}{20}{19}{2}{10} \EdgeDoubleMod{\cmdGR@cl@prefixxxx}{10}{0}{1}% {\cmdGR@cl@prefixxx}{10}{1}{1}{10} \EdgeDoubleMod{\cmdGR@cl@prefixxxx}{10}{1}{1}% {\cmdGR@cl@prefixxx}{10}{0}{1}{10} \fi \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % Labels %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % #2 label/prefix/num \define@cmdkey [GR] {WL} {color}[black]{} \define@cmdkey [GR] {WL} {labelstyle}{} \define@cmdkey [GR] {WL} {size}{} \define@cmdkey [GR] {WL} {style}{} \presetkeys [GR] {WL} {color = black,% labelstyle = {},% size = {},% style = {}}{} \newcommand{\grWriteExplicitLabels}[2][]{% \begingroup% \setkeys[GR]{WL}{#1}% \foreach \text/\where in {#2}{% \node at (\where) {\text}; }% \endgroup% } \newcommand{\grWriteExplicitLabel}[2][]{% \begingroup% \setkeys[GR]{cl}{#1}% \node at (\where) {\text}; \endgroup% }% %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % AssignVertexLabel %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \tikzset{AssignStyle/.style={}} \define@cmdkey [GR] {AVL} {color}{} \define@cmdkey [GR] {AVL} {size}{} \define@cmdkey [GR] {AVL} {pos}{} \define@boolkey[GR] {AVL} {Math}[true]{} \presetkeys [GR] {AVL} {size = \normalsize,% color = black,% pos = {},% Math = false}{} \newcommand*{\AssignVertexLabel}[4][]{% \begingroup% \setkeys[GR]{AVL}{#1} \setcounter{tkzb@ta}{0} \foreach \name in {#4}{% \ifGR@AVL@Math% \node at (#2\thetkzb@ta) {$\textcolor{\cmdGR@AVL@color}{\cmdGR@AVL@size\name}$}; \else% \node[AssignStyle] at (#2\thetkzb@ta) {\textcolor{\cmdGR@AVL@color}{\cmdGR@AVL@size\name}}; \fi% \stepcounter{tkzb@ta}} \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % grEdgeForTree %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % #1 prefix #2 indice #2 prefix #3 indice choisie entre #4 et #5 ... \newcommand{\grEdgeForTree}[5]{% \begingroup% \foreach \x in {#4,...,#5}{% \Edge(#1#2)(#3\x)% }% \endgroup% } %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % The End %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \endinput