<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">% !TeX TXS-program:compile = txs:///arara
% arara: lualatex: {shell: yes, synctex: no, interaction: batchmode}
% arara: lualatex: {shell: yes, synctex: no, interaction: batchmode}
% arara: lualatex: {shell: yes, synctex: no, interaction: batchmode}

\documentclass[french,a4paper,11pt]{article}
\usepackage[margin=2cm,includefoot]{geometry}
\def\TPversion{0.3.2}
\def\TPdate{5 mai 2025}
%\usepackage[utf8]{inputenc}
%\usepackage[T1]{fontenc}
\usepackage{amsmath,amssymb}
\usepackage{ProfSio}
\usepackage{awesomebox}
\usepackage{fontawesome5}
\usepackage{footnote}
\makesavenoteenv{tabular}
\usepackage{enumitem}
\usepackage{wrapstuff}
\usepackage{lipsum}
\UseTblrLibrary{booktabs}
\usepackage{fancyvrb}
\usepackage{fancyhdr}
\usepackage{pdfpages}
\fancyhf{}
\renewcommand{\headrulewidth}{0pt}
\lfoot{\sffamily\small [ProfSio]}
\cfoot{\sffamily\small - \thepage{} -}
\rfoot{\hyperlink{matoc}{\small\faArrowAltCircleUp[regular]}}

%\usepackage{hvlogos}
\usepackage{hologo}
\providecommand\tikzlogo{Ti\textit{k}Z}
\providecommand\TeXLive{\TeX{}Live\xspace}
\providecommand\PSTricks{\textsf{PSTricks}\xspace}
\let\pstricks\PSTricks
\let\TikZ\tikzlogo
\newcommand\TableauDocumentation{%
	\begin{tblr}{width=\linewidth,colspec={X[c]X[c]X[c]X[c]X[c]X[c]},cells={font=\large\sffamily}}
		{\LaTeX} &amp; {\hologo{pdfLaTeX}} &amp; {\hologo{LuaLaTeX}} &amp; {\TikZ} &amp; {\TeXLive} &amp; {\hologo{MiKTeX}} \\
	\end{tblr}
}

\usepackage{hyperref}
\urlstyle{same}
\hypersetup{pdfborder=0 0 0}
\setlength{\parindent}{0pt}
\definecolor{LightGray}{gray}{0.9}

\usepackage{babel}
\AddThinSpaceBeforeFootnotes
\FrenchFootnotes

%\usepackage{listings}

\usepackage{newverbs}
\newverbcommand{\motcletex}{\color{cyan!75!black}}{}
\newverbcommand{\packagetex}{\color{violet!75!black}}{}

\usepackage[most]{tcolorbox}
\tcbuselibrary{listingsutf8}
\newtcblisting{DemoCode}[1][]{%
	enhanced,width=0.95\linewidth,center,%
	bicolor,size=title,%
	colback=cyan!2!white,%
	colbacklower=cyan!1!white,%
	colframe=cyan!75!black,%
	listing options={%
		breaklines=true,%
		breakatwhitespace=true,%
		style=tcblatex,basicstyle=\small\ttfamily,%
		tabsize=4,%
		commentstyle={\itshape\color{gray}},
		keywordstyle={\color{blue}},%
		classoffset=0,%
		keywords={},%
		alsoletter={-},%
		keywordstyle={\color{blue}},%
		classoffset=1,%
		alsoletter={-},%
		morekeywords={center,justify,\lipsum},%
		keywordstyle={\color{violet}},%
		classoffset=2,%
		alsoletter={-},%
		morekeywords={\MPMPlaceTache,\MPMPlaceNotice,\MPMPlaceDuree,GrapheMPM,TableKarnaugh,\KarnaughCasesResult,\KarnaughBlocRegroup,\KarnaughBlocRegroupAuto,\MPMPlaceTaches,\MPMPlaceDurees,GrapheTikz,\GrphPlaceSommets,\GrphTraceAretes,\tikzset,\DiagrammeSagittal,\draw,\DiagrammeSagittalCompo,\TableVerite,\SimplificationKarnaugh,\SimplificationBooleenne,\KarnaughCasesAuto,\MatriceAdjacence,\PuissanceMatrice,\NbCheminsLongueur,\FermetureTransitive,\ResolSystemeMatrices,\PresentProdMat,\OpeBinDecHex,\ExprBool,\GrilleCCFSIO},%
		keywordstyle={\color{green!50!black}},%
		classoffset=3,%
		morekeywords={CouleurDurees,CouleurFleches,LargeurCases,Epaisseur,Police,CouleurDates,CouleurBords,NoirBlanc,Grille,DecalHorizDeb,DecalVertDeb,DecalHorizFin,DecalVertFin,Coude,SensCoude,Unite,Variables,Swap,Aide,CouleurCases,Decalage,Couleur,Type,Legende,PosVarLaterale,CouleurLegende,CouleurSommets,TypeSommets,Unite,CouleurFT,DimensionSommets,PositionFleches,EchelleFleches,TypeFleche,Droit,Milieu,AngleGauche,AngleDroite,Boucle,GrphStyleArc,GrphStyleSommet,Poids,GrphStylepoids,DistElem,DistEns,LargEns,NomAppli,CouleurE,CouleurAppli,CouleurF,CouleursFleches,TypeFleche,Epaisseur,Labels,Ensembles,PosLabels,PoliceLabels,Offset,NomApplis,CouleursAppli,VF,LargeursColonnes,CouleurEnonce,CodeAvant,CodeApres,StyleAlternatif,PoliceTT,Espace,Couleurs,Contraire,Enonce,Bordure,Sommets,Num,PoliceBordure,De,Vers,Formule,Brut,NomMatrice,Longueur,Complet,NomsMatrices,NomInverse,NomSysteme,Inconnues,OptionNiceMatrix,Base,AffRetenues,AffEgal,SymbDecal,LimiteCapac,CouleurRetenue,Interm,Enonce,Decalages,Couleurs,Dense,Dernier,MathE,MathF,MathG,CouleurPlus,Vide,HauteurVide,Session,PoliceManuscrite},%
		keywordstyle={\color{orange}}
	},%
	#1
}

\tcbset{vignettes/.style={%
	nobeforeafter,box align=base,boxsep=0pt,enhanced,sharp corners=all,rounded corners=southeast,%
	boxrule=0.75pt,left=7pt,right=1pt,top=0pt,bottom=0.25pt,%
	}
}

\tcbset{vignetteMaJ/.style={%
	fontupper={\vphantom{pf}\footnotesize\ttfamily},
	vignettes,colframe=purple!50!black,coltitle=white,colback=purple!10,%
	overlay={\begin{tcbclipinterior}%
			\fill[fill=purple!75]($(interior.south west)$) rectangle node[rotate=90]{\tiny \sffamily{\textcolor{black}{\scalebox{0.66}[0.66]{\textbf{MÃ&nbsp;J}}}}} ($(interior.north west)+(5pt,0pt)$);%
	\end{tcbclipinterior}}
	}
}

\newcommand\Cle[1]{{\small\sffamily\textlangle \textcolor{orange}{#1}\textrangle}}
\newcommand\cmaj[1]{\tcbox[vignetteMaJ]{#1}\xspace}

\begin{document}

\setlength{\aweboxleftmargin}{0.07\linewidth}
\setlength{\aweboxcontentwidth}{0.93\linewidth}
\setlength{\aweboxvskip}{8pt}

\pagestyle{fancy}

\thispagestyle{empty}

\vspace{2cm}

\begin{center}
	\begin{minipage}{0.75\linewidth}
	\begin{tcolorbox}[colframe=yellow,colback=yellow!15]
		\begin{center}
			\begin{tabular}{c}
				{\Huge \texttt{ProfSio} [fr]}\\
				\\
				{\LARGE Des outils pour les Maths en BTS SIO.} \\
			\end{tabular}
			
			\bigskip
			
			{\small \texttt{Version \TPversion{} -- \TPdate}}
		\end{center}
	\end{tcolorbox}
\end{minipage}
\end{center}

\begin{center}
	\begin{tabular}{c}
	\texttt{CÃ©dric Pierquet} ({\ttfamily c pierquet -- at -- outlook . fr})\\
	\texttt{\url{https://forge.apps.education.fr/pierquetcedric/packages-latex}}
\end{tabular}
\end{center}

\vspace{0.15cm}

{$\blacktriangleright$~~Commandes spÃ©cifiques pour le programme de MathÃ©matiques en BTS SIO\footnotemark\footnotetext{Brevet de Technicien SupÃ©rieur - Services Informatiques aux Organisations : \href{https://www.letudiant.fr/etudes/bts/bts-sio-services-informatiques-aux-organisations.html}{[Lien]} sur le site de L'Ã‰tudiant}.}

\vspace{0.15cm}

{$\blacktriangleright$~~CrÃ©er des diagrammes MPM\footnotemark\footnotetext{MÃ©thode des Potentiels MÃ©tra : \href{https://fr.wikipedia.org/wiki/MÃ©thode_des_potentiels_mÃ©tra}{[Lien]} sur le site de Wikipedia} (MÃ©thode des Potentiels MÃ©tra).}

\vspace{0.15cm}

{$\blacktriangleright$~~CrÃ©er (et simplifier) des tables de Karnaugh avec mise en valeur (manuelle) des regroupements.}

\vspace{0.15cm}

{$\blacktriangleright$~~CrÃ©er des graphes simples ou des diagrammes sagittaux, travailler sur les matrices.

\vspace{0.15cm}

{$\blacktriangleright$~~CrÃ©er des tables de vÃ©ritÃ© (via \hologo{LuaLaTeX}) grÃ¢ce au code du package \packagetex!luatruthtable!\footnotemark\footnotetext{Package \LaTeX{} : \href{https://ctan.org/pkg/luatruthtable}{[Lien]} sur le site du CTAN}.

\vspace{1cm}

\hfill
\begin{GrapheMPM}[LargeurCases=0.5cm]&lt;scale=0.9&gt;
	%NOTICE
	\MPMPlaceNotice(1,6.5)
	%SOMMETS
	\MPMPlaceTache(1,4)(DÃ©but)(0,0)
	\MPMPlaceTache(3.25,4)(COM)(0,0)
	\MPMPlaceTache(5.5,4)(LOG)(1,2)
	\MPMPlaceTache(5.5,2)(ECR)(1,1)
	\MPMPlaceTache(5.5,7)(MAT)(1,2{,}5)
	\MPMPlaceTache(7.75,7)(CABL)(2,4)
	\MPMPlaceTache(7.75,5.5)(ASS)(2,3{,}5)
	\MPMPlaceTache(10,4)(INST)(4,5)
	\MPMPlaceTache(12.25,4)(POST)(7,7)
	\MPMPlaceTache(14.5,4)(CONF)(8,8)
	\MPMPlaceTache(16.75,4)(Fin)(9,9)
%	%ARCS
	\MPMPlaceDuree{DÃ©but&gt;COM,0}
	\MPMPlaceDuree{COM&gt;MAT,1}\MPMPlaceDuree{COM&gt;LOG,1}\MPMPlaceDuree{COM&gt;ECR,1}
	\MPMPlaceDuree{MAT&gt;CABL,1}\MPMPlaceDuree{MAT&gt;ASS,1}
	\MPMPlaceDuree{LOG&gt;INST,3}
	\MPMPlaceDuree[Coude]{ECR&gt;POST,6}&lt;near start&gt;
	\MPMPlaceDuree[Coude]{CABL&gt;CONF,4}&lt;near start&gt;
	\MPMPlaceDuree{ASS&gt;INST,1{,}5}
	\MPMPlaceDuree{INST&gt;POST,2}
	\MPMPlaceDuree{POST&gt;CONF,1}
	\MPMPlaceDuree{CONF&gt;Fin,1}
\end{GrapheMPM}
\hfill~

\hfill
\begin{TableKarnaugh}&lt;scale=0.9,baseline=(current bounding box.center)&gt;
	\KarnaughCasesResult{0,1,1,0,1,1,1,1}
	\KarnaughBlocRegroup[Type=Centre,Couleur=blue!75,Decalage=-1.5pt]{10}{32}
	\KarnaughBlocRegroup[Type=Gauche,Couleur=red!75,Decalage=-1.5pt]{00}{11}
	\KarnaughBlocRegroup[Type=Droite,Couleur=red!75,Decalage=-1.5pt]{40}{31}
\end{TableKarnaugh}
\hspace{1cm}
\begin{TableKarnaugh}[Variables=u/v/w,Swap,CouleurCases=lime,PoliceTT]&lt;scale=0.9,baseline=(current bounding box.center)&gt;
	\KarnaughCasesResult*{1,1,1,1,1,0,0,0}
	\KarnaughBlocRegroup[Type=Centre,Couleur=blue!75,Decalage=-1.5pt]{00}{12}
	\KarnaughBlocRegroup[Type=Centre,Couleur=red!75,Decalage=-1.15pt]{01}{42}
\end{TableKarnaugh}
\hspace{1cm}
\TableVerite&lt;baseline=c&gt;{P,Q}{$P$,$Q$}{lognot*P,P*logand*Q,P*imp*Q}{$\lnot P$,$P \lor Q$,$P \Rightarrow Q$}
\hfill~

\vspace{0.5cm}

\hfill
\begin{GrapheTikz}[Unite=0.75cm,CouleurSommets={gray/blue},Epaisseur={very thick/thick},CouleurFleches=orange]&lt;scale=0.9&gt;
	\GrphPlaceSommets{(5,4)/A (2,2)/B (9,3)/C}
	\GrphTraceAretes{A/B}
	\GrphTraceAretes[AngleGauche]{C/A}
	\GrphTraceAretes[AngleDroite]{B/C}
	\GrphTraceAretes[Boucle=4]{A/45 B/135 C/-45}
\end{GrapheTikz}
\hfill~
\DiagrammeSagittal[Labels=false,E={a,b,c},F={A,C,H,P},Labels=false]{a/A,a/P,b/H,b/P,c/C}
\hfill~

%%\hfill{}\textit{Merci Ã&nbsp; Patrick Bideault pour ses retours et conseils !}

%\vfill
%
%\hrule
%
%\medskip
%
%\TableauDocumentation
%
%\medskip
%
%\hrule

\newpage

\phantomsection
\hypertarget{matoc}{}

\tableofcontents

\vfill

\newpage

\section{Historique}

\verb|v0.3.2|~:~~~~Bugfix

\verb|v0.3.1|~:~~~~Ajout d'une option pour tikz.babel + option pour siunitx.fr

\verb|v0.3.0|~:~~~~Mise en conformitÃ© pour les grilles de CCF (E3)

\verb|v0.2.9|~:~~~~Correction d'un bug dans les simplifications de Karnaugh

\verb|v0.2.8|~:~~~~Grilles d'Ã©valuation des CCF

\verb|v0.2.7|~:~~~~Correction d'un bug dans les simplifications de Karnaugh

\verb|v0.2.6|~:~~~~Corrections dans des simplifications de Karnaugh

\verb|v0.2.5|~:~~~~ClÃ© \textsf{[Vide]} pour les tables vÃ©ritÃ©, pour ne pas remplir

\verb|v0.2.4|~:~~~~Ã‰criture (formatÃ©e) d'une expression boolÃ©enne + tables (+,Ã—) dans une base donnÃ©e

\verb|      |~:~~~~Ajout de clÃ©s pour les diagrammes sagittaux et pour les tables de Karnaugh

\verb|v0.2.3|~:~~~~Ajout d'une clÃ© [Dense] pour la rÃ©solution matricielle de systÃ¨me

\verb|      |~:~~~~Commande pour crÃ©er les blocs automatiquement avec Karnaugh

\verb|v0.2.2|~:~~~~Ajout d'une clÃ© \textsf{[Enonce]} pour l'Ã©noncÃ© des systÃ¨mes 3Ã—3

\verb|v0.2.1|~:~~~~OpÃ©rations posÃ©es (en binaire, hexadÃ©cimal et dÃ©cimal)

\verb|v0.2.0|~:~~~~SystÃ¨mes 3x3 par matrices + \textit{prÃ©sentation} d'un produit matriciel

\verb|v0.1.9|~:~~~~Travail sur les matrices d'adjacence (chemins, puissances, fermeture)

\verb|v0.1.8|~:~~~~PossibilitÃ© de crÃ©er le tableau de Karnaugh via une expression boolÃ©enne

\verb|      |~:~~~~Corrections mineures

\verb|v0.1.7|~:~~~~PossibilitÃ© de simplifier une expression boolÃ©enne \textit{directement} + amÃ©lioration des espaces

\verb|v0.1.6|~:~~~~Correction dans les simplifications de Karnaugh + Simplification du contraire

\verb|v0.1.5|~:~~~~Commande pour simplifier une table de Karnaugh Ã&nbsp; trois variables

\verb|v0.1.4|~:~~~~PossibilitÃ© de remplir une table de Karnaugh sans virgule

\verb|v0.1.3|~:~~~~Style alternatif et ClÃ© \Cle{PoliceTT} pour les tables de Karnaugh

\verb|v0.1.2|~:~~~~ClÃ© \Cle{Offset} pour les diagrammes sagittaux + Diagrammes sagittaux de composÃ©es.

\verb|      |~:~~~~Ajout des tables de vÃ©ritÃ© (via \hologo{LuaLaTeX}).

\verb|v0.1.1|~:~~~~Mise Ã&nbsp; jour de la documentation + Diagrammes sagittaux.

\verb|v0.1.0|~:~~~~Version initiale.

\newpage

\section{Le package ProfSio}

\subsection{Introduction}

\begin{noteblock}
Le package \packagetex!ProfSio! propose quelques commandes pour travailler sur des points particuliers de MathÃ©matiques enseignÃ©es en BTS SIO :

\begin{itemize}
	\item opÃ©rations posÃ©es en base 2/10/16 ;
	\item graphes d'ordonnancement par la mÃ©thode MPM ;
	\item expressions boolÃ©ennes et tableaux de Karnaugh pour 3 variables ;
	\item graphes \textit{simples} orientÃ©s ou pondÃ©rÃ©s, des diagrammes sagittaux ;
	\item tables de vÃ©ritÃ© (via \hologo{LuaLaTeX}) ;
	\item etc
\end{itemize}
\vspace*{-\baselineskip}\leavevmode
\end{noteblock}

\begin{warningblock}
Le code ne propose pas de \og rÃ©solution \fg{} du graphe MPM ou de reprÃ©sentation \og automatique \fg{} d'un graphe, il ne consiste \textit{qu'en} une mise en forme du graphe MPM, du tableau de Karnaugh ou du graphe.

\smallskip

Cependant, il est propose de \og simplifier \fg{} des expressions boolÃ©ennes, et pour les tables de vÃ©ritÃ©, le code se charge de crÃ©er le tableau \underline{entiÃ¨rement}, grÃ¢ce aux donnÃ©es du package \packagetex!luatruthtable! (lÃ©gÃ¨rement \textit{patchÃ©es}.
\end{warningblock}

\subsection{Chargement du package, packages utilisÃ©s}

\begin{importantblock}
Le package se charge, de maniÃ¨re classique, dans le prÃ©ambule.

Il n'existe pas d'option pour le package, et \packagetex!xcolor! n'est pas chargÃ©.
\end{importantblock}

\begin{DemoCode}[listing only]
\documentclass{article}
\usepackage{ProfSio}

\end{DemoCode}

\begin{noteblock}
\packagetex!ProfSio! charge les packages suivantes :

\begin{itemize}
	\item \packagetex!tikz!, \packagetex!pgffor!, \packagetex!xintexpr!, \packagetex!tabularray!, \packagetex!simplekv!, \packagetex!xstring!, \packagetex!calc! et \packagetex!listofitems! ;
	\item \packagetex!nicematrix!, \packagetex!siunitx! et \packagetex!luacode! (uniquement si le compilateur dÃ©tectÃ© est \hologo{LuaLaTeX}) ;
	\item les librairies \packagetex!tikz! :
	\begin{itemize}
		\item \motcletex!tikz.positioning!, \motcletex!tikz.babel!, \motcletex!tikz.calc! ;
		\item \motcletex!tikz.decorations.pathreplacing! et \motcletex!tikz.decorations.markings! ;
		\item \motcletex!tikz.shapes!, \motcletex!tikz.shapes.geometric!, \motcletex!tikz.arrows! et \motcletex!tikz.arrows.meta!.
	\end{itemize}
\end{itemize}

Il est compatible avec les compilations usuelles en \textsf{latex}, \textsf{pdflatex}, \textsf{lualatex} (obligatoire pour les tables de vÃ©ritÃ© !) ou \textsf{xelatex}.
\end{noteblock}

\begin{warningblock}
Deux options sont disponibles au chargement, \Cle{nontikzbabel} pour ne pas charger \motcletex!tikz.babel!, et \Cle{nonsiunitxfr} pour ne pas charger \motcletex!\sisetup{locale=FR,...}!.
\end{warningblock}

\subsection{Fonctionnement global}

\begin{tipblock}
Les environnements sont crÃ©Ã©s avec \TikZ, et la majoritÃ© des paramÃ¨tres des tracÃ©s sont personnalisables : \texttt{couleurs} ; \texttt{dimensions} ; \texttt{polices}.
\end{tipblock}

\begin{noteblock}
Le choix a Ã©tÃ© fait de :

\begin{itemize}
	\item prÃ©senter l'ordonnancement par la mÃ©thode MPM, avec prÃ©sentation des tÃ¢ches \textit{fixÃ©e} ;
	\item limiter les tableaux de Karnaugh pour 3 variables, avec prÃ©sentation \textit{fixÃ©e} ;
	\item de ne pas forcÃ©ment proposer de modification de la prÃ©sentation \textit{globale}.
\end{itemize}
\vspace*{-\baselineskip}\leavevmode
\end{noteblock}

\pagebreak

\section{OpÃ©rations posÃ©es}

\subsection{IdÃ©e}

\begin{tipblock}
L'idÃ©e est de proposer une commande poser une opÃ©ration :

\begin{itemize}
	\item addition/soustraction/multiplication ;
	\item avec retenues pour l'addition et la soustraction.
\end{itemize}
\vspace*{-\baselineskip}\leavevmode
\end{tipblock}

\begin{DemoCode}[listing only]
%opÃ©ration posÃ©e
\OpeBinDecHex[clÃ©s]{opÃ©ration}
\end{DemoCode}

\begin{DemoCode}[]
%Addition
\OpeBinDecHex{9999+851}
\end{DemoCode}

\begin{DemoCode}[]
%Soustraction binaire
\OpeBinDecHex[Base=bin]{10010-1101}
\end{DemoCode}

\begin{DemoCode}[]
%Multiplication hexa
\OpeBinDecHex[Base=hex]{ACDC*AF4}
\end{DemoCode}

\subsection{ClÃ©s et options}

\begin{cautionblock}
En ce qui concerne la commande, les \Cle{clÃ©s}, disponibles entre \Cle{[...]}, sont :

\begin{itemize}
	\item \Cle{Base} pour spÃ©cifier la base (\Cle{dec} par dÃ©faut) ;
	\item \Cle{LimiteCapac} pour fixer une limite de chiffres (\Cle{0} pour aucune limite par dÃ©faut) ;
	\item \Cle{SymbDecal} pour le symbole du dÃ©calages des multiplications (\Cle{.} par dÃ©faut) ;
	\item \Cle{Offset} pour l'espacement horizontal entre les chiffres (\Cle{6pt} par dÃ©faut) ;
	\item \Cle{CouleurRetenue} pour la couleur des retenues dans les additions (\Cle{red} par dÃ©faut) ;
	\item \Cle{Interm} := boolÃ©en pour afficher les Ã©tapes intermÃ©diaires des multiplications (\Cle{true} par dÃ©faut) ;
	\item \Cle{AffRetenues} := boolÃ©en pour afficher les retenues des additions/soustractions (\Cle{true} par dÃ©faut) ;
	\item \Cle{AffEgal} := boolÃ©en pour afficher le signe \texttt{=} du rÃ©sultat (\Cle{true} par dÃ©faut).
\end{itemize}
\end{cautionblock}

\subsection{Exemples}

\begin{DemoCode}[]
%Addition dÃ©cimale
\OpeBinDecHex{8475+6520}
\end{DemoCode}

\begin{DemoCode}[]
%Addition binaire
\OpeBinDecHex[Base=bin]{1111+111}

%Addition binaire, sans retenue(s)
\OpeBinDecHex[Base=bin,AffRetenues=false]{1111+111}
\end{DemoCode}

\begin{DemoCode}[]
%Addition hexa
\OpeBinDecHex[Base=hex]{ABC+DE}
\end{DemoCode}

\begin{DemoCode}[]
%Addition hexa, personnalisÃ©e
{\Huge\ttfamily
\OpeBinDecHex[Base=hex,AffEgal=false,Offset=0pt]{ABCD+FE}}
\end{DemoCode}

\begin{DemoCode}[]
%Addition binaire, limitÃ© Ã&nbsp; 4 bits
\OpeBinDecHex[Base=bin,LimiteCapac=4,Offset=2pt]{1111+111}
\end{DemoCode}

\begin{DemoCode}[]
%Soustraction binaire
\OpeBinDecHex[Base=bin]{10000-111}
\end{DemoCode}

\begin{DemoCode}[]
%Multiplication binaire
\OpeBinDecHex[Base=bin,LimiteCapac=6]{110011*101}
\end{DemoCode}

\begin{DemoCode}[]
%Mutiplication hexa, symbole de dÃ©calage '0'
\textsf{\OpeBinDecHex[Base=hex,SymbDecal=0]{ABCD*FE}}
\end{DemoCode}

\begin{DemoCode}[]
%Mutiplication hexa
\texttt{\OpeBinDecHex[Base=hex]{ABCD*FAFA}}
\end{DemoCode}

\begin{DemoCode}[]
%Mutiplication hexa, limitÃ© Ã&nbsp; 4 'chiffres'
\texttt{\OpeBinDecHex[Base=hex,LimiteCapac=4]{ABCD*FAFA}}
\end{DemoCode}

\begin{DemoCode}[]
%Mutiplication hexa, sans lignes intermÃ©diaires
\textsf{\OpeBinDecHex[Base=hex,Interm=false]{ABCD*FE}}
\end{DemoCode}

\begin{DemoCode}[]
%Soustraction hexa, sans signe '=', sans espacement horizontal
{\Huge\ttfamily\OpeBinDecHex[Base=hex,AffEgal=false]{ABCD-FE}}
\end{DemoCode}

\pagebreak

\section{Graphe d'ordonnancement par mÃ©thode MPM}

\subsection{Commande et fonctionnement global}

\begin{cautionblock}
L'environnement dÃ©diÃ© Ã&nbsp; la crÃ©ation du graphe d'ordonnancement est \motcletex!GrapheMPM!.

C'est en fait un environnement \motcletex!tikzpicture! personnalisÃ©.

\smallskip

Les commandes Ã&nbsp; utiliser dans l'environnement sont :

\begin{itemize}
	\item \motcletex!\MPMPlaceNotice! ;
	\item \motcletex!\MPMPlaceTache! ou \motcletex!\MPMPlaceTaches! ;
	\item \motcletex!\MPMPlaceDuree! ou \motcletex!\MPMPlaceDurees!.
\end{itemize}
\vspace*{-\baselineskip}\leavevmode
\end{cautionblock}

\begin{DemoCode}[listing only]
\begin{GrapheMPM}[clÃ©s]&lt;options tikz&gt;
	\MPMPlaceNotice(*)(coordonnÃ©es)
	\MPMPlaceTache(coordonnÃ©es)(TÃ¢che)(Dates)
	\MPMPlaceTaches{ (coordA)(TÃ¢cheA)(DatesA) / (coordB)(TÃ¢cheB)(DatesB) / ... }
	\MPMPlaceDuree[clÃ©s]{TÃ¢cheA&gt;TÃ¢cheB,durÃ©e}&lt;options tikz&gt;
	\MPMPlaceDurees[clÃ©s]{TÃ¢cheA&gt;TÃ¢cheB,durÃ©e / TÃ¢cheC&gt;TÃ¢cheD,durÃ©e }&lt;options tikz&gt;
\end{GrapheMPM}
\end{DemoCode}

\begin{DemoCode}[]
\begin{GrapheMPM}
	\MPMPlaceNotice(-2,2.15)
	\MPMPlaceTaches{ (0,0)(F)(2,4) / (3,1)(G)(5,7) / (6,0.5)(L)(9,9) }
	\MPMPlaceDurees{F&gt;G,1 / G&gt;L,2}
	\MPMPlaceDuree[Coude,SensCoude=VHV]{F.south&gt;L.south,4}&lt;near start&gt;
\end{GrapheMPM}
\end{DemoCode}

\begin{tipblock}
Les tÃ¢ches sont crÃ©Ã©es sous forme de \textit{tableau} et sont associÃ©es Ã&nbsp; des nÅ“uds, nÅ“uds qui servent ensuite Ã&nbsp; positionner les durÃ©es des tÃ¢ches.
\end{tipblock}

\pagebreak

\subsection{Arguments et clÃ©s pour l'environnement}

\begin{DemoCode}[listing only]
\begin{GrapheMPM}[clÃ©s]&lt;options tikz&gt;
	%commandes
\end{GrapheMPM}
\end{DemoCode}

\begin{tipblock}
En ce qui concerne la crÃ©ation de l'environnement, les \Cle{clÃ©s} sont :

\begin{itemize}
	\item \Cle{CouleurDurees} := couleur des durÃ©e ; \hfill~dÃ©faut : \Cle{purple}
	\item \Cle{CouleurFleches} := couleur des arcs ; \hfill~dÃ©faut : \Cle{blue}
	\item \Cle{LargeurCases} := largeur des cases ; \hfill~dÃ©faut : \Cle{0.75cm}
	\item \Cle{Epaisseur} := Ã©paisseur des traits (bordures et arcs) ; \hfill~dÃ©faut : \Cle{0.75pt}
	\item \Cle{Police} := police globale ; \hfill~dÃ©faut : \Cle{\textbackslash footnotesize\textbackslash sffamily}
	\item \Cle{CouleurDates} := couleur des dates, sous la forme \Cle{Couleur} ou \Cle{Couleur\_t/Couleur\_T} ;
	
	\hfill~dÃ©faut : \Cle{teal/red}
	\item \Cle{CouleurBords} := couleur des bordures ; \hfill~dÃ©faut : \Cle{black}
	\item \Cle{NoirBlanc} := boolÃ©en pour tout passer en Noir \&amp;{} Blanc ; \hfill~dÃ©faut : \Cle{false}
	\item \Cle{Grille} := pour afficher une grille d'aide (\Cle{\{xmax,ymax\}}), entre (0;\,0) et (xmax;\,ymax).
	
	\hfill~dÃ©faut : \Cle{vide}
\end{itemize}

Le deuxiÃ¨me argument, optionnel et entre \texttt{&lt;...&gt;} propose des options, en langage \packagetex!tikz! Ã&nbsp; passer Ã&nbsp; l'environnement.
\end{tipblock}

\begin{DemoCode}[]
\begin{GrapheMPM}[Grille={14,5}]
	%commandes
\end{GrapheMPM}
\end{DemoCode}

\pagebreak

\subsection{Arguments et clÃ©s pour les tÃ¢ches}

\begin{DemoCode}[listing only]
\begin{GrapheMPM}[clÃ©s]&lt;options tikz&gt;
	\MPMPlaceNotice(*)(coordonnÃ©es)
	\MPMPlaceTache(coordonnÃ©es)(TÃ¢che)(Dates)
	\MPMPlaceTaches{ (coordA)(TÃ¢cheA)(DatesA) / (coordB)(TÃ¢cheB)(DatesB) / ... }
\end{GrapheMPM}
\end{DemoCode}

\begin{tipblock}
La commande \motcletex!\MPMPlaceNotice! permet de placer une \textit{notice} :

\begin{itemize}
	\item la version \textit{Ã©toilÃ©e} affiche la notice complÃ¨te, avec les dates et les marges (MT et ML) ;
	\item les coordonnÃ©es sont Ã&nbsp; donner sous la forme \verb!x,y!.
\end{itemize}
\vspace*{-\baselineskip}\leavevmode
\end{tipblock}

\begin{tipblock}
La commande \motcletex!\MPMPlaceTache! permet de placer une tÃ¢che :

\begin{itemize}
	\item argument nÂ°1 := coordonnÃ©es sont Ã&nbsp; donner sous la forme \verb!x,y!.
	\item argument nÂ°2 := nom de la tÃ¢che, qui sera Ã©galement le nom du nÅ“ud ;
	\item argument nÂ°3 := dates (et marges Ã©ventuelles) sous la forme :
	\begin{itemize}
		\item \verb!t,T! pour une tÃ¢che prÃ©sentÃ©e de maniÃ¨re \textit{simple} ;
		\item \verb!t,T,MT,ML! pour une tÃ¢che prÃ©sentÃ©e de maniÃ¨re \textit{complÃ¨te} ;
	\end{itemize}
\end{itemize}
\vspace*{-\baselineskip}\leavevmode
\end{tipblock}

\begin{tipblock}
La commande \motcletex!\MPMPlaceTaches! permet de placer plusieurs tÃ¢ches en utilisant la syntaxe de la commande prÃ©cÃ©dente, les Ã©lÃ©ments de la liste Ã©tant sÃ©parÃ©s par le caractÃ¨re \verb!/!.
\end{tipblock}

\begin{DemoCode}[]
\begin{GrapheMPM}[CouleurDates=green/orange,CouleurBords=brown,Grille={18,8}]%
	&lt;scale=0.75,transform shape&gt;
	%NOTICE
	\MPMPlaceNotice(1,6.5)
	%TACHES INDIVIDUELLES
	\MPMPlaceTache(1,4)(DÃ©but)(0,0)
	\MPMPlaceTache(3.25,4)(COM)(0,0)
	%TACHES MULTIPLES
	\MPMPlaceTaches{ (5.5,4)(LOG)(1,2) / (5.5,2)(ECR)(1,1) / (5.5,7)(MAT)(1,2{,}5) / (7.75,7)(CABL)(2,4) / (7.75,5.5)(ASS)(2,3{,}5) / (10,4)(INST)(4,5) / (12.25,4)(POST)(7,7) / (14.5,4)(CONF)(8,8) / (16.75,4)(Fin)(9,9) }
\end{GrapheMPM}
\end{DemoCode}

\pagebreak

\subsection{Arguments et clÃ©s pour les tÃ¢ches}

\begin{DemoCode}[listing only]
\begin{GrapheMPM}[clÃ©s]&lt;options tikz&gt;
	%DÃ‰CLARATION DES TÃ‚CHES
	\MPMPlaceDuree[clÃ©s]{TÃ¢cheA&gt;TÃ¢cheB,durÃ©e}&lt;options tikz&gt;
\end{GrapheMPM}
\end{DemoCode}

\begin{tipblock}
La commande \motcletex!\MPMPlaceDuree! permet de placer un arc avec la durÃ©e de la tÃ¢che.

\smallskip

La commande propose les \Cle{clÃ©s} suivantes :

\begin{itemize}
	\item \Cle{Coude} := boolÃ©en pour affiche l'arc sous forme d'un coude ; \hfill~dÃ©faut : \Cle{false}
	\item \Cle{SensCoude} := permet de prÃ©ciser le type de coude, parmi \Cle{HV / VH / VHV} ;
	
	\hfill~dÃ©faut : \Cle{HV}
	\item \Cle{HauteurCoude} := dans le cas \Cle{SensCoude=VHV}, permet de prÃ©ciser le 1\ier{} dÃ©calage V ;
	
	\hfill~dÃ©faut : \Cle{10pt}
	\item \Cle{DecalHorizDeb} := dÃ©calage horizontal du dÃ©but de l'arc pour la tÃ¢che de dÃ©part ;
	\item \Cle{DecalVertDeb} := dÃ©calage vertical du dÃ©but de l'arc pour la tÃ¢che de dÃ©part ;
	\item \Cle{DecalHorizDeb} := dÃ©calage horizontal de la fin de l'arc pour la tÃ¢che d'arrivÃ©e ;
	\item \Cle{DecalVertFin} := dÃ©calage vertical de la fin de l'arc pour la tÃ¢che d'arrivÃ©e.
	
	\hfill~dÃ©faut : \Cle{0pt}
\end{itemize}

Le second argument, obligatoire et entre \texttt{\{...\}} permet de spÃ©cifier les paramÃ¨tres de l'arc, sous la forme \verb!TÃ¢cheDÃ©part&gt;TÃ¢cheArrivÃ©e,durÃ©e!.

\smallskip

Le troisiÃ¨me argument, optionnel et entre \texttt{&lt;...&gt;} et valant \motcletex!midway! par dÃ©faut, permet de spÃ©cifier une position diffÃ©rente (en langage \packagetex!tikz!) de la durÃ©e (comme par exemple \motcletex!near start!, \motcletex!near end! ou \motcletex!pos=...!).
\end{tipblock}

\begin{noteblock}
Les nÅ“uds crÃ©Ã©s prÃ©cÃ©demment permettent donc de spÃ©cifier les arguments de la commande, et \textit{tout point d'ancrage} des nÅ“uds peuvent Ãªtre utilisÃ©s pour la commande.

\smallskip

On rappelle que les principaux points d'ancrage d'un nÅ“ud \verb!(NOEUD)! \TikZ{} sont :

\begin{itemize}[leftmargin=*]
	\item {\small \verb!(NOEUD.north)!}, {\small \verb!(NOEUD.east)!}, {\small \verb!(NOEUD.south)!}, {\small \verb!(NOEUD.west)!} ;
	\item {\small \verb!(NOEUD.north east)!}, {\small \verb!(NOEUD.south east)!}, {\small \verb!(NOEUD.south west)!}, {\small \verb!(NOEUD.north west)!}.
\end{itemize}
\vspace*{-\baselineskip}\leavevmode
\end{noteblock}

\begin{DemoCode}[text only]
\begin{GrapheMPM}&lt;scale=1.75,transform shape&gt;
	\MPMPlaceTache(3.25,4)(COM)(0,0)
	\foreach \Pos/\Label in {north/above,east/right,south/below,west/left,north east/above right,south east/below right,south west/below left,north west/above left}
		{\filldraw[lightgray] (COM.\Pos) circle[radius=1.75pt] node[font=\scriptsize\ttfamily,\Label] {(COM.\Pos)} ;}
\end{GrapheMPM}
\end{DemoCode}

\begin{warningblock}
Par dÃ©faut, les arcs pointent vers le \textit{centre} du nÅ“ud, donc dans le cas d'arcs \textit{coudÃ©s}, on peut utiliser des points d'ancrage pour une position optimale des arcs.
\end{warningblock}

\pagebreak

\begin{DemoCode}[]
\begin{GrapheMPM}[LargeurCases=0.5cm]&lt;scale=0.9,transform shape&gt;
	%TACHES MULTIPLES
	\MPMPlaceTaches{ (1,4)(DÃ©but)(0,0) / (3.25,4)(COM)(0,0) / (5.5,4)(LOG)(1,2) / (5.5,2)(ECR)(1,1) / (5.5,7)(MAT)(1,2{,}5) / (7.75,7)(CABL)(2,4) / (7.75,5.5)(ASS)(2,3{,}5) / (10,4)(INST)(4,5) / (12.25,4)(POST)(7,7) / (14.5,4)(CONF)(8,8) / (16.75,4)(Fin)(9,9) }
	\MPMPlaceDuree{COM&gt;MAT,1}
	\MPMPlaceDuree{COM&gt;LOG,1}\MPMPlaceDuree{COM&gt;ECR,1}
	\MPMPlaceDuree{MAT&gt;CABL,1}\MPMPlaceDuree{MAT&gt;ASS,1}
	\MPMPlaceDuree{LOG&gt;INST,3}&lt;pos=0.85&gt;
	\MPMPlaceDuree[Coude]{ECR&gt;POST,6}&lt;near start&gt;
	\MPMPlaceDuree[Coude]{CABL&gt;CONF,4}&lt;near end&gt;
\end{GrapheMPM}
\end{DemoCode}

\begin{tipblock}
Dans le cas oÃ¹ plusieurs arcs ont les mÃªmes caractÃ©ristiques, on peut utiliser la commande de \textit{placement multiple}, \motcletex!\MPMPlaceDurees!, pour laquelle les \Cle{clÃ©s} et l'argument optionnel entre \texttt{&lt;...&gt;} seront passÃ©s Ã&nbsp; \textbf{tous} les arcs.

\smallskip

Dans ce cas, les donnÃ©es sont Ã&nbsp; spÃ©cifier sous forme d'une liste, avec le sÃ©parateur \texttt{/}.

\smallskip

Cela permet de \textit{condenser} le code, dans le cas oÃ¹ de multiples arcs ont les mÃªmes caractÃ©ristiques.
\end{tipblock}

\begin{DemoCode}[listing only]
\begin{GrapheMPM}[clÃ©s]&lt;options tikz&gt;
	%DÃ‰CLARATION DES TÃ‚CHES
	\MPMPlaceDurees%
		[clÃ©s globales]%
		{TÃ¢cheA&gt;TÃ¢cheB,durÃ©e / TÃ¢cheC&gt;TÃ¢cheD,durÃ©e / ... }%
		&lt;options tikz globales&gt;
\end{GrapheMPM}
\end{DemoCode}

\pagebreak

\subsection{Exemples}

\begin{DemoCode}[]
\begin{GrapheMPM}[LargeurCases=0.5cm]&lt;scale=0.9,transform shape&gt;
	%NOTICE
	\MPMPlaceNotice(1,6.5)
	%TÃ‚CHES
	\MPMPlaceTaches{ (1,4)(DÃ©but)(0,0) / (3.25,4)(COM)(0,0) / (5.5,4)(LOG)(1,2) / (5.5,2)(ECR)(1,1) / (5.5,7)(MAT)(1,2{,}5) / (7.75,7)(CABL)(2,4) / (7.75,5.5)(ASS)(2,3{,}5) / (10,4)(INST)(4,5) / (12.25,4)(POST)(7,7) / (14.5,4)(CONF)(8,8) / (16.75,4)(Fin)(9,9) }
	%DURÃ‰ES (ARCS DIRECTS)
	\MPMPlaceDurees{DÃ©but&gt;COM,0 / COM&gt;MAT,1 / COM&gt;LOG,1 / COM&gt;ECR,1 / MAT&gt;CABL,1 / MAT&gt;ASS,1 / LOG&gt;INST,3 / ASS&gt;INST,1{,}5 / INST&gt;POST,2 / POST&gt;CONF,1 / CONF&gt;Fin,1}
	%DURÃ‰ES (ARCS COUDÃ‰S)
	\MPMPlaceDurees[Coude]{ECR&gt;POST,6 / CABL&gt;CONF,4}&lt;near start&gt;
\end{GrapheMPM}
\end{DemoCode}

\begin{DemoCode}[]
%ILLUSTRATION DES CLÃ‰S [Decal...]
\begin{GrapheMPM}[CouleurFleches=brown,CouleurDurees=purple,Police=\large\ttfamily]
	%SOMMETS (EXTRAIT)
	\MPMPlaceTaches{ (6.75,2)(O)(10,11) / (15.75,4.5)(N)(26,28) / (20.25,6)(P)(29,29) }
	%ARCS (EXTRAIT)
	\MPMPlaceDuree[Coude,DecalHorizFin=4pt]{O&gt;P.south,8}&lt;near start&gt;
	\MPMPlaceDuree[Coude,SensCoude=VHV,DecalHorizFin=-4pt]{N.south&gt;P.south,1}&lt;near start&gt;
\end{GrapheMPM}
\end{DemoCode}

\pagebreak

\section{Tableau de Karnaugh Ã&nbsp; trois variables}

\subsection{Commande et fonctionnement global}

\begin{cautionblock}
L'environnement dÃ©diÃ© Ã&nbsp; la crÃ©ation du tableau de Karnaugh est \motcletex!TableKarnaugh!.

C'est en fait un environnement \motcletex!tikzpicture! personnalisÃ©.

\smallskip

Les commandes Ã&nbsp; utiliser dans l'environnement sont :

\begin{itemize}
	\item \motcletex!\KarnaughCasesResult! pour saisir les cases par codage binaire ;
	\item \motcletex!\KarnaughCasesAuto! pour utiliser l'expression boolÃ©enne ;
	\item \motcletex!\KarnaughBlocRegroup! ou \motcletex!\KarnaughBlocRegroupAuto!.
\end{itemize}
\vspace*{-\baselineskip}\leavevmode
\end{cautionblock}

\begin{DemoCode}[listing only]
\begin{TableKarnaugh}[clÃ©s]&lt;options tikz&gt;
	%cases
	\KarnaughCasesResult(*){contenu binaire des cases} %case par case
	%ou
	\KarnaughCasesAuto(*){expression boolÃ©enne} %par une formule
	%regroupements
	\KarnaughBlocRegroup[clÃ©s]{coinA}{coinB}
	%ou
	\KarnaughBlocRegroup[clÃ©s]{expression boolÃ©enne}
\end{TableKarnaugh}
\end{DemoCode}
%
%\begin{noteblock}
%Les exemples suivants montrent dÃ©jÃ&nbsp; quelques possibilitÃ©s de l'environnement, les commandes et clÃ©s seront bien Ã©videmment dÃ©taillÃ©s dans les sous-sections suivantes.
%\end{noteblock}

\begin{DemoCode}[]
\begin{TableKarnaugh}[Aide]
\end{TableKarnaugh}
\hspace{0.25cm}
\begin{TableKarnaugh}[Variables=u/v/w]
	\KarnaughCasesResult{0,1,1,0,1,1,1,1}
	\KarnaughBlocRegroup[Type=Centre,Couleur=blue!75,Decalage=-1.5pt]{10}{32}
	\KarnaughBlocRegroup[Type=Gauche,Couleur=red!75,Decalage=-1.5pt]{00}{11}
	\KarnaughBlocRegroup[Type=Droite,Couleur=red!75,Decalage=-1.5pt]{40}{31}
\end{TableKarnaugh}
\hspace{0.25cm}
\begin{TableKarnaugh}[Variables=u/v/w,Swap]
\end{TableKarnaugh}

\begin{center}
	\begin{TableKarnaugh}[Legende=false,Unite=1.5cm,Epaisseur=1.5pt,Couleur=brown]
	\end{TableKarnaugh}
\end{center}
\end{DemoCode}

\begin{tipblock}
Le tableau crÃ©Ã© Ã©galement des nÅ“uds, qui seront utilisÃ©s pour effectuer des \textit{regroupements} de cases, afin de simplifier une expression boolÃ©enne.
\end{tipblock}

\subsection{Arguments et clÃ©s pour l'environnement}

\begin{DemoCode}[listing only]
\begin{TableKarnaugh}[clÃ©s]&lt;options tikz&gt;
	%commandes
\end{TableKarnaugh}
\end{DemoCode}

\begin{tipblock}
En ce qui concerne la crÃ©ation de l'environnement, les \Cle{clÃ©s} sont :

\begin{itemize}
	\item \Cle{Couleur} := couleur du tableau ; \hfill~dÃ©faut : \Cle{black}
	\item \Cle{Unite} := unitÃ© de base de la figure ; \hfill~dÃ©faut : \Cle{1cm}
	\item \Cle{Variables} := nom des variables, sous la forme \Cle{Gauche/Haut/Bas} ; \hfill~dÃ©faut : \Cle{a/b/c}
	\item \Cle{Swap} := boolÃ©en pour Ã©changer les variables du \textit{bas} ; \hfill~dÃ©faut : \Cle{false}
	\item \Cle{Aide} := boolÃ©en pour afficher une aide sur les noms des nÅ“uds ; \hfill~dÃ©faut : \Cle{false}
	\item \Cle{Epaisseur} := Ã©paisseur des tracÃ©s ; \hfill~dÃ©faut : \Cle{0.75pt}
	\item \Cle{CouleurCases} := couleur de remplissage des cases ; \hfill~dÃ©faut : \Cle{lightgray}
	\item \Cle{CouleurLegende} := couleur de la lÃ©gende, via \Cle{Couleur} ou \Cle{CouleurA/CouleurB/CouleurC} ;
	
	\hfill~dÃ©faut : \Cle{black}
	\item \Cle{StyleAlternatif} := boolÃ©en pour changer de style ; \hfill~dÃ©faut : \Cle{false}
	\item \Cle{AideAlt} := boolÃ©en pour (dÃ©s)activer le label \textit{binaire} des cases ; \hfill~dÃ©faut : \Cle{true}
	\item \Cle{PoliceTT} := boolÃ©en pour forcer les labels en police tÃ©lÃ©type ; \hfill~dÃ©faut : \Cle{false}
	\item \Cle{PosVarLaterale} := position de la variable \textit{latÃ©rale}.\hfill~dÃ©faut : \Cle{Gauche}
\end{itemize}

Le deuxiÃ¨me argument, optionnel et entre \texttt{&lt;...&gt;} propose des options, en langage \packagetex!tikz! Ã&nbsp; passer Ã&nbsp; l'environnement.
\end{tipblock}

\subsection{Arguments et clÃ©s pour la commande de remplissage}

\begin{DemoCode}[listing only]
\begin{TableKarnaugh}[clÃ©s]&lt;options tikz&gt;
	\KarnaughCasesResult(*){contenu binaire des cases}
	%ou
	\KarnaughCasesAuto(*){expression boolÃ©enne}
\end{TableKarnaugh}
\end{DemoCode}

\begin{tipblock}
En ce qui concerne le remplissage des cases avec la commande \texttt{\textbackslash KarnaughCasesResult} :

\begin{itemize}
	\item la version \textit{Ã©toilÃ©e} permet de \textit{griser} les cases au lieu de les remplir de \texttt{0/1} ;
	\item l'argument obligatoire, et entre \texttt{\{....\}} est la liste des cases, de gauche Ã&nbsp; droite en partant de la ligne du haut ;
	\item la couleur de cases est gÃ©rÃ©e par la clÃ© idoine de l'environnement.
\end{itemize}

Ã€ noter que la liste peut Ãªtre donnÃ©e sous forme \Cle{\{1,0,1,0,0,0,0,0\}} ou \Cle{\{1010000\}}.
\end{tipblock}

\begin{tipblock}
Pour la commande \texttt{\textbackslash KarnaughCasesAuto}, c'est l'expression boolÃ©enne Ã&nbsp; trois variables sous forme de \textit{mintermes} simples, donnÃ©s :
%
\begin{itemize}
	\item entre parenthÃ¨ses ;
	\item les \textit{mintermes} avec les variables dans le mÃªme ordre que celui donnÃ© en paramÃ¨tre ;
	\item avec \texttt{*} pour la barre.
\end{itemize}
\vspace*{-\baselineskip}\leavevmode
\end{tipblock}

\begin{DemoCode}[]
\begin{TableKarnaugh}
	\KarnaughCasesAuto*{(ab)+(a*b*)+(b*c)}
\end{TableKarnaugh}
\begin{TableKarnaugh}[Swap]
	\KarnaughCasesAuto*{(ab)+(a*b*)+(b*c)}
\end{TableKarnaugh}

\begin{TableKarnaugh}[Variables=k/l/m,StyleAlternatif]
	\KarnaughCasesAuto{(kl)+(k*l*)+(l*m)}
\end{TableKarnaugh}
\end{DemoCode}

\pagebreak

\subsection{Arguments et clÃ©s pour la commande de regroupement des blocs}

\begin{DemoCode}[listing only]
\begin{TableKarnaugh}[clÃ©s]&lt;options tikz&gt;
	%remplissage des cases, manuellement
	\KarnaughBlocRegroup[clÃ©s]{coinA}{coinB}
	%remplissage des cases, automatiquement
	\KarnaughBlocRegroupAuto[clÃ©s]{expression boolÃ©enne}
\end{TableKarnaugh}
\end{DemoCode}

\begin{tipblock}
En ce qui concerne le regroupement (manuellement) des cases par blocs, les \Cle{clÃ©s} disponibles sont :

\begin{itemize}
	\item \Cle{Couleur} := couleur du \textit{trait} ; \hfill~dÃ©faut : \Cle{red}
	\item \Cle{type} := type de regroupement parmi \Cle{Centre/Gauche/Droite} ; \hfill~dÃ©faut : \Cle{Centre}
	\item \Cle{Decalage} := dÃ©calage du trait par rapports aux cases.\hfill~dÃ©faut : \Cle{2pt}
\end{itemize}

Les deux arguments obligatoires, et entre \texttt{\{...\}}, correspondent aux \textit{coins diagonaux} :

\begin{itemize}
	\item sans contrainte pour un rectangle \Cle{Type=Centre} ;
	\item du type \texttt{\{BG\}\{HD\}} pour un rectangle \Cle{Type=Gauche} ;
	\item du type \texttt{\{BD\}\{HG\}} pour un rectangle \Cle{Type=Droite}.
\end{itemize}
\vspace*{-\baselineskip}\leavevmode
\end{tipblock}

\begin{tipblock}
En ce qui concerne le regroupement (automatiquement) des cases par blocs, les \Cle{clÃ©s} disponibles sont :

\begin{itemize}
	\item \Cle{Couleurs} := liste des couleurs des \textit{traits} ; \hfill~dÃ©faut : \Cle{red,blue,violet}
	\item \Cle{Decalages} := dÃ©calages du trait par rapports aux cases.\hfill~dÃ©faut : \Cle{2pt,1pt,-1pt}
\end{itemize}

L'argument obligatoire, et entre \texttt{\{...\}}, correspondent Ã&nbsp; l'expression boolÃ©enne \textit{formatÃ©e} :

\begin{itemize}
	\item expression sous forme de \textit{mintermes} simples ;
	\item entre parenthÃ¨ses, et avec les variables dans le mÃªme ordre que celui donnÃ© en paramÃ¨tre;
	\item avec \texttt{*} pour la barre.
\end{itemize}
\vspace*{-\baselineskip}\leavevmode
\end{tipblock}

\subsection{Exemples}

\begin{DemoCode}[]
\begin{TableKarnaugh}
	\KarnaughCasesResult{0,1,1,0,1,1,1,1}
	\KarnaughBlocRegroup[Type=Centre,Couleur=orange,Decalage=-1.5pt]{10}{32}
	\KarnaughBlocRegroup[Type=Gauche,Couleur=teal,Decalage=-1.5pt]{00}{11}
	\KarnaughBlocRegroup[Type=Droite,Couleur=teal,Decalage=-1.5pt]{40}{31}
\end{TableKarnaugh}
\hspace{5mm}
\begin{TableKarnaugh}[Aide]
	\KarnaughCasesResult{01101111}
	\KarnaughBlocRegroup[Type=Centre,Couleur=orange,Decalage=-1.5pt]{10}{32}
	\KarnaughBlocRegroup[Type=Gauche,Couleur=teal,Decalage=-1.5pt]{00}{11}
	\KarnaughBlocRegroup[Type=Droite,Couleur=teal,Decalage=-1.5pt]{40}{31}
\end{TableKarnaugh}
\hspace{5mm}
\begin{TableKarnaugh}[Swap]
	\KarnaughCasesAuto{(ac)+(a*b)+(a*b*c*)+(b*c)}
	\KarnaughBlocRegroup[Type=Centre,Couleur=teal,Decalage=-1.5pt]{10}{32}
	\KarnaughBlocRegroup[Type=Gauche,Couleur=orange,Decalage=-1.5pt]{00}{11}
	\KarnaughBlocRegroup[Type=Droite,Couleur=orange,Decalage=-1.5pt]{40}{31}
\end{TableKarnaugh}
\end{DemoCode}

\begin{DemoCode}[]
\begin{TableKarnaugh}[Swap]
	\KarnaughCasesAuto{(ac)+(a*b)+(a*b*c*)+(b*c)}
	\KarnaughBlocRegroupAuto{(c)+(a*c*)}
\end{TableKarnaugh}
\end{DemoCode}

\begin{DemoCode}[]
On obtient le tableau de Karnaugh suivant : 
\begin{TableKarnaugh}
		[Variables=k/l/m,Unite=1.25cm,CouleurCases=cyan!25,Couleur=darkgray,
		PosVarLaterale=Droite,CouleurLegende=black/blue/red]
		&lt;baseline=(current bounding box.center)&gt;
	\KarnaughCasesResult*{1,1,1,0,1,1,1,0}
	\KarnaughBlocRegroup[Type=Centre,Couleur=brown,Decalage=-3pt]{00}{22}
	\KarnaughBlocRegroup[Type=Centre,Couleur=teal,Decalage=-1.5pt]{10}{32}
\end{TableKarnaugh}
\end{DemoCode}

\begin{DemoCode}[]
\begin{TableKarnaugh}
	[Variables=k/l/m,Unite=1.25cm,Couleur=darkgray, PosVarLaterale=Droite,CouleurLegende=black/blue/red,
	StyleAlternatif]
	\KarnaughCasesResult{11101110}
	\KarnaughBlocRegroup[Type=Centre,Couleur=brown,Decalage=-3pt]{00}{22}
	\KarnaughBlocRegroup[Type=Centre,Couleur=teal,Decalage=-1.5pt]{10}{32}
\end{TableKarnaugh}
\hspace{5mm}
\begin{TableKarnaugh}
	[Variables=k/l/m,Unite=1.25cm,CouleurCases=cyan!25,Couleur=darkgray, PosVarLaterale=Droite,CouleurLegende=black/blue/red,
	PoliceTT]
	\KarnaughCasesResult*{1,1,1,0,1,1,1,0}
	\KarnaughBlocRegroup[Type=Centre,Couleur=brown,Decalage=-3pt]{00}{22}
	\KarnaughBlocRegroup[Type=Centre,Couleur=teal,Decalage=-1.5pt]{10}{32}
\end{TableKarnaugh}
\end{DemoCode}

\pagebreak

\section{Simplification d'une expression boolÃ©enne par table de Karnaugh}

\subsection{Commande et fonctionnement global}

\begin{cautionblock}
L'idÃ©e est de proposer une commande pour simplifier une expression boolÃ©enne (ou son contraire) Ã&nbsp; trois variables connaissant sa table de vÃ©ritÃ© :

\begin{itemize}
	\item en utilisant une maniÃ¨re \textit{binaire} de dÃ©clarer la table de vÃ©ritÃ© ;
	\item en adaptant le rÃ©sultat Ã&nbsp; la configuration de la table de Karnaugh.
\end{itemize}
\vspace*{-\baselineskip}\leavevmode
\end{cautionblock}

\begin{importantblock}
Je remercie mes Ã©tudiants de BTS SIO2 (promo 2023/2024 : LÃ©o, Ryad, Mathieu, Adrien, ClÃ©ment) pour m'avoir aidÃ© Ã&nbsp; simplifier les 256 (!) tables de Karnaugh possibles, en se rÃ©partissant le travail !

\smallskip

MalgrÃ© des relectures, il se peut qu'il subsiste malheureusement des coquilles dans les expressions simplifiÃ©es, et dans le cas oÃ¹ il existe plusieurs possibilitÃ©s, la commande n'affichera que l'une d'entre elles !
\end{importantblock}

\begin{DemoCode}[listing only]
\SimplificationKarnaugh[clÃ©s]{code binaire de la table}
\end{DemoCode}

\begin{cautionblock}
La dÃ©claration \textit{binaire} de la table suit les mÃªmes rÃ¨gles que pour la commande de crÃ©ation de la table :

\begin{itemize}
	\item la liste des cases soit Ãªtre saisie, de gauche Ã&nbsp; droite en partant de la ligne du haut ;
	\item elle doit Ãªtre donnÃ©e en binaire, sans sÃ©parateur, comme \Cle{\{1010111\}} par exemple.
\end{itemize}
\vspace*{-\baselineskip}\leavevmode
\end{cautionblock}

\begin{importantblock}
Par \textbf{dÃ©faut}, le remplissage des cases est relatif Ã&nbsp; la configuration suivante, mais il est possible de spÃ©cifier un autre type de table :

\begin{center}
	\begin{TableKarnaugh}
	\end{TableKarnaugh}
\end{center}
\end{importantblock}

\begin{tipblock}
Un espace \textit{spÃ©cial} mathÃ©matique a Ã©tÃ© dÃ©fini, pour notamment gÃ©rer l'espacement horizontal entre des variables boolÃ©ennes, pour Ã©viter que les barres soient \textit{collÃ©es}.

Il s'agit de \texttt{\textbackslash Â§}, qui vaut \texttt{1.5mu}, et qui est utilisÃ© pour Ã©crire des expressions boolÃ©ennes.
\end{tipblock}

\pagebreak

\subsection{Arguments et clÃ©s }

\begin{DemoCode}[listing only]
\SimplificationKarnaugh[clÃ©s]{code binaire de la table}
\end{DemoCode}

\begin{tipblock}
Les clÃ©s disponibles sont :

\begin{itemize}
	\item \Cle{Couleurs} := couleurs pour chacune des trois variables boolÃ©ennes ;
	
	\hfill~dÃ©faut : \Cle{black/black/black}
	\item \Cle{CouleurPlus} := couleur pour les signes + ;\hfill~dÃ©faut : \Cle{black}
	\item \Cle{Variables} := variables utilisÃ©es ; \hfill~dÃ©faut : \Cle{a/b/c}
	\item \Cle{Swap} := boolÃ©en pour Ã©changer les variables du \textit{bas} ; \hfill~dÃ©faut : \Cle{false}
	\item \Cle{Contraire} := boolÃ©en pour travailler sur le contraire de l'expression boolÃ©enne ;
	
	\hfill~dÃ©fault : \Cle{false}
	\item \Cle{Espace} := boolÃ©en pour rajouter un petit espace (1.5~mu) dans les produits ;
	
	\hfill~dÃ©faut : \Cle{true}
	\item \Cle{StyleAlternatif} := boolÃ©en pour changer de style. \hfill~dÃ©faut : \Cle{false}
\end{itemize}

L'argument obligatoire est quant Ã&nbsp; lui la dÃ©claration \textit{binaire} de la table, sous la forme \Cle{\{xxxxxxxx\}}.

\smallskip

Ã€ noter que le rÃ©sultat est insÃ©rÃ© dans un groupe \texttt{ensuremath}.
\end{tipblock}

\subsection{Exemples}

\begin{DemoCode}
La table de Karnaugh :
\begin{TableKarnaugh}&lt;baseline=(current bounding box.center)&gt;
	\KarnaughCasesResult*{11001011}
\end{TableKarnaugh}~
correspond Ã&nbsp; $E=\SimplificationKarnaugh{11001011}$.
\end{DemoCode}

\begin{DemoCode}
La table de Karnaugh :
\begin{TableKarnaugh}[Swap]&lt;baseline=(current bounding box.center)&gt;
	\KarnaughCasesResult*{11011111}
\end{TableKarnaugh}~
correspond Ã&nbsp; $E=\SimplificationKarnaugh[Swap]{11011111}$.

Et $\overline{E}=\SimplificationKarnaugh[Swap,Contraire]{11011111}$.
\end{DemoCode}

\begin{DemoCode}
La table de Karnaugh :
\begin{TableKarnaugh}[Variables={g/n/b}]&lt;baseline=(current bounding box.center)&gt;
	\KarnaughCasesResult*{01001111}
\end{TableKarnaugh}~
correspond Ã&nbsp; $E=\SimplificationKarnaugh[Variables={g/n/b}]{01001111}$
\end{DemoCode}

\begin{DemoCode}
La table de Karnaugh :
\begin{TableKarnaugh}[StyleAlternatif]&lt;baseline=(current bounding box.center)&gt;
	\KarnaughCasesResult{11011001}
\end{TableKarnaugh}~
correspond Ã&nbsp; \SimplificationKarnaugh%
	[StyleAlternatif,Couleurs={purple/blue/green},CouleurPlus=orange]%
	{11011001}
\end{DemoCode}

\pagebreak

\section{Ã‰criture et simplification d'une expression boolÃ©enne}

\subsection{Commande et fonctionnement global}

\begin{cautionblock}
L'idÃ©e est de proposer une commande pour afficher et/ou simplifier une expression boolÃ©enne Ã&nbsp; trois variables connaissant son expression sous forme de \textit{mintermes} simples, donnÃ©s : 
%
\begin{itemize}
	\item entre parenthÃ¨ses, et avec les variables dans le mÃªme ordre que celui donnÃ© en paramÃ¨tre;
	\item avec \texttt{*} pour la barre.
\end{itemize}

Par exemple :

\begin{itemize}
	\item $E=a\Â§b+\overline{a}\Â§\overline{b}$ sera saisie par \texttt{(ab)+(a*b*)} ;
	\item $E=\overline{a}\Â§\overline{c} + \overline{a}\Â§\overline{b} + b\Â§c$ sera saisie par \texttt{(a*c*)+(a*b*)+(bc)}.
\end{itemize}
\vspace*{-\baselineskip}\leavevmode
\end{cautionblock}

\begin{noteblock}
La plupart des clÃ©s de la commande de simplification par Karnaugh sont utilisables avec cette commande, notamment celles de formatage des couleurs.
\end{noteblock}

\subsection{Arguments et clÃ©s }

\begin{DemoCode}[listing only]
%Ã©criture formatÃ©e
\ExprBool[clÃ©s]{expression formatÃ©e}

%simplification (avec Ã©noncÃ© ou non)
\SimplificationBooleenne[clÃ©s]{expression formatÃ©e}
\end{DemoCode}

\begin{tipblock}
Les clÃ©s disponibles sont :

\begin{itemize}
	\item \Cle{Enonce} := boolÃ©en pour afficher l'expression boolÃ©enne brute ;  \hfill~dÃ©faut : \Cle{true}
	\item \Cle{Variables} := variables utilisÃ©es ; \hfill~dÃ©faut : \Cle{a/b/c}
	\item \Cle{Contraire} := boolÃ©en pour travailler sur le contraire ; \hfill~dÃ©faut : \Cle{false}
	\item \Cle{Couleurs} et \Cle{CouleurPlus} := couleurs(s) de la sortie ;  \hfill~dÃ©faut : \Cle{black}
	\item \Cle{Espace} := boolÃ©en pour rajouter un petit espace (1.5~mu) dans les produits.
	
	\hfill~dÃ©faut : \Cle{true}
\end{itemize}

L'argument obligatoire est quant Ã&nbsp; lui la dÃ©claration \textit{brute} de l'expression boolÃ©enne, donnÃ©e avec les rÃ¨gles prÃ©cÃ©dentes. Ã€ noter que le rÃ©sultat est insÃ©rÃ© dans un groupe \texttt{ensuremath}.
\end{tipblock}

\subsection{Exemples}

\begin{DemoCode}
$E = \ExprBool{(ab)+(a*b)}$

$E = \SimplificationBooleenne[Enonce=false]{(ab)+(a*b)}$
\end{DemoCode}

\begin{DemoCode}
$E = \SimplificationBooleenne{(a)+(a*)}$\\
$E = a + \overline{a} = \SimplificationBooleenne[Enonce=false]{(a)+(a*)}$
\end{DemoCode}

\begin{DemoCode}
On considÃ¨re l'expression boolÃ©enne $E= g + g\Â§b + g\Â§\overline{b}\Â§n$ :\\
$E = \SimplificationBooleenne[Variables=g/b/n]{(g)+(gb)+(gb*n)}$\\
$E = \SimplificationBooleenne[Variables=g/b/n,Espace=false]{(g)+(gb)+(gb*n)}$
\end{DemoCode}

\begin{DemoCode}
$\overline{E} = \SimplificationBooleenne[Contraire,Variables=g/b/n]{(g)+(gb)+(gb*n)}$
\end{DemoCode}

\begin{DemoCode}
On a $F = \SimplificationBooleenne%
  [Couleurs={blue/red/violet},CouleurPlus=orange]%
  {(a)+(abc*)+(a*b*c)+(abc)+(a*bc)}$.
\end{DemoCode}

\pagebreak

\section{Graphes \textit{simples}}

\subsection{Commande et fonctionnement global}

\begin{cautionblock}
L'environnement dÃ©diÃ© Ã&nbsp; la crÃ©ation d'un graphe \textit{simple} est \motcletex!GrapheTikz!.

C'est en fait un environnement \motcletex!tikzpicture! personnalisÃ©.

\smallskip

Les commandes Ã&nbsp; utiliser dans l'environnement sont :

\begin{itemize}
	\item \motcletex!\GrphPlaceSommets! ;
	\item \motcletex!\GrphTraceAretes!.
\end{itemize}
\vspace*{-\baselineskip}\leavevmode
\end{cautionblock}

\begin{DemoCode}[listing only]
\begin{GrapheTikz}[clÃ©s]&lt;options tikz&gt;
	\GrphPlaceSommets{liste coordonnÃ©es/sommet}
	\GrphTraceAretes(*)[type]&lt;options tikz&gt;{liste arÃªtes}
\end{GrapheTikz}
\end{DemoCode}

\begin{DemoCode}[]
\begin{GrapheTikz}
	\GrphPlaceSommets{(2,2.5)/A (0,0)/B (5,1)/C}
	\GrphTraceAretes{A/B}
	\GrphTraceAretes[AngleGauche]{C/A}
	\GrphTraceAretes[AngleDroite]{B/C}
	\GrphTraceAretes[Boucle]{A/45 B/135 C/-45}
\end{GrapheTikz}
\end{DemoCode}

\begin{warningblock}
La majoritÃ© des paramÃ¨tres sont personnalisables, mais le \textit{thÃ¨me} gÃ©nÃ©ral est globalement \textit{fixÃ©}, dans le sens oÃ¹ ce sont les Ã©lÃ©ments \textit{cosmÃ©tiques} qui pourront Ãªtre modifiÃ©s.

\smallskip

Au contraire du package \packagetex!tkz-graph! qui permet beaucoup plus de choses, les commandes de \packagetex!ProfSio! se veulent beaucoup plus basiques, dans l'optique de travailler avec des graphes en adÃ©quation avec le programme de BTS SIO.
\end{warningblock}

\begin{noteblock}
L'utilisateur pourra Ã©galement redÃ©finir les styles utilisÃ©es par les commandes de \packagetex!ProfSio! pour refondre le paramÃ©trage global de l'environnement.
\end{noteblock}

\begin{DemoCode}[listing only]
\begin{GrapheTikz}[clÃ©s]&lt;options tikz&gt;
	\tikzset{GrphStyleSommet/.style = {...}}
	\tikzset{GrphStyleArc/.style = {...}}
	\tikzset{GrphStylepoids/.style = {...}}
\end{GrapheTikz}
\end{DemoCode}

\begin{tipblock}
La commande de tracÃ© des arÃªtes nÃ©cessite de travailler avec des nÅ“uds existants, donc tout nÅ“ud prÃ©cÃ©demment dÃ©fini, que ce soit avec la commande de \packagetex!ProfSio! ou tout autre commande pourra Ãªtre utilisÃ© !
\end{tipblock}

\subsection{Arguments et clÃ©s pour l'environnement}

\begin{DemoCode}[listing only]
\begin{GrapheTikz}[clÃ©s]&lt;options tikz&gt;
	%commandes
\end{GrapheTikz}
\end{DemoCode}

\begin{tipblock}
En ce qui concerne la crÃ©ation de l'environnement, les \Cle{clÃ©s} sont :

\begin{itemize}
	\item \Cle{Police} := police des sommets ; \hfill{}dÃ©faut : \Cle{\textbackslash bfseries\textbackslash Large\textbackslash sffamily},%
	\item \Cle{Poids} := police des Ã©ventuels poids ; \hfill{}dÃ©faut : \Cle{\textbackslash sffamily},%
	\item \Cle{CouleurSommets} := couleur(s) sous la forme \Cle{Couleur} ou \Cle{CouleurBord/CouleurTexte} des sommets ;
	
	\hfill{}dÃ©faut : \Cle{black}
	\item \Cle{CouleurFleches} := couleur des arÃªtes (et des poids) ; \hfill{}dÃ©faut : \Cle{black},%
	\item \Cle{TypeSommets} := type de forme des sommets ; \hfill{}dÃ©faut : \Cle{circle}
	\item \Cle{Epaisseur} := Ã©paisseur(s) sous la forme \Cle{Epaisseur} ou \Cle{EpaisseurSommet/EpaisseurArÃªte} des traits ;
	
	\hfill{}dÃ©faut : \Cle{thick}
	\item \Cle{Unite} := unitÃ© globale de la figure ; \hfill{}dÃ©faut : \Cle{1cm}
	\item \Cle{CouleurFT} := couleur des arÃªtes de la fermeture transitive (accessible ensuite via \Cle{FT}) ; \hfill{}dÃ©faut : \Cle{black}
	\item \Cle{Grille} := pour afficher une grille d'aide (\Cle{\{xmax,ymax\}}), entre (0;\,0) et (xmax;\,ymax) ;
	
	\hfill~dÃ©faut : \Cle{vide}
	\item \Cle{DimensionSommets} := dimension(s) minimale(s) des formes des sommets, sous la forme \Cle{Globale} ou \Cle{Largeur/Hauteur} ;
	
	\hfill{}dÃ©faut : \Cle{1cm}
	\item \Cle{PositionFleches} := position, parmi \Cle{Milieu/Fin} pour les flÃ¨ches ; \hfill{}dÃ©faut : \Cle{Fin}
	\item \Cle{EchelleFleches} := Ã©chelle de la flÃ¨che ; \hfill{}dÃ©faut : \Cle{1}
	\item \Cle{TypeFleche} := type (en \TikZ) des flÃ¨ches.\hfill{}dÃ©faut : \Cle{Latex}
\end{itemize}

Le deuxiÃ¨me argument, optionnel et entre \texttt{&lt;...&gt;} propose des options, en langage \packagetex!tikz! Ã&nbsp; passer Ã&nbsp; l'environnement.
\end{tipblock}

\pagebreak

\subsection{Arguments et clÃ©s pour la commande de crÃ©ation des sommets}

\begin{DemoCode}[listing only]
\begin{GrapheTikz}[clÃ©s]&lt;options tikz&gt;
	\GrphPlaceSommets{liste coordonnÃ©es/sommet}
\end{GrapheTikz}
\end{DemoCode}

\begin{tipblock}
En ce qui concerne la crÃ©ation des sommets, la liste est Ã&nbsp; donner sous la forme \verb!(xa,ya)/A (xb,yb)/B (xc,yc)/C ...!

\smallskip

Dans le cas de sommets avec des espaces, il faut les \textit{protÃ©ger} par des \texttt{\{...\}}.
\end{tipblock}

\begin{DemoCode}[]
\begin{GrapheTikz}[CouleurSommets={brown/purple},TypeSommets=ellipse,Police={}]
	\GrphPlaceSommets{(2,2.5)/HÃ´pital (0,0)/Mairie (5,1)/Banque}
\end{GrapheTikz}
\end{DemoCode}

\begin{DemoCode}[]
\begin{GrapheTikz}[Epaisseur={very thick},Grille={5,4},DimensionSommets=1.5cm]
	\GrphPlaceSommets{(0,0)/K (4,0)/L (60:4)/M}
\end{GrapheTikz}
\end{DemoCode}

\begin{DemoCode}[]
\begin{GrapheTikz}[TypeSommets=diamond,DimensionSommets=2cm/1.5cm]
	\GrphPlaceSommets{(0,0)/K (4,0)/L (60:4)/M}
\end{GrapheTikz}
\end{DemoCode}

\pagebreak

\subsection{Arguments et clÃ©s pour la commande de tracÃ© des arÃªtes}

\begin{DemoCode}[listing only]
\begin{GrapheTikz}[clÃ©s]&lt;options tikz&gt;
	%commandes de placement des sommets
	\GrphTraceAretes(*)[type]&lt;options tikz&gt;{liste arÃªtes}
\end{GrapheTikz}
\end{DemoCode}

\begin{tipblock}
En ce qui concerne le tracÃ©s des arÃªtes, la commande permet de tracer des arÃªtes ayant le mÃªme style.

\smallskip

La version \textit{Ã©toilÃ©e} permet de pondÃ©rer l'arÃªte (le poids est, par dÃ©faut, situÃ© sur le milieu de l'arÃªte).

\smallskip

Les \Cle{type} d'arÃªte, disponible entre \texttt{[...]} et valant \Cle{Droit} par dÃ©faut, de la commande peut valoir :

\begin{itemize}
	\item \Cle{Droit} := permet de tracer des arÃªtes orientÃ©es \textit{droites} ;
	\item \Cle{AngleGauche} ou \Cle{AngleGauche=...} := permet de tracer des arÃªtes orientÃ©es \textit{courbÃ©es vers la gauche}, avec par dÃ©faut un angle de 10Â° ;
	\item \Cle{AngleDroite} ou \Cle{AngleDroite=...} := permet de tracer des arÃªtes orientÃ©es \textit{courbÃ©es vers la droite}, avec par dÃ©faut un angle de 10Â° ;
	\item \Cle{Boucle} ou \Cle{Boucle=...} := permet de tracer une boucle avec un coefficient \motcletex!looseness! de 6 par dÃ©faut.
\end{itemize}

Dans le cas d'arÃªtes \textit{classiques}, la liste est Ã&nbsp; donner sous la forme \verb|Deb/Fin Deb/Fin Deb/Fin ...| ou \verb|Deb/Fin/Poids Deb/Fin/Poids Deb/Fin/Poids ...|

\smallskip

Dans le cas de boucles, la lise est Ã&nbsp; donner sous la forme \verb|Som/anglesortie Som/anglesortie ...| ou \verb|Som/anglesortie/Poids Som/anglesortie/Poids ...| en sachant que (par dÃ©faut) l'angle d'entrÃ©e est fixÃ© 90Â° aprÃ¨s dans le sens trigonomÃ©trique.

\smallskip

Pour marquer une fermeture transitive, on peut utiliser le style \verb|FT| dans les \textit{options tikz} de la commande.
\end{tipblock}

\begin{DemoCode}[]
\begin{GrapheTikz}
	\GrphPlaceSommets{(0,0)/A (3,1)/B}
	\GrphTraceAretes{A/B}
\end{GrapheTikz}
\hspace{5mm}
\begin{GrapheTikz}
	\GrphPlaceSommets{(0,0)/A (3,1)/B}
	\GrphTraceAretes[AngleGauche]{A/B}
\end{GrapheTikz}
\hspace{5mm}
\begin{GrapheTikz}
	\GrphPlaceSommets{(0,0)/A (3,1)/B}
	\GrphTraceAretes*[AngleGauche]{A/B/10}
\end{GrapheTikz}
\end{DemoCode}

\begin{DemoCode}[]
\begin{GrapheTikz}
	\GrphPlaceSommets{(0,0)/A (3,1)/B}
	\GrphTraceAretes[AngleDroite=45]{A/B}
\end{GrapheTikz}
\hspace{5mm}
\begin{GrapheTikz}
	\GrphPlaceSommets{(0,0)/A (3,1)/B}
	\GrphTraceAretes[AngleGauche]{A/B B/A}
\end{GrapheTikz}
\end{DemoCode}

\begin{DemoCode}[]
\begin{GrapheTikz}
	\GrphPlaceSommets{(0,0)/A (4,1)/B (2,3)/C}
	\GrphTraceAretes[Boucle]{A/135 B/15}
	\GrphTraceAretes*[Boucle=10]{C/60/{0{,}3}}
\end{GrapheTikz}
\end{DemoCode}

\subsection{Exemples}

\begin{DemoCode}[]
\begin{GrapheTikz}
	[DimensionSommets=14pt,Police=\bfseries\sffamily,CouleurSommets={blue/orange}]
	%SOMMETS
	\GrphPlaceSommets{(1,4)/A (3,4)/B (4,3)/C (3,2)/D (2,1)/E (0,1)/F}
	%ARÃŠTES
	\GrphTraceAretes{A/B B/D B/E C/A C/D D/A D/E E/F F/B}
\end{GrapheTikz}
\end{DemoCode}

\begin{DemoCode}[]
\begin{GrapheTikz}
	%SOMMETS
	\GrphPlaceSommets{(1,6)/A (7,6)/B (7,3)/C (4,1)/D (1,3)/E}
	%ARÃŠTES
	\GrphTraceAretes[AngleGauche]{A/B A/D A/E B/E C/E E/C D/C C/D E/D D/E}
	%FT
	\GrphTraceAretes[AngleGauche]&lt;FT&gt;{A/C B/C B/D}
	\GrphTraceAretes[Boucle]&lt;FT&gt;{C/-45 E/135 D/-135}
\end{GrapheTikz}
\end{DemoCode}

\pagebreak

\section{Matrice d'adjacence, fermeture transitive}

\subsection{Commandes et fonctionnement global}

\begin{tipblock}
L'idÃ©e est de proposer des commandes pour travailler avec l'aspect matriciel des graphes :

\begin{itemize}
	\item afficher la matrice d'adjacence, avec bordure Ã©ventuelle ;
	\item calculer la puissance $n$-iÃ¨me d'une matrice d'adjacence, avec bordure Ã©ventuelle ;
	\item dÃ©terminer le nombre de chemins de longueur donnÃ©e dans un graphe ;
	\item dÃ©terminer la matrice de la fermeture transitive, avec bordure Ã©ventuelle.
\end{itemize}

Quelques Ã©lÃ©ments de personnalisations sont disponibles.
\end{tipblock}

\begin{warningblock}
La commande est accessible \textbf{uniquement} en cas d'une compilation en \hologo{LuaLaTeX} !

\smallskip

Une \textbf{double compilation} peut Ãªtre nÃ©cessaire pour le placement correct des filets !

\smallskip

Les calculs matriciels sont effectuÃ©s par le package \packagetex!lualinalg! (\url{https://ctan.org/pkg/lualinalg}), mais les sorties sont parfois \textit{modifiÃ©es} pour une prÃ©sentation adaptÃ©e avec des matrices bordÃ©es.

\smallskip

Les matrices sont Ã&nbsp; dÃ©clarer sous une forme particuliÃ¨re, sous la forme \verb|{{ligne1},{ligne2},{...}}| avec \verb|ligne1={e1,e2,...}|.
\end{warningblock}

\subsection{Matrice d'adjacence, puissance}

\begin{cautionblock}
La commande dÃ©diÃ©e Ã&nbsp; la l'affichage d'une matrice d'adjacence \motcletex!\MatriceAdjacence!.

\smallskip

La commande dÃ©diÃ©e Ã&nbsp; la l'affichage d'une puissance d'une matrice d'adjacence \motcletex!\PuissanceMatrice!.
\end{cautionblock}

\begin{DemoCode}[listing only]
%affichage de la matrice d'adjdacence
\MatriceAdjacence[clÃ©s]{matrice}

%affichage de la puissance
\PuissanceMatrice[clÃ©s]{matrice}{exposant}
\end{DemoCode}

\begin{tipblock}
Les \Cle{clÃ©s} (communes) disponibles sont :

\begin{itemize}
	\item \Cle{Bordure} := boolÃ©en pour border la matrice ; \hfill{}dÃ©faut : \Cle{false}
	\item \Cle{Sommets} := sommets du graphe (uni-caractÃ¨res) ; \hfill{}dÃ©faut : \Cle{ABCDE...}
	\item \Cle{Num} := boolÃ©en pour formater avec \packagetex!siunitx! (si chargÃ© !) ; \hfill{}dÃ©faut : \Cle{false}
	\item \Cle{PoliceBordure} := spÃ©cifier la police (taille) de la bordure.\hfill{}dÃ©faut : \Cle{\textbackslash footnotesize}
\end{itemize}

Le deuxiÃ¨me argument, optionnel et entre \texttt{&lt;...&gt;} permet de spÃ©cifier la matrice (comme indiquÃ© prÃ©cÃ©demment) avec laquelle on travaille.
\end{tipblock}

\begin{DemoCode}[]
\def\MatriceAdj{{{0,1,1,1},{0,0,1,0},{0,1,0,1},{1,0,0,1}}}
On considÃ¨re la matrice d'adjacence $M = \MatriceAdjacence{\MatriceAdj}$.\par
On considÃ¨re la matrice d'adjacence $M = \MatriceAdjacence[Bordure]{\MatriceAdj}$.\par
On considÃ¨re la matrice d'adjacence $M = \MatriceAdjacence[Bordure,Sommets=JKLM]{\MatriceAdj}$.\par
\end{DemoCode}

\subsection{Chemins de longueur donnÃ©e}

\begin{cautionblock}
La commande dÃ©diÃ©e au calcul du nombre de chemins de longueur donnÃ©e dans un graphe est \motcletex!\NbCheminsLongueur!.

\smallskip

Pour le moment la commande ne calcule \textit{que} le nombre de chemins de longueur donnÃ©e entre deux sommets.
\end{cautionblock}

\begin{DemoCode}[listing only]
%calcul du nombre de chemins
\NbCheminsLongueur[Longueur=...,De=...,Vers=...,clÃ©s]{matrice}
\end{DemoCode}

\begin{tipblock}
Les \Cle{clÃ©s} disponibles sont :

\begin{itemize}
	\item \Cle{Sommets} := sommets du graphe (uni-caractÃ¨res) ; \hfill{}dÃ©faut : \Cle{ABCDE...}
	\item \Cle{Num} := boolÃ©en pour formater avec \packagetex!siunitx! (si chargÃ© !).\hfill{}dÃ©faut : \Cle{false}
\end{itemize}

Les clÃ©s \Cle{De}, \Cle{Vers} et \Cle{Longueur} sont \textit{nÃ©cessaires} et doivent Ãªtre cohÃ©rentes avec la liste des sommets.
\end{tipblock}

\begin{DemoCode}[]
\def\MatriceAdjB{{{1,1,0,0,0},{1,0,1,0,0},{1,0,0,1,0},{1,1,0,0,0},{0,0,0,1,0}}}
On donne $M = \MatriceAdjacence[Bordure,Sommets=JKLMN]{\MatriceAdjB}$.\par
On a $M^5 = \PuissanceMatrice[Bordure,Sommets=JKLMN]{\MatriceAdjB}{5}$, il existe \NbCheminsLongueur[Longueur=5,De=J,Vers=L,Sommets=JKLMN]{\MatriceAdjB} chemins de longueur 5 allant de $J$ vers $L$.
\end{DemoCode}

\subsection{Matrice de fermeture transitive}

\begin{cautionblock}
La commande dÃ©diÃ©e pour travailler sur la matrice de fermeture transitive d'un graphe est \motcletex!\FermetureTransitive!.

\smallskip

Quelques options de \textit{prÃ©sentation} sont disponibles pour cette commande.
\end{cautionblock}

\begin{DemoCode}[listing only]
%matrice de fermeture transitive
\FermetureTransitive[clÃ©s]{matrice}
\end{DemoCode}

\begin{tipblock}
Les \Cle{clÃ©s} disponibles sont :

\begin{itemize}
	\item \Cle{Sommets} := sommets du graphe (uni-caractÃ¨res) ; \hfill{}dÃ©faut : \Cle{ABCDE...}
	\item \Cle{Formule} := boolÃ©en pour afficher la formule ; \hfill{}dÃ©faut : \Cle{false}
	\item \Cle{Brut} := boolÃ©en pour afficher le rÃ©sultat brut de la calculatrice ; \hfill{}dÃ©faut : \Cle{false}
	\item \Cle{Enonce} := boolÃ©en pour afficher le nom au dÃ©but ; \hfill{}dÃ©faut : \Cle{false}
	\item \Cle{NomMatrice} := nom de la matrice d'adjacence ; \hfill{}dÃ©faut : \Cle{M}
	\item \Cle{Bordure} := boolÃ©en pour border la matrice ; \hfill{}dÃ©faut : \Cle{false}
	\item \Cle{Sommets} := sommets du graphe (uni-caractÃ¨res) ; \hfill{}dÃ©faut : \Cle{ABCDE...}
	\item \Cle{PoliceBordure} := spÃ©cifier la police (taille) de la bordure.\hfill{}dÃ©faut : \Cle{\textbackslash footnotesize}
\end{itemize}

Ã€ noter qu'une clÃ© boolÃ©enne, \Cle{Complet}, existe, et qui active \Cle{Formule} et \Cle{Enonce}.
\end{tipblock}

\begin{DemoCode}[]
\def\MatriceAdjC{{{1,1,1,1},{0,0,0,1},{0,1,0,0},{0,0,1,0}}}

\FermetureTransitive{\MatriceAdjC} et \FermetureTransitive[Brut]{\MatriceAdjC}

On a \FermetureTransitive[Brut,Formule]{\MatriceAdjC}.

Donc \FermetureTransitive[Complet,Bordure,Sommets=XYZF]{\MatriceAdjC}.
\end{DemoCode}

\pagebreak

\section{Diagramme sagittal d'une application}

\subsection{Commande et fonctionnement global}

\begin{cautionblock}
La commande dÃ©diÃ©e Ã&nbsp; la crÃ©ation d'un diagramme sagittal pour une application est \motcletex!\DiagrammeSagittal!.

Le diagramme crÃ©Ã© est rÃ©alisÃ© avec un environnement \motcletex!tikzpicture!.
\end{cautionblock}

\begin{DemoCode}[listing only]
%commande autonome
\DiagrammeSagittal[clÃ©s]&lt;options tikz&gt;{liaisons}

%commande Ã&nbsp; insÃ©rer dans un environnement tikzpicture
\begin{tikzpicture}
	\DiagrammeSagittal*[clÃ©s]{liaisons}
\end{tikzpicture}
\end{DemoCode}

\begin{DemoCode}[]
\DiagrammeSagittal[E={a,b,c},F={A,C,H,P}]{a/A,a/P,b/H,b/P,c/C}
\end{DemoCode}

\begin{warningblock}
La majoritÃ© des paramÃ¨tres sont personnalisables, mais le \textit{thÃ¨me} gÃ©nÃ©ral est globalement \textit{fixÃ©}, dans le sens oÃ¹ ce sont les Ã©lÃ©ments \textit{cosmÃ©tiques} qui pourront Ãªtre modifiÃ©s.

\smallskip

La commande de crÃ©ation de \packagetex!ProfSio! est volontairement pour des applications basiques, dans l'optique de travailler avec exemples en adÃ©quation avec le programme de BTS SIO.
\end{warningblock}

\subsection{Arguments et clÃ©s}

\begin{DemoCode}[listing only]
\DiagrammeSagittal[clÃ©s]&lt;options tikz&gt;{liaisons}

\begin{tikzpicture}
	\DiagrammeSagittal*[clÃ©s]{liaisons}
\end{tikzpicture}
\end{DemoCode}

\begin{noteblock}
Le code se charge, grÃ¢ce aux \Cle{clÃ©s}, de positionner et d'aligner les Ã©lÃ©ments des ensembles et les flÃ¨ches.

De ce fait, les \textit{Ã©carts} entre les Ã©lÃ©ments d'un ensemble sont fixÃ©es globalement, tout comme le style gÃ©nÃ©ral des flÃ¨ches.
\end{noteblock}

\begin{tipblock}
La version \textit{Ã©toilÃ©} permet de ne pas crÃ©er l'environnement \motcletex!tikzpicture!, pour d'Ã©ventuels rajouts ultÃ©rieurs :

\begin{itemize}
	\item les Ã©lÃ©ments de l'ensemble de dÃ©part sont des nÅ“uds nommÃ©s \verb!(E...)! ;
	\item les Ã©lÃ©ments de l'ensemble d'arrivÃ©e sont des nÅ“uds nommÃ©s \verb!(F...)!.
\end{itemize}
\vspace*{-\baselineskip}\leavevmode
\end{tipblock}

%\begin{DemoCode}[]
%\DiagrammeSagittal[E={A,B,C,D,E,F},F={1,2,3,4}]{}
%\end{DemoCode}

\begin{tipblock}
Les \Cle{clÃ©s} disponibles sont :

\begin{itemize}
	\item \Cle{DistElem} := distance verticale entre les Ã©lÃ©ments ; \hfill{}dÃ©faut : \Cle{0.75}
	\item \Cle{DistEns} := distance entre les \og patates \fg{} ; \hfill{}dÃ©faut : \Cle{4}
	\item \Cle{LargEns} := largeur des \og patates \fg{} ; \hfill{}dÃ©faut : \Cle{1.5}
	\item \Cle{NomAppli} := nom de l'application ; \hfill{}dÃ©faut : \Cle{\$f\$}
	\item \Cle{CouleurE} := couleur de l'ensemble de dÃ©part ; \hfill{}dÃ©faut : \Cle{blue}
	\item \Cle{CouleurAppli} := couleur de l'application ; \hfill{}dÃ©faut : \Cle{violet}
	\item \Cle{CouleurF} := couleur de l'ensemble d'arrivÃ©e ; \hfill{}dÃ©faut : \Cle{red}
	\item \Cle{CouleurFleches} := couleur des flÃ¨ches ; \hfill{}dÃ©faut : \Cle{teal}
	\item \Cle{TypeFleche} := type de la flÃ¨che  ; \hfill{}dÃ©faut : \Cle{Latex}
	\item \Cle{Offset} := dÃ©calage entre les flÃ¨ches et les Ã©lÃ©ments (points) ; \hfill{}dÃ©faut : \Cle{2pt}
	\item \Cle{Epaisseur} := Ã©paisseur des tracÃ©s ; \hfill{}dÃ©faut : \Cle{0.8pt}
	\item \Cle{Police} := police pour les Ã©lÃ©ments ; \hfill{}dÃ©faut : \Cle{vide}
	\item \Cle{NoirBlanc} := boolÃ©en pour forcer l'affichage en N\&amp;{}B ; \hfill{}dÃ©faut : \Cle{false}
	\item \Cle{Labels} := boolÃ©en pour afficher les noms des ensembles ; \hfill{}dÃ©faut : \Cle{true}
	\item \Cle{Ensembles} := nom des ensembles  ; \hfill{}dÃ©faut : \Cle{\$\textbackslash mathcal\{E\}\$/\$\textbackslash  mathcal\{F\}\$}
	\item \Cle{PosLabels} := position des labels, parmi \Cle{haut/bas}. \hfill{}dÃ©faut : \Cle{bas}
\end{itemize}

Ã€ noter qu'il existe les clÃ©s \Cle{MathE}, \Cle{MathF} et \Cle{MathG} qui permettent de dÃ©clarer, en \textbf{plus} des clÃ©s \Cle{E/F/G}, les Ã©lÃ©ments des ensembles sous forme mathÃ©matique.

\smallskip

Le deuxiÃ¨me argument, optionnel et entre \texttt{&lt;...&gt;} propose des options, en langage \packagetex!tikz! Ã&nbsp; passer Ã&nbsp; l'environnement.

\smallskip

Le troisiÃ¨me argument, obligatoire et entre \texttt{\{...\}}, permet de prÃ©ciser les \textit{liaisons} sous la forme \verb!x1/f(x1),x2/f(x2),...!.
\end{tipblock}

\subsection{Exemples}

\begin{DemoCode}[]
\DiagrammeSagittal[DistElem=1,DistEns=5,LargEns=1.75,Police={\Large\ttfamily}, Epaisseur=1pt,NomAppli={$h$},E={a,b,c},F={A,C,H,P}, PoliceLabels=\Large]{a/A,a/P,b/H,b/P,c/C}
\end{DemoCode}

\begin{DemoCode}[]
\DiagrammeSagittal[%
	E={1,2,3,4,5,6,7},F={a,b,c,d,e},Labels=false,%
	DistElem=1,DistEns=6,LargEns=2,Offset=4pt,%
	CouleurE=teal,CouleurF=orange,CouleurAppli=brown,CouleurFleches=brown
	]{1/a,2/b,3/b,4/c,5/d,6/e,7/e}
\end{DemoCode}

\begin{DemoCode}[]
\begin{tikzpicture}
	\DiagrammeSagittal*[%
	E={1,2,3,4,5,6,7},F={a,b,c,d,e},DistEns=6,%
	MathE={x_1,x_2,x_3,x_4,x_5,x_6,x_7},%
	MathF={A_4,B_5,C_6,D_7,E_8},%
	CouleurE=teal,CouleurF=orange,CouleurAppli=brown,CouleurFleches=brown
	]{1/a,2/b,3/b,4/c,5/d,6/d,7/d}
	\draw[lime!50!black,&lt;-,thick,dashed,&gt;=Latex] ($(Fb)+(24pt,0)$) to[bend right=10]++ (2,1) node[right] {\parbox{4cm}{$B_5$ admet 2 antÃ©cÃ©dents, donc $f$ ne peut pas Ãªtre injective.}} ;
	\draw[blue!50!black,&lt;-,thick,dashed,&gt;=Latex] ($(Fe)+(24pt,0)$) to[bend left=10]++ (2,-1) node[right] {\parbox{4cm}{$E_8$ n'admet pas d'antÃ©cÃ©dent, donc $f$ ne peut pas Ãªtre surjective.}} ;
\end{tikzpicture}
\end{DemoCode}

\pagebreak

\section{Diagramme sagittal d'une composÃ©e d'applications}

\subsection{Commande et fonctionnement global}

\begin{cautionblock}
La commande dÃ©diÃ©e Ã&nbsp; la crÃ©ation d'un diagramme sagittal pour une application est \motcletex!\DiagrammeSagittalCompo!.

Le diagramme crÃ©Ã© est rÃ©alisÃ© avec un environnement \motcletex!tikzpicture!.
\end{cautionblock}

\begin{DemoCode}[listing only]
%commande autonome
\DiagrammeSagittalCompo[clÃ©s]&lt;options tikz&gt;{liaisons1}{liaisons2}

%commande Ã&nbsp; insÃ©rer dans un environnement tikzpicture
\begin{tikzpicture}
	\DiagrammeSagittalCompo*[clÃ©s]{liaisons1}{liaisons2}
\end{tikzpicture}
\end{DemoCode}

\begin{DemoCode}[]
\DiagrammeSagittalCompo%
	[E={a,b,c,d},F={A,B,C,E,F,G,H},G={1,2,3,4,5}]%
	{a/B,d/H}%
	{B/1,B/2,H/5}
\end{DemoCode}

\begin{warningblock}
La majoritÃ© des paramÃ¨tres sont personnalisables, mais le \textit{thÃ¨me} gÃ©nÃ©ral est globalement \textit{fixÃ©}, dans le sens oÃ¹ ce sont les Ã©lÃ©ments \textit{cosmÃ©tiques} qui pourront Ãªtre modifiÃ©s.

\smallskip

La commande de crÃ©ation de \packagetex!ProfSio! est volontairement pour des applications basiques, dans l'optique de travailler avec exemples en adÃ©quation avec le programme de BTS SIO.
\end{warningblock}

\subsection{Arguments et clÃ©s}

\begin{DemoCode}[listing only]
\DiagrammeSagittalCompo[clÃ©s]&lt;options tikz&gt;{liaisons1}{liaisons2}

\begin{tikzpicture}
	\DiagrammeSagittalCompo*[clÃ©s]{liaisons1}{liaisons2}
\end{tikzpicture}
\end{DemoCode}

\begin{noteblock}
Le code se charge, grÃ¢ce aux \Cle{clÃ©s}, de positionner et d'aligner les Ã©lÃ©ments des ensembles et les flÃ¨ches.

De ce fait, les \textit{Ã©carts} entre les Ã©lÃ©ments d'un ensemble sont fixÃ©es globalement, tout comme le style gÃ©nÃ©ral des flÃ¨ches.
\end{noteblock}

\begin{tipblock}
La version \textit{Ã©toilÃ©} permet de ne pas crÃ©er l'environnement \motcletex!tikzpicture!, pour d'Ã©ventuels rajouts ultÃ©rieurs :

\begin{itemize}
	\item les Ã©lÃ©ments de l'ensemble de dÃ©part sont des nÅ“uds nommÃ©s \verb!(E...)! ;
	\item les Ã©lÃ©ments de l'ensemble du milieu sont des nÅ“uds nommÃ©s \verb!(F...)! ;
	\item les Ã©lÃ©ments de l'ensemble d'arrivÃ©e sont des nÅ“uds nommÃ©s \verb!(G...)!.
\end{itemize}
\vspace*{-\baselineskip}\leavevmode
\end{tipblock}

\begin{tipblock}
Les \Cle{clÃ©s} disponibles sont :

\begin{itemize}
	\item \Cle{DistElem} := distance verticale entre les Ã©lÃ©ments ; \hfill{}dÃ©faut : \Cle{0.75}
	\item \Cle{DistEns} := distance entre les \og patates \fg{} ; \hfill{}dÃ©faut : \Cle{4}
	\item \Cle{LargEns} := largeur des \og patates \fg{} ; \hfill{}dÃ©faut : \Cle{1.5}
	\item \Cle{NomApplis} := nom des applications ; \hfill{}dÃ©faut : \Cle{\$f\$/\$g\$}
	\item \Cle{CouleurE} := couleur de l'ensemble de dÃ©part ; \hfill{}dÃ©faut : \Cle{blue}
	\item \Cle{CouleurApplis} := couleurs des applications, \Cle{Couleur} ou \Cle{Couleur\_f/Couleur\_g} ;
	
	\hfill{}dÃ©faut : \Cle{violet}
	\item \Cle{CouleurF} := couleur de l'ensemble du milieu ; \hfill{}dÃ©faut : \Cle{red}
	\item \Cle{CouleurG} := couleur de l'ensemble d'arrivÃ©e ; \hfill{}dÃ©faut : \Cle{gray}
	\item \Cle{CouleursFleches} := couleurs des flÃ¨ches, \Cle{Couleur} ou \Cle{Couleur\_f/Couleur\_g} ; 
	
	\hfill{}dÃ©faut : \Cle{teal}
	\item \Cle{TypeFleche} := type de la flÃ¨che  ; \hfill{}dÃ©faut : \Cle{Latex}
	\item \Cle{Offset} := dÃ©calage entre les flÃ¨ches et les Ã©lÃ©ments (points) ; \hfill{}dÃ©faut : \Cle{2pt}
	\item \Cle{Epaisseur} := Ã©paisseur des tracÃ©s ; \hfill{}dÃ©faut : \Cle{0.8pt}
	\item \Cle{Police} := police pour les Ã©lÃ©ments ; \hfill{}dÃ©faut : \Cle{vide}
	\item \Cle{NoirBlanc} := boolÃ©en pour forcer l'affichage en N\&amp;{}B ; \hfill{}dÃ©faut : \Cle{false}
	\item \Cle{Labels} := boolÃ©en pour afficher les noms des ensembles ; \hfill{}dÃ©faut : \Cle{true}
	\item \Cle{Ensembles} := nom des ensembles  ;
	
	\hfill{}dÃ©faut : \Cle{\$\textbackslash mathcal\{E\}\$/\$\textbackslash  mathcal\{F\}\$/\$\textbackslash  mathcal\{G\}\$}
	\item \Cle{PosLabels} := position des labels, parmi \Cle{haut/bas}. \hfill{}dÃ©faut : \Cle{bas}
\end{itemize}

Ã€ noter qu'il existe les clÃ©s \Cle{MathE}, \Cle{MathF} et \Cle{MathG} qui permettent de dÃ©clarer, en \textbf{plus} des clÃ©s \Cle{E/F/G}, les Ã©lÃ©ments des ensembles sous forme mathÃ©matique.

\smallskip

Le deuxiÃ¨me argument, optionnel et entre \texttt{&lt;...&gt;} propose des options, en langage \packagetex!tikz! Ã&nbsp; passer Ã&nbsp; l'environnement.

\smallskip

Les arguments \texttt{3} et \texttt{4}, obligatoires et entre \texttt{\{...\}}, permettent de prÃ©ciser les \textit{liaisons} sous la forme \verb!x1/f(x1),x2/f(x2),...! et \verb!y1/g(y1),y2/g(y2),...! .
\end{tipblock}

\subsection{Exemples}

\begin{DemoCode}[]
\DiagrammeSagittalCompo%
	[DistElem=1,DistEns=5,LargEns=1.75,Police={\Large\ttfamily},%
	Epaisseur=1pt,NomApplis={$h$/$\varphi$},CouleursFleches={teal/lime},%
	E={a,b,c,d,e,f},F={A,C,H,P},G={1,2,3,4,5},PoliceLabels=\Large]%
	{a/A,a/P,b/H,e/P,c/C}%
	{A/5,C/3,H/3,P/4}%
\end{DemoCode}

\begin{DemoCode}[]
\DiagrammeSagittalCompo%
	[E={a,b,c,d,e},F={1,2,3,4,5,6,7},G={a,b,c,d,e},%
	Ensembles={E/F/E}]%
	{a/1,b/2,c/4,d/5,e/6}%
	{1/a,2/b,3/b,4/c,5/d,6/e,7/e}%
\end{DemoCode}

\begin{DemoCode}[]
\begin{tikzpicture}
	\DiagrammeSagittalCompo*%
		[E={a,b,c,d,e},F={1,2,3,4,5,6,7},G={a,b,c,d,e},%
		Ensembles={E/F/E}]%
		{a/1,b/2,c/4,d/5,e/6}%
		{1/a,2/b,3/b,4/c,5/d,6/e,7/e}%
	\draw[orange!50!black,&lt;-,thick,dashed,&gt;=Latex] ($(Gc)+(12pt,0)$) to[bend left=10]++ (2,-1) node[right] {\parbox{4cm}{On a donc $g\,{\small\circ\,}f(c)=c$}} ;
\end{tikzpicture}
\end{DemoCode}

\pagebreak

\section{Table de vÃ©ritÃ©}

\subsection{Commande et fonctionnement global}

\begin{cautionblock}
La commande dÃ©diÃ©e Ã&nbsp; la crÃ©ation d'une table de vÃ©ritÃ© (Ã&nbsp; deux variables minimum) est \motcletex!\TableVerite!.

La commande est accessible \textbf{uniquement} en cas d'une compilation en \hologo{LuaLaTeX} !

Le tableau est crÃ©Ã© grÃ¢ce au package \packagetex!nicematrix!.
\end{cautionblock}

\begin{importantblock}
Une \textbf{double compilation} peut Ãªtre nÃ©cessaire pour le placement correct des filets !

Les fonctions \textsf{LUA} utilisÃ©es sont issues du \packagetex!luatruthtable!, elles sont lÃ©gÃ¨rement modifiÃ©es pour \textit{coller} Ã&nbsp; une prÃ©sentation plus classique.
\end{importantblock}

\begin{DemoCode}[listing only]
\TableVerite[clÃ©s]&lt;opts nicematrix&gt;{vars}{colonnes_vars}{calculs}{colonnes_calculs}
\end{DemoCode}

\begin{DemoCode}[]
\TableVerite{P}{$P$}%
	{lognot*P,P*logand*P,P*logor*P,P*iff*P,P*imp*P}%
	{$\lnot P$,$P \land P$,$P \lor P$,$P \Leftrightarrow P$,$P \Rightarrow P$}
\end{DemoCode}

\begin{DemoCode}[]
\TableVerite{P,Q}{$P$,$Q$}{lognot*P,P*logand*Q}{$\lnot P$,$P \land Q$}
\end{DemoCode}

\subsection{Arguments et clÃ©s pour la commande}

\begin{DemoCode}[listing only]
\TableVerite[clÃ©s]&lt;opts nicematrix&gt;{vars}{colonnes_vars}{calculs}{colonnes_calculs}
\end{DemoCode}

\begin{tipblock}
En ce qui concerne la crÃ©ation du tableau, les \Cle{clÃ©s} sont :

\begin{itemize}
	\item \Cle{VF} := pour prÃ©ciser Vrai/Faux ; \hfill~dÃ©faut : \Cle{V/F}
	\item \Cle{Swap} := boolÃ©en pour commencer par FFF au lieu de VVV ; \hfill~dÃ©faut : \Cle{false}
	\item \Cle{Vide} := boolÃ©en pour laisser le tableau non rempli ; \hfill~dÃ©faut : \Cle{false}
	\item \Cle{HauteurVide} := hauteur des lignes si \Cle{Vide=true} ; \hfill~dÃ©faut : \Cle{vide}
	\item \Cle{LargeursColonnes} := largeur des colonnes, \Cle{auto} ou \Cle{largeurG} ou \Cle{LargeurVar/LargeurCalc} ;
	
	\hfill~dÃ©faut : \Cle{auto}
	\item \Cle{CouleurEnonce} := couleur de fond de la premiÃ¨re ligne ; \hfill~dÃ©faut : \Cle{vide}
	\item \Cle{CodeAvant} := code \texttt{CodeBefore} (et avant l'Ã©ventuel coloriage de la premiÃ¨re ligne) pour \motcletex!nicetabular! ;
	
	\hfill~dÃ©faut : \Cle{vide}
	\item \Cle{CodeApres} := code \texttt{CodeAfter} pour \motcletex!nicetabular!. \hfill~dÃ©faut : \Cle{vide}
\end{itemize}

Le deuxiÃ¨me argument, optionnel et entre \texttt{&lt;...&gt;} propose des options, en langage \packagetex!nicematrix! Ã&nbsp; passer Ã&nbsp; la commande.
\end{tipblock}

\pagebreak

\begin{tipblock}
Le troisiÃ¨me argument, obligatoire et entre \texttt{\{...\}}, permet de spÃ©cifier les calculs Ã&nbsp; effectuer, en langage \motcletex!luatruthtable!, notamment :

\begin{itemize}
	\item \texttt{lognot*} pour le \textsf{CONTRAIRE} ;
	\item \texttt{*logand*} pour le \textsf{ET} ;
	\item \texttt{*logor*} pour le \textsf{OU} ;
	\item \texttt{*iff*} pour le \textsf{Ã‰QUIVALENT} ;
	\item \texttt{*imp*} pour le \textsf{IMPLIQUE} ;
	\item le reste est disponible dans la documentation (\url{http://mirrors.ctan.org/macros/luatex/latex/luatruthtable/luatruthtable.pdf}).
\end{itemize}

Le dernier argument, obligatoire et entre \texttt{\{...\}}, permet de spÃ©cifier les labels des calculs, en langage \LaTeX{} cette fois-ci.
\end{tipblock}

\subsection{ComplÃ©ments pour le package luatruthtable}

\begin{tipblock}
Le tableau suivant prÃ©sente les connecteurs logiques issues du package \packagetex!luatruthtable! :

\begin{center}
	\begin{tblr}{colspec={Q[m,l]Q[m,l]Q[m,l]Q[m,l]},row{1}={fg=red!50!black,font=\sffamily},cell{2-Z}{1-2}={fg=cyan!75!black},column{3}={c}}
		\toprule
		OpÃ©rateur &amp; Syntaxe &amp; Expression &amp; Description \\
		\toprule
		\texttt{lognot*} &amp; \texttt{lognot*P} &amp; $\lnot P$ &amp; NÃ©gation de P \\
		\midrule
		\texttt{*logand*} &amp; \texttt{P*logand*Q} &amp; $P \land Q$ &amp;  Conjonction (et) de P et Q \\
		\midrule
		\texttt{*logor*} &amp; \texttt{P*logor*Q} &amp; $P \lor Q$ &amp; Disjonction (ou) de P et Q \\
		\midrule
		\texttt{*imp*} &amp; \texttt{P*imp*Q} &amp; $P \Rightarrow Q$ &amp; Implication de P vers Q \\
		\midrule
		\texttt{*iff*} &amp; \texttt{P*iff*Q} &amp; $P \Leftrightarrow Q$ &amp; Ã‰quivalence de P et Q \\
		\midrule
		\texttt{*lognand*} &amp; \texttt{P*lognand*Q} &amp; $\lnot(P \land Q)$ &amp; NAND de P et Q \\
		\midrule
		\texttt{*logxor*} &amp; \texttt{P*logxor*Q} &amp; $(P \lor Q) \land \lnot (P \land Q)$ &amp; XOR de P et Q \\
		\midrule
		\texttt{*lognor*} &amp; \texttt{P*lognor*Q} &amp; $\lnot(P \lor Q)$ &amp; NOR de P et Q \\
		\midrule
		\texttt{*logxnor*} &amp; \texttt{P*logxnor*Q} &amp; $(P \land Q) \lor (\lnot P \land \lnot Q)$ &amp; XNOR de P et Q \\
		\bottomrule
	\end{tblr}
\end{center}
\end{tipblock}

\subsection{Exemples}

\begin{DemoCode}[]
\TableVerite{P,Q}{$P$,$Q$}{lognot*P,P*logand*Q}{$\lnot P$,$P \land Q$}
\end{DemoCode}

\begin{DemoCode}[]
\TableVerite[LargeursColonnes=2cm]{P,Q}{$P$,$Q$}{lognot*P,P*logand*Q}{$\lnot P$,$P \land Q$}
\end{DemoCode}

\begin{DemoCode}[]
\TableVerite[LargeursColonnes=1cm/2cm]{P,Q}{$P$,$Q$}{lognot*P,P*logand*Q}{$\lnot P$,$P \land Q$}
\end{DemoCode}

\begin{DemoCode}[]
\TableVerite[CouleurEnonce=lightgray!25]{P,Q}{$P$,$Q$}{lognot*P,P*logand*Q}{$\lnot P$,$P \land Q$}
\end{DemoCode}

\begin{DemoCode}[]
\TableVerite[Vide]%
	{P,Q}{$P$,$Q$}{lognot*P,P*logand*Q}{$\lnot P$,$P \land Q$}
~~~~
\TableVerite%
	[CodeAvant={\columncolor{red!15}{1}\columncolor{teal!15}{4}}]%
	{P,Q}{$P$,$Q$}{lognot*P,P*logand*Q}{$\lnot P$,$P \land Q$}
\end{DemoCode}

\begin{DemoCode}[]
\TableVerite%
	[CodeApres={\UnderBrace[yshift=4pt]{1-4}{5-4}{et}}]%
	{P,Q}{$P$,$Q$}{lognot*P,P*logand*Q}{$\lnot P$,$P \land Q$}
\hspace{5mm}
\TableVerite%
	[Swap,CodeApres={\UnderBrace[yshift=4pt]{1-4}{5-4}{et}}]%
	{P,Q}{$P$,$Q$}{lognot*P,P*logand*Q}{$\lnot P$,$P \land Q$}
\hspace{5mm}
\TableVerite%
	[VF={Vrai/Faux},CodeApres={\UnderBrace[yshift=4pt]{1-4}{5-4}{et}}]%
	{P,Q}{$P$,$Q$}{lognot*P,P*logand*Q}{$\lnot P$,$P \land Q$}
\vspace*{0.75cm}
\end{DemoCode}

\begin{DemoCode}[]
\TableVerite%
	[CodeAvant={\columncolor{red!15}{5}\columncolor{red!15}{8}}]%
	{P,Q,R}%
	{$P$,$Q$,$R$}%
	{%
		Q*logand*R,P*logor*(Q*logand*R),P*logor*Q,%
		Q*logor*R,(P*logor*Q)*logand*(P*logor*R)
	}%
	{$Q \land R$,$P \lor (Q \land R)$,$P \lor Q$,$Q \lor R$,$(P \lor Q) \land (P \lor R)$}
\end{DemoCode}

\begin{DemoCode}[]
%Loi de De Morgan

\TableVerite%
	[CouleurEnonce=lightgray!15,LargeursColonnes=0.75cm/2cm,%
	CodeAvant={\columncolor{teal!10}{6}\columncolor{teal!10}{7}}]%
	{P,Q}{$P$,$Q$}%
	{lognot*P,lognot*Q,P*logand*Q,
		lognot*(P*logand*Q),(lognot*P)*logor*(lognot*Q)}%
	{$\lnot P$,$\lnot Q$,$P\land Q$,$\lnot(P\land Q)$,$(\lnot P)\lor(\lnot Q)$}

\TableVerite%
	[CouleurEnonce=lightgray!15,LargeursColonnes=0.75cm/2cm,VF={1/0},%
	CodeAvant={\columncolor{orange!10}{6}\columncolor{orange!10}{7}}]%
	{P,Q}{$P$,$Q$}%
	{lognot*P,lognot*Q,P*logand*Q,
		lognot*(P*logand*Q),(lognot*P)*logor*(lognot*Q)}%
	{$\lnot P$,$\lnot Q$,$P\land Q$,$\lnot(P\land Q)$,$(\lnot P)\lor(\lnot Q)$}
\end{DemoCode}

\pagebreak

\section{SystÃ¨me 3x3 par matrices}

\subsection{Commande et fonctionnement global}

\begin{cautionblock}
La commande dÃ©diÃ©e au travail sur les systÃ¨mes 3Ã—3 est \motcletex!\ResolSystemeMatrices!.

Cette commande (adaptÃ© Ã&nbsp; une rÃ©solution matricielle du systÃ¨me) peut :

\begin{itemize}
	\item rÃ©soudre et rÃ©diger le systÃ¨me, par matrices ;
	\item ne dÃ©terminer que les matrices et solutions pour rÃ©utilisation \textit{personnelle}.
\end{itemize}
\vspace*{-\baselineskip}\leavevmode
\end{cautionblock}

\begin{DemoCode}[listing only]
\ResolSystemeMatrices[clÃ©s]&lt;option conversion&gt;{systeme}[systeme formatÃ©][inconnues]
\end{DemoCode}

\begin{DemoCode}[]
\ResolSystemeMatrices{2x+3y+4z=2,2y+3z=3,x+2y+3z=5}
\end{DemoCode}

\subsection{Arguments et clÃ©s pour la commande}

\begin{DemoCode}[listing only]
\ResolSystemeMatrices[clÃ©s]&lt;option conversion&gt;{systeme}[systeme formatÃ©][inconnues]
\end{DemoCode}

\begin{tipblock}
En ce qui concerne la rÃ©solution \textit{dÃ©taillÃ©e}, les \Cle{clÃ©s} optionnelles sont :

\begin{itemize}
	\item \Cle{NomsMatrices} := noms des 3 matrices ; \hfill~dÃ©faut : \Cle{A,X,B}
	\item \Cle{NomInverse} := nom de l'inverse ; \hfill~dÃ©faut : \Cle{A\{-1\}}
	\item \Cle{NomSysteme} := nom du systÃ¨me ; \hfill~dÃ©faut : \Cle{\{\}}
	\item \Cle{Inconnues} := inconnues du systÃ¨me; \hfill~dÃ©faut : \Cle{xyz}
	\item \Cle{Enonce} := boolÃ©en pour la premiÃ¨re ligne (Ã©noncÃ©) ; \hfill~dÃ©faut : \Cle{true}
	\item \Cle{Dense} := boolÃ©en pour condenser un peu la rÃ©daction ; \hfill~dÃ©faut : \Cle{false}
	\item \Cle{OptionNiceMatrix} := offset pour les matrices avec \motcletex!nicetabular!.\hfill~dÃ©faut : \Cle{1pt}
\end{itemize}

Le deuxiÃ¨me argument, optionnel et entre \texttt{&lt;...&gt;} propose une option (globale) de formatage pour les fractions (les racines ne sont pas gÃ©rÃ©es\ldots), parmi \Cle{d/t/n/dec/dec=...}.

\smallskip

Le troisiÃ¨me argument, obligatoire et entre \texttt{\{...\}}, est quant Ã&nbsp; lui le systÃ¨me, en langage \motcletex!xint!.

\smallskip

Le quatriÃ¨me argument, optionnel et entre \texttt{[...]}, est quant Ã&nbsp; lui le systÃ¨me, en langage \motcletex!tex! (si coefficients fractionnaires par exemple).

\smallskip

Le dernier argument, optionnel et entre \texttt{[...]}, est quant Ã&nbsp; lui la liste des inconnues Ã&nbsp; passer Ã&nbsp; \motcletex!systeme! pour formater le systÃ¨me si des commandes particuliÃ¨res sont prÃ©sentes\ldots
\end{tipblock}

\begin{tipblock}
Il existe Ã©galement une clÃ© boolÃ©enne, \Cle{Brut}, qui permet de ne faire \textit{que} les calculs et qui stocke :

\begin{itemize}
	\item la matrice du systÃ¨me dans la macro \motcletex!\ResolMatA! ;
	\item la matrice des inconnues dans la macro \motcletex!\ResolMatX! ;
	\item la matrice du second membre dans la macro \motcletex!\ResolMatB! ;
	\item le dÃ©terminant le matrice du systÃ¨me dans la macro \motcletex!\ResolDet! ;
	\item l'Ã©ventuelle inverse de la matrice du systÃ¨me dans la macro \motcletex!\ResolInvMatA! ;
	\item les Ã©ventuelles solutions dans \motcletex!\ResolSolX!, \motcletex!\ResolSolY! et \motcletex!\ResolSolZ!.
\end{itemize}
\vspace*{-\baselineskip}\leavevmode
\end{tipblock}

\subsection{Exemples}

\begin{DemoCode}[]
\ResolSystemeMatrices[Brut]{2x+3y+4z=2,2y+3z=3,x+2y+3z=5}

$A=\ResolMatA$ et $X=\ResolMatX$ et $B=\ResolMatB$ et $A^{-1}=\ResolInvMatA$.

$\text{dÃ©t}(A)=\ResolDet$ ; $x=\ResolSolX$ ; $y=\ResolSolY$ et $z=\ResolSolZ$.
\end{DemoCode}

\begin{DemoCode}[]
\ResolSystemeMatrices%
	[Inconnues=abc,NomSysteme={\mathcal{S}},NomsMatrices={A,X,Y},NomInverse=C]%
	{510b+1200c=1197600,a+2b+5c=2146820,b+2c=2200}%
	[510b+\num{1200}c=\num{1197600},a+2b+5c=\num{2146820},b+2c=\num{2200}]%
	[abc]
\end{DemoCode}

\begin{DemoCode}[]
\ResolSystemeMatrices&lt;t&gt;%formatage des fractions en tfrac
	{2x+y-0.5z=10,x+1/3*y+z=0,y-4z=5}%
	[2x+y-\num{0.5}z=10,x+\frac13y+z=0,y-4z=5]%
	[xyz]
\end{DemoCode}

\begin{DemoCode}[]
\ResolSystemeMatrices[Enonce=false]&lt;t&gt;%formatage des fractions en tfrac
	{2x+y-0.5z=10,x+1/3*y+z=0,y-4z=5}%
	[2x+y-\num{0.5}z=10,x+\frac13y+z=0,y-4z=5]%
	[xyz]
\end{DemoCode}

\begin{DemoCode}[]
\ResolSystemeMatrices[Enonce=false,Dense]&lt;t&gt;%formatage des fractions en tfrac
	{2x+y-0.5z=10,x+1/3*y+z=0,y-4z=5}%
	[2x+y-\num{0.5}z=10,x+\frac13y+z=0,y-4z=5]%
	[xyz]
\end{DemoCode}

\pagebreak

\section{Tables additives ou multiplicatives dans une base donnÃ©e}

\subsection{Commande et fonctionnement}

\begin{cautionblock}
L'idÃ©e est de proposer une commande pour afficher une table additive ou multiplicative dans une base donnÃ©e :

\begin{itemize}
	\item avec une base allant de la base 2 Ã&nbsp; la base 36 (en adÃ©quation avec \hologo{LaTeX3}) ;
	\item avec choix de couleurs et de tailles.
\end{itemize}
\vspace*{-\baselineskip}\leavevmode
\end{cautionblock}

\begin{DemoCode}[listing only]
\TableBase[clÃ©s]{nb}{opÃ©rateur}
\end{DemoCode}

\begin{DemoCode}[]
\TableBase{3}{+}~~\TableBase{3}{*}
\end{DemoCode}

\subsection{Arguments et clÃ©s pour la commande}

\begin{tipblock}
En ce qui concerne cette commande, les \Cle{clÃ©s} optionnelles sont :

\begin{itemize}
	\item \Cle{Unite} := largeur des cases ; \hfill~dÃ©faut : \Cle{1.66em}
	\item \Cle{Couleurs} := liste des couleurs, sous la forme :
	\begin{itemize}
		\item \Cle{CoulOp,CoulNb} ;
		\item \Cle{CoulOp,CoulNb,CoulDiag} ;
	\end{itemize}
	\hfill~dÃ©faut : \Cle{cyan!25,lime!25}
	\item \Cle{Police} := police des labels ; \hfill~dÃ©faut : \Cle{\textbackslash normalfont\textbackslash  normalsize}
	\item \Cle{Dernier} := boolÃ©en pour rajouter une ligne/colonne \texttt{10} (pour $\mathtt{Ã—}$).\hfill~dÃ©faut : \Cle{false}
\end{itemize}

Le deuxiÃ¨me argument, obligatoire, est la base dans laquelle on travaille, de 2 Ã&nbsp; 36.

\smallskip

Le troisiÃ¨me argument, obligatoire, est l'opÃ©rateur, Ã&nbsp; choisir parmi \Cle{+}, \Cle{*} ou \Cle{Ã—}.
\end{tipblock}

\subsection{Exemples}

\begin{DemoCode}[]
\TableBase{2}{+}
\end{DemoCode}

\begin{DemoCode}[]
\TableBase{2}{Ã—}
\end{DemoCode}

\begin{DemoCode}[]
\TableBase[Unite=1cm,Police=\Large\sffamily]{5}{*}
\end{DemoCode}

\begin{DemoCode}[]
\TableBase[Couleurs={red!25,,gray!25},Dernier]{8}{*}
\end{DemoCode}

\begin{DemoCode}[]
\TableBase[Couleurs={blue!25,red!25,lightgray!25},Dernier]{16}{*}
\end{DemoCode}

\pagebreak

\section{PrÃ©sentation d'un produit matriciel (sans calculs)}

\begin{tipblock}
L'idÃ©e est de proposer une commande pour prÃ©senter (de maniÃ¨re \textit{triangulaire}) un produit matriciel.

\smallskip

La commande est basique et ne permet pas (encore ?) d'effectuer le produit matriciel.

\smallskip

Les matrices sont Ã&nbsp; donner en langage \motcletex!pmatrix! ou \motcletex!nicematrix!.
\end{tipblock}

\begin{DemoCode}[listing only]
%la version Ã©toilÃ©e utilise nicematrix
\PresentProdMat(*)&lt;options tikzpicture&gt;{MatA}{MatB}{MatAB}&lt;option nicematrix&gt;
\end{DemoCode}

\begin{DemoCode}[]
\PresentProdMat{3&amp;-1\\-2&amp;2}{12\\14}{22\\4}
\end{DemoCode}

\begin{DemoCode}[]
On a, par produit matriciel le calcul 
\PresentProdMat*&lt;baseline&gt;
	{1&amp;1&amp;1\\1&amp;1&amp;1\\1&amp;1&amp;1}
	{1&amp;1&amp;1\\1&amp;1&amp;1\\1&amp;1&amp;1}
	{3&amp;3&amp;3\\3&amp;3&amp;3\\3&amp;3&amp;3}
	&lt;cell-space-limits=3pt&gt;
\end{DemoCode}

\pagebreak

\section{Fiches annexes pour les CCF de mathÃ©matiques}

\subsection{Introduction}

L'idÃ©e est de proposer des commandes pour gÃ©nÃ©rer \textit{facilement} les fiches d'Ã©valuation pour les deux situations de CCF de mathÃ©matiques en SIO.

\smallskip

Il s'agit des annexes 7-1 (recto), 7-2 (recto verso) et 7-3 (recto verso).

\smallskip

Un exemple de rendu est donnÃ© en marge de la prÃ©sente documentation (avec code source).

\smallskip

Le code source de base des exemples est donnÃ© ci-dessous.

\begin{DemoCode}[listing only]
\documentclass[a4paper,french,12pt]{article}
\usepackage[margin=1.5cm]{geometry}
\usepackage{fontspec}
\usepackage{ProfSio}
\setsansfont{Fira Sans}[Scale=MatchLowercase]
\newfontfamily\poltuto{QTSanDiego}
\usepackage{babel}
\end{DemoCode}

\subsection{Annexe 7-1}

\begin{DemoCode}[listing only]
\GrilleCCFSIO[Type={7-1},Session=...,PoliceManuscrite=...]
	{NOM PrÃ©nom}
	{date}
	{intitulÃ© court}
\end{DemoCode}

\subsection{Annexe 7-2}

\begin{DemoCode}[listing only]
\GrilleCCFSIO[Type={7-2},Session=...,PoliceManuscrite=...]
	{NOM PrÃ©nom}
	{date}
	{intitulÃ© court}
	&lt;compÃ©tenceA / compÃ©tenceB / compÃ©tence C / compÃ©tence D&gt;
\end{DemoCode}

\subsection{Annexe 7-3}

\begin{DemoCode}[listing only]
\GrilleCCFSIO[Type={7-3},Session=...,PoliceManuscrite=...]
	{NOM PrÃ©nom}
	{date}
	{identification du sujet proposÃ©}
\end{DemoCode}

\newpage

\thispagestyle{empty}

\includepdf[frame,pages=-,width=\textwidth]{ProfSio-doc-annexe71.pdf}

\newpage

\thispagestyle{empty}

\includepdf[frame,pages=-,width=\textwidth]{ProfSio-doc-annexe72.pdf}

\newpage

\thispagestyle{empty}

\includepdf[frame,pages=-,width=\textwidth]{ProfSio-doc-annexe73.pdf}

\end{document}</pre></body></html>