summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/pas-cours
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/pas-cours
Initial commit
Diffstat (limited to 'macros/latex/contrib/pas-cours')
-rw-r--r--macros/latex/contrib/pas-cours/README40
-rw-r--r--macros/latex/contrib/pas-cours/doc/decomp.tex1
-rw-r--r--macros/latex/contrib/pas-cours/doc/doc.codes.tex144
-rw-r--r--macros/latex/contrib/pas-cours/doc/doc.styles.tex75
-rw-r--r--macros/latex/contrib/pas-cours/doc/pas-cours.pdfbin0 -> 736620 bytes
-rw-r--r--macros/latex/contrib/pas-cours/doc/pas-cours.tex1271
-rw-r--r--macros/latex/contrib/pas-cours/doc/warning-perso.pngbin0 -> 41912 bytes
-rw-r--r--macros/latex/contrib/pas-cours/latex/attention.pngbin0 -> 3259 bytes
-rw-r--r--macros/latex/contrib/pas-cours/latex/coeur.pngbin0 -> 7596 bytes
-rw-r--r--macros/latex/contrib/pas-cours/latex/macro-calculs.tex45
-rw-r--r--macros/latex/contrib/pas-cours/latex/macro-patrons.tex318
-rw-r--r--macros/latex/contrib/pas-cours/latex/macro-solides.tex753
-rw-r--r--macros/latex/contrib/pas-cours/latex/macro-styles.tex616
-rw-r--r--macros/latex/contrib/pas-cours/latex/pas-cours.sty90
-rw-r--r--macros/latex/contrib/pas-cours/latex/prerequis.pngbin0 -> 79314 bytes
15 files changed, 3353 insertions, 0 deletions
diff --git a/macros/latex/contrib/pas-cours/README b/macros/latex/contrib/pas-cours/README
new file mode 100644
index 0000000000..02377ba521
--- /dev/null
+++ b/macros/latex/contrib/pas-cours/README
@@ -0,0 +1,40 @@
+************* README file for pas-cours **********************
+********************* ENGLISH *****************************
+
+This package uses TikZ to built mathematics lessons.
+
+Licence
+-------
+
+This program can be redistributed and/or modified under the terms
+of the LaTeX Project Public License Distributed from CTAN
+archives in directory macros/latex/base/lppl.txt.
+
+Documentation
+-------------
+
+The documentation of the package is in the ZIP file or under the
+directory /doc/ in french language.
+If you don't find it, go to the URL http://get-software.net/macros/latex/contrib/pas-cours/doc/pas-cours.pdf
+
+Thanks to use pas-cours.sty.
+
+************* Fichier README pour pas-cours **********************
+********************** FRANCAIS *******************************
+
+Cette extension utilise TikZ pour écrire des cours de mathématiques.
+
+Licence
+-------
+
+L'extension peut être redistribuée et/ou modifiée sous les termes
+de la licence LaTeX Project Public (voir macros/latex/base/lppl.txt).
+
+Documentation
+-------------
+
+La documentation de l'extension se trouve dans le fichier ZIP ou
+dans dans le répertoire /doc/.
+Si vous ne trouvez pas cette documentation, allez sur la page http://get-software.net/macros/latex/contrib/pas-cours/doc/pas-cours.pdf
+
+Merci d'utiliser pas-cours.sty.
diff --git a/macros/latex/contrib/pas-cours/doc/decomp.tex b/macros/latex/contrib/pas-cours/doc/decomp.tex
new file mode 100644
index 0000000000..6c4c8dfbeb
--- /dev/null
+++ b/macros/latex/contrib/pas-cours/doc/decomp.tex
@@ -0,0 +1 @@
+2^{8}\times3^{2}\times1973^{1} \ No newline at end of file
diff --git a/macros/latex/contrib/pas-cours/doc/doc.codes.tex b/macros/latex/contrib/pas-cours/doc/doc.codes.tex
new file mode 100644
index 0000000000..429b0cad3c
--- /dev/null
+++ b/macros/latex/contrib/pas-cours/doc/doc.codes.tex
@@ -0,0 +1,144 @@
+\tcbuselibrary{listings}
+\usetikzlibrary{decorations.pathmorphing}
+
+% Couleurs utilisées dans la documentation
+
+\definecolor{codeTitleFont}{cmyk}{0.04,0,0.03,0.16}
+\definecolor{codeTitleBackLeft}{cmyk}{0.08,0,0.06,0.76}
+\definecolor{codeTitleBackRight}{cmyk}{0.07,0,0.05,0.42}
+\definecolor{listingTitleFont}{cmyk}{0,0.31,0.91,0.38}
+\definecolor{listingTitleBackLeft}{cmyk}{0,0.05,0.64,0}
+\definecolor{listingTitleBackRight}{cmyk}{0,0.03,0.31,0.02}
+
+
+% Code LaTeX
+
+\tcbset{codeTEX/.style={
+ sharp corners=all,
+ before skip=1em,
+ after skip=1em,
+ enhanced,
+ frame style={
+ left color=codeTitleBackLeft,
+ right color=codeTitleBackRight},
+ interior style={
+ top color=codeTitleBackLeft!50,
+ bottom color=codeTitleBackRight!20},
+ boxrule=0.7pt,
+ fonttitle={\sffamily\bfseries\color{codeTitleFont}},
+ colback=codeTitleFont,
+ listing only,
+ left=6mm,
+ listing options={
+ basicstyle=\ttfamily\fontsize{7}{9}\selectfont,
+ keywordstyle=\color{blue},
+ numbers=left,
+ language=TeX,
+ breaklines=true,
+ morekeywords={definecolor,tcbset,begin, newtcbtheorem,newenvironment,newcommand,bfseries,color, sffamily,tcblower,ttfamily,setlength},
+ numberstyle=\tiny\color{red!75!black}},
+ breakable
+ }
+}
+
+% Listing exemples
+
+\tcbset{listing/.style={
+ sharp corners=all,
+ before skip=1em,
+ after skip=1em,
+ enhanced,
+ frame style={
+ left color=listingTitleBackLeft,
+ right color=listingTitleBackRight},
+ boxrule=0.7pt,
+ fonttitle={\sffamily\bfseries\color{listingTitleFont}},
+ colback=listingTitleBackRight,
+ breakable,
+ listing options={
+ basicstyle=\ttfamily\fontsize{7}{9}\selectfont,
+ keywordstyle=\color{listingTitleFont},
+ numbers=left,
+ language=TeX,
+ breaklines=true,
+ numbersep=5pt,
+ morekeywords={ifelse,begin,definecolor,tcbset},
+ numberstyle=\tiny\color{red!75!black}},
+ },
+ interior style={
+ draw=listingTitleBackLeft,
+ top color=listingTitleBackLeft!50,
+ bottom color=listingTitleBackRight!20},
+ segmentation style={
+ draw=listingTitleFont,
+ solid,
+ decorate,
+ decoration={random steps,segment length=2mm}
+ }
+}
+
+% Titre de la documentation
+
+\tcbset{head/.style={
+ enhanced,
+ hbox,
+ tikznode,
+ left=8mm,
+ right=8mm,
+ boxrule=0.4pt,
+ colback=white,
+ colframe=gray,
+ drop lifted shadow=black!50!yellow,
+ before=\par\vspace*{5mm},
+ after=\par\bigskip,
+ interior style={
+ draw=white,
+ top color=white,
+ bottom color=white}
+ }
+}
+
+% TOC
+
+\tcbset{toc/.style={
+ breakable,
+ enhanced jigsaw,
+ title={\color{red!50!black}Sommaire},
+ fonttitle=\bfseries\Large,
+ colback=yellow!10!white,
+ colframe=red!50!black,
+ before=\par\bigskip\noindent,
+ interior style={
+ fill overzoom image=goldshade.png,
+ fill image opacity=0.25},
+ colbacktitle=yellow!20,
+ enlargepage flexible=\baselineskip,
+ pad at break*=3mm,
+ attach boxed title to top center={
+ yshift=-0.25mm-\tcboxedtitleheight/2,
+ yshifttext=2mm-\tcboxedtitleheight/2},
+ boxed title style={
+ enhanced,
+ boxrule=0.5mm,
+ frame code={
+ \path[tcb fill frame] ([xshift=-4mm]frame.west) -- (frame.north west)
+ -- (frame.north east) -- ([xshift=4mm]frame.east)
+ -- (frame.south east) -- (frame.south west) -- cycle; },
+ interior code={
+ \path[tcb fill interior] ([xshift=-2mm]interior.west)
+ -- (interior.north west) -- (interior.north east)
+ -- ([xshift=2mm]interior.east) -- (interior.south east) -- (interior.south west)
+ -- cycle;} },
+ drop fuzzy shadow
+ }
+}
+
+% Historique de l'extension
+
+\tcbset{histo/.style={
+ enhanced,
+ breakable,
+ sidebyside,
+ lefthand width=1.5cm
+ }
+} \ No newline at end of file
diff --git a/macros/latex/contrib/pas-cours/doc/doc.styles.tex b/macros/latex/contrib/pas-cours/doc/doc.styles.tex
new file mode 100644
index 0000000000..d87f112014
--- /dev/null
+++ b/macros/latex/contrib/pas-cours/doc/doc.styles.tex
@@ -0,0 +1,75 @@
+\makeatletter
+
+\def\@dottedtocline#1#2#3#4#5{%
+ \ifnum #1>\c@tocdepth \else
+ \vskip \z@ \@plus.2\p@
+ {\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip
+ \parindent #2\relax\@afterindenttrue
+ \interlinepenalty\@M
+ \leavevmode
+ \@tempdima #3\relax
+ \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
+ {#4}\nobreak
+ \leaders\hbox{$\m@th
+ \mkern \@dotsep mu\hbox{.}\mkern \@dotsep
+ mu$}\hfill
+ \nobreak
+ \hb@xt@\@pnumwidth{\hfil\helvbx #5}%
+ \par}%
+ \fi}
+
+\renewcommand*\l@section
+{%
+\helvbx\color{red!50!black}\bfseries
+\def\@linkcolor{red!50!black}\@dottedtocline{1}{1.5em}{1.5em}
+}
+
+\renewcommand*\l@subsection
+{%
+\helvbx\color{green!50!black}
+\def\@linkcolor{green!50!black}
+\@dottedtocline{1}{2.3em}{2.6em}
+}
+
+\renewcommand*\l@subsubsection
+{%
+\helvbx\color{orange!80!black}
+\def\@linkcolor{orange!80!black}
+\@dottedtocline{1}{3em}{3.3em}
+}
+
+\def\contentsline#1#2#3#4{%
+ \ifx\\#4\\%
+ \csname l@#1\endcsname{#2}{#3}%
+ \else
+ \csname l@#1\endcsname{\hyper@linkstart{link}{#4}{#2}\hyper@linkend}{%
+ \hyper@linkstart{link}{#4}{#3}\hyper@linkend
+ }%
+ \fi
+}
+
+% --------------------
+% TITRES DES SECTIONS
+% --------------------
+
+\titleformat{\section}[block]
+{\helvbx\Large\color{red!50!black}}
+{\fcolorbox{red!50!black}{red!50!black}{\textcolor{white}{\bfseries\thesection}}}
+{1em}
+{\helvbx}
+
+\titleformat{\subsection}[block]
+{\helvbx\large\color{green!50!black}}
+{\thesubsection}
+{1em}
+{\helvbx}
+
+\titleformat{\subsubsection}[block]
+{\helvbx\large\color{orange!50!black}}
+{\thesubsubsection}
+{1em}
+{\helvbx}
+
+\makeatother
+
+\newcommand{\helvbx}{\usefont{T1}{phv}{m}{n}} \ No newline at end of file
diff --git a/macros/latex/contrib/pas-cours/doc/pas-cours.pdf b/macros/latex/contrib/pas-cours/doc/pas-cours.pdf
new file mode 100644
index 0000000000..6b396be4cb
--- /dev/null
+++ b/macros/latex/contrib/pas-cours/doc/pas-cours.pdf
Binary files differ
diff --git a/macros/latex/contrib/pas-cours/doc/pas-cours.tex b/macros/latex/contrib/pas-cours/doc/pas-cours.tex
new file mode 100644
index 0000000000..dc8442c23d
--- /dev/null
+++ b/macros/latex/contrib/pas-cours/doc/pas-cours.tex
@@ -0,0 +1,1271 @@
+\documentclass[a4paper,french]{article}
+\usepackage[latin1]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{babel}
+\usepackage{etex}
+\usepackage{fourier}
+\usepackage[table]{xcolor}
+\usepackage[colorlinks=true,urlcolor=blue]{hyperref}
+\usepackage[ant]{pas-cours}
+\usepackage{titlesec}
+\usepackage{tcolorbox}
+ \tcbuselibrary{skins}
+ \tcbuselibrary{theorems}
+ \tcbuselibrary{breakable}
+
+% --- Propre à cette doc
+
+\usepackage{cellspace}
+\setlength{\cellspacetoplimit}{4pt}
+\setlength{\cellspacebottomlimit}{4pt}
+\usepackage{tabularx}
+\usepackage{lipsum}
+\usepackage{multido}
+\usepackage{numprint}
+
+% ----------------------
+
+\setlength{\parindent}{0pt}
+
+\input{doc.codes.tex}
+\input{doc.styles.tex}
+
+\begin{document}
+
+\begin{center}
+\begin{tcolorbox}[head]
+{\bfseries\LARGE Documentation \texttt{pas-cours} }\\[3mm]
+{\large Version 1.6 -- \today}
+\end{tcolorbox}
+
+{\large
+\href{http://www.mathweb.fr/contact.html}{Stéphane Pasquet}}
+\end{center}
+
+\begin{tcolorbox}[toc]
+\makeatletter
+\@starttoc{toc}
+\makeatother
+\end{tcolorbox}
+
+
+\section{Présentation et Installation}
+
+L'extension \texttt{pas-cours.sty} a été créée dans le but d'avoir une belle présentation de cours et de dessiner des figures usuelles 3D très simplement.
+
+\medskip
+
+Il a été construit en fonction de mes besoins personnels, sachant que je construis mes cours sans section.
+
+\medskip
+
+Cette extension charge automatiquement les extensions suivantes :
+
+\medskip
+
+\begin{quote}
+amssymb (pour le carré plein optionnel en fin de démonstration)\\
+tikz (avec les librairies "calc", "fadings" et "arrows") s'il n'a pas été chargé avant\\
+xkeyval\\
+xstring\\
+enumitem (pour la gestion des listes)
+\end{quote}
+
+\medskip
+
+\begin{itemize}
+\item Sous Ubuntu, on pourra décompresser \texttt{pas-cours.zip} dans le répertoire :
+
+\begin{verbatim}
+./texlive/texmf-local/tex/latex/
+\end{verbatim}
+
+de sorte à avoir :
+
+
+\begin{verbatim}
+./texlive/texmf-local/tex/latex/pas-cours/latex/attention.png
+\end{verbatim}
+\begin{verbatim}
+./texlive/texmf-local/doc/latex/pas-cours/latex/coeur.png
+\end{verbatim}
+\begin{verbatim}
+./texlive/texmf-local/doc/latex/pas-cours/latex/prerequis.png
+\end{verbatim}
+\begin{verbatim}
+./texlive/texmf-local/doc/latex/pas-cours/latex/macro-patrons.tex
+\end{verbatim}
+\begin{verbatim}
+./texlive/texmf-local/doc/latex/pas-cours/latex/macro-solides.tex
+\end{verbatim}
+\begin{verbatim}
+./texlive/texmf-local/doc/latex/pas-cours/latex/macro-styles.tex
+\end{verbatim}
+\begin{verbatim}
+./texlive/texmf-local/tex/latex/pas-cours/latex/pas-cours.sty
+\end{verbatim}
+\begin{verbatim}
+./texlive/texmf-local/doc/latex/pas-cours/doc/pas-cours.pdf
+\end{verbatim}
+\begin{verbatim}
+./texlive/texmf-local/doc/latex/pas-cours/doc/doc.codes.tex
+\end{verbatim}
+\begin{verbatim}
+./texlive/texmf-local/doc/latex/pas-cours/doc/doc.styles.tex
+\end{verbatim}
+\begin{verbatim}
+./texlive/texmf-local/doc/latex/pas-cours/doc/pas-cours.tex
+\end{verbatim}
+
+Après installation, n'oubliez pas de taper la commande \texttt{texhash} dans le terminal pour mettre à jour la base de données des extensions.
+
+\item Sous Windows, on pourra décompresser \texttt{pas-cours.zip} dans le répertoire :
+
+\texttt{C:\textbackslash texmf\textbackslash tex\textbackslash latex\textbackslash pas-cours\textbackslash}
+
+par exemple (je vous conseille de créer un tel répertoire dans l'éventualité où vous seriez amenés plus tard à mettre à jour Miktex; cela évite de perdre les extensions installées manuellement). Dans ce cas, n'oubliez pas d'informer ce chemin dans le manager de Miktex (sous Windows 10, tapez \og Miktex \fg{} dans la barre de recherche du menu démarrer, puis sélectionnez \og Miktex setting (Admin)\fg. Sélectionnez l'onglet \og roots \fg{} (en haut de la fenêtre qui s'est ouverte), puis cliquez sur le bouton \og
+Add... \fg{} (en bas). Choisissez alors le répertoire créé.
+
+N'oubliez pas de faire un \og Refresh FNDB \fg{} lorsque vous en aurez terminé.
+\end{itemize}
+
+\bigskip
+
+Avec macTex (sous Mac OS), j'imagine que l'arborescence ressemble à ce qui est écrit précédemment pour Ubuntu (mais à confirmer...).
+
+
+\section{Préambule}
+
+Le préambule de votre fichier \texttt{tex} doit comporter nécessairement la ligne suivante :
+
+\medskip
+
+\begin{tcblisting}{codeTEX,title={Appel à l'extension}}
+\usepackage{pas-cours}
+\end{tcblisting}
+
+\subsection{L'option générale : \texttt{ant}}
+
+Si vous souhaitez que les titres soient écrits avec la police \texttt{anttlc}, vous pouvez passer l'option \texttt{ant} en appelant le package \texttt{pas-cours} :
+
+\medskip
+
+\begin{tcblisting}{codeTEX,title={Appel à l'extension avec paramètre}}
+\usepackage[ant]{pas-cours}
+\end{tcblisting}
+
+\medskip
+
+\`A titre d'information, ce document a été compilé avec l'option \texttt{ant} (donc en utilisant la police \texttt{anttlc}). Regardez le titre de chaque environnement (propriétés, théorèmes, etc.) plus loin ... vous verrez que ce n'est pas une police normale.
+
+\subsection{L'option générale : \texttt{noitemstyle}}
+\label{noitemstyle}
+
+Par défaut, \texttt{pas-cours} modifie le style des items. Si vous ne souhaitez pas que cette action soit faite, indiquez l'option suivante :
+
+\medskip
+
+\begin{tcblisting}{codeTEX,title={Pas de changement de style pour les items}}
+\usepackage[noitemstyle]{pas-cours}
+\end{tcblisting}
+
+\subsection{L'option générale : \texttt{notitlebreak}}
+
+C'est une option qui concerne l'environnement \texttt{pasbox} (voir section \label{pasbox} page \pageref{pasbox}).
+
+Quand celle-ci est appelée, et quand les cadres \og pasbox \fg{} sont coupés, le titre n'apparaît pas au dessus du second cadre et des éventuels suivants (voir la commande \texttt{\textbackslash breakbox} page \pageref{breakbox}).
+
+\section{Titres de chapitre}
+
+\begin{tcblisting}{codeTEX,title={Affichage du titre du chapitre}}
+\chap[<options>]{Titre du chapitre}{Sous-titre du chapitre}
+\end{tcblisting}
+
+\bigskip
+
+\begin{tabularx}{\textwidth}{rcX}
+\texttt{autonum} & : & booléen (par défaut : false). Indique si le numéro de chapitre doit \^etre automatiquement calculé.\\
+\texttt{num} & = & le numéro du chapitre (obligatoire si "autonum=false").\\
+\texttt{color} & = & couleur que vous voulez (option facultative ; en cas d'absence, la couleur sera rouge).\\
+\texttt{pos} & = & left ou right (option facultative ; en cas d'absence, la position du numéro du chapitre sera "right" donc à droite).\\
+\texttt{nonewpage} & : & booléen (par défaut : false). Indique si l'on ne souhaite pas mettre le titre sur une nouvelle page.
+\end{tabularx}
+
+\medskip
+
+\begin{tcblisting}{codeTEX,title=Définition de l'environnement}
+\chap[num=1,color=blue]{Nombres entiers}{Stéphane PASQUET, \today}
+\end{tcblisting}
+
+\medskip
+
+\chap[num=1,color=blue,nonewpage]{Nombres entiers}{Stéphane PASQUET, \today}
+
+\newpage
+
+\section{La commande \textbackslash definmot}
+
+Elle permet de mettre en relief un mot dans un cadre.
+
+\begin{tcblisting}{listing,title={Mot en exergue}}
+\begin{pasbox}[style=defi,name={Nombre premier},degrade]
+Un nombre est \definmot{premier} s'il n'est divisible que par 1 et lui-même.
+\end{pasbox}
+\end{tcblisting}
+
+\section{L'environnement \og pasbox \fg}
+\label{pasbox}
+
+\begin{tcblisting}{codeTEX,title={L'environnement pasbox}}
+\begin{pasbox}[<options>]
+Contenu
+\end{pasbox}
+\end{tcblisting}
+
+\bigskip
+
+\begin{tabularx}{\textwidth}{rcX}
+\texttt{style}& = & defi (pour définition)\\
+ & & prop (pour propriété)\\
+ & & thm (pour théorème)\\
+ & & demo (pour démonstration)\\
+ & & nota (pour notation)\\
+ & & ex (pour exemple)\\
+ & & act (pour activité)\\
+ & & rem (pour remarque)\\
+ & & meth (pour méthode)\\
+\texttt{num} & : & booléen pour numéroter l'environnement (par défaut, num = false)\\
+\texttt{notitle} & : & booléen pour supprimer le titre (Option facultative)\\
+\texttt{notitlebreak} & : & booléen pour supprimer le titre dans le second cadre si l'environnement est coupé (avec l'option la commande \textbackslash breakbox)\\
+\texttt{pluriel} & : & désigne s'il faut mettre un "s" à la fin du titre (Option facultative)\\
+\texttt{name} & = & nom de la propriété (option facultative)\\
+\texttt{title} & = & titre que vous souhaitez mettre (si le titre par défaut ne vous convient pas)\\
+\end{tabularx}
+
+\begin{tabularx}{\textwidth}{rcX}
+\texttt{color} & = & couleur du cadre (si la couleur par défaut ne vous convient pas)\\
+\texttt{degrade} & : & booléen pour faire un dégradé dans le cadre\\
+\texttt{endsymb} & : & booléen qui met un symbole de fin quand il figure parmi les options (par défaut : $\blacksquare$)\\
+\texttt{symb} & = & symbole que vous souhaitez mettre à la fin (si celui par défaut ne vous convient pas)\\
+\texttt{toc} & : & booléen pour mettre le \texttt{name} de l'environnement actuel dans la table des matière (par défaut : \texttt{false})\\
+\texttt{notoc} & : & booléen pour indiquer de ne pas mettre le \texttt{name} de l'environnement actuel dans la table des matières (par défaut : \texttt{false})\\
+\texttt{effect} & : & booléen pour mettre un effet sur le titre de l'environnement (par défaut : \texttt{true})\\
+\end{tabularx}
+
+\subsection{Théorèmes}
+
+\begin{tcblisting}{listing,title={Théorème}}
+\begin{pasbox}[style=thm,name={Théorème de Pythagore},degrade]
+Soit ABC un triangle rectangle en A. Alors, \[ BC^2=AB^2+AC^2\]\vskip-2.3em
+\end{pasbox}
+\end{tcblisting}
+
+
+\begin{tcblisting}{listing,title={Théorème numéroté}}
+\begin{pasbox}[style=thm,name={Théorème de Pythagore},degrade,num]
+Soit ABC un triangle rectangle en A. Alors, \[ BC^2=AB^2+AC^2\]\vskip-2.3em
+\end{pasbox}
+\end{tcblisting}
+
+\subsection{Définitions}
+
+\begin{tcblisting}{listing,title={Définition sans titre}}
+\begin{pasbox}[style=defi,name=Centre de gravité,degrade,notitle]
+Dans un triangle, le point d'intersection des médianes est appelé le
+\definmot{centre de gravité}.
+\end{pasbox}
+\end{tcblisting}
+
+\begin{tcblisting}{listing,title={Définitions (au pluriel)}}
+\begin{pasbox}[style=defi,pluriel]
+Dans un triangle, une droite passant par un sommet et par le milieu du côté opposé est appelée une \definmot{médiane}.
+
+Une droite passant par un sommet et perpendiculaire au coté opposé est appelée une \definmot{hauteur}.
+\end{pasbox}
+\end{tcblisting}
+
+Notez la présence ici de la commande \texttt{$\backslash$definmot}, définie dans ce package, pour mettre en valeur un mot.
+
+\subsection{Propriétés}
+
+\begin{tcblisting}{listing,title={Propriété}}
+\begin{pasbox}[style=prop]
+Dans un triangle, les trois médianes sont concourantes.
+\end{pasbox}
+\end{tcblisting}
+
+
+\subsection{Exemples}
+
+\begin{tcblisting}{listing,title={Exemple}}
+\begin{pasbox}[style=ex,pluriel]
+\begin{enumerate}
+\item $x+2=9$ donc $x=9-2$, soit $x=7$.
+\item $x-3=4$ donc $x=4+3$, soit $x=7$.
+\end{enumerate}
+\end{pasbox}
+\end{tcblisting}
+
+\subsection{Notations}
+
+\begin{tcblisting}{listing,title={Notation}}
+\begin{pasbox}[style=nota,pluriel]
+\begin{enumerate}
+\item $x \times x$ est noté $x^2$.
+\item $x+x$ est noté $2x$.
+\item $x+x+x$ est noté $3x$.
+\end{enumerate}
+\end{pasbox}
+\end{tcblisting}
+
+\subsection{Remarques}
+\begin{tcblisting}{listing,title={Remarque}}
+\begin{pasbox}[style=rem,name=Note historique]
+Le symbole \og $\times$ \fg{} a été introduit par William OUGHTRED (1574 - 1660).
+\end{pasbox}
+\end{tcblisting}
+
+\subsection{Activités}
+
+\begin{tcblisting}{listing,title={Activité}}
+\begin{pasbox}[style=act,name=Propriétés sur les droites]
+\begin{enumerate}
+\item Tracez deux droites perpendiculaires $(d)$ et $(d')$.
+\item Tracez une droite $(d'')$ perpendiculaire à $(d)$.
+\item Comment semble être $(d'')$ par rapport à $(d')$ ?
+\end{enumerate}
+\end{pasbox}
+\end{tcblisting}
+
+\subsection{Méthodes}
+
+\begin{tcblisting}{listing,title={Méthode}}
+\begin{pasbox}[style=meth,name=Trouver la forme irréductible d'une fraction,endsymb,symb=$\bigstar$]
+Pour simplifier au maximum la fraction $\dfrac{\numprint{29700}}{\numprint{35100}}$, on décompose en produit de facteurs premiers le numérateur et le dénominateur :
+\[
+\dfrac{\numprint{29700}}{\numprint{35100}}=\dfrac{2^2\times3^3\times5^5\times11}{2^2\times3^3\times5^5\times13}=\dfrac{11}{13}.
+\]
+\end{pasbox}
+\end{tcblisting}
+
+\subsection{Démonstrations}
+
+\begin{tcblisting}{listing,title={Démonstration}}
+\begin{pasbox}[name=Théorème de Pythagore,endsymb,title=Démonstration,style=demo]
+Ici, on rédige la preuve du théorème de Pythagore.\\
+C'est un peu long...
+\end{pasbox}
+\end{tcblisting}
+
+\subsection{Noms avec virgule}
+
+Si un encadr\'e doit avoir un nom avec une ou plusieurs virgules, il faut mettre le \texttt{name} entre accolades.
+
+\medskip
+
+\begin{tcblisting}{listing,title={Noms avec virgules}}
+\begin{pasbox}[style=defi,pluriel,name={dixièmes, centièmes et millièmes}]
+On insère ici les définitions.
+\end{pasbox}
+\end{tcblisting}
+
+\subsection{Définition d'un autre style}
+
+Je n'ai pas pu mettre tous les styles de cadres possibles, mais uniquement les plus répandus.
+
+Cependant, on peut définir soit-même son cadre \og Corollaire \fg{} par exemple :
+
+\begin{tcblisting}{listing,title={Exemple de cassage d'un cadre}}
+\definecolor{macouleur}{cmyk}{0,0.27,0.03,0}
+\newenvironment{corollaire}[1][]
+{%
+\begin{pasbox}[degrade,color=macouleur,title=Corollaire,name={#1}]
+}
+{%
+\end{pasbox}
+}
+\begin{corollaire}[Relatif à la propriété 2]
+Mon corollaire ici.
+\end{corollaire}
+\end{tcblisting}
+
+
+\section{Cassage d'un cadre : la commande \textbackslash breakbox}
+\label{breakbox}
+
+\begin{tcblisting}{listing,title={Exemple de cassage d'un cadre}}
+\begin{pasbox}[style=ex,pluriel,degrade,name={Théorème de Pythagore},effect=false]
+ABC est un triangle rectangle en A tel que $\text{AB}=5$ et $\text{AC}=7$.
+
+On a alors :
+\begin{align*}
+BC^2 & = AB^2+AC^2\\
+BC^2& = 74
+\end{align*}
+\breakbox
+De même, dans le triangle BCD rectangle en D, avec $\text{BD}=6$, on a :
+\begin{align*}
+CD^2 & = BD^2+BC^2\\
+CD^2 & = 36+74\\
+CD^2 & = 110
+\end{align*}
+\end{pasbox}
+\end{tcblisting}
+
+\paragraph*{N.B.} Dans l'éventualité où vous souhaiteriez enlever le titre de la seconde bo\^ite, utilisez l'option \texttt{notitlebreak} :
+
+\medskip
+
+\begin{tcblisting}{listing,title={Autre exemple de cassage}}
+\begin{pasbox}[style=ex,notitlebreak]
+Premier cadre
+\breakbox
+Second cadre
+\end{pasbox}
+\end{tcblisting}
+
+
+\paragraph*{Remarque :} si vous mettez l'option \texttt{notitle}, il n'y aura pas de titre au 1\ier{} et 2\ieme{} cadre.
+
+\newpage
+
+\section{Insérer un item dans la table des matières}
+
+Par défaut, rien n'est inséré dans la table des matières.
+
+Si l'on veut qu'il n'en soit pas ainsi, on utilisera l'option \texttt{toc} comme dans l'exemple suivant :
+
+\begin{tcblisting}{listing,title={Insertion du titre d'un environnement dans le sommaire}}
+\begin{pasbox}[style=thm,name=Pythagore,toc]
+Si un triangle ABC est rectangle en A, alors :
+\[ BC^2=AB^2+AC^2.\]
+\end{pasbox}
+\end{tcblisting}
+
+\medskip
+
+Si l'on veut que tous les environnements figurent dans la table des matières, on fera appel au package avec l'option \texttt{everytoc} :
+
+\medskip
+
+\begin{tcblisting}{codeTEX,title={Tous les noms dans le sommaire}}
+\usepackage[everytoc]{pas-cours}
+\end{tcblisting}
+
+Dans ce cas, tous les environnements où \texttt{name} sera informé, \texttt{name} sera inséré dans la table des matières.
+
+Si on ne souhaite pas qu'un \texttt{name} figure dans cette table, on utilisera l'option \texttt{notoc}.
+
+\medskip
+
+\begin{tcblisting}{listing,title={Un nom ne figurant pas dans le sommaire}}
+\begin{pasbox}[style=prop,notoc]
+La, je suis sûr que cette boîte ne figurera pas dans la TOC.
+\end{pasbox}
+\end{tcblisting}
+
+\section{Environnements \og \`A retenir \fg, \og Attention \fg{} et\\ \og Prérequis \fg{} }
+
+\subsection{\`A retenir}
+
+\begin{tcblisting}{listing,title={\`A retenir}}
+\begin{aretenir}[0.5]
+\lipsum[1]
+\end{aretenir}
+\end{tcblisting}
+
+Le nombre entre crochets est un coefficient pour agrandir ou réduire la taille de l'image.
+
+L'image affichée se nomme \og coeur.png \fg{} ; elle se trouve dans le répertoire d'installation du package \texttt{pas-cours.sty}.
+
+\subsection{Attention}
+
+\begin{tcblisting}{listing,title={Attention}}
+\begin{attention}[0.5]
+\lipsum[1]
+\end{attention}
+\end{tcblisting}
+
+Le nombre entre crochets est un coefficient pour agrandir ou réduire la taille de l'image.
+
+L'image affichée se nomme \og attention.png \fg{} ; ele se trouve dans le répertoire d'installation du package \texttt{pas-cours.sty}.
+
+\medskip
+
+Après avoir remarqué que cet environnement ne fonctionnait pas selon le mode de compilation, j'ai créé un autre environnement plus souple :
+
+\begin{tcblisting}{listing,title={Warning}}
+\begin{warning}[scale=0.05,img=warning-perso.png,margins=1em,bg,bgcolor=blue!10,draw=blue!50!black]
+Ceci est le nouvel environnement en date du 29 avril 2015.
+\end{warning}
+\end{tcblisting}
+
+Cet environnement comporte les options suivantes :
+\begin{itemize}
+\item \texttt{scale} : l'échelle de l'image affichée ;
+\item \texttt{img} : nom de l'image souhaitée (doit être dans le répertoire courant) ;
+\item \texttt{margins} : marges internes ;
+\item \texttt{draw} : couleur du cadre (par défaut : red!50!black) ;
+\item \texttt{bg} : booléen (par défaut : false) ;
+\item \texttt{bgcolor} : couleur de fond (si \texttt{bg=true}).
+\end{itemize}
+
+\subsection{Prérequis}
+
+\begin{tcblisting}{listing,title={Prérequis}}
+\begin{prerequis}
+\item Prérequis 1
+\item Prérequis 2
+\end{prerequis}
+\end{tcblisting}
+
+
+\section{Commande \og bonus \fg{} }
+
+Cette commande s'utilise généralement en fin de chapitre, lorsque l'enseignant(e) souhaite insérer des fiches.
+
+\medskip
+
+\begin{tcblisting}{codeTEX,title={Insertion d'une page Bonus}}
+\bonus{Titre} % Insère le titre dans le sommaire
+\bonus*{Titre} % N'insère pas le titre dans le sommaire
+\end{tcblisting}
+
+Elle exécute un saut de page (avec la commande \textbackslash newpage), puis insère un titre sous la forme \og Complément <num> : Titre \fg{} (les numéros sont automatiquement calculés).
+
+\section{Styles des listes}
+
+Par défaut, le style des listes a changé :
+
+\medskip\itemclass{black}
+
+
+\begin{tcblisting}{listing,title={Listes \og enumerate \fg}}
+\begin{enumerate}
+\item Item 1
+\item Item 2
+\end{enumerate}
+\end{tcblisting}
+
+\begin{tcblisting}{listing,title={Listes \og itemize \fg}}
+\begin{itemize}
+\item Item 1
+\item Item 2
+\begin{itemize}
+\item Sous-Item 1
+\end{itemize}
+\end{itemize}
+\end{tcblisting}
+
+\medskip
+
+La couleur varie en fonction de l'environnement dans lequel est la liste.
+
+Pour changer la couleur, on peut utiliser la commande \texttt{\textbackslash itemclass\{<couleur>\}} :
+
+\medskip
+
+\begin{tcblisting}{listing,title={Listes \og enumerate \fg{} avec couleur personnalisée}}
+\itemclass{red}
+\begin{enumerate}
+\item Item 1
+\end{enumerate}
+\itemclass{blue}
+\begin{enumerate}[start=2]
+\item Item 2
+\end{enumerate}
+\end{tcblisting}
+
+Dans l'éventualité où ces styles ne vous plaisent pas, vous pouvez toujours utiliser les outils du package \texttt{enumitem} pour les changer (dans ce cas, reportez-vous à sa documentation).
+
+\medskip
+
+Mais si vous ne souhaitez pas que le style des listes change par défaut, faites appel à ce package avec l'option \texttt{noitemstyle} (voir paragraphe \ref{noitemstyle} page \pageref{noitemstyle}).
+
+\newpage
+
+\section{Figures usuelles 3D}
+
+En collège, on a affaire très souvent aux mêmes figures 3D. Voici quelques outils qui vous permettrons de les dessiner plus rapidement :
+
+\medskip
+
+\subsection{Le cube et le parallélépipède rectangle}
+
+\begin{tcblisting}{codeTEX,title={Cube}}
+\begin{tikzpicture}
+\cube[<options>]
+\end{tikzpicture}
+\end{tcblisting}
+
+\bigskip
+
+\begin{tabular}{rcl}
+\texttt{bordercolor} & = & la couleur du bord (par défaut, elle sera noire)\\
+\texttt{incolor} & = & la couleur des faces (par défaut, elle sera blanche)\\
+\texttt{angle} & = & l'angle de la perspective (par défaut, il sera de 45$^\circ$)\\
+\texttt{scale} & = & l'agrandissement (par défaut, l'arête du cube est égale à 1 cm)\\
+\texttt{coefopaq} & = & le coefficient d'opacité, entre 0 et 1 (par défaut, il vaut 0,5)\\
+\texttt{prof} & = & la profondeur du parallélépipède rectangle (par défaut, elle faut 1)\\
+\texttt{name} & : & option booléenne ; si elle ne paraît pas, la figure sera sans nom\\
+\texttt{legende} & : & option booléenne ; si elle ne paraît pas, la légende de la figure ne sera pas écrite\\
+\end{tabular}
+
+\bigskip
+
+\begin{tcblisting}{listing,title={Un exemple de cube avec légende}}
+\begin{tikzpicture}
+\cube[bordercolor=orange,incolor=green!50!black,angle=30, coefopaq=0.2,scale=3,
+name,legende]
+\end{tikzpicture}
+\end{tcblisting}
+
+\newpage
+
+\begin{tcblisting}{listing,title={Un autre exemple de cube sans légende}}
+\begin{tikzpicture}
+\cube[bordercolor=blue,incolor=blue,angle=45,coefopaq=0.3,scale=2]
+\end{tikzpicture}
+\end{tcblisting}
+
+
+\begin{tcblisting}{listing,title={Un exemple de parallélépipède rectangle}}
+\begin{tikzpicture}
+\cube[bordercolor=purple,incolor=purple,angle=30,scale=2,prof=3,coefopaq=0.2]
+\end{tikzpicture}
+\end{tcblisting}
+
+\newpage
+
+\subsection{Le cône de révolution}
+
+\begin{tcblisting}{codeTEX,title={C\^one de révolution}}
+\begin{tikzpicture}
+\cone[<options>]
+\end{tikzpicture}
+\end{tcblisting}
+
+\bigskip
+
+\begin{tabular}{rcl}
+\texttt{bordercolor}& = & la couleur du bord (par défaut, elle sera noire)\\
+\texttt{incolor} & = & la couleur des faces (par défaut, elle sera blanche)\\
+\texttt{incl} & = & coefficient d'inclinaison du disque de base (par défaut, égal à 0,33)\\
+\texttt{hauteur} & = & hauteur du cône (par défaut, elle vaut 3 cm)\\
+\texttt{coefopaq} & = & le coefficient d'opacité, entre 0 et 1 (par défaut, il vaut 0,5)\\
+\texttt{rayon} & = & rayon du disque de base (par défaut, il faut 1 cm)\\
+\texttt{centre} & = & nom du centre du disque de base (par défaut, il est nommé O)\\
+\texttt{poscentre} & = & position du centre du disque de base (par défaut : below)\\
+ & & \small possibilités : below, left, right, above, above right, above left, below right et below left\\
+\texttt{sommet} & = & nom du sommet du cône (par défaut, il est nommé S)\\
+\texttt{posommet} & = & position du nom du sommet (par défaut : above). \\
+ & & On a les mêmes choix que pour la position du nom du centre de la base\\
+\texttt{scalecentre} & = & coefficient d'agrandissement du point représentant le centre du disque de base\\
+\texttt{name} & : & option booléenne ; si elle ne paraît pas, la figure sera sans nom\\
+\texttt{axe} & : & option booléenne ; si elle ne paraît pas, l'axe de révolution ne sera pas dessiné\\
+\texttt{axecolor} &=& couleur de l'axe de révolution (par défaut, il est rouge)\\
+\texttt{legende} & : & option booléenne ; si elle ne paraît pas, la légende de la figure ne sera pas mise\\
+\end{tabular}
+
+\bigskip
+
+\begin{tcblisting}{listing,title={Un exemple de c\^one simple}}
+\begin{tikzpicture}
+\cone
+\end{tikzpicture}
+\end{tcblisting}
+
+\newpage
+
+\begin{tcblisting}{listing,title={Un exemple de c\^one avec deux points}}
+\begin{tikzpicture}
+\cone[incolor=purple,bordercolor=purple,
+coefopaq=0.3,incl=0.1,rayon=3,hauteur=3,
+name,sommet=A,centre=B,poscentre=right,
+scalecentre=3]
+\end{tikzpicture}
+\end{tcblisting}
+
+
+\begin{tcblisting}{listing,title={Un exemple de c\^one avec légende}}
+\begin{tikzpicture}
+\cone[incolor=green,coefopaq=0.3,rayon=3,
+hauteur=3,name,sommet=A,centre=B,axe,
+legende,posommet={above right},
+poscentre=right,incl=0.1,scalecentre=3]
+\end{tikzpicture}
+\end{tcblisting}
+
+
+\subsection{Le cylindre de révolution}
+
+\begin{tcblisting}{codeTEX,title={Cylindre de révolution}}
+\begin{tikzpicture}
+\cylindre[<options>]
+\end{tikzpicture}
+\end{tcblisting}
+
+\scalebox{0.9}{%
+\begin{tabular}{rcl}
+\texttt{bordercolor} & = & la couleur du bord (par défaut, elle sera noire)\\
+\texttt{incolor} & = & la couleur des faces (par défaut, elle sera blanche)\\
+\texttt{incl} & = & coefficient d'inclinaison du disque de base (par défaut, égal à 0,33)\\
+\texttt{hauteur} & = & hauteur du cône (par défaut, elle vaut 3 cm)\\
+\texttt{coefopaq} & = & le coefficient d'opacité, entre 0 et 1 (par défaut, il vaut 0,5)\\
+\texttt{rayon} & = & rayon du disque de base (par défaut, il faut 1 cm)\\
+\texttt{centrehaut} & = & nom du centre du disque du haut (par défaut, il est nommé H)\\
+\texttt{poscentrehaut} & = & position du nom du centre du disque du haut (par défaut : below)\\
+ & & \small Possibilités : below, left, right, above, above right, above left, below right et below left\\
+\texttt{centrebas} & = & nom du centre du disque du bas (par défaut, il est nommé B)\\
+\texttt{poscentrebas} & = & position du centre du disque de base (par défaut : below)\\
+ & & \small Possibilités : below, left, right, above, above right, above left, below right et below left\\
+\texttt{scalecentre} & = & coefficient d'agrandissement du point représentant le centre du disque de base\\
+\texttt{name}& : & option booléenne ; si elle ne paraît pas, la figure sera sans nom\\
+\texttt{axe} & : & option booléenne ; si elle ne paraît pas, l'axe de révolution ne sera pas dessiné\\
+\texttt{axecolor} &= &couleur de l'axe de révolution (par défaut, il est rouge)\\
+\texttt{legende} & : & option booléenne ; si elle ne paraît pas, la légende de la figure ne sera pas mise\\
+\texttt{rectgener} & : & option booléenne ; si elle ne paraît pas, le rectangle générateur ne sera pas tracé
+\end{tabular}}
+
+\bigskip
+
+\begin{tcblisting}{listing,title={Un exemple de cylindre simple}}
+\begin{tikzpicture}
+\cylindre
+\end{tikzpicture}
+\end{tcblisting}
+
+\newpage
+
+\begin{tcblisting}{listing,title={Un exemple de cylindre avec deux points}}
+\begin{tikzpicture}
+\cylindre[incolor=purple,bordercolor=
+purple,coefopaq=0.3,incl=0.1,rayon=3,
+hauteur=3,name,centrehaut=A,
+poscentrehaut=left,poscentrebas=left,
+scalecentre=3]
+\end{tikzpicture}
+\end{tcblisting}
+
+\medskip
+
+\begin{tcblisting}{listing,title={Un exemple de cylindre avec légende}}
+\begin{tikzpicture}
+\cylindre[incolor=blue,bordercolor=red,
+coefopaq=0.2,name,legende,rectgener,axe,
+poscentrehaut=left,poscentrebas=left,
+scalecentre=3]
+\end{tikzpicture}
+\end{tcblisting}
+
+\subsection{Sphère et boule}
+
+\begin{tcblisting}{codeTEX,title={Sphère \& boule}}
+\begin{tikzpicture}
+\boule[<options>]
+\end{tikzpicture}
+\end{tcblisting}
+
+\bigskip
+
+\begin{tabular}{rcl}
+\texttt{border} & : & option booléenne (si mentionnée, le bord de la boule (la sphère) est dessinée\\
+\texttt{bordercolor} & = & la couleur du bord (par défaut, elle sera noire)\\
+\texttt{incolor} & = & la couleur de la boule (par défaut, elle sera blanche)\\
+\texttt{coefopaq} & = & le coefficient d'opacité, entre 0 et 1 (par défaut, il vaut 0,5)\\
+\texttt{centre} & = & nom du centre de la boule (par défaut, il est nommé O)\\
+\texttt{poscentre} & = & position du centre de la boule (par défaut : below)\\
+ & & \small Possibilités : below, left, right, above, above right, above left, below right et below left\\
+\texttt{scale} & = & coefficient d'agrandissement de la boule\\
+\texttt{name} & : & option booléenne ; si elle ne paraît pas, le centre ne sera pas dessiné\\
+\texttt{legende} & : & option booléenne ; si elle ne paraît pas, la légende ne sera pas mise\\
+\texttt{greenwich} & : & option booléenne ; si elle paraît, le méridien de Greenwich est tracé\\
+\texttt{greenwichcolor} & : & couleur du méridien de Greenwich\\
+\texttt{greenwichlegende} & : & option booléenne ; si elle paraît, la légende du méridien de Greenwich apparaît\\
+\texttt{grandcercle} & : & option booléenne ; si elle paraît, l'équateur sera dessiné\\
+\texttt{equateurlegende} & : & option booléenne ; si elle paraît, la légende sera mise par rapport à l'équateur\\
+& & (grand cercle). Il faut donc que grandcercle=true\\
+\texttt{exemplecoord} & : & option booléenne ; si elle paraît, un exemple de coordonnées sphériques est tracé\\
+\texttt{exemplecoordcolor} & : & couleur dominante de l'exemple (par défaut, vert foncé)\\
+\texttt{exemplecoordname} & : & nom du point dans l'exemple. Par défaut, \og A \fg{} \\
+\end{tabular}
+
+\medskip
+
+\begin{tcblisting}{listing,title={Une boule simple}}
+\begin{tikzpicture}
+\boule
+\end{tikzpicture}
+\end{tcblisting}
+
+\medskip
+
+\begin{tcblisting}{listing,title={Une boule avec grands cercles}}
+\begin{tikzpicture}
+\boule[grandcercle,name,incolor=blue, bordercolor=blue,legende]
+\end{tikzpicture}
+\end{tcblisting}
+
+\medskip
+
+\begin{tcblisting}{listing,title={Une sphère}}
+\begin{tikzpicture}
+\boule[coefopaq=0,border,grandcercle,
+name,poscentre={below right}]
+\end{tikzpicture}
+\end{tcblisting}
+
+
+Dans le programme qui entre en vigueur à la rentrée 2017 au collège, sont introduites les coordonnées sphériques.
+
+Afin de faciliter la tâche aux enseignants, j'ai ajouté à la macro \textbackslash boule des options qui permettent d'afficher un exemple :
+
+
+\begin{tcblisting}{listing,title={Coordonnées sphériques}}
+\begin{tikzpicture}
+\boule[grandcercle,greenwich,greenwichcolor=red,greenwichlegende,border,equateurlegende,name,poscentre=above left,exemplecoord,coefopaq=0]
+\end{tikzpicture}
+La longitude de A est:$80^\circ$.\\La latitude de A est:$40^\circ$.
+\end{tcblisting}
+
+\subsection{Pyramide à base régulière}
+
+\begin{tcblisting}{codeTEX,title={Pyramide}}
+\begin{tikzpicture}
+\pyramreg[<options>]
+\end{tikzpicture}
+\end{tcblisting}
+
+\bigskip
+
+\begin{tabularx}{\linewidth}{rcX}
+\texttt{n} &=& nombre de côtés de la base (par défaut : 3)\\
+\texttt{bordercolor} & = & la couleur du bord (par défaut, elle sera noire)\\
+\texttt{incolor} & = & la couleur de la boule (par défaut, elle sera blanche)\\
+\texttt{coefopaq} & = & le coefficient d'opacité, entre 0 et 1 (par défaut, il vaut 0,5)\\
+\texttt{centre} & =& nom du centre de la base (par défaut, il est nommé O)\\
+\texttt{poscentre} & = & position du centre de la boule (par défaut : below)\\
+ & & \small Possibilités : below, left, right, above, above right, above left, below right et below left\\
+\texttt{sommet} & =& nom du sommet (par défaut, il est nommé S)\\
+\texttt{posommet}&=& position du nom du sommet (par défaut : above). \\
+& &Mêmes choix que pour le centre de la base\\
+\texttt{scalecentre}&=& coefficient d'agrandissement du point représentant le centre de la base\\
+\texttt{axe} &:& option booléenne ; si elle ne figure pas, l'axe de rotation ne sera pas tracé\\
+\texttt{axecolor}&=& couleur de l'axe de rotation (par défaut : rouge)\\
+\texttt{name} &:& option booléenne ; si elle ne paraît pas, le centre de la base et le nom des points ne\\
+& & sera pas mis\\
+\texttt{hauteur}&=& hauteur du sommet (par défaut : 5 cm)\\
+\texttt{rayon}&=& rayon du cercle circonscrit à la base (par défaut : 2 cm)\\
+\texttt{incl}&=& coefficient d'inclinaison de la base\\
+\texttt{legende} &:& option booléenne ; si elle ne paraît pas, la légende ne sera pas mise\\
+\texttt{rotat}&=& angle (en degré) de rotation de la vue (par défaut, il est nul)
+\end{tabularx}
+
+\medskip
+
+\begin{tcblisting}{listing,title={Une pyramide simple}}
+\begin{tikzpicture}
+\pyramreg
+\end{tikzpicture}
+\end{tcblisting}
+
+\medskip
+
+\begin{tcblisting}{listing,title={Une pyramide avec légende}}
+\begin{tikzpicture}[scale=0.8,every node/.style={scale=0.8}]
+\pyramreg[n=6,axe,name,posommet={above right}, poscentre=right, incolor=green!50!black, bordercolor=green!50!black, hauteur=3, rayon=3, scalecentre=5, poscentre=left,legende]
+\end{tikzpicture}
+\end{tcblisting}
+
+\medskip
+
+\begin{tcblisting}{listing,title={Une autre pyramide}}
+\begin{tikzpicture}
+\pyramreg[n=5,incolor=blue,bordercolor=red,
+hauteur=4,incl=0.5]
+\end{tikzpicture}
+\end{tcblisting}
+
+\medskip
+
+\begin{tcblisting}{listing,title={Une pyramide vide}}
+\begin{tikzpicture}
+\pyramreg[n=13,coefopaq=0,name]
+\end{tikzpicture}
+\end{tcblisting}
+
+\subsection{Prisme à base régulière}
+
+\begin{tcblisting}{codeTEX,title={Prisme}}
+\begin{tikzpicture}
+\prismereg[<options>]
+\end{tikzpicture}
+\end{tcblisting}
+
+\bigskip
+
+\begin{tabularx}{\linewidth}{rcX}
+\texttt{n}&=& nombre de côtés de la base (par défaut : 3)\\
+\texttt{bordercolor}&=& la couleur du bord (par défaut, elle sera noire)\\
+\texttt{incolor}&=& la couleur de la boule (par défaut, elle sera blanche)\\
+\texttt{coefopaq}&=& le coefficient d'opacité, entre 0 et 1 (par défaut, il vaut 0,5)\\
+\texttt{axe} &:& option booléenne ; si elle ne figure pas, l'axe de rotation ne sera pas tracé\\
+\texttt{axecolor}&=& couleur de l'axe de rotation (par défaut : rouge)\\
+\texttt{hauteur}&=& hauteur du sommet (par défaut : 5 cm)\\
+\texttt{rayon}&=& rayon du cercle circonscrit à la base (par défaut : 2 cm)\\
+\texttt{incl}&=& coefficient d'inclinaison de la base\\
+\texttt{legende}&:& option booléenne ; si elle ne paraît pas, la légende ne sera pas mise\\
+\texttt{rotat}&=& angle de rotation de la vue (par défaut, il est nul sauf pour n=3 où il est égal à 10$^{\circ}$)\\
+\texttt{name}&:& option booléenne ; si elle ne paraît pas, le nom des points ne figurera pas\\
+\end{tabularx}
+
+\begin{tcblisting}{listing,title={Un prisme simple}}
+\begin{tikzpicture}
+\prismereg
+\end{tikzpicture}
+\end{tcblisting}
+
+\medskip
+
+\begin{tcblisting}{listing,title={Un prisme avec noms des sommets}}
+\begin{tikzpicture}
+\prismereg[n=5,rotat=20,incolor=blue,
+bordercolor=red,rayon=3,hauteur=2,name]
+\end{tikzpicture}
+\end{tcblisting}
+
+\medskip
+
+\begin{tcblisting}{listing,title={Un prisme avec légende}}
+\begin{tikzpicture}[scale=0.8,every node/.style={scale=0.8}]
+\prismereg[n=6,coefopaq=0,incl=0.2,rotat=20,legende,
+incolor=black,axe]
+\end{tikzpicture}
+\end{tcblisting}
+
+\section{Patrons de figures 3D}
+
+\subsection{Pavé droit}
+
+\begin{tcblisting}{codeTEX,title={Patron d'un pavé droit}}
+\begin{tikzpicture}
+\patronpave[<options>]
+\end{tikzpicture}
+\end{tcblisting}
+
+\bigskip
+
+\begin{tabularx}{\linewidth}{rcX}
+\texttt{a}&=& mesure de la première arête (par défaut : 3 cm)\\
+\texttt{b}&=& mesure de la seconde arête (par défaut : 3 cm)\\
+\texttt{c}&=& mesure de la troisième arête (par défaut : 3 cm)\\
+\texttt{pos}&=& position des faces du dessus (1, 2, 3 ou 4) - par défaut : 2\\
+\texttt{legende}&:& option booléenne ; si elle ne figure pas, la légende ne sera pas indiquée\\
+\texttt{codages}&:& option booléenne ; si elle ne figure pas, les codages ne seront pas indiqués\\
+\end{tabularx}
+
+\begin{tcblisting}{listing,title={Patron d'un pavé droit}}
+\begin{tikzpicture}[scale=0.8]
+\patronpave
+\end{tikzpicture}
+\end{tcblisting}
+
+\medskip
+
+\begin{tcblisting}{listing,title={Patron d'un pavé droit avec légende}}
+\begin{tikzpicture}
+\patronpave[pos=1,codages,legende,a=1,b=2,c=3]
+\end{tikzpicture}
+\end{tcblisting}
+
+\bigskip
+
+Pour obtenir tous les patrons d'un pavé, il suffit de faire une boucle (avec le package \texttt{multido}) comme dans l'exemple page suivante :
+
+
+\begin{tcblisting}{listing,title={Une pyramide simple}}
+\multido{\i=1+1}{4}{%
+\begin{tikzpicture}[scale=0.68]
+\patronpave[pos=\i,codages,a=1,b=2,c=3]
+\end{tikzpicture}
+\ifnum\i=2 \\ \fi}
+\end{tcblisting}
+
+
+\subsection{Cône de révolution}
+
+\begin{tcblisting}{codeTEX,title={Patron d'un c\^one de révolution}}
+\begin{tikzpicture}
+\patroncone[<options>]
+\end{tikzpicture}
+\end{tcblisting}
+
+\medskip
+
+\begin{tabularx}{\linewidth}{rcX}
+\texttt{r}&=& rayon du disque de base (par défaut : 3 cm)\\
+\texttt{h}&=& hauteur du cône (par défaut : 5 cm)\\
+\texttt{legende}&:& option booléenne ; si elle ne figure pas, la légende ne sera pas indiquée
+\end{tabularx}
+
+\bigskip
+
+\begin{tcblisting}{listing,title={Patron d'un c\^one simple}}
+\begin{tikzpicture}
+\patroncone
+\end{tikzpicture}
+\end{tcblisting}
+
+
+\begin{tcblisting}{listing,title={Patron avec légende d'un c\^one}}
+\begin{tikzpicture}
+\patroncone[legende,r=2,h=3]
+\end{tikzpicture}
+\end{tcblisting}
+
+
+\subsection{Cylindre de révolution}
+
+\begin{tcblisting}{codeTEX,title={Patron d'un cylindre de révolution}}
+\begin{tikzpicture}
+\patroncylindre[<options>]
+\end{tikzpicture}
+\end{tcblisting}
+
+\bigskip
+
+\begin{tabularx}{\linewidth}{rcX}
+\texttt{r}&=& rayon du disque de base (par défaut : 2 cm)\\
+\texttt{h}&=& hauteur du cône (par défaut : 5 cm)\\
+\texttt{legende}&:& option booléenne ; si elle ne figure pas, la légende ne sera pas indiquée
+\end{tabularx}
+
+
+\begin{tcblisting}{listing,title={Patron d'un cylindre simple}}
+\begin{tikzpicture}[scale=0.7]
+\patroncylindre
+\end{tikzpicture}
+\end{tcblisting}
+
+
+\begin{tcblisting}{listing,title={Patron avec légende d'un cylindre}}
+\begin{tikzpicture}
+\patroncylindre[legende,r=1,h=1]
+\end{tikzpicture}
+\end{tcblisting}
+
+
+\subsection{Pyramide à base régulière}
+
+\begin{tcblisting}{codeTEX,title={Patron d'une pyramide}}
+\begin{tikzpicture}
+\patronpyramreg[<options>]
+\end{tikzpicture}
+\end{tcblisting}
+
+\bigskip
+
+\begin{tabularx}{\linewidth}{rcX}
+\texttt{n}&=& nombre de côtés du polygone de base (par défaut : 3)\\
+\texttt{r}&=& rayon du cercle circonscrit au polygone de base (par défaut : 3 cm)\\
+\texttt{h}&=& hauteur de la pyramide (par défaut : 5 cm)\\
+\texttt{legende}&:& option booléenne ; si elle ne figure pas, la légende ne sera pas indiquée
+\end{tabularx}
+
+
+\begin{tcblisting}{listing,title={Patron simple d'une pyramide}}
+\begin{tikzpicture}
+\patronpyramreg
+\end{tikzpicture}
+\end{tcblisting}
+
+\begin{tcblisting}{listing,title={Patron avec légende d'une pyramide}}
+\begin{tikzpicture}
+\patronpyramreg[legende,r=2,h=4]
+\end{tikzpicture}
+\end{tcblisting}
+
+\subsection{Prisme à base régulière}
+
+\begin{tcblisting}{codeTEX,title={Patron d'un prisme}}
+\begin{tikzpicture}
+\patronprismereg[<options>]
+\end{tikzpicture}
+\end{tcblisting}
+
+\bigskip
+
+\begin{tabularx}{\linewidth}{rcX}
+\texttt{n}&=& nombre de côtés du polygone de base (par défaut : 3)\\
+\texttt{r}&=& rayon du cercle circonscrit au polygone de base (par défaut : 3 cm)\\
+\texttt{h}&=& hauteur du prisme (par défaut : 5 cm)\\
+\texttt{legende}&:& option booléenne ; si elle ne figure pas, la légende ne sera pas indiquée\\
+\texttt{pos}&=& position de la face du haut dans le patron (par défaut, cette valeur vaut 1). \\
+& & Ici, vous pouvez mettre un nombre de 1 à n.\\
+\end{tabularx}
+
+\begin{tcblisting}{listing,title={Patron d'un prisme}}
+\begin{tikzpicture}[scale=0.8]
+\patronprismereg
+\end{tikzpicture}
+\end{tcblisting}
+
+\begin{tcblisting}{listing,title={Patron avec légende d'un prisme}}
+\begin{tikzpicture}[scale=0.8]
+\patronprismereg[legende,r=2,h=4,n=5]
+\end{tikzpicture}
+\end{tcblisting}
+
+\begin{tcblisting}{listing,title={Autre patron d'un prisme}}
+\begin{tikzpicture}
+\patronprismereg[r=1,h=2,n=6,pos=2]
+\end{tikzpicture}
+\end{tcblisting}
+
+
+\section{Juxtaposition de figures}
+
+\subsection{Patron et solide côte-à-côte}
+
+\begin{tcblisting}{listing,title={Solide \& patron}}
+\begin{tikzpicture}
+\begin{scope}
+\cone[incolor=purple!20,bordercolor=purple,coefopaq=0.3,incl=0.1,rayon=2,
+hauteur=3,name,sommet=A,centre=B,poscentre=right,scalecentre=3]
+\end{scope}
+\begin{scope}[xshift=8cm,yshift=3cm]
+\patroncone[legende,r=2,h=3]
+\end{scope}
+\end{tikzpicture}
+\end{tcblisting}
+
+\subsection{Juxtaposition de deux solides}
+
+\begin{tcblisting}{listing,title={Juxtaposition de deux solides}}
+\begin{tikzpicture}
+\begin{scope}
+\cone[incolor=green!20,bordercolor=green!50!black,
+coefopaq=0.3,incl=0.1,rayon=2,hauteur=3,scalecentre=3]
+\end{scope}
+\begin{scope}[xshift=2cm,yshift=-2cm]
+\boule[incolor=green!20,bordercolor=green!50!black,
+coefopaq=.3]
+\end{scope}
+\end{tikzpicture}
+\end{tcblisting}
+
+\section{Les calculs}
+
+\emph{Cette section voit le jour à partir de la version 1.6. Pour le moment, les calculs ne portent que sur la décomposition en produit de facteurs premiers, mais il est fort à parier que je vais ajouter d'autres fonctions. N'hésitez pas à me faire part de vos souhaits.}
+
+\begin{attention}
+Tous les calculs se font à l'aide de XCAS. Il faut donc le télécharger sur la page : \href{https://www-fourier.ujf-grenoble.fr/~parisse/giac_fr.html}{Xcas} et l'installer avant toute compilation.
+
+Il faut aussi vérifier que la compilation se fasse avec l'option :
+\begin{center}
+\texttt{--shell-escape}
+\end{center}
+\end{attention}
+
+\subsection{Décomposition en produits de facteurs premiers}
+
+\begin{tcblisting}{listing,title={Décomposition en produit de facteurs premiers}}
+\[
+\numprint{5260}=
+\begin{ifactors}
+5260
+\end{ifactors}
+\]
+\end{tcblisting}
+
+\begin{tcblisting}{listing,title={Décomposition en produit de facteurs premiers}}
+On a : \numprint{5260} =
+\begin{ifactors}
+5260
+\end{ifactors}
+\end{tcblisting}
+
+\paragraph*{Remarque :} il y a un bug dès lors que l'on souhaite mettre cette dernière égalité entre deux \og \verb+$+ \fg{} et je n'arrive pas à y remédier donc si quelqu'un a le courage de regarder ce qui se passe... son aide sera la bienvenue !
+
+\begin{tcblisting}{listing,title={Décomposition en produit de facteurs premiers : table}}
+\begin{center}
+\begin{ifactorstable}
+2486
+\end{ifactorstable}
+\end{center}
+\end{tcblisting}
+
+
+\paragraph*{Remarque :} cet environnement créé des fichiers auxiliaires :
+\begin{itemize}
+\item n.val : contient le nombre à décomposer
+\item decomp.cxx ou decomp\verb+_+table.cxx : contient le script XCAS
+\item decomp.tex ou decomp\verb+_+table.tex : contient le résultat
+\end{itemize}
+
+\section{Historique de l'extension}
+
+\arrayrulecolor{red!50!black}
+\begin{tabularx}{\linewidth}{|>{\ttfamily\arraybackslash}Sl>{\ttfamily\arraybackslash\columncolor{red!10}}SlX|}
+\hline
+28/06/2011 & Version V1.01& Version initiale.\\
+\hline
+05/05/2013 & Version V1.02 & ajout de l'environnement \og pasbox \fg{} et de la commande \texttt{\textbackslash breakbox}.\\
+\hline
+05/05/2013 & Version V1.03 & ajout de l'option \texttt{notitle} dans la commande \texttt{env}.\\
+\hline
+07/05/2013 & Version V1.04 & ajout de l'option \texttt{notitlebreak} pour l'environnement \texttt{pasbox} et pour la commande \textbackslash env.\\
+\hline
+06/07/2013 & Version V1.05 & ajout de l'option \texttt{notoc} pour l'environnement \texttt{pasbox} et pour la commande \textbackslash env.\\
+& & modification de la valeur par défaut de l'option \texttt{toc} (par défaut, \texttt{toc=false} maintenant).\\
+& & ajout de l'option \texttt{everytoc} lors de l'appel du package\\
+& & ajout de l'option \textbackslash\verb+@+ifpackageloaded\{tikz\} dans le code (problème de compatibilité avec d'autres extensions)\\
+& & ajout des styles \og demo \fg{} et \og thm \fg{} pour l'environnement \texttt{pasbox} et pour la commande \textbackslash env.\\
+& & ajout de la commande \textbackslash itemclass et modification des styles de listes.\\
+\hline
+28/11/2013 & Version V1.06 & Ajout des environnements \og aretenir \fg, \og attention \fg{} et \og prerequis \fg, et de la commande \textbackslash bonus.\\
+\hline
+19/08/2014 & Version V1.07 & Ajout de l'option \og num \fg{} à la commande \textbackslash env et à l'environnement pasbox. Ajout de l'option \og autonum \fg{} à la commande \textbackslash chap.\\
+\hline
+10/11/2014 & Version V1.08 & Correction de 2 problèmes (\og Théorème \fg{} était mis avec un \og s \fg{} m\^eme au singulier et le mot \og ar\^ete \fg{} était mal codé dans les légendes de solides.\\
+\hline
+26/11/2014 & Version V1.09 & Amélioration du centrage du numéro de chapitre dans le cercle.\\
+& & Amélioration de la commande \textbackslash definmot en choisissant automatiquement la couleur de l'environnement.\\
+& & Réajustement des dimensions pour les titres et les environnements (defi, thm, ...).\\
+& & correction du bug concernant l'option \og ant \fg{} lors de l'appel de l'extension.\\
+\hline
+26/11/2014 & Version V1.09b & Amélioration de la correction concernant la largeur des environnements (defi,thm,...).\\
+\hline
+\end{tabularx}
+
+\begin{tabularx}{\linewidth}{|>{\ttfamily\arraybackslash}Sl>{\ttfamily\arraybackslash\columncolor{red!10}}SlX|}
+\hline
+27/11/2014 & Version V1.09c & Correction concernant l'option \og ant \fg{} (fonte en gras).\\
+\hline
+11/12/2014 & Version V1.09d & Correction concernant les environnements \texttt{aretenir} et \texttt{prerequis} (réajustement de la largeur).\\
+& & Correctif de la commande \textbackslash\texttt{breakbox} (erreur de largeur)\\
+\hline
+22/03/2015 & Version V1.10 & Ajout de l'option \og nonewpage \fg{} à la commande \texttt{chap}\\
+\hline
+29/04/2015 & Version V1.20 & Ajout de l'environnement \og warning \fg{} et amélioration légère de l'environnement \og attention \fg{}\\
+\hline
+24/07/2016 & Version V1.3 & Ajout de l'option \og noitemstyle \fg{} \\
+\hline
+29/07/2016 & Version V1.4 & Modification de la macro \og definmot \fg{} pour qu'elle mette en gras le mode mathématique\\
+04/08/2016 & Version V1.5 & Ajout des options générales \og notitlebreak \fg{} et \og noeffect \fg{} \\
+& & Ajout d'option à la macro \textbackslash boule afin de prendre en compte les coordonnées sphériques (nouveau programme Collège)\\
+\hline
+18/08/2016 & Version V1.6 & Ajout de l'environnement \texttt{ifactors} et \texttt{ifactorstable} permettant de décomposer un entier en produit de facteurs premiers\\
+\hline
+\end{tabularx}
+
+\section{Remarques et suggestions}
+
+On m'a fait remarquer que je pourrais rendre automatique la liste à puces dans le cas où l'option \texttt{pluriel} était informée dans un environnement (thm, defi, ...).
+
+Je n'ai pas souhaité cette automatisation car je pense que certaines personnes n'aimeraient pas cela.
+
+\medskip
+
+Si vous aussi vous souhaitez participer à l'évolution de cette extension, n'hésitez pas à m'envoyer un mail.
+\end{document}
diff --git a/macros/latex/contrib/pas-cours/doc/warning-perso.png b/macros/latex/contrib/pas-cours/doc/warning-perso.png
new file mode 100644
index 0000000000..7e689eec31
--- /dev/null
+++ b/macros/latex/contrib/pas-cours/doc/warning-perso.png
Binary files differ
diff --git a/macros/latex/contrib/pas-cours/latex/attention.png b/macros/latex/contrib/pas-cours/latex/attention.png
new file mode 100644
index 0000000000..b11a7b6a4f
--- /dev/null
+++ b/macros/latex/contrib/pas-cours/latex/attention.png
Binary files differ
diff --git a/macros/latex/contrib/pas-cours/latex/coeur.png b/macros/latex/contrib/pas-cours/latex/coeur.png
new file mode 100644
index 0000000000..4e87936a79
--- /dev/null
+++ b/macros/latex/contrib/pas-cours/latex/coeur.png
Binary files differ
diff --git a/macros/latex/contrib/pas-cours/latex/macro-calculs.tex b/macros/latex/contrib/pas-cours/latex/macro-calculs.tex
new file mode 100644
index 0000000000..ae6f27cc5d
--- /dev/null
+++ b/macros/latex/contrib/pas-cours/latex/macro-calculs.tex
@@ -0,0 +1,45 @@
+% environnement "ifactors" : decomposition en produit de facteurs premiers
+
+\begin{VerbatimOut}{decomp.cxx}
+maple_mode(0);
+n:=read("n.val");
+F:=ifactors(n);
+l:=size(F);
+T:="";
+c:=0;
+for (k:=0;k<l;k:=k+2) { if c!=0 then T:=T+"\\times"; end_if T:=T+F[k]+"^{"+F[k+1]+"}"; c++; };
+Sortie:=fopen("decomp.tex");
+fprint(Sortie,Unquoted,T);
+fclose(Sortie);
+\end{VerbatimOut}
+
+\newenvironment*{ifactors}
+{\VerbatimEnvironment\begin{VerbatimOut}{n.val}}
+{\end{VerbatimOut}
+\immediate\write18{giac <decomp.cxx}
+\ensuremath{\input{decomp.tex}}
+}
+
+% environnement "ifactors_table"
+
+\begin{VerbatimOut}{decomp_table.cxx}
+maple_mode(0);
+n:=read("n.val");
+F:=ifactors(n);
+l:=size(F);
+for (k:=0;k<l;k:=k+2){ L[k/2]:=F[k]; };
+T:="\\begin{tabular}{r|l}";
+k:=0;
+while (n!=1) { T:=T+n+"&"; if (irem(n,L[k])==0) { T:=T+L[k]+"\\\\"; n:=n/L[k]; } else { k:=k+1; T:=T+L[k]+"\\\\"; n:=n/L[k]; }; };
+T:=T+"1 & \\\\\\end{tabular}";
+Sortie:=fopen("decomp_table.tex");
+fprint(Sortie,Unquoted,T);
+fclose(Sortie);
+\end{VerbatimOut}
+
+\newenvironment*{ifactorstable}
+{\VerbatimEnvironment\begin{VerbatimOut}{n.val}}
+{\end{VerbatimOut}
+\immediate\write18{giac <decomp_table.cxx}
+\input{decomp_table.tex}
+} \ No newline at end of file
diff --git a/macros/latex/contrib/pas-cours/latex/macro-patrons.tex b/macros/latex/contrib/pas-cours/latex/macro-patrons.tex
new file mode 100644
index 0000000000..a682bb6f7d
--- /dev/null
+++ b/macros/latex/contrib/pas-cours/latex/macro-patrons.tex
@@ -0,0 +1,318 @@
+% Fichiers comprenant les macros de construction des patrons de solides
+
+% \patronprismereg[ n = nombre de côtés de la base,
+% h = hauteur du prisme,
+% r = rayon du cercle circonscrit à la base,
+% pos = 1 ou 2 ou ... ou n (position de la face du haut)
+% legende (booléen)]
+
+\define@cmdkey [PAS] {patronprismereg} {r}{}
+\define@cmdkey [PAS] {patronprismereg} {h}{}
+\define@cmdkey [PAS] {patronprismereg} {n}{}
+\define@cmdkey [PAS] {patronprismereg} {pos}{}
+\define@boolkey[PAS] {patronprismereg} {legende}[true]{}
+
+\presetkeys [PAS] {patronprismereg} {
+ n = 3,
+ r = 3,
+ h = 5,
+ pos = 1,
+ legende = false}{}
+
+\newcommand*{\patronprismereg}[1][]{\pasPatronprismereg[#1]}
+
+\def\pasPatronprismereg[#1]{
+ \setkeys[PAS]{patronprismereg}{#1}
+ \pgfmathparse{360/\cmdPAS@patronprismereg@n}\let\angle\pgfmathresult
+ \foreach \i in {1,...,\cmdPAS@patronprismereg@n}
+ {
+ \pgfmathparse{\cmdPAS@patronprismereg@r*cos(\angle*(\i-1))}\let\x\pgfmathresult
+ \pgfmathparse{\cmdPAS@patronprismereg@r*sin(\angle*(\i-1))}\let\y\pgfmathresult
+ \coordinate (A\i) at (\x,\y);
+
+ \pgfmathparse{\cmdPAS@patronprismereg@r*cos(\angle*\i)}\let\x\pgfmathresult
+ \pgfmathparse{\cmdPAS@patronprismereg@r*sin(\angle*\i)}\let\y\pgfmathresult
+ \coordinate (D\i) at (\x,\y);
+
+ \pgfmathparse{\cmdPAS@patronprismereg@h*cos(\angle/2+(\i-1)*\angle)}\let\x\pgfmathresult
+ \pgfmathparse{\cmdPAS@patronprismereg@h*sin(\angle/2+(\i-1)*\angle)}\let\y\pgfmathresult
+ \coordinate (B\i) at ($(A\i)+(\x,\y)$);
+ \coordinate (C\i) at ($(D\i)+(\x,\y)$);
+
+ \draw (A\i) -- (D\i) -- (C\i) -- (B\i) -- cycle;
+ }
+
+ \ifPAS@patronprismereg@legende
+ \draw[dotted] (D1) -- (0,0) -- (A1);
+ \pgfmathparse{.5*cos(\angle/2)}\let\x\pgfmathresult
+ \pgfmathparse{.5*sin(\angle/2)}\let\y\pgfmathresult
+ \draw[dotted,<->,>=stealth'] (.5,0) arc (0:\angle:.5cm);
+ \node[right,scale=.5] at (\x,\y) {\angle $^{\circ}$};
+ \node[below,scale=.5] at (\cmdPAS@patronprismereg@r/2,0) {\cmdPAS@patronprismereg@r};
+ \coordinate (M) at (barycentric cs:A1=1,D1=1);
+ \coordinate (N) at (barycentric cs:B1=1,C1=1);
+ \draw[<->,>=stealth',dotted] (M) -- (N) node[midway,above,scale=.5,rotate=\angle/2] {\cmdPAS@patronprismereg@h};
+ \fi
+
+ % Face du haut
+ \pgfmathparse{2*\cmdPAS@patronprismereg@r*cos(\angle/2)+\cmdPAS@patronprismereg@h}\let\d\pgfmathresult
+ \pgfmathparse{\d*cos(\angle/2+(\cmdPAS@patronprismereg@pos-1)*\angle)}\let\tx\pgfmathresult
+ \pgfmathparse{\d*sin(\angle/2+(\cmdPAS@patronprismereg@pos-1)*\angle)}\let\ty\pgfmathresult
+ \coordinate (O) at (\tx,\ty);
+ \foreach \i in {1,...,\cmdPAS@patronprismereg@n}
+ {
+ \coordinate (C\i) at ($(A\i)+(\tx,\ty)$);
+ \coordinate (B\i) at (barycentric cs:C\i=1,O=-2);
+ }
+
+ \draw (B1) \foreach \i in {2,...,\cmdPAS@patronprismereg@n}{-- (B\i)} -- cycle;
+}
+
+% \patronpyramreg[ n = nombre de côtés de la base,
+% h = hauteur de la pyramide,
+% r = rayon du cercle circonscrit à la base,
+% legende (booléen)]
+
+\define@cmdkey [PAS] {patronpyramreg} {r}{}
+\define@cmdkey [PAS] {patronpyramreg} {h}{}
+\define@cmdkey [PAS] {patronpyramreg} {n}{}
+\define@boolkey[PAS] {patronpyramreg} {legende}[true]{}
+
+\presetkeys [PAS] {patronpyramreg} {
+ n = 3,
+ r = 3,
+ h = 5,
+ legende = false}{}
+
+\newcommand*{\patronpyramreg}[1][]{\pasPatronpyramreg[#1]}
+
+\def\pasPatronpyramreg[#1]{
+ \setkeys[PAS]{patronpyramreg}{#1}
+ \foreach \i in {1,...,\cmdPAS@patronpyramreg@n}
+ {
+ \pgfmathparse{\cmdPAS@patronpyramreg@r*cos((360/\cmdPAS@patronpyramreg@n)*(\i-1))}\let\x\pgfmathresult
+ \pgfmathparse{\cmdPAS@patronpyramreg@r*sin((360/\cmdPAS@patronpyramreg@n)*(\i-1))}\let\y\pgfmathresult
+ \coordinate (A\i) at (\x,\y);
+ \pgfmathparse{(\cmdPAS@patronpyramreg@h+\cmdPAS@patronpyramreg@r*cos(180/\cmdPAS@patronpyramreg@n))*cos((360/\cmdPAS@patronpyramreg@n)*(\i-1)+(180/\cmdPAS@patronpyramreg@n))}\let\x\pgfmathresult
+ \pgfmathparse{(\cmdPAS@patronpyramreg@h+\cmdPAS@patronpyramreg@r*cos(180/\cmdPAS@patronpyramreg@n))*sin((360/\cmdPAS@patronpyramreg@n)*(\i-1)+(180/\cmdPAS@patronpyramreg@n))}\let\y\pgfmathresult
+ \coordinate (S\i) at (\x,\y);
+ }
+ \draw (A1) -- (S1) \foreach \i in {2,...,\cmdPAS@patronpyramreg@n} {-- (A\i) -- (S\i)} -- cycle;
+ \draw (A1) \foreach \i in {2,...,\cmdPAS@patronpyramreg@n} {-- (A\i)} -- cycle;
+ \ifPAS@patronpyramreg@legende
+ \draw[dotted] (A1) -- (0,0) -- (A2);
+ \pgfmathparse{360/\cmdPAS@patronpyramreg@n}\let\angle\pgfmathresult
+ \pgfmathparse{.5*cos(180/\cmdPAS@patronpyramreg@n)}\let\x\pgfmathresult
+ \pgfmathparse{.5*sin(180/\cmdPAS@patronpyramreg@n)}\let\y\pgfmathresult
+ \draw[dotted,<->,>=stealth'] (.5,0) arc (0:\angle:.5cm);
+ \node[right,scale=.5] at (\x,\y) {\angle $^{\circ}$};
+ \node[below,scale=.5] at (\cmdPAS@patronpyramreg@r/2,0) {\cmdPAS@patronpyramreg@r};
+ \coordinate (M) at (barycentric cs:A1=1,A2=1);
+ \draw[<->,>=stealth',dotted] (M) -- (S1) node[midway,above,scale=.5,rotate=\angle/2] {\cmdPAS@patronpyramreg@h};
+ \fi
+}
+
+% \patroncone
+% Synthaxe : \patroncone[ r = rayon de la base,
+% h = hauteur du cône,
+% legende (booléen)]
+
+\define@cmdkey [PAS] {patroncone} {r}{}
+\define@cmdkey [PAS] {patroncone} {h}{}
+\define@boolkey[PAS] {patroncone} {legende}[true]{}
+
+\presetkeys [PAS] {patroncone} {
+ r = 3,
+ h = 5,
+ legende = false}{}
+
+\newcommand*{\patroncone}[1][]{\pasPatroncone[#1]}
+
+\def\pasPatroncone[#1]{
+ \setkeys[PAS]{patroncone}{#1}
+ \pgfmathparse{360*\cmdPAS@patroncone@r/\cmdPAS@patroncone@h}\let\angle\pgfmathresult
+ \draw (0,-\cmdPAS@patroncone@h-\cmdPAS@patroncone@r) circle (\cmdPAS@patroncone@r cm);
+ \pgfmathparse{\cmdPAS@patroncone@h*cos(270-\angle/2)}\let\x\pgfmathresult
+ \pgfmathparse{\cmdPAS@patroncone@h*sin(270-\angle/2)}\let\y\pgfmathresult
+ \draw (0,0) -- (\x,\y) arc (270-\angle/2:270+\angle/2:\cmdPAS@patroncone@h cm) -- cycle;
+ \ifPAS@patroncone@legende
+ \node[below] at (\x/2,\y/2) {\cmdPAS@patroncone@h};
+ \node[below] at (-\x/2,\y/2) {\cmdPAS@patroncone@h};
+ \pgfmathparse{cos(270-\angle/2)}\let\x\pgfmathresult
+ \pgfmathparse{sin(270-\angle/2)}\let\y\pgfmathresult
+ \draw[<->,>=stealth'] (\x,\y) arc (270-\angle/2:270+\angle/2:1cm);
+ \node[above,scale=.5] at (0,-1.3) {\angle $^{\circ}$};
+ \pgfmathparse{\cmdPAS@patroncone@r*cos(-30)}\let\x\pgfmathresult
+ \pgfmathparse{\cmdPAS@patroncone@r*sin(-30)-\cmdPAS@patroncone@h-\cmdPAS@patroncone@r}\let\y\pgfmathresult
+ \draw[<->,>=stealth'] (0,-\cmdPAS@patroncone@h-\cmdPAS@patroncone@r) -- (\x,\y) node[midway,above] {\cmdPAS@patroncone@r};
+ \fi
+}
+
+% \patroncylindre
+% Synthaxe : \patroncylindre[ r = rayon de la base,
+% h = hauteur du cône,
+% legende (booléen)]
+
+\define@cmdkey [PAS] {patroncylindre} {r}{}
+\define@cmdkey [PAS] {patroncylindre} {h}{}
+\define@boolkey[PAS] {patroncylindre} {legende}[true]{}
+
+\presetkeys [PAS] {patroncylindre} {
+ r = 2,
+ h = 5,
+ legende = false}{}
+
+\newcommand*{\patroncylindre}[1][]{\pasPatroncylindre[#1]}
+
+\def\pasPatroncylindre[#1]{
+ \setkeys[PAS]{patroncylindre}{#1}
+ \draw (0,\cmdPAS@patroncylindre@h+\cmdPAS@patroncylindre@r) circle (\cmdPAS@patroncylindre@r cm);
+ \draw (0,-\cmdPAS@patroncylindre@r) circle (\cmdPAS@patroncylindre@r cm);
+ \pgfmathparse{\cmdPAS@patroncylindre@r*3.19159}\let\demilongueur\pgfmathresult
+ \draw (-\demilongueur,0) rectangle +(2*\demilongueur,\cmdPAS@patroncylindre@h);
+ \ifPAS@patroncylindre@legende
+ \draw[<->,>=stealth'] (-\demilongueur,-2*\cmdPAS@patroncylindre@r-1) -- (\demilongueur,-2*\cmdPAS@patroncylindre@r-1) node[midway,fill=white] {$2\pi \times \cmdPAS@patroncylindre@r$};
+ \draw[dotted] (-\demilongueur,0) -- (-\demilongueur,-2*\cmdPAS@patroncylindre@r-1);
+ \draw[dotted] (\demilongueur,0) -- (\demilongueur,-2*\cmdPAS@patroncylindre@r-1);
+ \draw[<->,>=stealth'] (\demilongueur+1,0) -- (\demilongueur+1,\cmdPAS@patroncylindre@h) node[midway,right] {\cmdPAS@patroncylindre@h};
+ \draw[dotted] (\demilongueur,0) -- (\demilongueur+1,0);
+ \draw[dotted] (\demilongueur,\cmdPAS@patroncylindre@h) -- (\demilongueur+1,\cmdPAS@patroncylindre@h);
+ \draw[<->,>=stealth'] (0,\cmdPAS@patroncylindre@h+\cmdPAS@patroncylindre@r) -- (\cmdPAS@patroncylindre@r,\cmdPAS@patroncylindre@h+\cmdPAS@patroncylindre@r) node[midway,fill=white] {\cmdPAS@patroncylindre@r};
+ \draw[<->,>=stealth'] (0,-\cmdPAS@patroncylindre@r) -- (\cmdPAS@patroncylindre@r,-\cmdPAS@patroncylindre@r) node[midway,fill=white] {\cmdPAS@patroncylindre@r};
+ \fi
+}
+
+
+% \patronpave : dessine un patron de pavé droit
+% Synthaxe : \patronpave[ a = dimension 1,
+% b = dimension 2,
+% c = dimension 3,
+% pos = position des rabats (1, 2, 3 ou 4),
+% codages (booléen),
+% legende (booléen)]
+
+\define@cmdkey [PAS] {patronpave} {a}{}
+\define@cmdkey [PAS] {patronpave} {b}{}
+\define@cmdkey [PAS] {patronpave} {c}{}
+\define@cmdkey [PAS] {patronpave} {pos}{}
+\define@boolkey[PAS] {patronpave} {codages}[true]{}
+\define@boolkey[PAS] {patronpave} {legende}[true]{}
+
+\presetkeys [PAS] {patronpave} {
+ a = 3,
+ b = 3,
+ c = 3,
+ pos = 2,
+ codages = false,
+ legende = false}{}
+
+\newcommand*{\patronpave}[1][]{\pasPatronpave[#1]}
+
+\def\pasPatronpave[#1]{
+ \setkeys[PAS]{patronpave}{#1}
+ \draw (0,0) rectangle +(2*\cmdPAS@patronpave@c+2*\cmdPAS@patronpave@a,\cmdPAS@patronpave@b);
+ \draw (\cmdPAS@patronpave@c,0) -- (\cmdPAS@patronpave@c,\cmdPAS@patronpave@b);
+ \draw (\cmdPAS@patronpave@a+\cmdPAS@patronpave@c,0) -- (\cmdPAS@patronpave@a+\cmdPAS@patronpave@c,\cmdPAS@patronpave@b);
+ \draw (\cmdPAS@patronpave@a+2*\cmdPAS@patronpave@c,0) -- (\cmdPAS@patronpave@a+2*\cmdPAS@patronpave@c,\cmdPAS@patronpave@b);
+ \ifPAS@patronpave@codages
+ \node[scale=.5] at (\cmdPAS@patronpave@c/2,\cmdPAS@patronpave@b) {///};
+ \node[scale=.5] at (\cmdPAS@patronpave@c/2,0) {///};
+ \node[scale=.5] at (3*\cmdPAS@patronpave@c/2+\cmdPAS@patronpave@a,\cmdPAS@patronpave@b) {///};
+ \node[scale=.5] at (3*\cmdPAS@patronpave@c/2+\cmdPAS@patronpave@a,0) {///};
+ \node[scale=.5] at (\cmdPAS@patronpave@c+\cmdPAS@patronpave@a/2,0) {/};
+ \node[scale=.5] at (\cmdPAS@patronpave@c+\cmdPAS@patronpave@a/2,\cmdPAS@patronpave@b) {/};
+ \node[scale=.5] at (2*\cmdPAS@patronpave@c+3*\cmdPAS@patronpave@a/2,0) {/};
+ \node[scale=.5] at (2*\cmdPAS@patronpave@c+3*\cmdPAS@patronpave@a/2,\cmdPAS@patronpave@b) {/};
+ \node[rotate=90,scale=.5] at (0,\cmdPAS@patronpave@b/2) {//};
+ \node[rotate=90,scale=.5] at (\cmdPAS@patronpave@c,\cmdPAS@patronpave@b/2) {//};
+ \node[rotate=90,scale=.5] at (\cmdPAS@patronpave@c+\cmdPAS@patronpave@a,\cmdPAS@patronpave@b/2) {//};
+ \node[rotate=90,scale=.5] at (2*\cmdPAS@patronpave@c+\cmdPAS@patronpave@a,\cmdPAS@patronpave@b/2) {//};
+ \node[rotate=90,scale=.5] at (2*\cmdPAS@patronpave@c+2*\cmdPAS@patronpave@a,\cmdPAS@patronpave@b/2) {//};
+ \fi
+ \IfStrEq{\cmdPAS@patronpave@pos}{1}
+ {
+ \draw (0,\cmdPAS@patronpave@b+\cmdPAS@patronpave@a) rectangle +(\cmdPAS@patronpave@c,-2*\cmdPAS@patronpave@a-\cmdPAS@patronpave@b);
+ \ifPAS@patronpave@codages
+ \node[scale=.5,rotate=90] at (0,\cmdPAS@patronpave@b+\cmdPAS@patronpave@a/2) {/};
+ \node[scale=.5] at (\cmdPAS@patronpave@c/2,\cmdPAS@patronpave@a+\cmdPAS@patronpave@b) {///};
+ \node[scale=.5,rotate=90] at (\cmdPAS@patronpave@c,\cmdPAS@patronpave@b+\cmdPAS@patronpave@a/2) {/};
+ \node[scale=.5,rotate=90] at (0,-\cmdPAS@patronpave@a/2) {/};
+ \node[scale=.5] at (\cmdPAS@patronpave@c/2,-\cmdPAS@patronpave@a) {///};
+ \node[scale=.5,rotate=90] at (\cmdPAS@patronpave@c,-\cmdPAS@patronpave@a/2) {/};
+ \fi
+ \ifPAS@patronpave@legende
+ \draw[gray,dotted] (0,\cmdPAS@patronpave@b+\cmdPAS@patronpave@a) -- (0,\cmdPAS@patronpave@b+\cmdPAS@patronpave@a+1);
+ \draw[gray,dotted] (\cmdPAS@patronpave@c,\cmdPAS@patronpave@b+\cmdPAS@patronpave@a) -- (\cmdPAS@patronpave@c,\cmdPAS@patronpave@b+\cmdPAS@patronpave@a+1);
+ \draw[<->,>=stealth'] (0,\cmdPAS@patronpave@b+\cmdPAS@patronpave@a+1) -- (\cmdPAS@patronpave@c,\cmdPAS@patronpave@b+\cmdPAS@patronpave@a+1) node[midway,above] {\cmdPAS@patronpave@c};
+ \draw[gray,dotted] (\cmdPAS@patronpave@a+2*\cmdPAS@patronpave@c,0) -- (2*\cmdPAS@patronpave@c+\cmdPAS@patronpave@a,-1);
+ \draw[gray,dotted] (2*\cmdPAS@patronpave@c+2*\cmdPAS@patronpave@a,0) -- (2*\cmdPAS@patronpave@c+2*\cmdPAS@patronpave@a,-1);
+ \draw[<->,>=stealth'] (2*\cmdPAS@patronpave@c+\cmdPAS@patronpave@a,-1) -- (2*\cmdPAS@patronpave@c+2*\cmdPAS@patronpave@a,-1) node[midway,below] {\cmdPAS@patronpave@a};
+ \fi
+ }
+ {
+ \IfStrEq{\cmdPAS@patronpave@pos}{2}
+ {
+ \draw (\cmdPAS@patronpave@c,\cmdPAS@patronpave@b+\cmdPAS@patronpave@c) rectangle +(\cmdPAS@patronpave@a,-2*\cmdPAS@patronpave@c-\cmdPAS@patronpave@b);
+ \ifPAS@patronpave@codages
+ \node[scale=.5,rotate=90] at (\cmdPAS@patronpave@c,\cmdPAS@patronpave@b+\cmdPAS@patronpave@c/2) {///};
+ \node[scale=.5] at (\cmdPAS@patronpave@a/2+\cmdPAS@patronpave@c,\cmdPAS@patronpave@c+\cmdPAS@patronpave@b) {/};
+ \node[scale=.5,rotate=90] at (\cmdPAS@patronpave@c+\cmdPAS@patronpave@a,\cmdPAS@patronpave@b+\cmdPAS@patronpave@c/2) {///};
+ \node[scale=.5,rotate=90] at (\cmdPAS@patronpave@c,-\cmdPAS@patronpave@c/2) {///};
+ \node[scale=.5] at (\cmdPAS@patronpave@a/2+\cmdPAS@patronpave@c,-\cmdPAS@patronpave@c) {/};
+ \node[scale=.5,rotate=90] at (\cmdPAS@patronpave@c+\cmdPAS@patronpave@a,-\cmdPAS@patronpave@c/2) {///};
+ \fi
+ \ifPAS@patronpave@legende
+ \draw[gray,dotted] (\cmdPAS@patronpave@c,\cmdPAS@patronpave@b+\cmdPAS@patronpave@c) -- (\cmdPAS@patronpave@c,\cmdPAS@patronpave@b+\cmdPAS@patronpave@c+1);
+ \draw[gray,dotted] (\cmdPAS@patronpave@c+\cmdPAS@patronpave@a,\cmdPAS@patronpave@b+\cmdPAS@patronpave@c) -- (\cmdPAS@patronpave@c+\cmdPAS@patronpave@a,\cmdPAS@patronpave@b+\cmdPAS@patronpave@c+1);
+ \draw[<->,>=stealth'] (\cmdPAS@patronpave@c,\cmdPAS@patronpave@b+\cmdPAS@patronpave@c+1) -- (\cmdPAS@patronpave@c+\cmdPAS@patronpave@a,\cmdPAS@patronpave@b+\cmdPAS@patronpave@c+1) node[midway,above] {\cmdPAS@patronpave@a};
+ \draw[gray,dotted] (2*\cmdPAS@patronpave@c+\cmdPAS@patronpave@a,\cmdPAS@patronpave@b) -- (2*\cmdPAS@patronpave@c+\cmdPAS@patronpave@a,\cmdPAS@patronpave@b+1);
+ \draw[<->,>=stealth'] (\cmdPAS@patronpave@c+\cmdPAS@patronpave@a,\cmdPAS@patronpave@b+1) -- (2*\cmdPAS@patronpave@c+\cmdPAS@patronpave@a,\cmdPAS@patronpave@b+1) node[midway,above] {\cmdPAS@patronpave@c};
+ \fi
+ }
+ {
+ \IfStrEq{\cmdPAS@patronpave@pos}{3}
+ {
+ \draw (\cmdPAS@patronpave@c+\cmdPAS@patronpave@a,\cmdPAS@patronpave@b+\cmdPAS@patronpave@a) rectangle +(\cmdPAS@patronpave@c,-2*\cmdPAS@patronpave@a-\cmdPAS@patronpave@b);
+ \ifPAS@patronpave@codages
+ \node[scale=.5,rotate=90] at (\cmdPAS@patronpave@a+\cmdPAS@patronpave@c,\cmdPAS@patronpave@b+\cmdPAS@patronpave@a/2) {/};
+ \node[scale=.5] at (\cmdPAS@patronpave@a+\cmdPAS@patronpave@c+\cmdPAS@patronpave@c/2,\cmdPAS@patronpave@a+\cmdPAS@patronpave@b) {///};
+ \node[scale=.5,rotate=90] at (\cmdPAS@patronpave@a+2*\cmdPAS@patronpave@c,\cmdPAS@patronpave@b+\cmdPAS@patronpave@a/2) {/};
+ \node[scale=.5,rotate=90] at (\cmdPAS@patronpave@a+\cmdPAS@patronpave@c,-\cmdPAS@patronpave@a/2) {/};
+ \node[scale=.5] at (\cmdPAS@patronpave@a+3*\cmdPAS@patronpave@c/2,-\cmdPAS@patronpave@a) {///};
+ \node[scale=.5,rotate=90] at (\cmdPAS@patronpave@a+2*\cmdPAS@patronpave@c,-\cmdPAS@patronpave@a/2) {/};
+ \fi
+ \ifPAS@patronpave@legende
+ \draw[gray,dotted] (\cmdPAS@patronpave@c+\cmdPAS@patronpave@a,\cmdPAS@patronpave@b+\cmdPAS@patronpave@a) -- (\cmdPAS@patronpave@c+\cmdPAS@patronpave@a,\cmdPAS@patronpave@b+\cmdPAS@patronpave@a+1);
+ \draw[gray,dotted] (2*\cmdPAS@patronpave@c+\cmdPAS@patronpave@a,\cmdPAS@patronpave@b+\cmdPAS@patronpave@a) -- (2*\cmdPAS@patronpave@c+\cmdPAS@patronpave@a,\cmdPAS@patronpave@b+\cmdPAS@patronpave@a+1);
+ \draw[<->,>=stealth'] (\cmdPAS@patronpave@c+\cmdPAS@patronpave@a,\cmdPAS@patronpave@b+\cmdPAS@patronpave@a+1) -- (2*\cmdPAS@patronpave@c+\cmdPAS@patronpave@a,\cmdPAS@patronpave@b+\cmdPAS@patronpave@a+1) node[midway,above] {\cmdPAS@patronpave@c};
+ \draw[gray,dotted] (2*\cmdPAS@patronpave@c+2*\cmdPAS@patronpave@a,\cmdPAS@patronpave@b) -- (2*\cmdPAS@patronpave@c+2*\cmdPAS@patronpave@a,\cmdPAS@patronpave@b+1);
+ \draw[<->,>=stealth'] (2*\cmdPAS@patronpave@c+\cmdPAS@patronpave@a,\cmdPAS@patronpave@b+1) -- (2*\cmdPAS@patronpave@c+2*\cmdPAS@patronpave@a,\cmdPAS@patronpave@b+1) node[midway,above] {\cmdPAS@patronpave@a};
+ \fi
+ }
+ {
+ \draw (2*\cmdPAS@patronpave@c+\cmdPAS@patronpave@a,\cmdPAS@patronpave@b+\cmdPAS@patronpave@c) rectangle +(\cmdPAS@patronpave@a,-2*\cmdPAS@patronpave@c-\cmdPAS@patronpave@b);
+ \ifPAS@patronpave@codages
+ \node[scale=.5,rotate=90] at (2*\cmdPAS@patronpave@c+\cmdPAS@patronpave@a,\cmdPAS@patronpave@b+\cmdPAS@patronpave@c/2) {///};
+ \node[scale=.5] at (2*\cmdPAS@patronpave@c+3*\cmdPAS@patronpave@a/2,\cmdPAS@patronpave@c+\cmdPAS@patronpave@b) {/};
+ \node[scale=.5,rotate=90] at (2*\cmdPAS@patronpave@c+2*\cmdPAS@patronpave@a,\cmdPAS@patronpave@b+\cmdPAS@patronpave@c/2) {///};
+ \node[scale=.5,rotate=90] at (2*\cmdPAS@patronpave@c+\cmdPAS@patronpave@a,-\cmdPAS@patronpave@c/2) {///};
+ \node[scale=.5] at (2*\cmdPAS@patronpave@c+3*\cmdPAS@patronpave@a/2,-\cmdPAS@patronpave@c) {/};
+ \node[scale=.5,rotate=90] at (2*\cmdPAS@patronpave@c+2*\cmdPAS@patronpave@a,-\cmdPAS@patronpave@c/2) {///};
+ \fi
+ \ifPAS@patronpave@legende
+ \draw[gray,dotted] (2*\cmdPAS@patronpave@c+\cmdPAS@patronpave@a,\cmdPAS@patronpave@b+\cmdPAS@patronpave@c) -- (2*\cmdPAS@patronpave@c+\cmdPAS@patronpave@a,\cmdPAS@patronpave@b+\cmdPAS@patronpave@c+1);
+ \draw[gray,dotted] (2*\cmdPAS@patronpave@c+2*\cmdPAS@patronpave@a,\cmdPAS@patronpave@b+\cmdPAS@patronpave@c) -- (2*\cmdPAS@patronpave@c+2*\cmdPAS@patronpave@a,\cmdPAS@patronpave@b+\cmdPAS@patronpave@c+1);
+ \draw[<->,>=stealth'] (2*\cmdPAS@patronpave@c+\cmdPAS@patronpave@a,\cmdPAS@patronpave@b+\cmdPAS@patronpave@c+1) -- (2*\cmdPAS@patronpave@c+2*\cmdPAS@patronpave@a,\cmdPAS@patronpave@b+\cmdPAS@patronpave@c+1) node[midway,above] {\cmdPAS@patronpave@a};
+ \draw[gray,dotted] (0,0) -- (0,-1);
+ \draw[gray,dotted] (\cmdPAS@patronpave@c,0) -- (\cmdPAS@patronpave@c,-1);
+ \draw[<->,>=stealth'] (0,-1) -- (\cmdPAS@patronpave@c,-1) node[midway,below] {\cmdPAS@patronpave@c};
+ \fi
+ }
+ }
+ }
+ \ifPAS@patronpave@legende
+ \draw[gray,dotted] (2*\cmdPAS@patronpave@c+2*\cmdPAS@patronpave@a,\cmdPAS@patronpave@b) -- (2*\cmdPAS@patronpave@c+2*\cmdPAS@patronpave@a+1,\cmdPAS@patronpave@b);
+ \draw[gray,dotted] (2*\cmdPAS@patronpave@c+2*\cmdPAS@patronpave@a,0) -- (2*\cmdPAS@patronpave@c+2*\cmdPAS@patronpave@a+1,0);
+ \draw[<->,>=stealth'] (2*\cmdPAS@patronpave@c+2*\cmdPAS@patronpave@a+1,\cmdPAS@patronpave@b) -- (2*\cmdPAS@patronpave@c+2*\cmdPAS@patronpave@a+1,0) node[midway,right] {\cmdPAS@patronpave@b};
+ \fi
+}
diff --git a/macros/latex/contrib/pas-cours/latex/macro-solides.tex b/macros/latex/contrib/pas-cours/latex/macro-solides.tex
new file mode 100644
index 0000000000..46777951b6
--- /dev/null
+++ b/macros/latex/contrib/pas-cours/latex/macro-solides.tex
@@ -0,0 +1,753 @@
+% Fichier comprenant les macros construisant les solides
+
+% \prismereg : dessine un prisme à base régulière
+% Synthaxe : \prismreg[ n = nombre de côtés de la base (>2) - par défaut : 3,
+% bordercolor = ... (par défaut : noir),
+% incolor = ... (par défaut : blanc),
+% coefopaq = ... (par défaut : 0.5),
+% axe (booléen : si oui, axe tracé),
+% axecolor = couleur de l'axe (par défaut : rouge),
+% name (booléen : si oui, nom du sommet et du centre de la base mentionnés),
+% sommet = nom du sommet (par défaut : S),
+% posommet = ...,
+% centre = nom du centre de la base (par défaut : O),
+% scalecentre = coef. d'agrandissement du point du centre de la base,
+% poscentre = position du nom du centre de la base (par défaut : below),
+% hauteur = ... (par défaut, 5 cm),
+% rayon = ... (par défaut, 2 cm),
+% legende : booléen,
+% incl = coefficient d'inclinaison de la base (par défaut : 1),
+% rotat = angle de rotation (par défaut : 0°)]
+
+\define@cmdkey [PAS] {prismereg} {n}{}
+\define@cmdkey [PAS] {prismereg} {bordercolor}{}
+\define@cmdkey [PAS] {prismereg} {incolor}{}
+\define@cmdkey [PAS] {prismereg} {coefopaq}{}
+\define@boolkey[PAS] {prismereg} {axe}[true]{}
+\define@cmdkey [PAS] {prismereg} {axecolor}{}
+\define@boolkey[PAS] {prismereg} {name}[true]{}
+\define@boolkey[PAS] {prismereg} {legende}[true]{}
+\define@cmdkey [PAS] {prismereg} {hauteur}{}
+\define@cmdkey [PAS] {prismereg} {rayon}{}
+\define@cmdkey [PAS] {prismereg} {incl}{}
+\define@cmdkey [PAS] {prismereg} {rotat}{}
+
+\presetkeys [PAS] {prismereg} {
+ n = 3,
+ bordercolor = black,
+ incolor = white,
+ coefopaq = 0.5,
+ axe = false,
+ axecolor = red,
+ legende = false,
+ name = false,
+ hauteur = 5,
+ rayon = 2,
+ rotat = 0.1,
+ incl = 1}{}
+
+\newcommand*{\prismereg}[1][]{\pasPrismereg[#1]}
+
+\def\pasPrismereg[#1]{
+ \setkeys[PAS]{prismereg}{#1}
+ \pgfmathparse{\cmdPAS@prismereg@n==3}
+ \IfStrEq{\pgfmathresult}{1.0}{\def\rotat{10}}{\def\rotat{\cmdPAS@prismereg@rotat}}
+ \def\cotes{\cmdPAS@prismereg@n}
+ \pgfmathparse{\cotes-1}\let\cote\pgfmathresult
+ \ifPAS@prismereg@name
+ \foreach \i in {1,2,...,\cotes}
+ {
+ \pgfmathparse{(360/\cotes)*(\i-1)+\cmdPAS@prismereg@rotat}\let\angle\pgfmathresult
+ \pgfmathparse{\cmdPAS@prismereg@rayon*cos(\angle)}\let\Mx\pgfmathresult
+ \pgfmathparse{\cmdPAS@prismereg@incl*sin(\angle)}\let\My\pgfmathresult
+ \IfStrEq{\angle}{0.1}
+ {
+ \def\posname{right}
+ }
+ {
+ \IfStrEq{\angle}{180.0}
+ {
+ \def\posname{left}
+ }
+ {
+ \IfStrEq{\angle}{90.0}
+ {
+ \def\posname{above}
+ }
+ {
+ \IfStrEq{\angle}{270.0}
+ {
+ \def\posname{below}
+ }
+ {
+ \pgfmathparse{\angle<180}
+ \IfStrEq{\pgfmathresult}{1.0}
+ {
+ \pgfmathparse{\angle<90}
+ \IfStrEq{\pgfmathresult}{1.0}
+ {
+ \def\posname{above right}
+ }
+ {
+ \def\posname{above left}
+ }
+ }
+ {
+ \pgfmathparse{\angle<270}
+ \IfStrEq{\pgfmathresult}{1.0}
+ {
+ \def\posname{below left}
+ }
+ {
+ \def\posname{below right}
+ }
+ }
+ }
+ }
+ }
+ }
+ \node[\posname,\cmdPAS@prismereg@bordercolor] at (\Mx,\My) {$A_{\i}$};
+ }
+ \fi
+ \pgfmathparse{\cmdPAS@prismereg@rayon*cos((360/\cotes)*\cote+\rotat)}\let\Mx\pgfmathresult
+ \pgfmathparse{\cmdPAS@prismereg@incl*sin((360/\cotes)*\cote+\rotat)}\let\My\pgfmathresult
+ \pgfmathparse{\cmdPAS@prismereg@rayon*cos(\rotat)}\let\Nx\pgfmathresult
+ \pgfmathparse{\cmdPAS@prismereg@incl*sin(\rotat)}\let\Ny\pgfmathresult
+ \pgfmathparse{\cmdPAS@prismereg@rayon*cos((360/\cotes)+\rotat)}\let\Px\pgfmathresult
+ \pgfmathparse{\cmdPAS@prismereg@incl*sin((360/\cotes)+\rotat)}\let\Py\pgfmathresult
+ \shade[draw=\cmdPAS@prismereg@bordercolor,shading=ball, ball color=\cmdPAS@prismereg@incolor,opacity=\cmdPAS@prismereg@coefopaq] (\Nx,\Ny) -- (\Px,\Py) -- (\Px,\Py+\cmdPAS@prismereg@hauteur) -- (\Nx,\Ny+\cmdPAS@prismereg@hauteur) -- cycle;
+ \draw[\cmdPAS@prismereg@bordercolor] (\Mx,\My) -- (\Nx,\Ny) -- (\Nx,\Ny+\cmdPAS@prismereg@hauteur);
+ \foreach \i in {1,...,\cote}
+ {
+ \pgfmathparse{\cmdPAS@prismereg@rayon*cos((360/\cotes)*\i+\rotat)}\let\Mx\pgfmathresult
+ \pgfmathparse{\cmdPAS@prismereg@incl*sin((360/\cotes)*\i+\rotat)}\let\My\pgfmathresult
+ \pgfmathparse{\cmdPAS@prismereg@hauteur+\cmdPAS@prismereg@incl*sin((360/\cotes)*\i+\rotat)}\let\MMy\pgfmathresult
+ \path[coordinate] (\Mx,\MMy) coordinate (T\i);
+ \IfStrEq{\i}{1}{\global\def\xi{\Mx}\global\def\yi{\My}}{}
+ \pgfmathparse{\cmdPAS@prismereg@rayon*cos((360/\cotes)*(\i-1)+\rotat)}\let\Nx\pgfmathresult
+ \pgfmathparse{\cmdPAS@prismereg@incl*sin((360/\cotes)*(\i-1)+\rotat)}\let\Ny\pgfmathresult
+ \pgfmathparse{\cmdPAS@prismereg@rayon*cos((360/\cotes)*(\i+1)+\rotat)}\let\Px\pgfmathresult
+ \pgfmathparse{\cmdPAS@prismereg@incl*sin((360/\cotes)*(\i+1)+\rotat)}\let\Py\pgfmathresult
+ \IfStrEq{\cotes}{3}{\def\ang{120}}{\def\ang{140}}
+ \pgfmathparse{(360/\cotes)*\i<181}
+ \IfStrEq{\pgfmathresult}{1.0}
+ {
+ \draw[dotted,\cmdPAS@prismereg@bordercolor] (\Nx,\Ny) -- (\Mx,\My);
+ }
+ {
+ \draw[\cmdPAS@prismereg@bordercolor] (\Nx,\Ny) -- (\Mx,\My);
+ }
+ \pgfmathparse{(360/\cotes)*\i<\ang}
+ \IfStrEq{\pgfmathresult}{1.0}
+ {
+ \shade[shading=ball, ball color=\cmdPAS@prismereg@incolor,opacity=\cmdPAS@prismereg@coefopaq] (\Mx,\My+\cmdPAS@prismereg@hauteur) -- (\Mx,\My) -- (\Px,\Py) -- (\Px,\Py+\cmdPAS@prismereg@hauteur) -- cycle;
+ \draw[dotted,\cmdPAS@prismereg@bordercolor] (\Mx,\My) -- (\Mx,\My+\cmdPAS@prismereg@hauteur);
+ }
+ {
+ \shade[shading=ball, ball color=\cmdPAS@prismereg@incolor,opacity=\cmdPAS@prismereg@coefopaq] (\Mx,\My+\cmdPAS@prismereg@hauteur) -- (\Mx,\My) -- (\Px,\Py) -- (\Px,\Py+\cmdPAS@prismereg@hauteur) -- cycle;
+ \draw[\cmdPAS@prismereg@bordercolor] (\Mx,\My+\cmdPAS@prismereg@hauteur) -- (\Mx,\My) -- (\Px,\Py) -- (\Px,\Py+\cmdPAS@prismereg@hauteur);
+ }
+ }
+ \pgfmathparse{\cmdPAS@prismereg@rayon*cos(\rotat)}\let\Mx\pgfmathresult
+ \pgfmathparse{\cmdPAS@prismereg@hauteur+\cmdPAS@prismereg@incl*sin(\rotat)}\let\MMy\pgfmathresult
+ \path[coordinate] (\Mx,\MMy) coordinate (T\cotes);
+ \shade[shading=ball, ball color=\cmdPAS@prismereg@incolor,opacity=\cmdPAS@prismereg@coefopaq] (T1)
+ \foreach \i in {2,...,\cotes}{--(T\i)}--cycle;
+ \draw[\cmdPAS@prismereg@bordercolor] (T1)
+ \foreach \i in {2,...,\cotes}{--(T\i)}--cycle;
+ \ifPAS@prismereg@legende
+ \IfStrEq{\cmdPAS@prismereg@incolor}{white}{\def\couleur{black}}{\def\couleur{\cmdPAS@prismereg@incolor}}
+ % Bases
+ \pgfmathparse{\cmdPAS@prismereg@rayon*cos(-85)+.5}\let\x\pgfmathresult
+ \pgfmathparse{\cmdPAS@prismereg@incl*sin(-85)-1}\let\y\pgfmathresult
+ \draw[<-,>=stealth,dotted,\couleur] (.5,-.5) to [bend right=30] (\x,\y) node[right,\couleur] {\texttt{base (polygonale)}};
+ \draw[<-,>=stealth,dotted,\couleur] (.5,.5+\cmdPAS@prismereg@hauteur) to [bend left=30] (\x,\y+\cmdPAS@prismereg@hauteur+4) node[right,\couleur] {\texttt{base (polygonale)}};
+ % Faces latérales
+ \pgfmathparse{\cmdPAS@prismereg@rayon*cos(\rotat)}\let\Mx\pgfmathresult
+ \pgfmathparse{\cmdPAS@prismereg@incl*sin(\rotat)}\let\My\pgfmathresult
+ \pgfmathparse{\cmdPAS@prismereg@rayon*cos(\rotat-360/\cotes)}\let\Nx\pgfmathresult
+ \pgfmathparse{\cmdPAS@prismereg@incl*sin(\rotat-360/\cotes)}\let\Ny\pgfmathresult
+ \coordinate (M) at (\Mx,\My);
+ \coordinate (N) at (\Nx,\Ny);
+ \coordinate (T) at (\Nx,\Ny+\cmdPAS@prismereg@hauteur);
+ \coordinate (G) at (barycentric cs:M=1,N=1,T=1,T\cotes=1);
+ \draw[<-,>=stealth,\couleur] (G) to [bend left=30] ($(G)+(1.5,.5)$) node[right,\couleur] {\begin{minipage}{3cm}\texttt{face lat\'erale (rectangulaire)}\end{minipage}};
+ % Hauteur
+ \draw[\cmdPAS@prismereg@axecolor,dotted] (T\cotes) -- ($(T\cotes)+(5,0)$);
+ \draw[\cmdPAS@prismereg@axecolor,dotted] (M) -- ($(M)+(5,0)$);
+ \draw[<->,\cmdPAS@prismereg@axecolor,>=stealth'] ($(T\cotes)+(5,0)$) -- ($(M)+(5,0)$) node[midway,right,\cmdPAS@prismereg@axecolor] {\texttt{hauteur}};
+ \fi
+ \ifPAS@prismereg@axe
+ \draw[dotted,\cmdPAS@prismereg@axecolor] (0,\cmdPAS@prismereg@hauteur) -- (0,-\cmdPAS@prismereg@incl);
+ \draw[\cmdPAS@prismereg@axecolor] (0,\cmdPAS@prismereg@hauteur) -- (0,\cmdPAS@prismereg@hauteur+1);
+ \draw[\cmdPAS@prismereg@axecolor] (0,-\cmdPAS@prismereg@incl) -- (0,-\cmdPAS@prismereg@incl-1);
+ \ifPAS@prismereg@legende
+ \draw[<-,>=stealth',\cmdPAS@prismereg@axecolor] (0,\cmdPAS@prismereg@hauteur+.5) to [bend right=20] (-\cmdPAS@prismereg@rayon/2,\cmdPAS@prismereg@hauteur+1) node[left,\cmdPAS@prismereg@axecolor] {\texttt{axe de rotation}};
+ \fi
+ \fi
+ \ifPAS@prismereg@name
+ \foreach \i in {1,2,...,\cotes}
+ {
+ \pgfmathparse{(360/\cotes)*(\i-1)+\cmdPAS@prismereg@rotat}\let\angle\pgfmathresult
+ \pgfmathparse{\cmdPAS@prismereg@rayon*cos(\angle)}\let\Mx\pgfmathresult
+ \pgfmathparse{\cmdPAS@prismereg@incl*sin(\angle)}\let\My\pgfmathresult
+ \IfStrEq{\angle}{0.1}
+ {
+ \def\posname{right}
+ }
+ {
+ \IfStrEq{\angle}{180.0}
+ {
+ \def\posname{left}
+ }
+ {
+ \IfStrEq{\angle}{90.0}
+ {
+ \def\posname{above}
+ }
+ {
+ \IfStrEq{\angle}{270.0}
+ {
+ \def\posname{below}
+ }
+ {
+ \pgfmathparse{\angle<180}
+ \IfStrEq{\pgfmathresult}{1.0}
+ {
+ \pgfmathparse{\angle<90}
+ \IfStrEq{\pgfmathresult}{1.0}
+ {
+ \def\posname{above right}
+ }
+ {
+ \def\posname{above left}
+ }
+ }
+ {
+ \pgfmathparse{\angle<270}
+ \IfStrEq{\pgfmathresult}{1.0}
+ {
+ \def\posname{below left}
+ }
+ {
+ \def\posname{below right}
+ }
+ }
+ }
+ }
+ }
+ }
+ \node[\posname,\cmdPAS@prismereg@bordercolor] at (\Mx,\My+\cmdPAS@prismereg@hauteur) {$B_{\i}$};
+ }
+ \fi
+}
+
+
+% \pyramreg : dessine une pyramide à base régulière
+% Synthaxe : \pyramreg[ n = nombre de côtés de la base (>2) - par défaut : 3,
+% bordercolor = ... (par défaut : noir),
+% incolor = ... (par défaut : blanc),
+% coefopaq = ... (par défaut : 0.5),
+% axe (booléen : si oui, axe tracé),
+% axecolor = couleur de l'axe (par défaut : rouge),
+% name (booléen : si oui, nom du sommet et du centre de la base mentionnés),
+% sommet = nom du sommet (par défaut : S),
+% posommet = ...,
+% centre = nom du centre de la base (par défaut : O),
+% scalecentre = coef. d'agrandissement du point du centre de la base,
+% poscentre = position du nom du centre de la base (par défaut : below),
+% hauteur = ... (par défaut, 5 cm),
+% rayon = ... (par défaut, 2 cm),
+% legende : booléen,
+% incl = coefficient d'inclinaison de la base (par défaut : 1),
+% rotat = angle de rotation]
+
+\define@cmdkey [PAS] {pyramreg} {n}{}
+\define@cmdkey [PAS] {pyramreg} {bordercolor}{}
+\define@cmdkey [PAS] {pyramreg} {incolor}{}
+\define@cmdkey [PAS] {pyramreg} {coefopaq}{}
+\define@boolkey[PAS] {pyramreg} {axe}[true]{}
+\define@cmdkey [PAS] {pyramreg} {axecolor}{}
+\define@boolkey[PAS] {pyramreg} {name}[true]{}
+\define@boolkey[PAS] {pyramreg} {legende}[true]{}
+\define@cmdkey [PAS] {pyramreg} {sommet}{}
+\define@cmdkey [PAS] {pyramreg} {posommet}{}
+\define@cmdkey [PAS] {pyramreg} {centre}{}
+\define@cmdkey [PAS] {pyramreg} {poscentre}{}
+\define@cmdkey [PAS] {pyramreg} {scalecentre}{}
+\define@cmdkey [PAS] {pyramreg} {hauteur}{}
+\define@cmdkey [PAS] {pyramreg} {rayon}{}
+\define@cmdkey [PAS] {pyramreg} {rotat}{}
+\define@cmdkey [PAS] {pyramreg} {incl}{}
+
+\presetkeys [PAS] {pyramreg} {
+ n = 3,
+ bordercolor = black,
+ incolor = white,
+ coefopaq = 0.5,
+ axe = false,
+ axecolor = red,
+ name = false,
+ legende = false,
+ sommet = S,
+ posommet = above,
+ centre = O,
+ poscentre = below,
+ scalecentre = 1,
+ hauteur = 5,
+ rayon = 2,
+ rotat = 0.1,
+ incl = 1}{}
+
+\newcommand*{\pyramreg}[1][]{\pasPyramreg[#1]}
+
+\def\pasPyramreg[#1]{
+ \setkeys[PAS]{pyramreg}{#1}
+ \def\cotes{\cmdPAS@pyramreg@n}
+ \pgfmathparse{\cotes-1}\let\cote\pgfmathresult
+ \ifPAS@pyramreg@legende
+ \pgfmathparse{\cmdPAS@pyramreg@rayon*cos(-85)+.5}\let\x\pgfmathresult
+ \pgfmathparse{\cmdPAS@pyramreg@incl*sin(-85)-1}\let\y\pgfmathresult
+ \draw[<-,>=stealth,dotted,\cmdPAS@pyramreg@incolor] (.5,-.5) to [bend right=30] (\x,\y) node[right,\cmdPAS@pyramreg@incolor] {\texttt{base (polygonale)}};
+ \fi
+ \ifPAS@pyramreg@name
+ \fill[\cmdPAS@pyramreg@bordercolor] (0,0) circle (\cmdPAS@pyramreg@scalecentre*0.01cm) node[\cmdPAS@pyramreg@bordercolor,\cmdPAS@pyramreg@poscentre] {\cmdPAS@pyramreg@centre};
+ \node[\cmdPAS@pyramreg@posommet,\cmdPAS@pyramreg@bordercolor] at (0,\cmdPAS@pyramreg@hauteur) {\cmdPAS@pyramreg@sommet};
+ \foreach \i in {1,2,...,\cotes}
+ {
+ \pgfmathparse{(360/\cotes)*(\i-1)+\cmdPAS@pyramreg@rotat}\let\angle\pgfmathresult
+ \pgfmathparse{\cmdPAS@pyramreg@rayon*cos(\angle)}\let\Mx\pgfmathresult
+ \pgfmathparse{\cmdPAS@pyramreg@incl*sin(\angle)}\let\My\pgfmathresult
+ \IfStrEq{\angle}{0.1}
+ {
+ \def\posname{right}
+ }
+ {
+ \IfStrEq{\angle}{180.0}
+ {
+ \def\posname{left}
+ }
+ {
+ \IfStrEq{\angle}{90.0}
+ {
+ \def\posname{above}
+ }
+ {
+ \IfStrEq{\angle}{270.0}
+ {
+ \def\posname{below}
+ }
+ {
+ \pgfmathparse{\angle<180}
+ \IfStrEq{\pgfmathresult}{1.0}
+ {
+ \pgfmathparse{\angle<90}
+ \IfStrEq{\pgfmathresult}{1.0}
+ {
+ \def\posname{above right}
+ }
+ {
+ \def\posname{above left}
+ }
+ }
+ {
+ \pgfmathparse{\angle<270}
+ \IfStrEq{\pgfmathresult}{1.0}
+ {
+ \def\posname{below left}
+ }
+ {
+ \def\posname{below right}
+ }
+ }
+ }
+ }
+ }
+ }
+ \node[\posname,\cmdPAS@pyramreg@bordercolor] at (\Mx,\My) {$A_{\i}$};
+ }
+ \fi
+ \foreach \i in {1,...,\cote}
+ {
+ \pgfmathparse{\cmdPAS@pyramreg@rayon*cos((360/\cotes)*\i+\cmdPAS@pyramreg@rotat)}\let\Mx\pgfmathresult
+ \pgfmathparse{\cmdPAS@pyramreg@incl*sin((360/\cotes)*\i+\cmdPAS@pyramreg@rotat)}\let\My\pgfmathresult
+ \pgfmathparse{\cmdPAS@pyramreg@rayon*cos((360/\cotes)*(\i-1)+\cmdPAS@pyramreg@rotat)}\let\Nx\pgfmathresult
+ \pgfmathparse{\cmdPAS@pyramreg@incl*sin((360/\cotes)*(\i-1)+\cmdPAS@pyramreg@rotat)}\let\Ny\pgfmathresult
+ \pgfmathparse{\cmdPAS@pyramreg@rayon*cos((360/\cotes)*(\i+1)+\cmdPAS@pyramreg@rotat)}\let\Px\pgfmathresult
+ \pgfmathparse{\cmdPAS@pyramreg@incl*sin((360/\cotes)*(\i+1)+\cmdPAS@pyramreg@rotat)}\let\Py\pgfmathresult
+ \IfStrEq{\cotes}{3}{\def\ang{120}}{\def\ang{140}}
+ \pgfmathparse{(360/\cotes)*\i<181}
+ \IfStrEq{\pgfmathresult}{1.0}{\draw[dotted,\cmdPAS@pyramreg@bordercolor] (\Nx,\Ny) -- (\Mx,\My);}{\draw[\cmdPAS@pyramreg@bordercolor] (\Nx,\Ny) -- (\Mx,\My);}
+ \pgfmathparse{(360/\cotes)*\i+\cmdPAS@pyramreg@rotat<\ang}
+ \IfStrEq{\pgfmathresult}{1.0}{\draw[dotted,\cmdPAS@pyramreg@bordercolor] (\Mx,\My) -- (0,\cmdPAS@pyramreg@hauteur);}
+ {
+ \shade[draw=\cmdPAS@pyramreg@bordercolor,shading=ball, ball color=\cmdPAS@pyramreg@incolor,opacity=\cmdPAS@pyramreg@coefopaq] (0,\cmdPAS@pyramreg@hauteur) -- (\Mx,\My) -- (\Px,\Py) -- cycle;
+ \draw[\cmdPAS@pyramreg@bordercolor] (0,\cmdPAS@pyramreg@hauteur) -- (\Mx,\My) -- (\Px,\Py);
+ }
+ }
+ \pgfmathparse{\cmdPAS@pyramreg@rayon*cos((360/\cotes)*\cote+\cmdPAS@pyramreg@rotat)}\let\Mx\pgfmathresult
+ \pgfmathparse{\cmdPAS@pyramreg@incl*sin((360/\cotes)*\cote+\cmdPAS@pyramreg@rotat)}\let\My\pgfmathresult
+ \pgfmathparse{\cmdPAS@pyramreg@rayon*cos(\cmdPAS@pyramreg@rotat)}\let\Nx\pgfmathresult
+ \pgfmathparse{+\cmdPAS@pyramreg@incl*sin(\cmdPAS@pyramreg@rotat)}\let\Ny\pgfmathresult
+ \draw[\cmdPAS@pyramreg@bordercolor] (\Mx,\My) -- (\Nx,\Ny) -- (0,\cmdPAS@pyramreg@hauteur);
+ \ifPAS@pyramreg@axe
+ \draw[dotted,\cmdPAS@pyramreg@axecolor] (0,\cmdPAS@pyramreg@hauteur) -- (0,-\cmdPAS@pyramreg@incl);
+ \draw[\cmdPAS@pyramreg@axecolor] (0,\cmdPAS@pyramreg@hauteur) -- (0,\cmdPAS@pyramreg@hauteur+1);
+ \draw[\cmdPAS@pyramreg@axecolor] (0,-\cmdPAS@pyramreg@incl) -- (0,-\cmdPAS@pyramreg@incl-1);
+ \ifPAS@pyramreg@legende
+ \draw[<-,>=stealth',\cmdPAS@pyramreg@axecolor] (0,\cmdPAS@pyramreg@hauteur+.5) to [bend left=20] (-\cmdPAS@pyramreg@rayon/2,\cmdPAS@pyramreg@hauteur) node[left,\cmdPAS@pyramreg@axecolor] {\texttt{axe de rotation}};
+ \fi
+ \fi
+ \ifPAS@pyramreg@legende
+ \pgfmathparse{(\cmdPAS@pyramreg@hauteur-\Ny)/2}\let\y\pgfmathresult
+ \pgfmathparse{1-\cmdPAS@pyramreg@coefopaq}\let\op\pgfmathresult
+ \draw[<-,>=stealth,\cmdPAS@pyramreg@bordercolor] (\Nx/2,\y) to [bend left=30] (\cmdPAS@pyramreg@rayon+.5,\y+1) node[right,\cmdPAS@pyramreg@bordercolor] {\texttt{ar\^ete lat\'erale}};
+ \draw[<-,>=stealth,\cmdPAS@pyramreg@bordercolor] (0,\cmdPAS@pyramreg@hauteur) to [bend left=10] (\cmdPAS@pyramreg@rayon+.5,\cmdPAS@pyramreg@hauteur+0.5) node[right,\cmdPAS@pyramreg@bordercolor] {\texttt{sommet}};
+ \draw[gray,dotted] (0,\cmdPAS@pyramreg@hauteur) -- (\cmdPAS@pyramreg@rayon+4,\cmdPAS@pyramreg@hauteur);
+ \draw[gray,dotted] (\cmdPAS@pyramreg@rayon,0) -- (\cmdPAS@pyramreg@rayon+4,0);
+ \draw[gray,dotted,opacity=\op] (0,0) -- (\cmdPAS@pyramreg@rayon,0);
+ \draw[<->,>=stealth',\cmdPAS@pyramreg@bordercolor] (\cmdPAS@pyramreg@rayon+4,\cmdPAS@pyramreg@hauteur) -- (\cmdPAS@pyramreg@rayon+4,0) node[midway,right,\cmdPAS@pyramreg@bordercolor] {\texttt{hauteur}};
+ \draw[<-,>=stealth,\cmdPAS@pyramreg@incolor] (\Nx/2,.5) to [bend right=30] (\cmdPAS@pyramreg@rayon+.5,-1) node[right,\cmdPAS@pyramreg@incolor] {\texttt{face lat\'erale (triangulaire)}};
+ \fi
+}
+
+
+% \boule : dessine une boule
+% Synthaxe : \boule[border, (booléen : si oui, un bord est dessiné
+% bordercolor = ... (par défaut : noir),
+% name, (booléen : si oui, le centre est dessiné),
+% centre = nom du centre,
+% poscentre = position du nom du centre,
+% incolor = couleur de remplissage (par défaut : blanc),
+% coefopaq = coefficient d'opacité,
+% grandcercle (booléen : si oui, le grand cercle est dessiné),
+% legende (booléen),
+% scale = coefficient d'agrandissement,
+% greenwich (booléen)]
+
+\define@boolkey[PAS] {boule} {border}[true]{}
+\define@cmdkey [PAS] {boule} {bordercolor}{}
+\define@boolkey[PAS] {boule} {name}[true]{}
+\define@cmdkey [PAS] {boule} {centre}{}
+\define@cmdkey [PAS] {boule} {poscentre}{}
+\define@cmdkey [PAS] {boule} {incolor}{}
+\define@cmdkey [PAS] {boule} {coefopaq}{}
+\define@boolkey[PAS] {boule} {grandcercle}[true]{}
+\define@boolkey[PAS] {boule} {legende}[true]{}
+\define@boolkey[PAS] {boule} {greenwich}[true]{}
+\define@boolkey[PAS] {boule} {greenwichlegende}[true]{}
+\define@boolkey[PAS] {boule} {equateurlegende}[true]{}
+\define@boolkey[PAS] {boule} {exemplecoord}[true]{}
+\define@cmdkey [PAS] {boule} {scale}{}
+\define@cmdkey [PAS] {boule} {greenwichcolor}{}
+\define@cmdkey [PAS] {boule} {exemplecoordcolor}{}
+\define@cmdkey [PAS] {boule} {exemplecoordname}{}
+
+\presetkeys [PAS] {boule} { border = false,
+ bordercolor = black,
+ incolor = white,
+ coefopaq = 0.5,
+ centre = O,
+ poscentre = below,
+ scale = 1,
+ grandcercle = false,
+ legende = false,
+ greenwich = false, % NEW 2016-08-04
+ greenwichcolor = black, % NEW 2016-08-04
+ greenwichlegende = false, % NEW 2016-08-04
+ equateurlegende = false, % NEW 2016-08-04
+ exemplecoord = false, % NEW 2016-08-04
+ exemplecoordcolor = green!50!black, % NEW 2016-08-04
+ exemplecoordname = A, % NEW 2016-08-04
+ name = false}{}
+
+\newcommand*{\boule}[1][]{\pasBoule[#1]}
+
+\def\pasBoule[#1]{
+ \setkeys[PAS]{boule}{#1}
+ \begin{scope}[scale=\cmdPAS@boule@scale]
+ \ifPAS@boule@grandcercle
+ \draw[\cmdPAS@boule@bordercolor,dotted] (2,0) arc (0:180:2cm and .5cm);
+ \fi
+ \ifPAS@boule@name
+ \fill[\cmdPAS@boule@bordercolor] (0,0) circle (0.03cm) node[\cmdPAS@boule@poscentre,scale=\cmdPAS@boule@scale] {\cmdPAS@boule@centre};
+ \fi
+ \shade[shading=ball, ball color=\cmdPAS@boule@incolor,opacity=\cmdPAS@boule@coefopaq] (0,0) circle (2cm);
+ \ifPAS@boule@grandcercle
+ \draw[\cmdPAS@boule@bordercolor] (2,0) arc (0:-180:2cm and .5cm);
+ \fi
+ \ifPAS@boule@border
+ \draw[\cmdPAS@boule@bordercolor] (0,0) circle (2cm);
+ \fi
+ \ifPAS@boule@greenwich
+ \draw[\cmdPAS@boule@greenwichcolor] (0,2) arc (90:270:1cm and 2cm);
+ \fi
+ \ifPAS@boule@legende
+ \pgfmathparse{2*cos(-60)}\let\x\pgfmathresult
+ \pgfmathparse{.5*sin(-60)}\let\y\pgfmathresult
+ \draw[<-,>=stealth',\cmdPAS@boule@bordercolor] (\x,\y) to [bend right=30] (3,-0.4) node[right,\cmdPAS@boule@bordercolor] {\texttt{un grand cercle}};
+ \begin{scope}[rotate=50]
+ \draw[\cmdPAS@boule@bordercolor!50!black,dotted] (2,0) arc (0:180:2cm and .5cm);
+ \draw[\cmdPAS@boule@bordercolor!50!black] (2,0) arc (0:-180:2cm and .5cm);
+ \end{scope}
+ \pgfmathparse{1.5*cos(38)}\let\x\pgfmathresult
+ \pgfmathparse{1.5*sin(38)}\let\y\pgfmathresult
+ \draw[<-,>=stealth',\cmdPAS@boule@bordercolor!50!black] (\x,\y) to [bend right=30] (3,\y) node[right,\cmdPAS@boule@bordercolor!50!black] {\texttt{un autre grand cercle}};
+ \fi
+ \ifPAS@boule@greenwichlegende
+ \draw[<-,>=stealth',\cmdPAS@boule@greenwichcolor] (-0.6,-1.8) to [bend left=30] (-3,-1.9) node[left,\cmdPAS@boule@greenwichcolor] {\texttt{M\'eridien de Greenwich}};
+ \fi
+ \ifPAS@boule@equateurlegende
+ \draw[<-,>=stealth',\cmdPAS@boule@bordercolor] (1.8,-.3) to [bend right=30] (3,-0.4) node[right,\cmdPAS@boule@bordercolor] {\texttt{\'Equateur}};
+ \fi
+ \ifPAS@boule@exemplecoord
+ \filldraw[fill=\cmdPAS@boule@exemplecoordcolor!50,draw=\cmdPAS@boule@exemplecoordcolor] (0,0) -- (-155:0.4) arc (-110:-50:0.7 and 0.3) -- (-17:0.4) -- (0,0);
+ \filldraw[fill=\cmdPAS@boule@exemplecoordcolor!25,draw=\cmdPAS@boule@exemplecoordcolor] (0,0) -- (-17:0.4) arc (-17:50:0.7 and 0.3) -- (50:0.4) -- (0,0);
+ \node[\cmdPAS@boule@exemplecoordcolor,scale={\cmdPAS@boule@scale*0.6}] at (-102:0.4) {80$^\circ$};
+ \node[\cmdPAS@boule@exemplecoordcolor!70,scale={\cmdPAS@boule@scale*0.6}] at (20:0.6) {40$^\circ$};
+ \fill[fill=\cmdPAS@boule@exemplecoordcolor] (50:1.6cm) circle (0.05cm) node[right,\cmdPAS@boule@exemplecoordcolor] {\cmdPAS@boule@exemplecoordname};
+ \draw[dashed,\cmdPAS@boule@greenwichcolor] (-0.98,-0.43) -- (0,0);
+ \draw[dashed,\cmdPAS@boule@exemplecoordcolor] (0,0) -- (1.28,-0.38);
+ \draw[dashed,\cmdPAS@boule@exemplecoordcolor] (0,0) -- (50:1.6cm);
+ \fill[\cmdPAS@boule@greenwichcolor] (-0.98,-0.43) circle (0.05cm) node[below left,scale=\cmdPAS@boule@scale,color=\cmdPAS@boule@greenwichcolor] {G};
+ \draw[\cmdPAS@boule@exemplecoordcolor] (0,2) arc (90:-90:1.3cm and 2cm);
+ \fill[\cmdPAS@boule@exemplecoordcolor] (1.28,-0.38) circle (0.05cm) node[below right,scale=\cmdPAS@boule@scale,color=\cmdPAS@boule@exemplecoordcolor] {H};
+ \fi
+ \end{scope}
+}
+
+% \cone : dessine un cône de révolution
+% Synthaxe : \cone[bordercolor=couleur des bords, (black par défaut)
+% incolor = couleur de la face, (white par défaut)
+% coefopaq = coefficient d'opacité (0.5 par défaut),
+% rayon = rayon du disque de base, (1 cm par défaut),
+% hauteur = hauteur du sommet (3 cm par défaut),
+% sommet = nom du sommet, (par défaut : S)
+% posommet = position du nom du sommet (par défaut : above),
+% centre = nom du centre du disque de base, (par défaut : O),
+% incl = coefficient d'inclinaison du disque de base,
+% poscentre = position du centre du disque de base (par défaut : below),
+% scalecentre = coefficient d'agrendissement du point du centre du disque de base,
+% axe : booléen,
+% axecolor = couleur de l'axe de révolution,
+% legende : booléen,
+% name : booléen]
+
+\define@cmdkey [PAS] {cone} {bordercolor}{}
+\define@cmdkey [PAS] {cone} {incolor}{}
+\define@cmdkey [PAS] {cone} {hauteur}{}
+\define@cmdkey [PAS] {cone} {coefopaq}{}
+\define@cmdkey [PAS] {cone} {rayon}{}
+\define@cmdkey [PAS] {cone} {sommet}{}
+\define@cmdkey [PAS] {cone} {posommet}{}
+\define@cmdkey [PAS] {cone} {centre}{}
+\define@cmdkey [PAS] {cone} {poscentre}{}
+\define@cmdkey [PAS] {cone} {scalecentre}{}
+\define@cmdkey [PAS] {cone} {incl}{}
+\define@boolkey[PAS] {cone} {name}[true]{}
+\define@boolkey[PAS] {cone} {axe}[true]{}
+\define@boolkey[PAS] {cone} {legende}[true]{}
+\define@cmdkey [PAS] {cone} {axecolor}{}
+\presetkeys [PAS] {cone} {bordercolor = black,
+ incolor = white,
+ coefopaq = 0.5,
+ rayon = 1,
+ hauteur = 3,
+ sommet = S,
+ posommet = above,
+ centre = O,
+ poscentre = below,
+ scalecentre = 1,
+ incl = 0.33,
+ name = false,
+ axe = false,
+ legende = false,
+ axecolor = red}{}
+
+\newcommand*{\cone}[1][]{\pasCone[#1]}
+
+\def\pasCone[#1]{
+ \setkeys[PAS]{cone}{#1}
+ \pgfmathparse{\cmdPAS@cone@incl*\cmdPAS@cone@rayon}\let\petitaxe\pgfmathresult
+ \pgfmathparse{2*\cmdPAS@cone@rayon}\let\grandaxe\pgfmathresult
+ \pgfmathparse{0.01*\cmdPAS@cone@scalecentre}\let\centre\pgfmathresult
+ \draw[dashed,\cmdPAS@cone@bordercolor] (0,0) arc (180:0:\cmdPAS@cone@rayon cm and \petitaxe cm);
+ \ifPAS@cone@axe
+ \draw[dotted,\cmdPAS@cone@axecolor] (\cmdPAS@cone@rayon,\cmdPAS@cone@hauteur) -- (\cmdPAS@cone@rayon,-\petitaxe);
+ \draw[\cmdPAS@cone@axecolor] (\cmdPAS@cone@rayon,\cmdPAS@cone@hauteur) -- (\cmdPAS@cone@rayon,\cmdPAS@cone@hauteur+1);
+ \draw[\cmdPAS@cone@axecolor] (\cmdPAS@cone@rayon,-\petitaxe) -- (\cmdPAS@cone@rayon,-\petitaxe-1);
+ \ifPAS@cone@legende
+ \draw[\cmdPAS@cone@axecolor,<-,>=stealth'] (\cmdPAS@cone@rayon,\cmdPAS@cone@hauteur+.5) to [bend left=30] (\cmdPAS@cone@rayon+1,\cmdPAS@cone@hauteur+1) node[right,\cmdPAS@cone@axecolor] {\texttt{axe de r\'evolution}};
+ \fi
+ \fi
+ \shade[draw=\cmdPAS@cone@bordercolor,shading=ball, ball color=\cmdPAS@cone@incolor,opacity=\cmdPAS@cone@coefopaq] (0,0) -- (\cmdPAS@cone@rayon,\cmdPAS@cone@hauteur) -- (\grandaxe,0) arc (0:-180:\cmdPAS@cone@rayon cm and \petitaxe cm);
+ \ifPAS@cone@name
+ \node[\cmdPAS@cone@posommet,\cmdPAS@cone@bordercolor] at (\cmdPAS@cone@rayon,\cmdPAS@cone@hauteur) {\cmdPAS@cone@sommet};
+ \node[\cmdPAS@cone@poscentre,\cmdPAS@cone@bordercolor] at (\cmdPAS@cone@rayon,0) {\cmdPAS@cone@centre};
+ \fill[\cmdPAS@cone@bordercolor] (\cmdPAS@cone@rayon,0) circle (\centre cm);
+ \fi
+ \ifPAS@cone@legende
+ \pgfmathparse{\petitaxe*sin(-40)}\let\y\pgfmathresult
+ \pgfmathparse{\cmdPAS@cone@rayon*(1+cos(-40))}\let\x\pgfmathresult
+ \draw[\cmdPAS@cone@bordercolor,thick] (\cmdPAS@cone@rayon,\cmdPAS@cone@hauteur) -- (\x,\y);
+ \draw[<-,>=stealth',\cmdPAS@cone@bordercolor] (\x,\y) to [bend right=30] (2*\cmdPAS@cone@rayon+1,0) node[\cmdPAS@cone@bordercolor,right] {\texttt{g\'en\'eratrice}};
+ \draw[black,<-,>=stealth'] (\cmdPAS@cone@rayon,\cmdPAS@cone@hauteur) to [bend right=45] (\cmdPAS@cone@rayon/2,\cmdPAS@cone@hauteur) node[black,below left] {\texttt{sommet}};
+ \draw[black,<-,>=stealth'] (\cmdPAS@cone@rayon,0) to [bend right=30] (\cmdPAS@cone@rayon/2,-\petitaxe-.5) node[black,below] {\texttt{centre du disque de base}};
+ \fi
+}
+
+
+% \cylindre : dessine un cône de révolution
+% Synthaxe : \cylindre[bordercolor=couleur des bords, (black par défaut)
+% incolor = couleur de la face, (white par défaut)
+% coefopaq = coefficient d'opacité (0.5 par défaut),
+% rayon = rayon du disque de base, (1 cm par défaut),
+% hauteur = hauteur du sommet (3 cm par défaut),
+% incl = coefficient d'inclinaison du disque de base,
+% centrebas = nom du centre du disque de base, (par défaut : B),
+% centrehaut = nom du centre du disque de base, (par défaut : H),
+% poscentrebas = position du centre du disque de base (par défaut : below),
+% poscentrehaut = position du centre du disque du haut (par défaut : below),
+% scalecentre = coefficient d'agrendissement du point du centre du disque de base,
+% axe : booléen,
+% axecolor = couleur de l'axe de révolution,
+% legende : booléen,
+% name : booléen]
+
+\define@cmdkey [PAS] {cylindre} {bordercolor}{}
+\define@cmdkey [PAS] {cylindre} {incolor}{}
+\define@cmdkey [PAS] {cylindre} {hauteur}{}
+\define@cmdkey [PAS] {cylindre} {coefopaq}{}
+\define@cmdkey [PAS] {cylindre} {rayon}{}
+\define@cmdkey [PAS] {cylindre} {centrebas}{}
+\define@cmdkey [PAS] {cylindre} {poscentrebas}{}
+\define@cmdkey [PAS] {cylindre} {centrehaut}{}
+\define@cmdkey [PAS] {cylindre} {poscentrehaut}{}
+\define@cmdkey [PAS] {cylindre} {scalecentre}{}
+\define@cmdkey [PAS] {cylindre} {incl}{}
+\define@boolkey[PAS] {cylindre} {name}[true]{}
+\define@boolkey[PAS] {cylindre} {axe}[true]{}
+\define@boolkey[PAS] {cylindre} {legende}[true]{}
+\define@boolkey[PAS] {cylindre} {rectgener}[true]{}
+\define@cmdkey [PAS] {cylindre} {axecolor}{}
+\presetkeys [PAS] {cylindre} {bordercolor = black,
+ incolor = white,
+ coefopaq = 0.5,
+ rayon = 1,
+ hauteur = 3,
+ centrebas = B,
+ poscentrebas = above,
+ centrehaut = H,
+ poscentrehaut = below,
+ scalecentre = 1,
+ incl = 0.33,
+ name = false,
+ axe = false,
+ legende = false,
+ rectgener = false,
+ axecolor = red}{}
+
+\newcommand*{\cylindre}[1][]{\pasCylindre[#1]}
+
+\def\pasCylindre[#1]{
+ \setkeys[PAS]{cylindre}{#1}
+ \pgfmathparse{\cmdPAS@cylindre@incl*\cmdPAS@cylindre@rayon}\let\petitaxe\pgfmathresult
+ \pgfmathparse{2*\cmdPAS@cylindre@rayon}\let\grandaxe\pgfmathresult
+ \pgfmathparse{0.01*\cmdPAS@cylindre@scalecentre}\let\centre\pgfmathresult
+ \ifPAS@cylindre@rectgener
+ \pgfmathparse{\petitaxe*sin(-40)}\let\y\pgfmathresult
+ \pgfmathparse{\cmdPAS@cylindre@rayon*(cos(-40))}\let\x\pgfmathresult
+ \filldraw[opacity=2*\cmdPAS@cylindre@coefopaq,fill=\cmdPAS@cylindre@incolor,draw=\cmdPAS@cylindre@bordercolor] (0,0) -- (\x,\y) -- (\x,\y+\cmdPAS@cylindre@hauteur) -- (0,\cmdPAS@cylindre@hauteur);
+ \ifPAS@cylindre@legende
+ \draw[\cmdPAS@cylindre@bordercolor,<-,>=stealth'] (.75*\x,.75*\y+.3) to [bend right=45] (1.3*\x,2*\y) node[right,\cmdPAS@cylindre@bordercolor] {\texttt{rectangle g\'en\'erateur}};
+ \fi
+ \fi
+ \draw[dashed,\cmdPAS@cylindre@bordercolor] (\cmdPAS@cylindre@rayon,0) arc (0:180:\cmdPAS@cylindre@rayon cm and \petitaxe cm);
+ \ifPAS@cylindre@axe
+ \draw[dotted,\cmdPAS@cylindre@axecolor] (0,\cmdPAS@cylindre@hauteur) -- (0,-\petitaxe);
+ \draw[\cmdPAS@cylindre@axecolor] (0,\cmdPAS@cylindre@hauteur) -- (0,\cmdPAS@cylindre@hauteur+1);
+ \draw[\cmdPAS@cylindre@axecolor] (0,-\petitaxe) -- (0,-\petitaxe-1);
+ \ifPAS@cylindre@legende
+ \draw[\cmdPAS@cylindre@axecolor,<-,>=stealth'] (0,\cmdPAS@cylindre@hauteur+.5) to [bend left=30] (1,\cmdPAS@cylindre@hauteur+1) node[right,\cmdPAS@cylindre@axecolor] {\texttt{axe de r\'evolution}};
+ \fi
+ \fi
+ \shade[draw=\cmdPAS@cylindre@bordercolor,shading=ball, ball color=\cmdPAS@cylindre@incolor,opacity=\cmdPAS@cylindre@coefopaq] (-\cmdPAS@cylindre@rayon,0) arc (180:360:\cmdPAS@cylindre@rayon cm and \petitaxe cm) -- (\cmdPAS@cylindre@rayon,\cmdPAS@cylindre@hauteur) arc (0:180:\cmdPAS@cylindre@rayon cm and \petitaxe cm) -- cycle;
+ \draw[draw=\cmdPAS@cylindre@bordercolor] (-\cmdPAS@cylindre@rayon,0) arc (180:360:\cmdPAS@cylindre@rayon cm and \petitaxe cm) -- (\cmdPAS@cylindre@rayon,\cmdPAS@cylindre@hauteur) arc (0:180:\cmdPAS@cylindre@rayon cm and \petitaxe cm) -- cycle;
+ \draw[draw=\cmdPAS@cylindre@bordercolor] (-\cmdPAS@cylindre@rayon,\cmdPAS@cylindre@hauteur) arc (180:360:\cmdPAS@cylindre@rayon cm and \petitaxe cm);
+ \ifPAS@cylindre@name
+ \node[\cmdPAS@cylindre@poscentrehaut,\cmdPAS@cylindre@bordercolor] at (0,\cmdPAS@cylindre@hauteur) {\cmdPAS@cylindre@centrehaut};
+ \node[\cmdPAS@cylindre@poscentrebas,\cmdPAS@cylindre@bordercolor] at (0,0) {\cmdPAS@cylindre@centrebas};
+ \fill[\cmdPAS@cylindre@bordercolor] (0,0) circle (\centre cm);
+ \fill[\cmdPAS@cylindre@bordercolor] (0,\cmdPAS@cylindre@hauteur) circle (\centre cm);
+ \fi
+ \ifPAS@cylindre@legende
+ \draw[dotted,\cmdPAS@cylindre@bordercolor] (\cmdPAS@cylindre@rayon,0) -- (\cmdPAS@cylindre@rayon+1,0);
+ \draw[dotted,\cmdPAS@cylindre@bordercolor] (\cmdPAS@cylindre@rayon,\cmdPAS@cylindre@hauteur) -- (\cmdPAS@cylindre@rayon+1,\cmdPAS@cylindre@hauteur);
+ \draw[<->,>=stealth',\cmdPAS@cylindre@bordercolor] (\cmdPAS@cylindre@rayon+1,0) -- (\cmdPAS@cylindre@rayon+1,\cmdPAS@cylindre@hauteur) node[midway,right,\cmdPAS@cylindre@bordercolor] {\texttt{hauteur}};
+ \draw[black,<-,>=stealth',\cmdPAS@cylindre@bordercolor] (-0.5*\cmdPAS@cylindre@rayon,0.5*\cmdPAS@cylindre@hauteur) to [bend right=45] (-1.2*\cmdPAS@cylindre@rayon,0.5*\cmdPAS@cylindre@hauteur+.3) node[\cmdPAS@cylindre@bordercolor,left] {\texttt{face lat\'erale}};
+ \fi
+}
+
+
+% \cube : dessine un cube
+% Synthaxe : \cube[bordercolor=couleur voulue pour les bords, - par défaut : black (noir)
+% incolor = couleur d'intérieur, - par défaut : white (blanc)
+% angle = angle de la perspective, - par défaut : 45°
+% coefopaq = coefficient d'opacité - par défaut : 0.5,
+% name (booléen : si mentionné, noms des sommets apparents,
+% prof = profondeur pour un parallélépipède rectangle,
+% scale = agrandissement,
+% legende : booléen pour mettre les légendes ou pas]
+
+\define@cmdkey [PAS] {cube} {bordercolor}{}
+\define@cmdkey [PAS] {cube} {incolor}{}
+\define@cmdkey [PAS] {cube} {angle}{}
+\define@cmdkey [PAS] {cube} {coefopaq}{}
+\define@cmdkey [PAS] {cube} {scale}{}
+\define@cmdkey [PAS] {cube} {prof}{}
+\define@boolkey[PAS] {cube} {name}[true]{}
+\define@boolkey[PAS] {cube} {legende}[true]{}
+\presetkeys [PAS] {cube} {angle = 45,
+ bordercolor = black,
+ incolor = white,
+ coefopaq = 0.5,
+ prof = 1,
+ scale = 1,
+ legende = false,
+ name = false}{}
+
+\newcommand*{\cube}[1][]{\pasCube[#1]}
+
+\def\pasCube[#1]{
+ \setkeys[PAS]{cube}{#1}
+ \begin{scope}[scale=\cmdPAS@cube@scale]
+ \shade[draw=\cmdPAS@cube@bordercolor,shading=ball, ball color=\cmdPAS@cube@incolor,opacity=\cmdPAS@cube@coefopaq] (0,0) -- (1,0) -- (1,1) -- (0,1) -- cycle;
+ \pgfmathparse{\cmdPAS@cube@prof*cos(\cmdPAS@cube@angle)/2}\let\x\pgfmathresult
+ \pgfmathparse{\cmdPAS@cube@prof*sin(\cmdPAS@cube@angle)/2}\let\y\pgfmathresult
+ \pgfmathparse{1+\x}\let\xx\pgfmathresult
+ \pgfmathparse{1+\y}\let\yy\pgfmathresult
+ \draw[dotted,\cmdPAS@cube@bordercolor] (0,0) -- (\x,\y) -- (\xx,\y);
+ \draw[dotted,\cmdPAS@cube@bordercolor] (\x,\y) -- (\x,\yy);
+ \shade[draw=\cmdPAS@cube@bordercolor,shading=ball, ball color=\cmdPAS@cube@incolor,opacity=\cmdPAS@cube@coefopaq] (0,1) -- (\x,\yy) -- (\xx,\yy) -- (1,1) -- cycle;
+ \filldraw[draw=\cmdPAS@cube@bordercolor,shading=ball, ball color=\cmdPAS@cube@incolor,opacity=\cmdPAS@cube@coefopaq] (1,0) -- (1,1) -- (\xx,\yy) -- (\xx,\y) -- cycle;
+ \ifPAS@cube@name
+ \node[below left,\cmdPAS@cube@bordercolor] at (0,0) {A};
+ \node[below right,\cmdPAS@cube@bordercolor] at (1,0) {B};
+ \node[below right,\cmdPAS@cube@bordercolor] at (\xx,\y) {C};
+ \node[below,\cmdPAS@cube@bordercolor] at (\x,\y) {D};
+ \node[left,\cmdPAS@cube@bordercolor] at (0,1) {E};
+ \node[below right,\cmdPAS@cube@bordercolor] at (1,1) {F};
+ \node[right,\cmdPAS@cube@bordercolor] at (\xx,\yy) {G};
+ \node[above,\cmdPAS@cube@bordercolor] at (\x,\yy) {H};
+ \fi
+ \ifPAS@cube@legende
+ \pgfmathparse{(\xx-1)/2+1}\let\xxx\pgfmathresult
+ \pgfmathparse{(\yy-1)/2+1}\let\yyy\pgfmathresult
+ \draw[<-,>=stealth',\cmdPAS@cube@bordercolor] (.5,0) to [bend right=30] (2,0) node[right,\cmdPAS@cube@bordercolor] {\texttt{ar\^ete}};
+ \IfStrEq{\cmdPAS@cube@incolor}{white}{\def\c{black}}{\def\c{\cmdPAS@cube@incolor}}
+ \draw[<-,>=stealth',\c] (\xxx,.5) to [bend left=30] ($(\xxx,.5)+(1,0.25)$) node[right,\c] {\texttt{face}};
+ \fill[\cmdPAS@cube@bordercolor] (1,1) circle (0.01cm);
+ \draw[<-,>=stealth',\cmdPAS@cube@bordercolor] (1,1) to [bend left=45] ($(\xx,\yy)+(0.25,0.25)$) node[right,\cmdPAS@cube@bordercolor] {\texttt{sommet}};
+ \fi
+ \end{scope}
+}
diff --git a/macros/latex/contrib/pas-cours/latex/macro-styles.tex b/macros/latex/contrib/pas-cours/latex/macro-styles.tex
new file mode 100644
index 0000000000..d04c1b84f6
--- /dev/null
+++ b/macros/latex/contrib/pas-cours/latex/macro-styles.tex
@@ -0,0 +1,616 @@
+\def\couleur{black}
+
+% Fichier comprenant les macros de styles
+
+\newcounter{cnt@chap}
+\newcounter{cnt@prop}
+\newcounter{cnt@thm}
+\newcounter{cnt@defi}
+\newcounter{cnt@rem}
+\newcounter{cnt@act}
+\newcounter{cnt@nota}
+\newcounter{cnt@ex}
+\newcounter{cnt@demo}
+
+% \env : environnement de couleurs
+% Syntaxe : \env[style=nom de l'environnement,pluriel (option)]{texte}
+
+\define@cmdkey [PAS] {env} {style}{}
+\define@cmdkey [PAS] {env} {name}{}
+\define@cmdkey [PAS] {env} {color}{}
+\define@cmdkey [PAS] {env} {title}{}
+\define@cmdkey [PAS] {env} {symb}{}
+\define@boolkey[PAS] {env} {num}[true]{} % ajout du 19/08/2014
+\define@boolkey[PAS] {env} {toc}[true]{}
+\define@boolkey[PAS] {env} {notoc}[true]{}
+\define@boolkey[PAS] {env} {pluriel}[true]{}
+\define@boolkey[PAS] {env} {endsymb}[true]{}
+\define@boolkey[PAS] {env} {degrade}[true]{}
+\define@boolkey[PAS] {env} {notitle}[true]{}
+\define@boolkey[PAS] {env} {notitlebreak}[true]{}
+\define@boolkey[PAS] {env} {effect}[true]{}
+\if@notitlebreak
+ \presetkeys[PAS] {env} {notitlebreak=true}{}
+\else
+ \presetkeys[PAS] {env} {notitlebreak=false}{}
+\fi
+\if@noeffect
+ \presetkeys[PAS] {env} {effect=false}{}
+\else
+ \presetkeys[PAS] {env} {effect=true}{}
+\fi
+\presetkeys [PAS] {env} {style= , name= , title= ,pluriel = false, color=, symb = $\blacksquare$, degrade = false, toc=false, notoc=false, notitle=false, endsymb=false, num=false}{}
+
+\newcommand*{\env}[1][]{\pasEnv[#1]}
+
+\long\def\pasEnv[#1]#2{
+ \setkeys[PAS]{env}{#1}
+ \if@everytoc
+ \ifx\cmdPAS@env@name\@empty
+ \else
+ \ifPAS@env@notoc
+ \else
+ \phantomsection
+ \addcontentsline{toc}{section}{\cmdPAS@env@name}
+ \fi
+ \fi
+ \else
+ \ifPAS@env@toc
+ \phantomsection
+ \addcontentsline{toc}{section}{\cmdPAS@env@name}
+ \fi
+ \fi
+ %
+ \IfStrEq{\cmdPAS@env@style}{prop}
+ {%
+ \ifPAS@env@pluriel
+ \def\texte{Propri\'et\'es}
+ \else
+ \def\texte{Propri\'et\'e}
+ \fi
+ \ifPAS@env@num
+ \stepcounter{cnt@prop}
+ \edef\texte{\texte~\thecnt@prop}
+ \fi
+ \def\couleur{prop}%
+ }{}
+ \IfStrEq{\cmdPAS@env@style}{demo}
+ {%
+ \ifPAS@env@pluriel
+ \def\texte{D\'emonstrations}
+ \else
+ \def\texte{D\'emonstration}
+ \fi
+ \ifPAS@env@num
+ \stepcounter{cnt@demo}
+ \edef\texte{\texte~\thecnt@demo}
+ \fi
+ \def\couleur{demo}%
+ }{}
+ \IfStrEq{\cmdPAS@env@style}{rem}{\ifPAS@env@pluriel\def\texte{Remarques}\else\def\texte{Remarque}\fi\def\couleur{rem}}{}
+ \IfStrEq{\cmdPAS@env@style}{defi}
+ {%
+ \ifPAS@env@pluriel
+ \def\texte{D\'efinitions}
+ \else
+ \def\texte{D\'efinition}
+ \fi
+ \ifPAS@env@num
+ \stepcounter{cnt@defi}
+ \edef\texte{\texte~\thecnt@defi}
+ \fi
+ \def\couleur{defi}
+ }{}
+ \IfStrEq{\cmdPAS@env@style}{thm}{\ifPAS@env@pluriel\def\texte{Th\'eor\`emes}\else\def\texte{Th\'eor\`eme}\fi\ifPAS@env@num\stepcounter{cnt@thm}\edef\texte{\texte~\thecnt@thm}\fi\def\couleur{thm}}{}
+ \IfStrEq{\cmdPAS@env@style}{ex}{\ifPAS@env@pluriel\def\texte{Exemples}\else\def\texte{Exemple}\fi \ifPAS@env@num\stepcounter{cnt@ex}\edef\texte{\texte~\thecnt@ex}\fi\def\couleur{ex}}{}
+ \IfStrEq{\cmdPAS@env@style}{nota}{\ifPAS@env@pluriel\def\texte{Notations}\else\def\texte{Notation}\fi \ifPAS@env@num\stepcounter{cnt@nota}\edef\texte{\texte~\thecnt@nota}\fi\def\couleur{nota}}{}
+ \IfStrEq{\cmdPAS@env@style}{act}{\ifPAS@env@pluriel\def\texte{Activit\'es}\else\def\texte{Activit\'e}\fi \ifPAS@env@num\stepcounter{cnt@act}\edef\texte{\texte~\thecnt@act}\fi\def\couleur{act}}{}
+ \IfStrEq{\cmdPAS@env@style}{meth}{\ifPAS@env@pluriel\def\texte{M\'ethodes}\else\def\texte{M\'ethode}\fi \ifPAS@env@num\stepcounter{cnt@meth}\edef\texte{\texte~\thecnt@meth}\fi\def\couleur{brown}}{}
+ \IfStrEq{\cmdPAS@env@title}{}{}{\def\texte{\cmdPAS@env@title}}
+ \IfStrEq{\cmdPAS@env@color}{}{}{\def\couleur{\cmdPAS@env@color}}
+ \ifPAS@env@degrade
+ \tikzstyle{noeud} = [rectangle,inner ysep=10pt, inner xsep=5pt, fill=\couleur!10,path fading=east]
+ \else
+ \tikzstyle{noeud} = [rectangle,inner ysep=10pt, inner ysep=5pt, fill=\couleur!10]
+ \fi
+ \itemclass{\couleur}
+ \noindent
+ \begin{tikzpicture}
+ \node [noeud] (box)
+ {%
+ \begin{minipage}{\dimexpr\textwidth-40pt}
+ \itshape #2
+ \ifPAS@env@endsymb
+ \hfill \cmdPAS@env@symb
+ \fi
+ \end{minipage}
+ };
+ \ifPAS@env@notitle\else
+ \ifPAS@env@effect
+ \node[text=white,fill=\couleur,rectangle, shading=ball, ball color=\couleur, above right] (title) at ($(box.north west)+(-0.03,0)$)
+ {\kern-3pt\begin{ant}\textbf{\texte}\end{ant}};
+ \draw[color=\couleur!50!black,very thick] (box.north west)--(box.south west)--(box.south east);
+ \else
+ \node[text=white,fill=\couleur,rectangle, above right] (title) at ($(box.north west)+(-0.03,0)$)
+ {\kern-3pt\begin{ant}\textbf{\texte}\end{ant}};
+ \draw[color=\couleur,very thick] (box.north west)--(box.south west)--(box.south east);
+ \fi
+ \fi
+ \node[left,color=\couleur] at (box.north east) {\emph{\cmdPAS@env@name}};
+ \end{tikzpicture}
+ \vspace{0.5cm}
+}
+
+% Environnement "pasbox"
+
+\newsavebox{\pas@box}
+%
+\newcounter{suite@box}
+\newenvironment*{pasbox}[1][]
+{%
+ \setcounter{suite@box}{0}
+ \setkeys[PAS]{env}{#1}
+ \if@everytoc
+ \ifx\cmdPAS@env@name\@empty\else
+ \ifPAS@env@notoc\else
+ \phantomsection
+ \addcontentsline{toc}{section}{\cmdPAS@env@name}
+ \fi
+ \fi
+ \else
+ \ifPAS@env@toc
+ \phantomsection
+ \addcontentsline{toc}{section}{\cmdPAS@env@name}
+ \fi
+ \fi
+ \IfStrEq{\cmdPAS@env@style}{thm}
+ {%
+ \ifPAS@env@pluriel
+ \def\texte{Th\'eor\`emes}
+ \else
+ \def\texte{Th\'eor\`eme}
+ \fi
+ \ifPAS@env@num
+ \stepcounter{cnt@thm}
+ \edef\texte{\texte~\thecnt@thm}
+ \fi
+ \def\couleur{thm}
+ }{}
+ \IfStrEq{\cmdPAS@env@style}{demo}
+ {%
+ \ifPAS@env@pluriel
+ \def\texte{D\'emonstrations}
+ \else
+ \def\texte{D\'emonstration}
+ \fi
+ \ifPAS@env@num
+ \stepcounter{cnt@dem}
+ \edef\texte{\texte~\thecnt@dem}
+ \fi
+ \def\couleur{black}
+ }{}
+ \IfStrEq{\cmdPAS@env@style}{prop}
+ {%
+ \ifPAS@env@pluriel
+ \def\texte{Propri\'et\'es}
+ \else
+ \def\texte{Propri\'et\'e}
+ \fi
+ \ifPAS@env@num
+ \stepcounter{cnt@prop}
+ \edef\texte{\texte~\thecnt@prop}
+ \fi
+ \def\couleur{red}
+ }{}
+ \IfStrEq{\cmdPAS@env@style}{rem}
+ {%
+ \ifPAS@env@pluriel
+ \def\texte{Remarques}
+ \else
+ \def\texte{Remarque}
+ \fi
+ \ifPAS@env@num
+ \stepcounter{cnt@rem}
+ \edef\texte{\texte~\thecnt@rem}
+ \fi
+ \def\couleur{rem}
+ }{}
+ \IfStrEq{\cmdPAS@env@style}{defi}
+ {%
+ \ifPAS@env@pluriel
+ \def\texte{D\'efinitions}
+ \else
+ \def\texte{D\'efinition}
+ \fi
+ \ifPAS@env@num
+ \stepcounter{cnt@defi}
+ \edef\texte{\texte~\thecnt@defi}
+ \fi
+ \def\couleur{defi}
+ }{}
+ \IfStrEq{\cmdPAS@env@style}{ex}
+ {%
+ \ifPAS@env@pluriel
+ \def\texte{Exemples}
+ \else
+ \def\texte{Exemple}
+ \fi
+ \ifPAS@env@num
+ \stepcounter{cnt@ex}
+ \edef\texte{\texte~\thecnt@ex}
+ \fi
+ \def\couleur{ex}
+ }{}
+ \IfStrEq{\cmdPAS@env@style}{nota}
+ {%
+ \ifPAS@env@pluriel
+ \def\texte{Notations}
+ \else
+ \def\texte{Notation}
+ \fi
+ \ifPAS@env@num
+ \stepcounter{cnt@nota}
+ \edef\texte{\texte~\thecnt@nota}
+ \fi
+ \def\couleur{nota}
+ }{}
+ \IfStrEq{\cmdPAS@env@style}{act}
+ {%
+ \ifPAS@env@pluriel
+ \def\texte{Activit\'es}
+ \else
+ \def\texte{Activit\'e}
+ \fi
+ \ifPAS@env@num
+ \stepcounter{cnt@act}
+ \edef\texte{\texte~\thecnt@act}
+ \fi
+ \def\couleur{orange}
+ }{}
+ \IfStrEq{\cmdPAS@env@style}{meth}
+ {%
+ \ifPAS@env@pluriel
+ \def\texte{M\'ethodes}
+ \else
+ \def\texte{M\'ethode}
+ \fi
+ \ifPAS@env@num
+ \stepcounter{cnt@meth}
+ \edef\texte{\texte~\thecnt@meth}
+ \fi
+ \def\couleur{brown}
+ }{}
+ \IfStrEq{\cmdPAS@env@title}{}{}{\def\texte{\cmdPAS@env@title}}
+ \IfStrEq{\cmdPAS@env@color}{}{}{\def\couleur{\cmdPAS@env@color}}
+ \ifPAS@env@degrade
+ \tikzstyle{noeud} = [rectangle,inner ysep=10pt, inner xsep=5pt, fill=\couleur!10,path fading=east,outer sep=0pt]
+ \else
+ \tikzstyle{noeud} = [rectangle,inner ysep=10pt, inner xsep=5pt, fill=\couleur!10,outer sep=0pt]
+ \fi
+ \itemclass{\couleur}
+ \begin{lrbox}{\pas@box}
+ \begin{minipage}{\dimexpr\linewidth-\parindent-14pt}
+}
+{
+ \ifPAS@env@endsymb
+ \hfill \cmdPAS@env@symb
+ \fi
+ \end{minipage}
+ \end{lrbox}
+ \begin{tikzpicture}
+ \node [noeud] (box)
+ {%
+ \usebox{\pas@box}
+ };
+ \ifnum\thesuite@box=1
+ \edef\texte{\texte~(suite)}
+ \ifPAS@env@notitlebreak%
+ \else
+ \ifPAS@env@notitle
+ \else
+ \ifPAS@env@effect
+ \node[text=white,fill=\couleur,rectangle, shading=ball, ball color=\couleur, above right] (title) at ($(box.north west)+(-0.03,0)$){\begin{ant}\kern-3pt\texte\end{ant}};
+ \draw[color=\couleur!50!black,very thick] (box.north west)--(box.south west)--(box.south east);
+ \else
+ \node[text=white,fill=\couleur,rectangle, above right] (title) at ($(box.north west)+(-0.03,0)$){\kern-3pt\begin{ant}\textbf{\texte}\end{ant}};
+ \draw[color=\couleur, very thick] (box.north west)--(box.south west)--(box.south east);
+ \fi
+ \fi
+ \fi
+ \else
+ \ifPAS@env@notitle\else
+ \ifPAS@env@effect
+ \node[text=white,fill=\couleur,rectangle, shading=ball, ball color=\couleur, above right] (title) at ($(box.north west)+(-0.03,0)$){\kern-3pt\begin{ant}\texte\end{ant}};
+ \draw[color=\couleur!50!black,very thick] (box.north west)--(box.south west)--(box.south east);
+ \else
+ \node[text=white,fill=\couleur,rectangle, above right] (title) at ($(box.north west)+(-0.03,0)$){\kern-3pt\begin{ant}\texte\end{ant}};
+ \draw[color=\couleur,very thick] (box.north west)--(box.south west)--(box.south east);
+ \fi
+ \fi
+ \fi
+ \node[left,color=\couleur] at ($(box.north east)+(0,1pt)$) {\emph{\cmdPAS@env@name}};
+ \end{tikzpicture}
+ \vspace{0.5cm}
+}
+
+% \breakbox
+
+\newcommand*{\breakbox}
+{%
+ \end{minipage}
+ \end{lrbox}
+ \stepcounter{suite@box}
+ \begin{tikzpicture}
+ \node [noeud] (box)
+ {%
+ \usebox{\pas@box}
+ };
+ \ifPAS@env@notitle\else
+ \ifPAS@env@effect
+ \node[text=white,fill=\couleur,rectangle, shading=ball, ball color=\couleur, above right] (title) at ($(box.north west)+(-0.03,0)$){\begin{ant}\textbf{\texte}\end{ant}};
+ \else
+ \node[text=white,fill=\couleur,rectangle, above right] (title) at ($(box.north west)+(-0.03,0)$){\begin{ant}\textbf{\texte}\end{ant}};
+ \fi
+ \fi
+ \draw[color=\couleur!50!black,very thick] (box.north west)--(box.south west)--(box.south east);
+ \node[left,color=\couleur] at (box.north east) {\emph{\cmdPAS@env@name}};
+ \node[rounded corners=3pt,draw=\couleur!50!black,very thick,left,fill=white] at ($(box.south east)+(-0.5,0)$) {...};
+ \end{tikzpicture}\par
+ \begin{lrbox}{\pas@box}
+ \begin{minipage}{\dimexpr\linewidth-\parindent-14pt}
+}
+
+%%%%%%%%%% définition du titre
+
+\newlength\pas@titlelinewidth
+
+\define@cmdkey [PAS] {chap} {num}{}
+\define@cmdkey [PAS] {chap} {color}{}
+\define@cmdkey [PAS] {chap} {pos}{}
+\define@boolkey[PAS] {chap} {autonum}[true]{}
+\define@boolkey[PAS] {chap} {nonewpage}[true]{}
+\presetkeys [PAS] {chap} {num = ,
+ color = red,
+ pos = right,
+ autonum = false, % maj 19/08/2014
+ nonewpage = false}{} % maj 22/03/2015
+
+\newcommand*{\chap}[1][]{\pasChap[#1]}
+\setcounter{cnt@chap}{0}
+\def\pasChap[#1]#2#3{
+ \setkeys[PAS]{chap}{#1}
+ \ifPAS@chap@autonum
+ \stepcounter{cnt@chap}
+ \def\titre@chapitre{\thecnt@chap}
+ \else
+ \def\titre@chapitre{\cmdPAS@chap@num}
+ \fi
+ \ifPAS@chap@nonewpage
+ \else
+ \clearpage
+ \fi
+ \IfStrEq{\cmdPAS@chap@pos}{right}
+ { \tikzstyle{pastitrepos} = [text=\cmdPAS@chap@color,rectangle,left]
+ \tikzstyle{pastrait} = [right color=\cmdPAS@chap@color, left color=white,thick]
+ \tikzstyle{passstitre} = [\cmdPAS@chap@color,left,scale=0.5]
+ \setlength{\pas@titlelinewidth}{\dimexpr2cm-\linewidth}
+ \def\PASpos{box.north west}
+ \def\PAStrait{box.west}
+ \def\PASsstitre{box.south west}
+ \def\PAStitrealign{flushright}
+ }
+ { \tikzstyle{pastitrepos} = [text=\cmdPAS@chap@color,rectangle,right]
+ \tikzstyle{pastrait} = [left color=\cmdPAS@chap@color, right color=white,thick]
+ \tikzstyle{passstitre} = [\cmdPAS@chap@color,right,scale=0.5]
+ \setlength{\pas@titlelinewidth}{\dimexpr\linewidth-2cm}
+ \def\PASpos{box.north east}
+ \def\PAStrait{box.east}
+ \def\PASsstitre{box.south east}
+ \def\PAStitrealign{flushleft}
+ }
+ \noindent
+ \begin{\PAStitrealign}
+ \begin{tikzpicture}
+ % Le numero de chapitre
+ \node[fill=\cmdPAS@chap@color, shading=ball, ball color=\cmdPAS@chap@color, very thick,circle, inner xsep=5pt, inner ysep=2pt] (box) at (0,0) {\kern-5pt\begin{Large}\textcolor{white}{\begin{ant}\textbf{\titre@chapitre}\end{ant}}\end{Large}};
+ % le titre
+ \node[pastitrepos] at (\PASpos) {\begin{minipage}{\dimexpr\textwidth-2cm}\begin{\PAStitrealign} \begin{Large}\textcolor{\cmdPAS@chap@color}{ \begin{ant} #2 \end{ant}}\end{Large} \end{\PAStitrealign} \end{minipage}};
+ % la ligne
+ \shade[pastrait] (\PAStrait) rectangle +(\pas@titlelinewidth,-0.01);
+ % le sous-titre
+ \node[passstitre] at (\PASsstitre) {\begin{ant}#3\end{ant}};
+ \end{tikzpicture}
+ \end{\PAStitrealign}
+}
+
+%%%%%%%%%%%% Définition d'un mot
+
+\newcommand{\definmot}[1]
+{\texttt{\textbf{\textcolor{\couleur}{\boldmath#1}}}}
+
+% Itemclass
+
+\newcommand{\itemclass}[1] % #1 = couleur
+{
+ \if@noitemstyle\else
+ \setlist[itemize,1]{label={\color{#1!50!black}\textbullet}}
+ \setlist[itemize,2]{label={\color{#1!50!black}$\rightarrow$}}
+ \setlist[enumerate,1]
+ {%
+ label=\fcolorbox{#1!50!black}
+ {#1!50!black}
+ {\color{#1!20}\normalsize\bfseries\arabic*}
+ }
+ \setlist[enumerate,2]{label=\textcolor{#1!50!black}{\normalsize\bfseries\alph*.}}
+ \fi
+}
+\itemclass{black}{}
+
+%%%%%%%%%%%% Pour le sommaire
+
+\def\@dottedtocline#1#2#3#4#5{%
+ \ifnum #1>\c@tocdepth \else
+ \vskip \z@ \@plus.2\p@
+ {\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip
+ \parindent #2\relax\@afterindenttrue
+ \interlinepenalty\@M
+ \leavevmode
+ \@tempdima #3\relax
+ \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
+ {#4}\nobreak
+ \leaders\hbox{$\m@th
+ \mkern \@dotsep mu\hbox{.}\mkern \@dotsep
+ mu$}\hfill
+ \nobreak
+ \hb@xt@\@pnumwidth{\hfil #5}%
+ \par}%
+ \fi}
+
+\renewcommand*\l@section{\color{blue!50!black}\def\@linkcolor{blue!50!black}\@dottedtocline{1}{1em}{2.3em}}
+\def\contentsline#1#2#3#4{%
+ \ifx\\#4\\%
+ \csname l@#1\endcsname{#2}{#3}%
+ \else
+ \csname l@#1\endcsname{\hyper@linkstart{link}{#4}{#2}\hyper@linkend}{\hyper@linkstart{link}{#4}{#3}\hyper@linkend}%
+ \fi
+}
+\renewcommand{\contentsname}{\color{purple}\titreFONT\huge Sommaire}
+
+%%%%%%%%%%% FONTES
+
+\def\titreFONT{\fontfamily{phv}\fontseries{bx}\selectfont} % pb6
+\def\tocFONT{\fontfamily{phv}\fontseries{m}\selectfont}
+
+%%%%%%%%%%% PREREQUIS
+
+\newsavebox{\prerequisBox}
+\newsavebox{\imgPrerequis}
+\newlength{\largeurimgPrerequis}
+
+\newenvironment{prerequis}
+{%
+ \begin{lrbox}{\imgPrerequis}
+ \includegraphics[scale=0.25]{prerequis.png}
+ \end{lrbox}
+ \settowidth{\largeurimgPrerequis}{\usebox{\imgPrerequis}}%
+ \begin{lrbox}{\prerequisBox}
+ \begin{minipage}{\dimexpr\textwidth-0.5\largeurimgPrerequis-15pt}
+ \begin{itemize}[leftmargin=1em,label={\color{purple}$\bullet$}]
+ \tocFONT
+}
+{%
+ \end{itemize}
+ \end{minipage}
+ \end{lrbox}
+ \begin{tikzpicture}
+ \node (titre) {\includegraphics[scale=0.25]{prerequis.png}};
+ \node[below right,text=purple] at (titre.north east) {\titreFONT\huge Pr\'erequis};
+ \node[below right] (contenu) at (titre.south) {\usebox{\prerequisBox}};
+ \draw[purple,very thick] (contenu.north west) -- (contenu.south west);
+ \end{tikzpicture}
+}
+
+%%%%%%%%%%%%%%% A RETENIR
+
+\newsavebox{\imageBox}
+\newlength{\largeurimageBox}
+\newsavebox{\aretenirBox}
+\newenvironment{aretenir}[1][1]
+{%
+\def\sc{#1}
+\begin{lrbox}{\imageBox}
+\includegraphics[scale=\sc]{coeur.png}
+\end{lrbox}
+\settowidth{\largeurimageBox}{\usebox{\imageBox}}%
+\begin{lrbox}{\aretenirBox}
+\begin{minipage}{\dimexpr\linewidth-\largeurimageBox-1em-10pt}
+}
+{%
+\end{minipage}
+\end{lrbox}
+\begin{tikzpicture}
+\node[below right,rounded corners,very thick,draw=red!60!black] (box) {\usebox{\aretenirBox}};
+\node[below left] at ($(box.north west)+(0,0.8em)$) {\includegraphics[scale=\sc]{coeur.png}};
+\end{tikzpicture}
+\vspace*{2em}
+}
+
+%%%%%%%%%%%%%%%%%% ATTENTION
+
+\newsavebox{\attentionBox}
+
+\define@cmdkey [PAS] {warning} {img}{}
+\define@cmdkey [PAS] {warning} {scale}{}
+\define@cmdkey [PAS] {warning} {margins}{}
+\define@cmdkey [PAS] {warning} {draw}{}
+\define@boolkey[PAS] {warning} {bg}[true]{}
+\define@cmdkey [PAS] {warning} {bgcolor}{}
+\presetkeys [PAS] {warning} {img=attention.eps,scale=1,margins=1pt,draw=red!50!black,bg=false}{}
+
+\newenvironment{warning}[1][]
+{%
+ \setkeys[PAS]{warning}{#1}
+ \begin{lrbox}{\imageBox}
+ \includegraphics[scale=\cmdPAS@warning@scale]{\cmdPAS@warning@img}
+ \end{lrbox}
+ \settowidth{\largeurimageBox}{\usebox{\imageBox}}%
+ \begin{lrbox}{\attentionBox}
+ \begin{minipage}{\dimexpr\linewidth-\largeurimageBox-1em-10pt}
+}
+{%
+ \end{minipage}
+ \end{lrbox}
+ \begin{tikzpicture}
+ \node[outer ysep=0pt,inner ysep=0pt] (icone) {\includegraphics[scale=\cmdPAS@warning@scale]{\cmdPAS@warning@img}};
+ \ifPAS@warning@bg
+ \node[below right,rounded corners,very thick,draw=\cmdPAS@warning@draw,inner sep=\cmdPAS@warning@margins,fill=\cmdPAS@warning@bgcolor] (box) at (icone.north east) {\usebox{\attentionBox}};
+ \else
+ \node[below right,rounded corners,very thick,draw=\cmdPAS@warning@draw,inner sep=\cmdPAS@warning@margins,outer sep=0pt] (box) at (icone.north east) {\usebox{\attentionBox}};
+ \fi
+ \end{tikzpicture}
+}
+
+
+\newenvironment{attention}[1][1]
+{%
+\def\scale@img{#1}
+\begin{lrbox}{\imageBox}
+\includegraphics[scale=\scale@img]{attention.png}
+\end{lrbox}
+\settowidth{\largeurimageBox}{\usebox{\imageBox}}%
+\begin{lrbox}{\attentionBox}
+\begin{minipage}{\dimexpr\linewidth-\largeurimageBox-1em-10pt}
+}
+{%
+\end{minipage}
+\end{lrbox}
+\begin{tikzpicture}
+\node[outer ysep=0pt,inner ysep=0pt] (icone) {\includegraphics[scale=\scale@img]{attention.png}};
+\node[below right,rounded corners,very thick,draw=red!60!black] (box) at (icone.north east) {\usebox{\attentionBox}};
+\end{tikzpicture}
+\vspace*{2em}
+}
+
+%%%%%%%%%%%%%%%% BONUS
+
+\newcounter{bonus}
+\newcommand*{\bonus}{\@ifstar{\bonus@star}{\bonus@nostar}}
+\newcommand*\bonus@star[1]{%
+\newpage
+\begingroup
+\fontfamily{phv}\fontseries{bx}\fontsize{16}{14}\selectfont
+\color{blue!40!black}Compl\'ement \thebonus : #1
+\endgroup
+\vspace*{1em}
+}
+\newcommand*\bonus@nostar[1]{%
+\stepcounter{bonus}
+\newpage
+\phantomsection
+\addcontentsline{toc}{section}{Compl\'ement \thebonus : #1}
+\begingroup
+\fontfamily{phv}\fontseries{bx}\fontsize{16}{14}\selectfont
+\color{blue!40!black}Compl\'ement \thebonus : #1
+\endgroup
+\vspace*{1em}
+} \ No newline at end of file
diff --git a/macros/latex/contrib/pas-cours/latex/pas-cours.sty b/macros/latex/contrib/pas-cours/latex/pas-cours.sty
new file mode 100644
index 0000000000..88b91f54e8
--- /dev/null
+++ b/macros/latex/contrib/pas-cours/latex/pas-cours.sty
@@ -0,0 +1,90 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% pas-cours.sty V1.6 encodage : UTF8 %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% Créé par Stéphane PASQUET %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Objet : Outils pour la création de cours
+% Ajout du 05/05/2013 : environnement "pasbox" et commandes "breakbox"
+% Ajout du 05/05/2013 : option "notitle" à \env et \begin{pasbox}
+% Ajout du 06/05/2013 : option "notitlebreak" pour \begin{pasbox}
+% Ajout du 06/07/2013 : commande \itemclass et redéfinition des items
+% ajout du style "demo" dans la commande \env
+% ajout de la condition \@ifpackageloaded{tikz}
+% modif de l'option "toc" dans les env. (non automatique pour les defi et possibilité pour tout env.)
+% ajout de l'option "everytoc" à l'appel du package
+% ajout de l'option "notoc" dans les env.
+% Ajout du 28/11/2013 : ajout des environnements "aretenir", "attention" et "prerequis"
+% ajout de la commande "bonus"
+% Ajout du 19/08/2014 : ajout de l'option "num" à \env et à l'environnement pasbox
+% ajout de l'option "autonum" à \chap
+% retrait de l'option noclearpage à \chap
+% Ajout du 10/11/2014 : modifications de quelques bugs d'écriture
+% Ajout du 26/11/2014 : amélioration du centrage du numéro de chapitre dans le cercle
+% amélioration de la commande \definmot en choisissant automatiquement la couleur de l'environnement
+% réajustement des dimensions pour les titres et les environnements (defi, thm, ...)
+% correction du bug concernant l'option "ant" lors de l'appel de l'extension (booléen mal placé)
+% correction du bug concernant l'option "ant" lors de l'appel de l'extension (texte en gras)
+% Ajout du 08/12/2014 : réajustement des dimensions de l'environnement "prerequis"
+% Ajout du 11/12/2014 : réajustement des dimensions de l'environnement "aretenir" et correctif de la commande \breakbox
+% Ajout du 22/03/2015 : ajout de l'option "nonewpage" à la commande \chap
+% Ajout du 29/04/2015 : ajout de l'environnement "warning" et amélioration légère de l'environnement "attention"
+% Ajout du 01/07/2015 : ajout de la définition des couleurs prop, demo, act et meth pour faciliter le changement
+% Ajout du 24/07/2016 : ajout de l'option "noitemstyle" pour ne pas modifier le style des items
+% Ajout du 29/07/2016 : modification de ma macro "definmot" pour mettre en gras le mode mathématique
+% Ajout du 04/08/2016 : ajout de l'option générale "noeffect" et "notitlebreak". Ajout d'options à \boule.
+% Ajout du 18/08/2016 : ajout de l'environnnement "ifactors" (décomposition en produit de facteurs premiers)
+
+% Informations générales
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{pas-cours}[2016/08/04]
+
+%% Chargement des packages nécessaires
+
+\@ifpackageloaded{xkeyval}{}{\RequirePackage{xkeyval}}
+\@ifpackageloaded{xstring}{}{\RequirePackage{xstring}}
+\@ifpackageloaded{amssymb}{}{\RequirePackage{amssymb}}
+\@ifpackageloaded{tikz}{}{\RequirePackage{tikz}}
+\usetikzlibrary{calc,arrows,fadings}
+\@ifpackageloaded{enumitem}{}{\RequirePackage{enumitem}}
+\@ifpackageloaded{fancyvrb}{}{\RequirePackage{fancyvrb}}
+\newif\if@ant
+\newif\if@everytoc
+\newif\if@noitemstyle % NEW 2016-07-24
+\newif\if@noeffect % NEW 2016-08-04
+\newif\if@notitlebreak % NEW 2016-08-04
+\DeclareOption{ant}{\@anttrue}
+\DeclareOption{everytoc}{\@everytoctrue}
+\DeclareOption{noitemstyle}{\@noitemstyletrue}
+\DeclareOption{noeffect}{\@noeffecttrue}
+\DeclareOption{notitlebreak}{\@notitlebreaktrue}
+\ProcessOptions
+
+\newenvironment{ant}{
+\if@ant
+\fontseries{bx}\fontfamily{anttlc}\selectfont
+\else
+\fontseries{bx}\fontshape{sc}\selectfont
+\fi
+}
+
+% Définition des couleurs
+
+\definecolor{defi}{rgb}{0.22,0.6,0.3}
+\definecolor{ex}{rgb}{0.153,0.24,0.44}
+\definecolor{nota}{rgb}{0.564,0.21,0.87}
+\definecolor{rem}{rgb}{0.5,0.5,0.5}
+\definecolor{thm}{cmyk}{0,0.96,0.63,0.19}
+\definecolor{prop}{cmyk}{0,1,1,0} % red
+\definecolor{demo}{cmyk}{0,0,0,1} % black
+\definecolor{act}{cmyk}{0,0.5,1,0} % traditional orange
+\definecolor{meth}{rgb}{0.59, 0.29, 0.0} % traditional brown
+
+\input{macro-patrons.tex}
+\input{macro-solides.tex}
+\input{macro-styles.tex}
+\input{macro-calculs.tex}
+\endinput
diff --git a/macros/latex/contrib/pas-cours/latex/prerequis.png b/macros/latex/contrib/pas-cours/latex/prerequis.png
new file mode 100644
index 0000000000..eb1927bf23
--- /dev/null
+++ b/macros/latex/contrib/pas-cours/latex/prerequis.png
Binary files differ