diff options
-rw-r--r-- | Master/texmf-dist/doc/latex/tikz3d-fr/README.md | 7 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/tikz3d-fr/tikz3d-fr-doc.pdf | bin | 0 -> 603790 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/tikz3d-fr/tikz3d-fr-doc.tex | 752 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/tikz3d-fr/tikz3d-fr.sty | 314 | ||||
-rwxr-xr-x | Master/tlpkg/bin/tlpkg-ctan-check | 2 | ||||
-rwxr-xr-x | Master/tlpkg/libexec/ctan2tds | 1 | ||||
-rw-r--r-- | Master/tlpkg/tlpsrc/collection-pictures.tlpsrc | 3 | ||||
-rw-r--r-- | Master/tlpkg/tlpsrc/tikz3d-fr.tlpsrc | 0 |
8 files changed, 1077 insertions, 2 deletions
diff --git a/Master/texmf-dist/doc/latex/tikz3d-fr/README.md b/Master/texmf-dist/doc/latex/tikz3d-fr/README.md new file mode 100644 index 00000000000..ec6bbebd6ff --- /dev/null +++ b/Master/texmf-dist/doc/latex/tikz3d-fr/README.md @@ -0,0 +1,7 @@ +tikz3d-fr is a package to work with some 3D figures. +---------------------------------------------------------- +tikz3d-fr est un package pour travailler un peu en tikz3d. +---------------------------------------------------------- +Author : Cédric Pierquet +email : cpierquet@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 diff --git a/Master/texmf-dist/doc/latex/tikz3d-fr/tikz3d-fr-doc.pdf b/Master/texmf-dist/doc/latex/tikz3d-fr/tikz3d-fr-doc.pdf Binary files differnew file mode 100644 index 00000000000..9566efab5bf --- /dev/null +++ b/Master/texmf-dist/doc/latex/tikz3d-fr/tikz3d-fr-doc.pdf diff --git a/Master/texmf-dist/doc/latex/tikz3d-fr/tikz3d-fr-doc.tex b/Master/texmf-dist/doc/latex/tikz3d-fr/tikz3d-fr-doc.tex new file mode 100644 index 00000000000..548d68c2199 --- /dev/null +++ b/Master/texmf-dist/doc/latex/tikz3d-fr/tikz3d-fr-doc.tex @@ -0,0 +1,752 @@ +% !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.0} +\def\TPdate{02 Mai 2023} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{amsmath,amssymb} +\usepackage{tikz3d-fr} +\usepackage{awesomebox} +\usepackage{fontawesome5} +\usepackage{footnote} +\makesavenoteenv{tabular} +\usepackage{enumitem} +\usepackage{tabularray} +\usepackage{fancyvrb} +\usepackage{fancyhdr} +\fancyhf{} +\renewcommand{\headrulewidth}{0pt} +\lfoot{\sffamily\small [tikz3d-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} +\usetikzlibrary{calc} +\tcbuselibrary{minted} +\NewTCBListing{PresCodeTex}{ O{cyan} m }{% + enhanced,width=0.93\linewidth,flush right,boxrule=0.75pt,colframe=#1!85!black,% + sharp corners,top=0mm,bottom=0mm,left=0.4em,right=5mm,% + before skip=\baselineskip,after skip=\baselineskip,% + colback=white, + fontupper=\footnotesize,fontlower=\footnotesize,% + watermark text={\faCode},watermark opacity=0.25,watermark zoom=0.50,% + title={{\scriptsize\faCode} Code \LaTeX}, + lefttitle=0.4em, + fonttitle=\bfseries\footnotesize\sffamily,colbacktitle=darkgray!50!#1,% + listing engine=minted,minted style=colorful,minted language=tex, + minted options={tabsize=4,fontsize=\footnotesize,autogobble,breaklines=true}, + #2,% + overlay={\draw[#1!85!black] ($(frame.north west)+(-0.035\linewidth,-0.025\linewidth)$) node[scale=1.66] {\faCode} ;} +} + +\NewTCBListing{PresCode}{ O{cyan} m }{% + enhanced,width=0.93\linewidth,flush right,boxrule=0.75pt,colframe=#1!85!black,% + sharp corners,top=0mm,bottom=0mm,left=0.4em,right=5mm,% + before skip=\baselineskip,after skip=\baselineskip,% + colback=white, + fontupper=\footnotesize,fontlower=\footnotesize,% + watermark text={\faCogs},watermark opacity=0.25,watermark zoom=0.50,% + title={{\scriptsize\faCogs} Code \LaTeX{} et sortie \LaTeX}, + lefttitle=0.4em, + fonttitle=\bfseries\footnotesize\sffamily,colbacktitle=darkgray!50!#1,% + listing engine=minted,minted style=colorful,minted language=tex, + minted options={tabsize=4,fontsize=\footnotesize,autogobble,breaklines=true}, + #2,% + overlay={% + \draw[#1!85!black] ($(frame.north west)+(-0.035\linewidth,-0.025\linewidth)$) node[scale=1.66] {\faCode} ; + \draw[#1!85!black] ($(segmentation.west)+(-0.035\linewidth,-0.025\linewidth)$) node[scale=1.66] {\faFilePdf} ; + + } +} + +\NewTCBListing{PresCodeSortie}{ O{cyan} m }{% + enhanced,width=0.93\linewidth,flush right,boxrule=0.75pt,colframe=#1!85!black,% + sharp corners,top=0mm,bottom=0mm,left=0.4em,right=5mm,% + before skip=\baselineskip,after skip=\baselineskip,% + colback=white, + fontupper=\footnotesize,fontlower=\footnotesize,% + watermark text={\faFilePdf},watermark opacity=0.25,watermark zoom=0.50,% + title={{\scriptsize\faFilePdf} Sortie \LaTeX}, + lefttitle=0.4em, + fonttitle=\bfseries\footnotesize\sffamily,colbacktitle=darkgray!50!#1,% + listing engine=minted,minted style=colorful,minted language=tex, + minted options={tabsize=4,fontsize=\footnotesize,autogobble,breaklines=true}, + #2,% + overlay={\draw[#1!85!black] ($(frame.north west)+(-0.035\linewidth,-0.025\linewidth)$) node[scale=1.66] {\faFilePdf} ;} +} + +\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=4,fontsize=\small,autogobble}, + #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=purple!25,% + overlay={\begin{tcbclipinterior}% + \fill[fill=purple!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} + +\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{tikz3d-fr}}\\ + \\ + {\LARGE Quelques commandes (fr) pour} \\ + \\ + {\LARGE un peu de 3D 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/tikz3dfr}} +\end{tabular} +\end{center} + +\vspace{0.25cm} + +{$\blacktriangleright$~~Un environnement avec déclaration des unités.} + +\smallskip + +{$\blacktriangleright$~~Une commande pour afficher un pavé, avec personnalisations.} + +\smallskip + +{$\blacktriangleright$~~Deux commandes pour afficher des empilements de \og petits cubes \fg.} + +\vspace{1cm} + +\begin{center} + \begin{tcolorbox}[enhanced,colframe=cyan,colback=cyan!2,center,width=0.95\linewidth,drop fuzzy shadow=lightgray] + \begin{EnvTikzEspace} + \PaveTikzTriDim[Cube,Largeur=2.5,AffLabel,Couleur=blue!50!black,CouleurSommets=red] + \end{EnvTikzEspace} + + \vspace*{-2cm} + + \hfill\BlocPetitsCubes[violet]{1,2,3,4,5 / 0,2,1,1,3 / 0,2,1,1,2 / 1,1,1,1,1}\hfill~ + + \vspace*{-2cm} + + \hfill + \begin{EmpilementCubes} + \PlaquePetitsCubes[cyan/red/green/yellow]{ 3111-1-4 / 233123 / 2-1112 } + \PlaquePetitsCubes[cyan/red]{ 111 / -21 } + \PlaquePetitsCubes[cyan/red/green]{ 3-2 } + \end{EmpilementCubes} + \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.0|~:~~~~Version initiale. + +\newpage + +\part{Introduction} + +\section{Le package tikz3d-fr} + +\subsection{Introduction} + +\begin{noteblock} +Le package propose des commandes basiques -- francisées -- pour travailler sur des figures simples en 3D, à l'aide de \TikZ{} en utilisant des coordonnées tridimensionnelles : + +\begin{itemize} + \item un environnement avec gestion des unités $x/y/z$ ; + \item une commande pour tracer et personnaliser un cube ; + \item des commandes pour créer/afficher/nommer des points de l'espace ; + \item des commandes pour tracer un ou plusieurs segments ; + \item des commandes et un environnement pour travailler sur des \textit{empilements} de cubes. +\end{itemize} +\vspace*{-\baselineskip}\leavevmode +\end{noteblock} + +\begin{importantblock} +Il existe d'autres solutions pour travailler avec de la 3D en \LaTeX, comme par exemple les packages \textsf{ProfCollege}\footnotemark\footnotetext{\url{https://www.ctan.org/pkg/profcollege}} (de Christophe Poulain, qui utilise \hologo{MetaPost}, et qui est certainement beaucoup plus performant) ou \textsf{pst-ob3d}\footnotemark\footnotetext{\url{https://www.ctan.org/pkg/pst-ob3d}} (de Herbert Voß et Denis Girou, qui utilise \pstricks). + +\smallskip + +L'idée est de proposer une utilisation des capacités (natives) 3D de \TikZ, en proposant des commandes \textit{simplifiées} et \textit{francisées} pour des figures simples (tétraèdres, cubes, pyramides, pavés) utilisées fréquemment dans des exercices de géométrie dans l'espace dans l'enseignement secondaires en France. +\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é avec des options spécifiques. +\end{importantblock} + +\begin{PresCodeTex}{listing only} +\usepackage{tikz3d-fr} +\end{PresCodeTex} + +\begin{noteblock} +\textsf{tikz3d-fr} charge les packages suivantes : + +\begin{itemize} + \item \texttt{tikz}, \texttt{xstring}, \texttt{xintexpr}, \texttt{simplekv} et \texttt{xinttools} et \texttt{listofitems} ; + \item les librairies \texttt{\textit{tikz}.calc} et \texttt{\textit{tikz}.babel}. +\end{itemize} + +Il est compatible avec les compilations usuelles en \textsf{latex}, \textsf{pdflatex}, \textsf{lualatex} ou \textsf{xelatex}. +\end{noteblock} + +\vfill~ + +\pagebreak + +\part{Environnement 3D et commandes de base} + +\section{Création de l'environnement} + +\subsection{Commande} + +\begin{cautionblock} +L'environnement dédié à la création de figures en 3D avec \TikZ{} est \texttt{EnvTikzEspace}. + +Il permet de définir les unités et \textit{angles} des différents axes. +\end{cautionblock} + +\begin{PresCodeTex}{listing only} +\begin{EnvTikzEspace}[Clés]<options tikz> + %commandes +\end{EnvTikzEspace} +\end{PresCodeTex} + +\subsection{Clés et options} + +\begin{tipblock} +Le premier argument, optionnel et entre \texttt{[...]} propose les \Cle{clés} suivantes : + +\begin{itemize} + \item \Cle{UniteX}, à donner sous la forme \Cle{\{angle\string:longueur\}} pour le vecteur de base $\vec{\imath}$ ; + + \hfill{}défaut : \Cle{\{-15\string:1cm\}},% + \item \Cle{UniteY}, à donner sous la forme \Cle{\{angle\string:longueur\}} pour le vecteur de base $\vec{\jmath}$ ; + + \hfill{}défaut : \Cle{\{20\string:0.65cm\}} + \item \Cle{UniteZ}, à donner sous la forme \Cle{\{angle\string:longueur\}} pour le vecteur de base $\vec{k}$ ; + + \hfill{}défaut : \Cle{\{90\string:1cm\}} + \item Le booléen \Cle{VueClassique} pour un affichage en perspective habituelle.\hfill~défaut : \Cle{false} +\end{itemize} +\vspace*{-\baselineskip}\leavevmode +\end{tipblock} + +\begin{tipblock} +Le second argument, optionnel et entre \texttt{<...>} est quant à lui relatif à des arguments à passer à l'environnement \TikZ{} créé, comme par exemple un alignement vertical, etc +\end{tipblock} + +\begin{PresCode}{} +\begin{EnvTikzEspace} + \draw[->,>=latex] (0,0,0)--(1,0,0) node[right] {$\vec{\imath}$} ; + \draw[->,>=latex] (0,0,0)--(0,1,0) node[right] {$\vec{\jmath}$} ; + \draw[->,>=latex] (0,0,0)--(0,0,1) node[above] {$\vec{k}$} ; +\end{EnvTikzEspace} +\end{PresCode} + +\begin{PresCode}{} +\begin{EnvTikzEspace}[UniteX={-145:1.25cm},UniteY={0:1.75cm},UniteZ={90:1.75cm}] + \draw[->,>=latex] (0,0,0)--(1,0,0) node[right] {$\vec{\imath}$} ; + \draw[->,>=latex] (0,0,0)--(0,1,0) node[right] {$\vec{\jmath}$} ; + \draw[->,>=latex] (0,0,0)--(0,0,1) node[above] {$\vec{k}$} ; +\end{EnvTikzEspace} +\end{PresCode} + +\begin{PresCode}{} +\begin{EnvTikzEspace}[VueClassique] + \draw[->,>=latex] (0,0,0)--(1,0,0) node[right] {$\vec{\imath}$} ; + \draw[->,>=latex] (0,0,0)--(0,1,0) node[right] {$\vec{\jmath}$} ; + \draw[->,>=latex] (0,0,0)--(0,0,1) node[above] {$\vec{k}$} ; +\end{EnvTikzEspace} +\end{PresCode} + +\begin{noteblock} +Une fois l'environnement, via son \textit{repère}, est créé, toute commande en \TikZ{} est utilisable avec les coordonnées \texttt{(x,y,z)} ou bien les \texttt{scope} avec les \texttt{canva}. +\end{noteblock} + +\begin{PresCode}{} +\begin{EnvTikzEspace}[UniteX={-145:0.575cm},UniteY={0:0.7cm},UniteZ={90:0.7cm}] + \filldraw[red] (2,4,3) circle[radius=1pt] ; \draw[red] (0,0,0) -- (2,4,3) ; + \draw[thin,->,>=latex] (0,0,0)--(3,0,0) ; + \draw[thin,->,>=latex] (0,0,0)--(0,5,0) ; + \draw[thin,->,>=latex] (0,0,0)--(0,0,4) ; + \draw[->,>=latex] (0,0,0)--(1,0,0) ; + \draw[->,>=latex] (0,0,0)--(0,1,0) ; + \draw[->,>=latex] (0,0,0)--(0,0,1) ; + \draw[dashed] (0,0,3)--(2,4,3)--(2,4,0)--(0,0,0) (2,4,0)--(2,0,0) (2,4,0)--(0,4,0) ; +\end{EnvTikzEspace} +\end{PresCode} + +\pagebreak + +\section{Points et segments} + +\subsection{Commandes} + +\begin{cautionblock} +Les commandes \textit{simplifiées} et \textit{francisées} disponible sont : + +\begin{itemize} + \item \texttt{\textbackslash PlacePointEspace} pour placer un point dans l'espace ; + \item \texttt{\textbackslash PlacePointsEspace} pour placer des points dans l'espace ; + \item \texttt{\textbackslash MarquePointEspace} pour marquer (matérialiser) un point dans l'espace ; + \item \texttt{\textbackslash MarquePointsEspace} pour marquer (matérialiser) un point dans l'espace ; + \item \texttt{\textbackslash TraceSegmentEspace} pour tracer un segment dans l'espace ; + \item \texttt{\textbackslash TraceSegmentsEspace} pour tracer des segments dans l'espace. +\end{itemize} +\vspace*{-\baselineskip}\leavevmode +\end{cautionblock} + +\begin{PresCodeTex}{listing only} +\begin{EnvTikzEspace}[Clés]<options tikz> + %créer/placer/nommer un point + \PlacePointEspace(*)[clés]{nœud}{coordonnées}<label> + %créer/placer/nommer plusieurs points + \PlacePointsEspace(*)[clés]{liste} + %marquer un point + \MarquePointEspace[clés]{point} + %marquer plusieurs points + \MarquePointsEspace[clés]{liste} + %tracer un segment + \TraceSegmentEspace[clés](point)(point) + %tracer plusieurs segments + \TraceSegmentsEspace[clés]{liste} +\end{EnvTikzEspace} +\end{PresCodeTex} + +\subsection{Clés, options et arguments} + +\begin{tipblock} +Les versions étoilées désactivent l'affichage des labels des points. + +\smallskip + +L'argument optionnel et entre \texttt{[...]} propose les \Cle{clés} suivantes (communes ou spécifiques) : + +\begin{itemize} + \item \Cle{PosLabel} pour préciser la position (francisée) du label pour les points ; \hfill{}défaut : \Cle{b} + \item \Cle{StyleMarque} parmi \Cle{x/o} pour spécifier le style de la marque des points ; + + \hfill{}défaut : \Cle{o} + \item \Cle{TailleMarque} pour spécifier la taille de la marque des points (disque ou croix) ; + + \hfill{}défaut : \Cle{2pt} + \item \Cle{Couleur} pour paramétrer la couleur.\hfill{}défaut : \Cle{black} +\end{itemize} +\vspace*{-\baselineskip}\leavevmode +\end{tipblock} + +\begin{tipblock} +Les positions pour les labels des points sont \textit{francisées} : + +\begin{itemize} + \item \Cle{b} : \texttt{bas} + \item \Cle{h} : \texttt{haut} + \item \Cle{g} : \texttt{gauche} + \item \Cle{d} : \texttt{droite} + \item \Cle{hg} : \texttt{haut gauche} + \item \ldots +\end{itemize} +\vspace*{-\baselineskip}\leavevmode +\end{tipblock} + +\begin{tipblock} +De manière un peu plus spécifique : + +\begin{itemize} + \item le \texttt{<label>} pour la commande \texttt{\textbackslash PlacePointEspace} est optionnel, et est identique à \texttt{\{nœud\}} ; + \item la \texttt{\{liste\}} pour la commande \texttt{\textbackslash PlacePointsEspace} est à donner -- par exemple -- sous la forme \texttt{A/0,0,0/bg B/5,2,1/hd} ; + \item la \texttt{\{liste\}} pour la commande \texttt{\textbackslash TraceSegmentsEspace} est à donner -- par exemple -- sous la forme \texttt{A/B A/C A/D B/D} ; + \item les \texttt{[clés]} pour les segments correspondent aux options en langage \TikZ. +\end{itemize} +\vspace*{-\baselineskip}\leavevmode +\end{tipblock} + +\begin{PresCode}{} +\begin{EnvTikzEspace}[VueClassique] + %placement des points avec labels + \PlacePointsEspace[Couleur=red]{A/0,0,0/bg B/4,0,0/bd C/4,4,0/hd D/0,4,0/hg E/0,0,4/bg F/4,0,4/bd G/4,4,4/hd H/0,4,4/hg} + %segments pointillés + \TraceSegmentsEspace[thick,dashed,purple]{A/D D/C D/H} + %segments pleins + \TraceSegmentsEspace[thick,blue]{A/B B/C C/G G/H H/E E/A E/F B/F F/G} + %Marques points + \MarquePointsEspace[Couleur=orange]{A,B,C,D,E,F,G,H} +\end{EnvTikzEspace} +\end{PresCode} + +\pagebreak + +\section{Pavés} + +\subsection{Commandes} + +\begin{cautionblock} +Les commandes \textit{simplifiée} et \textit{francisé} pour afficher un pavé (ou un cube !) est la commande \texttt{\textbackslash PaveTikzTriDim}. +\end{cautionblock} + +\begin{PresCodeTex}{listing only} +\begin{EnvTikzEspace}[Clés]<options tikz> + \PaveTikzTriDim[clés] +\end{EnvTikzEspace} +\end{PresCodeTex} + +\begin{PresCode}{} +\begin{EnvTikzEspace}[VueClassique] + \PaveTikzTriDim +\end{EnvTikzEspace} +\hspace{1cm} +\begin{EnvTikzEspace} + \PaveTikzTriDim +\end{EnvTikzEspace} +\end{PresCode} + +\subsection{Clés et options} + +\begin{tipblock} +Quelques \Cle{clés} sont disponibles pour cette commande : + +\begin{itemize} + \item \Cle{Largeur} : largeur du pavé ;\hfill{}défaut \Cle{2} + \item \Cle{Profondeur} : profondeur du pavé ;\hfill{}défaut \Cle{1} + \item \Cle{Hauteur} : hauteur du pavé ;\hfill{}défaut \Cle{1.25} + \item \Cle{Sommets} : liste des sommets (avec délimiteur § !) ;\hfill{}défaut \Cle{A§B§C§D§E§F§G§H} + \item \Cle{Math} : booléen pour forcer le mode math des sommets ;\hfill{}défaut \Cle{false} + \item \Cle{Epaisseur} : épaisseur des arêtes (en \textit{langage simplifié} \TikZ) ;\hfill{}défaut \Cle{thick} + \item \Cle{AffLabel} : booléen pour afficher les noms des sommets ;\hfill{}défaut \Cle{false} + \item \Cle{Plein} : booléen pour ne pas afficher les arêtes \textit{invisibles} ;\hfill{}défaut \Cle{false} + \item \Cle{Cube} : booléen pour préciser qu'il s'agit d'un cube (seule \Cle{Largeur} est util(isé)e) ; + + \hfill{}défaut \Cle{false} + \item \Cle{Couleur} : couleur des arêtes ; \hfill{}défaut \Cle{black} + + \item \Cle{CouleurSommets} : couleur des sommets.\hfill{}défaut \Cle{black} +\end{itemize} +\vspace*{-\baselineskip}\leavevmode +\end{tipblock} + +\pagebreak + +\begin{PresCode}{} +\begin{EnvTikzEspace} + \PaveTikzTriDim[Cube,Largeur=3,Couleur=red,CouleurSommets=blue,AffLabel] +\end{EnvTikzEspace} +\end{PresCode} + +\begin{PresCode}{} +\begin{EnvTikzEspace}[VueClassique]<scale=2> + \PaveTikzTriDim[Largeur=3,Profondeur=4,Hauteur=2,Plein,Couleur=gray,AffLabel, CouleurSommets=gray] +\end{EnvTikzEspace} +\end{PresCode} + +\newpage + +\part{Empilements de cubes} + +\section{Environnement dédié} + +\begin{cautionblock} +L'environnement dédié à la création de figures type \textit{empilement de cubes} est\ldots{} \texttt{EmpilementCubes}. + +Il existe deux manières de définir les empilements : + +\begin{itemize} + \item en travaillant par \textit{plaques} verticales de l'arrière vers l'avant ; + \item en travaillant par les \textit{hauteurs} des colonnes, de l'arrière vers l'avant \textbf{et} de gauche à droite. +\end{itemize} + +L'unité de base des cubes est fixée au départ à $0{,}5$\,cm. +\end{cautionblock} + +\begin{importantblock} +Les axes (et de ce fait la vue proposée !) sont fixés, non modifiables, donc cette partie est beaucoup moins performante que ce propose le package \textsf{ProfCollege} avec sa commande \texttt{\textbackslash VueCubes} ! +\end{importantblock} + +\begin{PresCodeTex}{listing only} +\begin{EmpilementCubes}[échelle]<options tikz> + %commandes +\end{EmpilementCubes} +\end{PresCodeTex} + +\section{Création par \textit{plaques}} + +\subsection{Commandes} + +\begin{cautionblock} +La commande pour créer une plaque \textit{verticale} est \texttt{\textbackslash PlaquePetitsCubes}, avec la contrainte de créer la \textit{figure} de l'arrière vers l'avant. + +Il existe également la commande \texttt{\textbackslash PlaqueVide} pour \textit{passer} une ligne. +\end{cautionblock} + +\begin{PresCodeTex}{listing only} +\begin{EmpilementCubes}[échelle]<options tikz> + \PlaquePetitsCubes[couleur(s)]{empilement} + \PlaqueVide[nb] +\end{EmpilementCubes} +\end{PresCodeTex} + +\begin{importantblock} +Les plaques créées sont affichées l'une \textit{devant} l'autre, et elles sont -- par défaut -- collées les unes aux autres. +\end{importantblock} + +\subsection{Options et arguments} + +\begin{tipblock} +Le premier argument, optionnel et entre \texttt{[...]} permet de spécifier une couleur (\texttt{cyan} par défaut) ou une liste de couleurs qui seront utilisées pour la création des plaques : + +\begin{itemize} + \item soit une couleur unique, qui sera \textit{codée} par \texttt{1} pour la création des cubes ; + \item soit plusieurs couleurs, sous la forme \texttt{couleur1/couleur2/couleur3/...} qui seront codées par \texttt{1}, \texttt{2}, \ldots{} pour la création des cubes. +\end{itemize} + +Le second argument, obligatoire et entre \texttt{\{...\}} est quant à lui la liste, des lignes à construire, avec comme ordres : + +\begin{itemize} + \item du bas vers le haut (caractère de séparation \texttt{/}) ; + \item de la gauche vers la droite (caractère de séparation \texttt{,}) ; + \item un \texttt{-} code un \textit{trou}, et un numéro code une couleur (comme définie(s) précédemment). +\end{itemize} + +Cette manière permet de créer des plaques avec couleurs \textit{individuelles} et des \textit{trous} éventuels. +\end{tipblock} + +\begin{PresCode}{} +\begin{EmpilementCubes} + %plaque + %de bas en haut : couleurs VBRB-B-J / RVVBRV / J-BBBR + \PlaquePetitsCubes[cyan/red/green/yellow]{ 3121-1-4 / 233123 / 4-1112 } +\end{EmpilementCubes} +\end{PresCode} + +\begin{PresCode}{} +\begin{EmpilementCubes} + %plaque n°1 (fond) + \PlaquePetitsCubes{ 1111 / 1111 } + \PlaqueVide[2] + %plaque n°2 + \PlaquePetitsCubes[cyan/red]{ 111- / -211 } + \PlaqueVide[2] + %plaque n°3 (devant) + \PlaquePetitsCubes{ 1111 / ---1 } +\end{EmpilementCubes} +\end{PresCode} + +\begin{PresCode}{} +\begin{EmpilementCubes} + %plaque n°1 (fond) + \PlaquePetitsCubes{ 1111 / 1111 } + %plaque n°2 + \PlaquePetitsCubes[cyan/red]{ 111- / -211 } + %plaque n°3 (devant) + \PlaquePetitsCubes{ 1111 / ---1 } +\end{EmpilementCubes} +\end{PresCode} + + +\begin{PresCode}{} +\begin{EmpilementCubes}[1.75] + \PlaquePetitsCubes[cyan/red/green/yellow]{ 3111-1-4 / 233123 / 2-1112 } + \PlaquePetitsCubes[cyan/red]{ 111 / -21 } + \PlaquePetitsCubes[cyan/red/green]{ 3-2 } +\end{EmpilementCubes} +\end{PresCode} + +\pagebreak + +\section{Création par \textit{hauteurs}} + +\subsection{Commande} + +\begin{tipblock} +L'idée, reprise du package \textsf{ProfCollege}\footnotemark\footnotetext{\url{https://www.ctan.org/pkg/profcollege}} permet d'afficher une empilement de cubes (monochromes, et sans trou) en précisant -- grâce à un système de \textit{grille} -- les hauteurs des colonnes. + +La commande qui permet de réaliser cet empilement est \texttt{\textbackslash BlocPetitsCubes}. +\end{tipblock} + +\begin{PresCodeTex}{listing only} +%création dans un environnement dédié +\begin{EmpilementCubes}[échelle]<options tikz> + \BlocPetitsCubes*[couleur]{grille des hauteurs} +\end{EmpilementCubes} +\end{PresCodeTex} + +\begin{PresCodeTex}{listing only} +%création autonome +\BlocPetitsCubes[couleur]{grille des hauteurs} +\end{PresCodeTex} + +\begin{cautionblock} +Le support de la grille des hauteurs est donc à donner sous forme \textit{rectangulaire}, en respectant un nombre \textit{homogène} de colonnes par ligne ! +\end{cautionblock} + +\begin{importantblock} +Voici une grille permettant d’anticiper la création d'un assemblage (en spécifiant les hauteurs) : + +\begin{center} + \begin{EnvTikzEspace}[UniteX={-22:1cm},UniteY={22:1cm}] + \foreach \x in {0,...,4} {\draw[semithick] (\x,-0.2,0)--++(0,5.4,0) ;} + \foreach \y in {0,...,5} {\draw[semithick] (-0.2,\y,0)--++(4.4,0,0) ;} + \foreach \y/\n in {0.5/1,1.5/2,2.5/3,3.5/4,4.5/5} + {\draw (0.5,\y,0) node[font=\small\sffamily] {\n} ;} + \foreach \y/\n in {0.5/0,1.5/2,2.5/1,3.5/1,4.5/3} + {\draw (1.5,\y,0) node[font=\small\sffamily] {\n} ;} + \foreach \y/\n in {0.5/0,1.5/2,2.5/1,3.5/1,4.5/2} + {\draw (2.5,\y,0) node[font=\small\sffamily] {\n} ;} + \foreach \y/\n in {0.5/1,1.5/1,2.5/1,3.5/1,4.5/1} + {\draw (3.5,\y,0) node[font=\small\sffamily] {\n} ;} + \end{EnvTikzEspace} +\end{center} +\end{importantblock} + +\subsection{Options et arguments} + +\begin{tipblock} +Le premier argument, optionnel et entre \texttt{[...]} permet de spécifier une couleur (\texttt{cyan} par défaut). + +Le second argument, obligatoire et entre \texttt{\{...\}} est quant à lui la liste des hauteurs, comme présentée précédemment : + +\begin{itemize} + \item le caractère de séparation des \textit{plaques} est le \texttt{/} ; + \item pour chaque plaque, le caractère de séparation des colonnes est le \texttt{,}. +\end{itemize} +\vspace*{-\baselineskip}\leavevmode +\end{tipblock} + +\begin{importantblock} +Par exemple, la \textit{grille} associée à l'empilement précédent est : + +\smallskip + +\hfill\texttt{1,2,3,4,5 / 0,2,1,1,3 / 0,2,1,1,2 / 1,1,1,1,1}\hfill~ +\end{importantblock} + +\vfill~ + +\begin{PresCode}{} +\begin{EmpilementCubes} + \BlocPetitsCubes*{1,2,3,4,5} +\end{EmpilementCubes} +\end{PresCode} + +\begin{PresCode}{} +%commande autonome, taille par défaut +\BlocPetitsCubes{1,2,3,4,5 / 0,2,1,1,3 / 0,2,1,1,2 / 1,1,1,1,1} +\end{PresCode} + +\begin{PresCode}{} +\begin{EmpilementCubes}[2] + \BlocPetitsCubes*[violet]{1,2,3,4,5 / 0,2,1,1,3 / 0,2,1,1,2 / 1,1,1,1,1} +\end{EmpilementCubes} +\end{PresCode} + +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tikz3d-fr/tikz3d-fr.sty b/Master/texmf-dist/tex/latex/tikz3d-fr/tikz3d-fr.sty new file mode 100644 index 00000000000..b1c028fc155 --- /dev/null +++ b/Master/texmf-dist/tex/latex/tikz3d-fr/tikz3d-fr.sty @@ -0,0 +1,314 @@ +% 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{tikz3d-fr}[2023/05/02 0.1.0 Aide pour l'utilisation de TikZ 3D] +%0.1.0 Version initiale + +%------Packages utiles +\RequirePackage{tikz} +\RequirePackage{xstring} +\RequirePackage{simplekv} +\RequirePackage{xinttools} +\RequirePackage{xintexpr} +\RequirePackage{listofitems} +%------Librairies tikz +\usetikzlibrary{calc} +\usetikzlibrary{babel} + +%%------Param3D pour l'environnement +\defKV[paramstridim]{% + UniteX=\xdef\PLTriDimUx{#1},% + UniteY=\xdef\PLTriDimUy{#1},% + UniteZ=\xdef\PLTriDimUz{#1} +} +\setKVdefault[paramstridim]{% + UniteX={-15:1cm},% + UniteY={20:0.65cm},% + UniteZ={90:1cm},% + VueClassique=false +} + +\NewDocumentEnvironment{EnvTikzEspace}{ O{} D<>{} }%1=clés,2=paramtikz(comme line join... scale...) +{ + \useKVdefault[paramstridim]% + \setKV[paramstridim]{#1}% + \ifboolKV[paramstridim]{VueClassique} + {% + \xdef\PLTriDimUx{0:1cm}% + \xdef\PLTriDimUy{30:0.5cm}% + \xdef\PLTriDimUz{90:1cm}% + }{}% + \begin{tikzpicture}[x={(\PLTriDimUx)},y={(\PLTriDimUy)},z={(\PLTriDimUz)},#2] +} +{ + \end{tikzpicture} +} + +%%------PaveDroitTikZ +\defKV[paramspavetridim]{% + Largeur=\xdef\PFPaveLgDDD{#1},% + Profondeur=\xdef\PFPavePfDDD{#1},% + Hauteur=\xdef\PFPaveHtDDD{#1},% + Sommets=\def\PFPaveSommetsDDD{#1},% + Epaisseur=\xdef\PFPaveThickDDD{#1},% + Couleur=\xdef\PFPaveCouleurDDD{#1},% + CouleurSommets=\xdef\PFPaveCouleurSommDDD{#1} +} +\setKVdefault[paramspavetridim]{% + AffLabel=false,% + Plein=false,% + Largeur=2,% + Profondeur=1,% + Hauteur=1.25,% + Epaisseur=thick,% + Sommets=A§B§C§D§E§F§G§H,% + Cube=false,% + Math=false,% + Couleur=black,% + CouleurSommets=black +} + + +\newcommand\PaveTikzTriDim[1][]{% + \useKVdefault[paramspavetridim]% + \setKV[paramspavetridim]{#1}% + \ifboolKV[paramspavetridim]{Cube} + {% + \xdef\PFPavePfDDD{\PFPaveLgDDD}% + \xdef\PFPaveHtDDD{\PFPaveLgDDD}% + }{} + \setsepchar{§}% + \readlist*\PFListeSommets\PFPaveSommetsDDD + \itemtomacro\PFListeSommets[1]\PaveA + \itemtomacro\PFListeSommets[2]\PaveB + \itemtomacro\PFListeSommets[3]\PaveC + \itemtomacro\PFListeSommets[4]\PaveD + \itemtomacro\PFListeSommets[5]\PaveE + \itemtomacro\PFListeSommets[6]\PaveF + \itemtomacro\PFListeSommets[7]\PaveG + \itemtomacro\PFListeSommets[8]\PaveH + %les nœuds du pave + \coordinate (\PaveA) at (0,0,0) ; + \coordinate (\PaveB) at ({\PFPaveLgDDD},0,0) ; + \coordinate (\PaveC) at ({\PFPaveLgDDD},{\PFPavePfDDD},0) ; + \coordinate (\PaveD) at (0,{\PFPavePfDDD},0) ; + \coordinate (\PaveE) at (0,0,{\PFPaveHtDDD}) ; + \coordinate (\PaveF) at ({\PFPaveLgDDD},0,{\PFPaveHtDDD}) ; + \coordinate (\PaveG) at ({\PFPaveLgDDD},{\PFPavePfDDD},{\PFPaveHtDDD}) ; + \coordinate (\PaveH) at (0,{\PFPavePfDDD},{\PFPaveHtDDD}) ; + \ifboolKV[paramspavetridim]{AffLabel} + {% + \draw (\PaveA) node[below left,\PFPaveCouleurSommDDD] {\ifboolKV[paramspavetridim]{Math}{$\PaveA$}{\PaveA}} ; + \draw (\PaveB) node[below right,\PFPaveCouleurSommDDD] {\ifboolKV[paramspavetridim]{Math}{$\PaveB$}{\PaveB}} ; + \draw (\PaveC) node[above right,\PFPaveCouleurSommDDD] {\ifboolKV[paramspavetridim]{Math}{$\PaveC$}{\PaveC}} ; + \ifboolKV[paramspavetridim]{Plein} + {} + {% + \draw (\PaveD) node[above left,\PFPaveCouleurSommDDD] {\ifboolKV[paramspavetridim]{Math}{$\PaveD$}{\PaveD}} ; + }% + \draw (\PaveE) node[below left,\PFPaveCouleurSommDDD] {\ifboolKV[paramspavetridim]{Math}{$\PaveE$}{\PaveE}} ; + \draw (\PaveF) node[below right,\PFPaveCouleurSommDDD] {\ifboolKV[paramspavetridim]{Math}{$\PaveF$}{\PaveF}} ; + \draw (\PaveG) node[above right,\PFPaveCouleurSommDDD] {\ifboolKV[paramspavetridim]{Math}{$\PaveG$}{\PaveG}} ; + \draw (\PaveH) node[above left,\PFPaveCouleurSommDDD] {\ifboolKV[paramspavetridim]{Math}{$\PaveH$}{\PaveH}} ;% + }% + {}%on affiche rien + \ifboolKV[paramspavetridim]{Plein} + {} + {% + \draw[\PFPaveCouleurDDD,dashed,\PFPaveThickDDD,line join=bevel] (\PaveA)--(\PaveD)--(\PaveC) (\PaveD)--(\PaveH) ;% + }% + \draw[\PFPaveCouleurDDD,\PFPaveThickDDD,line join=bevel] (\PaveE)--(\PaveF)--(\PaveG)--(\PaveH)--cycle ; + \draw[\PFPaveCouleurDDD,\PFPaveThickDDD,line join=bevel] (\PaveE)--(\PaveA)--(\PaveB)--(\PaveF)--cycle ; + \draw[\PFPaveCouleurDDD,\PFPaveThickDDD,line join=bevel] (\PaveC)--(\PaveG)--(\PaveF)--(\PaveB)--cycle ; +} + +%%------Commandes internes pour les nœuds et points +\NewDocumentCommand\TransfPosTikz{ m }{%défaut below + \def\PosTmpLabel{below} + \IfEq{#1}{b}{\def\PosTmpLabel{below}}{} + \IfEq{#1}{d}{\def\PosTmpLabel{right}}{} + \IfEq{#1}{h}{\def\PosTmpLabel{above}}{} + \IfEq{#1}{g}{\def\PosTmpLabel{left}}{} + \IfEq{#1}{bg}{\def\PosTmpLabel{below left}}{} + \IfEq{#1}{bd}{\def\PosTmpLabel{below right}}{} + \IfEq{#1}{hg}{\def\PosTmpLabel{above left}}{} + \IfEq{#1}{hd}{\def\PosTmpLabel{above right}}{} +} +\tikzset{pics/croix/.style args={#1/#2}{ + code={ + \draw[line width={0.5*#1},rotate=#2] (-#1,0) -- (#1,0); + \draw[line width={0.5*#1},rotate=#2] (0,-#1) -- (0, #1); + } + }, + pics/croix/.default={2pt/0} +} + +%%------Créer/Placer/Nommer Point(s) 3d +\defKV[TkzTriDimPoint]{% + PosLabel=\xdef\TrimDimLabel{#1},% + DecalLabel=\xdef\TrimDimDecalLabel{#1},% + StyleMarque=\xdef\TrimDimStylePt{#1},% + TailleMarque=\xdef\TrimDimtaillePt{#1},% + Couleur=\xdef\TrimDimCoul{#1} +} + +\setKVdefault[TkzTriDimPoint]{% + PosLabel={b},% + DecalLabel=1pt,% + StyleMarque=o,% + TailleMarque=2pt,% + Couleur=black +} + +\NewDocumentCommand\PlacePointEspace{ s O{} m m D<>{#3} }{% + %*=label + %2=clés + %3=nom nœud + %4=coordonnées x,y,z + %5=label si différent + \useKVdefault[TkzTriDimPoint]% + \setKV[TkzTriDimPoint]{#2}% + \TransfPosTikz{\TrimDimLabel} + \coordinate (#3) at (#4) ; + \IfBooleanTF{#1}%on désactive le label avec (*) + {}% + {\draw (#3) node[\TrimDimCoul,\PosTmpLabel=\TrimDimDecalLabel] {#5} ;}% +} + +\NewDocumentCommand\PlacePointsEspace{ s O{} m }{% + %*=labels off + %2=clés + %3=liste nom/coordonnées/pos + \useKVdefault[TkzTriDimPoint]% + \setKV[TkzTriDimPoint]{#2}% + \setsepchar[.]{ ./}% + \readlist*\ListePtsEspace{#3} + \foreach \i in {1,2,...,\ListePtsEspacelen} + {% + \IfBooleanTF{#1}%on désactive le label avec (*) + {% + \PlacePointEspace*[#2]{\ListePtsEspace[\i,1]}{\ListePtsEspace[\i,2]} + }% + {% + \PlacePointEspace[#2,PosLabel={\ListePtsEspace[\i,3]}]{\ListePtsEspace[\i,1]}{\ListePtsEspace[\i,2]} + }% + }% +} + +\NewDocumentCommand\MarquePointEspace{ O{} m }{% + %1=clés + %2=nom nœud + \useKVdefault[TkzTriDimPoint]% + \setKV[TkzTriDimPoint]{#1}% + \IfStrEq{\TrimDimStylePt}{o}% + {\filldraw[\TrimDimCoul] (#2) circle[radius=\TrimDimtaillePt] ;}{}% + \IfStrEq{\TrimDimStylePt}{x}% + {\draw[\TrimDimCoul] (#2) pic{croix=\TrimDimtaillePt/45} ;}{}% +} + +\NewDocumentCommand\MarquePointsEspace{ O{} m }{% + %1=clés + %2=liste nom/coordonnées/pos + \useKVdefault[TkzTriDimPoint]% + \setKV[TkzTriDimPoint]{#1}% + \foreach \i in {#2} + {% + \MarquePointEspace[#1]{\i} + }% +} + +%%------Créer Segment(s) 3d +\NewDocumentCommand\TraceSegmentEspace{ O{} r() r() }{%1=optionstikz,2=A,3=B + \draw[#1] (#2)--(#3) ; +} + +\NewDocumentCommand\TraceSegmentsEspace{ O{} m }{%1=optionstikz,2=liste A/B C/D + \setsepchar[.]{ ./}% + \readlist*\ListePtsEspace{#2} + \foreach \i in {1,2,...,\ListePtsEspacelen} + {\draw[#1] (\ListePtsEspace[\i,1])--(\ListePtsEspace[\i,2]) ;} +} + +%--Petits Cubes +%%------EmpilementCubes +\NewDocumentEnvironment{EmpilementCubes}{ O{1} D<>{} }% +{ + \begin{tikzpicture}[x={(-160:0.5cm)},y={(-25:0.45cm)},z={(90:0.5cm)},scale=#1,#2] +} +{ + \end{tikzpicture} +} + +\NewDocumentCommand\PetitCube{ O{cyan} m }{% + \StrBefore[1]{#2}{,}[\xtmp]% + \StrBetween[1,2]{#2}{,}{,}[\ytmp]% + \StrBehind[2]{#2}{,}[\ztmp]% + \draw[fill=#1!70,very thin,line join=bevel] ({\xtmp+1},\ytmp,\ztmp)--++(0,1,0)--++(0,0,-1)--++(0,-1,0)--cycle; + \draw[fill=#1!80,very thin,line join=bevel] (\xtmp,{\ytmp+1},\ztmp)--++(1,0,0)--++(0,0,-1)--++(-1,0,0)--cycle; + \draw[fill=#1!35!white,very thin,line join=bevel] (\xtmp,\ytmp,\ztmp)--++(1,0,0)--++(0,1,0)--++(-1,0,0)--cycle; +} + +\newcounter{lgblocs}%compteur des lignes, qui sera incrémenté +\NewDocumentCommand\PlaqueVide{ O{1} }{\addtocounter{lgblocs}{#1}}%passer une plaque +\NewDocumentCommand\PlaquePetitsCubes{ O{cyan} m }{%poser un cube (attention à l'ordre) + \setsepchar[.]{/} + %lecture des couleurs + \readlist*\ListeCouleurs{#1} + %code + \readlist*\ListeTraitee{#2} + \def\hauteur{\ListeTraiteelen} + \addtocounter{lgblocs}{1} + \def\y{\thelgblocs} + \foreach \i in {1,...,\ListeTraiteelen}% + {% + %on stocke la ligne à afficher en hauteur + \itemtomacro\ListeTraitee[\i]{\lignetmp} + %on stocke le nombre de colonnes à afficher + \StrLen{\lignetmp}[\colonnetmp] + \foreach \j in {\colonnetmp,...,1}% + {% + \StrChar{\lignetmp}{\j}[\elementtmp] + \IfStrEq{\elementtmp}{-}% + {}% + {% + \itemtomacro\ListeCouleurs[\elementtmp]{\elementcouleur} + \PetitCube[\elementcouleur]{-\j,\y,\i} + }% + }% + }% +} + +\NewDocumentCommand\BlocPetitsCubes{ s O{cyan} m }{% + %*pour autonome + %2=couleur unique + %3=liste des hauteurs (attention à l'ordre) + \setsepchar[.]{/.,} + \readlist*\ListeTraitee{#3} + \def\Largeur{\ListeTraiteelen} + %on lit la Profondeur + \itemtomacro\ListeTraitee[1]{\ListeTMP} + \setsepchar{,} + \readlist*\ListeTraiteeB{\ListeTMP} + \def\Profondeur{\ListeTraiteeBlen} + \IfBooleanTF{#1} + {} + {\begin{EnvTikzEspace}[UniteX={-160:0.5cm},UniteY={-25:0.45cm},UniteZ={90:0.5cm}]} + %Placement des cubes + \foreach \y in {1,...,\Largeur}% + {% + \foreach \x in {\Profondeur,...,1} + {% + \itemtomacro\ListeTraitee[\y,\x]{\Hauteur} + \xintifboolexpr{\Hauteur == 0}% + {}% + {% + \foreach \z in {1,...,\Hauteur}{\PetitCube[#2]{-\x,\y,\z}} + }% + }% + }% + \IfBooleanTF{#1} + {} + {\end{EnvTikzEspace}} +}
\ No newline at end of file diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check index 3067ec9b9bb..bfcf6a2b675 100755 --- a/Master/tlpkg/bin/tlpkg-ctan-check +++ b/Master/tlpkg/bin/tlpkg-ctan-check @@ -812,7 +812,7 @@ my @TLP_working = qw( threadcol threeddice threeparttable threeparttablex thuaslogos thubeamer thucoursework thumb thumbpdf thumbs thumby thuthesis ticket ticollege tidyres - tikz-3dplot tikz-among-us tikz-bagua tikz-bayesnet tikz-bbox + tikz3d-fr tikz-3dplot tikz-among-us tikz-bagua tikz-bayesnet tikz-bbox tikz-cd tikz-dependency tikz-dimline tikz-ext tikz-feynhand tikz-feynman tikz-imagelabels tikz-inet tikz-kalender tikz-karnaugh tikz-ladder tikz-lake-fig tikz-layers diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds index d5fd1f161ac..42e73b67a70 100755 --- a/Master/tlpkg/libexec/ctan2tds +++ b/Master/tlpkg/libexec/ctan2tds @@ -1804,6 +1804,7 @@ chomp (my $ctan_root = `tlpkginfo --ctan-root`); 'texdraw' => '&POSTtexdraw', 'tex-ps' => '&POSTtex_ps', 'thumbpdf' => '&POST_preserve_man', + 'tikz3d-fr' => '&POST_onelevel', 'tikz-cd' => '&POSTtikz_cd', 'tikz-ext' => '&POSTtikz_ext', 'tipa-de' => '&POST_rmsymlink', diff --git a/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc b/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc index b2c8ffc1fd7..ef47e63adf1 100644 --- a/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc @@ -154,8 +154,8 @@ depend scratch3 depend scsnowman depend setdeck depend signchart -depend simpleoptics depend simplenodes +depend simpleoptics depend smartdiagram depend spath3 depend spectralsequences @@ -199,6 +199,7 @@ depend tikz-swigs depend tikz-timing depend tikz-trackschematic depend tikz-truchet +depend tikz3d-fr depend tikzbricks depend tikzcodeblocks depend tikzducks diff --git a/Master/tlpkg/tlpsrc/tikz3d-fr.tlpsrc b/Master/tlpkg/tlpsrc/tikz3d-fr.tlpsrc new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/Master/tlpkg/tlpsrc/tikz3d-fr.tlpsrc |