tkz-berge.sty revision 2450a4210dee64b064499a3a1154129bdfc74981
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% 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