% !TeX TXS-program:compile = txs:///arara % arara: pdflatex: {shell: yes, synctex: no, interaction: batchmode} % arara: pdflatex: {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.1} \def\TPdate{28 Mai 2023} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{amsmath,amssymb} \usepackage{tikz2d-fr} \usepackage{tkz-euclide} \usepackage{awesomebox} \usepackage{fontawesome5} \usepackage{footnote} \makesavenoteenv{tabular} \usepackage{enumitem} \usepackage{tabularray} \usepackage{fancyvrb} \usepackage{fancyhdr} \fancyhf{} \renewcommand{\headrulewidth}{0pt} \lfoot{\sffamily\small [tikz2d-fr]} \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=\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{babel} \AddThinSpaceBeforeFootnotes \FrenchFootnotes \usepackage[most]{tcolorbox} \tcbuselibrary{listings} \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={\draw,node,\coordinate,tikz3d-fr},% keywordstyle={\color{violet}},% classoffset=2,% alsoletter={-},% morekeywords={\TracerSegments,\DefinirPoints,\DefinirPoint,\MarquerPoint,\MarquerPoints,mainlevee,\ImagePoint,\ImagesPoints},% keywordstyle={\color{green!50!black}},% classoffset=3,% morekeywords={Cap,Style,Couleurs,Cycle,Join,line,cap,line,join,Suite,Couleurs,DecalLabel,StyleMarque,Couleur,Math,TaillePolice},% 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àJ}}}}} ($(interior.north west)+(5pt,0pt)$);% \end{tcbclipinterior}} } } \newcommand\Cle[1]{{\bfseries\sffamily\textlangle #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{tikz2d-fr}}\\ \\ {\LARGE Quelques commandes simplifiées (fr)} \\ \\ {\LARGE pour utiliser avec \TikZ.} \\ \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/tikz2dfr}} \end{tabular} \end{center} \vspace{0.25cm} {$\blacktriangleright$~~Définir des points par coordonnées.} \smallskip {$\blacktriangleright$~~Définir des points par transformations simples.} \smallskip {$\blacktriangleright$~~Tracer des segments, avec option(s) de couleurs.} \smallskip {$\blacktriangleright$~~Marquer des points.} \vspace{1cm} \begin{center} \begin{tcolorbox}[enhanced,colframe=cyan,colback=cyan!2,center,width=0.95\linewidth,drop fuzzy shadow=lightgray] \hfill \begin{tikzpicture} \DefinirPoints[Couleur=violet,DecalLabel=0pt]{A/0,0/b B/4,0/b C/3,2/h} \TracerSegments[Suite,Cycle,Couleurs=red,Join=bevel]{A B C} \end{tikzpicture} \hspace{1cm} \begin{tikzpicture} \DefinirPoints[DecalLabel=1pt]{A/0,0/bg B/4,0/bd C/3,2/h} \TracerSegments[Suite,Cycle,Couleurs={red,blue,green}]{A B C} \MarquerPoints[StyleMarque=x]{A}\MarquerPoints[StyleMarque=+]{B}\MarquerPoints{C} \end{tikzpicture} \hfill~ \vspace{1cm} \hfill~ \begin{tikzpicture} \DefinirPoints*{A_1/0:2/ A_2/45:2/ A_3/90:2/ A_4/135:2/ A_5/180:2/ A_6/225:2/ A_7/270:2/ A_8/315:2/} \TracerSegments[Suite,Cycle,Couleurs={red,blue,green,yellow,orange,pink,gray,violet}]{A_1 A_2 A_3 A_4 A_5 A_6 A_7 A_8} \TracerSegments[]{A_1/A_5 A_2/A_6 A_3/A_7 A_4/A_8} \end{tikzpicture} \hfill~ \end{tcolorbox} \end{center} \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.1|~:~~~~Ajout d'une clé \Cle{[TaillePolice]} + Points définis par une transformation simple. \verb|v0.1.0|~:~~~~Version initiale. \newpage \part{Introduction} \section{Le package tikz2d-fr} \subsection{Introduction} \begin{noteblock} Le package propose des commandes basiques -- francisées -- pour travailler sur des figures simples en 2D, à l'aide de \TikZ{} avec : \begin{itemize} \item de quoi simuler un tracé à \textit{main levée} ; \item de quoi définir des points (et donc des nœuds) via \textsf{nom/coordonnées/positionlabel} ; \item \cmaj{0.1.1} de quoi définir des points images par des transformations simples ; \item de marquer des points (croix, disques) ; \item de quoi tracer des segments (enchaînés ou non) en spécifiant les couleurs éventuelles. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{noteblock} \begin{importantblock} On peut voir ce modeste package comme un \textit{maigre} complément à \TikZ{} et \textsf{tkz-euclide}\footnotemark\footnotetext{\url{https://ctan.org/pkg/tkz-euclide}} qui permet de faire énormément de choses en géométrie euclidienne. \smallskip Ainsi, les éventuel points (nœuds) créés par \textsf{tikz2d-fr} seront réutilisables dans toute commande classique de \TikZ{} ou de \textsf{tkz-euclide}. \smallskip On peut donc \textit{utiliser} le package \textsf{tikz2d-fr} comme \textit{base} de travail avant des choses plus poussées ! \end{importantblock} \subsection{Autres solutions} \begin{importantblock} À noter qu'il existe d'autres solutions graphiques, comme : \begin{itemize} \item \textsf{\PSTricks} avec \textsf{pst-eucl}\footnotemark\footnotetext{\url{https://www.ctan.org/pkg/pst-eucl}} ; \item \hologo{MetaPost} avec \textsf{ProfCollege} et son environnement \texttt{geometrie}\footnotemark\footnotetext{\url{https://www.ctan.org/pkg/profcollege}}. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{importantblock} \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 \texttt{xcolor} n'est pas chargé. \end{importantblock} \begin{DemoCode}[listing only] \documentclass{article} \usepackage{tikz2d-fr} \end{DemoCode} \begin{noteblock} \textsf{tikz2d-fr} charge les packages suivantes : \begin{itemize} \item \texttt{tikz}, \texttt{xstring}, \texttt{simplekv}, \texttt{xintexpr} et \texttt{listofitems} ; \item les librairies \texttt{\textit{tikz}.decorations} et \texttt{\textit{tikz}.decorations.pathmorphing}. \end{itemize} Il est compatible avec les compilations usuelles en \textsf{latex}, \textsf{pdflatex}, \textsf{lualatex} ou \textsf{xelatex}. \end{noteblock} \vfill~ \pagebreak \part{Styles et commandes} \section{Tracé à main levée} \subsection{Idée} \begin{tipblock} L'idée est de \textit{proposer} un style \textit{tout prêt} pour simuler un tracé, en \TikZ, à \og main levée \fg. Il s'agit d'un style \textit{basique} utilisant la librairie \textsf{decorations} avec \textsf{random steps}. \end{tipblock} \begin{DemoCode}[listing only] \tikzset{% mainlevee/.style args={#1et#2}{% decorate,decoration={random steps, segment length=#1,amplitude=#2}}, mainlevee/.default={5mm et 0.6pt} } \end{DemoCode} \subsection{Utilisation basique} \begin{cautionblock} Il s'agit ni plus ni moins d'un style \TikZ{} à intégrer dans les tracés et constructions \TikZ ! \smallskip Pour ce style, deux paramètres peuvent être précisés via \Cle{mainlevee=\#1 et \#2} : \begin{itemize} \item \Cle{\#1} correspond à l'option \textsf{segment length} (longueur des segments \textit{types}) ; \hfill{}défaut \Cle{5mm} \item \Cle{\#2} correspond à l'option \textsf{amplitude} (amplitude maximale de la \textit{déformation}). \hfill{}défaut \Cle{0.6pt} \end{itemize} Les valeurs \Cle{mainlevee=5mm et 0.6pt} donnent des résultats -- à mon sens -- satisfaisants, mais l'utilisateur pourra modifier à loisir ces paramètres ! \end{cautionblock} \begin{DemoCode}[listing only] %la grille a été rajoutée pour la sortie \begin{tikzpicture} \draw[thick,mainlevee] (0,0) rectangle (4,4) ; \end{tikzpicture} \begin{tikzpicture} \draw[thick,mainlevee=5mm et 2pt] (0,0) rectangle (4,4) ; \end{tikzpicture} \begin{tikzpicture} \draw[thick,mainlevee=10mm et 3mm] (0,0) rectangle (4,4) ; \end{tikzpicture} \end{DemoCode} \begin{DemoCode}[text only] \hfill~\begin{tikzpicture} \draw[xstep=0.5,ystep=0.5,ultra thin,lightgray] (0,0) grid (4,4); \draw[thick,mainlevee] (0,0) rectangle (4,4) ; \end{tikzpicture} \hspace{1cm} \begin{tikzpicture} \draw[xstep=0.5,ystep=0.5,ultra thin,lightgray] (0,0) grid (4,4); \draw[thick,mainlevee=5mm et 2pt] (0,0) rectangle (4,4) ; \end{tikzpicture} \hspace{1cm} \begin{tikzpicture} \draw[xstep=0.5,ystep=0.5,ultra thin,lightgray] (0,0) grid (4,4); \draw[thick,mainlevee=10mm et 3mm] (0,0) rectangle (4,4) ; \end{tikzpicture} \hfill~ \end{DemoCode} \pagebreak \section{Définir des points par coordonnées} \subsection{Commandes} \begin{cautionblock} Les commandes \textit{simplifiées} et \textit{francisées} disponibles sont : \begin{itemize} \item \texttt{\textbackslash DefinirPoint} pour définir un point ; \item \texttt{\textbackslash DefinirPoints} pour définir des points ; \item \texttt{\textbackslash MarquerPoint} pour marquer (matérialiser) un point ; \item \texttt{\textbackslash MarquerPoints} pour marquer (matérialiser) des points. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{DemoCode}[listing only] \begin{tikzpicture}[options tikz] %créer/placer/nommer un point \DefinirPoint(*)[clés]{noeud}{coordonnées}