texlive[66360] Master: outilsgeomtikz (5mar23)

commits+karl at tug.org commits+karl at tug.org
Sun Mar 5 21:47:29 CET 2023


Revision: 66360
          http://tug.org/svn/texlive?view=revision&revision=66360
Author:   karl
Date:     2023-03-05 21:47:29 +0100 (Sun, 05 Mar 2023)
Log Message:
-----------
outilsgeomtikz (5mar23)

Modified Paths:
--------------
    trunk/Master/tlpkg/bin/tlpkg-ctan-check
    trunk/Master/tlpkg/libexec/ctan2tds
    trunk/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/outilsgeomtikz/
    trunk/Master/texmf-dist/doc/latex/outilsgeomtikz/OutilsGeomTikz-doc.pdf
    trunk/Master/texmf-dist/doc/latex/outilsgeomtikz/OutilsGeomTikz-doc.tex
    trunk/Master/texmf-dist/doc/latex/outilsgeomtikz/README.md
    trunk/Master/texmf-dist/tex/latex/outilsgeomtikz/
    trunk/Master/texmf-dist/tex/latex/outilsgeomtikz/OutilsGeomTikz.sty
    trunk/Master/tlpkg/tlpsrc/outilsgeomtikz.tlpsrc

Added: trunk/Master/texmf-dist/doc/latex/outilsgeomtikz/OutilsGeomTikz-doc.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/outilsgeomtikz/OutilsGeomTikz-doc.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/outilsgeomtikz/OutilsGeomTikz-doc.pdf	2023-03-05 20:39:16 UTC (rev 66359)
+++ trunk/Master/texmf-dist/doc/latex/outilsgeomtikz/OutilsGeomTikz-doc.pdf	2023-03-05 20:47:29 UTC (rev 66360)

Property changes on: trunk/Master/texmf-dist/doc/latex/outilsgeomtikz/OutilsGeomTikz-doc.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/outilsgeomtikz/OutilsGeomTikz-doc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/outilsgeomtikz/OutilsGeomTikz-doc.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/outilsgeomtikz/OutilsGeomTikz-doc.tex	2023-03-05 20:47:29 UTC (rev 66360)
@@ -0,0 +1,792 @@
+% !TeX TXS-program:compile = txs:///arara
+% arara: lualatex: {shell: yes, synctex: no, interaction: batchmode}
+% arara: lualatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)')
+
+\documentclass[french,a4paper,11pt]{article}
+\usepackage[margin=2cm,includefoot]{geometry}
+\def\TPversion{0.1.0}
+\def\TPdate{03 Mars 2023}
+\usepackage[table,svgnames]{xcolor}
+\usepackage[bold-style=ISO,math-style=french]{concmath-otf}
+%\usepackage[bold-style=ISO,math-style=french]{unicode-math}
+%\setmainfont{TeX Gyre Schola}
+%\setmathfont{TeX Gyre Schola Math}
+\usepackage{OutilsGeomTikz}
+\usepackage{awesomebox}
+\usepackage{fontawesome5}
+\usepackage{footnote}
+\makesavenoteenv{tabular}
+\usepackage{enumitem}
+\usepackage{tabularray}
+\usepackage{multicol}
+\usepackage{fancyvrb}
+\usepackage{fancyhdr}
+\usepackage{siunitx}
+\sisetup{locale=FR,output-decimal-marker={,},group-minimum-digits=4}
+\pagestyle{fancy}
+\fancyhf{}
+\renewcommand{\headrulewidth}{0pt}
+\lfoot{\sffamily\small [OutilsGeomTikz]}
+\cfoot{\sffamily\small - \thepage{} -}
+\rfoot{}
+\rfoot{\hyperlink{matoc}{\small\faArrowAltCircleUp[regular]}}
+
+\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=\sffamily}}
+		{\LARGE \LaTeX} & & & & &\\
+		& {\LARGE \hologo{pdfLaTeX}} & & & & \\
+		& & {\LARGE \hologo{LuaLaTeX}} & & & \\
+		& & & {\LARGE \TikZ} & & \\
+		& & & & {\LARGE \TeXLive} & \\
+		& & & & & {\LARGE \hologo{MiKTeX}} \\
+	\end{tblr}
+}
+
+\usepackage{hyperref}
+\urlstyle{same}
+\hypersetup{pdfborder=0 0 0}
+\setlength{\parindent}{0pt}
+\definecolor{LightGray}{gray}{0.9}
+
+\usepackage[french]{babel}
+\AddThinSpaceBeforeFootnotes
+\FrenchFootnotes
+
+\usepackage[most]{tcolorbox}
+\usetikzlibrary{calc}
+\tcbuselibrary{minted}
+\NewTCBListing{PresentationCode}{ O{blue} m }{%
+	sharp corners=downhill,enhanced,arc=12pt,skin=bicolor,%
+	colback=#1!1!white,colframe=#1!75!black,colbacklower=white,%
+	attach boxed title to top right={yshift=-\tcboxedtitleheight},title=Code \LaTeX,%
+	boxed title style={%
+		colframe=#1!75!black,colback=#1!15!white,%
+		,sharp corners=downhill,arc=12pt,%
+	},%
+	top=\baselineskip,%
+	fonttitle=\color{#1!90!black}\itshape\ttfamily\footnotesize,%
+	listing engine=minted,minted style=colorful,
+	minted language=tex,minted options={tabsize=2,fontsize=\small,autogobble,breaklines=true},
+	#2
+}
+
+\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=ForestGreen!50!black,coltitle=white,colback=ForestGreen!25,%
+	overlay={\begin{tcbclipinterior}%
+			\fill[fill=ForestGreen!75]($(interior.south west)$) rectangle node[rotate=90]{\tiny \sffamily{\textcolor{Black}{\scalebox{0.85}[0.75]{\textbf{MàJ}}}}} ($(interior.north west)+(5pt,0pt)$);%
+	\end{tcbclipinterior}}
+	}
+}
+
+\newcommand\Cle[1]{{\bfseries\sffamily\textlangle #1\textrangle}}
+\newcommand\cmaj[1]{\tcbox[vignetteMaJ]{#1}\xspace}
+
+\newcommand\affichegrille[4]{%
+	\draw[xstep=1,ystep=1,lightgray] (#1,#3) grid (#2,#4) ;
+	\foreach \x in {#1,\inteval{1+#1},...,#2} \draw[lightgray] (\x,#4)--++(0,3pt) node[font=\scriptsize,above] {$\x$} ;
+	\foreach \y in {#3,\inteval{1+#3},...,#4} \draw[lightgray] (#1,\y)--++(-3pt,0) node[font=\scriptsize,left] {$\y$} ;
+}
+\newcommand\pointsutiles[1]{%
+	\foreach \point in {#1} {\draw[thick,fill=red] \point circle[radius=3pt] ;}
+}
+
+\begin{document}
+
+\setlength{\aweboxleftmargin}{0.07\linewidth}
+\setlength{\aweboxcontentwidth}{0.93\linewidth}
+\setlength{\aweboxvskip}{8pt}
+
+\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{OutilsGeomTikz [fr]}}\\
+				\\
+				{\LARGE Des outils géométriques, } \\
+				\\
+				{\LARGE en Ti\textit{k}Z}. \\
+			\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://github.com/cpierquet/OutilsGeomTikz}}
+\end{tabular}
+\end{center}
+
+\vspace{0.25cm}
+
+{$\blacktriangleright$~~Des outils géométriques, personnalisables, en Ti\textit{k}Z.}
+
+\smallskip
+
+{$\blacktriangleright$~~Une règle, un rapporteur, une équerre, une réquerre, un rappéquerre, un crayon, un compas.}
+
+\vspace{0.5cm}
+
+\hfill
+\begin{tikzpicture}
+	\tkzRegle[Fond,AfficheValeurs,Longueur=15,Rotation=-20,Echelle=0.5,CouleurFond=blue]
+	\tkzEquerre
+	[Fond,AfficheValeurs,Longueur=12,Origine={(-20:4)},Rotation=-20,CouleurFond=red,Echelle=0.5]
+	\tkzCrayon[Couleur=ForestGreen,Origine={(-20:4)},Rotation=30,Echelle=0.5]
+	\draw (10,-5)--++(20:5) (10,-5)--++(50:5) ;
+	\tkzRapporteur[Fond,CouleurFond=purple,Origine={(10,-5)},Echelle=0.5,Rotation=20]
+	\tkzRappEquerre[Fond,Origine={(8,1)},Rotation=90,CouleurFond=ForestGreen,Echelle=0.5]
+	\tkzCrayon[Couleur=yellow,Origine={(8,-1)},Rotation=20,Echelle=0.5]
+	\coordinate (AA) at ($(10,-5)+(50:{0.5*3.75})$) ;
+	\tkzCrayon[Couleur=orange,Origine={AA},Rotation=-20,Echelle=0.5]
+	\tkzRequerre[Fond,AfficheValeurs,CouleurFond=yellow,Origine={(3,-3)},Rotation=-30,Echelle=0.5]
+	\tkzCrayon[Couleur=gray,Origine={(3,-3)},Rotation=-98,Echelle=0.5]
+	%compas
+	\coordinate (FG) at (0,1) ; \coordinate (FH) at (2,1.5) ;
+	\tkzCompas[LongueurBranches=3,EchelleCrayon=0.75]{FG}{FH}
+	\tkzRapporteur[Complet,Echelle=0.5,Origine={(13,3.25)},Rotation=25,Fond,CouleurFond=orange]
+\end{tikzpicture}\hfill~
+
+%\vspace{0.5cm}
+%
+%\hfill{}\textit{Merci à Denis Bitouzé et à Gilles Le Bourhis pour leurs retours et idées !}
+
+\smallskip
+
+\vfill
+
+\hrule
+
+\medskip
+
+\TableauDocumentation
+
+\medskip
+
+\hrule
+
+\medskip
+
+\newpage
+
+\phantomsection
+\hypertarget{matoc}{}
+
+\tableofcontents
+
+\vfill
+
+\part{Historique}
+
+\verb|v0.1.0|~:~~~~Version initiale.
+
+\vspace{1cm}
+
+\newpage
+
+\part{Introduction}
+
+\section{Le package OutilsGeomTikz}
+
+\subsection{Introduction}
+
+\begin{noteblock}
+Le package \textsf{OutilsGeomTikz} \textit{propose} des éléments graphiques, en langage \TikZ, pour présenter des outils de construction classiques et personnalisables :
+
+\begin{itemize}
+	\item un crayon ;
+	\item une règle graduée ;
+	\item une équerre graduée (30/60) ;
+	\item un rapporteur (180 ou 360);
+	\item une réquerre graduée ;
+	\item une \og rappéquerre \fg{} graduée ;
+	\item un compas.
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{noteblock}
+
+\begin{cautionblock}
+Certaines idées et \textit{donc} certains \textit{morceaux} de codes proviennent de Stéphane Pasquet\footnotemark\footnotetext{\url{https://tex.stackexchange.com/questions/147389/symbols-of-pencil-ruler-and-compass}} sur un fil de discussion en ligne.
+\end{cautionblock}
+
+\subsection{Chargement du package, packages utilisés}
+
+\begin{importantblock}
+Le package se charge, dans le préambule, de manière classique.
+
+Pas d'\textit{option} pour le package, qui ne nécessite que \textit{peu} de dépendances !
+\end{importantblock}
+
+\begin{PresentationCode}{listing only}
+\usepackage{OutilsGeomTikz}
+\end{PresentationCode}
+
+\begin{noteblock}
+\textsf{OutilsGeomTikz} charge les packages et librairies suivants :
+
+\begin{itemize}
+	\item \texttt{tikz}, \texttt{pgffor}, \texttt{simplekv}, \texttt{nicefrac} et \texttt{xstring} ;
+	\item \texttt{\textit{tikz}.calc}, \texttt{\textit{tikz}.positioning}.
+\end{itemize}
+
+Il est compatible avec les compilations usuelles en \textsf{latex}, \textsf{pdflatex}, \textsf{lualatex} ou \textsf{xelatex}.
+\end{noteblock}
+
+\subsection{Autres solutions}
+
+\begin{noteblock}
+D'autres solutions existent pour présenter des outils géométriques, notamment \textsf{pst-geometrictools}\footnotemark\footnotetext{disponible sur le CTAN : \url{https://ctan.org/pkg/pst-geometrictools}.} (avec du code \PSTricks) ou \textsf{tkz-tools}\footnotemark\footnotetext{disponible sur son site : \url{https://www.mathweb.fr/euclide/les-packages-personnels-latex-stephane-pasquet/}.}, dont \textsf{OutilsGeomTikz} reprend quelques éléments de base  !
+
+\smallskip
+
+L'utilisateur utilisera la solution la mieux adaptée pour ses besoins !
+\end{noteblock}
+
+\pagebreak
+
+\section{Philosophie du package}
+
+\subsection{Fonctionnement global}
+
+\begin{tipblock}
+Les différents outils disponibles ont \textit{grosso-modo} le même mode de fonctionnement :
+
+\begin{itemize}
+	\item le \textit{nom} de la commande est sous la forme \texttt{\textbackslash tkz<Outil>} ;
+	\item les outils ont été créés, en \TikZ, avec comme unité de base le centimètre ;
+	\item pour certains outils, des dimensions minimales sont requises pour un aspect conforme et acceptable ;
+	\item les options personnalisables sont (sauf exceptions) :
+	\begin{itemize}
+		\item la \textit{taille} ;
+		\item l'\textit{échelle} globale ou l'\textit{échelle} des éventuels labels ;
+		\item les \textit{couleurs} ;
+		\item le \textit{fond} (couleur et opacité) ;
+		\item la position (\textit{placement} et/ou \textit{rotation}).
+	\end{itemize}
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{tipblock}
+
+\subsection{Liste des commandes}
+
+\begin{cautionblock}
+Les outils disponibles sont à insérer dans un environnement \TikZ, et pour le moment il existe :
+\begin{itemize}
+	\item \texttt{\textbackslash tkzRegle} ;
+	\item \texttt{\textbackslash tkzEquerre} ;
+	\item \texttt{\textbackslash tkzRapporteur} ;
+	\item \texttt{\textbackslash tkzRequerre} ;
+	\item \texttt{\textbackslash tkzRappequerre} ;
+	\item \texttt{\textbackslash tkzCompas} ;
+	\item \texttt{\textbackslash tkzCrayon}.
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{cautionblock}
+
+\begin{PresentationCode}{listing only}
+\tkzRegle[clés]
+\tkzEquerre[clés]
+\tkzRapporteur[clés]
+\tkzRequerre[clés]
+\tkzRappEquerre[clés]
+\tkzCrayon[clés]
+\tkzCompas[clés]{pointe}{mine}
+\end{PresentationCode}
+
+\subsection{Utilisation d'unités}
+
+\begin{tipblock}
+Les outils ont été créés avec unité de base de 1~cm, afin que les graduations soient \textit{en taille réelle}.
+
+\smallskip
+
+Il est toutefois possible de modifier les unités de l'environnement \TikZ, dans ce cas les graduations des outils ne seront plus forcément en adéquation avec les unités choisies.
+
+\smallskip
+
+Ce choix est donc à \textit{réserver} dans l'optique de faire des petits schémas pour illustrer des positions d'outils.
+\end{tipblock}
+
+\pagebreak
+
+\part{Les outils}
+
+\section{Le crayon}
+
+\subsection{La commande}
+
+\begin{cautionblock}
+Le package propose l'outil \textsf{Crayon}.
+
+La forme générale du crayon est \textit{fixée}, mais le crayon peut être \textit{personnalisé}.
+\end{cautionblock}
+
+\begin{PresentationCode}{tikz lower}
+\tkzCrayon
+\end{PresentationCode}
+
+\subsection{Clés et options}
+
+\begin{tipblock}
+Quelques \Cle{clés} de personnalisation sont disponibles :
+
+\begin{itemize}
+	\item \Cle{Longueur} pour la taille, en cm, du crayon ;\hfill~(défaut : \Cle{5} et mini \Cle{2.5})
+	\item \Cle{Origine} pour le placer le crayon (au niveau du $0$) ;\hfill~(défaut : \Cle{\{(0,0)\}})
+	\item \Cle{Rotation} pour pivoter le crayon (au niveau de la mine) ;\hfill~(défaut : \Cle{0})
+	\item \Cle{Echelle} pour l'échelle globale le crayon ;\hfill~(défaut : \Cle{1})
+	\item \Cle{Couleur} pour la couleur du crayon.\hfill~(défaut : \Cle{red})
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{tipblock}
+
+\begin{noteblock}
+Pour des exemples de personnalisation, une grille ainsi que les points \textit{support} seront rajoutés.
+
+\smallskip
+
+Toutes les \Cle{clés} ne seront pas présentées de manière indépendante, mais parfois elles seront \textit{cumulées} pour éviter de surcharger la sortie.
+\end{noteblock}
+
+\begin{PresentationCode}{listing only}
+%environnement tikz
+\tkzCrayon[Origine={(-3,-2)},Echelle=0.75,Rotation=45,Couleur=DarkBlue]
+\tkzCrayon[Origine={(1,-4)},Longueur=10,Rotation=-30,Couleur=Green]
+\tkzCrayon[Origine={(-3,3)},Echelle=1.25,Rotation=195,Couleur=orange]
+\end{PresentationCode}
+
+\begin{PresentationCode}{text only}
+\begin{tikzpicture}
+	\affichegrille{-7}{7}{-5}{5}
+	\pointsutiles{(-3,-2),(1,-4),(-3,3)}
+	\tkzCrayon[Origine={(-3,-2)},Echelle=0.75,Rotation=45,Couleur=DarkBlue]
+	\tkzCrayon[Origine={(1,-4)},Longueur=10,Rotation=-30,Couleur=Green]
+	\tkzCrayon[Origine={(-3,3)},Echelle=1.25,Rotation=195,Couleur=orange]
+\end{tikzpicture}
+\end{PresentationCode}
+
+\pagebreak
+
+\section{La règle graduée}
+
+\subsection{La commande}
+
+\begin{cautionblock}
+Le package propose l'outil \textsf{Règle graduée}.
+
+La forme générale de la règle est \textit{fixée}, mais la règle peut être \textit{personnalisée}.
+\end{cautionblock}
+
+\begin{PresentationCode}{tikz lower}
+\tkzRegle
+\end{PresentationCode}
+
+\subsection{Clés et options}
+
+\begin{tipblock}
+Quelques \Cle{clés} de personnalisation sont disponibles :
+
+\begin{itemize}
+	\item \Cle{Longueur} pour la taille, en cm, de la règle ;\hfill~(défaut : \Cle{12} et mini \Cle{3})
+	\item \Cle{Largeur} pour la largeur, en cm, de la règle ;\hfill~(défaut : \Cle{1.5} et mini \Cle{1.25})
+	\item \Cle{Origine} pour le placer la règle (au niveau du $0$) ;\hfill~(défaut : \Cle{\{(0,0)\}})
+	\item \Cle{Rotation} pour pivoter la règle (au niveau du $0$) ;\hfill~(défaut : \Cle{0})
+	\item \Cle{Echelle} pour l'échelle globale de la règle ;\hfill~(défaut : \Cle{1})
+	\item \Cle{Couleur} pour la couleur des éléments de la règle ;\hfill~(défaut : \Cle{black})
+	\item le booléen \Cle{Fond} pour afficher une couleur de fond pour la règle ;\hfill~(défaut : \Cle{false})
+	\item \Cle{CouleurFond} pour la couleur du fond de la règle ;\hfill~(défaut : \Cle{black})
+	\item \Cle{Opacite} pour régler l'opacité du fond de la règle ;\hfill~(défaut : \Cle{0.5})
+	\item le booléen \Cle{AfficheValeurs} pour afficher les valeurs des graduations ;\hfill~(défaut : \Cle{true})
+	\item \Cle{PosVal} pour spécifier la position (haut, milieu, etc) des valeurs, parmi \Cle{h/m/b/hb}.
+	
+	\hfill~(défaut : \Cle{m})
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{tipblock}
+
+\begin{noteblock}
+Pour des exemples de personnalisation, une grille ainsi que les points \textit{support} seront rajoutés.
+
+\smallskip
+
+Toutes les \Cle{clés} ne seront pas présentées de manière indépendante, mais parfois elles seront \textit{cumulées} pour éviter de surcharger la sortie.
+\end{noteblock}
+
+\begin{PresentationCode}{listing only}
+%environnement tikz
+\tkzRegle[Fond,CouleurFond=red]
+\tkzRegle[Longueur=13,Largeur=2,Rotation=-45,Couleur=ForestGreen, Origine={(1,-3)},Fond,PosVal=hb]
+\tkzRegle[Largeur=1.25,Longueur=9,Couleur=blue,Rotation=20,Origine={(0,3)}, AfficheValeurs=false]
+\end{PresentationCode}
+
+\begin{PresentationCode}{text only}
+\begin{tikzpicture}
+	\affichegrille{-1}{13}{-14}{7}
+	\pointsutiles{(0,0),(1,-3),(0,3)}
+	\tkzRegle[Fond,CouleurFond=red]
+	\tkzRegle[Longueur=13,Largeur=2,Rotation=-45,Couleur=ForestGreen,Origine={(1,-3)},Fond,PosVal=hb]
+	\tkzRegle[Largeur=1.25,Longueur=9,Couleur=blue,Rotation=20,Origine={(0,3)},AfficheValeurs=false]
+\end{tikzpicture}
+\end{PresentationCode}
+
+\pagebreak
+
+\section{L'équerre}
+
+\subsection{La commande}
+
+\begin{cautionblock}
+Le package propose l'outil \textsf{Équerre}.
+
+La forme générale de l'équerre (angles 60/30) est \textit{fixée}, mais l'équerre peut être \textit{personnalisée}.
+\end{cautionblock}
+
+\begin{PresentationCode}{tikz lower}
+\tkzEquerre
+\end{PresentationCode}
+
+\subsection{Clés et options}
+
+\begin{tipblock}
+Quelques \Cle{clés} de personnalisation sont disponibles :
+
+\begin{itemize}
+	\item \Cle{Longueur} pour la longueur, en cm, de l'équerre ;\hfill~(défaut : \Cle{10} et mini \Cle{4.5})
+	\item \Cle{Origine} pour le placer l'équerre (au niveau du coin) ;\hfill~(défaut : \Cle{\{(0,0)\}})
+	\item \Cle{Rotation} pour pivoter l'équerre (au niveau du coin) ;\hfill~(défaut : \Cle{0})
+	\item \Cle{Echelle} pour l'échelle globale de l'équerre ;\hfill~(défaut : \Cle{1})
+	\item \Cle{Couleur} pour la couleur des éléments de l'équerre ;\hfill~(défaut : \Cle{black})
+	\item le booléen \Cle{Fond} pour afficher une couleur de fond pour l'équerre ;\hfill~(défaut : \Cle{false})
+	\item \Cle{CouleurFond} pour la couleur du fond de l'équerre ;\hfill~(défaut : \Cle{black})
+	\item \Cle{Opacite} pour régler l'opacité du fond de l'équerre ;\hfill~(défaut : \Cle{0.5})
+	\item le booléen \Cle{AfficheValeurs} pour afficher les valeurs des graduations.\hfill~(défaut : \Cle{true})
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{tipblock}
+
+\begin{PresentationCode}{listing only}
+%environnement tikz
+\tkzEquerre[Fond]
+\tkzEquerre[Echelle=0.5,Origine={(8,6)},Couleur=DarkBlue,Rotation=-45]
+\tkzEquerre[Longueur=10,Origine={(2.5,-1)},Couleur=red,Rotation=-105]
+\end{PresentationCode}
+
+\begin{PresentationCode}{text only}
+\begin{tikzpicture}
+	\affichegrille{-1}{13}{-7}{11}
+	\pointsutiles{(0,0),(8,6),(2.5,-1)}
+	\tkzEquerre[Fond]
+	\tkzEquerre[Echelle=0.5,Origine={(8,6)},Couleur=DarkBlue,Rotation=-45]
+	\tkzEquerre[Longueur=10,Origine={(2.5,-1)},Couleur=red,Rotation=-105]
+\end{tikzpicture}
+\end{PresentationCode}
+
+\pagebreak
+
+\section{Les rapporteurs (180 \&{} 360)}
+
+\subsection{La commande}
+
+\begin{cautionblock}
+Le package propose l'outil \textsf{Rapporteur}.
+
+La forme générale du rapporteur (largeur $7,5$~cm) est \textit{fixée}, mais le rapporteur peut être \textit{personnalisé}.
+\end{cautionblock}
+
+\begin{PresentationCode}{tikz lower}
+\tkzRapporteur
+\end{PresentationCode}
+
+\begin{PresentationCode}{tikz lower}
+\tkzRapporteur[Complet]
+\end{PresentationCode}
+
+\subsection{Clés et options}
+
+\begin{tipblock}
+Quelques \Cle{clés} de personnalisation sont disponibles :
+
+\begin{itemize}
+	\item le booléen \Cle{Complet} pour afficher la version \og 360 \fg{};\hfill~(défaut : \Cle{false})
+	\item \Cle{Origine} pour le placer le rapporteur (au niveau du \textit{centre}) ;\hfill~(défaut : \Cle{\{(0,0)\}})
+	\item \Cle{Rotation} pour pivoter le rapporteur (au niveau du \textit{centre}) ;\hfill~(défaut : \Cle{0})
+	\item \Cle{Echelle} pour l'échelle globale du rapporteur ;\hfill~(défaut : \Cle{1})
+	\item \Cle{Couleur} pour la couleur des éléments du rapporteur ;\hfill~(défaut : \Cle{black})
+	\item le booléen \Cle{Fond} pour afficher une couleur de fond ;\hfill~(défaut : \Cle{false})
+	\item \Cle{CouleurFond} pour la couleur du fond du rapporteur ;\hfill~(défaut : \Cle{black})
+	\item \Cle{Opacite} pour régler l'opacité du fond du rapporteur ;\hfill~(défaut : \Cle{0.5})
+	\item le booléen \Cle{AfficheAngles} pour afficher les valeurs des angles.\hfill~(défaut : \Cle{true})
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{tipblock}
+
+\begin{PresentationCode}{listing only}
+%environnement tikz
+\tkzRapporteur[Fond,CouleurFond=purple]
+\tkzRapporteur[Origine={(-2,-3)},Rotation=-45,Couleur=ForestGreen,Echelle=0.5]
+\tkzRapporteur[Complet,Origine={(8,-3)},Rotation=30,Couleur=DarkBlue, Echelle=0.75]
+\tkzRapporteur[Origine={(7,1)},Rotation=15,Couleur=orange, Echelle=0.75,AfficheAngles=false]
+\tkzRapporteur[Complet,Origine={(8,-3)},Rotation=30,Couleur=DarkBlue, Echelle=0.75]
+\tkzRapporteur[Complet,Origine={(2,-4)},Rotation=-90,Couleur=red, Echelle=0.5,AfficheAngles=false,Fond,CouleurFond=yellow]
+\end{PresentationCode}
+
+\begin{PresentationCode}{text only}
+\begin{tikzpicture}
+	\affichegrille{-4}{11}{-6}{4}
+	\pointsutiles{(0,0),(-2,-3),(8,-3),(7,1),(2,-4)}
+	\tkzRapporteur[Fond,CouleurFond=purple]
+	\tkzRapporteur[Origine={(-2,-3)},Rotation=-45,Couleur=ForestGreen,Echelle=0.5]
+	\tkzRapporteur[Complet,Origine={(8,-3)},Rotation=30,Couleur=DarkBlue, Echelle=0.75]
+	\tkzRapporteur[Origine={(7,1)},Rotation=15,Couleur=orange, Echelle=0.75,AfficheAngles=false]
+	\tkzRapporteur[Complet,Origine={(8,-3)},Rotation=30,Couleur=DarkBlue, Echelle=0.75]
+	\tkzRapporteur[Complet,Origine={(2,-4)},Rotation=-90,Couleur=red,Echelle=0.5,AfficheAngles=false,Fond,CouleurFond=yellow]
+\end{tikzpicture}
+\end{PresentationCode}
+
+\pagebreak
+
+\section{La réquerre}
+
+\subsection{La commande}
+
+\begin{cautionblock}
+Le package propose l'outil \textsf{Réquerre}.
+
+La forme générale de la réquerre est \textit{fixée}, mais la réquerre peut être \textit{personnalisée}.
+\end{cautionblock}
+
+\begin{PresentationCode}{tikz lower}
+\tkzRequerre
+\end{PresentationCode}
+
+\subsection{Clés et options}
+
+\begin{tipblock}
+Quelques \Cle{clés} de personnalisation sont disponibles :
+
+\begin{itemize}
+	\item \Cle{Longueur} pour la taille, en cm, de la réquerre ;\hfill~(défaut : \Cle{12} et mini \Cle{6})
+	\item \Cle{Largeur} pour la largeur, en cm, la réquerre ;\hfill~(défaut : \Cle{3} et mini \Cle{1.5})
+	\item \Cle{Origine} pour le placer la réquerre (au niveau du \textit{centre}) ;\hfill~(défaut : \Cle{\{(0,0)\}})
+	\item \Cle{Rotation} pour pivoter la réquerre (au niveau du coin) ;\hfill~(défaut : \Cle{0})
+	\item \Cle{Echelle} pour l'échelle globale de la réquerre ;\hfill~(défaut : \Cle{1})
+	\item \Cle{Couleur} pour la couleur des éléments de la réquerre ;\hfill~(défaut : \Cle{black})
+	\item le booléen \Cle{Fond} pour afficher une couleur de fond pour la réquerre ;\hfill~(défaut : \Cle{false})
+	\item \Cle{CouleurFond} pour la couleur du fond de la réquerre ;\hfill~(défaut : \Cle{black})
+	\item \Cle{Opacite} pour régler l'opacité du fond de la réquerre ;\hfill~(défaut : \Cle{0.5})
+	\item le booléen \Cle{AfficheValeurs} pour afficher les valeurs des graduations.\hfill~(défaut : \Cle{true})
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{tipblock}
+
+\begin{PresentationCode}{listing only}
+%environnement tikz
+\tkzRequerre[Fond,CouleurFond=yellow]
+\tkzRequerre[Echelle=0.5,Origine={(-5,-6)},Rotation=-80,Couleur=ForestGreen, Longueur=10,Largeur=3.5,AfficheValeurs=false]
+\tkzRequerre[Origine={(1,-5)},Rotation=15,Couleur=DarkBlue, Longueur=9,Largeur=2.75]
+\end{PresentationCode}
+
+\begin{PresentationCode}{text only}
+\begin{tikzpicture}
+	\affichegrille{-8}{7}{-9}{1}
+	\pointsutiles{(0,0),(-5,-6),(1,-5)}
+	\tkzRequerre[Fond,CouleurFond=yellow]
+	\tkzRequerre[Echelle=0.5,Origine={(-5,-6)},Rotation=-80,Couleur=ForestGreen, Longueur=10,Largeur=3.5,AfficheValeurs=false]
+	\tkzRequerre[Origine={(1,-5)},Rotation=15,Couleur=DarkBlue,Longueur=9,Largeur=2.75]
+\end{tikzpicture}
+\end{PresentationCode}
+
+\pagebreak
+
+\section{La \og rappéquerre \fg}
+
+\subsection{La commande}
+
+\begin{cautionblock}
+Le package propose l'outil \textsf{RappÉquerre}.
+
+La forme générale de la rappéquerre est \textit{fixée}, mais la rappéquerre peut être \textit{personnalisée}.
+\end{cautionblock}
+
+\begin{PresentationCode}{tikz lower}
+\tkzRappEquerre
+\end{PresentationCode}
+
+\subsection{Clés et options}
+
+\begin{tipblock}
+Quelques \Cle{clés} de personnalisation sont disponibles :
+
+\begin{itemize}
+	\item \Cle{Largeur} pour la (demie-)largeur, en cm, de la rappéquerre ;\hfill~(défaut : \Cle{6} et mini \Cle{3})
+	\item \Cle{Origine} pour le placer la rappéquerre (au niveau du coin) ;\hfill~(défaut : \Cle{\{(0,0)\}})
+	\item \Cle{Rotation} pour pivoter la rappéquerre (au niveau du coin) ;\hfill~(défaut : \Cle{0})
+	\item \Cle{Echelle} pour l'échelle globale de la rappéquerre ;\hfill~(défaut : \Cle{1})
+	\item \Cle{EchelleValeurs} pour l'échelle des valeurs ;\hfill~(défaut : \Cle{1})
+	\item \Cle{Couleur} pour la couleur des éléments de la rappéquerre ;\hfill~(défaut : \Cle{black})
+	\item le booléen \Cle{Fond} pour afficher une couleur de fond pour la rappéquerre ;\hfill~(défaut : \Cle{false})
+	\item \Cle{CouleurFond} pour la couleur du fond de la rappéquerre ;\hfill~(défaut : \Cle{black})
+	\item \Cle{Opacite} pour régler l'opacité du fond de la rappéquerre ;\hfill~(défaut : \Cle{0.5})
+	\item le booléen \Cle{AfficheAngles} pour afficher les valeurs des angles ;\hfill~(défaut : \Cle{true})
+	\item le booléen \Cle{AfficheValeurs} pour afficher les valeurs des graduations.\hfill~(défaut : \Cle{true})
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{tipblock}
+
+\begin{PresentationCode}{listing only}
+%environnement tikz
+\tkzRappEquerre[Fond,Ombre]
+\tkzRappEquerre[Origine={(-5,-9)},Rotation=150,Couleur=ForestGreen,Echelle=0.5,Ombre]
+\tkzRappEquerre[Origine={(2,-10)},Rotation=-170,Couleur=DarkBlue, Largeur=4,Fond,AfficheValeurs=false,AfficheAngles=false,CouleurFond=DarkBlue]
+\end{PresentationCode}
+
+\begin{PresentationCode}{text only}
+\begin{tikzpicture}
+	\affichegrille{-8}{7}{-11}{1}
+	\pointsutiles{(0,0),(-5,-9),(2,-10)}
+	\tkzRappEquerre[Fond,Ombre]
+	\tkzRappEquerre[Origine={(-5,-9)},Rotation=150,Couleur=ForestGreen,Echelle=0.5,Ombre]
+	\tkzRappEquerre[Origine={(2,-10)},Rotation=-170,Couleur=DarkBlue,Largeur=4,Fond,AfficheValeurs=false,AfficheAngles=false,CouleurFond=DarkBlue]
+\end{tikzpicture}
+\end{PresentationCode}
+
+\pagebreak
+
+\section{Le compas}
+
+\subsection{La commande}
+
+\begin{cautionblock}
+Le package propose l'outil \textsf{Compas}.
+
+L'aspect général du compas est \textit{fixé}, mais le compas peut être \textit{personnalisé}.
+\end{cautionblock}
+
+\begin{PresentationCode}{tikz lower}
+\coordinate (A) at (0,0) ;
+\coordinate (B) at (2.5,0) ;
+\tkzCompas{A}{B}
+\end{PresentationCode}
+
+\subsection{Arguments, clés et options}
+
+\begin{tipblock}
+Les deux arguments \textit{obligatoires} sont les \textbf{nœuds} de la pointe et de la mine du compas, donnés par exemple grâce aux commandes \texttt{\textbackslash coordinate} ou \texttt{\textbackslash node}.
+
+\medskip
+
+Quelques \Cle{clés} de personnalisation sont disponibles :
+
+\begin{itemize}
+	\item le booléen \Cle{AfficheCrayon} pour afficher le crayon ;\hfill~(défaut : \Cle{true})
+	\item \Cle{EchelleCrayon} pour l'échelle du crayon ;\hfill~(défaut : \Cle{1})
+	\item \Cle{CouleurCrayon} pour la couleur du crayon ;\hfill~(défaut : \Cle{red})
+	\item \Cle{LongueurCrayon} pour la longueur du crayon ;\hfill~(défaut : \Cle{5})
+	\item \Cle{LongueurBranches} pour la taille des branches du compas ;\hfill~(défaut : \Cle{6})
+	\item le booléen \Cle{CouleurCompas} pour la couleur du compas ;\hfill~(défaut : \Cle{gray})
+	\item le booléen \Cle{Retourne} pour forcer le retournement \og horizontal \fg{} du compas ;
+	
+	\hfill~(défaut : \Cle{false})
+	\item \Cle{Echelle} pour l'échelle du compas (à utiliser avec précaution\ldots) ;\hfill~(défaut : \Cle{1})
+	\item \Cle{UniteTikz} (à utiliser avec précaution\ldots) pour spécifier une unité, par défaut elle est calculée (et stockée) en interne ;
+	
+	\hfill~(défaut : \Cle{\textbackslash TmpUniteX})
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{tipblock}
+
+\begin{PresentationCode}{listing only}
+%environnement tikz
+\tkzCompas{A}{B}
+\tkzCompas[LongueurBranches=4,CouleurCrayon=blue]{C}{D}
+\tkzCompas[LongueurBranches=3,CouleurCrayon=orange,Retourne, LongueurCrayon=3,CouleurCompas=black]{F}{E}
+\tkzCompas[LongueurBranches=3,CouleurCrayon=Green, LongueurCrayon=3,CouleurCompas=purple]{F}{E}
+\tkzCompas[Echelle=0.75,Retourne,CouleurCrayon=cyan,CouleurCompas=pink]{G}{H}
+\end{PresentationCode}
+
+\begin{PresentationCode}{text only}
+\begin{tikzpicture}
+	\affichegrille{-6}{9}{-6}{7}
+	\pointsutiles{(0,0),(2,1),(-4,-5),(-1,-5),(5,-2),(8,-3),(8.5,6),(8.5,2.5)}
+	\coordinate (A) at (0,0) ; \draw (A) node[below] {A} ;
+	\coordinate (B) at (2,1) ; \draw (B) node[below] {B} ;
+	\coordinate (C) at (-4,-5) ; \draw (C) node[below] {C} ;
+	\coordinate (D) at (-1,-5) ; \draw (D) node[below] {D} ;
+	\coordinate (E) at (5,-2) ; \draw (E) node[left] {E} ;
+	\coordinate (F) at (8,-3) ; \draw (F) node[right] {F} ;
+	\coordinate (G) at (8.5,6) ; \draw (G) node[right] {G} ;
+	\coordinate (H) at (8.5,2.5) ; \draw (H) node[right] {H} ;
+	\tkzCompas{A}{B}
+	\tkzCompas[LongueurBranches=4,CouleurCrayon=blue]{C}{D}
+	\tkzCompas[LongueurBranches=3,CouleurCrayon=orange,Retourne, LongueurCrayon=3,CouleurCompas=black]{F}{E}
+	\tkzCompas[LongueurBranches=3,CouleurCrayon=Green, LongueurCrayon=3,CouleurCompas=purple]{F}{E}
+	\tkzCompas[Echelle=0.75,Retourne,CouleurCrayon=cyan,CouleurCompas=pink]{G}{H}
+\end{tikzpicture}
+\end{PresentationCode}
+
+\pagebreak
+
+\part{Exemple}
+
+\begin{PresentationCode}{listing only}
+\tkzRegle[Fond,AfficheValeurs,Longueur=15,Rotation=-20,Echelle=0.5,CouleurFond=blue]
+\tkzEquerre[Fond,AfficheValeurs,Longueur=12,Origine={(-20:4)}, Rotation=-20,CouleurFond=red,Echelle=0.5]
+\tkzCrayon[Couleur=ForestGreen,Origine={(-20:4)},Rotation=30,Echelle=0.5]
+\draw (10,-5)--++(20:5) (10,-5)--++(50:5) ;
+\tkzRapporteur[Fond,CouleurFond=purple,Origine={(10,-5)},Echelle=0.5,Rotation=20]
+\tkzRappEquerre[Fond,Origine={(9,1)},Rotation=90,CouleurFond=ForestGreen,Echelle=0.5]
+\tkzCrayon[Couleur=yellow,Origine={(9,-1)},Rotation=20,Echelle=0.5]
+\coordinate (AA) at ($(10,-5)+(50:{0.5*3.75})$) ;
+\tkzCrayon[Couleur=orange,Origine={AA},Rotation=-20,Echelle=0.5,Longueur=6]
+\tkzRequerre[Fond,AfficheValeurs,CouleurFond=yellow,Origine={(3,-3.5)}, Rotation=-30,Echelle=0.5]
+\tkzCrayon[Couleur=gray,Origine={(3,-3)},Rotation=-98,Echelle=0.5]
+\coordinate (FG) at (-1,1) ; \coordinate (FH) at (1,1.5) ;
+\tkzCompas[LongueurBranches=3,LongueurCrayon=2]{FG}{FH}
+\end{PresentationCode}
+
+\begin{PresentationCode}{text only}
+\begin{tikzpicture}
+	\affichegrille{-2}{13}{-8}{5}
+	%\pointsutiles{(0,0),(2,1),(-4,-5),(-1,-5),(5,-2),(8,-3),(8.5,6),(8.5,2.5)}
+	\tkzRegle[Fond,Longueur=8,Rotation=-20,CouleurFond=blue]
+	\tkzEquerre
+	[Fond,Longueur=7,Origine={(-20:4)},Rotation=-20,CouleurFond=red]
+	\tkzCrayon[Couleur=ForestGreen,Origine={(-20:4)},Rotation=30,Longueur=3]
+	\draw (10,-5)--++(20:3) (10,-5)--++(50:3) ;
+	\tkzRapporteur[Fond,CouleurFond=purple,Origine={(10,-5)},Echelle=0.5,Rotation=20]
+	\tkzRappEquerre[Fond,Origine={(9,1)},Rotation=90,CouleurFond=ForestGreen,Largeur=4]
+	\tkzCrayon[Couleur=yellow,Origine={(9,-1)},Rotation=20,Longueur=3]
+	\coordinate (AA) at ($(10,-5)+(50:{0.5*3.75})$) ;
+	\tkzCrayon[Couleur=orange,Origine={AA},Rotation=-20,Longueur=6,Echelle=0.5]
+	\tkzRequerre[Fond,AfficheValeurs,CouleurFond=yellow,Origine={(3,-3.5)},Rotation=-30,Longueur=7,Largeur=2.5]
+	\tkzCrayon[Couleur=gray,Origine={(3,-3.5)},Rotation=-98,Longueur=3]
+	%compas
+	\coordinate (FG) at (-1,1) ; \coordinate (FH) at (1,1.5) ;
+	\tkzCompas[LongueurBranches=3,LongueurCrayon=2]{FG}{FH}
+\end{tikzpicture}
+\end{PresentationCode}
+\end{document}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/outilsgeomtikz/OutilsGeomTikz-doc.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/outilsgeomtikz/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/outilsgeomtikz/README.md	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/outilsgeomtikz/README.md	2023-03-05 20:47:29 UTC (rev 66360)
@@ -0,0 +1,7 @@
+OutilsGeomTikz is a package with geometric tools in TikZ.
+-----------------------------------------------------------
+OutilsGeomTikz est un package avec outils géométriques en TikZ.
+-----------------------------------------------------------
+Author : Cédric Pierquet
+email : cpierquet at outlook.fr
+Licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/outilsgeomtikz/README.md
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/outilsgeomtikz/OutilsGeomTikz.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/outilsgeomtikz/OutilsGeomTikz.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/outilsgeomtikz/OutilsGeomTikz.sty	2023-03-05 20:47:29 UTC (rev 66360)
@@ -0,0 +1,620 @@
+% Author.........: C. Pierquet
+% licence........: Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{OutilsGeomTikz}[2023/03/03 v0.1.0 Outils géométriques en TikZ]
+% 0.1.0		Version initiale
+
+%------Packages utiles
+\RequirePackage{tikz,pgffor}
+\RequirePackage{simplekv}
+\RequirePackage{xstring}
+\RequirePackage{nicefrac}
+%librairies tikz
+\usetikzlibrary{calc,positioning}
+
+%--------Crayon
+% inspiration(s) de https://tex.stackexchange.com/questions/147389/symbols-of-pencil-ruler-and-compass
+\defKV[CrayonGeom]{%
+	Echelle=\def\PENechelle{#1},%
+	Longueur=\def\PENlongueur{#1},%
+	Couleur=\def\PENcouleur{#1},%
+	Origine=\def\PENposOrigin{#1},%
+	Rotation=\def\PENangle{#1}
+}
+
+\setKVdefault[CrayonGeom]{%
+	Echelle=1,%
+	Couleur=red,%
+	Longueur=5,%
+	Origine={(0,0)},%
+	Rotation=0
+}
+
+\NewDocumentCommand\tkzCrayon{ O{} }{%
+	\useKVdefault[CrayonGeom]%
+	\setKV[CrayonGeom]{#1}%
+	\xdef\PENlongueur{\fpeval{max(2.5,\PENlongueur)}}%valeurs mini
+	\begin{scope}[shift={(\PENposOrigin)},rotate=\PENangle,scale=\PENechelle]
+		\fill[\PENcouleur!75] (-0.2,{\PENlongueur-0.3}) -- (0.2,{\PENlongueur-0.3}) -- (0.2,0.8) --(0.1,0.65) -- (0,0.8) -- (-0.1,0.66) -- (-0.2,0.8) -- cycle;
+		\draw[color=white,line width={\PENechelle*1pt}] (0,{\PENlongueur-0.3}) -- (0,0.6);
+		\fill[black] (-0.2,{\PENlongueur-0.6}) -- (0,{\PENlongueur-0.65}) -- (0.2,{\PENlongueur-0.6}) -- (0.2,{\PENlongueur-0.12}) arc(30:150:0.23);
+		\fill[brown!40] (-0.2,0.8) -- (0,0) node[coordinate,pos=0.7] (a) {} -- (0.2,0.8) node[coordinate,pos=0.3] (b) {} -- (0.1,0.65) -- (0,0.8) -- (-0.1,0.66) -- cycle;
+		\fill[\PENcouleur] (a) -- (0,0) -- (b) -- cycle ;
+	\end{scope}
+}
+
+%--------Règle (OK)
+\defKV[RegleGeom]{%
+	Echelle=\def\REGLechelle{#1},%
+	Longueur=\def\REGLlongueur{#1},%
+	Largeur=\def\REGLlargeur{#1},%
+	Couleur=\def\REGLcouleur{#1},%
+	CouleurFond=\def\REGLcouleurfond{#1},%
+	Origine=\def\REGLposOrigin{#1},%
+	Rotation=\def\REGLangle{#1},%
+	Opacite=\def\REGLopac{#1},%
+	PosVal=\def\REGLposval{#1}
+}
+
+\setKVdefault[RegleGeom]{%
+	Echelle=1,%
+	Couleur=black,%
+	CouleurFond=black,%
+	Longueur=12,%
+	Largeur=1.5,%
+	Origine={(0,0)},%
+	Rotation=0,%
+	AfficheValeurs=true,%
+	Fond=false,%
+	Opacite=0.5,%
+	PosVal=m
+}
+
+\NewDocumentCommand{\tkzRegle}{ O{} }{%
+	\useKVdefault[RegleGeom]%
+	\setKV[RegleGeom]{#1}%
+	\xdef\REGLlongueur{\fpeval{max(3,\REGLlongueur)}}%valeurs mini
+	\xdef\REGLlargeur{\fpeval{max(1.5,\REGLlargeur)}}
+	\begin{scope}[shift={(\REGLposOrigin)},rotate=\REGLangle,scale=\REGLechelle]
+		\ifboolKV[RegleGeom]{Fond}
+			{%
+				\begin{scope}
+					\fill[draw=none,fill=\REGLcouleurfond!10!white,fill opacity=\REGLopac,even odd rule] (-0.375,0)--({\REGLlongueur+0.375},0) to[bend left=15] ({\REGLlongueur+0.375},{-\REGLlargeur}) -- (-0.375,{-\REGLlargeur}) to[bend left=15] (-0.375,0) (0.5,{-0.5*\REGLlargeur}) circle[radius={0.125*\REGLlargeur}] ;
+				\end{scope}
+			}%
+			{}
+		%bord et trou
+		\draw[semithick,\REGLcouleur] (-0.375,0)--({\REGLlongueur+0.375},0) to[bend left=15] ({\REGLlongueur+0.375},{-\REGLlargeur}) -- (-0.375,{-\REGLlargeur}) to[bend left=15] (-0.375,0) (0.5,{-0.5*\REGLlargeur}) circle[radius={0.125*\REGLlargeur}] ;
+		\foreach \x in {0,0.1,...,\REGLlongueur} {\draw[\REGLcouleur] (\x,0)--++(0,-0.25) (\x,{-\REGLlargeur})--++(0,0.25) ;}
+		\foreach \x in {0,0.5,...,\REGLlongueur} {\draw[\REGLcouleur] (\x,0)--++(0,-0.375) (\x,{-\REGLlargeur})--++(0,0.375) ;}
+		\foreach \x in {0,1,...,\REGLlongueur} {\draw[\REGLcouleur] (\x,0)--++(0,-0.5) (\x,{-\REGLlargeur})--++(0,0.5) ;}
+		\ifboolKV[RegleGeom]{AfficheValeurs}%
+			{%
+				\IfSubStr{\REGLposval}{h}
+					{\foreach \i in {0,1,...,\REGLlongueur} \draw[\REGLcouleur] (\i,{-0.5}) node[inner sep=1pt,outer sep=1pt,rotate=\REGLangle,scale={0.8*\REGLechelle},font=\small,below] {$\i$} ;}
+					{}
+				\IfSubStr{\REGLposval}{m}
+					{\foreach \i in {0,1,...,\REGLlongueur} \draw[\REGLcouleur] (\i,{-0.5*\REGLlargeur}) node[inner sep=1pt,outer sep=1pt,rotate=\REGLangle,scale={0.8*\REGLechelle},font=\small] {$\i$} ;}
+					{}
+				\IfSubStr{\REGLposval}{b}
+					{\foreach \i in {0,1,...,\REGLlongueur} \draw[\REGLcouleur] (\i,{-\REGLlargeur+0.5}) node[inner sep=1pt,outer sep=1pt,rotate=\REGLangle,scale={0.8*\REGLechelle},font=\small,above] {\rotatebox{180}{$\fpeval{trunc(\REGLlongueur)-\i}$}} ;}
+					{}
+			}%
+			{}%
+	\end{scope}
+}
+
+%--------Réquerre (OK)
+\defKV[RequerreGeom]{%
+	Echelle=\def\REQechelle{#1},%
+	Longueur=\def\REQlongueur{#1},%
+	Largeur=\def\REQlargeur{#1},%
+	Couleur=\def\REQcouleur{#1},%
+	CouleurFond=\def\REQcouleurfond{#1},%
+	Origine=\def\REQposOrigin{#1},%
+	Rotation=\def\REQangle{#1},%
+	Opacite=\def\REQopac{#1}
+}
+
+\setKVdefault[RequerreGeom]{%
+	Echelle=1,%
+	Couleur=black,%
+	CouleurFond=black,%
+	Longueur=12,%
+	Largeur=3,%
+	Origine={(0,0)},%
+	Rotation=0,%
+	AfficheValeurs=true,%
+	Fond=false,%
+	Opacite=0.5
+}
+
+\NewDocumentCommand{\tkzRequerre}{ O{} }{%
+	\useKVdefault[RequerreGeom]%
+	\setKV[RequerreGeom]{#1}%
+	\xdef\REQlongueur{\fpeval{max(6,\REQlongueur)}}%valeurs mini
+	\xdef\REQlargeur{\fpeval{max(1.5,\REQlargeur)}}
+	\begin{scope}[shift={(\REQposOrigin)},rotate=\REQangle,scale=\REQechelle]
+		\ifboolKV[RequerreGeom]{Fond}
+			{
+				\fill[draw=none,rounded corners,fill=\REQcouleurfond!10!white,fill opacity=\REQopac] ({-\REQlongueur*0.5},0) rectangle ({\REQlongueur*0.5},{-\REQlargeur}) ;
+			}
+			{}
+		\draw[semithick,\REQcouleur,rounded corners] ({-\REQlongueur*0.5},0) rectangle ({\REQlongueur*0.5},{-\REQlargeur}) ;
+		\draw[\REQcouleur] (0,-1)--(0,-\REQlargeur) ;
+		\foreach \x in {0,0.1,...,\fpeval{0.5*\REQlongueur-0.5}} {\draw[\REQcouleur] (\x,0)--(\x,-0.25) (-\x,0)--(-\x,-0.25) ;}
+		\foreach \x in {0,0.5,...,\fpeval{0.5*\REQlongueur-0.5}} {\draw[\REQcouleur] (\x,0)--(\x,-0.375) (-\x,0)--(-\x,-0.375) ;}
+		\foreach \x in {0,1,...,\fpeval{0.5*\REQlongueur-0.5}} {\draw[\REQcouleur] (\x,0)--(\x,-0.5) (-\x,0)--(-\x,-0.5) ;}
+		\foreach \x in {0.7,0.8,...,\REQlargeur} {\draw[\REQcouleur] (-2.65,-\x)--(-2.35,-\x) (2.65,-\x)--(2.35,-\x) ;}
+		\foreach \x in {1,1.5,...,\REQlargeur} {\draw[\REQcouleur] (-2.8,-\x)--(-2.2,-\x) (2.2,-\x)--(2.8,-\x) ;}
+		\begin{scope}
+			\clip ({-\REQlongueur*0.5},0) rectangle ({\REQlongueur*0.5},{-\REQlargeur}) ;
+			\draw[\REQcouleur] (0,-1) rectangle++ (0.2,-0.2) (0,-2) rectangle++ (-0.2,0.2) ;
+			\foreach \x in {1,2,...,\fpeval{\REQlargeur-0.25}} {\draw[\REQcouleur] ({-\REQlongueur*0.5},-\x)--({\REQlongueur*0.5},-\x) ;}
+		\end{scope}
+		\ifboolKV[RequerreGeom]{AfficheValeurs}%
+			{%
+				\draw[\REQcouleur] (0,-0.5) node[inner sep=1pt,outer sep=1pt,rotate=\REQangle,scale={0.8*\REQechelle},font=\small,below] {$0$} ;
+				\foreach \i in {1,2,...,\fpeval{0.5*\REQlongueur-0.5}}{%
+					\draw[\REQcouleur] (\i,-0.5) node[inner sep=1pt,outer sep=1pt,rotate=\REQangle,scale={0.8*\REQechelle},font=\small,below] {$\i$} ;
+					\draw[\REQcouleur] (-\i,-0.5) node[inner sep=1pt,outer sep=1pt,rotate=\REQangle,scale={0.8*\REQechelle},font=\small,below] {$-\i$} ;}
+			}%
+			{}%
+	\end{scope}
+}
+
+%--------Équerre (OK)
+\defKV[EquerreGeom]{%
+	Echelle=\def\EQechelle{#1},%
+	Longueur=\def\EQlongueur{#1},%
+	Couleur=\def\EQcouleur{#1},%
+	CouleurFond=\def\EQcouleurfond{#1},%
+	Origine=\def\EQposOrigin{#1},%
+	Rotation=\def\EQangle{#1},%
+	Opacite=\def\EQopac{#1}
+}
+
+\setKVdefault[EquerreGeom]{%
+	Echelle=1,%
+	Couleur=black,%
+	CouleurFond=black,%
+	Longueur=10,%
+	Origine={(0,0)},%
+	Rotation=0,%
+	AfficheValeurs=true,%
+	Fond=false,%
+	Opacite=0.5
+}
+
+\NewDocumentCommand{\tkzEquerre}{ O{} }{%
+	\useKVdefault[EquerreGeom]%
+	\setKV[EquerreGeom]{#1}%
+	\xdef\EQlongueur{\fpeval{max(4.5,\EQlongueur)}}%valeurs mini
+	\def\EQlargeur{\fpeval{\EQlongueur*tand(30)}}
+	\begin{scope}[shift={(\EQposOrigin)},rotate=\EQangle,scale=\EQechelle]
+		\ifboolKV[EquerreGeom]{Fond}
+			{%
+				\begin{scope} %diff extérieur-intérieur
+					\fill[draw=none,fill=\EQcouleurfond!10!white,fill opacity=\EQopac,even odd rule]
+						(0,0) -- ({\EQlargeur},0) -- (0,{\EQlongueur}) -- cycle
+						({1},{1}) -- ({\EQlargeur-sqrt(3)},{1}) -- ({1},{\EQlongueur-(2+sqrt(3))}) -- cycle ;
+				\end{scope}
+			}%
+			{}
+		\draw[semithick,\EQcouleur] (0,0) -- ({\EQlargeur},0) -- (0,{\EQlongueur}) -- cycle ; %contour extérieur
+		\draw[semithick,\EQcouleur] ({1},{1}) -- ({\EQlargeur-sqrt(3)},{1}) -- ({1},{\EQlongueur-(2+sqrt(3))}) -- cycle ; %contour intérieur
+		%graduations
+		\begin{scope}
+			\clip (0,0) -- ({\EQlargeur},0) -- (0,{\EQlongueur}) -- cycle ;
+			\draw[\EQcouleur] (0.1,0)--(0.1,0.075) (0.2,0)--(0.2,0.15) ;
+			\foreach \x in {0.3,0.4,...,\fpeval{0.925*\EQlargeur}} {\draw[\EQcouleur] (\x,0)--(\x,0.2) ;}
+			\foreach \x in {0.5,1,...,\fpeval{0.925*\EQlargeur}} {\draw[\EQcouleur] (\x,0)--(\x,0.3) ;}
+			\foreach \x in {0,1,...,\fpeval{0.925*\EQlargeur}} {\draw[\EQcouleur] (\x,0)--(\x,0.4) ;}
+			\draw[\EQcouleur] (0,0.1)--(0.075,0.1) (0,0.2)--(0.15,0.2) ;
+			\foreach \y in {0.3,0.4,...,\fpeval{0.925*\EQlongueur}} {\draw[\EQcouleur] (0,\y)--(0.2,\y) ;}
+			\foreach \y in {0.5,1,...,\fpeval{0.925*\EQlongueur}} {\draw[\EQcouleur] (0,\y)--(0.3,\y) ;}
+			\foreach \y in {0,1,...,\fpeval{0.925*\EQlongueur}} {\draw[\EQcouleur] (0,\y)--(0.4,\y) ;}
+			\ifboolKV[EquerreGeom]{AfficheValeurs}%
+				{%
+					\foreach \i in {1,2,...,\fpeval{0.9*\EQlongueur-1}}
+						\draw[\EQcouleur] (0.4,\i) node[inner sep=1pt,outer sep=1pt,rotate=\EQangle,scale={0.8*\EQechelle},font=\small,right] {\rotatebox{90}{$\i$}} ;
+					\foreach \i in {1,2,...,\fpeval{0.9*\EQlargeur-0.5}}
+						\draw[\EQcouleur] (\i,0.4) node[inner sep=1pt,outer sep=1pt,rotate=\EQangle,scale={0.8*\EQechelle},font=\small,above] {\rotatebox{180}{$\i$}} ;
+				}%
+				{}%
+			\end{scope}
+	\end{scope}
+}
+
+%--------Rapporteur (OK)
+\defKV[RapporteurGeom]{%
+	Echelle=\def\RAPPechelle{#1},%
+	EchelleAngle=\def\RAPPechangle{#1},%
+	Couleur=\def\RAPPcouleur{#1},%
+	CouleurFond=\def\RAPPcouleurfond{#1},%
+	Origine=\def\RAPPposOrigin{#1},%
+	Rotation=\def\RAPPangle{#1},%
+	Opacite=\def\RAPPopac{#1}
+}
+
+\setKVdefault[RapporteurGeom]{%
+	Echelle=1,%
+	EchelleAngle=1,%
+	Couleur=black,%
+	CouleurFond=black,%
+	Origine={(0,0)},%
+	Rotation=0,%
+	AfficheAngles=true,%
+	Fond=false,%
+	Opacite=0.5,%
+	Complet=false
+}
+
+\NewDocumentCommand{\tkzRapporteur}{ O{} }{%
+	\useKVdefault[RapporteurGeom]%
+	\setKV[RapporteurGeom]{#1}%
+	\begin{scope}[shift={(\RAPPposOrigin)},rotate=\RAPPangle,scale=\RAPPechelle,every node/.style={rotate=\RAPPangle}]
+		\ifboolKV[RapporteurGeom]{Complet}
+			{
+			%fond
+				\ifboolKV[RapporteurGeom]{Fond}
+					{%
+						\fill[draw=none,fill=\RAPPcouleurfond!10!white,fill opacity=\RAPPopac] (0,0) circle[radius=3.75] ;
+					}%
+					{}
+				%rectangles
+				\foreach \i in {30,45,60}
+					{\draw[densely dotted,\RAPPcouleur] (\i:2.5) rectangle ({180+\i}:2.5) ;}
+				%extérieur et intérieur
+				\draw[semithick,\RAPPcouleur] (0,0) circle[radius=3.75] ;
+				\draw[semithick,\RAPPcouleur] (0,0) circle[radius=2.5] ;
+				\draw[semithick,\RAPPcouleur] (-2.5,0) -- (2.5,0) ;
+				\draw[semithick,\RAPPcouleur] (0,-2.5) -- (0,2.5) ;
+				%grad degrés
+				\foreach \i in {0,1,...,360} {\draw[\RAPPcouleur] (\i:3.75)--(\i:3.55) ;}
+				\foreach \i in {0,5,...,360} {\draw[\RAPPcouleur] (\i:3.75)--(\i:3.45) ;}
+				\foreach \i in {0,10,...,360} {\draw[\RAPPcouleur] (\i:3.75)--(\i:3.35) ;}
+				%grad radians
+				\foreach \i in {0,30,45,60,90,120,135,150,180,210,225,240,270,300,315,330} {\draw[\RAPPcouleur] (\i:2.5)--(\i:2.65) (\i:2.9)--(\i:3.1) ;}
+				%valeurs si booléen
+				\ifboolKV[RapporteurGeom]{AfficheAngles}
+					{%
+						\draw[\RAPPcouleur] (0:2.75) node[rotate=90,scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$0$} ;
+						\draw[\RAPPcouleur] (180:3.25) node[rotate=90,scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\pm 180$} ;
+						\draw[\RAPPcouleur] (180:2.75) node[rotate=90,scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\pm \pi$} ;
+						\foreach \i in {0,10,...,170}
+							{\draw[\RAPPcouleur] (\i:3.25) node[rotate={\i-90},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\i$} ;}
+						\draw[\RAPPcouleur] (30:2.75) node[rotate={30-90},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{\pi}{6}$} ;
+						\draw[\RAPPcouleur] (45:2.75) node[rotate={45-90},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{\pi}{4}$} ;
+						\draw[\RAPPcouleur] (60:2.75) node[rotate={60-90},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{\pi}{3}$} ;
+						\draw[\RAPPcouleur] (90:2.75) node[rotate={90-90},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{\pi}{2}$} ;
+						\draw[\RAPPcouleur] (120:2.75) node[rotate={120-90},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{2\pi}{3}$} ;
+						\draw[\RAPPcouleur] (135:2.75) node[rotate={135-90},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{3\pi}{4}$} ;
+						\draw[\RAPPcouleur] (150:2.75) node[rotate={150-90},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{5\pi}{6}$} ;
+						\foreach \i in {10,20,...,170}
+							{\draw[\RAPPcouleur] ({-\i}:3.25) node[rotate={270-\i},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$-\i$} ;}
+						\draw[\RAPPcouleur] (-30:2.75) node[rotate={270-30},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{-\pi}{6}$} ;
+						\draw[\RAPPcouleur] (-45:2.75) node[rotate={270-45},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{-\pi}{4}$} ;
+						\draw[\RAPPcouleur] (-60:2.75) node[rotate={270-60},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{-\pi}{3}$} ;
+						\draw[\RAPPcouleur] (-90:2.75) node[rotate={270-90},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{-\pi}{2}$} ;
+						\draw[\RAPPcouleur] (-120:2.75) node[rotate={270-120},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{-2\pi}{3}$} ;
+						\draw[\RAPPcouleur] (-135:2.75) node[rotate={270-135},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{-3\pi}{4}$} ;
+						\draw[\RAPPcouleur] (-150:2.75) node[rotate={270-150},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{-5\pi}{6}$} ;
+					}{}
+			}
+			{
+				%fond
+				\ifboolKV[RapporteurGeom]{Fond}
+					{%
+						\begin{scope}
+							\fill[draw=none,fill=\RAPPcouleurfond!10!white,fill opacity=\RAPPopac,even odd rule]
+								(-3.75,-0.75) -- (3.75,-0.75) -- (3.75,0) arc (0:180:3.75) -- cycle
+								(0.5,0) arc (0:180:0.5) -- (-2.25,0) arc (180:0:2.25) -- cycle ;
+						\end{scope}
+					}%
+					{}
+				%extérieur et intérieur
+				\draw[semithick,\RAPPcouleur] (-3.75,-0.75) -- (3.75,-0.75) -- (3.75,0) arc (0:180:3.75) -- cycle ;
+				\draw[semithick,\RAPPcouleur] (0.5,0) arc (0:180:0.5) -- (-2.25,0) arc (180:0:2.25) -- cycle  ;
+				%croix
+				\draw[semithick,\RAPPcouleur] (-0.2,0)--(0.2,0) (0,-0.2)--(0,0.2) ;
+				%grad ext
+				\foreach \i in {0,1,...,180} {\draw[\RAPPcouleur] (\i:3.75)--(\i:3.55) ;}
+				\foreach \i in {0,5,...,180} {\draw[\RAPPcouleur] (\i:3.75)--(\i:3.45) ;}
+				\foreach \i in {0,10,...,180} {\draw[\RAPPcouleur] (\i:3.75)--(\i:3.35) ;}
+				%grad int
+				\foreach \i in {0,5,...,180} {\draw[\RAPPcouleur] (\i:2.25)--(\i:2.4) ;}
+				\foreach \i in {0,10,...,180} {\draw[\RAPPcouleur] (\i:2.25)--(\i:2.55) ;}
+				%valeurs si booléen
+				\ifboolKV[RapporteurGeom]{AfficheAngles}
+					{%
+						\foreach \i in {0,10,...,180}
+							{\draw[\RAPPcouleur] (\i:3.2) node[rotate={\i-90},scale=\fpeval{\RAPPechelle*\RAPPechangle},font=\tiny] {\i} ;}
+						\foreach \i in {0,10,...,180}
+							{\draw[\RAPPcouleur] (\i:2.7) node[rotate={\i-90},scale=\fpeval{\RAPPechelle*\RAPPechangle},font=\tiny] {\inteval{180-\i}} ;}
+					}{}
+			}
+	\end{scope}
+}
+
+%--------RappÉquerre (OK)
+\defKV[RapporteurEquerreGeom]{%
+	Echelle=\def\RAPPEQechelle{#1},%
+	Largeur=\def\RAPPEQlargeur{#1},%
+	EchelleValeurs=\def\RAPPEQechangle{#1},%
+	Couleur=\def\RAPPEQcouleur{#1},%
+	CouleurFond=\def\RAPPEQcouleurfond{#1},%
+	Origine=\def\RAPPEQposOrigin{#1},%
+	Rotation=\def\RAPPEQangle{#1},%
+	Opacite=\def\RAPPEQopac{#1}
+}
+
+\setKVdefault[RapporteurEquerreGeom]{%
+	Echelle=1,%
+	Largeur=6,%
+	EchelleValeurs=1,%
+	Couleur=black,%
+	CouleurFond=black,%
+	Origine={(0,0)},%
+	Rotation=0,%
+	AfficheAngles=true,%
+	AfficheValeurs=true,%
+	Ombre=false,%
+	Fond=false,%
+	Opacite=0.5
+}
+
+\NewDocumentCommand{\tkzRappEquerre}{ O{} }{%
+	\useKVdefault[RapporteurEquerreGeom]%
+	\setKV[RapporteurEquerreGeom]{#1}%
+	\xdef\RAPPEQlargeur{\fpeval{max(3,\RAPPEQlargeur)}}%valeurs mini
+	\begin{scope}[shift={(\RAPPEQposOrigin)},rotate=\RAPPEQangle,scale=\RAPPEQechelle,every node/.style={rotate=\RAPPEQangle}]
+		%fond
+		\ifboolKV[RapporteurEquerreGeom]{Fond}
+			{%
+				\begin{scope}
+					\fill[draw=none,fill=\RAPPEQcouleurfond!10!white,fill opacity=\RAPPopac,even odd rule] (-\RAPPEQlargeur,0) -- (\RAPPEQlargeur,0) -- (0,-\RAPPEQlargeur) -- cycle ;
+				\end{scope}
+			}%
+			{}
+		\ifboolKV[RapporteurEquerreGeom]{Ombre}%
+			{%
+				\filldraw[draw=none,fill=\RAPPEQcouleur!25,opacity=\RAPPopac] (-175:{0.65*\RAPPEQlargeur}) arc (-175:-5:{0.65*\RAPPEQlargeur}) -- (-5:{0.625*\RAPPEQlargeur}) arc (-5:-175:{0.625*\RAPPEQlargeur}) -- cycle ;%
+			}{}%
+		%extérieur
+		\draw[semithick,\RAPPEQcouleur] (-\RAPPEQlargeur,0) -- (\RAPPEQlargeur,0) -- (0,-\RAPPEQlargeur) -- cycle ;
+		\foreach \x in {0,0.1,...,\fpeval{\RAPPEQlargeur-1}}
+			{\draw[\RAPPEQcouleur] ({\x},0)--({\x},-0.125) ({-\x},0)--({-\x},-0.125) ;}
+		\foreach \x in {0,0.5,...,\fpeval{\RAPPEQlargeur-1}}
+			{\draw[\RAPPEQcouleur] ({\x},0)--({\x},-0.1875) ({-\x},0)--({-\x},-0.1875) ;}
+		\foreach \x in {0,1,...,\fpeval{\RAPPEQlargeur-1}}
+			{\draw[\RAPPEQcouleur] ({\x},0)--({\x},-0.25) ({-\x},0)--({-\x},-0.25) ;}
+		%grad ext
+		\foreach \i in {5,6,...,175}
+			{\draw[\RAPPEQcouleur] ({-\i}:{0.5625*\RAPPEQlargeur})--++({-\i}:{0.02*\RAPPEQlargeur}) ;}
+		\foreach \i in {5,10,...,175}
+			{\draw[\RAPPEQcouleur] ({-\i}:{0.5625*\RAPPEQlargeur})--++({-\i}:{0.035*\RAPPEQlargeur}) ;}
+		%angles intérieurs
+		\ifboolKV[RapporteurEquerreGeom]{AfficheAngles}
+			{%
+				\foreach \i in {10,20,...,170}
+					{\draw[\RAPPEQcouleur] ({-\i}:{0.6125*\RAPPEQlargeur}) node[rotate={90-\i},scale=\fpeval{\RAPPEQlargeur/8*\RAPPEQechelle*\RAPPEQechangle},font=\tiny] {\i} ;}
+				%angles "extérieurs"
+				\foreach \i in {10,20,...,170}
+					{\draw[\RAPPEQcouleur] ({-\i}:{0.6375*\RAPPEQlargeur}) node[rotate={90-\i},scale=\fpeval{\RAPPEQlargeur/8*\RAPPEQechelle*\RAPPEQechangle},font=\tiny] {\inteval{180-\i}} ;}
+			}%
+			{}%
+		\ifboolKV[RapporteurEquerreGeom]{AfficheValeurs}
+			{%
+				\foreach \i in {-1,0,1}
+					{\draw[\RAPPEQcouleur] ({\i},-0.375) node[scale=\fpeval{\RAPPEQechelle*\RAPPEQechangle},font=\tiny] {$\i$} ;}
+			}%
+			{}%
+		%tracés intérieurs
+		\draw[\RAPPEQcouleur,dash pattern=on 15 off 4] (0,0)--(-135:{0.5625*\RAPPEQlargeur}) ;
+		\draw[\RAPPEQcouleur,dash pattern=on 15 off 4] (0,0)--(-45:{0.5625*\RAPPEQlargeur}) ;
+		\draw[\RAPPEQcouleur] (0,-0.5)--(0,{-0.51*\RAPPEQlargeur}) ;
+		\foreach \i in {0.4,0.5,...,\fpeval{0.51*\RAPPEQlargeur-0.5}}
+			{\draw[\RAPPEQcouleur] ({0.2625*\RAPPEQlargeur},{-\i})--++(0.2,0) ;}
+		\foreach \i in {0.4,0.5,...,\fpeval{0.51*\RAPPEQlargeur-0.5}}
+			{\draw[\RAPPEQcouleur] ({-0.2625*\RAPPEQlargeur},{-\i})--++(-0.2,0) ;}
+		\begin{scope}
+			\clip (-180:{0.55*\RAPPEQlargeur}) arc (-180:0:{0.55*\RAPPEQlargeur}) -- cycle ;
+			\foreach \i in {-0.5,-1,...,\fpeval{-0.55*\RAPPEQlargeur}}
+				{\draw[\RAPPEQcouleur] (0.2,\i)--({0.2375*\RAPPEQlargeur},\i) ({0.3125*\RAPPEQlargeur},\i)--({0.55*\RAPPEQlargeur},\i) ;}
+			\foreach \i in {-0.5,-1,...,\fpeval{-0.55*\RAPPEQlargeur}}
+				{\draw[\RAPPEQcouleur] (-0.2,\i)--({-0.2375*\RAPPEQlargeur},\i) ({-0.3125*\RAPPEQlargeur},\i)--({-0.55*\RAPPEQlargeur},\i) ;}
+		\end{scope}
+		%traits obliques extérieurs
+		\begin{scope}
+			\clip (-\RAPPEQlargeur,0) -- (\RAPPEQlargeur,0) -- (0,-\RAPPEQlargeur) -- cycle ;
+			\foreach \i in {10,20,...,170}
+				{\draw[\RAPPEQcouleur] ({-\i}:{0.65*\RAPPEQlargeur})--++({-\i}:3) ;}
+			\foreach \i in {10,20,...,170}
+				{\draw[\RAPPEQcouleur] ({-\i}:{0.65*\RAPPEQlargeur})--++({-\i}:3) ;}
+		\end{scope}
+		\begin{scope}
+			\clip (-\RAPPEQlargeur,0) -- (\RAPPEQlargeur,0) -- (0,-\RAPPEQlargeur) -- cycle ;
+			\def\cliptmp{\fpeval{min(0.15,0.0571*\RAPPEQlargeur)}}
+			\clip (0,-\RAPPEQlargeur)--++(135:\cliptmp)--++(\RAPPEQlargeur,\RAPPEQlargeur)--++(-45:\cliptmp)--cycle ;
+			\foreach \i in {1,2,...,89} 
+				{\draw[\RAPPEQcouleur] ({\RAPPEQlargeur/(1+tan(\i))},{-\RAPPEQlargeur*tan(\i)/(1+tan(\i))}) --++ ({180-\i}:{abs(-0.3*\i/90+0.15)+0.15}) ;}
+		\end{scope}
+		\begin{scope}
+			\clip (-\RAPPEQlargeur,0) -- (\RAPPEQlargeur,0) -- (0,-\RAPPEQlargeur) -- cycle ;
+			\def\cliptmp{\fpeval{min(0.25,0.0571*\RAPPEQlargeur)}}
+			\clip (0,-\RAPPEQlargeur)--++(135:\cliptmp)--++(\RAPPEQlargeur,\RAPPEQlargeur)--++(-45:\cliptmp)--cycle ;
+			\foreach \i in {5,10,...,85} 
+				{\draw[\RAPPEQcouleur] ({\RAPPEQlargeur/(1+tan(\i))},{-\RAPPEQlargeur*tan(\i)/(1+tan(\i))}) --++ ({180-\i}:{abs(-0.5*\i/90+0.25)+0.25}) ;}
+		\end{scope}
+		\begin{scope}
+			\clip (-\RAPPEQlargeur,0) -- (\RAPPEQlargeur,0) -- (0,-\RAPPEQlargeur) -- cycle ;
+			\def\cliptmp{\fpeval{min(0.15,0.0571*\RAPPEQlargeur)}}
+			\clip (0,-\RAPPEQlargeur)--++(45:\cliptmp)--++(-\RAPPEQlargeur,\RAPPEQlargeur)--++(-135:\cliptmp)--cycle ;
+			\foreach \i in {1,2,...,89} 
+				{\draw[\RAPPEQcouleur] ({-\RAPPEQlargeur/(1+tan(\i))},{-\RAPPEQlargeur*tan(\i)/(1+tan(\i))}) --++ ({\i}:{abs(-0.3*\i/90+0.15)+0.15}) ;}
+		\end{scope}
+		\begin{scope}
+			\clip (-\RAPPEQlargeur,0) -- (\RAPPEQlargeur,0) -- (0,-\RAPPEQlargeur) -- cycle ;
+			\def\cliptmp{\fpeval{min(0.25,0.0571*\RAPPEQlargeur)}}
+			\clip (0,-\RAPPEQlargeur)--++(45:\cliptmp)--++(-\RAPPEQlargeur,\RAPPEQlargeur)--++(-135:\cliptmp)--cycle ;
+			\foreach \i in {5,10,...,85} 
+				{\draw[\RAPPEQcouleur] ({-\RAPPEQlargeur/(1+tan(\i))},{-\RAPPEQlargeur*tan(\i)/(1+tan(\i))}) --++ ({\i}:{abs(-0.5*\i/90+0.25)+0.25}) ;}
+		\end{scope}
+	\end{scope}
+}
+
+%--------Compas
+% inspiration(s) de https://tex.stackexchange.com/questions/147389/symbols-of-pencil-ruler-and-compass
+% Angle entre l'horizontale et 2 noeuds (#1 & #2), résultat dans \MonAngleTmp
+\newcommand{\NodeTmpAngle}[2]{%
+	\pgfmathanglebetweenpoints%
+	{\pgfpointanchor{#1}{center}}%
+	{\pgfpointanchor{#2}{center}}%
+	\global\let\MonAngleTmp\pgfmathresult%
+}
+% Distance entre 2 noeuds (#1 & #2), résultat dans \MaLongueurTmp
+\makeatletter
+\newcommand{\NodeTmpDist}[2]{%
+	\pgfpointdiff{\pgfpointanchor{#1}{center}}{\pgfpointanchor{#2}{center}}%
+	\pgf at xa=\pgf at x
+	\pgf at ya=\pgf at y
+	% to convert from pt to cm   
+	\pgfmathparse{veclen(\pgf at xa,\pgf at ya)/28.45274}%
+	\global\let\MaLongueurTmp\pgfmathresult%
+}
+\makeatother
+% Récupération de l'unité x (cf https://tex.stackexchange.com/questions/424785/tikz-get-current-unit-length-of-x-coordinate)
+\def\recupunitexencm{
+	\path let \p{x}=(1,0), \n{xlencm}={scalar(veclen(\x{x},\y{x})/1cm)}
+	in \pgfextra{\xdef\TmpUniteX{\n{xlencm}}};
+}
+
+\defKV[CompasGeom]{%
+	Echelle=\def\COMPASechelle{#1},%
+	EchelleCrayon=\def\COMPASechellecrayon{#1},%
+	LongueurBranches=\def\COMPASLLB{#1},%
+	LongueurCrayon=\def\COMPASLLC{#1},%
+	CouleurCompas=\def\COMPAScouleur{#1},%
+	CouleurCrayon=\def\COMPAScouleurcrayon{#1},%
+	UniteTikz=\def\COMPASunittikz{#1}
+}
+
+\setKVdefault[CompasGeom]{%
+	Echelle=1,%
+	EchelleCrayon=1,%
+	LongueurBranches=6,%
+	LongueurCrayon=5,%
+	CouleurCrayon=red,%
+	CouleurCompas=gray,%
+	UniteTikz=\TmpUniteX,%
+	AfficheCrayon=true,%
+	Retourne=false
+}
+
+\NewDocumentCommand{\tkzCompas}{ s O{} m m }{%étoilée en gardant la distance entre extrémités
+	\IfBooleanTF{#1}{}{\NodeTmpDist{#3}{#4}}%
+	\useKVdefault[CompasGeom]%
+	\setKV[CompasGeom]{#2}%
+	%calculs intermédiaires
+	\recupunitexencm
+	\NodeTmpAngle{#3}{#4}%
+	\pgfmathsetmacro{\AngleCP}{asin(\MaLongueurTmp/(\COMPASunittikz*\COMPASechelle*2*\COMPASLLB))}
+	%retour aux affaires
+	\ifboolKV[CompasGeom]{Retourne}
+	{\def\CoeffYscale{-1}}{\def\CoeffYscale{1}}
+	\begin{scope}[shift=(#3),scale=\COMPASechelle]
+		\begin{scope}[join=round,rotate=\MonAngleTmp,yscale=\CoeffYscale,shift=(270-\AngleCP:-\COMPASLLB)]
+			% branche pointe sèche
+			\draw[rotate=-\AngleCP,fill=\COMPAScouleur!80] (0,0)--(0,-\COMPASLLB)--(-.2,-\COMPASLLB+.8)--(-.2,0)--cycle ;
+			\draw[rotate=-\AngleCP,fill=\COMPAScouleur!05] (0,-\COMPASLLB+.8)--(0,-\COMPASLLB)--(-.2,-\COMPASLLB+.8)--cycle ;
+			% branche crayon
+			\draw[rotate=\AngleCP,fill=\COMPAScouleur!80] (0,0)--(0,-\COMPASLLB)--(.2,-\COMPASLLB+.8)--(.2,0)--cycle ;
+			\begin{scope}[rotate=\AngleCP,shift={(0,-\COMPASLLB)}]
+				\ifboolKV[CompasGeom]{AfficheCrayon}
+					{\tkzCrayon[Echelle={\COMPASechellecrayon*0.75},Longueur={\COMPASLLC/0.75},Rotation=-15,Couleur=\COMPAScouleurcrayon]}{}
+				\draw[fill=gray!25] (\COMPASLLB/30,\COMPASLLB/5) circle (\COMPASLLB/36) ;
+				\fill[\COMPAScouleur!5] (\COMPASLLB/30,\COMPASLLB/5) -- ++(30:\COMPASLLB/36) arc (30:45:\COMPASLLB/36) -- cycle ;
+				\fill[\COMPAScouleur!5] (\COMPASLLB/30,\COMPASLLB/5) -- ++(210:\COMPASLLB/36) arc (210:225:\COMPASLLB/36) ;
+				\draw (\COMPASLLB/30,\COMPASLLB/5) circle (\COMPASLLB/36) ;
+				\filldraw (\COMPASLLB/30,\COMPASLLB/5) circle (.02) ;
+			\end{scope}
+			% haut du compas
+			\draw[fill=\COMPAScouleur!80] (-.1,0) rectangle (.1,.85) ;
+			\draw[fill=gray!25] (0,0) circle (.25) ;
+			\fill[gray!5] (0,0) -- (30:.25) arc (30:45:.25) -- cycle ;
+			\fill[gray!5,rotate=180] (0,0) -- (30:.25) arc (30:45:.25) -- cycle ;
+			\draw (0,0) circle (.25) ;
+			\filldraw (0,0) circle (.05) ;
+		\end{scope}
+	\end{scope}
+}
+
+%--------MiniÉquerre
+\defKV[MiniEquerreGeom]{%
+	Echelle=\def\MiniEQechelle{#1},%
+	Couleur=\def\MiniEQcouleur{#1},%
+	Origine=\def\MiniEQposOrigin{#1},%
+	Rotation=\def\MiniEQangle{#1}
+}
+
+\setKVdefault[MiniEquerreGeom]{%
+	Echelle=1,%
+	Couleur=black,%
+	Origine={(0,0)},%
+	Rotation=0,%
+	Ombre=true
+}
+
+\NewDocumentCommand{\tkzMiniEquerre}{ O{} }{%
+	\useKVdefault[MiniEquerreGeom]%
+	\setKV[MiniEquerreGeom]{#1}%
+	\begin{scope}[shift={(\MiniEQposOrigin)},rotate=\MiniEQangle,scale=\MiniEQechelle]
+		\ifboolKV[MiniEquerreGeom]{Ombre}%
+			{%
+			\begin{scope}
+				\clip (0,0)--(1,0)--(0,1.8)--cycle;
+				\filldraw[draw=none,fill=\MiniEQcouleur!10] (0,0) rectangle (1,2.5pt);
+				\filldraw[draw=none,fill=\MiniEQcouleur!10] (0,0) rectangle (2.5pt,2);
+				\end{scope}
+			}{}%
+		\draw[semithick,\MiniEQcouleur] (0,0)--(1,0)--(0,1.8)--cycle;
+		\draw[semithick,\MiniEQcouleur] (0.2,0.2)--(0.65,0.2)--(0.2,1)--cycle;
+		\foreach \x in {0,0.1,...,1} {\draw[\MiniEQcouleur] (\x,0)--++(0,1.5pt) ;}
+		\foreach \x in {0,0.5} {\draw[\MiniEQcouleur] (\x,0)--++(0,2pt) ;}
+		\foreach \y in {0,0.1,...,1.7} {\draw[\MiniEQcouleur] (0,\y)--++(1.5pt,0) ;}
+		\foreach \y in {0,0.5,1,1.5} {\draw[\MiniEQcouleur] (0,\y)--++(2pt,0) ;}
+	\end{scope}
+}
+
+%--------MiniRègle
+\defKV[MiniRegleGeom]{%
+	Echelle=\def\MiniREGLechelle{#1},%
+	Couleur=\def\MiniREGLcouleur{#1},%
+	Origine=\def\MiniREGLposOrigin{#1},%
+	Rotation=\def\MiniREGLangle{#1}
+}
+
+\setKVdefault[MiniRegleGeom]{%
+	Echelle=1,%
+	Couleur=black,%
+	Origine={(0,0)},%
+	Rotation=0,%
+	Ombre=true
+}
+
+\NewDocumentCommand{\tkzMiniRegle}{ O{} }{%
+	\useKVdefault[MiniRegleGeom]%
+	\setKV[MiniRegleGeom]{#1}%
+	\begin{scope}[shift={(\MiniREGLposOrigin)},rotate=\MiniREGLangle,scale=\MiniREGLechelle]
+		\ifboolKV[MiniRegleGeom]{Ombre}%
+			{\filldraw[draw=none,fill=\MiniREGLcouleur!10] (0,0) rectangle (2,-2.5pt) ;}{}%
+		\draw[semithick,\MiniREGLcouleur] (0,0)--(2,0)--(2,-0.3)--(0,-0.3)--cycle ;
+		\draw[semithick,\MiniREGLcouleur] (0.35,-0.185) circle[radius=0.05] ;
+		\foreach \y in {0,0.1,...,2} {\draw[\MiniREGLcouleur] (\y,0)--++(0,-1.5pt) ;}
+		\foreach \y in {0,0.5,...,2} {\draw[\MiniREGLcouleur] (\y,0)--++(0,-2pt) ;}
+	\end{scope}
+}
+
+\endinput
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/latex/outilsgeomtikz/OutilsGeomTikz.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/tlpkg/bin/tlpkg-ctan-check
===================================================================
--- trunk/Master/tlpkg/bin/tlpkg-ctan-check	2023-03-05 20:39:16 UTC (rev 66359)
+++ trunk/Master/tlpkg/bin/tlpkg-ctan-check	2023-03-05 20:47:29 UTC (rev 66360)
@@ -605,7 +605,7 @@
     orcidlink ordinalpt orientation orkhun
     oscola oswald ot-tableau othello othelloboard
     oubraces oup-authoring-template
-    outerhbox outline outliner outlines outlining
+    outerhbox outilsgeomtikz outline outliner outlines outlining
     overarrows overlays overlock overpic
   pacioli padauk padcount
     pagecolor pagecont pagegrid pagelayout

Modified: trunk/Master/tlpkg/libexec/ctan2tds
===================================================================
--- trunk/Master/tlpkg/libexec/ctan2tds	2023-03-05 20:39:16 UTC (rev 66359)
+++ trunk/Master/tlpkg/libexec/ctan2tds	2023-03-05 20:47:29 UTC (rev 66360)
@@ -1747,6 +1747,7 @@
  'numericplots'         => '&POSTnumericplots',
  'nwejm'		=> '&POSTnwejm',
  'optex'		=> '&POSToptex',
+ 'outilsgeomtikz'	=> '&POST_onelevel',
  'pagelayout'           => '&POSTpagelayout',
  'pas-cv'               => '&POSTpas_vc',
  'pbibtex-base'		=> '&POSTpbibtex_base',

Modified: trunk/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc	2023-03-05 20:39:16 UTC (rev 66359)
+++ trunk/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc	2023-03-05 20:47:29 UTC (rev 66360)
@@ -100,6 +100,7 @@
 depend nl-interval
 depend nndraw
 depend numericplots
+depend outilsgeomtikz
 depend pb-diagram
 depend penrose
 depend petri-nets

Added: trunk/Master/tlpkg/tlpsrc/outilsgeomtikz.tlpsrc
===================================================================


More information about the tex-live-commits mailing list.