From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- macros/latex/contrib/pas-cours/README | 40 + macros/latex/contrib/pas-cours/doc/decomp.tex | 1 + macros/latex/contrib/pas-cours/doc/doc.codes.tex | 144 +++ macros/latex/contrib/pas-cours/doc/doc.styles.tex | 75 ++ macros/latex/contrib/pas-cours/doc/pas-cours.pdf | Bin 0 -> 736620 bytes macros/latex/contrib/pas-cours/doc/pas-cours.tex | 1271 ++++++++++++++++++++ .../latex/contrib/pas-cours/doc/warning-perso.png | Bin 0 -> 41912 bytes macros/latex/contrib/pas-cours/latex/attention.png | Bin 0 -> 3259 bytes macros/latex/contrib/pas-cours/latex/coeur.png | Bin 0 -> 7596 bytes .../contrib/pas-cours/latex/macro-calculs.tex | 45 + .../contrib/pas-cours/latex/macro-patrons.tex | 318 +++++ .../contrib/pas-cours/latex/macro-solides.tex | 753 ++++++++++++ .../latex/contrib/pas-cours/latex/macro-styles.tex | 616 ++++++++++ macros/latex/contrib/pas-cours/latex/pas-cours.sty | 90 ++ macros/latex/contrib/pas-cours/latex/prerequis.png | Bin 0 -> 79314 bytes 15 files changed, 3353 insertions(+) create mode 100644 macros/latex/contrib/pas-cours/README create mode 100644 macros/latex/contrib/pas-cours/doc/decomp.tex create mode 100644 macros/latex/contrib/pas-cours/doc/doc.codes.tex create mode 100644 macros/latex/contrib/pas-cours/doc/doc.styles.tex create mode 100644 macros/latex/contrib/pas-cours/doc/pas-cours.pdf create mode 100644 macros/latex/contrib/pas-cours/doc/pas-cours.tex create mode 100644 macros/latex/contrib/pas-cours/doc/warning-perso.png create mode 100644 macros/latex/contrib/pas-cours/latex/attention.png create mode 100644 macros/latex/contrib/pas-cours/latex/coeur.png create mode 100644 macros/latex/contrib/pas-cours/latex/macro-calculs.tex create mode 100644 macros/latex/contrib/pas-cours/latex/macro-patrons.tex create mode 100644 macros/latex/contrib/pas-cours/latex/macro-solides.tex create mode 100644 macros/latex/contrib/pas-cours/latex/macro-styles.tex create mode 100644 macros/latex/contrib/pas-cours/latex/pas-cours.sty create mode 100644 macros/latex/contrib/pas-cours/latex/prerequis.png (limited to 'macros/latex/contrib/pas-cours') 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 Binary files /dev/null and b/macros/latex/contrib/pas-cours/doc/pas-cours.pdf 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[]{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}[] +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 : 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\{\}} : + +\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[] +\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[] +\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[] +\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[] +\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[] +\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[] +\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[] +\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[] +\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[] +\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[] +\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[] +\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 Binary files /dev/null and b/macros/latex/contrib/pas-cours/doc/warning-perso.png 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 Binary files /dev/null and b/macros/latex/contrib/pas-cours/latex/attention.png 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 Binary files /dev/null and b/macros/latex/contrib/pas-cours/latex/coeur.png 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,>=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 Binary files /dev/null and b/macros/latex/contrib/pas-cours/latex/prerequis.png differ -- cgit v1.2.3