summaryrefslogtreecommitdiff
path: root/graphics/pgf/contrib
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/pgf/contrib')
-rw-r--r--graphics/pgf/contrib/playcards/README.md11
-rw-r--r--graphics/pgf/contrib/playcards/playcards-en.pdfbin304943 -> 275684 bytes
-rw-r--r--graphics/pgf/contrib/playcards/playcards-en.tex48
-rw-r--r--graphics/pgf/contrib/playcards/playcards-fr.pdfbin323724 -> 294369 bytes
-rw-r--r--graphics/pgf/contrib/playcards/playcards-fr.tex32
-rw-r--r--graphics/pgf/contrib/playcards/playcards.sty20
-rw-r--r--graphics/pgf/contrib/tikz3d-fr/README.md7
-rw-r--r--graphics/pgf/contrib/tikz3d-fr/doc/tikz3d-fr-doc.pdfbin0 -> 603790 bytes
-rw-r--r--graphics/pgf/contrib/tikz3d-fr/doc/tikz3d-fr-doc.tex752
-rw-r--r--graphics/pgf/contrib/tikz3d-fr/tex/tikz3d-fr.sty314
10 files changed, 1140 insertions, 44 deletions
diff --git a/graphics/pgf/contrib/playcards/README.md b/graphics/pgf/contrib/playcards/README.md
index 958a6ea032..0452118cae 100644
--- a/graphics/pgf/contrib/playcards/README.md
+++ b/graphics/pgf/contrib/playcards/README.md
@@ -1,11 +1,10 @@
# Playcards package
Tiny LaTeX package to draw playcards.
## Version
-0.1, 2023/04/29
+0.2, 2023/05/02
## Licence
GNU LGPL v3.0 https://www.gnu.org/licenses/lgpl-3.0.html
-
-
-Author : Clément PAGÈS
-Maintainer: Clément PAGÈS
-E-mail : contact -- arobase -- clementpages point fr
+## Contact
+- Author : Clément PAGÈS
+- Maintainer: Clément PAGÈS
+- E-mail : contact -- arobase -- clementpages point fr
diff --git a/graphics/pgf/contrib/playcards/playcards-en.pdf b/graphics/pgf/contrib/playcards/playcards-en.pdf
index 9c95df3a27..81bbfeef9f 100644
--- a/graphics/pgf/contrib/playcards/playcards-en.pdf
+++ b/graphics/pgf/contrib/playcards/playcards-en.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/playcards/playcards-en.tex b/graphics/pgf/contrib/playcards/playcards-en.tex
index 60ab32903b..00ffe905d6 100644
--- a/graphics/pgf/contrib/playcards/playcards-en.tex
+++ b/graphics/pgf/contrib/playcards/playcards-en.tex
@@ -27,51 +27,59 @@
\begin{document}
\maketitle
-This small package provides commands to draw playcards, with witdh 59 mm and height 89 mm, which are typicall cards dimensions.
+This small package provides commands to draw playcards, with width 59 mm and height 89 mm, which are typicall cards dimensions.
\tableofcontents
\section*{Thanks}
-Thanks to Christophe Poulain for his amazing \href{https://ctan.org/pkg/profcollege}{ProfCollege} package, which source code was useful to design syntax commands we use here. And more generally, thank you you for this amazing package!
+Thanks to Christophe Poulain for his amazing \href{https://ctan.org/pkg/profcollege}{ProfCollege} package, which source code was useful to design syntax commands we use here. And more generally, thank you for this amazing package!
-Also thanks to \href{https://tex.stackexchange.com/users/1948/didest}{didest} who asked a question on \href{https://tex.stackexchange.com/questions/47924/creating-playing-cards-using-tikz}{StackExchange}. I used it to built this package.
+Also thanks to \href{https://tex.stackexchange.com/users/1948/didest}{didest} who asked a question on \href{https://tex.stackexchange.com/questions/47924/creating-playing-cards-using-tikz}{StackExchange}. I used it to build this package.
\section{Download, installation, requirements}
+ \subsection{Automatically loaded packages}
+Package available on CTAN : \href{https://ctan.org/pkg/playcards}{https://ctan.org/pkg/playcards}. It contains one single file: \texttt{playcards.sty}.
-Package available on CTAN. It contains one single file : \texttt{playcards.sty}.
-
-Some package are automatically loaded. They are installed by default on most configurations :
+Some packages are automatically loaded. They are installed by default on most configurations:
\begin{description}
\item[\package{tikz}] and some libraries.
- \item[\package{simplekv}] dot manage optional parameters whit a \kv{key}{value} system.
+ \item[\package{simplekv}] to manage optional parameters with a \kv{key}{value} system.
\item[\package{graphicx}] for pictures.
\item[\package{contour}] for text shadows and borders.
- \item[\package{geometry}] configured to draw 9 cards on an A4 paper.
\end{description}
+
+ \subsection{Recommended packages, not automatically loaded}
+To draw cards one by one, there are nos constraints on margins an paper format.
+
+To get a full page of identical cards, paper has to be A4 format and command \commande{usepackage[scale=0.95]\{geometry\}} is required in preamble.
+
\section{Generalities}
-Commands are based on a key/value system, with model \texttt{\textbackslash command[\kv{key1}{value1}, \kv{key2}{value2}, …,]\{param1\}\{param2\}}.
+Commands are based on a key/value system, with model \texttt{\textbackslash command[\kv{key1}{value1}, \kv{key2}{value2}, …]\{param1\}\{param2\}}.
-All the keys are optional and if one does not fill them, they get a default value.
+All keys are optional and if one does not fill them, they get a default value.
All length are given in millimeters.
\section{Provided commands}
+ \subsection{Package options}
+By default, font for text on cards is the same as document's. You can pass in option the parameter \texttt{anttor} so that cards font will be \href{https://tug.org/FontCatalogue/antykwatorunska/}{Antykwa Toruńska}.
+
\subsection{\commande{drawcardsrecto} command}
This command has one required parameter : text written in the center of the card. It fills an A4 paper with 9 identical cards. This command only draws front side of the card. There is an example figure \ref{fig:recto}.
\begin{figure}[h]\begin{center}
\caption{\commande{drawcardsrecto[trame=false]\{5\}}}
- \includegraphics{screen01.png}\label{fig:recto}
+ \includegraphics{fig01.pdf}\label{fig:recto}
\end{center}\end{figure}
Optional parameters:
\begin{itemize}
\item \key{borders}{true}{Removes borders.}
- \item \key{trame}{true}{If \texttt{true}, fills an A4 paper with cards.. Si \texttt{false}, draws one only card.}
- \item \key{corners}{true}{If \texttt{true}, card contends is reproduced in corners. If \texttt{false}, it is not.}
- \item \key{backgroundImg}{true}{Si \texttt{true}, prints background. If \texttt{false}, no background.}
- \item \key{backgroundColor}{red}{Specifies background color. Ignored if \texttt{backgroundImg=false}. Uses colored defined in the \href{https://www.ctan.org/pkg/xcolor}{xcolor} package.}
- \item \key{contentsFontSize}{120}{Font size (int pt) of text in card center.}
- \item \key{cicleRay}{20}{Ray of the white circle the center of the card. Value \texttt 0 means no circle.}
+ \item \key{trame}{true}{If \texttt{true}, fills an A4 paper with cards. If \texttt{false}, draws one only card. To work properly, \texttt{trame=true} requires A4 paper and \commande{usepackage[scale=0.95]\{geometry\}} in preamble.}
+ \item \key{corners}{true}{If \texttt{true}, card's contents is reproduced in corners. If \texttt{false}, it is not.}
+ \item \key{backgroundImg}{true}{If \texttt{true}, prints background. If \texttt{false}, no background.}
+ \item \key{backgroundColor}{red}{Specifies background color. Ignored if \texttt{backgroundImg=false}. Uses colors defined in the \href{https://www.ctan.org/pkg/xcolor}{xcolor} package.}
+ \item \key{contentsFontSize}{120}{Font size (in pt) of text in card center.}
+ \item \key{circleRay}{20}{Ray of the white circle the center of the card. Value \texttt 0 means no circle.}
\end{itemize}
@@ -81,13 +89,13 @@ It is possible, but not required, to draw card back side. Front sides must be on
To get a correct alignment, place commands in a \verb!\begin{center}...\end{center}! environment.
\begin{figure}[h]\begin{center}
\caption{\commande{drawcardsverso[trame=false,contentsFontSize=40]\{Exemple\}}}
- \includegraphics{screen02.png}\label{fig:verso}
+ \includegraphics{fig02.pdf}\label{fig:verso}
\end{center}\end{figure}
Optional parameters:
\begin{itemize}
- \item \key{backgroundImg}{true}{Si \texttt{true}, prints background. If \texttt{false}, no background.}
- \item \key{trame}{true}{If \texttt{true}, fills an A4 paper with cards.. Si \texttt{false}, draws one only card.}
+ \item \key{backgroundImg}{true}{If \texttt{true}, prints background. If \texttt{false}, no background.}
+ \item \key{trame}{true}{If \texttt{true}, fills an A4 paper with cards. If \texttt{false}, draws one only card. To work properly, \texttt{trame=true} requires A4 paper and \commande{usepackage[scale=0.95]\{geometry\}} in preamble.}
\item \key{contentsFontSize}{120}{Font size (int pt) of text in card center.}
\end{itemize}
diff --git a/graphics/pgf/contrib/playcards/playcards-fr.pdf b/graphics/pgf/contrib/playcards/playcards-fr.pdf
index a06a7cc09b..5f358c557d 100644
--- a/graphics/pgf/contrib/playcards/playcards-fr.pdf
+++ b/graphics/pgf/contrib/playcards/playcards-fr.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/playcards/playcards-fr.tex b/graphics/pgf/contrib/playcards/playcards-fr.tex
index 7860a9b1e5..c807577b6e 100644
--- a/graphics/pgf/contrib/playcards/playcards-fr.tex
+++ b/graphics/pgf/contrib/playcards/playcards-fr.tex
@@ -37,56 +37,64 @@ Je remercie Christophe \bsc{Poulain} pour son génial package \href{https://ctan
Merci également à \href{https://tex.stackexchange.com/users/1948/didest}{didest}, dont la question posée sur \href{https://tex.stackexchange.com/questions/47924/creating-playing-cards-using-tikz}{StackExchange} m'a servi de base.
\section{Téléchargement, installation, prérequis}
-Le package est disponible sur CTAN : <lien à venir>. Il contient un unique fichier : \texttt{playcards.sty}
+Le package est disponible sur CTAN : \href{https://ctan.org/pkg/playcards}{https://ctan.org/pkg/playcards}. Il contient un unique fichier : \texttt{playcards.sty}.
-Certains packages sont chargés automatiquement. Ils sont installés par défaut sur la majorités des installations classiques :
+ \subsection{Packages chargés automatiquement}
+Certains packages sont chargés automatiquement. Ils sont installés par défaut sur la majorités des configurations classiques :
\begin{description}
\item[\package{tikz}] et certaines de ses librairies.
\item[\package{simplekv}] pour gérer les paramètres facultatifs des commandes par système \kv{clé}{valeur}.
\item[\package{graphicx}] pour les images.
\item[\package{contour}] pour les ombres et contours de textes.
- \item[\package{geometry}] configuré pour optimiser l'occupation d'une feuille A4 en la remplissant de cartes convenablement alignées.
\end{description}
+ \subsection{Packages recommandés non chargés automatiquement}
+Pour dessiner les cartes individuellement, il n'y a pas de contraintes sur les marges ou le format de papier.
+
+Pour obtenir des planches de cartes identiques, le format doit être A4 et le package \commande{usepackage[scale=0.95]\{geometry\}} doit être chargé en préambule.
+
\section{Principe général}
-Les principales commandes sont construites sur un système de clés/valeurs, sur le modèle \texttt{\textbackslash commande[\kv{cle1}{valeur1}, \kv{cle2}{valeur2}, …,]\{param1\}\{param2\}}.
+Les principales commandes sont construites sur un système de clés/valeurs, sur le modèle \texttt{\textbackslash commande[\kv{cle1}{valeur1}, \kv{cle2}{valeur2}, …]\{param1\}\{param2\}}.
Toutes les clés sont facultatives et si elles ne sont pas renseignées, il leur est attribué une valeur par défaut.
Sauf précision contraire, les longueurs sont mentionnées en millimètres.
\section{Commandes fournies}
+ \subsection{Options du package}
+Par défaut, la police d'écriture utilisée pour le texte des cartes est la même que celle du document. Il est possible de passer en option le paramètre \texttt{anttor} pour que la police des cartes soit \href{https://tug.org/FontCatalogue/antykwatorunska/}{Antykwa Toruńska}.
+
\subsection{Commande \commande{drawcardsrecto}}
-Cette commande prend un paramètre obligatoire : le texte qui apparaîtra au centre de la carte et remplit une feuille A4 avec 9 cartes identiques. Cette commande trace le recto des cartes. Un exemple est donné figure \ref{fig:recto}.
+Cette commande prend un paramètre obligatoire : le texte qui apparaîtra au centre de la carte. Elle remplit une feuille A4 avec 9 cartes identiques. Cette commande trace le recto des cartes. Un exemple est donné figure \ref{fig:recto}.
\begin{figure}[h]\begin{center}
\caption{\commande{drawcardsrecto[trame=false]\{5\}}}
- \includegraphics{screen01.png}\label{fig:recto}
+ \includegraphics{fig01.pdf}\label{fig:recto}
\end{center}\end{figure}
Paramètres optionnels :
\begin{itemize}
- \item \key{borders}{true}{Retire les bordures.}
- \item \key{trame}{true}{Si \texttt{true}, remplit une feuille A4 avec les cartes. Si \texttt{false}, dessine une seule carte.}
+ \item \key{borders}{true}{Trace les bordures. Si \texttt{false}, les bordures sont retirées.}
+ \item \key{trame}{true}{Si \texttt{true}, remplit une feuille A4 avec les cartes. Si \texttt{false}, dessine une seule carte. Pour fonctionner correctement, la clé \texttt{trame=true} nécessite que le document soit au format A4 et que soit chargé en préambule \commande{usepackage[scale=0.95]\{geometry\}}}.
\item \key{corners}{true}{Si \texttt{true}, le texte de la carte est reporté à l'endroit à et à l'envers dans les coins. Si \texttt{false}, les coins ne sont pas affichés.}
\item \key{backgroundImg}{true}{Si \texttt{true}, affiche l'arrière-plan. Si \texttt{false}, pas d'arrière-plan.}
\item \key{backgroundColor}{red}{Spécifie la couleur de l'arrière-plan. Sera ignoré si \texttt{backgroundImg=false}. Utilise les couleurs du package \href{https://www.ctan.org/pkg/xcolor}{xcolor}.}
\item \key{contentsFontSize}{120}{Taille (en pt) du texte au centre de la carte.}
- \item \key{cicleRay}{20}{Rayon du cercle blanc au centre de la carte. La valeur \texttt 0 équivaut à ne pas tracer le cercle.}
+ \item \key{circleRay}{20}{Rayon du cercle blanc au centre de la carte. La valeur \texttt 0 équivaut à ne pas tracer le cercle.}
\end{itemize}
\subsection{Commande \commande{drawcardsverso}}
-Il est possible, mais ce n'est pas obligatoire, de dessiner le verso des cartes. Les rectos devront être sur une page et les versos sur une autre et d'avoir autant de rectos que de versos. Un exemple est donné figure \ref{fig:verso}.
+Il est possible, mais ce n'est pas obligatoire, de dessiner le verso des cartes. Les rectos devront être sur une page et les versos sur une autre. Il est recommandé d'avoir autant de rectos que de versos pour préserver l'alignement. Un exemple est donné figure \ref{fig:verso}.
Pour avoir le bon alignement, il est recommandé de placer les commandes dans un environnement \verb!\begin{center}...\end{center}!.
\begin{figure}[h]\begin{center}
\caption{\commande{drawcardsverso[trame=false,contentsFontSize=40]\{Exemple\}}}
- \includegraphics{screen02.png}\label{fig:verso}
+ \includegraphics{fig02.pdf}\label{fig:verso}
\end{center}\end{figure}
Paramètres optionnels :
\begin{itemize}
\item \key{backgroundImg}{true}{Si \texttt{true}, affiche l'arrière-plan. Si \texttt{false}, pas d'arrière-plan.}
- \item \key{trame}{true}{Si \texttt{true}, remplit une feuille A4 avec les cartes. Si \texttt{false}, dessine une seule carte.}
+ \item \key{trame}{true}{Si \texttt{true}, remplit une feuille A4 avec les cartes. Si \texttt{false}, dessine une seule carte. Pour fonctionner correctement, la clé \texttt{trame=true} nécessite que le document soit au format A4 et que soit chargé en préambule \commande{usepackage[scale=0.95]\{geometry\}}}.
\item \key{contentsFontSize}{50}{Taille (en pt) du texte au centre de la carte.}
\end{itemize}
diff --git a/graphics/pgf/contrib/playcards/playcards.sty b/graphics/pgf/contrib/playcards/playcards.sty
index aa5218f241..4b5d8fb85b 100644
--- a/graphics/pgf/contrib/playcards/playcards.sty
+++ b/graphics/pgf/contrib/playcards/playcards.sty
@@ -1,6 +1,6 @@
% Clément PAGÈS <contact@clementpages.fr>
%
-% Version 0.1
+% Version 0.2
%
% Draws basic playcards with Tikz. Inspired by https://tex.stackexchange.com/questions/47924/creating-playing-cards-using-tikz
%
@@ -11,13 +11,9 @@
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{playcards}[2023/04/29, Personal commands]
-
-
-\RequirePackage[scale=0.950]{geometry}
+\ProvidesPackage{playcards}[2023/05/02, Personal commands]
\RequirePackage{simplekv}
-\RequirePackage{anttor}
\RequirePackage{graphicx}
\RequirePackage{tikz}
\usetikzlibrary{patterns}
@@ -30,6 +26,12 @@
},
}
+% Check if attor is given a optional parameter
+\newif\if@loadanttorfont\@loadanttorfontfalse
+\DeclareOption{anttor}{\@loadanttorfonttrue}
+\ProcessOptions\relax
+
+
\RequirePackage[outline]{contour}
\pgfmathsetmacro{\cardwidth}{59}
@@ -149,6 +151,9 @@
\newcommand{\drawcardsverso}[2][]{
+ \if@loadanttorfont % Change card font to anttor if parameter antor given
+ \fontfamily{antt}
+ \fi
\useKVdefault[VersoKeys]%
\setKV[VersoKeys]{#1}%
\ifboolKV[VersoKeys]{trame}{%
@@ -163,6 +168,9 @@
}
\newcommand{\drawcardsrecto}[2][] {
+ \if@loadanttorfont % Change card font to anttor if parameter antor given
+ \fontfamily{antt}
+ \fi
\useKVdefault[RectoKeys]%
\setKV[RectoKeys]{#1}%
\ifboolKV[RectoKeys]{trame}{
diff --git a/graphics/pgf/contrib/tikz3d-fr/README.md b/graphics/pgf/contrib/tikz3d-fr/README.md
new file mode 100644
index 0000000000..ec6bbebd6f
--- /dev/null
+++ b/graphics/pgf/contrib/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/graphics/pgf/contrib/tikz3d-fr/doc/tikz3d-fr-doc.pdf b/graphics/pgf/contrib/tikz3d-fr/doc/tikz3d-fr-doc.pdf
new file mode 100644
index 0000000000..9566efab5b
--- /dev/null
+++ b/graphics/pgf/contrib/tikz3d-fr/doc/tikz3d-fr-doc.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/tikz3d-fr/doc/tikz3d-fr-doc.tex b/graphics/pgf/contrib/tikz3d-fr/doc/tikz3d-fr-doc.tex
new file mode 100644
index 0000000000..548d68c219
--- /dev/null
+++ b/graphics/pgf/contrib/tikz3d-fr/doc/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/graphics/pgf/contrib/tikz3d-fr/tex/tikz3d-fr.sty b/graphics/pgf/contrib/tikz3d-fr/tex/tikz3d-fr.sty
new file mode 100644
index 0000000000..b1c028fc15
--- /dev/null
+++ b/graphics/pgf/contrib/tikz3d-fr/tex/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